close

DEV Community

Taylor Wang profile picture

Taylor Wang

Exploring the intersection of AI and web development.

Location Sydney, Australia Joined Joined on 
Retries Are a Token Multiplier: A Ledger-First Test Plan for Agent Budgets

Retries Are a Token Multiplier: A Ledger-First Test Plan for Agent Budgets

Comments
6 min read
Who Kills Your Background Worker, and How Soon? A Shutdown Test Plan

Who Kills Your Background Worker, and How Soon? A Shutdown Test Plan

Comments
5 min read
A Truncated Stream Can Still Look Like a Finished Answer: An Illustrative Completeness Contract

A Truncated Stream Can Still Look Like a Finished Answer: An Illustrative Completeness Contract

Comments
5 min read
A Test Plan for Model-Assisted Code Review Gates: Fixtures, Redaction, and Fail-Closed Checks

A Test Plan for Model-Assisted Code Review Gates: Fixtures, Redaction, and Fail-Closed Checks

BERJAYA 1
Comments
5 min read
48-Hour Field Notes: My Free Server Kept Running — My Lease Expired Mid-Completion

48-Hour Field Notes: My Free Server Kept Running — My Lease Expired Mid-Completion

Comments
5 min read
48-Hour Field Notes: My Cron Job Was Idempotent Until the Container Got Replaced

48-Hour Field Notes: My Cron Job Was Idempotent Until the Container Got Replaced

Comments
6 min read
48-Hour Field Notes: Every Record Parsed Cleanly and the Reconciliation Was Off by a Cent

48-Hour Field Notes: Every Record Parsed Cleanly and the Reconciliation Was Off by a Cent

BERJAYA 1
Comments
6 min read
The First Call Is Not Your Latency: A Warm-Up Gate You Can Reproduce

The First Call Is Not Your Latency: A Warm-Up Gate You Can Reproduce

Comments
6 min read
48-Hour Field Notes: I Moved a Nightly Job Onto a Free Server and Timed What the Cold Boot Ate

48-Hour Field Notes: I Moved a Nightly Job Onto a Free Server and Timed What the Cold Boot Ate

Comments
6 min read
48-Hour Field Notes: My "Slow" Free Endpoint Was Three Different Clocks in One Request

48-Hour Field Notes: My "Slow" Free Endpoint Was Three Different Clocks in One Request

BERJAYA 1
Comments
7 min read
48-Hour Field Notes: My Batch Job Survived the Restart but Came Back With a Checkpoint I Couldn't Trust

48-Hour Field Notes: My Batch Job Survived the Restart but Came Back With a Checkpoint I Couldn't Trust

BERJAYA 1
Comments
7 min read
48-Hour Field Notes: The Stream Looked Healthy Right Up Until the Proxy Hung Up

48-Hour Field Notes: The Stream Looked Healthy Right Up Until the Proxy Hung Up

Comments
5 min read
48-Hour Field Notes: My JSON Schema Passed While My Enum Quietly Drifted

48-Hour Field Notes: My JSON Schema Passed While My Enum Quietly Drifted

BERJAYA 1
Comments 1
6 min read
48-Hour Field Notes: Same Prompt, Two JSON Shapes, and a Validator That Passed Both

48-Hour Field Notes: Same Prompt, Two JSON Shapes, and a Validator That Passed Both

Comments
8 min read
48-Hour Field Notes: A Free Model Swap Broke My Parser, So I Built a Schema Gate

48-Hour Field Notes: A Free Model Swap Broke My Parser, So I Built a Schema Gate

Comments
6 min read
48-Hour Field Notes: I Built a Token Ledger Before Pointing a Free LLM Tier at a Loop

48-Hour Field Notes: I Built a Token Ledger Before Pointing a Free LLM Tier at a Loop

Comments
6 min read
Field Notes: Temperature 0 Did Not Reproduce My Outputs, so I Built a Drift Ledger

Field Notes: Temperature 0 Did Not Reproduce My Outputs, so I Built a Drift Ledger

Comments
6 min read
48-Hour Field Notes: I Raised Concurrency Until the Queue, Not the CPU, Told Me to Stop

48-Hour Field Notes: I Raised Concurrency Until the Queue, Not the CPU, Told Me to Stop

Comments
6 min read
48-Hour Field Notes: My Client Timed Out, the Server Finished the Work, and My Batch Ran Twice

48-Hour Field Notes: My Client Timed Out, the Server Finished the Work, and My Batch Ran Twice

