It’s 2026 and I’m running a BBS* like it’s 1991.
To avoid burying the lede on this:
ssh yulbbs.via.sc(telnetalso works); or https://yulbbs.via.sc/ in your browser.
(I mentioned this on Mastodon a while back, so this might not be new to some of you, but I realized I never wrote about it here.)
I live very near to a large airport (CYUL, Dorval/Trudeau airport in Montreal). I’m certainly no airplane foamer, but living so close gives me a sort of aircraft osmosis. It’s not uncommon for me to hear a take-off or landing that “sounded weird” and look up the flight.
I’m also casually interested in self-sufficient communications (this year—especially—I’ve been learning more about local mesh networking and have become involved with the Meshcore buildout in Montreal (I will certainly post more about this at some point)), and the joy—for me at least—of getting data from the sky.
You’ve probably casually heard of ADS-B from viewing flight tracking data for commercial flights, through services like Flightradar24, FlightAware, or other similar offerings. The way these systems work (at a very high level) is that they ingest telemetry data and plot aircraft on a map. The actual data comes from ADS-B (and other systems in other regions), which the airplanes themselves broadcast. Anyone with an appropriate radio setup can receive these signals, and decode them into something that can be plotted on a map (in fact, most of the data that you see on the above-mentioned flight tracking services comes from a network of enthusiasts who share locally-received data over the Internet). A big part of what I find interesting about this, though, is that the data does’t come from a service—I don’t need to rely on my ISP. I get the data directly from the airplanes, via an antenna and (software-defined) radio.
With this data captured, I didn’t want to just plot it on a map—that part has been done, and frankly done better than I could spend the effort on doing myself. Instead, I built YULBBS: a retrocomputing project, inspired by my adolescent introduction to social computing.
YULBBS has 4 main functions:
- a table of aircraft near-enough for my antenna to hear (as of this writing, I’ve received a broadcast from 688km away!)
- a semi-interactive map of YUL and our nearby water features, with planes plotted, and inspired by mapscii.
- heuristically determine take-offs and landings at YUL (ADS-B doesn’t give me “I’m landing right now” data, so I had to determine that an airplane is landing based on characteristics of how their position is progressing, which proved to be harder than it seems)
- and providing alerts for all arrivals and departures, plus an additional channel for anomalies (like letting me know when there’s a (broadcasting) hot air balloon nearby, or when an aircraft declares an emergency situation—these reported emergencies, hijackings, radio failures, etc., seem to be overwhelmingly false positives, which is a different kind of concerning)
The app itself was made with Swift (yes, that Swift), and uses NIO via SwiftNIO SSH. It’s a cross-compiled statically-linked Linux-on-ARM app that runs happily on a Raspberry Pi 3 (other than the USB problems that are present in v3, but those have nothing to do with my app) in my office closet. This little node does all of the ADS-B decoding through a piece of software called dump1090, and I get some local-only API data through a mini stack from the FlightAware folks, called PiAware. The real IP address (and hostname) are through a nano sized node in AWS (ca-central-1 is nearby), and the SSH + Telnet connections are passed along through HAProxy and Tailscale.
For a while I had it broadcasting the transitions and alerts on a local Meshtastic channel, but I currently have that LoRa (mesh) radio board unplugged (due to the mentioned USB issues). I may hook it up to Meshcore sometime soon (remember the joy of self-sufficient communications). It does, however, send messages via the normal net to a couple Mastodon accounts: @YULAlerts for mostly-false-positive alerts like emergencies (but it was fun to see the Snowbirds (Canadian demonstration jets) show up), and @YULTraffic for all determined landings and take-offs (this is a noisy account; beware).
Some screen shots:

It’s ssh yulbbs.via.sc (or telnet; there’s even a web-based client (that I didn’t make) at https://yulbbs.via.sc). Let me know if you tinker with this; I’d love to hear about it.
*: note it’s not really a BBS—it doesn’t have local messaging, for example—but it’s set up to work and look like one, and that’s a big part of the fun part of retrocomputing for me.