close

DEV Community

Taylor Wang profile picture

Taylor Wang

Exploring the intersection of AI and web development.

Location Sydney, Australia Joined Joined on 
My Nightly Job Ran at 3 PM. Then the Disk Forgot, and the Model Returned Prose.

My Nightly Job Ran at 3 PM. Then the Disk Forgot, and the Model Returned Prose.

Comments
4 min read
The Model Returned Valid JSON. My Pipeline Trusted It. That Was the Bug.

The Model Returned Valid JSON. My Pipeline Trusted It. That Was the Bug.

Comments
5 min read
The Provider Retried My Webhook. My Model Ran Twice. Here's the Dedupe That Fixed It.

The Provider Retried My Webhook. My Model Ran Twice. Here's the Dedupe That Fixed It.

Comments
4 min read
The Model's JSON Was Almost Valid. I Made It Grade Its Own Homework for 48 Hours.

The Model's JSON Was Almost Valid. I Made It Grade Its Own Homework for 48 Hours.

Comments
5 min read
My Batch Job Died at 3 AM. The Free Server Restarted, and My Code Had No Memory.

My Batch Job Died at 3 AM. The Free Server Restarted, and My Code Had No Memory.

Comments
4 min read
48 Hours on a Free AI Server: Three Failures, One Canary, and What I'd Repeat

48 Hours on a Free AI Server: Three Failures, One Canary, and What I'd Repeat

Comments
5 min read
SSE Fragmented My JSON Into 30 Pieces. Here's the Parser That Put It Back Together.

SSE Fragmented My JSON Into 30 Pieces. Here's the Parser That Put It Back Together.

1
Comments
4 min read
The API Said 200 OK. The Model Returned Nothing. My Code Saved It Anyway.

The API Said 200 OK. The Model Returned Nothing. My Code Saved It Anyway.

Comments
4 min read
The API Said 200. The Body Said 'Rate Limited'.

The API Said 200. The Body Said 'Rate Limited'.

Comments
6 min read
My Streaming Client Froze for Six Seconds. The Server Was Innocent.

My Streaming Client Froze for Six Seconds. The Server Was Innocent.

Comments
5 min read
My 10M Token Allowance Dropped 20% in a Day. I Built a Meter to Find the Leak.

My 10M Token Allowance Dropped 20% in a Day. I Built a Meter to Find the Leak.

Comments
5 min read
A Load-Testing Playbook for Free AI Servers (and Why I Wrote One)

A Load-Testing Playbook for Free AI Servers (and Why I Wrote One)

1
Comments
4 min read
The Model Returned Valid JSON. My Parser Still Threw a SyntaxError.

The Model Returned Valid JSON. My Parser Still Threw a SyntaxError.

Comments
4 min read
The Model Sent Perfect JSON. My Parser Only Accepted Naked JSON.

The Model Sent Perfect JSON. My Parser Only Accepted Naked JSON.

Comments
5 min read
Don't Retry Model Calls. Queue Them.

Don't Retry Model Calls. Queue Them.

Comments
5 min read
The Second Request Hung for 61 Seconds Because My Client Reused a Dead Socket

The Second Request Hung for 61 Seconds Because My Client Reused a Dead Socket

Comments
5 min read
One Timeout Became Two Model Calls. My Retry Logic Was the Bug.

One Timeout Became Two Model Calls. My Retry Logic Was the Bug.

1
Comments
5 min read
Why Did Every Model Call Timeout After an Hour of Success?

Why Did Every Model Call Timeout After an Hour of Success?

Comments
4 min read
The Model Responded Fine. My HTTP Client Was Reusing a Dead Connection.

The Model Responded Fine. My HTTP Client Was Reusing a Dead Connection.

Comments
4 min read
The Model Streamed Its Answer. My Free Server's Proxy Swallowed It Whole.

The Model Streamed Its Answer. My Free Server's Proxy Swallowed It Whole.

Comments
5 min read
The Model Replied Twice Because My Client Gave Up First

The Model Replied Twice Because My Client Gave Up First

Comments
5 min read
The Health Check Killed My Free Server Before the Model Could Answer

The Health Check Killed My Free Server Before the Model Could Answer

Comments
4 min read
The Model Remembered a Conversation the Server Had Already Forgotten

The Model Remembered a Conversation the Server Had Already Forgotten

1
Comments
5 min read
The Free Server's Clock Was 47 Seconds Fast, and Every Token Expired Early

The Free Server's Clock Was 47 Seconds Fast, and Every Token Expired Early

Comments
5 min read
The Model Replied in 900ms. My Pipeline Still Timed Out.

The Model Replied in 900ms. My Pipeline Still Timed Out.

Comments
4 min read
The Model Call Timed Out. The Free Server Was Still Booting.

The Model Call Timed Out. The Free Server Was Still Booting.

1
Comments
4 min read
The Model API Wasn't Down. My Free Server's DNS Resolver Was.

The Model API Wasn't Down. My Free Server's DNS Resolver Was.

1
Comments
5 min read
The Free Model Stopped Mid-JSON and My Code Treated It as a Perfect Answer

The Free Model Stopped Mid-JSON and My Code Treated It as a Perfect Answer

1
Comments
5 min read
One Column Was Always Empty, and the Exit Code Was Still 0

One Column Was Always Empty, and the Exit Code Was Still 0

Comments
4 min read
The JSON Was Valid. The Customer ID Was Invented.

The JSON Was Valid. The Customer ID Was Invented.

