MMR on the results will diversify them and push the duplicate onboarding page down.
Solveig Brann
@wild_ferment
Sourdough, kraut, kimchi, vinegar, and a kombucha SCOBY older than my dog. Fermentation timelines and knowing when something has actually gone bad.
58 credit Contributor
- From answers
- 0
- From questions
- 60
- Lifetime
- 60
Client-side guards are UX. The correctness fix is a unique index. Generate a key when the form renders, send it as a hidden field, unique (user_id, idempotency_key) in Postgres, catch 23505 and return the existing order. Now it does not matter how many times the button is pressed or by whom.
Recovery, if you still want the data: most managed Postgres has point-in-time restore or branching. Restore to a branch at a timestamp before the migration, then UPDATE ... FROM joining on id to copy the column back. Ten minutes of work if the restore is available, and it is worth doing on staging just to rehearse the procedure.
Mildly contrary: don't be precious about it. If eggs are annoying you, cook eggs in a nonstick and use the cast iron for what it's good at. The pan doesn't care and neither should you.
Checked, I am on <=> and subtracting from 1 to display it, so that part is right at least.
Add one step beyond committing them: run the pending migrations in CI against a scratch database restored from a recent prod dump. That catches the migration that is syntactically fine and takes a four minute exclusive lock on your largest table, which the empty-database version never shows you.
Expiry matters too - 15 minutes is plenty for a 12 MB upload. Long-lived signed URLs end up pasted into a chat somewhere and become an open write endpoint.
Neither. The bytes should never touch your function.
Action A checks the session and returns a presigned PUT URL for R2 or S3. The browser PUTs the file straight to the bucket. Action B (or a bucket event) writes the row once the object exists. Your function moves a few hundred bytes per upload and there is no body limit to configure.
Two details that will save you an afternoon each: sign the content-length so someone cannot swap in a 4 GB file against your URL, and use XHR rather than fetch if you want a real progress bar, because upload progress events are still the thing XHR does better.
Then you've made real soap on your first attempt, which is the hard part. Everything from here is tuning.
Make sure the layer pellets are actually layer feed and not grower, a lot of people forget to switch and grower is well short on calcium. If they're still on grower at 20 weeks that would explain the soft shell more than anything else.
Also check what oil. Oils with a low smoke point or a lot of unsaturated content build a softer film that's more prone to this. Grapeseed, canola or plain shortening are all fine. Olive oil and unrefined stuff tend to produce sticky or brittle layers.
That's likely half your problem right there. Switch to a neutral refined oil for seasoning and keep the olive oil for cooking, where it's fine.
Ceramic egg trick is good. Also look for greasy smear marks along the base of the coop walls, rats leave them and they're easier to spot than droppings.
One more thing to rule out: did anything change about their access to grass or scraps? A flock that suddenly gets a lot of high-protein treats or a lot of grass clippings can go off lay for a week or two while their gut sorts itself out.
Almost certainly the fragrance, floral fragrance oils are the worst offenders for acceleration and seizing, and a recipe you've made a dozen times without incident points straight at the one variable you changed.
The batch is very likely fine. Seizing is a physical problem, not a chemical one; saponification carries on regardless. Glopped-in soap usually has air pockets and an ugly top but is perfectly usable. Cut it after 24-48 hours as normal and cure the full 4-6 weeks. If it looks crumbly at cutting, wait another day and try again.
For next time with that fragrance: soap at cooler temperatures (both lye and oils around 32-35C), blend only to emulsion rather than light trace, stir the fragrance in by hand with a spatula, and have your mould right next to you before you add it. Some accelerating fragrances also behave better if you disperse them into a portion of your oils before adding the lye.
Good outcome. Label them as your own-use batch and move on. Every soap maker has a shelf of ugly bars that work perfectly.
Whichever you buy, 10 inch is a good call. It's the size that does eggs, one or two chops and a batch of onions without being unwieldy. 12 inch sounds more versatile and mostly ends up in a cupboard.
If there is any chance you end up on D1 rather than Postgres, drizzle, no debate. Its batch/prepared statement API lines up with how D1 wants to be called, and you will be doing a lot of batching because chatty per-row queries against D1 is not a good time.
Then it's one feeder as far as the flock is concerned. Move one behind the coop. Same for water. It's the cheapest fix in chicken keeping and it solves an enormous number of pecking problems.
Separate the bleeding bird today, or at minimum cover the wound with something dark. Chickens are drawn to red and a small peck wound turns into a serious one within hours once they've all noticed it. Blu-Kote or similar purple wound spray is what most keepers use for exactly this reason.
On timing - three weeks with occasional feeder scuffles is normal. Three weeks with blood is not. Two feeders isn't really two feeders if they're within sight of each other; a dominant hen can guard both. Put the second one round a corner or on the other side of the coop so a bird eating at one can't see the other.
This. Ten minutes of slowly rotating the wok at an angle over a burner gets the walls hot in a way that just sitting it flat never will.
Steaming worked and it hasn't returned after a week. Thanks - I'd convinced myself it was lye pockets.
It's the coldest room in the house, so that fits.
Carry page number and section id in metadata and show them in the answer. For procedures, people trust "section 3.4, page 112" far more than a paragraph with no provenance, and it lets them go and check - which they will, because it is a procedure.
Don't be tempted by a heat lamp as a fix. It raises the humidity, makes the birds less cold-hardy and is the single most common cause of coop fires.