RSSAmplifier

Blog

pelle.io

Recent content on pelle.io

pelle.ioRSS feed ↗34 posts

Latest posts

Hacker News, GitHub and AI

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…

Scaleway dedicated server PostgreSQL performance

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…

Solidblocks Security Update (Fragnesia)

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…

Solidblocks Cloud S3

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…

Solidblocks Cloud Operations

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…

Solidblocks Cloud Github

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…

Solidblocks Cloud

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…

Testing Terraform modules

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…

Web S3 Docker

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…

Solidblocks CLI Hetzner ASG

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…

Solidblocks CLI Terraform/Tofu

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…

Out of cloud

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…

Handling secrets in Gradle

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.

using borg 2.x with Hetzner object storage

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…

Solidblocks Hetzner DNS

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.

Solidblocks Hetzner Nuke

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…

Infrastructure testing with Solidblocks

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 fixtures in Gradle projects

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…

JVM: As time goes by

I just want to parse a timestamp on the JVM &#xA; If you are in a hurry and just want to know which JVM (Java/Kotlin) library can parse which date formats look &ndash;> here <&ndash; for an overview. Alternatively, read on when you want to know why this page exists&hellip; &#xA; But Why? &#xA; I have been developing software on the JVM platform roughly 20 years now. Every now and then, I need to…

PostgreSQL performance debugging part 1

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. &#xA; And it has a performance issue. &#xA; The typical uses case until now was a simple and cheap…

Infrastructure Testing with Testinfra

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. &#xA; 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.&#xA;A pragmatic approach for testing such a setup could be to ensure that…

SNippet EXtractor

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. &#xA; &#xA; There may be a README.MD somewhere with information [&hellip;], but this information tends to get outdated very fast &#xA; &#xA; This problem gets increasingly worse when you use your…

The do file

&#xA; This post is a part of my series about project developer experience, for the other posts have a look&#xA; here . A fully functional example with all snippets from this post that can be used as a template is&#xA;available here , more&#xA;ready to use functions for writing do files are part of my open source project&#xA; Solidblocks . &#xA; &#xA; Imagine you join a new project and are given…

Impressum

Angaben gemäß § 5 TMG &#xA; Christian Pelster &#xA; Querkamp 13 &#xA; 25451 Quickborn &#xA; Telefon: +49 176 23 81 7001 &#xA; E-Mail: pelle@pelle.io &#xA; Haftungsausschluss – Disclaimer: &#xA; Haftung für Inhalte &#xA; Die Inhalte unserer Webseite wurden mit größtmöglicher Sorgfalt erstellt. Für die&#xA;Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine&#xA;Gewähr…

Legal Notice

Imprint &#xA; Christian Pelster &#xA;Querkamp 13 &#xA;25451 Quickborn &#xA; Responsible for content &#xA; Christian Pelster &#xA;Querkamp 13 &#xA;25451 Quickborn &#xA; Contact &#xA; Telefon: +49 176 23 81 7001 &#xA;E-Mail: pelle@pelle.io &#xA; Liability for content &#xA; The content of this site has been created with the greatest of care. I cannot, however, guarantee that the information in it is…

Solidblocks Hetzner

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.&#xA;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…

Compiling Ubuntu Kernel Packages

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. &#xA; 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…

Project Developer Experience

A personal pet peeve of mine when joining a new project or environment is the overall developer experience (DX). Under&#xA;this rather wide umbrella term I summarize everything that is needed to get a project running, tested and deployed apart&#xA;from the actual business code itself. Starting on the local development environment setup, over being able to build and&#xA;test locally to finally…

Solidblocks RDS

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.&#xA;Although for example AWS RDS is an excellent and stable service, it can sometimes be a little too much (and to pricey as well).

What&#39;s my age again? (PostgreSQL Edition)

One of the many fun aspects when taking over an existing codebase is that you inevitably learn something new - if you want or not ;-). &#xA; 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…

JooQ In-Memory DSL generation with Liquibase and Gradle

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.

About Me

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&#xA;right technologies for the problem at hand. I have written operated and maintained software in a broad range of…

Hetzner RDS Postgres

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. &#xA; Of course, it can&rsquo;t compete with the 2 gazillion services from AWS but it doesn&rsquo;t need to, because it already contains the basic building blocks for deploying scalable applications.. Namely, an equivalent for EC2, VPC, ALB, and…

CA secured SSH connections

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.