A Java geekNicolas Fränkel's blog
https://blog.frankel.ch/
enCopyright 2008-2026 Nicolas FränkelSat, 31 Jan 2026 09:47:59 +0000Sat, 31 Jan 2026 09:47:59 +0000Jekyllhttps://blog.frankel.ch/assets/pages/me/me.jpgA Java geek
https://blog.frankel.ch/
From a JAR to a full-fledged MacOS appA 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 compare their relative merits. In any case, I didn’t use it up until last week. And then, I was surprised to see that it didn’t work to rename a network volume, although it had in the past. In this brief post, I aim to describe the issue and its solution. The problem When launching the UberJAR, I couldn’t see the network volumes. ISun, 25 Jan 2026 00:00:00 +0000
https://blog.frankel.ch/jar-to-macos-app/
https://blog.frankel.ch/jar-to-macos-app/jarmacosappJavaChecked exceptions and lambdasJava’s checked exceptions were a massive improvement over C’s error-handling mechanism. As time passed and experience accumulated, we collectively concluded that we weren’t there yet. However, Java’s focus on stability has kept checked exceptions in its existing API. Java 8 brought lambdas after the 'checked exceptions are great' trend. None of the functional interface methods accepts a checked exception. In this post, I will demonstrate three different approaches to makSun, 18 Jan 2026 00:00:00 +0000
https://blog.frankel.ch/checked-exceptions-lambdas/
https://blog.frankel.ch/checked-exceptions-lambdas/exceptionserror handlinglambdasJavaFrom Cloudflare Zero-trust to TailscaleI 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 commenters advertising for Tailscale: Post by @[email protected] View on Mastodon I decided to give it a try and migrate my servers and devices to Tailscale. In this post, I want to describe how I did. Thanks to Heiko Does and higgins for prompting me to look further! What is Tailscale, how and why? A Zero Trust identity-based connectivity Sun, 11 Jan 2026 00:00:00 +0000
https://blog.frankel.ch/cloudflare-zero-trust-tailscale/
https://blog.frankel.ch/cloudflare-zero-trust-tailscale/cloudflaretailscalenetworkingTechnical2025 in retrospectiveFrom the beginning, the focus of this blog has been technical, very rarely organizational. I broke this unwritten rule once in 2015. I began writing retrospectives in 2023 on the year that had passed. Let’s continue the tradition, but with a wider scope than before. The situation warrants it. More chaos It’s a hard realization to admit, but the world is spiraling deeper and deeper into chaos. Russia’s invasion of Ukraine has now dragged into its third year, and still, neitheSun, 04 Jan 2026 00:00:00 +0000
https://blog.frankel.ch/2025-retrospective/
https://blog.frankel.ch/2025-retrospective/2025retrospectiveMiscellaneousYOW! 2025I have been eyeing the YOW! conferences for probably more than a decade. They occur in Australia, and feature top industry experts. I was thus overjoyed when they invited me to speak on the YOW! tour earlier this year. Here’s a summary of my amazing time there. My participation YOW! takes place in three different cities: Melbourne, Brisbane, and Sidney. I presented my brand new talk on WebAssembly on Kubernetes in each city. It stems from an earlier article, which I reworked and updatedSun, 14 Dec 2025 00:00:00 +0000
https://blog.frankel.ch/yow-2025/
https://blog.frankel.ch/yow-2025/conferencesreviewMiscellaneousYet another Rust ownership tutorialOne of the most important concepts to master in Rust is ownership and borrowing. Tons and tons of articles are solely dedicated to this narrow subject. This one tries to explain the concept with examples. I hope it helps you. Ownership is a set of rules that govern how a Rust program manages memory. All programs have to manage the way they use a computer’s memory while running. Some languages have garbage collection that regularly looks for no-longer-used memory as the program runs; in other Sun, 07 Dec 2025 00:00:00 +0000
https://blog.frankel.ch/yet-another-rust-ownership-tutorial/
https://blog.frankel.ch/yet-another-rust-ownership-tutorial/rustDevelopmentMy second Cloudflare TunnelI decided to stop using Twitter, but for my own content and supporting Ukraine against its barbarian invaders, I understood the contemporary media landscape was quite fragmented. I bet on Mastodon, Bluesky, and LinkedIn. My flow is the following: when I read a piece I find interesting, I schedule it for publication. The problem is that every social media platform has a different scheduler: Mastodon has the Mastodon scheduler, LinkedIn has an in-built feature, and Bluesky has…​ nothingSun, 30 Nov 2025 00:00:00 +0000
https://blog.frankel.ch/second-cloudflare-tunnel/
https://blog.frankel.ch/second-cloudflare-tunnel/cloudflarecloudflare tunnelotpauthenticationTechnicalMy first real Rust projectI have been learning Rust for a couple of years, and using it for pet projects and demos alike. Working for a JVM-heavy company, I thought it would be my fate forever. Last week, I had a nice surprise: I convinced my management that using Rust for a particular project was the right choice. It’s not a huge project, but I want to describe my experience using Rust in a 'real' project. The project Our main software platform has baked-in health sensors for monitoring. These sensors are exposSun, 23 Nov 2025 00:00:00 +0000
https://blog.frankel.ch/first-real-rust-project/
https://blog.frankel.ch/first-real-rust-project/rustDevelopmentAre you really wasting your time in Java without these 10 libraries?I recently read and shared You’re Wasting Time in Java Without These 10 Libraries. I commented on it a bit in my newsletter, but given the amount and intensity of reactions, I think a full-blown post is in order. The referenced libraries are: Project LombokMapStructJUnit 5 & MockitoSLF4J with LogbackApache Commons Lang & Google GuavaJacksonHibernate ValidatorSpring FrameworkApache HttpClient / OkHttpLiquibase or Flyway Lombok Project Lombok is a java library that automatically plugsSun, 16 Nov 2025 00:00:00 +0000
https://blog.frankel.ch/wasting-time-without-10-libraries/
https://blog.frankel.ch/wasting-time-without-10-libraries/librariesopinionJavaXML Schema Validation 1.1 in JavaThis week, I received an interesting task: dusting off a legacy Java application. The application analyzes specific XML files in proprietary format. I know XML doesn’t sound sexy to junior developers, but it has an amazing benefit. One can validate a file against a grammar. Such grammar is called an XSD, the acronym for XML Schema Definition. Fun fact: you write XSDs in XML. In this post, I explain the problem, what I tried, and the final working solution. The problem The good thing iSun, 09 Nov 2025 00:00:00 +0000
https://blog.frankel.ch/xml-schema-validation-1-1/
https://blog.frankel.ch/xml-schema-validation-1-1/xmlxsdvalidationxercesJava