atlas news
A Java Geek
26 april
00h00
Three Mastodon issues because of Cloudflare Bot protection
I noticed some time ago that three Mastodon features had stopped working on my blog. Each of them seemed like a separate problem, but they had the...
19 april
00h00
Making illegal state unrepresentable
A couple of years ago, I wrote that The Builder pattern is a finite state machine . A state machine consists of states and transitions between them....
12 april
00h00
A GitHub agentic workflow
Last month, I became aware of GitHub agentic workflows. I read the site carefully, but the use cases weren’t very exciting to me. I tried the...
05 april
00h00
Experimenting with AI subagents
I like to analyze codebases I start working on, or that I left for months. I ask my coding assistant, case in point, Copilot CLI: ’analyze the...
29 march
00h00
One tip for successful OpenTelemetry projects
Leading your organization to use OpenTelemetry is a challenge. In addition to all the usual project hurdles, you’ll face one of these two...
22 march
00h00
The Software Architect Elevator
I don’t think it’s necessary to introduce Gregor Hohpe. I’m a big fan, having read Enterprise Integration Patterns, and I’ve...
15 march
00h00
Writing an agent skill
Most developers now use coding assistants. I do too Copilot at work, Claude Code at home. As a developer, I prefer not to repeat myself. This post...
08 march
00h00
Pi-hole behind Tailscale
As I age, I become increasingly cautious about my privacy. The slope the world is sliding on is also a big, unfortunate incentive. I have been eying...
01 march
00h00
Ready-to-use virtual clusters
vCluster is a solution for creating virtual clusters within a host Kubernetes cluster. Virtual clusters are a Kubernetes concept that enables...
22 february
00h00
JVM timing options
For as long as I have been coding in Java, we have had requirements to measure the execution time of blocks of code. While the current good practice...
15 february
00h00
Migrating from Jekyll to Hugo... or not
Most of my blog posts are lessons learned. I’m trying to achieve something, and I document the process I used to do it. This one is one of the...
08 february
00h00
Rediscovering Java ServiceLoader: Beyond Plugins and Into Capabilities
When you think of Java modularity, chances are your first thoughts land on JPMS, or perhaps on Spring’s flexible configuration model. For those who ...
01 february
00h00
Feedback on checked exceptions and lambdas
I got a lot of interesting feedback on Checked exceptions and lambdas. Let’s start with my own: after writing the post, I realized I had...
25 january
00h00
From a JAR to a full-fledged MacOS app
A couple of years ago, I developed a small Kotlin GUI to help me rename my files in batch. I actually created it with different JVM frameworks to...
18 january
00h00
Checked exceptions and lambdas
Java’s checked exceptions were a massive improvement over C’s error-handling mechanism. As time passed and experience accumulated, we...
11 january
00h00
From Cloudflare Zero-trust to Tailscale
I have spent some time last year implementing Cloudflare Tunnels on my Home Assistant and my Synology NAS. On Mastodon, I had not one but two...
04 january
00h00
2025 in retrospective
From the beginning, the focus of this blog has been technical, very rarely organizational. I broke this unwritten rule once in 2015. I began writing...
14 december
00h00
YOW 2025
I have been eyeing the YOW conferences for probably more than a decade. They occur in Australia, and feature top industry experts. I was thus...
07 december
00h00
Yet another Rust ownership tutorial
One of the most important concepts to master in Rust is ownership and borrowing. Tons and tons of articles are solely dedicated to this narrow...
30 november
00h00
My second Cloudflare Tunnel
I decided to stop using Twitter, but for my own content and supporting Ukraine against its barbarian invaders, I understood the contemporary media...