<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Irc on Marcello Barnaba</title>
    <link>https://sindro.me/tags/irc/</link>
    <description>Recent content in Irc on Marcello Barnaba</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 14 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://sindro.me/tags/irc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Sux Services: Multithreaded, SQL-Backed IRC Services from Scratch, 2002</title>
      <link>https://sindro.me/posts/2026-04-14-suxserv-multithreaded-sql-irc-services/</link>
      <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/posts/2026-04-14-suxserv-multithreaded-sql-irc-services/</guid>
      <description>&lt;p&gt;This is the sequel to &lt;a href=&#34;https://sindro.me/posts/2026-04-13-bahamut-fork-azzurra-irc-ipv6-ssl/&#34;&gt;Forking Bahamut for Azzurra IRC: IPv6 and SSL in 2002&lt;/a&gt;. After forking the IRC server, I started writing services from scratch.&lt;/p&gt;&#xA;&lt;p&gt;One of the things I&amp;rsquo;m enjoying most about working with &lt;a href=&#34;https://sindro.me/tags/ai-generated/&#34;&gt;Claude&lt;/a&gt; is digital archaeology. I&amp;rsquo;ve spent twenty years accumulating old projects on backup disks, SourceForge, forgotten servers — code I wrote and never looked at again. Now I can just point Claude at a tarball and say &amp;ldquo;convert this to git&amp;rdquo; or &amp;ldquo;explain what 21-year-old me was thinking here&amp;rdquo; and get an actual conversation going with my own past.&lt;/p&gt;&#xA;&lt;p&gt;Today&amp;rsquo;s dig: I went to SourceForge and downloaded the CVS repository for &lt;a href=&#34;https://sindro.me/posts/2003-03-16-suxserv-wip/&#34;&gt;a project of mine from 2003&lt;/a&gt; — &lt;strong&gt;Sux Services&lt;/strong&gt;, my attempt at writing IRC services from scratch, in C, for the &lt;a href=&#34;https://azzurra.chat&#34; target=&#34;_blank&#34;&gt;Azzurra IRC Network&lt;/a&gt;. I said &amp;ldquo;Claude, convert this CVS repo to git&amp;rdquo; and a few minutes later I had a clean &lt;a href=&#34;https://github.com/vjt/suxserv&#34; target=&#34;_blank&#34;&gt;Git repository&lt;/a&gt; with 954 commits, three authors, and a continuous history from September 2002 to November 2005.&lt;/p&gt;&#xA;&lt;p&gt;I never finished this project. I left the network before it was ready for production. A Latvian developer picked it up, wrote 192 commits, and then the trail goes cold.&lt;/p&gt;&#xA;&lt;p&gt;I &lt;a href=&#34;https://sindro.me/posts/2003-03-16-suxserv-wip/&#34;&gt;wrote about it at the time&lt;/a&gt; — a WIP post from March 2003, when NickServ and ChanServ were working and I was stress testing with 100 bots.&lt;/p&gt;&#xA;&lt;p&gt;Looking at this code now is — I don&amp;rsquo;t know the right word. Moving, maybe. There&amp;rsquo;s something about reading your own commit messages from twenty years ago, seeing the excitement and the frustration, recognizing the patterns you&amp;rsquo;d use for the next two decades but couldn&amp;rsquo;t name yet. It&amp;rsquo;s like hearing your own voice on a recording from when you were young — familiar and alien at the same time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Forking Bahamut for Azzurra IRC: IPv6 and SSL in 2002</title>
      <link>https://sindro.me/posts/2026-04-13-bahamut-fork-azzurra-irc-ipv6-ssl/</link>
      <pubDate>Mon, 13 Apr 2026 08:00:00 +0200</pubDate>
      <guid>https://sindro.me/posts/2026-04-13-bahamut-fork-azzurra-irc-ipv6-ssl/</guid>
      <description>&lt;p&gt;This is the prequel to &lt;a href=&#34;https://sindro.me/posts/2026-04-14-suxserv-multithreaded-sql-irc-services/&#34;&gt;Sux Services: Multithreaded, SQL-Backed IRC Services from Scratch, 2002&lt;/a&gt;. Before I started writing IRC services from scratch, I spent the better part of a year doing something arguably crazier: forking an IRC server to add IPv6 and SSL (now known as TLS). I was twenty-one.&lt;/p&gt;&#xA;&lt;p&gt;The project lived in a CVS repository on SourceForge — it&amp;rsquo;s &lt;a href=&#34;https://bahamut-inet6.sf.net/&#34; target=&#34;_blank&#34;&gt;still there&lt;/a&gt;, a digital fossil. Claude converted it to Git — &lt;a href=&#34;https://github.com/vjt/bahamut-inet6/commits/master/&#34; target=&#34;_blank&#34;&gt;171 commits&lt;/a&gt;, three authors, continuous history from February 2002 to January 2006. I wrote it — a fork of &lt;a href=&#34;https://en.wikipedia.org/wiki/Bahamut_%28IRCd%29&#34; target=&#34;_blank&#34;&gt;Bahamut&lt;/a&gt;, the IRC daemon that powered &lt;a href=&#34;https://en.wikipedia.org/wiki/DALnet&#34; target=&#34;_blank&#34;&gt;DALnet&lt;/a&gt;, one of the largest IRC networks of its era. Let me tell you about it.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-i-got-here&#34; id=&#34;how-i-got-here&#34;&gt;How I got here&lt;a class=&#34;heading-anchor&#34; href=&#34;#how-i-got-here&#34; aria-label=&#34;Link to this section&#34;&gt;¶&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;I discovered IRC the same way I discovered Linux — through &lt;a href=&#34;https://it.wikipedia.org/wiki/Linux_%26_C.&#34; target=&#34;_blank&#34;&gt;linux&amp;amp;c&lt;/a&gt;, an Italian magazine (there are &lt;a href=&#34;https://archive.org/search?query=subject%3A%22Linux&amp;#43;%26&amp;#43;C.&amp;#43;%28rivista%29%22&#34; target=&#34;_blank&#34;&gt;scanned copies on Archive.org&lt;/a&gt;, including &lt;a href=&#34;https://archive.org/details/LinuxC00&#34; target=&#34;_blank&#34;&gt;issue #0&lt;/a&gt; that I bought) that was one of the few entry points to the open-source world for Italian teenagers in the late &amp;rsquo;90s. An article mentioned &lt;a href=&#34;https://azzurra.chat&#34; target=&#34;_blank&#34;&gt;Azzurra&lt;/a&gt; (&lt;a href=&#34;https://web.archive.org/web/20200814231133/https://www.azzurra.org/?mod=history&#34; target=&#34;_blank&#34;&gt;history&lt;/a&gt;), the Italian IRC network. I connected, founded a channel with friends — &lt;a href=&#34;https://sniffo.org&#34; target=&#34;_blank&#34;&gt;#sniffo&lt;/a&gt; (inline skating and funny faces, nothing pharmaceutical) — and a Monopoli/Milan/Bologna axis of &lt;em&gt;smanettoni&lt;/em&gt; was born.&lt;/p&gt;&#xA;&lt;p&gt;&lt;picture&gt;&#xA;  &lt;source type=&#34;image/webp&#34;&#xA;    srcset=&#34;https://sindro.me/posts/2026-04-13-bahamut-fork-azzurra-irc-ipv6-ssl/ska-vjt-alk_hu_7d4db7a00e736cf8.webp 640w&#34;&#xA;    sizes=&#34;(max-width: 599px) calc(100vw - 2rem), (max-width: 1199px) calc(100vw - 3rem), 47rem&#34;&gt;&#xA;  &lt;img src=&#34;https://sindro.me/posts/2026-04-13-bahamut-fork-azzurra-irc-ipv6-ssl/ska-vjt-alk.jpg&#34;&#xA;    srcset=&#34;https://sindro.me/posts/2026-04-13-bahamut-fork-azzurra-irc-ipv6-ssl/ska-vjt-alk.jpg 640w&#34;&#xA;    sizes=&#34;(max-width: 599px) calc(100vw - 2rem), (max-width: 1199px) calc(100vw - 3rem), 47rem&#34;&#xA;    width=&#34;640&#34; height=&#34;480&#34;&#xA;    alt=&#34;Ska from Milan, me in Bari, and Alk from Bologna, circa 2001 — three smanettoni who met on IRC and converged physically to do nerd things together. Open PC case, CRT monitors, ASUS boxes on the shelves. The natural habitat.&#34; loading=&#34;lazy&#34;&gt;&#xA;&lt;/picture&gt;&#xA;&lt;em&gt;Ska from Milan, me in Bari, and Alk from Bologna, circa 2001. Three smanettoni who met on IRC and converged physically to do nerd things together.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sux Services 0.2.8</title>
      <link>https://sindro.me/posts/2003-03-16-suxserv-wip/</link>
      <pubDate>Sun, 16 Mar 2003 00:00:00 +0000</pubDate>
      <guid>https://sindro.me/posts/2003-03-16-suxserv-wip/</guid>
      <description>&lt;p&gt;So I just tagged 0.2.8 and I think this thing is getting close to usable.&lt;/p&gt;&#xA;&lt;p&gt;Quick recap for those who don&amp;rsquo;t know: &lt;a href=&#34;https://suxserv.sourceforge.net/&#34; target=&#34;_blank&#34;&gt;Sux Services&lt;/a&gt; are IRC services I&amp;rsquo;m writing from scratch in C for the &lt;a href=&#34;https://azzurra.chat&#34; target=&#34;_blank&#34;&gt;Azzurra IRC Network&lt;/a&gt;. The idea is: multithreaded, modular, SQL backend instead of flat files, and not a complete mess to maintain. We&amp;rsquo;ll see about that last part.&lt;/p&gt;&#xA;&lt;p&gt;What works right now: NickServ does registration, identification, password change, ghost kill. ChanServ has channel registration, access lists (CF/SOP/AOP/VOP/AKICK) with masks support, and it actually enforces access on join. MemoServ sends and reads memos, notifies you on connect if you have new ones. OperServ has AKILL, server MAP, STATS. There&amp;rsquo;s even a RootServ for the really scary stuff.&lt;/p&gt;&#xA;&lt;p&gt;The whole thing connects to a &lt;a href=&#34;http://bahamut.dal.net/&#34; target=&#34;_blank&#34;&gt;Bahamut&lt;/a&gt; IRCd, negotiates the server link, syncs all users and channels, and then the five service agents boot up as virtual users. Modules are compiled as .so files and loaded at runtime via GLib&amp;rsquo;s GModule. If I want to reload NickServ I just unload and reload the module, no restart needed. Pretty cool.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m testing it with &lt;a href=&#34;http://sourceforge.net/projects/suxserv&#34; target=&#34;_blank&#34;&gt;netxplode&lt;/a&gt; which is a perl script that spawns 100 IRC clients and hammers services with random commands &amp;ndash; IDENTIFY, INFO, REGISTER, JOIN, you name it. Basically 100 bots going completely nuts on NickServ and ChanServ at the same time. Found a lot of bugs this way. Also found an SQL injection in the nickname handling last week which was fun. Fixed now, we use sql_printf() to escape everything, but yeah, that could have been bad.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
