Open Source
-
September 23, 2026
Markdown in a Terminal: Building a MarkdownWidget for jterm
Every BBS has the same problem: text that wants to be formatted. Help screens with headings and bullet lists. News articles with paragraphs. Mail that …
-
September 23, 2026
Publishing 0.1.1: The Deploy That Exited 0 and Published Nothing
jterm 0.1.1 is on Maven Central. The build that put it there was green in seventeen seconds of test time — and took nine and a half minutes of wall …
-
September 18, 2026
Give Every Column Its Fair Share: Per-Column Widths in the jterm Table Widget
Tables are the workhorse of every BBS screen. Message lists, who’s online, file areas, the sysop’s session dashboard — all of them are …
-
September 17, 2026
The Doorbell for the Dev Blog: Why We Ship an RSS Feed
Every post from this dev log — 39 of them now, from “Why I’m Building a BBS in 2026” to this morning’s piece on the three-door …
-
September 16, 2026
Page Sysop: The Classic BBS Ritual Gets a Phone Push
Every classic BBS had a ritual for I need a human right now: page the sysop. It was the doorbell of the system — one keypress, a line of text, and …
-
September 4, 2026
Five Bugs in One Morning: Debugging the Phosphor iOS Client
The QR pairing post ended with a working native iOS client for Phosphor BBS. What it didn’t cover is what happened next: the app crashed …
-
September 4, 2026
The Screen That Lied: Building Idle Timers That Actually Tick
Here’s a bug report you can’t reproduce with a test: “the sessions view shows a list of users logged in, and when they change state …
-
September 2, 2026
A QR Code on a Text Screen: Pairing Phones to a BBS Without a Login
There’s a moment in every mobile-client story where the design gets embarrassing. Your BBS just grew a beautiful native iOS app — SwiftUI, an …
-
August 15, 2026
Live Spellcheck in a Terminal: Yellow Highlights, No Popups
Every modern editor highlights misspelled words as you type. Squiggly red underlines in Word, yellow backgrounds in Google Docs, dotted lines in VS …
-
August 14, 2026
Ghost Text Completion: Bringing Modern Editor UX to the Terminal
If you’ve used VS Code, fish shell, or Google’s search bar, you’ve seen ghost text — that dim, semi-transparent suggestion that …
-
August 12, 2026
Animated Borders: Living Frames in a Terminal UI Toolkit
A border in a terminal UI is usually a static thing. Four corners, four edges, drawn once and forgotten. Box-drawing characters sit there like a …
-
August 12, 2026
Designing Reusable Config Screens: From Vertical Labels to Table Layout
Every config screen in Phosphor BBS used to be a snowflake. SystemConfigScreen had its own layout. AiConfigScreen had its own layout. They looked …
-
August 12, 2026
The Auto-Approve Dead-End: A BBS Onboarding Bug Story
Here’s a bug that’s easy to introduce and embarrassing to discover: a new user creates an account on your BBS, the system auto-approves …
-
August 7, 2026
Hal: An AI SysOp That Never Leaves the Server
Phosphor has a staff member now. His name is Hal, he listens on the
#sysopchannel and to direct messages, and he can answer “who’s … -
August 7, 2026
Two Dialects, One Schema: Supporting H2 and Postgres Without Losing Your Mind
A BBS should boot on a laptop with no database server installed. It should also run a production community for years on a real database with real …
-
July 19, 2026
Threading the Flood: How Echomail Learned to Stay in Line
Federation is easy to demo and hard to make boring. The exciting part — a post appears on three servers — takes a weekend. The boring part, where the …