<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>blog.cmol.dk</title>
    <link>/</link>
    <description>Recent content on blog.cmol.dk</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <lastBuildDate>Tue, 16 Mar 2021 00:00:00 +0000</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Creating a UDP server with Ruby Ractors</title>
      <link>/posts/ruby-ractors/</link>
      <pubDate>Tue, 16 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>/posts/ruby-ractors/</guid>
      
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Let me start by saying that the influence for this post comes from Kir
Shatrov’s post &lt;a href=&#34;https://kirshatrov.com/2020/09/08/ruby-ractor-web-server/&#34;&gt;Writing a Ractor-based web server&lt;/a&gt;. You should definitely
read that post as well, if you’re interested in Ractors!&lt;/p&gt;
&lt;h2 id=&#34;what-are-ractors-in-ruby&#34;&gt;What are Ractors in Ruby?&lt;/h2&gt;
&lt;p&gt;Ruby (MRI) has a &lt;a href=&#34;https://en.wikipedia.org/wiki/Global_interpreter_lock&#34;&gt;Global VM lock&lt;/a&gt;. This means that you cannot
execute code in multiple threads at the same time. You can achieve a lot of
great things with Threads, especially if you have a lot of I/O, but parallel
execution in Threads does not exist in Ruby.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>IPv6&#43;Ruby part 1: Introduction to IPv6</title>
      <link>/posts/ipv6-ruby-part-1/</link>
      <pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>/posts/ipv6-ruby-part-1/</guid>
      
      <description>&lt;p&gt;For many years, people have been talking about the Internet Protocol version 6
(IPv6). There have been “World IPv6 day”s and companies like Apple have made
rules about applications published via their app store needing to be IPv6
compatible. But what does all this mean and what is IPv6 really?&lt;/p&gt;
&lt;p&gt;In this article series, I am going explain the value of knowing what IPv6 is,
explore basic IPv6 concepts, and dive into the usage for software developers.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>IPv6&#43;Ruby part 2: IPv6 and web applications</title>
      <link>/posts/ipv6-ruby-part-2/</link>
      <pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>/posts/ipv6-ruby-part-2/</guid>
      
      <description>&lt;p&gt;&lt;em&gt;This post is the second in a series about IPv6 and why it matters. If you
are interested in the details about what IPv6 is, please read the first
post. If you already know why it is important and just want to know how to
use it, continue to the next post. All links are at the bottom of this
post.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The world is running out of IPv4 addresses. By now, you have likely heard
someone say that more times than there are IPv4 addresses, but for some
reason we have not all died yet (though it would explain a lot about 2020).
Why is that, and does IPv6 really affect you as a developer?&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>IPv6&#43;Ruby part 3: Dual stack (IPv4&#43;IPv6) TCP sockets</title>
      <link>/posts/ipv6-ruby-part-3/</link>
      <pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>/posts/ipv6-ruby-part-3/</guid>
      
      <description>&lt;p&gt;&lt;em&gt;This post is the third in a series about IPv6 and why it matters. If you are
interested in the details, please read the first two articles. If you just
want to know about how Ruby handles IPv6, this is the place for you.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ok, so you know what IPv6 is and you know why you need to support it. This post
will give examples on how to use IPv6 using a TCP socket. I will use Ruby for
the examples here, but most of the basics and concepts are the same in other
languages.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>IPv6&#43;Ruby part 4: Dual stack (IPv4&#43;IPv6) UDP sockets</title>
      <link>/posts/ipv6-ruby-part-4/</link>
      <pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>/posts/ipv6-ruby-part-4/</guid>
      
      <description>&lt;p&gt;&lt;em&gt;This post is the fourth in a series about IPv6 and why it matters. If you
are interested in the details, please read the first three articles. If you
just want to know about how Ruby handles UDP in IPv6, this is the place for
you.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Last time around we made a simple echo server in Ruby using TCP sockets that
ran both IPv6 and IPv4. Now it is time to do the same with UDP.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>IPv6&#43;Ruby part 5: Service discovery with IPv6 and Multicast</title>
      <link>/posts/ipv6-ruby-part-5/</link>
      <pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>/posts/ipv6-ruby-part-5/</guid>
      
      <description>&lt;p&gt;&lt;em&gt;This post is the last in a series about IPv6 and why it matters. If you are
interested in the details, please read the first four articles. If you just
want to know about how Ruby handles multicast in IPv6, this is the place for
you.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In this post, we will dive into multicast in Ruby with IPv6 and make a simple
service discovery program to run in our network without a central server.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>About</title>
      <link>/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/about/</guid>
      
      <description>&lt;h1 id=&#34;claus-lensbøl---telecommunication-software-engineer&#34;&gt;Claus Lensbøl - Telecommunication Software Engineer&lt;/h1&gt;
&lt;p&gt;Experienced Software Engineer specializing in Linux, networking, and digital
communication systems. Strong expertise in designing and optimizing complex
system, from high speed network testers to Canadian banking integrations.
Passionate about OpenSource, network protocols, real‑time synchronization, and
multicast networking. Combines deep theoretical knowledge with hands‑on
implementation, delivering scalable and efficient solutions. Works effectively
both independently and in teams, bringing a collaborative and proactive
approach.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
