RSSAmplifier

Blog

Deni Bertovic

Blog posts by Deni Bertovic

denibertovic.comRSS feed ↗19 posts

Latest posts

You can just build things

Somewhere around summer 2025 I started taking AI coding agents 1 more seriously. I’d been somewhat dismissive of them for a while - the early versions produced code that looked plausible but fell apart rather quickly. They would often get stuck and make silly mistakes. The newer models are different. Not because they magically write perfect code, but because they’re good enough to be directed. You…

Slopbox: A sandbox for our AI slop :)

I don’t normally do this … but … occasionally I want to let an AI agent run unsupervised on a task: to generate a throwaway POC, explore an implementation idea, or hack on something while I’m doing other work. Even with each Agent’s permission system, giving it free rein over my repo feels uncomfortable. One bad rm -rf or overzealous refactor and I’m picking through git reflog trying to recover my…

Deploying Next.js to Kubernetes: A practical guide with a complete DevOps Pipeline

This post continues the hellok8s-* series, following my previous exploration of deploying a Django applications to Kubernetes . While the technology stack differs, the core DevOps principles and deployment challenges remain remarkably similar across frameworks. As modern web applications grow in complexity, the gap between development tutorials and production-ready deployments becomes increasingly…

Containers and Signal Handling: Why You Need to Care About PID 1

When running applications in Docker containers, many developers overlook a critical detail: what process runs as PID 1. This seemingly minor choice can lead to unresponsive containers, resource leaks, and unexpected behavior during shutdown. Why PID 1 is Special In Linux, the kernel treats PID 1 differently from all other processes. It’s the “init” process that bootstraps the system and has two…

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…

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…

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…

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…

Haskell Showroom: How to switch between multiple kubernetes clusters and namespaces

A while ago I decided that I was done writing anything in bash. I just won’t do it anymore! Instead I’ve started writing everything, even the smallest of tools, in Haskell. I just don’t think it’s possible to write good and maintainable software with bash, no matter how simple the tool might be. In my opinion the main benefit with bash is that it’s so easy to distribute to end users. There’s no…

Haskell and Docker: Down the rabbit hole and back

For the past couple of years I’ve been learning Haskell, and while I enjoy reading new materials in forms of books, papers, blogs posts and even tweets, thankfully I quickly came to realize that the best way to learn is to build things. That’s not to say I just jumped right in. I spent a long time just playing around with the language, exploring various language features, libraries and getting to…

Handling Permissions with Docker Volumes

In this post I’ll try to explain the method I use to avoid having permission issues when using Docker Volumes. This is pre Docker 1.10 (which added user namespaces) and I will talk about those in my next post. Before we begin let me explain what are Docker Volumes and what they’re used for. The official Docker docs explain this feature as follows: A data volume is a specially-designated directory…

Celery - Best Practices

If you’ve worked with Django at some point you probably had the need for some background processing of long running tasks. Chances are you’ve used some sort of task queue, and Celery is currently the most popular project for this sort of thing in the Python (and Django) world (but there are others). While working on some projects that used Celery for a task queue I’ve gathered a number of best…

Setting up Systemd on Debian in 10 minutes

Recently I’ve been reading more and more about Systemd. Now, most distros have already moved to Systemd but I’m using Debian and was stuck with init which was the default. Given the recent discussion on the Debian mailing lists about migrating to systemd as the new default, I was even more inclined to make the switch now and get used to it before it’s forced upon us. Actually I was really looking…

Docker and Logstash: Smarter Log Management For Your Containers

Docker currently supports getting logs from a container that logs to stdout/stderr. Everything that the process running in the container writes to stdout or stderr docker will convert to json and store in a file on the host machine’s disk which you can then retrieve with the docker logs command. This is handy but it has its drawbacks because you don’t get any log rotation and the file size of the…

Classes for all the things?

Recently I’ve been thinking a lot about how to simplify my code. Now, the key thing to note here is that simple != familiar . Classes for example are familiar to most people. But code consisting exclusively of classes and OOP concepts isn’t necessarily simple all of the time. The question arises: Is there something simpler? Well, the first thing that comes to mind, of course, good old functions.…

The switch to Nikola

I switched Blog engines because I wasn’t very happy with the one I was using ( Syte ) and I wanted something more simple. Something that wold let me focus on writing and not maintaining code. Don’t get me wrong, Syte is an awesome project, it just seems like way too much. And the deal breaker for me was the fact that it used Tumblr for hosting blog posts and Tumblr has one of the worst online…

One-liner Instant Postgres for your development environment

When working on web applications it’s very important to have a setup as similar to the production environment as possible. The major component here is using the same database locally, for development, as you use in production. I myself work mostly with Django and, as most of you Django devs know, it’s very easy to get started using a Sqlite database. Now, I’m not bashing on Sqlite, it definitely…

Pixbin.us just got an API

Took us awhile but Pixbin just got an API. Well…the beginning of one at least. You heard it here first folks. :) You can now upload images from your code. How to do it?! Here’s an example: import base64, urllib, urllib2 with open ( 'image.jpeg' ) as f: imagedata = base64.b64encode(f.read()) data = urllib.urlencode({ 'image' : imagedata, 'caption' : 'test' }) u = urllib2.urlopen(…

Finally

I’ve been struggling for a while now with the idea of writing a blog. The problem was that I never got around to actually making the site and months passed by. A while ago I stumbled upon a github project that was aiming to solve exactly this kind of issue. The thing is that sometimes people just don’t have enough time on their hands, and with a blog site the content is the thing that matters, not…