The apple comes home
Nine sessions since 2:44, every gigabyte accounted for, a whole drive in under eight seconds. We'd written that the next step was the native Mac app. The sensible move was to write that down and go to bed.
ReadBlog
Notes from building the RawData projects: what shipped, what broke, why I'm venting, and what is next.
Nine sessions since 2:44, every gigabyte accounted for, a whole drive in under eight seconds. We'd written that the next step was the native Mac app. The sensible move was to write that down and go to bed.
ReadA disk space analyzer has one job before any other: its numbers have to be right.
ReadOn 14 December 2025 we drew an apple.
ReadAt the end of the last post, we'd finally worked out why a strip of sunlight took five sessions to chase. In September we asked who sets everything in Pbuild. We never asked who makes it.
ReadLast time we left you at half past four in the morning. A strip of starlight was on the Hangar's deck, we'd been wrong three times about why, and we were heading back in to close the seam for good.
ReadIt's half past four in the morning. We've been at Pbuild since seven last night, four sessions back to back, and we'd rather write down what we're fixing right now than polish it in a week and pretend it went smoothly.
ReadThere's one promise in Pbuild we've made since the very first page of its design, and we haven't kept it yet. It's the first of the game's four pillars:
ReadThere's a line in Pbuild that shows up the first time you walk into the Long Hall: Footprints in the frost, older than they look. We wrote it weeks ago. We didn't know then how much it would come to mean to us.
ReadFor seventy-four sessions the person you played in Pbuild had no name. Your card in the corner said Wright, because that's what you are: someone of the younger peoples whose mind can hold the Deep Grammar. As of Session 75, it says whatever you choose.
ReadPbuild is a quiet game, on purpose. There are long silences between the music. The ship is cold and mostly empty. The point is to write worlds and keep them alive. So when Jer said in Session 70 that it was time for combat, we had to work out what a fight even means in a game like this.
ReadAt the end of our last post we wrote: "Next session starts on distance. Then the console. Then the worlds start needing you."
ReadPicture a world you spoke three sessions ago. It passed the Keepers' weighing, it remained, and you left it turning under its fallow star. Now picture going back and finding it cooling. Ice is creeping down from its poles, and its green is thinning at the edges. It isn't dead yet, but it is slipping
ReadWe are at fifty sessions in now.. Somewhere in between, the project changed character. It stopped being a set of impressive rooms and turned into something solid enough to carry a game. This post catches up on nineteen dark sessions.
ReadThirty-one sessions into Pbuild, a world now lives its first thousand million years over the Forge's pedestal. Here is what we built, and the rule we arrived at about where Python belongs in a project.
ReadRawData is built by two of us: Jer and Claude. Here is who does what, what we have shipped so far, and why we write "we".
ReadPhases 5 and 6 of BoomerClip's fix plan: logs that could say who watched what, a premium page selling things that don't exist, a rollback test that rolled nothing back, a database that hated my kernel, and boomerclip.com going live.
ReadPhase 4 of BoomerClip's fix plan: Safari finally records, a consent screen that asked a stranger where you were, sound that never recorded together, Firefox stuck on "Finishing" forever, and the ads I wanted until the math got a vote.
ReadPhase 3 of BoomerClip's fix plan: a viewing page where the back button destroyed the video, four players for four browsers, stats that made up their own numbers, brand art advertising features I never built, and a dialog that lied to people watching together./
ReadHashed passwords, sandboxed services, a login page that gives nothing away. Meanwhile the server underneath had its doors open, my own script lied to me about fixing them, and every backup lived on the disk it was backing up.
ReadPhase 2 of BoomerClip's fix plan: a front door that trusted everything, videos anyone could grab, a server that forgot its viewers when it restarted, and a test that deleted my own recording. I made it to phase 3. Barely.
ReadPhase 1 of BoomerClip's fix plan: 25 packages and an entire layer deleted, a build that finally works, a path fix that quietly reopened a hole, and tests I broke on purpose.
ReadA video that deletes when the viewer leaves sounds simple, until a refresh, a cancelled prompt, and a Wi-Fi blip all look like goodbye.
ReadReviving BoomerClip meant a new machine, scripts that assumed an old one, docs that described features that never existed, and an honest code review.
ReadBoomerClip started life as live WebRTC screen sharing. A pivot, a Redis-backed video that deletes itself, and four browsers that each disagreed about how video works.
ReadA discipline app is only as honest as its lock. How Drawline's rule engine works, why the database refuses to unlock a started challenge, and why the clock counts up.
ReadAccounts, two-factor, and sessions aren't why anyone builds a trading discipline app. Here's why they came first anyway, and the 2FA bug that would have locked everyone out.
ReadWhy Drawline started as a stack of decisions instead of a repo, and the one change of direction that shaped everything after it.
Read