Blog Posts
2025
- I Blogged Every Day for a Month – Again[31 May 2025]
- Daily Z Reports and Weekly Reviews[30 May 2025]
- Cross-Compiling Haskell under NixOS with Docker[29 May 2025]
- The Terminal State of Mind[28 May 2025]
- NixOS Rebuilds, Upgrades and Generation Diffs[27 May 2025]
- Boring on Purpose: Bold Moves in Internal Tooling[26 May 2025]
- A Glimpse into My Shell[25 May 2025]
- Data Definitions, Not Flowcharts[24 May 2025]
- Magic JSON in Haskell[23 May 2025]
- Hacking Haskell with Nix: Two Tricks[22 May 2025]
- Hacking with mdBook[21 May 2025]
- Haskell Project Template with Nix Flakes[20 May 2025]
- Deadman Checks in Grafana[19 May 2025]
- Stop Feeling Intimidated by Complexity[18 May 2025]
- Choosing A Template Engine: The More Powerful Problem[17 May 2025]
- Thinking in Templates[16 May 2025]
- SDK-Driven Development: A Litmus Test for Good Software Design[15 May 2025]
- Why I am Migrating From Zola Back to Hugo[14 May 2025]
- Code is Liability[13 May 2025]
- Build a CLI Emoji Picker with fzf and Nix[12 May 2025]
- Wayland Application Launchers: Stick with Rofi[11 May 2025]
- GitHub Projects My Way[10 May 2025]
- Time and Truth: Lessons from Tracking My Work with Watson[9 May 2025]
- Why and How to Patch a Python Package in Nix[8 May 2025]
- Nix-Powered Python Development[7 May 2025]
- Nix Flake Templates[6 May 2025]
- Working with OpenTelemetry Metrics[5 May 2025]
- Hold My Data[4 May 2025]
- Vectorized Data Pipelines[3 May 2025]
- Ruff and Ready: Linting Before the Party[2 May 2025]
- Grafana Webhook Integration with ntfy[1 May 2025]
2024
- Completed My Blogging Challenge[31 Aug 2024]
- More Haskell Diagrams: Contribution Graph[30 Aug 2024]
- Shell Cacophony[29 Aug 2024]
- Web Browser Extension Workshop - Part 5[28 Aug 2024]
- Web Browser Extension Workshop - Part 4[27 Aug 2024]
- Web Browser Extension Workshop - Part 3[26 Aug 2024]
- Web Browser Extension Workshop - Part 2[25 Aug 2024]
- Web Browser Extension Workshop - Part 1[24 Aug 2024]
- Managing NixOS on DigitalOcean with Colmena[23 Aug 2024]
- Plot GeoJSON on Your Blog Posts[22 Aug 2024]
- Cross-Posting to Hashnode with API[21 Aug 2024]
- Cross-Posting to Dev.to with API[20 Aug 2024]
- Easy GitHub CLI Extensions with Nix[19 Aug 2024]
- Learning to Like Neovim[18 Aug 2024]
- Hacking Watson with Haskell - Part 3[17 Aug 2024]
- Hacking Watson with Haskell - Part 2[16 Aug 2024]
- Hacking Watson with Haskell - Part 1[15 Aug 2024]
- More Haskell Diagrams: Dynamic OpenGraph Images[14 Aug 2024]
- More Haskell Diagrams: Wrapping Text[13 Aug 2024]
- More Haskell Diagrams: OpenGraph Images[12 Aug 2024]
- Executable Blog Posts: Second Take[11 Aug 2024]
- More Haskell Diagrams: Images[10 Aug 2024]
- Introduction to Haskell Diagrams[9 Aug 2024]
- Pomodoro Timer: Waybar and uair[8 Aug 2024]
- Hasura CLI on NixOS: A Working Solution[7 Aug 2024]
- Using niv to Manage Haskell Dependencies[6 Aug 2024]
- Backup GitHub Repositories with gidek[5 Aug 2024]
- Abusing Haskell: Executable Blog Posts[4 Aug 2024]
- Managing NixOS Secrets via SOPS, sops-nix and opsops[3 Aug 2024]
- Your package.json as a Credit Account[2 Aug 2024]
- OpenResty on NixOS for an API Gateway[1 Aug 2024]
- Running NixOS Guests on QEMU[31 Jul 2024]
- Archiving PostgreSQL Backups on NixOS[30 Jul 2024]
- Develop R Packages under Nix Shell[5 Jan 2024]
2023
- NixOS on Raspberry Pi 4 with Encrypted Filesystem[18 Nov 2023]
2021
- Literate Haskell with Markdown[16 Oct 2021]
2020
- Modern Web-based APIs: What to Expect?[3 Jun 2020]
2012
- Unreasonable Revolutionary[10 Jun 2012]
- Abstraction as Bread and Butter[19 May 2012]
- Redefining the Ontology of Accounting[15 Jan 2012]