The Joys of IRC
---------------
Thu Oct  6 23:23:16 EDT 2022

---
Written on: x220 (openbsd)
Listening to: Running Away by Vulfpeck (Live at MSG)
---

## Discovering IRC

IRC first came across my radar a little out of
college, when I started spending a good bit of time
lurking in free software communities. But it wasn't
always second nature--in fact my first dip was nothing
but intimidating.

I'll never forget the first time I downloaded irssi(1)
and connected to freenode--I was immediately presented
with my rDNS exposing that akarle was indeed using
Boston MA FIOS and I logged off pretty quickly scared
to be exposing my home IP (especially to a bunch of
hackers!!).

After I got over the IP thing (I can't remember if
I discovered cloaking or used a proxy), I then was
nervous to speak up--people here seemed to follow a
strict etiquette ("don't ask to ask", etc). I didn't
want to seem like a noob!

Nevertheless, I felt cool just being there. In the
room where it happens. I saw chat messages go by from
programmers I held in high regard. It blew me away
to have access to these people, even if I wasn't using
it.

When I set up garbash.com with Anthony, IRC was top
of the list of tech I wanted to play around with,
and I was not disappointed.


## Where IRC Excels

After getting over the learning-the-ropes stages
(setting up a bouncer for chat history, etc), I
learned to appreciate IRC beyond the people there.

IRC excels in a few ways:

1. Lightweight medium (super fast)
2. Open protocol (many clients)
3. Simple extensibility

The low-bandwidth medium becomes super obvious
when using a terminal client during the work day.
Switching between Slack and catgirl(1) is night and
day.

The open protocol has been a boon for usage on our
Tilde.  Most of our members prefer to use the Gamja
web client, which integrates really nicely with Soju
for history.

And lastly, the simple extensibility comes from the
lack of security by default. I mean, anyone who
can access the server can send messages? Under any
nick not in use?  A terrible recipe for public
access, but a great choice for an internal-facing
network, like a tilde :) It becomes easy to write
tools that ping channels using just regular unix
tools.

I wrote my first such tool tonight, which is what
inspired this post [1].

It uses curl(1) to fetch https and gopher feeds,
sfeed(1) to parse the feeds, awk(1) to parse the
parsing (and determine "new" feeds since the last
run) and lastly nc(1) to connect to IRC and notify
our main channel. It's that simple:

       nc localhost 6667 <<EOM >/dev/null
       NICK rssbot
       USER rssbot rssbot localhost :rssbot
       PRIVMSG #garbash :New post '$1' here: $2
       QUIT
       EOM

How cool is that?? If all goes well, it should get
notified about this post :)

[1]: https://git.garbash.com/alex/irc-rss-listener/log.html


## Looking Forward

I'm optimistic that the work coming out of the great
folks at sourcehut.org will keep IRC along for some
time more. chat.sr.ht is a fantastic solution (running
a SaaS version of Gamja and Soju), providing an easy
cross platform way to connect to multiple servers
(with things like history built right in).

I can't say I've tried many other FOSS messaging
protocols like XMPP or Matrix, but I do hope the future
is open-protocol and not walled-garden like Discord
or Slack.