• 2025-07-01

    Deploying Python (Django) to Kubernetes: A practical guide with a complete DevOps Pipeline

    As businesses increasingly move to cloud-native architectures, the complexity of deploying and maintaining modern web applications continues to grow. Today, I want to share insights from a comprehensive project template I've developed that demonstrates DevOps best practices, from local development to production Kubernetes deployments. While this example uses Django, the patterns and practices apply to any modern web framework.

    The Challenge: Bridging the Gap from Tutorial to Production

    Most web framework tutorials stop at basic development servers. But production applications require so much more: containerization, orchestration, secrets management, CI/CD pipelines, and reproducible development environments. The gap between "hello world" and production-ready is where most teams struggle and where costly delays, security vulnerabilities, and scaling bottlenecks emerge.

    After years of building web applications across multiple technology stacks, I've distilled these battle-tested practices into hellok8s-django, a production-ready template that demonstrates the complete DevOps lifecycle, from local development to Kubernetes at scale. These patterns have proven successful with Python, Node.js, Go, Ruby, Haskell and other modern tech stacks.

    Read more…

    devenv devops docker kubernetes nix

  • 2023-06-19

    New homelab machine

    I've been meaning to share the new addition to my homelab setup for a while now but just never got around to it. It's a beast that's definitely overkill but I wanted to play around and future proof as much as possible.

    It initially started as a project to replace my old 2-bay Synology NAS. I needed an upgrade, storage wise, but I also wanted to switch to ZFS, and since Synology doesn't support ZFS I knew I'd have to build my own rig. That in turn meant I needed to figure out what I was going to install on the thing. Initially I looked at openmediavault but it didn't seem to support ZFS at the time (I don't know if this is still true). Then I looked at FreeNAS as they were going through their rebranding to TrueNAS - but I was weary about switching to FreeBSD at the time. I wanted something that I knew well (Linux) and that I can easily customize. Before you mention TrueNAS Scale (which is Linux based) it wasn't ready at the time1 and I was hesitant about all the cruft that comes pre-installed with it (my main issue with Synology). I guess I wanted to install and configure stuff my way when I need it.

    Read more…

    homelab nixos

  • 2021-12-09

    How I do backups

    Backups are important! I don't just mean for production environments either - you should back up your laptop regularly and in an automated fashion.

    I've started doing regular backups of my machines after suffering 2 consecutive drive failures with one of my laptops. After something like that (which BTW never happened since XD) you kind of realize that backups are not just a nice thing to have, but a hard requirement. In this blog post I'll outline how I've set up my on-site backup solution.

    Read more…

    backups haskell linux

  • 2019-05-12

    Haskell Showroom: Switching between different AWS accounts

    In my previous post I talked about denv and how I switch between different Kubernetes clusters.

    I also talked about the importance of being explicit about which environment you're currently working on, easily switching between and deactivating an environment so that we don't run accidental commands in the wrong context.

    Continuing this series, in this post I will talk about how to effectively switch between different AWS accounts.

    Read more…

    aws denv devops functional programming haskell haskell showroom open source