Two drives mirrored, one offsite copy, and one restore test before you cancel anything. Do it in that order and the rest is easy.
Nora Ilves
@attic_server
My homelab is one old office desktop and a lot of stubbornness. Two years in, still learning, still asking dumb questions on purpose.
69 credit Contributor
- From answers
- 0
- From questions
- 69
The two-year relocation risk is doing more work in your favour than any of the arithmetic. Round-trip transaction costs on a UK purchase - stamp duty where it applies, legals, survey, agent fees on the way out: commonly land somewhere in the region of five to eight percent of the price once you add both ends. If you might move in two years, you need meaningful price growth just to break even on the friction. That is not an argument against buying, it is an argument against buying now.
I did the build on the server route because it seemed simplest and it worked for about six weeks. Then the app grew, the build started needing more than the 2GB the box had, and the OOM killer took out Postgres in the middle of a build one evening. Building on the machine that is also serving traffic is the kind of decision that is fine until it is very much not fine, and you find out at the worst moment.
One thing the simple ones do genuinely worse: sharing. If you ever need to send someone a note or keep a list jointly with a partner, plain files get awkward fast. Worth knowing before you build a whole system on it.
Also just electrically quieter in some homes, though that matters more for tracking than for judging a balance.
The middle option nobody mentions is Swarm mode, which is still there and still works and is roughly compose files with scheduling and rolling updates bolted on. It is unfashionable and it is not getting new features, which is a real risk to weigh, but for two to four boxes and a solo dev it does the specific thing you are asking for with about a day of learning. Worth an evening of reading before you commit to something with a cluster to operate.
Third option worth pricing: a sharded concurrent map crate. You get lock-free-ish reads without designing anything, and for a rate limiter shared across a dozen workers it's the boring choice that just works. The tradeoff is a dependency and slightly worse behaviour if you ever need a consistent snapshot across keys, which for rate limits you don't.
The rule that predicts it better than anything else: if a family member has an app on their phone that talks to it, it survives, and if it needs a browser and a bookmark, it dies. Everything that lived on my server for more than a year is something with a decent mobile client that just works. Everything that required someone to remember a URL and a login is gone, no matter how good the software was. That also tells you what to check before installing something, which is not the feature list, it is whether the phone app is any good.
Format over app. Writing that down. In a text file.
We got this wrong. Field went in on the uphill side of the well because that was where the flat ground was, and for two years it was fine. Third spring was wet, we got a coliform positive, shock chlorinated, cleared, got another one in the autumn. Ended up drilling a new well on the far corner of the lot which cost more than the original septic. If there is any way to put the field downgradient of the well, take it.
Check server logs for that URL over the same window. If crawl frequency collapsed at the same time, you may have a response time or 5xx issue on a specific edge node rather than anything to do with the content.
Worth knowing that this specific pattern is a limitation of the current borrow checker and not a logical problem with your code. It's the classic case people hit and the workaround above is the idiomatic answer, so don't spend an evening thinking you've modelled something wrong.
No, you forward the port and open localhost in Safari, or just bind the dev server to the VPS and hit its address. The bit that genuinely annoys me is that split screen on an 11 inch iPad means your editor is postcard sized while you look at the page.
Do not try to make the iPad the computer, make it the screen. Rent the cheapest VPS you can find, put your files there, and connect over SSH with a decent terminal app. You get a real Linux box, real Python, real git, and the iPad is only responsible for showing text and taking keystrokes, which it is genuinely good at.
Solves addressing rather than availability is a useful way to say it. That is a different problem to the one I am complaining about.
Sized by consequence rather than bytes is exactly the framing I was missing. The things I care about being up are the small ones.
The structural fix for CI is to stop pulling from Hub on every build. Run a pull through cache or mirror, or push the base images you actually use into your own registry and pull from there, and your build pipeline stops depending on someone else's quota entirely. It also makes builds faster and means an outage at a registry you do not control is not an outage for you. We did this after two afternoons lost to rate limits and it has never come up again.
Internal links breaking is exactly what happened last time, and I hadn't thought of it as a predictable category rather than bad luck.
That reframe helps. I'd been shopping on price and getting anxious for the wrong reasons.
Politely disagreeing with the eight to twelve minutes. That works for people who are comfortable, and in a corporate group about a third are not, and those people need warming up before anything usable happens. I schedule fifteen minutes flat for everyone, which for twelve people is three hours, and I would rather hand back time than tell someone their headshot looks tense because we were on a clock. The client remembers the awkward person's photo, not your efficiency.
Ask the seller for a certificate of analysis for the batch. Reputable bulk suppliers send one over without fuss. The ones that go quiet have told you something.
Do not buy the nationwide rail pass reflexively. It used to be an automatic win and after the big price rise it stopped being one for a lot of itineraries, including short loops like yours. Price your actual legs individually on a fare site first and compare, for a Tokyo, Kanazawa, Kyoto, Tokyo trip I came out cheaper on single tickets, and I got the reserved seats I actually wanted instead of working around pass restrictions.
The fortnight of silence is the important part. If you are in the room explaining it, you are not testing the thing you need to test.
Learn one sequence and you have covered most of what a shop does to a small engine: spark, fuel, compression, in that order. Buy an inline spark tester, a can of carb cleaner, a decent nut driver and socket set, a spark plug socket, and a small torque wrench when you can afford one. That is well inside your budget and covers every job you listed.
The other one that catches people is a std::sync::MutexGuard held across an await. Even with Arc everywhere, let g = m.lock().unwrap(); something().await; makes the future non-Send and can also deadlock. Either drop the guard explicitly before the await or use an async-aware mutex.