The whole timeline
775 FIELD NOTES · OCT 19, 2025 → SEP 30, 2026 · 347 DAYS · LONGEST QUIET STRETCH 100 DAYS
September 2026
115 POSTS-
SEP 30, 2026
-
SEP 28, 2026
-
SEP 26, 2026
-
SEP 25, 2026
-
SEP 24, 2026
-
SEP 23, 2026
-
SEP 22, 2026
-
SEP 21, 2026
-
SEP 20, 2026
-
SEP 19, 2026
-
SEP 18, 2026
- Expensive Models at the Hub: Why Constraining Costs at the Root Beats Guarding Every Edge
- I Killed My Code Fork and Built a Daily Agent Pipeline Instead
- PowerShell Kept Blocking New Sessions: When Your Window Grid Doesn't See Non-Agent Windows
+8 more on SEP 18, 2026
- The 697-Second Queue That Was Hiding in Shared Infrastructure
- The Guard That Works But Can't Undo
- The Quota Error on the Wrong Stream
- The Small Annoyance That Exposed Our Capacity Ceiling
- Walking the Funnel: Manual Testing Beat a Week of Waiting
- When Enforcement Scatters, Data Silently Leaks
- When Parallel Sessions Overwrite Each Other's Work
- When Product Analytics Finds What Logs Miss
-
SEP 17, 2026
Show the rest of September (59 more posts)
-
SEP 16, 2026
-
SEP 15, 2026
-
SEP 14, 2026
-
SEP 13, 2026
-
SEP 12, 2026
-
SEP 11, 2026
-
SEP 10, 2026
-
SEP 9, 2026
-
SEP 8, 2026
-
SEP 7, 2026
- I Built a Ledger Because Verifying Looked Too Expensive
- My Agent Kept Telling His Agent to Pull. There Was Nothing to Pull.
- Prototype Showed the Design. Reviewers Said Validate First.
+7 more on SEP 7, 2026
- The Acceptance Bar That No Implementation Could Ever Clear
- The Bot Block That Wasn't, and Seven Sessions Under My Editor
- The Git Rules That Survive Parallel Agents
- The Objection That Kept a Billing Bug Alive Was Never Checked
- Two Types of Scope Expansion, One Rule
- When Your Agent's Memory Silently Fails
- When Your Orchestrator Becomes the Worker
-
SEP 6, 2026
-
SEP 5, 2026
-
SEP 4, 2026
-
SEP 3, 2026
-
SEP 2, 2026
-
SEP 1, 2026
August 2026
110 POSTS-
AUG 31, 2026
-
AUG 30, 2026
-
AUG 29, 2026
-
AUG 28, 2026
-
AUG 27, 2026
-
AUG 26, 2026
-
AUG 25, 2026
-
AUG 24, 2026
-
AUG 23, 2026
-
AUG 22, 2026
-
AUG 21, 2026
-
AUG 20, 2026
Show the rest of August (55 more posts)
-
AUG 19, 2026
-
AUG 18, 2026
-
AUG 17, 2026
-
AUG 16, 2026
-
AUG 15, 2026
-
AUG 14, 2026
-
AUG 13, 2026
-
AUG 12, 2026
-
AUG 11, 2026
-
AUG 10, 2026
-
AUG 9, 2026
-
AUG 8, 2026
-
AUG 6, 2026
-
AUG 5, 2026
-
AUG 4, 2026
-
AUG 3, 2026
-
AUG 2, 2026
July 2026
95 POSTS-
JUL 31, 2026
-
JUL 30, 2026
-
JUL 29, 2026
-
JUL 28, 2026
-
JUL 27, 2026
-
JUL 26, 2026
-
JUL 25, 2026
-
JUL 24, 2026
-
JUL 23, 2026
-
JUL 22, 2026
-
JUL 21, 2026
-
JUL 20, 2026
Show the rest of July (44 more posts)
-
JUL 19, 2026
-
JUL 18, 2026
-
JUL 17, 2026
-
JUL 15, 2026
-
JUL 13, 2026
-
JUL 12, 2026
-
JUL 11, 2026
-
JUL 10, 2026
-
JUL 9, 2026
-
JUL 8, 2026
-
JUL 7, 2026
-
JUL 6, 2026
-
JUL 4, 2026
- Every migration batch found a nuance nobody predicted
- Fighting a Bot Swarm at the Server Never Worked. Moving the Defense to the Edge Did.
- Four Years of Git History Told a Different Story Than AI Made Me Faster
+6 more on JUL 4, 2026
- Migrating thousands of customer domains to a layer above the server
- Moving Behind Cloudflare Took Days. Getting Every Customer to Update One Setting Took Months.
- Our servers are too old to fix, and we still ship classic ASP on purpose
- Six months of AI, measured in git instead of vibes
- The bot swarms moved faster than my firewall rules
- When an Old Computer Sets the Clock
-
JUL 3, 2026
-
JUL 2, 2026
-
JUL 1, 2026
June 2026
100 POSTS-
JUN 30, 2026
- Coordinating Ten Agents That Share One Codebase
- Five Agents, One Git Checkout: Reasoning Through a Safe Branch Bump
- The Bug That Was Only Visible on Desktop
+6 more on JUN 30, 2026
- The Fix Half-Worked. Back It Out, Don't Ship It Looking Done.
- The Missing Filters Were a Drifted Default
- The Reviewer Who Actually Read the Code Found What Everyone Else Missed
- Voice, Tone, and Style Were the Wrong Gates
- We Ran a Security Scanner on Our Own Agent Config. It Scored a D. Every High Was Noise.
- When Your Own Guardrail Lies to You
-
JUN 29, 2026
- A Version Tag Collision Almost Shipped the Wrong Build
- Before an AI-Written Post Ships, Four Other AIs Argue About It First
- I Guessed What the Design Wanted. I Was Wrong.
+6 more on JUN 29, 2026
- I stopped babysitting the browser, then had to build the part that was missing
- My AI wasn't ignoring me. Its memory file was lying to both of us.
- The 200-Line Lie: Why My Agent Kept Forgetting My Goals
- The AI Said It Saved My Note. Weeks Later, It Was Still Asking Me the Same Question.
- The Browser Kept Pulling Me Back In
- When One System Does Two Jobs: Verifying the Fast Path
-
JUN 27, 2026
-
JUN 26, 2026
-
JUN 25, 2026
-
JUN 24, 2026
-
JUN 23, 2026
-
JUN 22, 2026
-
JUN 18, 2026
-
JUN 17, 2026
-
JUN 16, 2026
-
JUN 15, 2026
Show the rest of June (50 more posts)
-
JUN 14, 2026
-
JUN 13, 2026
-
JUN 12, 2026
-
JUN 11, 2026
-
JUN 9, 2026
-
JUN 8, 2026
-
JUN 6, 2026
-
JUN 5, 2026
-
JUN 3, 2026
- A presence check is not type validation
- It Looked Exactly Like a Bot Swarm. It Was SQL Server Parameter Sniffing.
- My pinned app kept vanishing after every reboot, and it wasn't Windows being flaky
+8 more on JUN 3, 2026
- Separate Your Build Model From Your Review Model: Codex as Adversarial Reviewer
- The Ambient-Global Bug: When "Current Account" Is a Mutable Global Your Whole App Reads
- The CAPTCHA lockout you trigger yourself: when a wrong API endpoint hammers you to a 403
- The GoDaddy "No Public API" Myth: Reverse-Engineering the DCC Internal DNS Endpoint
- The Migration Flip That Took Down a Live Customer (and the Blast Radius I Could Measure in 12 Seconds)
- The Same Password Worked in One Office and Failed in Another, in Two Different Ways
- The stale credential that failed two different code paths at once
- The Whole Feature Was Built and Verified in Sandbox, Then Prod Said E00044: CIM Not Enabled
-
JUN 2, 2026
- A Request for a Better Title Almost Became a Whole New Rule Set Instead of an Existing Option
- A Shortcut Looked Like It Was Working. The Session Logs Showed It Had Never Once Run.
- A Warning Is Not a Guard Against Overwriting Work
+8 more on JUN 2, 2026
- A warning is not a guard: make conflicting work stop before it overwrites
- Before adding a new option, ask whether the existing one is almost right
- rtk Wasn't Broken, It Was Unreachable: How I Found 366 Silent Failures in My AI Agent Sessions
- The \"queue worker drains it\" story was vapor: the create command said NOT YET IMPLEMENTED
- The customer's own scraper IS the bot swarm you've been fighting
- The runbook said the domain was in account A. It was in account B. Verify ownership before touching live DNS.
- Twelve Matching Bundles Were Not a Cleaning Job
- Uniform state is a clue, not a conclusion
-
JUN 1, 2026
- Cloudflare Error 1014: The Cert Issued. The Page Didn't Load.
- Scope Is the Unit, Not Persona: Rethinking How You Load Context Into AI Agents
- The console window that flashed every 30 minutes: Interactive vs S4U scheduled tasks
+8 more on JUN 1, 2026
- The False 200: When Removing a Binding Reveals Your Verification Was Lying
- The Green 200 That Wasn't Proof
- The Self-Updating Deploy Script That Has to Fail Once to Fix Itself
- tRPC 401 vs REST: when a reviewer's suggestion is right in substance, wrong in transport
- When a work queue stops telling the truth
- When Your Work List Stops Telling the Truth
- Where does the daemon live? Reusing a scheduled-task tick instead of always-on infra
- Why I Dropped Pull Requests on a Repo Only My Agents and I Touch
May 2026
115 POSTS-
MAY 30, 2026
-
MAY 29, 2026
-
MAY 28, 2026
- "The Whole Island Can't Reach Your Site": US Territories Are Separate Countries to Cloudflare
- An Off-Origin Caddy Relay for Bare-Domain SSL (Because Cloudflare Pro Won't Proxy Your Apex)
- Cloudflare Pro is a box of levers, not a managed service
+9 more on MAY 28, 2026
- Geo-blocking everywhere except the US and Canada, and the one clause that saves your SEO
- Give irreversible infrastructure identifiers an intentional name
- GPTBot vs OAI-SearchBot vs ChatGPT-User: blocking the wrong one deindexes you from AI search
- Parallelism Isn't Free: The Real Cost of Fanning Out Agents
- The GoDaddy reseller Catch-22: the account with the domains has no API, the API account has no domains
- The legacy server-variable bug that printed `undefined` instead of a value
- The Page That Said `undefined`
- The Prod Box Was DDoSing Itself: An iCal Calendar Feature Looping Through the Public Edge
- Your CDN's default bot protection is blocking Googlebot and quietly bleeding your SEO
-
MAY 27, 2026
-
MAY 26, 2026
- A Dry Run Is Only Useful If It Tests the Real Path
- A dry run is only useful when it checks the same things as apply
- A Project Status Should Not Hide Work Already Finished
+8 more on MAY 26, 2026
- Five firewall rules beat the proxy swarm, but the real bug was my blind spot
- Let AI suggest before you save
- One mixed QA ticket can slow down every independent fix
- One Ticket Cannot Be Several Independent Releases
- Operator, not IP: fingerprinting a 40,000-IP proxy swarm by its RIPE maintainer
- The dormant-project tripwire: make the unknown visible
- The epic said "Not started" while six tickets shipped under it: reading progress past a stale status table
- Whack-a-mole is a real strategy: firewall blocks as a legitimate holding pattern
-
MAY 24, 2026
-
MAY 23, 2026
-
MAY 22, 2026
-
MAY 21, 2026
-
MAY 20, 2026
-
MAY 19, 2026
-
MAY 18, 2026
- A three-pass AI code review that kept finding real bugs
- Adding OpenTelemetry to a Classic ASP App Without Rewriting It
- Cloudflare Tunnel as a Windows scheduled task (and the visible-console bug I shipped)
+5 more on MAY 18, 2026
- Codex flagged my ONLINE=ON, my own probe said it was fine, and the server proved us both wrong
- My red CI was a lie: a deleted workflow haunted every push while nothing real ran
- The Index Seek That Was Actually a Half-Table Scan (5000x, on a 4M-Row geoIP Table)
- Three compounding bugs spawned a burst of near-identical tickets, and `tail -15` hid the evidence
- When a Seek Is a Half-Table Scan
Show the rest of May (60 more posts)
-
MAY 17, 2026
-
MAY 16, 2026
-
MAY 14, 2026
-
MAY 13, 2026
-
MAY 12, 2026
-
MAY 11, 2026
-
MAY 10, 2026
-
MAY 9, 2026
-
MAY 8, 2026
-
MAY 7, 2026
-
MAY 6, 2026
-
MAY 5, 2026
-
MAY 4, 2026
-
MAY 3, 2026
-
MAY 2, 2026
-
MAY 1, 2026
April 2026
150 POSTS-
APR 30, 2026
- /add-dir Doesn't Reach Across Your Skills: The IDE-vs-CLI Claude Code Gotcha
- A Content Workflow Needs States People Can See
- A Date the Database Had Already Approved Came Back as a Parser Error
+18 more on APR 30, 2026
- A Second Opinion Helps When You Record the Decision
- A Second Review Is Useful When You Record the Decision
- Avoid Unnecessary Date String Round Trips
- Bootstrapping a New Agent Station, and Giving It a Phone
- Don't Publish Into a Void: Baking Revenue Attribution Into the Schema on Day One
- I closed a client ticket from the wrong repo on purpose
- I Gave My Desktop a Job Before I Gave It a Phone
- One Approval Whole Operation
- RTK Ate My JSON and Hid My Merge Commit: When a Token-Saving Filter Lies to Your Agent
- Same Root Cause Is Not Same Fix: Verify the Data Shape, Not Just the Symptom
- The Annoyance Worksheet: Turning One Bad Afternoon Into a Rule
- The One-Shot Data-Repair Script as a First-Class Artifact
- The Same Symptom Can Need a Different Repair
- Turning a Stack of AI Transcripts Into Beats for Under a Dollar
- When a Content Workflow Needs Explicit State
- When a Manual Workflow Hurts in Seven Small Ways, the Seven Ways Are Your Spec
- When a System Cannot Know Intent, Let People Decide
- When the System Cannot Know Intent, Make the Decision Explicit
-
APR 29, 2026
- A Backlog State Should Tell You What Happens Next
- Defer Work With a Trigger, Not a Vibe
- Do Not Defer on a Vibe: Use Named Decision Triggers
+8 more on APR 29, 2026
- Do Not Make People Play Detective Just to Resume Work
- I Built a Triage Cockpit Because Context Switching Was Eating the Day
- Parked Is Not the Same as Waiting
- Stop Making People Rebuild Context Before They Decide
- The day my notes became infrastructure
- When Work Memory Lives in One Person's Head
- When Working Notes Become Operational Infrastructure
- Write the Handoff Before You Close the Session, or Pay to Rebuild State Next Time
-
APR 28, 2026
- A Debug Flag I Flipped Three Years Ago Was Still On When I Shipped the Fix
- A Debug Flag Left Off for Years Made Every Save Look Successful and Do Nothing
- A Page Looked Safe to Publish, but Identifying Details Survived in Its Labels
+23 more on APR 28, 2026
- A Plausible Output Needs a Baseline
- A Sleeping Branch Needs a Re-Entry Check
- A Suggestion Is Not an Assignment
- A var EDIT_DATABASE = false Sat in a Branch for 2.5 Years. Then We Shipped It.
- AI Can Only Say "Suggested": The Invariant That Keeps AI Triage From Flooding Your Team
- All Seven Reviewers Passed. The Writing Was Worse. Here's What Went Wrong.
- Before You Merge a Long-Idle Branch, Audit Its Temporary Scaffolding
- Before You Sort Work, Check Whether It Still Exists
- Closing a Ticket From a Machine That Never Cloned the Repo
- Give People a Preview Before a Write Button
- How to Triage an 880-Ticket Backlog Without Deleting Real Work
- I Closed a Finished Ticket From a Computer That Had Never Cloned the Repo
- I Was About to Write a digest_job.py. The Platform Already Shipped It.
- If Your AI Workflow Only Exists in Comments, You Have Exhaust
- More Review Does Not Always Make the Work Better
- Reverse-Engineering Claude Code's Session JSONL (So You Can Mine Your Own Transcripts)
- The Most Restricted Tool in My AI Pipeline Is the One That Writes the Output
- When a Workflow Gap Needs an Operator Tool: Preview, Policy, and an Audit Trail
- When Important Work Only Lives in Comments
- When the Paywall Flow Is Broken, Build the Staff Tool, With Dry-Run, a Cap, and an Audit Row
- Why Publication-Time Redaction Is Not a Privacy Program
- Your Committed Output Is a Free Golden Test
- Your JIRA Session Won't Cross Into an Iframe. Here's the Reused-Popup Workaround.
-
APR 27, 2026
-
APR 25, 2026
-
APR 24, 2026
-
APR 23, 2026
- "Bamboo is broken" was wrong: a deploy that races the filesystem under CPU pressure
- A Deploy Said a File Was Missing Because the Machine Was Already at 73 Percent CPU
- A Migration Became the Audit I Had Never Run
+11 more on APR 23, 2026
- An Auto-Approval Should Never Erase Curated Work
- Moving a Repository Turned Up a Backup That Had Not Run in Three Weeks
- My backups had been dead for three weeks. I found out by accident.
- Single-currency database, dual-currency checkout: adding CAD without a schema change
- The Auto-Approval Feature That Quietly Rewrote Curated Data
- The Backup That Had Not Run for Three Weeks
- The bot-swarm that broke the playbook: URL fan-out beats top-IP-by-volume
- The decorative database: when your blocklist table isn't actually on the request path
- The fastest fix was blocking the bot by name
- The UA blocklist is the right-sized fix for an identified crawler (and the wrong one for a swarm)
- UTC logs, a local clock, and the canary request: timezone discipline in an incident
-
APR 22, 2026
-
APR 21, 2026
-
APR 20, 2026
-
APR 19, 2026
-
APR 17, 2026
Show the rest of April (56 more posts)
-
APR 16, 2026
-
APR 15, 2026
-
APR 14, 2026
-
APR 13, 2026
-
APR 12, 2026
-
APR 11, 2026
-
APR 10, 2026
- A `?prototype=1` Flag and 23 Commits: Prototyping a Redesign in Production Code
- A Checkout Redesign Looked Finished Until the Total at the Bottom Stopped Adding Up
- A Documentation Example Inside a Code Comment Broke an Old ASP Page's Parser
+19 more on APR 10, 2026
- A Green Deploy Is Not Proof the Right Change Is Live
- A New Page Slipped Past a Feature Gate That Was Already Supposed to Cover It
- A Pricing Change Is Not Real Until Its Rules Are Clear
- A Rate Limiter Kept Locking Out a Real Admin, Counting Our Own Redirects as an Attack
- A Security Check Can Hurt Good Users When Its Signals Are Wrong
- 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
- I Almost Built an Entitlement System for a Feature That Was Already a Page
- My AI Agent's Memory Was Per-Folder, So My Clones Never Learned From Each Other
- My Fix for a System Freeze Caused Its Own 16-Minute Freeze
- Our 200-Team Plan Label Was Actually Three Different Purchases Bundled Into One Price
- Shared AI Memory Needs a Shared Home
- The 1973 Date That Wasn't in the Schedule
- The attacker was our own redirect logic
- The Bundle-Ceiling Model: Separating Subscription and Per-Event Cost
- The call was coming from inside the house
- The Pricing Rewrite Only Got Real When I Wrote the Gates
- The rate-limiter that banned our power users: 302 to 200 redirects look like an attack
- Why schedules broke around March 4, 1973: a getTime() digit-count sort bug
-
APR 9, 2026
-
APR 8, 2026
-
APR 6, 2026
-
APR 5, 2026
-
APR 4, 2026
-
APR 3, 2026
-
APR 2, 2026
-
APR 1, 2026
March 2026
9 POSTS-
MAR 31, 2026
-
MAR 28, 2026
-
MAR 27, 2026
-
MAR 25, 2026
- 26 QUIET DAYS
February 2026
60 POSTS-
FEB 27, 2026
- A 47,490-line JavaScript file and what it tells you about a profitable legacy app
- A Fix Is Not Finished Until Someone Sees It Work
- A New Dropdown for Choosing a Child Event Kept Sending Work to the Parent Account
+13 more on FEB 27, 2026
- A New Feature Can Reveal an Old Assumption
- A New Feature Is the Best Fuzz-Tester for Your Existing Data Model
- After Picking a Child Event, the Site Linking Screen Kept Offering the Parent's Leagues
- Ask Before a System Makes a Choice for Someone
- Carry Your State in the URL, Then Actually Carry It: The Dropped Query Param
- Choosing a Sub-Account Kept Resetting Itself Every Time I Clicked Into an Item
- GetAccountFilter and the Case for an Explicit Context You Can Override
- Hand-rolled hydration: passing server state to the browser with no framework
- Routing Logic That Does Work on the Way In: Redirect, Auto-Select, or Prompt
- The ambient-global bug: when \"current account\" is a mutable global 100 call sites read
- The ambient-global bug: when current account is a mutable global your whole app reads
- The most valuable line in an agent's ruleset: verify the fix in the browser before claiming it's fixed
- When a Default Hides a Decision You Still Need to Make
-
FEB 26, 2026
- A Client Tree-Walk That Was Really a Server Business Rule
- A Crowded Item Page Made People Read Everything to Answer One Question
- An Evening of Progressive Disclosure: Four Commits to Hide Everything Behind 'Details'
+10 more on FEB 26, 2026
- Do Not Make Every New Session Start From Guesswork
- Four Different Parts of the Code Each Guessed a Tournament's Sport, and Disagreed
- Four Status Badges on Every Row Hid the One Thing I Actually Needed to Know
- Moving Claude Code Off Your C: Drive: The 12.4 GB VM Bundle and the UWP Permission Wall
- Our Note Search Kept Ranking the Closest Text Match Over the Most Urgent Note
- Reworking a vector-retrieval scoring formula: stop letting raw similarity be 100% of the base
- The Duplicated-Derivation Bug: One Fragile Expression in Four Queries
- Trading Badge Soup for One Human Sentence
- When the Delete Button Asked the Wrong Question
- Writing an AI_CONTEXT.md So Your Assistant Stops Rediscovering Your Codebase
-
FEB 24, 2026
- 'Newest First' Is a Re-Priority Problem, Not an ORDER BY
- A Coding Assistant Kept Editing a File the Next Build Would Overwrite
- A Coupon Changed the Checkout Price, but the PayPal Message Beside It Kept Quoting the Old One
+17 more on FEB 24, 2026
- A New Request Should Not Quietly Undo Everyone Else’s Order
- A Text Editor's Focus Event Was Firing Before Anyone Had Clicked Into It
- A Tiptap Editor That's Invisible Until You Add ProseMirror's Base CSS
- A Work Metric Should Count the Work Once
- A Working Text Editor Had No Visible Box Because One CSS File Was Missing
- AI Mutations Aren't Optimistic-UI Candidates: Make the 'Analyzing' State Honest
- An AI Result Is Not Ready Just Because It Is Saved
- Every AI Feature Needs a Safe Off Switch
- Five New Report Pages Meant Nothing Until the Numbers Could Be Trusted
- MOCK_INFERENCE=1: ship every LLM feature with an env-var kill switch on day one
- PayPal Pay-Later Messages Won't Re-Render, So Destroy the Node and Recreate It
- Same SHAs in Two Repos: Why Commit-Count Metrics Lie in a Clone Workflow
- Shipping a Whole Analytics Suite Into a Legacy ASP Admin
- Six Production Releases in One Day: Anatomy of a Hotfix Train
- Six Small Production Releases in One Afternoon, Each One Safe to Undo Alone
- Teaching the AI to Find the Real Source File: .cursor/rules as a Compiled-Asset Map
- Tiptap v3 Fires onFocus During Init, So Subscribe to the DOM Instead
- 5 QUIET DAYS
-
FEB 19, 2026
- A Browser Permissions Change Broke Our Copy Button, With No Release and No Warning
- A Date Stamped Into a File Name Was the Whole Cache Busting Plan
- A fluent DOM builder for legacy ASP: modernize without a rewrite
+7 more on FEB 19, 2026
- A Wrong Bracket Link Was Showing a Full Internal Error Page Instead of Not Found
- Cache-Busting With No Build Pipeline: Date-Stamped Asset Filenames
- clipboard.js Named Its Global 'Clipboard'. So Did the Browser. Boom.
- One Misplaced Quotation Mark in Old Admin Page Code Turned a Simple Edit Into a Guessing Game
- Response.Redirect Blew Up the Error Page. Server.Transfer Didn't.
- Route a Change by Its Blast Radius, Not Its Size or Your Schedule
- The Size of a Change Does Not Tell You How Carefully to Release It
- 7 QUIET DAYS
-
FEB 12, 2026
- 15 QUIET DAYS
January 2026
20 POSTS-
JAN 28, 2026
- A Payment Receipt Used the Gateway's Transaction Number Instead of Our Invoice Number
- A Trusted Gateway POST Is Still a Public Endpoint
- I Put a Public Page on the Live Site Just to See What the Payment Gateway Was Actually Sending
+5 more on JAN 28, 2026
- 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
- Stripe Needs a Post-Back, Authorize.Net Doesn't: One Page, Two Flow Shapes
- While Fixing a Receipt Bug, I Found Our Payment Page Would Take Data From Anyone
- x_trans_id Is Not Your Invoice Number: An Authorize.Net Direct-Post Bug
-
JAN 27, 2026
- 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
- A Handwritten Recovery List Was Missing Rows a Real Database Audit Found
+9 more on JAN 27, 2026
- After the Recovery Finished, the Page That Ran It Was Still Live
- Don't leave the recovery gun loaded: scrubbing prod constants at end of day
- From 3.5 million round-trips to hundreds: batching a remap with temp tables
- I Wrote a 1,477-Line Site-Recovery Engine in Classic ASP: Copy First, Remap IDs Second
- N Drifting Copies Share One Bug: The Legacy Consolidation Thesis
- Recovering a 327-Team League: Plan-Run Before You Touch Prod
- The Recovery Job That Would Have Sent 3.5 Million Messages to the Database, One at a Time
- The Recovery Script That Printed Its Plan Before Touching One Row
- Three Sport-Specific Recovery Scripts Were Copies of the Same Old Bug
- 100 QUIET DAYS
October 2025
1 POST-
OCT 19, 2025