Blog
Devlogs, lessons, and release notes from the projects we ship.
- Privacy, Mobile, Advice
How to Read an App's Privacy Label, From People Who Fill Them Out
Every app in both stores carries a privacy label, and most people scroll right past it. We fill these forms out for our own apps. Here is what the answers actually mean, what the label cannot tell you, and a one-minute check to run before you install anything.
Read → - Nonprofits, Websites, Advice
Before Your Nonprofit Pays Anyone for a Website, Read This
What a small organization's web presence should actually cost, the free programs most nonprofits never claim, the five things the organization must own outright, and the questions that separate a fair quote from an expensive one.
Read → - Engineering, Mobile, ViewPane
Test on the Ugliest Screen You Own
Apple rejected our build for a paywall that clipped on a screen size we had never tested at. Reproducing it on an Android emulator took four minutes, found a second bug we had shipped in every build, and turned into a pre-submit rule we now run every time.
Read → - Workflow, Git, Small Studio
One Repo Per Project, Notes in a Separate One
How a small studio keeps six live products from tangling across two machines — the boundary that finally made "where does this go?" a question with one answer.
Read → - Game Design, Mithril & Mud, Godot
Earned Automation: Why Our Idle Game Is Taking Automation Away (From New Players)
Mithril & Mud hands new players six automation systems in one free panel at minute ten. We're redesigning that into a progression track of named dwarves you earn — here's the research and the design pillars behind it.
Read → - Engineering, ViewPane, Reliability
Hold, Then Veto: Building a Notification Pipeline That Fails Toward Noise
We taught ViewPane's push relay to stay quiet about people it recognizes. The feature took an afternoon — the interesting engineering was making sure every failure mode produces an extra alert instead of a missing one.
Read → - Mobile, IAP, Engineering
The Billing Bugs That Only Hurt Paying Customers
Everyone audits the paywall for freeloaders sneaking through. The costlier bugs are the ones that take someone's money and then fail them. Four we caught before launch.
Read → - Architecture, Self-Hosted, Philosophy
The Hardware Outlives the Cloud
Years of consumer-tech shutdowns distilled into one architectural rule — and why it shapes every companion app we ship.
Read → - Engineering, SVG, Bugs
Why Your SVG Renders Blank: HTML Entities Are Not XML
We shipped five hero images. Two rendered. Three were blank — and the browser didn't say a word. Here's the bug, the fix, and the short script we wrote to make sure it can't happen again.
Read → - Engineering, Pricing, Process
Code Review Won't Catch Your Pricing Exploits. An Adversarial Audit Will.
A pre-ship checklist for any feature that touches money — coupons, refunds, bundles, partial cancellations. Twelve questions to ask before merge, drawn from one we almost shipped.
Read → - ViewPane, Design, Marketing
Launching viewpane.app: A Marketing Site Pulled From the App Icon
How we built the ViewPane marketing site, why the palette came from the app icon instead of a Figma library, and the rule we wrote down to stop ourselves from re-litigating it.
Read → - ViewPane, Self-Hosted, Networking
Shipping ViewPane: Ten Cameras, One Mini-PC, Zero New Attack Surface
A real-world install — what the box looks like, why we picked an N100, and the rule we wouldn't break for convenience.
Read → - Pricing, Product, Philosophy
Why Our Companion Apps Cost $9.99 a Year
A pricing philosophy — the app is the premium product, the free tier is a real product, and nobody gets nagged.
Read → - SongStitched, Engineering, State Machines
Rebuilding the SongStitched Order State Machine
We had a state called "paid" that meant six different things. Here's why we tore it out and what we replaced it with.
Read →