41554 blogs · [ { "id": "01a08789-d8aa-710d-94f8-be71181d827b", "title": "The postmodern build system (updated 2025)", "url": "https://jade.fyi/blog/the-postmodern-build-system/", "published_at": "2025-11-29T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7118effc4e", "title": "You don't have to use Nix to manage your dotfiles", "url": "https://jade.fyi/blog/use-nix-less/", "published_at": "2025-07-05T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71191fb28e", "title": "Misadventures in DTrace: how to debug the macOS kernel", "url": "https://jade.fyi/blog/misadventures-in-dtrace/", "published_at": "2025-05-11T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71193e76ac", "title": "Pinning NixOS with npins, or how to kill channels forever without flakes", "url": "https://jade.fyi/blog/pinning-nixos-with-npins/", "published_at": "2024-05-20T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711a1ab527", "title": "Pinning packages in Nix", "url": "https://jade.fyi/blog/pinning-packages-in-nix/", "published_at": "2024-05-19T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711b133a5e", "title": "KalmarCTF: Reproducible Pwning writeup", "url": "https://jade.fyi/blog/reproducible-pwning-writeup/", "published_at": "2024-03-16T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711b517f63", "title": "Build systems: content addressed tracing", "url": "https://jade.fyi/blog/build-systems-ca-tracing/", "published_at": "2024-01-27T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711b761bec", "title": "Flakes aren't real and cannot hurt you: a guide to using Nix flakes the non-flake way", "url": "https://jade.fyi/blog/flakes-arent-real/", "published_at": "2024-01-02T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711bf844a6", "title": "Debugging iOS Safari from Linux", "url": "https://jade.fyi/blog/debugging-ios-safari-from-linux/", "published_at": "2023-11-08T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711c3748b8", "title": "Debugging Nix build inconsistencies: manual vs automatic build", "url": "https://jade.fyi/blog/debugging-nix-package-building/", "published_at": "2023-10-19T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711c8597f9", "title": "Pulling apart Dell UEFI images and messing with ACPI", "url": "https://jade.fyi/blog/pulling-apart-dell-uefi/", "published_at": "2023-10-19T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711cb62faf", "title": "NixCon 2023: Finding things in nixpkgs and NixOS source", "url": "https://jade.fyi/nixcon2023/", "published_at": "2023-09-09T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711da6d0dd", "title": "Setting up zim with zsh", "url": "https://jade.fyi/blog/zsh-zim-setup/", "published_at": "2023-08-06T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711dba607f", "title": "Announcing Clipper: TLS-transparent HTTP debugging for native apps", "url": "https://jade.fyi/blog/announcing-clipper/", "published_at": "2023-07-23T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711eb28f01", "title": "Building the Meowzor robot", "url": "https://jade.fyi/blog/building-the-meowzor/", "published_at": "2023-05-02T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711f116613", "title": "pre-commit for safe image handling", "url": "https://jade.fyi/blog/pre-commit-exif-safety/", "published_at": "2023-04-24T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be711f61dd29", "title": "Quartus, elf2hex, Nios II, bugs, and misery", "url": "https://jade.fyi/blog/quartus-elf2hex-and-misery/", "published_at": "2023-04-20T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71202057b5", "title": "Stopping evaluation from blocking in Nix", "url": "https://jade.fyi/blog/nix-evaluation-blocking/", "published_at": "2023-04-02T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7120b9f755", "title": "Computing should enable humans: how to choose tools", "url": "https://jade.fyi/blog/computing-should-enable-humans/", "published_at": "2023-03-02T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71215c0a26", "title": "NixCon 2022 retrospective", "url": "https://jade.fyi/blog/nixcon2022-retrospective/", "published_at": "2022-10-30T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71218acdc2", "title": "My workflow: Managing and munging PDFs", "url": "https://jade.fyi/blog/workflow-pdfs/", "published_at": "2022-10-30T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7121fbb8d7", "title": "The Lambda Cube in Haskell: what construct do I need for this polymorphism?", "url": "https://jade.fyi/blog/the-lambda-cube/", "published_at": "2022-10-25T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712209a6f0", "title": "NixCon 2022: Debugging Closure Sizes Graphically with nix-closure-graph", "url": "https://jade.fyi/nixcon2022/", "published_at": "2022-10-20T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712282e9bc", "title": "The cabal 'test-dev' trick", "url": "https://jade.fyi/blog/cabal-test-dev-trick/", "published_at": "2022-10-03T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71234162e1", "title": "Setting up dev environments with Haskell Language Server and Nix", "url": "https://jade.fyi/blog/nix-hls-for-deps/", "published_at": "2022-07-21T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71241d53b8", "title": "Adventures in building disk images of NixOS virtual machines for M1", "url": "https://jade.fyi/blog/nixos-disk-images-m1/", "published_at": "2022-06-21T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7125140b16", "title": "Building Nix derivations manually in nix-shell", "url": "https://jade.fyi/blog/building-nix-derivations-manually/", "published_at": "2022-06-15T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7125e18ba7", "title": "WALL side", "url": "https://jade.fyi/blog/WALL-side/", "published_at": "2022-05-29T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71260482f1", "title": "Oh no, `git send-email`", "url": "https://jade.fyi/blog/oh-no-git-send-email/", "published_at": "2022-04-22T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7126dfaa26", "title": "Debugging: using rr to deal with unruly children (processes)", "url": "https://jade.fyi/blog/debugging-rr-children/", "published_at": "2022-02-24T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712708dafb", "title": "Setting up Quartus 16+18 on Arch Linux", "url": "https://jade.fyi/blog/quartus-16-on-arch-linux/", "published_at": "2021-09-12T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712731c3ee", "title": "Optimizing Nix Docker images", "url": "https://jade.fyi/blog/optimizing-nix-docker/", "published_at": "2021-08-19T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7127fc3f2a", "title": "My Workflow: Unfamiliar C and C++ codebases", "url": "https://jade.fyi/blog/workflow-unfamiliar-c-cpp-codebases/", "published_at": "2021-07-27T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7128791e9c", "title": "Using a TPM 2.0 to secure ssh keys", "url": "https://jade.fyi/blog/tpm-ssh/", "published_at": "2021-06-09T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7128b54d85", "title": "Monitoring D-Bus calls from systemd-run", "url": "https://jade.fyi/blog/systemd-monitoring-dbus/", "published_at": "2021-06-01T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7128c77a0f", "title": "My Workflow: Docs tricks and GNUs", "url": "https://jade.fyi/blog/docs-tricks-and-gnus/", "published_at": "2021-05-18T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71298119d6", "title": "jade ✨", "url": "https://jade.fyi/blog/jade-sparkles/", "published_at": "2021-03-09T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7129e430b2", "title": "Finding functions in nixpkgs", "url": "https://jade.fyi/blog/finding-functions-in-nixpkgs/", "published_at": "2021-02-19T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712aaec5b7", "title": "Custom targets in Rust", "url": "https://jade.fyi/blog/custom-targets-in-rust/", "published_at": "2020-12-29T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712b990215", "title": "I have an RSS feed now", "url": "https://jade.fyi/blog/i-have-rss-now/", "published_at": "2020-11-21T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712c3cbfd0", "title": "pwintln uwu and other fun with elves and dynamic linkers", "url": "https://jade.fyi/blog/pwintln-uwu/", "published_at": "2020-11-21T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712cedaf5b", "title": "How to patch Java font rendering for AA", "url": "https://jade.fyi/blog/patching-jars-aa/", "published_at": "2020-11-11T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712d56b7d2", "title": "Writing shellcode in Rust", "url": "https://jade.fyi/blog/writeonly-in-rust/", "published_at": "2020-09-01T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712da5182b", "title": "Debugging Template Haskell", "url": "https://jade.fyi/blog/debugging-template-haskell/", "published_at": "2020-08-31T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712dc716b7", "title": "Google CTF 2020: writeonly", "url": "https://jade.fyi/blog/gctf-2020-writeonly/", "published_at": "2020-08-23T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712e154e15", "title": "My software development setup in WSL 2", "url": "https://jade.fyi/blog/development-in-wsl/", "published_at": "2020-07-19T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712ecb5f4d", "title": "Using Nix to build multi-package, full stack Haskell apps", "url": "https://jade.fyi/blog/nix-and-haskell/", "published_at": "2020-07-16T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712ed5c5a2", "title": "What I learned doing some casual QMK hacking", "url": "https://jade.fyi/blog/qmk-hacking/", "published_at": "2020-05-22T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712fc05863", "title": "nginx: how to try multiple roots successively", "url": "https://jade.fyi/blog/nginx-try_files-troubles/", "published_at": "2019-11-11T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be712fe74a61", "title": "Rewriting the blog in Gatsby", "url": "https://jade.fyi/blog/rewriting-the-blog-in-gatsby/", "published_at": "2019-11-11T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7130abbd05", "title": "About me", "url": "https://jade.fyi/about/", "published_at": "2019-11-10T00:00:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71319742b0", "title": "Auditing world-writable high-privilege executables on Windows", "url": "https://jade.fyi/blog/auditing-world-writable-high-privilege-executables/", "published_at": "2019-07-06T07:46:02+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7131b1dadf", "title": "I competed in Skills Canada Robotics", "url": "https://jade.fyi/blog/i-competed-in-skills-canada-robotics/", "published_at": "2019-06-13T18:01:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7132a35a54", "title": "Nspirations on getting math done faster", "url": "https://jade.fyi/blog/nspirations-on-getting-math-done-faster/", "published_at": "2019-04-16T23:50:00+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be713357964d", "title": "I designed and built a mechanical macropad/numpad!", "url": "https://jade.fyi/blog/i-designed-and-built-a-mechanical-macropad-numpad/", "published_at": "2019-03-07T07:15:38+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be713435b40b", "title": "Hyper-V Manager throws obscure errors if the target computer calls itself something else than you do", "url": "https://jade.fyi/blog/hyper-v-manager-throws-obscure-errors/", "published_at": "2018-08-16T03:25:14+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7134bf4ac8", "title": "Meshmixer: Turn Off Smooth Display", "url": "https://jade.fyi/blog/make-meshmixer-display-things-usably/", "published_at": "2018-02-19T22:44:34+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7135515249", "title": "Launching PowerShell using the Win32 API", "url": "https://jade.fyi/blog/launching-powershell-using-the-win32-api/", "published_at": "2016-11-29T04:20:46+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be713563673f", "title": "Setting up client certs for secure remote access to home lab services", "url": "https://jade.fyi/blog/setting-up-client-certs-for-secure-remote-access-to-home-lab-services/", "published_at": "2016-10-13T06:27:13+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7135b120c9", "title": "NUT not finding my UPS + fix", "url": "https://jade.fyi/blog/my-network-ups-tools-dont-work/", "published_at": "2016-07-09T17:10:05+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7136099036", "title": "Windows folder extremely slow to load", "url": "https://jade.fyi/blog/windows-folder-extremely-slow-to-load/", "published_at": "2016-06-28T21:38:26+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7136694650", "title": "nftables: redirect not working + fix", "url": "https://jade.fyi/blog/nftables-redirect-not-working-fix/", "published_at": "2016-03-07T00:33:40+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be7136e027bd", "title": "Swapping Back and Menu/Overview buttons on Android", "url": "https://jade.fyi/blog/swapping-back-and-menuoverview-buttons-on-android-2/", "published_at": "2016-03-04T05:08:07+00:00" }, { "id": "01a08789-d8aa-710d-94f8-be71372f93bb", "title": "General Network Error when running Install-ADDSForest", "url": "https://jade.fyi/blog/general-network-error-54/", "published_at": "2015-05-23T21:48:15+00:00" } ] posts Claim your blog
Back to jade.fyi
Blog · corpus.blog/blogs/jade.fyi/posts

jade.fyi

jade.fyi

2025

2024

2023

2022

2021

2020

2019

2018

2016

2015