Every launch script I have ever written eventually needed a resume flag. Assume the process dies at 40% and design for it on line one. Same lesson as any batch job, it just hurts more when the batch is people.
Johanna Kessel
@slowtrainjo
Rail travel across Europe, booked mostly on national operator sites rather than aggregators. Seat reservations, sleeper cars, and the timetable quirks that ruin itineraries.
56 credit Contributor
- From answers
- 0
- From questions
- 57
- Lifetime
- 57
Different angle: for read-heavy paths use the HTTP driver and hold no connection at all. Neon's serverless driver over fetch, either through the Prisma driver adapter or drizzle's neon-http, turns a query into a request. No pool, nothing to exhaust, works on edge runtimes.
The catch is interactive transactions: you cannot hold one open across statements over HTTP, so anything transactional stays on a pooled TCP connection.
Three hours on CI is not a wasted week if you genuinely never touch it again. It becomes wasted when it reappears monthly, which is what a cache configuration reliably does.
One thing that can genuinely narrow the band further: if you shortened the embedding dimensions to save space, you compressed away some of the separation along with the storage. Fine trade for speed and disk, but do not then be surprised that everything looks similar.
Film one session a month from the side, at hip height, and watch it back at double speed. That's most of the value of a teacher's eye for the price of propping your phone on a book.
What it showed me: my back foot was turning out in every lunge, my head was dropped in every plank, and my left side was doing about eighty percent of what my right side was. None of those were things I could feel. All three were obvious in ten seconds of video. I've since taken classes and they mostly confirmed what the camera had already told me.
That is uncomfortably accurate - I could write down my sequence from memory because it's basically identical every morning.
One session framed as 'check what I've built' rather than 'teach me something' is a much easier thing to book than I'd made it in my head.
Rebuilt as hnsw, m=16, ef_construction=64. Build took 26 minutes on 820k rows. p95 is 41ms at ef_search=40 and 96ms at 200, and recall on our eval set went from 0.71 to 0.92. That is a strictly better index in every column, which does not happen often.
Multipart when you eventually support 500 MB files, not now. At 12 MB a single PUT with a retry is the whole feature.
The gap is not really in benchmark numbers, it is in sustained load. My desktop holds its all-core clock indefinitely; the laptop that matched it for the first ninety seconds of a compile settled about a third lower once the fans caught up, and that lower number is the one you live with. Buying a laptop that genuinely holds a desktop-class compile cost me roughly double what the desktop did. If your actual pain is an eleven minute build, the desktop fixes that far more cheaply.
Migrated a similar setup and the before-and-after that convinced my colleagues was not tokens per second, it was the p95 wait. Under the old setup the fifth simultaneous request waited for four others to finish; afterwards everyone got their first token quickly and the whole thing felt fast even though nobody's individual generation got dramatically quicker. If you are being judged on how it feels rather than how it benchmarks, that is the number to measure.
400 emails, 2 replies, one incinerated domain. The list was the problem long before the deliverability was.
Third option, unpopular: neither. I wore trackers for years and my sleep improved when I stopped, because I stopped starting the day being told by an app whether I had slept well before I had formed my own opinion. There is a documented pattern of people getting anxious about their sleep scores and sleeping worse for it. A fixed wake time, a notebook and two weeks of honest notes gave me every actionable thing the ring gave me and none of the score anxiety.
Try short stories or essays for a while. Ten pages is a complete unit, so falling asleep afterwards is a finished thing rather than an interruption, and you stop losing the thread of a plot across a week. Once the habit is back, novels get much easier.
Also worth checking the boot or spare wheel well while you are at it. Water gets in through a tail light seal surprisingly often and then evaporates into the same cabin air.
We booked a day with a band that had not rehearsed to a click and got one and a half songs out of it. The drummer had never played to a metronome for a whole take before and it fell apart around the tempo pushes. If you go, spend the two weeks before playing to a click every rehearsal, and do not discover on the day that your songs speed up in the choruses.
Adding to this: send the engineer rough mixes with a click a week before. Ours had the session templates and rough headphone mixes ready when we arrived and it saved most of an hour.
Standalones, and the reason is exactly the risk you already named.
The failure mode of the one series plan is not boredom, it is that book two turns out to be a slog and now you have committed your whole trip to it. With five standalones, a book you dislike costs you an evening, not a fortnight.
On the weight problem: an e-reader solves this completely. Three weeks of reading in something lighter than one paperback, with a battery that lasts the trip, and no signal required once the books are downloaded. If you are attached to paper, take two paperbacks and plan to swap them at hostels or secondhand shops, which is genuinely part of the fun and I have found some odd books that way.
If you want a compromise: one long book you are confident about, plus three shorter ones. That gives you the deep immersion for the long train days and an escape hatch.
You already have both engines. Postgres does full text and pgvector does the rest, so hybrid is a query, not a service:
with kw as (
select id, row_number() over (order by ts_rank_cd(tsv, q) desc) r
from chunk, plainto_tsquery('english', $1) q where tsv @@ q limit 50
), vec as (
select id, row_number() over (order by embedding <=> $2) r from chunk limit 50
)
select id, sum(1.0/(60+r)) s from (select * from kw union all select * from vec) t
group by id order by s desc limit 50;
That is reciprocal rank fusion with k=60. No second datastore, no extra bill, and it composes with the reranker afterwards.
Drizzle on Workers, and the reasons are boring rather than ideological.
- It is plain JavaScript. No query engine to ship, no wasm, nothing that fights the size budget.
- No codegen step in the deploy path.
drizzle-kitruns when you change the schema, not on every build. - Swapping between D1, a Postgres HTTP driver and Hyperdrive is a driver import change, not an architecture change.
Prisma does run on Workers with driver adapters and people ship it. But you are carrying a wasm engine and a generate step in an environment where bundle size and startup both cost you. On a normal Node host that calculus flips and I would tell you to use whichever you already know.
Cheap probe thermometers in the basket read low because of evaporative cooling on the sensor, so take single readings with a pinch of salt. The direction is right though, most sub-100 machines never reach temperature, which is the whole point of the certification programmes.
I trained by wrist heart rate zones for about six months and got slower. Every easy run was actually moderate, because the watch under-read at the start and I sped up to reach the zone, and I never recovered properly between sessions. Bought a strap, discovered my easy pace should have been over a minute per kilometre slower, and the next block was the best I have had. If you are doing any kind of polarised plan, the strap is not optional.
We quit at $3.8k and the first thing we did with all that new time was build features, because building is comfortable and selling is not. Full-time did not fix that instinct, it just funded it for a while.
Two panels built this weekend for less than a mic cable each. The difference on the guitar track is not subtle.
I did the finish-then-vanish thing twice before it worked. What changed the third time was deciding day 31 in advance, in writing, before starting.
My plan was: the day after the challenge ends, I do fifteen minutes, and then three times a week from there. Boring, and much less than 30 consecutive days, which is exactly why it survived. The challenge got me to the point of having a mat out and a slot in the morning; the plan is what used it.
The failure mode isn't the challenge, it's that a challenge has an ending and a practice doesn't, and nobody makes you write the next line.