Did exactly this last year on a similar budget. What I underestimated was how much I would use the thing I bought last and cheapest, which was a plain shoulder strap and a small bag that fits in a rucksack. The camera you take with you is the one that gets used and my first bag was so awkward that it stayed home for a month.
Corinne Yau
@bobbin_bind
I sew garments and do alterations for friends. Fitting is the real skill: everything else is just following lines.
69 credit Contributor
- From answers
- 0
- From questions
- 69
The inline object in your key is the bug. ['todos', { status, page, filters }] builds a brand new object on every render, so the key is a new reference each time and Query treats it as a new entry. Wrap it in useMemo and the 21 entries collapse to one.
The kind person who has replied six times is worth more than 200 likes. Ask them what they are stuck on and answer it properly. That is how the second one shows up.
The dual-basket thing is the air fryer version of buying a bread maker. Everyone pictures the Christmas use case and then lives the Tuesday one.
invalidateQueries only marks things stale, it does not guarantee a refetch of anything currently rendered. Use refetchQueries instead and await that - invalidate is for background correctness, refetch is for "I need the screen to be right now".
The cost people forget is the top. Frames are cheap; a 140 cm surface that isn't a flexing chipboard sheet is not. I bought a $260 frame and spent nearly as much again on a solid top, and that pairing has been rock solid for three years. Budget for both or you'll end up with a good lifter carrying a trampoline.
Add a cup of white vinegar to that soak if you want. Some people swear it sets the remaining dye, and at worst it costs you a cup of vinegar.
The as const matters more than it looks if you are on TypeScript - without it the key widens to string[] and you lose every bit of help the compiler could have given you about which invalidation matches which query.
So the buttons stay purely decorative at that point and the snap does the work?
That's a fair price and probably a modest one. Walk through what it contains: pulling the book, cleaning old adhesive off the spine without damaging the folds, repairing whatever tears turn up once you're in there, resewing or reinforcing, new endpapers, rounding and backing, making boards, covering, casing in, and then a day or two in the press between each of several stages. That's realistically eight to fourteen hours of skilled hand work spread over weeks, plus cloth, board, thread and paper. Divide £180 by that and you'll see it isn't where the money is going.
This. The rule I stole from somewhere: every entry starts with what the user can now do, and the implementation detail is allowed in the second sentence if it is genuinely interesting. Halved the length of my entries and doubled the time on page.
The exercise that works is not "which of these is expensive", it is "cancel it and see who screams". For each line write down what breaks the day it disappears and who notices. Anything where the answer is "nobody, I would find out in a month" goes.
The two you already found by forgetting you paid for them are the whole point. Set a calendar reminder for the month before every annual renewal, because annual plans are where dead subscriptions go to hide. I did this last year and killed $70 a month of things that had genuinely stopped being used, including a plan I had upgraded for one client project that ended in 2023.
The false economy for me was error tracking. I dropped to a free tier with a low event cap, it silently stopped ingesting halfway through the month, and I found out about a broken checkout from a customer. That is the one line I would pay full price for at any revenue.
That fixed it in about ninety seconds. Slightly annoyed at how obvious it is once written down - of course the throw happens before the return.
Does that apply to changing the key on a suspense query specifically, or only to route transitions? I had assumed the fallback flash was unavoidable when the key changes.
First job is not to upgrade anything, it is to make it run once, exactly as it was, so you can see what it does. Container with the old runtime pinned, install with the lockfile untouched, get it green. That gives you a reference implementation, which is the thing that makes the rewrite decision safe rather than a leap.
Sequence that has worked for me every time: pin and run, capture the output of a few real inputs and save them as fixtures, then upgrade in one deliberate step to a supported runtime, then compare against the fixtures. Node 18 went end of life in April 2025 and 20 followed in April 2026, so 22 is the sensible target and it is a two-major jump, which is usually painless for application code and painful only where native modules are involved.
On the native dependency: check whether it now ships prebuilt binaries for current versions before you spend an evening on build toolchains. That problem frequently solved itself while you were not looking.
Normal, and the depth of the crease is mostly about the leather rather than the fit. Full grain leather with a firm finish creases in a few sharp lines. Softer or corrected grain creases into many fine ones. Neither is a defect and neither is reversible.
What you can do is stop it getting worse and stop it cracking:
- shoe trees after every wear, cedar ones, put them in while the boot is still warm so the leather dries in the extended shape
- condition lightly every 15-20 wears, more in winter. A dry crease is what eventually cracks
- rotate. A day off between wears lets the leather dry properly and roughly doubles how long they look good
If you have unusually deep single creases across the whole toe and lots of movement inside, that can be too much length. A thumb's width is right though.
Every six to eight weeks in a wet winter, less in summer. Thin coat, let it sit overnight, buff it off. Over-conditioning makes leather soft and saggy so don't overdo it.
There is a middle version that works: buy the placeholders for tops, which vary most by office culture, and buy properly once for trousers and shoes, which vary least and hurt most when they are bad.
Trousers by a distance. Shoes you can try on and know in ten minutes. Trousers you find out about on day three of actually sitting in them.
Buy for the next eight weeks only, then stop and reassess. Whatever season you are in right now is the only one you can actually judge fit and comfort in, and the six month plan will change once you have seen what people in your office genuinely wear. My order was two pairs of trousers that fit properly, one pair of shoes that are not trainers, three tops, and one layer for the office temperature. That is a full working fortnight and it cost well under a third of the budget.
Genuinely did not know that and I have bought two of these since 2019. That explains why the last one felt weaker than the old one despite the box implying otherwise.
Agreed, with the caveat that going from one to two doubles your exposure to a bad year while halving your per-unit admin. Worth being honest about which of those you are actually solving for.
Six months in as a beginner, so here is the unglamorous report. My first four rolls were mostly unusable, two of them because I had the meter wrong and one because I opened the back. That is roughly ninety pounds of learning that a digital body gives you for free in an afternoon. It got much better after that and I do love it, but nobody warned me that the tuition fee is paid in rolls.
It's fixable but it's the most expensive alteration there is, typically 80-150 because the sleeve has to come off and go back on. Not worth it on a jacket under a few hundred, absolutely worth it on a good one you'll wear for a decade.
What to ask for in the shop instead: try brands cut for a narrower shoulder, and try soft-shouldered jackets with little or no pad. A structured jacket with a big pad has a fixed shoulder width that has nothing to do with yours. An unstructured or lightly padded one drapes off your actual shoulder and the 2cm problem mostly disappears.
Also ask specifically whether the model comes in a slim or drop-8 cut. Same chest, narrower shoulder and waist, and that's exactly your shape.
The claim you are thinking of comes from retrospective clinic studies of people who had been bilingual for their entire lives, comparing the age at which symptoms were first reported. That is a very different population from someone starting an app at 65, and the finding has been argued about hard - some prospective cohorts have not reproduced it, and the confounds are ugly, because lifelong bilingualism in many samples correlates with migration, education and social network size, all of which independently affect when people present at a clinic. My honest reading is that it is a live scientific question rather than a settled fact, and that nothing in it supports a claim about starting late. Also, and not as a downer: if she has an actual memory worry, that is a GP conversation, not a study one.