The NixOS Tools That Actually Make a Difference
Ten community tools I keep on every NixOS machine. They fix the parts of the Nix workflow that are genuinely annoying without them.
Blog
Ten community tools I keep on every NixOS machine. They fix the parts of the Nix workflow that are genuinely annoying without them.
Continuous aggregates in TimescaleDB looked like a silver bullet for my crypto data performance problems. They weren't. Here's what I learned after two months of fighting materialization lags, chunk explosion, and rigid query patterns.
Integrating 150+ crypto exchanges revealed systematic fraud: fake volume, ghost liquidity, crawler-aware APIs. Here is how to detect it.
It has been 20 years since I wrote my first PHP script in 2006. The code was terrible, the forum worked anyway, and here is what I wish I knew then.
How I actually use sync/atomic for lock-free programming when a mutex is too heavy, and the weird edges you hit along the way.
Home Assistant promises local control and privacy, but the reality is a house of cards. After 10 years of building smart homes, here is what breaks and whether it is worth it.
Essential Prometheus metrics for applications, servers, and databases. What the Golden Signals miss and why your Alertmanager config is probably wrong.
I thought meta tags were optional until my articles kept getting outranked by thinner content. Turns out Google was speaking a language I was not.
The new(expr) syntax in Go 1.26 should have let me delete my generic ptr[T] helpers. It almost did.
How to use bitwise flags, bitmasks, and iota for configuration in Go. Learn bitwise OR, AND, XOR operations, set/clear/toggle patterns, and practical examples with JSON serialization.
How I built a custom tmux workflow for Neovim tmux integration and keeping editor and AI assistant in sync, with simple pane navigation and zero friction context switching.
After years of broken updates and configuration drift, NixOS gave me reproducible, declarative Linux. Atomic rollbacks, Flakes, and the real learning curve, everything I wish I knew before switching.
Practical bash aliases and functions - navigation shortcuts, git helpers, safety nets, and quick config edits I use daily in my terminal workflow.
SvelteKit 5 migration looked simple, but the runes mental model caught me off guard. Here is what I learned after three days upgrading a production app.
I wasted a weekend on LangChainGo agent frameworks before giving up. Here is the simpler approach that actually works with local models: direct LLM calls, clear boundaries, and no parsing gymnastics.
Nix errors are famously incomprehensible. Here is how to decode them without losing your mind: read traces bottom-up, recognize the five common error types, and use the right debugging commands.
How I use Nix and direnv to create isolated, reproducible development environments. No more "works on my machine" — just clean, version-pinned shells that activate automatically.
A look at my first experience with Factorio's Lua API, building a tool to fix the stack size chore.
My first NixOS flake was a 500-line monster. Here is the flake-parts pattern that keeps my over 100 modules manageable, testable, and actually composable.
A step-by-step guide to hosting your SvelteKit app on Cloudflare Workers at zero cost. Learn the exact configuration, common pitfalls, and why this beats traditional hosting.
AI tools let anyone ship fast, but most AI-built products carry hidden risks that surface at the worst time. Here's what breaks and why.
How I used Go to automate the tedious part of Factorio's circuit network: building a self-monitoring mall for roboports and spaceships.
Cloudflare Workers are more than just a serverless platform. Here's how I actually use them for routing, API gateway, and more.
A look into implementing a rolling Adler32 checksum in Go, inspired by the rsync algorithm and Andrew Tridgell's research.
Mocks often lie. Here is why I prefer using Testcontainers for integration testing to ensure my code actually works with a real database.
The 'Don't Repeat Yourself' principle is often applied too early. Here is why I prefer duplication over the wrong abstraction.
A hands-on guide to building production-ready tool-using AI agents in Go using LangChainGo. Covers tool definitions, the agent executor, and memory.
How I actually structure Go microservices. A hands-on look at why I prioritize explicit dependencies, type-safe SQL, and internal boundaries.
How I used SvelteKit, Nix, and GitHub Actions to automate my content pipeline, including future-dated posts and a secure preview mode.
How I stopped fighting with terminal history and started using my SSH config as a productivity engine. A journey from manual IP typing to instant, reliable connections.
Stop hunting for fork URLs and branch names. Here are the two PR checkout workflows I use daily: a simple git config trick for quick reviews, and the GitHub CLI when I need to push fixes.
Stop reaching for the arrow keys. The 20+ bash shortcuts I actually use: jump words, delete to cursor, search history, suspend processes, and edit commands in your default editor.
I spent $300 and three weekends building a custom mechanical keyboard. Was it worth it? Here is what I learned about switches, foam mods, and why the spacebar still rattles.
The Neovim keybindings and modal editing workflow that doubled my coding speed — LSP setup, custom keybinds, and a keyboard-first approach to navigating code.