The Curious Engineer

All blogs / Dev tools / editors / IDEs

Farid Zakaria’s Blog

fzakaria.com

I’m a software engineer, father and wishful amateur surfer. If you’ve come seeking my political views, you’ve found the wrong Fareed.

Dev tools / editors / IDEsLinux / UnixSoftware / engineering practice

Posts
165 from 31 Mar 2020 to 28 Oct 2026
Posting
weekly (63 in the last year)
Kind
personal blog
Feed
https://fzakaria.com/feed.xml

2026 59

  1. Reading the code is the hard part
  2. Dafuq is a deterministic VM?
  3. Who wrote this byte?
  4. No quarter for gaps
  5. One store, two frontends
  6. Always, sometimes, never
  7. Nixpkgs for the frontend impaired
  8. Nix wrote half of my debugger
  9. Rewind VM: a flaky build you only catch once
  10. Hiding my AI slop from my Nix friends
  11. Every package is already installed
  12. A build graph that rolls dice
  13. Visualizing Nix closures
  14. Orange Site Vanity
  15. A Nix store is three functions
  16. Review a pull request by booting it
  17. Any Nix package, live in your browser
  18. Keeping one version of everything
  19. The holy grail of nixpkgs: version ranges
  20. How safe is follows?
  21. One flake to rule them all
  22. Stamping build info in constant memory
  23. Actually Queryable Executables
  24. Your executable is a SQLite database
  25. Three ways to smuggle SQLite into Nix
  26. nixpkgs-multiverse: the fewest nixpkgs
  27. DEFCON34 wrap-up
  28. nixpkgs-multiverse: fast mode
  29. nixpkgs-multiverse is audacitymaxxing
  30. nixpkgs-multiverse: every version that ever existed
  31. Super Mario Derivations
  32. A C++ toolchain from 357 bytes, in Bazel
  33. The Nix sandbox is a hidden input
  34. Nix finally has a source-bootstrapped OpenJDK
  35. Guix by Nix
  36. The mean means nothing
  37. Seriously, what is the large code-model even for?
  38. Small site changes and new design
  39. Linux kernel will support $ORIGIN, sort of
  40. How to piss off your Nix friends
  41. Who does Anubis actually stop?
  42. A TacoSprint 2026 Retrospective
  43. GuixPkgs: every Guix package, as a Nix flake
  44. Hijacking ELF entry points for NixOS compatibility or WTF is wrap-buddy?
  45. Nix needs relocatable binaries
  46. nix-build in under 100 lines
  47. A trillion dollars
  48. Relocatable Derivations
  49. The Guix Nix Abomination: Leveraging Guix derivations in Nix
  50. Every byte matters
  51. AI is a Boon for the Anal-Retentive
  52. Leaving performance on the table
  53. Does anyone actually use the large code-model?
  54. Nix is a lie, and that's ok
  55. Linker Pessimization
  56. Creating massively huge fake files and binaries
  57. Crazy shit linkers do: Common Data (COMDAT) sections
  58. Crazy shit linkers do: Relaxation
  59. Bespoke software is the future

