~/blog $ cat the-bots-kept-the-channel-warm.md

The bots kept the channel warm

An IRC channel only existed while someone was sitting in it. When the last person left, the room vanished, along with its topic, its modes, and who was in charge. Whoever joined next got to start it from scratch and crown themselves operator.

And everyone left eventually. Dial-up dropped. Somebody's mother picked up the landline. The sală de net closed for the night.

So if you cared about a channel, you needed someone who didn't go home. You needed a bot.

Eggdrop was the serious one. Tcl scripts, a userfile, a partyline you could telnet into and chat with your own bot like it was a night-shift coworker. Link a few of them together and they became a botnet, quietly syncing ops and bans behind the scenes. The sample config famously shipped with a die line buried inside it that killed the process on startup if you hadn't actually read the config file from top to bottom. Nobody read the whole thing. The bot died immediately. Fair.

EnergyMech (emech, to friends) was the scrappy one. Written in C, tiny, happy to run four or five bots out of a single process without complaining about memory. You typed -op and things happened. Less ceremony, more getting on with it.

Neither of them could live on the PC in front of you, because that PC was going to sleep too. They lived on a shell: a user account on some university or ISP Linux box, three countries over, that you'd talked, traded, or begged your way onto. psyBNC kept your nickname connected. The bots kept the channel warm.

Flooding, or rate limiting before we had the word

Then there was flooding, which was the internet's oldest, dumbest joke: send the same thing, very fast, many times, until everyone else's screen is just you.

Text floods. Nick-change floods. CTCP floods, where someone pinged the whole room at once and fifty clients politely answered in unison until the server lost its temper. Clone armies joining in a single-file conga line.

Usually the first flood you ever met was your own. Paste six lines of song lyrics too quickly into mIRC and the server would cut you off with a two-word verdict: Excess Flood. No warning. No appeal. Connection closed. Probably fair.

That was the other half of a bot's job. A good bot counted. So many lines in so many seconds and you were out on the pavement with a ban mask to think it over. Getting those thresholds right was a quiet art: too strict and the bot kicked your friends for laughing too fast; too loose and you watched the channel scroll into oblivion. It was sliding-window rate limiting, fifteen years before I'd hear anyone call it that in a system design interview.

The bots that existed purely to waste time

Not every bot had a security clearance. Some of the best ones were there purely to ruin everyone's productivity.

Trivia bots asked a question, waited ten seconds, and started leaking the answer one letter at a time. O__________. Ou_________. Oua________. A dozen people hammering keyboards in the dark, a monthly leaderboard, and an unreasonable amount of pride for knowing the capital of Burkina Faso (Ouagadougou, and nobody ever spelled it right on the first try). A trivia round was, technically, twelve people flooding the channel with good intentions — which is why those flood settings were such a headache.

Idle bots ran an RPG where the only winning move was not touching your keyboard. In IdleRPG you joined the channel and your character levelled up while you did nothing at all. Talk, change your nick, or disconnect, and the bot hit you with a time penalty. The top players were the ones who weren't even in the building. Some people were devastatingly good at it.

Duck hunt bots were the closest IRC got to an esport. Every now and then, completely unannounced:

・゜゜・。。・゜゜\_o< QUACK!

First person to type !bang bagged the duck. The gentler souls typed !bef and befriended it instead. Sometimes the duck paddled out at 4 a.m. to an empty room and flew off unbothered, which was honestly the best outcome for the duck.

What that shell account actually taught

For a lot of us, that borrowed Linux shell was the first server we ever cared about. A machine we would never physically touch, awake when we were asleep, running a background process we'd configured badly and then, week by week, slightly less badly.

It taught distributed systems and ops to teenagers who just wanted to keep @ next to their nickname. You learned about uptime because your bot dropped when the host rebooted. You learned about cron jobs so it would come back on its own. You learned about rate limits because people flooded, and about permissions because anything left running on the public internet will eventually be poked at by someone with too much free time.

Today the same job is a Discord server with a role menu and a hosted moderation bot you add with two clicks. Which is fine. It works.

But nobody ever learned what a daemon was by clicking a role menu.

.chanset #suceava flood-chan 10:60
$ # ten lines a minute. be excited responsibly.
$ █

— EOF —

cd .. →