I've quite a lengthy experience with GitHub workflows, but not up to the point where I can claim I'm an expert. However, I recently developed a new workflow, and it prompted me to write this post. Feel free to add your own.
What are GitHub workflows...
When I first started attending conferences, I diligently tried to write down notes and publish them. It forced me to actively listen to the talks I was attending. With the number of conferences rising, I couldn't keep the rhythm. When I switched my c...
Last week, I described several approaches to OpenTelemetry on the JVMhttps://blog.frankel.ch/opentelemetry-tracing-jvm/, their requirements, and their different results. This week, I want to highlight several gotchas found across stacks in the zero-c...
You may know I'm a big fan of OpenTelemetry. I recently finished developing a master class for the YOW! conferencehttps://yowcon.com/melbourne-2025/masterclasses/560/gain-practical-in-depth-experience-with-observability-using-opentelemetry at the end...
Git has become a fundamental part of our developers' daily routine that it's hard to remember our lives without it. And yet, most of us use a limited set of commands and options. Today, I want to focus on two commands most developers probably use eve...
Pattern matching is a major feature in software development. While pattern matching applies in several locations, its current usage is limited to switch case blocks. I want to compare the power of pattern matching across a couple of programming langu...
This post will be short, but I hope it prove to be useful.
My home is getting more and more connected, and the number of my automations grows each passing month. Recently, I equipped my roller shutters with connected Somfy engines so they could roll...
With years, I accumulated devices on my local network, which in general run on Linux. I meticulously added them to my /etc/hosts/ file, so as not to remember their IP. Something puzzled me, though: my Synology NAS was readily available as nas.local o...
For the last two weeks, I've kicked the tires of OpenRewrite. At first, I created a recipe to move Kotlin source fileshttps://blog.frankel.ch/openrewrite-recipes/1/ as per the official recommendations with a set package name. I then improved the reci...
I started discovering OpenRewrite last week by writing a Kotlin recipe that moves Kotlin files according to the official directory structure recommendation. I mentioned some future works, and here they are. In this post, I want to describe how to com...
Rust offers different ways to initialize compile time-initialized variables. Recently, I had to create a runtime-initialized variable: existing approaches don't work in this case. I want to describe multiple ways to achieve it in this post.
Constant...
Disclaimer: This post includes affiliate links; I may receive compensation if you purchase the book from the different links provided in this post.
This review is about Writing for Developershttps://www.manning.com/books/writing-for-developers?utmso...
I recently acquired Netatmo smart radiator valveshttps://www.netatmo.com/en-eu/additional-smart-radiator-valve to manage my rooms' temperature remotely. I'm not skilled at manual tasks, but I could easily replace the old thermo-static valves. I then ...
I continue to take care of my Home Assistant. This week, I replaced my original setup with Cloudflare Tunnelhttps://developers.cloudflare.com/cloudflare-one/connections/connect-networks/.
This is the 6th post in the My journey with Home Assistant fo...
In the early days of IT, we manually configured servers–each one a precious snowflake, lovingly maintained and documented. But the size of the infrastructure grew and this approach couldn't scale. Chef and Puppet popularized the idea of Infrastructur...
Last year, I started to dig a bithttps://blog.frankel.ch/langchain4j-musings/ around LangChain4Jhttps://docs.langchain4j.dev/. It's a fast-growing project, and I wanted to get familiar with the updates. I also wanted to check how to integrate a Model...
Recently, while working on a workshop titled Testing Your Pull Request on Kubernetes with GKE, and GitHub Actionshttps://loftlabs-experiments.github.io/workshop-test-pr-k8s/, I faced twice the same issue: service A needs service B, but service A star...
While working on my demohttps://github.com/ajavageek/wasm-kubernetes on WebAssembly and Kubernetes, I wanted to create three different binaries based on the same code:
Native: compile the Rust code to regular native code as a baseline
Embed: compi...
I have presented my OpenTelemetry demohttps://github.com/nfrankel/opentelemetry-tracing many times, and I still do. Each time, the audience is different. To make no two presentations the same, I always ask attendees what stack they are more intereste...
I've been a big fan of Mutation Testinghttps://en.wikipedia.org/wiki/Mutationtesting since I discovered PIThttps://pitest.org/. As I dive deeper into Rust, I wanted to check the state of mutation testing in Rust.
Starting with cargo-mutants
I found...