Comments
5 min read
My Laptop and the Free Server Disagreed About Which Day It Was

My Laptop and the Free Server Disagreed About Which Day It Was

Comments 1
6 min read
The Prompt Canary: Catching Silent Input Truncation Before Your Nightly Job Ships Bad Output

The Prompt Canary: Catching Silent Input Truncation Before Your Nightly Job Ships Bad Output

Comments
6 min read
My Retry Wrote the Row Twice, and the Idempotency Key Was the Bug

My Retry Wrote the Row Twice, and the Idempotency Key Was the Bug

Comments 1
6 min read
48-Hour Field Notes: My Resume Saved a Position Instead of a Record, and Nine Inputs Went Missing

48-Hour Field Notes: My Resume Saved a Position Instead of a Record, and Nine Inputs Went Missing

Comments
6 min read
48-Hour Field Notes: My Per-Call Timeout Was Longer Than the Job Window Itself

48-Hour Field Notes: My Per-Call Timeout Was Longer Than the Job Window Itself

Comments
5 min read
48-Hour Field Notes: My Readiness Check Returned 200, Then the Batch Hit a Cold Model Server

48-Hour Field Notes: My Readiness Check Returned 200, Then the Batch Hit a Cold Model Server

Comments
6 min read
48-Hour Field Notes: I Built a Replay Harness Before Trusting a Free Model in a Nightly Job

48-Hour Field Notes: I Built a Replay Harness Before Trusting a Free Model in a Nightly Job

Comments
5 min read
Nine Probes I Run Before a Model-Backed Batch Job Leaves My Laptop

Nine Probes I Run Before a Model-Backed Batch Job Leaves My Laptop

Comments
5 min read
48-Hour Field Notes: I Compared Two Runs Across Two Days Without Checking Which Model Served Them

48-Hour Field Notes: I Compared Two Runs Across Two Days Without Checking Which Model Served Them

Comments
6 min read
48-Hour Field Notes: The Retry Loop Cost More Than the Model Did

48-Hour Field Notes: The Retry Loop Cost More Than the Model Did

Comments
7 min read
My Worker Exited 0 With Jobs Still Marked "Running", and Nothing Retried Them

My Worker Exited 0 With Jobs Still Marked "Running", and Nothing Retried Them

Comments
6 min read
48-Hour Field Notes: My Output File Looked Complete Because I Streamed Straight Into It

48-Hour Field Notes: My Output File Looked Complete Because I Streamed Straight Into It

Comments
6 min read
48-Hour Field Notes: I Ran a Tiny AI Code-Review Job on Free Model Access and a Free Server

48-Hour Field Notes: I Ran a Tiny AI Code-Review Job on Free Model Access and a Free Server

Comments
6 min read
48-Hour Field Notes: My Chunker Cut JSON in Half, and Every Retry Made It Worse

48-Hour Field Notes: My Chunker Cut JSON in Half, and Every Retry Made It Worse

Comments 1
7 min read
48-Hour Field Notes: Every Unparseable Alert Became 'Low' and Nothing Paged Me for 48 Hours

48-Hour Field Notes: Every Unparseable Alert Became 'Low' and Nothing Paged Me for 48 Hours

Comments
6 min read
Two Duplicate Rows in 48 Hours: My Unique Index Treats NULL as a New Value

Two Duplicate Rows in 48 Hours: My Unique Index Treats NULL as a New Value

Comments
5 min read
48-Hour Field Notes: My Latency Numbers Were Wrong Because I Started the Clock in the Wrong Place

48-Hour Field Notes: My Latency Numbers Were Wrong Because I Started the Clock in the Wrong Place

Comments
7 min read
48-Hour Field Notes: My 30-Second Timeout Didn't Cancel Anything, and the Server Logged Three Requests

48-Hour Field Notes: My 30-Second Timeout Didn't Cancel Anything, and the Server Logged Three Requests

Comments
6 min read
48-Hour Field Notes: My Homemade Eval Set Was Scoring My Prompt, Not the Model

48-Hour Field Notes: My Homemade Eval Set Was Scoring My Prompt, Not the Model

Comments
6 min read
48-Hour Field Notes: I Ramped Worker Threads From 1 to 12 and Watched Throughput Fall Off a Cliff at 8

48-Hour Field Notes: I Ramped Worker Threads From 1 to 12 and Watched Throughput Fall Off a Cliff at 8

Comments
6 min read
48-Hour Field Notes: I Crash-Tested My Resumable Batch Job Before Trusting a Free Box

