Haenginro Lab

Haenginro Lab / Writing

Records that stay close.

Short, practical notes from real sessions — what was built, what broke, and what changed as a result.

Thirteen Times Slower, Cause Unproven

A video job that normally takes under five minutes ran past an hour on a shared GPU — and my first correction was wrong too.

The Grid Was Rebuilding Itself

Blank cells while scrolling weren’t a lazy-loading problem — the layout was torn down on every page append, and the first measurements were an artefact of a backgrounded tab.

Zero Results Looks Exactly Like a Quiet Day

A collector ran green for 685 rounds while bringing back nothing, because the site it scraped had quietly replaced its front end.

The Selector That Learned to Flag Itself

After a collector went quiet for a day without ever raising an alarm, the rebuild added a way for it to say, on its own, when the page had stopped matching what it expected.

Learning an API From Its Rejection Slips

A first real listing through a marketplace’s seller API, where the rules that mattered only ever appeared as refusals.

Most of My Failures Weren’t Failures

A pipeline with 168 logged failures turned out to have 44 — and the real ones traced back to an unsigned licence agreement and two bugs that ate their own error messages.

My LoRA Only Learned How to Stand

A character fine-tune held up at full strength, leaked an untrained prop into the frame, and failed every pose its training set never showed.

The Detector Passed All Four. I Liked One.

An automated collapse check cleared four generated video clips with no flags. Watching them, only one actually looked good.

When the Average Lies

Two image models scored a near tie overall — until the results were split by subject, and an AI judge turned out to have a favorite.

The Deploy That Wouldn't Deploy

Pushes kept landing but the live site never changed. The cause wasn't caching — it was a routing rule stuck on an old build.

The Header Kept Naming the Old Model

Moving an image-reading job to a different machine took one database value. The screen that displayed which model was reading kept showing the retired one.

I Told the Judge What I Was Looking For

One line in a vision model’s prompt flipped 25 of 30 answers, every one in the direction I was hoping to find.

A Transfer Protocol That Doesn't Lie About Being Done

Building a file-transfer tool that verifies every copy before it trusts it, then testing it by killing the transfer mid-way.

Three Fine-Tunes, Trained on One Word Each

A missing command-line flag meant a training script had never once read its caption files — and three earlier character fine-tunes had all been trained on a single class-token word.

The Bigger Model Translated Worse, Then Skipped the Ending

Swapping a stub translator for a real local model meant testing four sizes on the same page — and the largest one was both slower and wrong more often.

The Menu Said Two Displays and Listed Three

The count came from live state and the list came from memory — and the IDs the list remembered had been reassigned.

Stopping the Scheduler Doesn’t Stop the Work

A fix the running process never loaded, orphaned jobs that outlived their scheduler, and a deadline check built on a one-run estimate.

The Instrument Refuted Me on Its First Day

A new observation layer overturned the previous day’s conclusion: twelve confirming experiments had all shared one random seed.

Not a Ban, a Checkpoint

A publishing API locked me out for fourteen hours. It wasn’t the file format and it wasn’t rate limiting, and the failing read-only calls were the clue.

The Exchange Rate That Stopped Moving

A daily newsletter reported 0.00% change three mornings running — then wrote a paragraph explaining the stability.

A Keyword Tool Only Measures Demand

Its most promising column turned out to be an advertising metric, most of the exports were silently truncated, and the supply half of the question had no source at all.

Correct Math, Unbuyable Answer

A cross-border arbitrage screener’s very first result was a genuine 132% return on a camera sold for parts — correct arithmetic on a listing nobody should buy.

Running, but Making Nothing

The line was ready to consume work and made nothing for 9.6 hours because automatic supply was still off.

The Image With a Video Filename

A PNG named like a video showed why file contents, names, and roles belong in separate fields.

The SVG Only the Browser Could Read

The web preview worked, but the saved diagram failed in desktop viewers until the export rendered its labels differently.

Six Hundred Appearances, 194 URLs

A collector needed stable identities before it could correct its own decisions: 600 kept appearances reduced to 194 distinct URLs.

The 72GB Nobody Noticed

A backup tool quietly moved 72.5GB off a machine, and the monitor built to catch the next one worked perfectly by hand and reported nothing when run unattended.

The Browser That Quietly Dropped the File

A drag-and-drop feature looked like an app bug until a deliberately unrelated control tile proved the browser itself discards a file mid-drag between two web pages.

The Easy Benchmark Had No Winner

Three vision models passed an easy image test. Harder questions on the same images overturned my choice of the largest one.

The Quantized Model Couldn’t See

A compressed local vision model passed every text benchmark and then calmly reported that no image had been sent — the third build in a row where compression had silently broken the one thing nobody benchmarks.