The idea with nix flakes is it has a lock file which should guarantee the same build. This is like package-lock.json or pdm.lock which contains dependency checksums for every package.
Docker works more like your standard package manager. If you ask for mysql 5, today you may get mysql 5.1, but next week you may get mysql 5.2. So it does not come with a guarantee.
Author here. Your TLDR is spot on. Yes, my intent was to be on desktop use since most things I read dont consider that specifically.
I did talk about how I would keep this running on some simple home servers since I think that's where Nix shines. But some of my servers are raspberry pis, which I mentioned I am worried to run Nix on due to resource limitations. I should probably just try it.
I'm running NixOS on a raspberry pi and I deploy to it with deploy-rs¹. This works pretty well for me. My dev machine is an Apple Silicon laptop with nix-darwin installed and I use its nix.linux-builder module to run an aarch64-linux VM as a remote builder to build the rpi's system. All this means the rpi never has to do any building itself, and doesn't even need the nixpkgs source installed either.
If you want to do this yourself, I recommend using https://github.com/nix-community/raspberry-pi-nix so the system is configured much more closely to how the stock raspberry pi image works. The benefit of this is better reliability of stuff like bluetooth.
Question for ya since I'm working on an app with similar platforms - and dont know what I'm doing. I see you used expo for the mobile apps but nextjs for the web app. Why didnt you use expo for the web app too?
Looks good so far! If it helps, some of the challenges I had with take-homes as a hiring manager were:
- We'd suggest to spend an afternoon on it, no more than 4 hours, but many candidates would go far beyond that
- Senior candidates tend to have less free time to do take-home assignments. Some would decline to do them and others would have to delay their interview pipeline for weeks (and by then, many candidates had lost interest or progressed with other employers)
That said, take-home assignments were very helpful for junior candidates who didn't have much experience on their resume.
I dont do well on coding interviews. If I get rejected from a company but I think I would have been a great fit, I often sent them a note with some comments as to why these types of interviews are bad. I recently decided to formalize my thoughts into this open letter that I can share as a link instead.
Hacker Newsies - you are a smart bunch. I know we have discussed these issues at length over the years, but I would love your feedback on this letter as I send it to employers and recruiters.
Or any other general thoughts you may have. Heck, maybe you want to fork or write your own version that fits your situation. This is certainly a trend I could get behind!
Note: I wanted to do this in notion since thats where my public site is, but getting footnotes to work there is too hacky. Pure markdown worked much better so for now it will live as a gist.
I find myself not even wanting to apply for jobs where I think this kind of live coding question might come up, since I assume I will do terribly a job otherwise seeming to be a great fit.
The idea with nix flakes is it has a lock file which should guarantee the same build. This is like package-lock.json or pdm.lock which contains dependency checksums for every package.
Docker works more like your standard package manager. If you ask for mysql 5, today you may get mysql 5.1, but next week you may get mysql 5.2. So it does not come with a guarantee.