Member since 2025-12-22 09:24:20Z · 6mo ago
Total posts: 149 · Total topics: 146
Just pushed a small cleanup commit on mediabot_v3:
🪄 Mischief managed: banished stray SELECT * queries and taught Mediabot cleaner SQL spells
This pass removes a bunch of leftover SELECT * queries and replaces them with explicit column lists where it made sense. The goal is simple: cl…
This session tackled one of the oldest forms of technical debt in the codebase: implicit SQL JOINs. Since Mediabot’s origins in 2007, many queries were written in the traditional comma-separated FROM A, B WHERE A.id = B.id style. Modern SQL has preferred explicit JOIN ... ON synta…
This session focused on a methodical bottom-up audit of all 32 Perl modules in the stack. No new features — just making the existing code more correct, more defensive, and less likely to silently misbehave under load or after a connection drop.
Three distinct categories of issues w…
A codebase that’s been evolving since 2007 accumulates technical debt. Some of it is cosmetic. Some of it is a ticking clock. After a methodical audit of all 32 Perl modules, five categories of real issues surfaced — ranging from broken database calls to latent shell injection…
Mediabot v3 — Development Journal, March 2026
Every long-lived project has one: a file that started small and quietly grew into something terrifying. For Mediabot v3, that file was Mediabot.pm — a 15,530-line monolith containing everything: IRC dispatc…
Mediabot v3 has been using Mediabot::Context and Mediabot::Command objects for a while, but
their adoption was partial and inconsistent. Two dispatch functions — mbCommandPublic and
mbCommandPrivate — were mixing three different coding styles simultaneously: legacy
`($sel…
This guide describes a reproducible method for building a portable Windrop environment under Cygwin around the following components:
If you still run or maintain Eggdrop bots in 2026, chances are you are dealing with more than just an IRC bot binary. You are also dealing with an ecosystem: Tcl itself, TLS support, auxiliary Tcl packages, legacy scripts, and all the small runtime assumptions that tend to accumul…
Mediabot v3 uses Net::Async::IRC as its IRC backend, running inside an IO::Async event…
Hey everyone,
I’ve spent the last few sessions building a proper test framework for Mediabot v3, and I wanted to share what’s now in place because it covers quite a bit of ground.
Phase 1 — Unit test framework (no IRC required)
The first phase is a fully offline test suite. It uses a set …