He Said Michael
My desk faces a window, and the window faces a main road in Merrimack, New Hampshire. The town goes by in front of me all day: fire trucks, ambulances, cruisers, lights on, siren up, moving fast toward somewhere that matters a great deal to somebody. I have watched hundreds of them pass that glass and had the identical thought every single time. Where are they going?
That question is the whole reason this project exists. The serial protocol work, the transcribed font, the screen map, the 105,000 lines of Go, all of it is scaffolding built around a guy at a window wondering about a siren.
Somebody else's idea of the interesting channel
I'm Al Beebe. I've been coding since 1996, which means I have spent my entire adult life building platforms, websites, and apps, and I am still doing it: these days as a contractor at AT&T, working on their AI voice platform. When I want to know something, my reflex is not to look for an app. It's to go get the data.
The first stop was Broadcastify, and Broadcastify is genuinely good at what it does. Volunteers all over the country point receivers at their local systems and stream them out for free, which is a wildly generous thing for a hobby to have organized itself into. It got me close. Then it stopped, for one structural reason: a feed is a channel somebody else decided was the interesting one. You listen to what that person's radio is parked on.
Real dispatch does not stay on one channel. The call goes out on dispatch, the units acknowledge, and then the actual work moves to a fireground or tactical channel while dispatch goes back to being quiet. A scanner exists so you can follow the incident instead of the frequency. That is the entire point of the word scan. Listening to one fixed feed is like reading a group chat with everyone but the first speaker muted.
I also wanted the physical thing. Not a browser tab. A radio, on the desk, with an antenna, doing the work in the room I'm sitting in.
The counter guy asked for your address
The requirement was never purely technical.
Growing up in Milton, Massachusetts, my dad went to RadioShack and came home with a scanner. If you are young enough to have missed it, there was a RadioShack in every strip mall in America, and it sold resistors and speaker wire and computers next to the toys, and the guy behind the counter asked for your name and address before he'd ring you up. You could walk in on a Saturday and walk out with a machine that pulled the police and the fire department out of the air. As a kid that felt like being handed a key to the town.
My uncle was a firefighter in Milton. One night his station ran its radio test, the routine daily check that everything still keys up, and at the end of it he signed off with one word that was not part of any procedure: "MICHAEL." That's my brother's name. He knew we were listening, and he put my brother's name out over the air.
Back then being on the radio was a big deal. It was one shared channel that the whole town could hear, and my uncle spent a half second of it on two kids at home with the scanner on. I have carried that for thirty-some years. Every serious hobby has a moment that hooks somebody, and that was mine.
AI is IA
At my current job I have effectively unlimited access to the current models, and having that changes what you attempt. I've come to think the acronym is wrong. It isn't artificial intelligence, not in any way I recognize from using it eight hours a day. It's an intelligence amplifier. IA.
The distinction matters because of what an amplifier does: it makes the signal you feed it louder, including the noise. Hand it thirty years of knowing how to architect a system, spec a protocol layer, structure a test suite, and read a stack trace at a glance, and it turns that into output at a rate that is frankly a little disorienting. Hand it confusion and it will produce confident, well-formatted confusion at the same rate. The experience I spent decades accumulating did not become worthless when the models got good. It became the input.
AI generated essentially all of the code in this project. I steered every inch of it. I ran a few hundred prompts to get radiocli where I wanted it, and most of those prompts were not "write me a scanner tool," they were "no, that lock is in the wrong place," and "this test asserts nothing," and "the radio does not actually behave that way, go read the trace again." Somebody had to know what right looked like. That job did not go anywhere. It just became most of the job.
I find myself working late now, at work and after work, not because anybody's asking but because the loop is so tight that building is fun again in a way it hasn't been in years.
Two weeks and a Max subscription
Start to finish, radiocli went from nothing to a working tool in a couple of weeks of nights and weekends, on a Claude Max subscription. Thirty-one commands, 45 packages, full test coverage, a daemon that brokers the serial port, plus a documented protocol that Uniden never published and every research note behind it.
I want to be careful about what that number means, because "two weeks" is the kind of thing people repeat without the asterisk. That was two weeks of an engineer who has been doing this since 1996 aiming a very good tool at a problem he understood. It was not two weeks of asking a chatbot for a scanner app. If you handed the same subscription to somebody who had never shipped anything, they would get a pile of plausible code that mostly runs, and no way to tell which parts were lying.
That is not a knock on them. When I started, turning an idea into a program meant getting a code book out of the library and hoping it covered a language I could actually run. A pile of code that mostly runs beats that by a mile.
I wrote these blog posts myself, longhand, and then had the AI clean them up, because I'm an engineer and not a writer and I know the difference. The thinking is mine. The commas are negotiable.
The other thing that made this possible is that Uniden left the door open. Their radio will hand a stranger its entire screen and accept any keypress over a plain serial cable, which is the only reason a guy at a window could map the machine at all. I said my piece about that already, and I meant it.
So that's the project. A window, a road, a question I've been asking since I was a kid, and a tool that finally made answering it a two-week job instead of a two-year one.
Tonight a truck will go by with its lights on, and I'll know where it's headed before it clears the corner. Somebody's uncle is on the air out there, and I've got the scanner on.