When Stripe's Draft Invoices Lock Out Your Paying Customers
How a draft renewal invoice caused 204 paying customers to see a lapsed payment error, and why subscription status — not invoice status — is the right access gate.
Querying Across Polymorphic Associations for a Suppress-Sends Report
Building a Rake report that traverses polymorphic associations to find accounts using suppress_previous_sends.
51 Actions, 35 Components, 3 Plugins: Shipping a Complete Visual Novel Toolkit
Building every gameplay system a VN developer needs: stats, events, scheduler, phone chat, image maps, achievements, screen effects, and a plugin ecosystem.
Building a Visual Novel Toolkit: Decorators, Phone Chat, and 14 New Actions
From decorator revolution to phone chat UI: building complete gameplay systems for Monogatari v3 with 14 new actions, 5 components, and 22 engine utilities.
Racing Stripe: Fixing Webhook Race Conditions in Subscription Upgrades
How a manual Stripe upgrade exposed race conditions between webhooks and background jobs, and the targeted fixes we applied.
Stripe Webhooks, Delayed Job UX, and YAML Regex Golf
Webhook refresh jobs, dedup strategies across Puma workers, and parsing YAML handler blobs three different ways.
From 85% to 100%: Rebuilding Monogatari's Rollback System and Developer Experience
How fixing 45 failing tests led to new decorators, a snapshot rollback system, and full engine decoupling in Monogatari v3.
Donation Tracking & Stream Alerts: 2,000 Lines Across Two Repos
Built a donation tracking system and real-time stream alert overlay from scratch — 30 commits, 6 bugs, and a yipee cat across two repos.
Building a Delayed Jobs Dashboard — From One Big Bar to a Full Admin Panel
How a basic job table became a full dashboard with heatmaps, card views, and management actions — plus three sneaky bugs along the way.
Auditing a Discord Bot's Moderation System: 16 Bugs, 18 Commits, 20 Files
A full security audit and refactoring of a Discord/Twitch bot moderation system — from silent AWS credential bugs to splitting a 700-line god file.
Building a CLI to Replace Our MCP Server — Because Context is Expensive
We built a CLI tool that replaces our 28-tool MCP server, saving ~5,000 context tokens per conversation for AI agents.
Adding Generics to Artemis's DOM Class
Making the Artemis DOM class generic so $_create and $_ preserve element type information — eliminating forced casts across Monogatari v3.