<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on Michael Hönnig</title><link>https://michael.hoennig.de/en/blog/</link><description>Recent content in Blog on Michael Hönnig</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© 2026 Michael Hönnig</copyright><lastBuildDate>Sat, 05 Sep 2026 17:00:00 +0200</lastBuildDate><atom:link href="https://michael.hoennig.de/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>From JBake to Hugo: a Website Migration Planned with Werkbaum</title><link>https://michael.hoennig.de/en/blog/2026/2026-09-05-website-migration-planned-with-werkbaum/</link><pubDate>Sat, 05 Sep 2026 17:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2026/2026-09-05-website-migration-planned-with-werkbaum/</guid><description>This website ran for years on a very old JBake fork and has now moved to Hugo: 73 articles in two languages, old URLs, audio, admonitions. Implemented with an AI agent, steered through a &lt;code&gt;Werkbaum&lt;/code&gt;. This article describes the process and why &lt;code&gt;Werkbaum&lt;/code&gt; proved itself as a planning tool for agentic AI in particular.</description></item><item><title>SQL or CSS — Which Is the Better Language?</title><link>https://michael.hoennig.de/en/blog/2026/2026-09-01-sql-or-css-which-is-the-better-language/</link><pubDate>Tue, 01 Sep 2026 08:47:02 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2026/2026-09-01-sql-or-css-which-is-the-better-language/</guid><description>SQL and CSS are both declarative languages. Why do many backend developers write complex SQL queries with ease, yet despair over CSS? A comparison of locality, hidden dependencies, and the question of how declarative both languages really are.</description></item><item><title>Exploring Lombok’s val: Advantages and Disadvantages</title><link>https://michael.hoennig.de/en/blog/2025/2025-08-22-discussing-lombok-val/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2025/2025-08-22-discussing-lombok-val/</guid><description>This article examines Lombok’s &lt;code&gt;val&lt;/code&gt; — how it uses annotation processing to infer local variable types and enforce finality—highlighting benefits like cleaner, more readable code, compile-time safety, immutability, pre–Java 10 support, and seamless Lombok integration, while weighing drawbacks such as redundancy with Java 10+ var, reduced flexibility due to final variables, reliance on compiler internals with potential compatibility risks, and possible lag in new JDK support; it recommends using val chiefly in Lombok-heavy, pre–Java 10, immutable contexts, but preferring native var in modern Java and planning a long-term shift toward Java-native features.</description></item><item><title>Exploring the aider AI Coding Assistant in a Non-Trivial Codebase</title><link>https://michael.hoennig.de/en/blog/2025/2025-04-11-exploring-the-aider-ai-coding-assistant/</link><pubDate>Fri, 11 Apr 2025 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2025/2025-04-11-exploring-the-aider-ai-coding-assistant/</guid><description>While most AI code generation examples show how to quickly bootstrap a new web application, I was curious how far an AI coding assistant can take me in an existing, non-trivial codebase – one with a Java backend, automated tests, APIs (OpenAPI), PostgreSQL database migrations (Liquibase). So, I decided to explore the open-source AI tool aider, applying it to one of my Open Source projects.</description></item><item><title>Bad VPN Connection via WiFi With Surprise Solution</title><link>https://michael.hoennig.de/en/blog/2021/2021-01-30-bad-vpn-connection-via-wifi-with-surprise-solution/</link><pubDate>Sat, 30 Jan 2021 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2021/2021-01-30-bad-vpn-connection-via-wifi-with-surprise-solution/</guid><description>I had severe problems with PulseSecure VPN (with a MacBook Pro). Direct WiFi connections seemed to work fine, but as soon as the VPN was active, connections to the intranet were super slow or stopped working at all. When using a proxy to access the Internet, nothing went through anymore. I am still not sure about the cause, but found a solution.</description></item><item><title>My Questions on Twitter</title><link>https://michael.hoennig.de/en/blog/featured/my-questions-on-twitter/</link><pubDate>Thu, 14 Jan 2021 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/featured/my-questions-on-twitter/</guid><description>In this article I collection questions which I posted on Twitter, maybe you have an answer? Looking forward to your responses!</description></item><item><title>Checking in the Gradle Wrapper or Not?</title><link>https://michael.hoennig.de/en/blog/2020/2020-11-20-checkin-gradle-wrapper-or-not/</link><pubDate>Fri, 20 Nov 2020 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2020/2020-11-20-checkin-gradle-wrapper-or-not/</guid><description>The gradle wrapper can download and verify a specified version of gradle for a project without the need of a local gradle executable. The gradle documentation suggests to check it into the VCS (version control system, e.g. git). This article discusses the advantages and disadvantages of keeping the gradle wrapper in a VCS and presents an alternative.</description></item><item><title>COBOL in 2020? Try it on your PC!</title><link>https://michael.hoennig.de/en/blog/2020/2020-10-30-cobol-in2020-try-it-on-your-PC/</link><pubDate>Fri, 30 Oct 2020 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2020/2020-10-30-cobol-in2020-try-it-on-your-PC/</guid><description>COBOL (COmmon Business Oriented [programming] Language) dates back to 1959, and is still used in its realm of business software, mostly on mainframe computers. Of course, there are also many related software modernization and migration projects. Thus, once in a while even non-mainframe developers might need some COBOL knowledge. Commercial &lt;em&gt;COBOL&lt;/em&gt; systems, especially on real mainframes, are expensive. In this article I demonstrate how to set up the GnuCOBOL compiler and integrate it with Visual Studio Code on Ubuntu Linux, but it also works on Windows and macOS. This way, experimenting with COBOL becomes easy and cheap.</description></item><item><title>Render Snippets from Source Code with JBake + AsciiDoc</title><link>https://michael.hoennig.de/en/blog/2020/2020-10-26-jbake-asciidoc-render-snippets-from-source-code/</link><pubDate>Mon, 26 Oct 2020 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2020/2020-10-26-jbake-asciidoc-render-snippets-from-source-code/</guid><description>Using snippets from compilable source code files in prosa documents is a great approach. By doing so, I can make sure that the source code actually compiles. By adding unit tests, I can even make sure it does what it&amp;rsquo;s supposed to do. I knew such is possible with AsciiDoc/AsciiDoctor, but does it also work if AsciiDoctor is run via JBake?</description></item><item><title>Website and Blog Migration from WordPress to JBake</title><link>https://michael.hoennig.de/en/blog/2020/2020-10-16-website-and-blog-migration-from-wordpress-to-jbake/</link><pubDate>Thu, 15 Oct 2020 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2020/2020-10-16-website-and-blog-migration-from-wordpress-to-jbake/</guid><description>Finally, I had enough time to migrate my website and blog from &lt;em&gt;WordPress&lt;/em&gt; to &lt;em&gt;JBake&lt;/em&gt;, a static website generator written in &lt;em&gt;Java&lt;/em&gt;. In this article I explain why I switched the technology and how I automatically migrated my contents &amp;ndash; conversion-script included.</description></item><item><title>Can Kotlin or kscript be as short as Python?</title><link>https://michael.hoennig.de/en/blog/2019/2019-07-20-can-kotlin-be-as-short-as-python/</link><pubDate>Sat, 20 Jul 2019 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2019/2019-07-20-can-kotlin-be-as-short-as-python/</guid><description>While researching why so many people like Python, I found and article which showed how much more readable Python code is compared to Java code. I was curious how well Kotlin does that job.</description></item><item><title>An Object Spread Operator for Kotlin</title><link>https://michael.hoennig.de/en/blog/2019/2019-07-13-an-object-spread-operator-for-kotlin/</link><pubDate>Sat, 13 Jul 2019 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2019/2019-07-13-an-object-spread-operator-for-kotlin/</guid><description>This article demonstrates how at least some uses cases for an object spread operator can be implemented with Kotlin.</description></item><item><title>Project Euler Problem 001 with Haskell</title><link>https://michael.hoennig.de/en/blog/2019/2019-01-09-project-euler-problem-001-with-haskell/</link><pubDate>Wed, 09 Jan 2019 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2019/2019-01-09-project-euler-problem-001-with-haskell/</guid><description>Project Euler Problem 001 with Haskell. An exercise in Functional Programming.</description></item><item><title>Book Review: Java by Comparison: Become a Java Craftsman in 70 Examples</title><link>https://michael.hoennig.de/en/blog/2018/2018-11-24-Book-review-Java-by-Comparison/</link><pubDate>Sat, 01 Dec 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-11-24-Book-review-Java-by-Comparison/</guid><description>&amp;ldquo;Java by Comparison&amp;rdquo; leads the reader through 70 examples into software-craftship. Each example compares a snipped of typical &amp;ldquo;unclean&amp;rdquo; code with a &amp;ldquo;clean&amp;rdquo; replacement, including a short discussion about the reasoning.</description></item><item><title>Showing a progress bar for a long running find/xargs Linux bash shell pipe</title><link>https://michael.hoennig.de/en/blog/2018/2018-05-26-showing-a-progress-bar-for-a-long-running-find-xargs-linux-bash-shell-pipe/</link><pubDate>Sat, 26 May 2018 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-05-26-showing-a-progress-bar-for-a-long-running-find-xargs-linux-bash-shell-pipe/</guid><description>Wouldn&amp;rsquo;t it be cool having something like &lt;code&gt;find ... | xargs -L100 --show-progress-bar ...&lt;/code&gt;? Unfortunately this feature does not exist in &lt;code&gt;xargs&lt;/code&gt;. This article explains how the same result can be achieved by other means.</description></item><item><title>Working on Renewal of my Dated Website and Blog</title><link>https://michael.hoennig.de/en/blog/2018/2018-05-01-working-on-renewal-of-my-dated-website-and-blog/</link><pubDate>Tue, 01 May 2018 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-05-01-working-on-renewal-of-my-dated-website-and-blog/</guid><description>While amending my website for GDPR compliance, I noticed how dated it really is. Thus in the background I am working on a new solution.</description></item><item><title>Course Review "Spring Framework 5: Beginner to Guru" (Udemy)</title><link>https://michael.hoennig.de/en/blog/2018/2018-04-02-course-review-spring-framework-5-beginner-to-guru-udemy/</link><pubDate>Mon, 02 Apr 2018 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-04-02-course-review-spring-framework-5-beginner-to-guru-udemy/</guid><description>Wow, this amazing 34 hours video course Spring Framework 5: Beginner to Guru (with SpringBoot 2.0) is really quite massive! Learning almost full time, it took me a little over 2 weeks to work through. Ok, I admit, I only really completed ~99% because I skipped a few cookbook goodies which are currently completely irrelevant for me.</description></item><item><title>My Wish-List for a Lightweight but Powerful Notebook PC</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-30-my-wish-list-for-a-lightweight-but-powerful-notebook-pc/</link><pubDate>Fri, 30 Mar 2018 00:00:00 +0200</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-30-my-wish-list-for-a-lightweight-but-powerful-notebook-pc/</guid><description>For my new freelance project I need to carrying my notebook PC around to and from the clients project office. Unfortunately my business notebook PC is too clumsy (16&amp;quot;), thick (4cm) and heavy (~2.2kg) for such. Thus, I was looking for a new ultra light notebook PC which is still well usable for software development (mostly Java with Eclipse IDE …</description></item><item><title>Form submit method-mapping with @RequestMapping / @PostMapping etc. in Spring</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-23-form-submit-method-mapping-with-requestmapping-postmapping-etc-in-spring/</link><pubDate>Fri, 23 Mar 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-23-form-submit-method-mapping-with-requestmapping-postmapping-etc-in-spring/</guid><description>Recently I ran across a missing &lt;code&gt;method=&amp;quot;post&amp;quot;&lt;/code&gt; in a &lt;code&gt;&amp;lt;form ...&amp;gt;&lt;/code&gt; tag within a Thymeleaf template which was working despite an &lt;code&gt;@PostMapping&lt;/code&gt; annotation of the SpringFramework on the controller method. I was wondering how this could happen and did some investigation. Hopefully this article gives a better chance for the next one who runs into this problem.</description></item><item><title>LiveReload in Chrome and Firefox with SpringBoot and IntelliJ IDEA</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-19-livereload-in-chrome-and-firefox-with-springboot-and-intellij-idea/</link><pubDate>Mon, 19 Mar 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-19-livereload-in-chrome-and-firefox-with-springboot-and-intellij-idea/</guid><description>Working on a web application with SpringBoot and want your changes made in IntelliJ IDEA to be visible in the browser right away? Then this is for you:</description></item><item><title>Course Review "The Complete Microservices with Spring Course" (Udemy)</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-14-course-review-the-complete-microservices-with-spring-course-udemy/</link><pubDate>Wed, 14 Mar 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-14-course-review-the-complete-microservices-with-spring-course-udemy/</guid><description>Recently I&amp;rsquo;ve worked through the video course &amp;ldquo;The Complete Microservices with Spring Course&amp;rdquo; by MleTech Academy, LLC, which is an introduction to the most important Spring modules for building microservices.</description></item><item><title>infiniteBook - the Portable Personal Whiteboard Notebook</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-13-infinitebook-the-portable-personal-whiteboard-notebook/</link><pubDate>Tue, 13 Mar 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-13-infinitebook-the-portable-personal-whiteboard-notebook/</guid><description>A few months ago I&amp;rsquo;ve ran across an erasable notebook called infiniteBook (by EcoBook). I find it quite useful if I want sketch ideas on some piece of &amp;ldquo;paper&amp;rdquo; and be able to easily erase and correct parts like on a whiteboard at the wall.</description></item><item><title>Learning software technologies (and others topics) with Udemy</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-06-learning-software-technologies-and-others-topics-with-udemy/</link><pubDate>Tue, 06 Mar 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-06-learning-software-technologies-and-others-topics-with-udemy/</guid><description>The business model does not urge you into a subscription, like many similar services do, but is based on a one-time fee for each course up to several hundred US$/€. There are frequent sales where you can get many courses for just about US$/€ 11 to US$/€ 20. And you get lifetime access for this fee, even on the sales …</description></item><item><title>Course Review „Become at ease with Java 8“ (Udemy)</title><link>https://michael.hoennig.de/en/blog/2018/2018-03-02-course-review-become-at-ease-with-java-8-udemy/</link><pubDate>Fri, 02 Mar 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-03-02-course-review-become-at-ease-with-java-8-udemy/</guid><description>Having mostly used Java 7 in the last years and after some month of coding only with TypeScript, JavaScript and Solidity, I&amp;rsquo;ve now worked through the video course „Become at ease with Java 8“ by Stijn De Mulder. My motivation was to give me a refresh on Java 8 features, which I only knew from magazine articles and &amp;ldquo;playing around&amp;rdquo;.</description></item><item><title>Course Review "Ethereum and Solidity: The Complete Developer's Guide" (Udemy)</title><link>https://michael.hoennig.de/en/blog/2018/2018-02-19-course-review-ethereum-and-solidity-the-complete-developers-guide-udemy/</link><pubDate>Mon, 19 Feb 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-02-19-course-review-ethereum-and-solidity-the-complete-developers-guide-udemy/</guid><description>I&amp;rsquo;ve just completed &amp;ldquo;Ethereum and Solidity: The Complete Developer&amp;rsquo;s Guide&amp;rdquo;. It&amp;rsquo;s really a great course about Solidity/Ethereum smart contract development which enables the learner not just to write their own smart contract on the Ethereum blockchain, but also how to test it (manually and automated) and how to integrate it into a web application.</description></item><item><title>My #swDevTermOfTheDay Campaign on Twitter</title><link>https://michael.hoennig.de/en/blog/2018/2018-02-12-my-swdevtermoftheday-campaign-on-twitter/</link><pubDate>Mon, 12 Feb 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-02-12-my-swdevtermoftheday-campaign-on-twitter/</guid><description>Some weeks ago I talked to some other IT guys about what kind of qualifications software developers really need. Employers and recruiters are usually looking for practical experience in certain technologies or with specific products; but these change quickly over time. Thus it could easily be that somebody got employed for his (or her) experience with e.g. Java EE from …</description></item><item><title>Event-Sourcing - Be complete with your events!</title><link>https://michael.hoennig.de/en/blog/2018/2018-02-03-eventsourcing-be-complete-with-your-events/</link><pubDate>Sat, 03 Feb 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-02-03-eventsourcing-be-complete-with-your-events/</guid><description>In my experimental side-project, Gleanius &lt;a href="https://michael.hoennig.de/en/blog/2018/2018-02-03-eventsourcing-be-complete-with-your-events/#fn-1" &gt;[1]&lt;/a&gt;, a microlearning app, I am using Event-Sourcing &lt;a href="https://michael.hoennig.de/en/blog/2018/2018-02-03-eventsourcing-be-complete-with-your-events/#fn-2" &gt;[2]&lt;/a&gt; and CQRS &lt;a href="https://michael.hoennig.de/en/blog/2018/2018-02-03-eventsourcing-be-complete-with-your-events/#fn-3" &gt;[3, 4]&lt;/a&gt;. This turned out to be an extremely good decision because several times I later found out that new features needed more information in my read model. And the great thing was that in most cases the information was already available in the …</description></item><item><title>Getting rid of endless "../../.." in ES6/TypeScript imports of Ionic projects</title><link>https://michael.hoennig.de/en/blog/2018/2018-01-22-getting-rid-of-endless-in-es6-typescript-imports-of-ionic-projects/</link><pubDate>Mon, 22 Jan 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-01-22-getting-rid-of-endless-in-es6-typescript-imports-of-ionic-projects/</guid><description>You know these ugly ES6/TypeScript import statements with endless sequences of &amp;ldquo;../../..&amp;rdquo; like in this example:</description></item><item><title>Giving my blog another try</title><link>https://michael.hoennig.de/en/blog/2018/2018-01-22-giving-my-blog-another-try/</link><pubDate>Mon, 22 Jan 2018 00:00:00 +0100</pubDate><guid>https://michael.hoennig.de/en/blog/2018/2018-01-22-giving-my-blog-another-try/</guid><description>For quite a while I&amp;rsquo;ve not published any blog entry, even though I&amp;rsquo;ve started some, but yet never published. One reason is, that I consider myself a Coder not a Blogger. I really love to create solutions to problems, but once I figured it out, it all to often looks too simple to me to publish, at least on the …</description></item></channel></rss>