Hacker News new | ask | show | jobs
by raffraffraff 750 days ago
Reading the comments makes me think I'm turning into my dad. He was a simple man in terms of education and career. He was a fire man on a stream train in 1950, a farmer, barman, handyman. Out in the sticks, he was everyone's go-to guy when a vet couldn't be found, because he kept a "livestock first aid kit" including penicillin & syringes. He talked to vets and read books and knew about the most common ailments and how to treat them. He serviced his own car and tractor, including stripping the tractor engine down in his yard without proper tools, and getting cylinders bored and pistons sleeved, and putting it back together. He ran electric cable in farm building and sheds (after chatting to an electrician) and he did a ton of building work around the house. But at a certain age, maybe around 50, all new technology was out. Electricity was fine but electronics were out. Mechanical problems were fine because you could look straight at a thing and figure out how it clicked together, but once it had a microcontroller and a panel that abstracted away the actual working of the machine it just became some weird arbitrary "thing" that blocked his view of the machine. I'm sure if he was in his 20s when this stuff appeared he'd be all over it, but he was born in 1926, so I think the mighty micro was too late for him. He flatly refused to use the VCR, alarm systems, any type of computer. Show him a rubis cube, he's interested. Show him a microwave oven with more than 5 buttons and he'll make a sandwich instead.

This is me with nix. I'm ok with all the stuff that's emerged in my field (infra/sysadmin) since the 90s. But nix makes me instantly glaze over. Several times I tried, but it's like my brain unplugs itself. I'm sure it does some wonderful stuff at an extremely high price that I'm not willing to pay.

Nix has a huge mindshare, which I don't think you can win back if Nix keeps fixing the core issues mentored in these comments. Best of luck with this, though.

5 comments

Reminds me of this quote from Douglas Adams:

  I've come up with a set of rules that describe our reactions to technologies:
    1. Anything that is in the world when you’re born is normal and ordinary and is just a natural part of the way the world works.
    2. Anything that's invented between when you’re fifteen and thirty-five is new and exciting and revolutionary and you can probably get a career in it.
    3. Anything invented after you're thirty-five is against the natural order of things.
It's been used to criticize anyone who rejects new technology, but it's just a funny quote that has some truth to it.
As I've hit age defined in 3, some of it is also "Anything invented after you're thirty-five is mostly same stuff you had before but upgraded. You are confused why everyone is losing their minds over it."

It reminds me of current AI craze. We had a bit of this in 2016, it didn't go well: https://en.wikipedia.org/wiki/Tay_(chatbot)

>mostly same stuff you had before but upgraded. You are confused why everyone is losing their minds over it

That's a good way of thinking about this. [Showing my age here], I remember being unfazed about the web in the mid 90s, thinking to myself "I already have Encarta which does hypertext with multimedia so well, why do I need this new thing populated by random people".

But of course the web did have a lot to offer. I suppose I keep coming back to "Quantity has a quality all its own" - sometimes even a relatively small upgrade makes an existing solution suddenly accessible to more people and a viable solution to more problems.

