Building Greenhouse: the rules engine that came before the app existed
A full Rust rules engine and 22 tests, written before Greenhouse had a UI or even a working Rust toolchain, and what broke the moment it finally compiled.
Notes on the software, games, and music coming out of Imperfect Systems.
RSS feedA full Rust rules engine and 22 tests, written before Greenhouse had a UI or even a working Rust toolchain, and what broke the moment it finally compiled.
Why Imperfect Systems is keeping a public dev log, and how the blog is wired up under the hood.
You can't extract a blog, but you can extract its components: a token contract for two palettes, and the two CI bites that never happen on a laptop.
A rules engine that looked finished hid a status nothing ever set, backwards sorts, an unenforced constraint, and a settings file that could brick the app.
Medium's native integration was a museum exhibit. A browser bridge, an article whose body is a URL, and minus 1,603 lines.
@MainActor eliminates data races, not interleaving races. A generation token, a stale-failure guard, and a deterministic race test with no sleeps.
A whole dark theme by redefining CSS variables under one class, and 45 minutes spent proving a five-line toggle innocent.
A UI redesign, a review comment that named the exact property I never touched, and what it takes to actually fix what someone reports instead of what's around it.
Every catch branch was dead code in tests. A 15-line failure seam fixed that, and then one unannotated test suite took down the whole runner.
Adding Postiz social cross-posting looked done until a blunt question exposed a double-post bug, and a full audit of every posting path in the app found two more like it.
Page 12 of 16