48-Hour Field Notes: I Crash-Tested My Resumable Batch Job Before Trusting a Free Box

Comments
6 min read
48-Hour Field Notes: My Queue Drained to Zero and the Work Wasn't Done

48-Hour Field Notes: My Queue Drained to Zero and the Work Wasn't Done

Comments
6 min read
48-Hour Field Notes: My Prompt Budget Was in Characters, and the Overflow Never Raised

48-Hour Field Notes: My Prompt Budget Was in Characters, and the Overflow Never Raised

Comments
5 min read
48-Hour Field Notes: I Batched Two Items Per Call and Lost Track of Which Answer Belonged to Which Input

48-Hour Field Notes: I Batched Two Items Per Call and Lost Track of Which Answer Belonged to Which Input

Comments
5 min read
48-Hour Field Notes: The Model Was Fast — My Connection Setup Was the Queue

48-Hour Field Notes: The Model Was Fast — My Connection Setup Was the Queue

Comments
5 min read
48-Hour Field Notes: My Overnight Batch Forecast Used the Mean and Ignored the Restart Tax

48-Hour Field Notes: My Overnight Batch Forecast Used the Mean and Ignored the Restart Tax

Comments
5 min read
48-Hour Field Notes: My Free Box Looked Slow Until I Logged the Gap Between Requests

48-Hour Field Notes: My Free Box Looked Slow Until I Logged the Gap Between Requests

Comments 1
6 min read
48-Hour Field Notes: I Gated a Free-Model Batch Job on Agreement Rate, Not on Schema

48-Hour Field Notes: I Gated a Free-Model Batch Job on Agreement Rate, Not on Schema

Comments
4 min read
48-Hour Field Notes: My Stream Died Mid-Object and I Re-Asked the Model — That Was the Bug

48-Hour Field Notes: My Stream Died Mid-Object and I Re-Asked the Model — That Was the Bug

Comments
5 min read
48-Hour Field Notes: The Free Box Restarted, So I Made Every Model Call a File on Disk

48-Hour Field Notes: The Free Box Restarted, So I Made Every Model Call a File on Disk

Comments
6 min read
My Model Picker Only Checked That the Name Existed. Three Probes Said Otherwise.

My Model Picker Only Checked That the Name Existed. Three Probes Said Otherwise.

Comments
7 min read
48-Hour Field Notes: My Job Had 30 Seconds. I Gave the Model 8 and Kept the Rest.

48-Hour Field Notes: My Job Had 30 Seconds. I Gave the Model 8 and Kept the Rest.

Comments
6 min read
48-Hour Field Notes: One Timeout Value Hid Two Different Failures

48-Hour Field Notes: One Timeout Value Hid Two Different Failures

Comments
7 min read
48-Hour Field Notes: My Oldest Answer Won the Cache Because I Trusted Arrival Order

48-Hour Field Notes: My Oldest Answer Won the Cache Because I Trusted Arrival Order

Comments
5 min read
48-Hour Field Notes: I Built a Boot Beacon Because My Free Server Never Said Goodbye

48-Hour Field Notes: I Built a Boot Beacon Because My Free Server Never Said Goodbye

Comments
6 min read
48-Hour Field Notes: Every Restart Restarted My Batch Job, So I Added Leases

48-Hour Field Notes: Every Restart Restarted My Batch Job, So I Added Leases

Comments
6 min read
48-Hour Field Notes: The Job Died at Minute 47 — Now It Leaves a Heartbeat Ledger

48-Hour Field Notes: The Job Died at Minute 47 — Now It Leaves a Heartbeat Ledger

Comments
6 min read
48-Hour Field Notes: A Crash Mid-Batch Proved My Queue Had No Memory

48-Hour Field Notes: A Crash Mid-Batch Proved My Queue Had No Memory

Comments
6 min read
48-Hour Field Notes: I Stopped Asking "Did It Finish?" and Started Hashing Inputs

48-Hour Field Notes: I Stopped Asking "Did It Finish?" and Started Hashing Inputs

Comments
5 min read
48-Hour Field Notes: Same Prompt, Same Code, Different Answer — So I Built a Replay Cassette

48-Hour Field Notes: Same Prompt, Same Code, Different Answer — So I Built a Replay Cassette

Comments
7 min read
48-Hour Field Notes: My JSON Check Passed Every Run — Then I Counted the Keys

48-Hour Field Notes: My JSON Check Passed Every Run — Then I Counted the Keys

Comments 1
7 min read
loading...