Nix solves the same problem we used to solve back in the day (before Docker taught us to run everything as root and disable firewalls, #yolo) ad-hoc with random poorly maintained scripts.

If you never had to solve this problem then it probably isn't for you. If you did, then being able to finally replace the old contraptions with something properly engineered is a breath of fresh air.

The thing is, old ways didn't have to be contraptions at all. If we had to run many services on a system, we instead ran BSD with jails, or if we have to run Linux, with chroots.

These solutions, abstracted the convoluted solutions away. Who didn't want to form these solutions themselves (which is fair, because it needs intricate knowledge about close-to-OS stuff) built "contraptions" instead.

The core solutions to core problems didn't change at all. We sometimes use the more modern approaches, because we feel lazy sometimes.

Nix does not solve the problem of "running things in a chroot." It solves the problem of having to reliably and consistently build software in a repeatable, reproducible, programmable way, up-to and including all the fundamental system components, and it offers thousands and thousands of packages in order to make that usable for typical modern workflows. To a first approximation, this problem is about 10,000 times harder to solve than just "using chroot."

It's like the difference between building a single building and building an entire city, in terms of scale and total effort. That's why it's taken Nix nearly 20 years to get where it is.

> We sometimes use the more modern approaches, because we feel lazy sometimes.

No, we often use them because they are actually materially better. And Nix is vastly better than all the prior attempts at this problem. If you didn't have those problems or don't think you did, that's fine. But it's got nothing to do with "laziness" whatever that means. It's got everything to do with the results. And the results are ultimately quite good.

At some point you will want to manage your own software supply chain. A C++ compiler is the bare minimum, but then you'll surely want a Python environment too, and of course some npm packages for the frontend. Then you'll want some cross-compilation - for the new ARM processors, or maybe you want a different libc. After that you need caching and remote builds, because build times are a pain in the ass.

Here you come to realize that Nix already comes with all that out of the box, with some minimal tweaking.

Jails/chroots/containers are an orthogonal thing, though often whatever comes out of your software supply chain you'd want to run containerized too.

>before Docker taught us to run everything as root

Windows called, it wants its Administrators back.

Windows guys still have these, right?
Very smart
I think I am similar to you - hate complexity, hate shiny things - but, I love Nix because it solves a real problem. That problem being deterministic builds.

It is a common and real problem that builds with "state" cause problems very often for people not even doing complex things.

I think Nix is complex, but because it solves a real, common issue I grin and bear it.

Here's what's been key for me:

Absolutely separate -- in your mind -- NixOS from Nix.

The latter I've seen be a very useful tool that does what people here talk about: cleans up dependency and build and installation management in a reasonably nice way.

The former is a religion/world-view that requires a complete mindset change, accepting a whole dogma, and differs entirely from how you're used to using Linux. I gave up and switched back to Debian after I couldn't get a decent answer on how to set it up easily with my github keys to easily, y'know, check projects out. The mental gymnastics required wer silly.

Nix the language seems obscure at first but it's not so bad after a while. It's sort of got a bit of syntax tossed in from the ML-ish programming languages so there's some familiarity there, for me, maybe.

Where it falls down is like anything else like this: it basically requires that all the things you dep on also adhere to this philosophy and have nix setups already or you'll be in a world of pain rolling your own. I gave up on converting our $work stuff when it became clear that the versions of flatbuffers and a few other deps we depend on just weren't out there in the nix ecosystem and I wasn't going to volunteer to make them.

Anyways, I've seen it be very useful. A former employer used it to set up their whole Julia environment such that custom patches and configuration would all be nicely applied. And this was for both developer workstations and CI and production environments. It's a nice step below docker for doing that kind of thing, and is far less intrusive than docker in many ways.

> Where it falls down is like anything else like this: it basically requires that all the things you dep on also adhere to this philosophy and have nix setups already or you'll be in a world of pain rolling your own. I gave up on converting our $work stuff when it became clear that the versions of flatbuffers and a few other deps we depend on just weren't out there in the nix ecosystem and I wasn't going to volunteer to make them.

Maybe I'm a bad NixOS user, but I tend to run most of my development work through steam-run, unless the necessary default.nix is really simple. It works fine, and having the rest of the system be immutable is still an advantage.

> I gave up and switched back to Debian after I couldn't get a decent answer on how to set it up easily with my github keys to easily, y'know, check projects out. The mental gymnastics required wer silly.

Huh? NixOS doesn't require any special configuration to use SSH keys or Git or even SSH keys stored on special hardware like Yubikeys. What went wrong here, or did I misunderstand your use case?

Be like your father except with knowledge of Category Theory

That's the best we can do.

The Ops comment was well versed, educated and contributed to the problem.

What do you want to tell us with category theory and how does your comment fit into the discussed problem?

Op told a story about his dad, who was a cool guy. My dad was like him too. OP also said he's like his dad because nix goes over his head. That's where I disagree. I think op feels that way only because op doesn't know enough category theory.

I also feel my dad doesn't understand or value abstract things because his Romanian communist math education - as an engineer - fell short of category theory. If he knew categories, we could connect about many more things, but he does not, and this is a massive disconnect that makes my dad unable to apply abstract math to the real world

I was projecting that onto op and suggesting the best we can do is to not be short sighted like our fathers. I self-taught category Theory after dropping out from the math program two times. It changed my life, and let me enjoy math again after burnout and homelessness. And it opened my eyes to many applications of math I never knew about.

My suggestion is that if op learns category theory and the functorial semantics of programming languages, systems like nix will become usable, instead of imposing.

And I am not wrong