Keeping up with recent technology developments was already hard before AI. Now that LLMs can be used to produce more stuff even faster, the perceived amount of new tools and libraries that are published every day feels staggering. 
 I like to read Hacker News every now and then to get a rough overview of what is happening and what might be worth looking into. My subjective feeling was that…
During a recent cloud migration project that had Scaleway as target cloud I stumbled upon their Dedibox Start-9-M 
dedicated server offering, delivering an AMD Ryzen™ 5 PRO 3600 (6C/12T, 3.6 GHz) machine with 32 GB of memory and two 1
TB NVMe disks for a price point of 39,99€/month. The two NVMe disks paired with the attractive price make this a nice
offer for IO-intensive database…
A central aspect of the infrastructure deployed by Solidblocks cloud is the reduction of moving parts to minimize the potential attack surface. Instead of using a complex runtime involving control-planes and container schedulers, the deployed services rely on simple Debian-based VMs running plain services managed by systemd. 
 Despite the simplicity, security issues in the Linux kernel are…
Although AWS S3 buckets are as stable and easy as it gets, sometimes you might not want to have an AWS dependency at all, or you expect a lot of egress traffic, making it a potentially costly choice. 
 Luckily, a lot of alternative implementations exist, one of them is Garage , offering a performant open-source option for self-hosting. 
 Garage also offers public buckets, making it a nice…
April 2026 has not been kind to someone who is responsible for maintaining and securing online services, Copy Fail and dirtyfrag kept everyone busy with updating machines and making sure no data was lost or exfiltrated. 
 Environments provisioned with Solidblocks Cloud are always kept up to date, using Debian’s unattended-upgrade feature. While this works nicely to keep software packages…
Most of the projects I work on nowadays are hosted on GitHub. And since many of those projects are infrastructure related, a lot of the GitHub Actions based CI runs are long-running tests verifying vital aspects like provisioning and disaster recovery. Due to the slow nature of infrastructure tests when compared to unit tests, those runs burn a considerable amount of action runner time. 
 When…
For let’s say “geopolitical reasons” (I’ve always wanted to justify something with geopolitical reasons) I have been involved in quite a few Hyperscaler exits in the past year. While it is true that it is hard to find an exact match for services like AWS in Europe an important learning during those migrations was, that you do not always need…
As the number of ready-to-use Terraform modules included in my open source infrastructure components suite slowly grows, ensuring quality has been a constant topic during development. I wrote in this post about the challenges of testing infrastructure. 
 Dogfooding the infra-test library I wrote back then to test my newly released web-s3-docker module has led to some major improvements around…
A common obstacle I encounter when building deployments outside the typical hyperscalers like AWS or Azure is the issue where to store the initial artifacts needed to bootstrap the new deployment. Typical artifacts here are static files, like a Maven repositories, executables for services, Terraform state, Docker images or basically everything else that can be served via HTTP. 
 While for many…
As laid out in my previous post “ out of cloud ” migrating applications from the
big-hyperscalers to smaller (and cheaper) alternatives sometimes comes with the challenge to figure
out alternatives for features that may be missing in the target environment you are moving the application to. 
 In the past I have done a lot of AWS/GCP/Azure to Hetzner cloud migrations, and…
If you are using Terraform (or Tofu nowadays) you might already have run into the chicken-and-egg issue that comes with the infrastructure state storage. To store the state you need to have some kind of container for that state to live in, assuming you don’t want to store it locally which comes with its own set of issues. 
 And also because you always do infrastructure as code by the…
This post will detail and summarize the key architectural considerations and findings based on the experience of moving several environments from one of the usual hyperscaler-suspects like AWS/Azure/GCP to a self-managed, but still cloud hosted solution based on the Hetzner Cloud. The goal is to show the different considerations before attempting such an approach, as well as an exemplary target…
If you are ready for another instance of me rambling about developer experience, this post will detail a Gradle pattern to ensure that secrets for Java or Kotlin integration tests are readily available locally and in CI, without the need to manually set up the development environment.
When selecting a tech stack for my personal backup needs, I aim for the most boring but still supported software that is available. When it comes to data safety and resilience against disk failures and other disasters, the last thing I want is to discover that the shiny new feature that was just introduced in my backup solution ate all my data and saved 0s all the time. 
 I have been a heavy…
Just in time for the public holiday in Germany, the Solidblocks infrastructure components collection got another addition. solidblocks-dns is a Kotlin library that lets you interact with the Hetzner DNS API to easily manage DNS zones and records.
One of the main benefits of using infrastructure-as-code is the reproducibility of your environments. No matter what happens, you can wipe everything away and rebuild from scratch. Like with many things, practice is required to ensure that the bootstrap capability is not lost over time. 
 Typically, you will want to regularly wipe and rebuild your test (or development) environment to prevent…
