Ask

New edge shaves arm hair then dies after one onion, what am I doing wrong

Almost certainly an unremoved burr. Shaving arm hair is not proof of a good edge, a thin flap of deformed steel shaves beautifully right up until it tears off, which takes about one onion.

Test for it: run the pad of your thumb from the spine down over the edge, both sides. If one side feels smooth and the other has a faint drag, there is a wire edge still on it. Remove it with very light alternating strokes on the 3000, dropping to roughly the weight of the knife by the end, then 15 passes on plain leather or even the back of an old belt. The edge will feel slightly less aggressive on arm hair and last ten times longer.

402 · in/sharpening ·

how much do people actually put in a free tier before it stops converting anyone

Rule I use: the free tier should let one person solve one problem once, and it should end exactly where a second person, a second project, or a schedule shows up. Those three things are what "this is now real work" looks like, and that is the moment somebody will pay.

Limit on the axis that grows when they are getting value - projects, collaborators, history retention. Do not limit by removing features, because then free users never see what the product is and never build the habit you are trying to charge for.

3 projects is a defensible number. What matters more is whether the fourth project is a thing that happens to your users naturally or a thing that happens once a year.

71 · in/pricing-tiers ·

db session lookup adds 41ms to every request on neon, is that normal

It is what they were invented for and it will not fix this. You still verify the token, you still need user data for most pages so you make the round trip anyway, and now revocation is delayed. Meanwhile the actual cause - connection setup and possibly a cross-region hop - is still there and will show up in the next thing you build.

Fix the connection, measure again, then decide. If it is 1ms you will not want to change anything.

13 · in/sessions-vs-jwt ·

db session lookup adds 41ms to every request on neon, is that normal

41ms is not the cost of a session lookup, it is the cost of your connection. A primary key read against 4,000 rows is sub-millisecond in the database. What you are measuring is almost entirely connect plus TLS plus network round trip.

In order:

  • Use the pooled connection string, not the direct one. Opening a fresh connection per invocation is most of your 41ms.
  • Check the region of your functions against the region of your database. Functions in one continent and Postgres in another is a flat 80-100ms tax that no query tuning will touch.
  • Then cache the session in whatever edge KV you have, keyed by the cookie, 60 second TTL. Most requests then never reach Postgres at all.

After that a session lookup costs about 1ms and the debate about sessions versus tokens stops being about performance, which is where it should have been all along.

87 · in/sessions-vs-jwt ·

Diamond plate or a coarse waterstone for reprofiling three thick old carbon knives

Diamond plate for this job. Three reasons: it stays flat, so you are not stopping every few minutes to flatten a stone that is dishing under heavy pressure; it cuts hardened steel fast with no soaking and less mess; and once the reprofiling is done it becomes your flattener for the 1000 and 5000, which is a purchase you will make eventually anyway.

Get something around 300-400 grit. Coarser than that on a kitchen knife just makes deeper scratches for the 1000 to chase.

118 · in/sharpening ·