• 0 Posts
  • 16 Comments
Joined 1 year ago
cake
Cake day: June 14th, 2023

help-circle



  • Your documentation on file system choice is either anecdotal or engineering-masters-thesis, seemingly no in-between

    God, I feel this so much. All the benchmarks are such ass too.

    I have also struggled with picking a disk layout + FS, and landed on using a single BTRFS partition with FDE.

    For now, I’m happy. Unless there’s a new FS that definitively beats BTRFS on NVMe perf and supports copy-on-write and something that makes FDE as easy as subvolumes that definitively beats BTRFS on NVMe drives, I won’t even bother looking into it again.

    I’ve considered moving to a RAID setup, but it seems like more trouble than it’s worth, since I do regular /home backups & NixOS keeps my entire system config in version control.

    If I ever consider a different disk setup, I’m just going to fire up a clean distro install on a spare NVMe and benchmark my most common tasks myself.

    NixOS has killed my decision paralysis for choosing distros and desktop env stuff since I can just enable whatever in my config, try it out, then revert if I don’t like it enough to switch.

    Only thing I can’t trivially test is disk layouts, but with disko, it might be easy enough to create a custom NixOS installer that:

    • auto-installs a disk layout & your config
    • reboots
    • runs your benchmarks
    • writes the results to disk
    • reboots into the live image, repeating this for a list of disk layouts.



  • Part of the problem is choosing from those options (when you have a choice). Open-ended questions like that nuke my productivity when starting a project because I spend more time researching and weighing options than actually programming.

    As time has gone on, I’ve increasingly become a fan of restricting how many ways devs can do something.

    you just pick one and go with it.

    Might be my ADHD, but I can never just do that. But I posit that excess choice hurts feature development pace by wasting effort on reinventing the wheel.

    A good example is the Nix ecosystem:

    Nix expression language provides almost no constraints, leaving users to do the same things in a bunch of ways, and preventing a clear notion of which way is generally best from arising…which makes upstream super conservative with implementing new features the community wants, because any decision might break one those things. Leaving us with a 5+ year old “experimental” feature + CLI used by 80% of users, but no consensus on an official implementation. So many simple upstream changes become a series of 3 competing community projects providing a solution for that feature, further preventing consensus.







  • All of these bring me a sense of dread, each in a unique way.

    Java I have a special loathing for, but the ecosystem isn’t too wild, just verbose and so XML heavy.

    JS is its own hell because of the sheer number of permutations of technologies a given project will use. There’s always at least one nonstandard framework or tool lingering around from an old trend.

    Python reimplemented the same dep management wheels 5x each, and I have no idea what common stacks look like anymore, but every time I encounter Python projects, something is always broken.

    C is nice and easy from what I’ve used (just GCC & make), but idk what complexity arises in bigger projects.

    Just so glad I’m not a webdev anymore and work with mostly just Rust, cargo, and containers.