Backend engineer. Homelab tinkerer. I write about software, systems, and things I’ve had to figure out the hard way.
Every System Rots. Some Rot Better Than Others.
Every System Rots. Some Rot Better Than Others. “Controlling complexity is the essence of computer programming.” ( Brian Kernighan ) I used to think good software meant clean software. Neat modules, clear naming, no surprises. Then I spent enough time in production codebases to understand that cleanliness is a snapshot, not a property. Every system starts clean. Given enough time and enough business pressure, none of them stay that way. And the ones that do stay clean pay a different price: velocity. You can hold the line, but the business will notice. ...
From Kubernetes to Dokploy: Simplifying My Homelab
Overview Most of the posts in this series so far have been “here’s how I built X.” This one’s different. It’s about something I built, used for a while, and then mostly walked away from: a Kubernetes cluster running Talos . This isn’t a “Kubernetes is bad” post. It’s a “here’s what it was actually like to run it at home, and why I ended up somewhere simpler” post. The short version: I moved from a Talos-based Kubernetes cluster to a single Proxmox host running a mix of LXC containers and VMs, with Dokploy and Docker Compose handling application deployment. ...
Monorepo Sync: From Private Repo to Public Subtrees
Overview I love the convenience of a monorepo for my homelab. Having my NixOS configs, blog, and custom apps in one place makes cross-project changes trivial. However, it creates a challenge: how do I share specific projects on GitHub without exposing my entire private infrastructure? The solution I’ve landed on uses git subtree to split off specific directories into their own public repositories. In this post, I’ll show how I moved from manual syncing with a Justfile to fully automated “Sync on Push” using OneDev . ...
One Repo to Rule Them All: Why I Chose a Monorepo
The Debate Nobody Wins Ask ten engineers whether to use a monorepo and you will get eleven opinions. The polyrepo crowd will tell you that separate repos mean clear ownership, independent versioning, and small focused histories. The monorepo crowd will point at Google, Meta, and Microsoft and say: if it scales there, it scales anywhere. Both camps are right about something. And both camps tend to argue past the thing that actually matters: what is the right fit for your situation? ...
Automating NixOS Deployments with OneDev and Colmena
Overview Managing a fleet of NixOS machines can quickly become a manual chore if you’re still running nixos-rebuild switch from your local machine. In my homelab, I’ve moved towards a “hands-off” infrastructure where every change committed to the main branch of my monorepo is automatically built and deployed. This post covers how I use NixOS Flakes in platform/nixos, OneDev for CI/CD, and Colmena for the final deployment “push”. The Infrastructure Stack My setup revolves around three main components: ...
Obsidian to Live: Automated Blog Pipeline with OneDev
Overview Before writing anything else on this blog, it felt right to write about the blog itself. By the time you’re reading this post, it has already gone through the exact pipeline described below: written in Obsidian , pushed to a git repo, built into a static site, packaged into a container, and deployed to dpall.dev without me touching a server. The goal was simple: writing should be the only manual step. Everything after “commit” should happen on its own. ...
Lorem Ipsum
Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. ...
Lorem Ipsum TOC
Lorem Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. Ipsum Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. ...
Test The Workflow
Test content here. Rest of the post. New Text.