The Kanban-Boardinator
Ah, my flat-tailed foe. Pull up a chair. No, not that one, that one has a spring that goes straight into — you know what, just stand.
I want to tell you about a productivity method that has completely changed my approach to world domination logistics. It is called Kanban, and before you say anything — yes, I know, I know, it sounds like something you would order at a restaurant and then be deeply disappointed by. But hear me out.
The problem, as always, began with L.O.V.E.M.U.F.F.I.N.
Now, I am a member in good standing of the League of Villainous Evildoers Maniacally United For Frightening Investments in Naughtiness, yes, but “good standing” is doing a LOT of work in that sentence. Those people are constantly in my cloud accounts. CONSTANTLY. I will log into my Trello board — which I was using, perfectly reasonably, to track the phases of my various -inators — and there is Rodney, in the activity log, at 2:47 in the morning, reading my cards. Reading them! And then two weeks later he shows up to the quarterly meeting with “his” idea for a Heat-Seek-and-Destroy-inator that is SUSPICIOUSLY similar to mine, which I had labeled “Phase 1: Heat Seeking” right there in the To Do column.
That was the last straw. The absolute last one. I needed a self-hosted solution, and I needed it immediately.
The cloud Kanban tools, I should tell you, are also incredibly bloated. Have you ever opened a browser tab for a task management application and watched your laptop fan spin up like you are launching a spacecraft? That is because modern web developers apparently believe that a list of cards requires seventeen JavaScript frameworks, four analytics libraries, and something called a “service worker” that I am pretty sure is just spying on me for someone. Probably Rodney.
So I found golang-kanban — a lean, self-hosted Kanban board built on something called Go.
Go.
They named a programming language Go. Just… Go. Not “Swift” (that one I understand, it implies speed, very professional), not “Rust” (gives you a rugged, industrial feeling), not even something dramatic like “Apex” or “Dominator.” Go. As if the naming committee got halfway through the meeting, someone said “we should probably name this thing,” and everyone else was already packing up their laptops. “Uh. Go? Sure, Go. Are we done?”
I respect it, actually. That level of not caring what people think is something I have aspired to for years and have never quite achieved. Ten out of ten, naming committee.
Anyway. Go is fast, it is efficient, it produces a single compiled binary that runs without requiring me to install forty-seven dependencies, and the kanban board it powers does exactly what I need: cards, columns, drag and drop, PostgreSQL for persistence, Docker for deployment. No JavaScript soup. The frontend uses something called HTMX, which updates only the parts of the page that change, like a sensible person. No full page reloads. No spinner. No framework arguing with another framework about who gets to render the button.

But — and here is where it gets interesting, because I have been doing some work — I forked the project and submitted a pull request. Several improvements, if I do say so myself:
Collapsible cards. When you have thirty-seven active -inator projects in various states of completion (I have counted, do not judge me), you do not need to see every subtask at all times. Cards now launch minimized with a completion indicator. Clean. Professional. Evil-organization-appropriate.
Dynamic rows and columns. The original board had fixed columns. Fixed! As if the phases of villainy are somehow static and predictable! I need to be able to add a column called “Waiting for Parts from Drusselstein” and another one called “Technically Works But Needs Refinement” and possibly a third one called “Foiled — Revising.” My pull request makes both rows and columns fully configurable from a settings modal. Add them, rename them, reorder them, delete them. The database backs it all — categories and statuses are now proper tables, not hardcoded assumptions about how I run my operation.
Inline subtask toggling. You should not have to open a card to check off a subtask. You just click it. Done. This is not a controversial opinion, this is basic human decency.
The whole thing runs in Docker, which means I can deploy it on hardware that L.O.V.E.M.U.F.F.I.N. does not have access to. I have a server. It is in a room. The room has a lock. The lock has a key, and the key is on a lanyard around my neck at all times, and I will not describe the lanyard further because that is private.
The point, my web-footed nemesis — and I do have one — is that good tools make good evil. Disorganized evil is just chaos. And chaos is Rodney’s whole thing. I prefer systems. I prefer clarity. I prefer knowing at a glance exactly which phase of the Stair-Climber-inator we are in and what is blocked and why.
Currently blocked: waiting on a very specific capacitor that apparently only one supplier in all of Drusselstein carries, and they are “on holiday” for what my tracking spreadsheet is telling me has been eleven months. But that is what the “Waiting for Parts from Drusselstein” column is for.
The Kanban-Boardinator: because if your evil empire cannot be organized, it cannot be expanded.
— Doof, Evil Scientist and Reluctant Open Source Contributor, Tri-State Area
Leave a Reply