2025 42

  1. Huge binaries: papercuts and limits
  2. Huge binaries: I thunk therefore I am
  3. Huge binaries
  4. Failing interviews
  5. Nix derivation madness
  6. Fuzzing for fun and profit
  7. Bazel Knowledge: Smuggling capabilities through a tarball
  8. Writing a protoc plugin in Java
  9. Bazel Knowledge: Testing for clean JVM shutdown
  10. Bazel Knowledge: dive into unused_deps
  11. Using Nix as a library
  12. GitHub Code Search is the real MVP
  13. Angle brackets in a Nix flake world
  14. Bazel Knowledge: Mixing and matching how to build third_party is lunacy
  15. Bazel Knowledge: Beyond _deploy.jar for OCI images
  16. Bazel Knowledge: transition with style
  17. home-manager is a false enlightenment
  18. Nix S3 multi-user woes
  19. Bazel's Original Sins
  20. Bazel Knowledge: Homonymous Bazel Modules
  21. Bazel Knowledge: Diagnostic messages only on failure
  22. Linux cgroup from first principles
  23. Bazel Knowledge: Recursive Bazel for testing
  24. Bazel Knowledge: A practical guide to depset
  25. Bazel linux-sandbox and cgroups
  26. Bazel cgroup memory investigation
  27. Chaining Nix stores for fun
  28. Nix that looks like Bazel
  29. What's in a Nix store path
  30. Nix vanity store paths
  31. Nix derivations by hand
  32. Nix Dynamic Derivations: A lang2nix practicum
  33. Nix Dynamic Derivations: A practical application
  34. An early look at Nix Dynamic Derivations
  35. Demystifying Nix's Intensional Model
  36. 404s and updated CSS
  37. Jekyll Git commit
  38. Nix migraines: NIX_SSL_CERT_FILE
  39. Nix pragmatism: nix-ld and envfs
  40. Nix: string interpolation of directories gone awry
  41. Bazel: Build Event Protocol Viewer
  42. Bazel Knowledge: Be mindful of Build Without the Bytes (bwob)

2024 26

  1. Faking incremental Docker loads
  2. Bazel Knowledge: Protobuf is the worst when it should be the best
  3. JVM boot optimization via JavaIndex
  4. Bazel Knowledge: What's an Interface JAR?
  5. Bazel Knowledge: mind your PATH
  6. Bazel Knowledge: Aspects to generate Java CLASSPATH
  7. Bazel Knowledge: reproducible outputs
  8. Bazel Knowledge: Secret //external directory
  9. Bazel Knowledge: Reference targets by output name
  10. Bazel Overlay Pattern
  11. Bazel WORKSPACE chunking
  12. NixOS, Raspberry Pi & Me
  13. Automatic Nix flake follows
  14. Import but don't import your NixOS modules
  15. NixOS Option Inspection
  16. Management Time
  17. Scaling past 1 million ELF symbol relocations
  18. Fish the bash way
  19. Nix secrets for dummies
  20. Nix remote building with Yubikey
  21. Learn Nix the Fun Way
  22. Reproducibility in Disguise: Bazel, Dependencies, and the Versioning Lie
  23. Speeding up ELF relocations for store-based systems
  24. Visualizing GitHub workflow run length time
  25. Hermetic, but at what cost?
  26. Abusing GitHub as a PyPI server

2023 2

  1. Quick insights using sqlelf
  2. sqlelf and 20 years of Nix

2022 3

  1. Making RUNPATH redundant for Nix
  2. Shrinkwrap: Taming dynamic shared objects
  3. Computing all output paths for every attribute in Nixpkgs

2021 10

  1. Using an overlay filesystem to improve Nix CI builds
  2. The yak shave for reproducibility
  3. A Nix Binary Cache Specification
  4. Investigating hydration times with Nix
  5. The search for a minimal nix-shell continued; mkShellMinimal
  6. A minimal nix-shell
  7. Eval the Nix
  8. Java, Nix & Reproducibility
  9. setting up a Nix Google Cloud Storage (GCS) binary cache
  10. JRuby and Sorbet

2020 23

  1. autopatchelf - what it can look like
  2. On-demand linked libraries for Nix
  3. Debugging a JNR-FFI bug in Nix
  4. Isolation using Java's ClassLoader
  5. Nix parallelism & Import From Derivation
  6. nix-copy-closure your nix-shell
  7. VPNs continued
  8. VPNs from first principles
  9. Tailscale is magic; even more so with NixOS
  10. NixOS; what's in a rebuild? Continued.
  11. NixOS; what's in a rebuild?
  12. mvn2nix; welcoming Maven into Nix's warm embrace
  13. quassel core on NixOS with Let's Encrypt
  14. nix coercion trick
  15. caching your nix-shell
  16. Packaging a Maven application with Nix
  17. what is bundlerEnv doing?
  18. setting up a Nix S3 binary cache
  19. my love letter to redo
  20. Containers from first principles
  21. bpf_helpers and you...
  22. Parallel Task Execution
  23. New blog. New format.