Skip to main content -
The Signup Spike Wasn't the Fix, It Was the Season
-
The Auth Gate Had Exactly One Correct Position, and I Guessed
-
Our servers are too old to fix, and we still ship classic ASP on purpose
-
The Ambient-Global Bug: When "Current Account" Is a Mutable Global Your Whole App Reads
-
The Prod Box Was DDoSing Itself: An iCal Calendar Feature Looping Through the Public Edge
-
The legacy server-variable bug that printed `undefined` instead of a value
-
The bot swarm that turned out to be one bad query plan
-
314 broken stats pages and one bad cursor
-
The exit survey that overwrote a live mailer
-
Adding OpenTelemetry to a Classic ASP App Without Rewriting It
-
A three-pass AI code review that kept finding real bugs
-
Why Request.Form Is Empty: FormData vs URLSearchParams in Classic ASP AJAX
-
The reuse story died, so I shipped a new cart instead
-
The One-Shot Data-Repair Script as a First-Class Artifact
-
When a Workflow Gap Needs an Operator Tool: Preview, Policy, and an Audit Trail
-
A var EDIT_DATABASE = false Sat in a Branch for 2.5 Years. Then We Shipped It.
-
The method outlasts the patch
-
The fastest fix was blocking the bot by name
-
Single-currency database, dual-currency checkout: adding CAD without a schema change
-
The fix that ran on every request
-
The bug was wearing a trench coat
-
I had to stop letting the package tier pretend it was the product
-
A 25-Second Admin Screen Meant We Trusted the Wrong Query
-
The bug wasn't the upload, it was the URL contract
-
The bug wasn't the upload, it was the URL contract
-
The Real Fix Was Starting Over With a Smaller Blast Radius
-
The Bug Was Not in the Mobile UI
-
The Fastest Legacy Hotfix Is Often a Diagnostic
-
The Pricing Rewrite Only Got Real When I Wrote the Gates
-
The attacker was our own redirect logic
-
The call was coming from inside the house
-
Classic ASP Doesn't Care That It's a Comment: The Script-Delimiter Collision
-
Don't Trust the Green Deploy: Grep the Live File for Your Ticket Marker
-
A `?prototype=1` Flag and 23 Commits: Prototyping a Redesign in Production Code
-
I Almost Built an Entitlement System for a Feature That Was Already a Page
-
The Page Was Performing a Ceremony, Not a Job
-
The CSS Bug That Was Actually a Delete Bug
-
I Had to Turn My Internal Docs into a Product
-
The new door was already in the building
-
187 Commits to Fix Four Bugs
-
The Real Release Started After the Tag
-
Env drift was the real bug
-
The feature was fine. First-time state was the real bug.
-
A 47,490-line JavaScript file and what it tells you about a profitable legacy app
-
Hand-rolled hydration: passing server state to the browser with no framework
-
Carry Your State in the URL, Then Actually Carry It: The Dropped Query Param
-
The Duplicated-Derivation Bug: One Fragile Expression in Four Queries
-
'Newest First' Is a Re-Priority Problem, Not an ORDER BY
-
Shipping a Whole Analytics Suite Into a Legacy ASP Admin
-
Six Production Releases in One Day: Anatomy of a Hotfix Train
-
Cache-Busting With No Build Pipeline: Date-Stamped Asset Filenames
-
A fluent DOM builder for legacy ASP: modernize without a rewrite
-
Response.Redirect Blew Up the Error Page. Server.Transfer Didn't.
-
Route a Change by Its Blast Radius, Not Its Size or Your Schedule
-
Server-Side JavaScript on Classic ASP in 2026: Prototype Pages and the DB Helper Pattern
-
Shipping a Throwaway Relay Page to Debug a Payment Integration in Prod
-
A Trusted Gateway POST Is Still a Public Endpoint
-
1900-01-01 Is Not a Date: The Zero-Datetime That Corrupts Every Migration
-
A code-first schema audit: keeping a 1,477-line ASP file in sync with a 14,536-column DB
-
I Wrote a 1,477-Line Site-Recovery Engine in Classic ASP: Copy First, Remap IDs Second
-
Don't leave the recovery gun loaded: scrubbing prod constants at end of day
-
N Drifting Copies Share One Bug: The Legacy Consolidation Thesis