This may not immediately look like work, but I built it to find out how far I could push six disparate data feeds into something that tells a story.
Role
Designer and builder
Organization
Self-directed
I built a kiosk for my office that feels like a control center for every radio signal in the Kansas City metro. What started as me trying to make a radio scanner in software turned into a piece of data art that tells a real story about what’s moving across the invisible airwaves over Kansas City.
Several months ago, I started creating Bearpaw, an app I’m building to drive and program my Uniden BC125AT scanner over USB on a Mac. The scanner tech is over a decade old and the Uniden software is Windows only.
I started out just trying to replicate the functionality of the original software. That took thirty minutes for Claude Code to accomplish. So then, I started wondering how I could push this project into new places.
The stock Uniden software is basically a spreadsheet: the frequency, a name capped at sixteen characters, a little metadata, all on you to populate. But a frequency is really just a lookup key. Once you know the one you want, there’s enough data online to fill in the rest of the details. RadioReference, RepeaterBook, and public FCC records already track the repeaters and the licenses, names and all. Why not have the system go get it for you?
As I was looking at the data that these websites held, I saw that location was part of each record. That’s when the idea for a map of all radio activity came. I shelved Bearpaw and moved to a pair of SDR dongles to pick up radio signals. With everything self-contained on a spare twelve-year-old MacBook, I set out to design the ultimate visual display.
When the SDR picked up a transmission, it took the frequency, looked it up, and checked whether the match was close to me. If it was, the hit got tagged with what it actually is: a fire dispatch, a business, a ham repeater. Then it went on the map.
As the map filled, it stopped being a scanner readout and turned into something closer to data art. Looking at the patterns and colors, I wondered how far I could push the amount of data on the map while keeping it useful and well-designed.
So I layered weather radar under the hits. Then, I wanted every aircraft overhead tracked by ADS-B and tagged with its flight number. The old laptop was already at its limit, so I pulled the aircraft from an open feed instead. Then a clock and current conditions, because every good kiosk needs those.
One dongle scans and plots; the other sits on NOAA Weather Radio, decoding the Emergency Alert System and SAME data in the broadcast. When a warning goes out, it reads the SAME county codes and only puts the alert on screen if one of them is in my immediate area. It has been faster than the warnings on my phone.
The weather alerts are useful. Whether the rest of it is, I’ll leave to you. All of this started with one hit on one frequency, and it grew into a screen that tells you a story about the airspace over your city at 8:33 on a given night. Someday I’ll move it off the MacBook onto something that lets me keep expanding.
I was one of two designers on the team who could read the pull request and the design standard side by side. The library ran 80-plus React components, consumed by 1,500 healthcare orgs across 195 countries.
I started at Oracle Health researching how to govern AI generation, and ended up on a question I’m still working on: how do you capture the judgment in people’s heads before they walk out the door, and is that an idea I’m comfortable with?
We shipped three components on Oracle’s Redwood system. The two I remember best, we killed: one would have outed a patient, one broke the rule that keeps a name reliable.