As time goes by and a project grows, ideas and concepts that initially seemed like good and pragmatic solutions can sometimes deteriorate into a convoluted mess. Recently, implementing a small feature in the Solidblocks infrastructure suite went from a pleasant Friday afternoon coding session to an integration testing nightmare, caused by an overabundance of infrastructure testing approaches.…
Providing test utility classes or test fixtures for other projects in Gradle environments can be an annoying and cumbersome endeavor. Often the solutions involve the creation of extra projects to provide the needed testing functionality for other modules or projects, or include manipulation of Gradle source sets and configurations. This post shows how to achieve this using functionality that is…
I just want to parse a timestamp on the JVM 
 If you are in a hurry and just want to know which JVM (Java/Kotlin) library can parse which date formats look –> here <– for an overview. Alternatively, read on when you want to know why this page exists… 
 But Why? 
 I have been developing software on the JVM platform roughly 20 years now. Every now and then, I need to…
Solidblocks RDS PostgreSQL is a ready to use, all-batteries included Terraform module for deploying PostgreSQL databases to the Hetzner cloud . It is part of the Solidblocks library, which is a collection of reusable components for infrastructure operation, automation and developer experience. 
 And it has a performance issue. 
 The typical uses case until now was a simple and cheap…
An often overlooked and admittedly cumbersome topic when developing infrastructure as code (IaC), is the testing of the resources that were created from said infrastructure code. 
 Even a simple setup like a VM that is spun up in some cloud to serve HTTP requests, already confronts us with some obstacles to overcome.
A pragmatic approach for testing such a setup could be to ensure that…
If you are part of a platform team or develop libraries or SDKs that are used by other people, a small detail from my previous post of the developer experience series might have caught your eye. 
 
 There may be a README.MD somewhere with information […], but this information tends to get outdated very fast 
 
 This problem gets increasingly worse when you use your…

 This post is a part of my series about project developer experience, for the other posts have a look
 here . A fully functional example with all snippets from this post that can be used as a template is
available here , more
ready to use functions for writing do files are part of my open source project
 Solidblocks . 
 
 Imagine you join a new project and are given…
Angaben gemäß § 5 TMG 
 Christian Pelster 
 Querkamp 13 
 25451 Quickborn 
 Telefon: +49 176 23 81 7001 
 E-Mail: pelle@pelle.io 
 Haftungsausschluss – Disclaimer: 
 Haftung für Inhalte 
 Die Inhalte unserer Webseite wurden mit größtmöglicher Sorgfalt erstellt. Für die
Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine
Gewähr…
Imprint 
 Christian Pelster 
Querkamp 13 
25451 Quickborn 
 Responsible for content 
 Christian Pelster 
Querkamp 13 
25451 Quickborn 
 Contact 
 Telefon: +49 176 23 81 7001 
E-Mail: pelle@pelle.io 
 Liability for content 
 The content of this site has been created with the greatest of care. I cannot, however, guarantee that the information in it is…
After years of shifting workloads to the big cloud providers like AWS or Azure, I am now more often confronted with situations where the deployed cloud infrastructures become unmanageable cost and complexity wise.
A nice, fast and inexpensive alternative for smaller projects is the Hetzner Cloud featuring all basic needed building blocks like VMs, block devices, networking, firewalls and…
Although the situation greatly improved over the last 10 years, with very new hardware under Linux you sometimes may run into hardware compatibility issues. The following guide shows how to build an installable Ubuntu/Debian kernel package from a Linux kernel source tree. 
 This post is based on a wakeup-from-sleep issue that I had with my new Lenovo ThinkPad T14s G3. The Wi-Fi card had…
A personal pet peeve of mine when joining a new project or environment is the overall developer experience (DX). Under
this rather wide umbrella term I summarize everything that is needed to get a project running, tested and deployed apart
from the actual business code itself. Starting on the local development environment setup, over being able to build and
test locally to finally…
Being a freelance consultant for some time now, I find myself frequently coming back to one of my older posts on how to run a PostgreSQL database in the cloud, where the cloud is not one of the big ones that already offer a dedicated managed database service.
Although for example AWS RDS is an excellent and stable service, it can sometimes be a little too much (and to pricey as well).
One of the many fun aspects when taking over an existing codebase is that you inevitably learn something new - if you want or not ;-). 
 Today a user reported a bug, that some numbers that are derived from the diff of two dates produced incoherent results. Looking at the code, it turned out that the code in question uses PostgreSQLs AGE function to get the interval between two dates. The…
For projects with roots in the Java ecosystem the combination if Liquibase and Jooq is a popular approach on creating and evolving database schemas, as well as interacting with the created data afterwards.
I am a Freelance Software Developer and Infrastructure specialist with a strong background in system administration and software development. Having experienced the shift from operating infrastructure in on‑site data centers towards cloud based offerings, helps me to pick the
right technologies for the problem at hand. I have written operated and maintained software in a broad range of…
An often overlooked alternative to the big players in the cloud market is the Hetzner Cloud , developed by the well known German hosting company Hetzner. 
 Of course, it can’t compete with the 2 gazillion services from AWS but it doesn’t need to, because it already contains the basic building blocks for deploying scalable applications.. Namely, an equivalent for EC2, VPC, ALB, and…
This post will show you how to use vault, signed SSH keys and some bash glue code to secure SSH connections, make them more verifiable and allow flexible access to your SSH servers.