Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • Im confused whats the point of this ?
  • Some of us use nix as a package manager. And others...
  • I think this was a good starting point, excited to see how this grows
  • Wow, what fun!

    On a more boring note... I could imagine using this pattern for documentation screenshots. It would be a neat sanity check during PR reviews to show whichever screenshots were changed by that PR in context with their surrounding docs.

    Maybe they're meaningful, intended, changes which could be useful context for a reviewer. Maybe they're broken, indicating not only that you now need a different derivation to get the desired screenshot, but also that your prose probably needs to change (since the path to get from start to the screenshot has now also changed).

  • Neat! Very sad to have missed Nix Vegas, sounds like it was particularly good this year. I[0] hacked together something similar[1] for the Game Boy a couple months ago[2], outputting frames with builtins.trace instead of images, and it ended up being useful as a memory pressure test while working on a Nix evaluator implementation[3].

    Pokemon was so slow that coming up with TAS scripts, even with state saves/loads for every run, became infeasible, so I ended up searching against a C implementation of the same emulator. It eventually beat Brock, but was very button-inefficient and would've taken 10 hours to play back under Nix, if it would've even made it that far. On my implementation, if I turn the GC off, the much shorter script in [3] OOMs on a box with 128gb about 2/3 of the way through!

    [0]: my claudes [1]: https://github.com/psyclyx/nixboy [2]: https://x.com/psyclyx/status/2066249660046725213 [3]: https://github.com/psyclyx/fix#a-less-rigorous-benchmark

  • Why are people so enamored with lazy languages? There's an obvious and easy way to build lazy evaluations in any imperative language: return a data structure with a .run() method instead of the result.

    It's the basic principle behind the ML libs for instance, none of which are made in a lazy language since it buys you nothing but really adds complexity (you can no longer do the trivial reasoning "if I ask for A B C, then A happens, then B, then C", the order is never guaranteed and these are the errors you constantly make in languages like haskell and prolog, or at least that goes for me).

    This also means you can no longer explicitly optimize. And if compilers were infinitely more intelligent than me that would be fine ... but of course when it matters I can beat every compiler I've ever seen.

  • What a delightfully insane abuse of Nix. I enjoyed reading that immensely.
  • (author) -- fun to see this here. I wrote this on the way (on the airplane) to DEFCON34 and Nix Vegas[1] I didn't even get a chance to cruise around and see anything of DEFCON proper since the Nix community had me captive the whole time!

    I gave 3 talks that I will update on my site[2] once they released.

    [1]: https://nix.vegas [2]: https://fzakaria.com/talks

Explore Birbla archives