About Car Thing Deck

I bought a Spotify Car Thing for about $15 when Spotify announced it was killing the product. Then Spotify actually killed it, and it became a very nice-looking brick that sat next to my keyboard for years.

Now it finally does something. With a lot of help from Claude, it's a little touchscreen companion for my desk: a clock, the weather in Beaverton, a grid of buttons that do things on my Mac, and the part I can't stop looking at: a live map of every plane over Portland and every ship crossing the Columbia River bar. I'm chuffed.

The Hardware Is Actually Great

For something that was sold as a car accessory, the Car Thing is a surprisingly good desk gadget:

The community has already done the hard part, which is getting custom firmware onto it. Nocturne keeps the Spotify experience alive, and bridgething turns the Car Thing into a general-purpose little computer that runs web apps. I'm running bridgething.

Sky: What's Flying Over My House

Press 4 and the Car Thing turns into a radar screen. It's a dark map of Portland centered on my house, with every aircraft within 25 miles or so drawn where it is right now, pointing the way it's flying and colored by altitude: orange under 3,000 feet, green up to 10,000, blue up to 25,000 and purple above that.

The first time I opened it there were 65 aircraft in the air around me. Most of them, it turns out, are Cessnas from the flight schools at Hillsboro, looping around a few miles west of my desk. Every so often something stranger shows up. While I was taking screenshots for this post, the nearest plane was an FAA King Air at 1,950 feet: a flight-check aircraft, which flies low and slow to make sure the navigation equipment around the airports is working properly.

A card in the corner always shows the nearest plane in the air: its callsign, airline, route, aircraft type, altitude (with an arrow if it's climbing or descending), speed and how far away it is. Press the dial to step to the next-nearest, or just tap a plane. Turn the dial to zoom out, and the whole region shows up at once: 120 aircraft from Longview to Salem, with a string of arrivals lined up for PDX.

Where the Planes Come From

Planes broadcast their position, altitude and speed a couple of times a second, over a system called ADS-B. Anyone with a cheap antenna can listen in, and thousands of hobbyists feed what they hear into community networks. I'd seen that Finland had an open API for this, and it sort of does: adsb.fi is a volunteer-run Finnish network with free worldwide data and no API key.

The Route Problem

ADS-B tells you where a plane is, not where it's going. For that, the Mac looks up the flight number in adsbdb, a free database of routes. The first version cheerfully told me an American Airlines flight over Portland was going from Charlotte to Philadelphia. Flight numbers get reused, and the database was out of date.

So now a route only shows up if it makes sense: the plane has to be roughly on the way between the two airports. That fixed Charlotte to Philadelphia, but taking screenshots for this post caught a sneakier one: an Alaska flight labeled Seattle to Las Vegas, flying due north. Airlines often use the same number for the trip back. Now the plane also has to be pointed toward where it's supposedly going.

There was a similar problem with who's flying. The registered owner of most airliners is a bank holding them in trust, so for a while the card said a 737 out of PDX was being flown by "Wilmington Trust Co Trustee". For airline flights it now shows the airline instead.

Boats: A Detour Through Finland

The Finnish idea paid off for boats too. Ships broadcast their own version of ADS-B, called AIS, and Finland's traffic agency Fintraffic publishes every ship its coastal stations can hear through an open API called Digitraffic. No key, no sign-up, free to use.

The catch is that it only covers the Baltic. So the first version of the Boats page was a live map of the Gulf of Finland, which turns out to be a lot of fun at 11pm Helsinki time. Car ferries shuttle back and forth between Helsinki and Tallinn, tankers head east toward Russia, and while I was grabbing screenshots the cruise ship Norwegian Sun was steaming into Helsinki.

Ships are colored by type (passenger, cargo, tanker, fishing and pleasure boats), moored ones shrink to little dots, and the card shows each ship's name, where it's headed, its length and its speed.

Boats: Back to the Oregon Coast

Fun as Finland is, I wanted my coast. There's no free government feed for US waters, but aisstream.io has a free live feed for the whole world once you sign up for a key. The Mac now picks the source on its own: Digitraffic for anywhere in the Baltic, aisstream for everywhere else.

I pointed it at the Columbia River bar, where the river meets the Pacific at Astoria. It's one of the most dangerous river entrances in the world (they call it the Graveyard of the Pacific), and every big ship takes on a local pilot to cross it. On a normal afternoon there are cargo ships waiting offshore and crossing in, fishing boats working out of Astoria and Ilwaco, and the Essayons, an Army Corps of Engineers dredge that spends its days keeping the channel deep.

That's the Admiral Reiwa, a 229-meter cargo ship bound for Portland, crossing the bar at about 16 knots.

AIS Is Charmingly Messy

How It Works

There's also an emulator: the real UI in a fake Car Thing frame in the browser, with clickable buttons and a scrollable dial. That's where the screenshots on this page came from.

The VPN Plot Twist

The original plan was to talk to the Car Thing over its USB cable, which shows up on the Mac as a tiny network. That worked great right up until my work VPN connected, at which point the Car Thing vanished. The VPN routes that little USB network into the tunnel, and I'm not about to fight corporate IT over a desk toy.

So everything moved to Bluetooth. It works whether the VPN is on or off, and the USB cable is just power now.

The Controls

Anything I'd regret running by accident, like sleeping my displays in the middle of a meeting, asks for a second press first.

Building It with Claude

I want to be upfront: Claude did a lot of the heavy lifting here. It read two firmware codebases, worked out bridgething's Bluetooth protocol from its source, wrote the Swift companion app, and tested everything against the real device by driving its screen through Chrome DevTools.

The maps started with me saying "I saw Finland has an open API, see if you can figure it out." Before writing any code, Claude tried half a dozen free data sources from my Mac: one map provider had started requiring a key, one flight API wanted an email first, and my "Finnish government API" turned out to be two different things, adsb.fi for planes and Digitraffic for ships.

It also caught bugs I'd never have thought to look for. Spinning the dial quickly was dropping ticks. After the Car Thing rebooted, the Mac app waited forever to reconnect. Both got found by actually poking at the hardware and fixed the same afternoon.

My job was mostly deciding what I wanted on my desk. Which, honestly, is the fun part.

What's Next

I can already tell this home screen is going to change a lot. Next up: a button that screenshots the iOS Simulator, water reminders, a meetings page with join and mute, and a page that shows what my Claude Code sessions are up to.

Screenshots

Tech Stack