Comments
5 min read
The Cache Returned Yesterday's Answer, and the Model Wasn't Wrong

The Cache Returned Yesterday's Answer, and the Model Wasn't Wrong

1
Comments
4 min read
The Day a Support Ticket Overrode My System Prompt

The Day a Support Ticket Overrode My System Prompt

1
Comments
5 min read
The Webhook Updated the Wrong Row. The Logs Showed the Perfect ID.

The Webhook Updated the Wrong Row. The Logs Showed the Perfect ID.

Comments
5 min read
The JSON Was Valid, the Log Was Green, and the Fifth Article Vanished

The JSON Was Valid, the Log Was Green, and the Fifth Article Vanished

1
Comments
5 min read
The JSON Parsed Without Errors. The Data Was Still Wrong.

The JSON Parsed Without Errors. The Data Was Still Wrong.

1
Comments
5 min read
Exit Code 137 Was the Only Clue: My Free Server Had a Memory Ceiling I Never Measured

Exit Code 137 Was the Only Clue: My Free Server Had a Memory Ceiling I Never Measured

1
Comments
5 min read
The Free Model Caught Every Exception. My Monitoring Caught Nothing.

The Free Model Caught Every Exception. My Monitoring Caught Nothing.

1
Comments
4 min read
The Free Model Was Slow, the Gateway Gave Up, and My Webhook Ran Twice

The Free Model Was Slow, the Gateway Gave Up, and My Webhook Ran Twice

Comments
5 min read
The Retry Loop Passed Locally. On the Free Server It Became a Rate-Limit Storm.

The Retry Loop Passed Locally. On the Free Server It Became a Rate-Limit Storm.

Comments
5 min read
The Cron Job Ran on Time, Processed the Wrong Day, and Logged Nothing

The Cron Job Ran on Time, Processed the Wrong Day, and Logged Nothing

Comments
4 min read
The Free Server Wiped My SQLite Queue Overnight and the Health Check Never Noticed

The Free Server Wiped My SQLite Queue Overnight and the Health Check Never Noticed

Comments
4 min read
The Cache File Existed When I Deployed. Then the Free Server Recycled the Process.

The Cache File Existed When I Deployed. Then the Free Server Recycled the Process.

Comments
5 min read
My Batch Job Had a 100% Success Rate and a 4% Corruption Rate

My Batch Job Had a 100% Success Rate and a 4% Corruption Rate

Comments
5 min read
The Model Did Not Change: The Test Was Comparing Strings, Not Behavior

The Model Did Not Change: The Test Was Comparing Strings, Not Behavior

Comments
4 min read
The Generated Helper Passed Locally, Then Died in a Clean Container Because It Read a Global I Never Passed

The Generated Helper Passed Locally, Then Died in a Clean Container Because It Read a Global I Never Passed

Comments
5 min read
The Free Model Read Only the First 2,000 Tokens and Still Sounded Certain

The Free Model Read Only the First 2,000 Tokens and Still Sounded Certain

Comments
5 min read
Two Tenants Got the Same Free-Model Answer Because My Cache Key Ignored the System Prompt

Two Tenants Got the Same Free-Model Answer Because My Cache Key Ignored the System Prompt

Comments
4 min read
The Cache Hit Ratio Was Fine, but the Burst Still Melted the Database

The Cache Hit Ratio Was Fine, but the Burst Still Melted the Database

Comments
5 min read
A Generated SQL Query Got Faster by Returning Fewer Rows. Test That Before You Merge It

A Generated SQL Query Got Faster by Returning Fewer Rows. Test That Before You Merge It

Comments
5 min read
The Worker Kept Hitting the Old Database After the Config Was Changed

The Worker Kept Hitting the Old Database After the Config Was Changed

Comments
5 min read
A Free Model Endpoint Is an Environment, Not a Benchmark: Pin Your Prompt Contract Before You Score It

A Free Model Endpoint Is an Environment, Not a Benchmark: Pin Your Prompt Contract Before You Score It

Comments
4 min read
Recreate the Dropped Config Field Before You Trust the AI Refactor

Recreate the Dropped Config Field Before You Trust the AI Refactor

Comments
4 min read
Test the AI-Generated Test in a Throwaway Two-Version Server

Test the AI-Generated Test in a Throwaway Two-Version Server

Comments
4 min read
An Index Suggestion Is a Hypothesis, Not a Patch

An Index Suggestion Is a Hypothesis, Not a Patch

Comments
6 min read
Prove a Generated Migration Can Undo Itself Before It Touches Your Data

Prove a Generated Migration Can Undo Itself Before It Touches Your Data

Comments
4 min read
Unhandled Events, Not Broken States, Are What Kill Your State Machine

Unhandled Events, Not Broken States, Are What Kill Your State Machine

Comments
5 min read
Count the Resolver, Not the Query, to Catch a GraphQL N+1

Count the Resolver, Not the Query, to Catch a GraphQL N+1

Comments 1
4 min read
The Fake Clock Is the Part of an AI-Written Rate Limiter Worth Reviewing

The Fake Clock Is the Part of an AI-Written Rate Limiter Worth Reviewing

Comments
5 min read
Keep a Ledger of Model Failures Instead of Trusting the Release Notes

Keep a Ledger of Model Failures Instead of Trusting the Release Notes

Comments
5 min read
AI Wrote Your Idempotency Layer? Replay Requests Until It Breaks

AI Wrote Your Idempotency Layer? Replay Requests Until It Breaks

Comments
4 min read
loading...