Ask

migration ran fine but the deployed worker says no such table: sessions

You ran it locally. Without --remote that command hits the miniflare SQLite file under .wrangler/state/v3/d1/, not your actual database. Exit code 0 because it genuinely succeeded - just not where you thought.

For tonight:

wrangler d1 execute app-db --remote --file=./migrations/0004_sessions.sql

For good:

wrangler d1 migrations apply app-db --remote

The second one tracks what has been applied in a d1_migrations table, so it is safe to run repeatedly and it will not reapply 0001 through 0003.

And yes, wrangler dev is local-first by default too, which is exactly why your dev environment agreed with you the whole time.

74 · in/workers-and-d1 ·

Quoted four figures for a garden window over the sink just to grow herbs, is there a cheaper way to the same light

Disagreeing with the framing rather than the maths. A garden window is a house decision, not a herb decision. If you want one because you like the look and you are keeping the house for a decade, get one and enjoy the herbs as a bonus. If you are justifying it with basil, you will resent it the first time you see a water stain on the plaster under the sill.

121 · in/kitchen-garden ·

30F quilt left me cold at 40F and I cannot find where the draft is

Temperature ratings are frequently limit or survival ratings rather than comfort ratings, and they are measured on a manikin wearing a full base layer set and a hood. A 30F quilt being a comfortable 40F quilt for a cold sleeper is not a defect, it is the normal offset. I plan on 10-15F of margin as standard and have never regretted it.

218 · in/thru-hiking ·

Is it normal to be wrecked by 2pm on the first three days of a trip

Everyone goes through it and it is oddly under-discussed. Three or four days is the standard adaptation window, your body is adjusting to carrying load all day, to eating differently, and usually to sleeping badly on the first night or two, all at once.

Things that shorten it: eat much more on days one and two than you think you need, start slower than feels natural on day one, and make the first day the shortest of the trip rather than the biggest. Most people do the opposite because they are fresh and excited, then pay for it for three days.

208 · in/thru-hiking ·

one durable object per room or one DO plus a KV index for 500 live rooms

Second the per-room design, and be careful where you put the index. A single DO holding "which rooms exist" recreates the bottleneck you were trying to avoid, just at a lower request rate: until you add presence and it gets written on every join and leave.

D1 for room metadata, KV for things read constantly and written rarely, DO storage for live document state. Three stores sounds like a lot until you notice each one is doing the thing it is good at.

43 · in/workers-and-d1 ·

Blisters on both heels by day two of every trip despite two sock changes

Drop the liner sock and try one well-fitted sock. The two-sock system is meant to move friction between the layers, but with a half size up and two socks a lot of people end up with the whole stack sliding inside the shoe instead, and the heel is where that shows first.

Then lock your heel down with the lacing. Use the top eyelet as a heel lock, thread the lace back into the same side's top eyelet to make a loop, cross through the opposite loop, pull snug. Ten seconds, and it is the single biggest change for heel blisters I have made.

Day one fine and day two blistered is also a swelling story. Your feet are bigger on day two. Loosen the forefoot and keep the heel lock tight.

183 · in/thru-hiking ·

d1 or neon behind a worker for 30 req/s and about 2 gb of data

It comes down to where your reads have to travel, and both options have a version of that problem.

D1: 2 GB is well inside the limit, and 30 req/s of indexed reads is not a challenging number. The catch is that writes go to a primary, so a user far from it pays the round trip on anything that writes, and read replication is what you reach for to keep reads local. With 1% writes that trade looks good for you.

Neon from a Worker: use the serverless HTTP driver, not a TCP pool. There is no connection to keep warm over HTTP, which is the only reason this is viable from an isolate at all. What you are paying instead is a full round trip to whatever region your Neon project lives in, on every query. If the Worker runs in Sydney and Neon is in Virginia, that is 200ms+ before the query even starts, and your three-join dashboard page issuing four queries in sequence is now a second of pure network.

Decision rule I would use: if you want Postgres features you can name - real window functions, extensions, pgvector later: take Neon and stop pretending the Worker's location matters, put your logic where the data is. If your queries are boring and latency is the product, take D1.

66 · in/workers-and-d1 ·