<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Debugging on Phosphor BBS</title>
		<link>https://phosphorbbs.net/tags/debugging/</link>
		<description>Recent content in Debugging on Phosphor BBS</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Tue, 20 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://phosphorbbs.net/tags/debugging/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>The Case of the Vanishing Blink</title>
				<link>https://phosphorbbs.net/blog/the-case-of-the-vanishing-blink/</link>
				<pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://phosphorbbs.net/blog/the-case-of-the-vanishing-blink/</guid>
				<description>&lt;p&gt;For years, picking an item on the Phosphor main menu did a small, satisfying thing: the row flashed — inverted video for about 150 milliseconds — and then the next screen took over. It&amp;rsquo;s a 65-byte courtesy. Two tiny frames: highlight the row, unhighlight the row, go.&lt;/p&gt;&#xA;&lt;p&gt;Then one day the flash was just gone in Terminal.app&amp;rsquo;s telnet client. Not intermittently. Gone. MuffinTerm still showed it. The web client showed it, but only one flash instead of two. Three different clients, three different answers, one unchanged server. By the time we sat down to hunt it, every standard explanation had already been eliminated: the code was untouched since the feature shipped, the server was provably running the current build, the user&amp;rsquo;s preferences and theme tested innocent, and the same binary rendered the blink perfectly against a test instance. Same client, same server, same account. Different port. Blink on one, gone on the other.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Case of the Invisible Popups</title>
				<link>https://phosphorbbs.net/blog/the-case-of-the-invisible-popups/</link>
				<pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://phosphorbbs.net/blog/the-case-of-the-invisible-popups/</guid>
				<description>&lt;p&gt;The session log screen has two popups: [H] on a row pops up that connection&amp;rsquo;s full history, and Enter pops up the session&amp;rsquo;s details. The SysOp account-review screen pops up a confirmation with the temp password when you approve a request. File lists pop up a preview panel. All four had been built the same way — a &lt;code&gt;Window&lt;/code&gt;, a hint list, a &lt;code&gt;Label&lt;/code&gt; shoved into the contents panel — and all four now shared the same bug report: &lt;em&gt;the popup doesn&amp;rsquo;t appear.&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Case of the Blended Batches: A Race Hidden Inside a Replace</title>
				<link>https://phosphorbbs.net/blog/the-case-of-the-blended-batches/</link>
				<pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://phosphorbbs.net/blog/the-case-of-the-blended-batches/</guid>
				<description>&lt;p&gt;The jterm thread-safety suite exists to answer one question: &lt;em&gt;can a widget survive being redrawn from one thread while another mutates it?&lt;/em&gt; It has run thousands of times across dozens of widgets, mostly to say yes. On the morning we cut the 0.1.1 release, it said no — and the test that failed wasn&amp;rsquo;t even the one that was broken.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-failures-two-days-apart&#34;&gt;Two failures, two days apart&lt;/h2&gt;&#xA;&lt;p&gt;The release gate runs the whole suite, 2,926 tests. The first full run failed one test: &lt;code&gt;FireworksTest.renderFrameProducesOutput&lt;/code&gt; — the fireworks animation was supposed to paint visible pixels after five frames and, once out of 2,926, it painted nothing. We re-ran the class in isolation: 12/12 green. Read the render path: fresh instance, deterministic math, five calls that each draw a rocket or particles. The failure looked like noise under load — the kind of flake you shrug at and re-run.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Case of the Very Random Dead Ctrl-T</title>
				<link>https://phosphorbbs.net/blog/the-case-of-the-very-random-dead-ctrl-t/</link>
				<pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://phosphorbbs.net/blog/the-case-of-the-very-random-dead-ctrl-t/</guid>
				<description>&lt;p&gt;Two weeks into the popup chat feature, users started reporting the same thing in different words: &lt;em&gt;Ctrl-T is very random.&lt;/em&gt; Sometimes it opened the chat popup instantly. Sometimes it did nothing — not even an error. Same terminal, same screen, same key. First press of the session would work, three presses in a row would work, then a press after closing the popup with ESC would go dead. Then it would work again. There was no pattern, which was the most maddening part — a consistently broken key is a bug report; an inconsistently broken key is a haunting.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Case of the Garbled Borders: Fixing SyncTERM Support</title>
				<link>https://phosphorbbs.net/blog/the-case-of-the-garbled-borders-fixing-syncterm-support/</link>
				<pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://phosphorbbs.net/blog/the-case-of-the-garbled-borders-fixing-syncterm-support/</guid>
				<description>&lt;p&gt;Every BBS lives or dies by its client support. MuffinTerm works. The web&#xA;client works. And then a user pointed out that the most popular terminal&#xA;program in the BBS world — SyncTERM, the client that most of the people&#xA;dialing into boards in 2026 are actually using — rendered every screen as&#xA;mojibake. Box borders turned into &lt;code&gt;┬í┬┐&lt;/code&gt; soup. The login screen was&#xA;unreadable. Our own sysop confirmed it the same evening from his own&#xA;machine: &amp;ldquo;completely messed up.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Five Bugs in One Morning: Debugging the Phosphor iOS Client</title>
				<link>https://phosphorbbs.net/blog/five-bugs-in-one-morning-debugging-the-phosphor-ios-client/</link>
				<pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://phosphorbbs.net/blog/five-bugs-in-one-morning-debugging-the-phosphor-ios-client/</guid>
				<description>&lt;p&gt;The &lt;a href=&#34;https://phosphorbbs.net/blog/a-qr-code-on-a-text-screen-pairing-phones-to-a-bbs-without-a-login&#34;&gt;QR pairing post&lt;/a&gt; ended with a working native iOS client for Phosphor BBS. What it didn&amp;rsquo;t cover is what happened next: the app crashed randomly, the keyboard never appeared, and the whole UI rendered in a sad little window in the middle third of the screen. One morning of debugging later, every bug had a root cause, and every root cause was a lesson worth writing down.&lt;/p&gt;&#xA;&lt;p&gt;This is a war story. Five bugs, five root causes, and the one thread that ties them together: &lt;strong&gt;things that pass every test and still fail on real hardware.&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
