development log
It is 5am and I made an IRC client
I wanted people to be able to say hello without learning IRC. This somehow became a chat website, a MOTD ingress, an RSS feed, and Geoff still does not know the weather.
It is 5am and I made an IRC client.
This was supposed to be a small thing. I have an IRC server. I want actual people to eventually use it. Actual people should not need to know what an IRC server is before they are allowed to say hello.
So now there is chat.crimsonvariable.com.
You type a name, press a button, and land in #chat. Underneath it is still
the same Ergo server. Halloy, WeeChat, Irssi, and anyone who enjoys seeing a
hostname and a port can continue doing that. Nothing got replaced. I just put a
normal front door in front of it.
It is a real tiny client, too, which means I had to do all the tiny client things. WebSocket bridge. Temporary nicknames. IRC parsing. A client that can actually see its own messages, which feels like a low bar until you forget to draw them locally. A font path that points to the font that exists instead of a path I imagined at 4am.
It joins the public room, gives visitors a temporary name, shows the network
greeting, and lets them talk. #friends is still private. Making a nicer button
does not turn a private room into a public room. Account login, browser
invitations, DMs, reconnect polish, and the rest of what makes a chat client
feel finished can wait until they are designed instead of getting jammed into a
page because apparently every normal website has a chat now.
The MOTD was another one. Normal IRC clients receive it as a pile of protocol numbers. The web client was technically receiving it and then doing nothing, which is a very web-client thing to do. The MOTD explains the rooms, the rules, and how to leave me a message. It now arrives as a big actual welcome ingress above the chat. If I wrote it, it should be visible.
Geoff needs work
Geoff is alive. Geoff has games, quotes, polls, reminders, RSS, geography, time, and the extremely correct name Geoff. That is more than enough for a little social bot and not remotely enough for what I will think of next week.
Geoff also does not have weather yet.
I wanted literal weather. I typed !weather Zurich. Geoff said weather is not
a valid command.
Correct. Fair. He needs a provider and probably an API key before he gets to tell anyone it is raining. I was briefly offended, then remembered that I am the person who built him.
The important thing is still the boundary from the last entry: Geoff is a chat
bot, not an administrative interface with a cute name. He gets to be useful,
slightly silly, and eventually know the weather. He does not get Docker, a
shell, Portainer, or the ability to turn !quiz into an infrastructure event.
JOIN THE SYNDICATION
The devlog now has RSS at /devlog.xml.
Every published Field Note goes in when the website builds. There is no daemon watching the filesystem, no cloud feed service, and no little dashboard. Publish the site, regenerate the XML, readers notice the new entry. Extremely normal old-web machinery. Perfect.
I put the existing old icon on the subscription button because it looks stupid
in exactly the right way next to JOIN THE SYNDICATION. It stays until it stops
being funny, which is not currently forecast.
This is the first version of the social side of the infrastructure. The server was already capable of being a small place. Now it has a way in that does not begin with a protocol tutorial, a greeting that actually greets you, and an RSS feed for people who apparently want to follow this mess on purpose.
I am also absolutely procrastinating the video project and Ark OS.
That is not a secret productivity strategy. It is just easier to build a small chat client at 5am than to look directly at the bigger things waiting for me. They are still there. This did not replace them. It just became another very well-documented way of avoiding them for one night.