<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="https://blog.bmarwell.de/feed.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Ben’s Build and B(r)ass Notes</title>
  <subtitle>IT Insights and Build Breakdown</subtitle>
  <link href="https://blog.bmarwell.de"/>
  <link rel="self" href="https://blog.bmarwell.de/feed.xml" />
  <updated>2026-08-09T10:29:27Z</updated>

  <author>
    <name>Benjamin Marwell</name>
    <uri>https://bmarwell.de/</uri>
  </author>
  <id>https://blog.bmarwell.de/</id>
  <generator uri="https://jbake.org/">JBake.org</generator>
  <icon>https://blog.bmarwell.de/images/favicon128.png</icon>
  <logo>https://blog.bmarwell.de/images/bens_it_kommentare.png</logo>

  <entry>
    <!-- lang="en-GB"  -->
    <title>jfmt and BetterBranch: unexpected reach</title>
    <link href="https://blog.bmarwell.de/2026/08/09/jfmt-betterbranch-unexpected-reach.html"/>
    <id>https://blog.bmarwell.de/2026/08/09/jfmt-betterbranch-unexpected-reach.html</id>
    <published>2026-08-09T00:00:00Z</published>
    
    <summary>jfmt and BetterBranch got shared, packaged, and discussed in places I did not expect, which reminded me that tiny tools can travel surprisingly far.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>Small tools sometimes travel much further than you expect.
&lt;strong&gt;&lt;code&gt;jfmt&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;BetterBranch&lt;/code&gt;&lt;/strong&gt; both did that for me.
What matters here is not which repository they came from.
It is that Java still makes good CLI tools, especially when they are compiled to native binaries and easy to pass around.
People did not just repost a link.
They packaged the tools, compared them with related projects, and added context of their own.</p>
      <p><strong><a href="https://blog.bmarwell.de/2026/08/09/jfmt-betterbranch-unexpected-reach.html" title="Read the full article: jfmt and BetterBranch: unexpected reach">Read the full article "jfmt and BetterBranch: unexpected reach" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>BetterBranch: A tiny Git helper</title>
    <link href="https://blog.bmarwell.de/2026/08/05/betterbranch-tiny-git-helper.html"/>
    <id>https://blog.bmarwell.de/2026/08/05/betterbranch-tiny-git-helper.html</id>
    <published>2026-08-05T20:40:00Z</published>
    <updated>2026-08-05T20:42:31Z</updated>
    <summary>Introducing 'BetterBranch' for Git-based development. It features a simple list of branches with ahead/behind status and coloured output.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>BetterBranch is a tiny Git helper that lists local branches with ahead/behind counts and the age of each branch tip.
I rewrote it in Java and compiled it to a native binary so it stays fast and self-contained.</p>
      <p><strong><a href="https://blog.bmarwell.de/2026/08/05/betterbranch-tiny-git-helper.html" title="Read the full article: BetterBranch: A tiny Git helper">Read the full article "BetterBranch: A tiny Git helper" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="de-DE"  -->
    <title>JavaLand 2026 Rückblick: Drei praktische Maven-Ideen, die du sofort ausprobieren kannst</title>
    <link href="https://blog.bmarwell.de/2026/03/12/javaland-2026-zusammenfassung-frei-praktische-maven-ideen.html"/>
    <id>https://blog.bmarwell.de/2026/03/12/javaland-2026-zusammenfassung-frei-praktische-maven-ideen.html</id>
    <published>2026-03-14T20:40:00Z</published>
    <updated>2026-03-14T20:42:31Z</updated>
    <summary>Maarten Mulders und ich haben unseren Talk »Accelerating Maven Builds« auf der JavaLand 2026 in einem 40-Minuten-Slot gehalten. Drei konkrete Tipps zum Sofort-Ausprobieren: mvnd als Drop-In-Ersatz für einen warmen JVM-Start, mehr Reactor-Module für parallele Builds, und die Maven Build Cache Extension gegen redundante Arbeit.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>&lt;strong&gt;JavaLand 2026&lt;/strong&gt; schloß am Mittwoch, den 11. März ihre Pforten für die Vorträge und Aussteller, und Maarten Mulders und ich &lt;a href=&quot;/talks/accelerating-maven-builds.html&quot;&gt;hatten viel Spaß mit unserem Talk »Accelerating Maven Builds«&lt;/a&gt;.
Wir haben praktische Tipps und Tricks zum Thema &lt;a href=&quot;https://maarten.mulders.it/2024/03/measure-your-maven-build/&quot;&gt;»wie messe ich meinen Build«&lt;/a&gt; und wie beschleunige ich meinen Maven-Build geteilt.
Von den Fragen aus dem Publium haben wir geschlossen, dass es viel Interesse an diesem Thema gibt.</p>
      <p><strong><a href="https://blog.bmarwell.de/2026/03/12/javaland-2026-zusammenfassung-frei-praktische-maven-ideen.html" title="Read the full article: JavaLand 2026 Rückblick: Drei praktische Maven-Ideen, die du sofort ausprobieren kannst">Read the full article "JavaLand 2026 Rückblick: Drei praktische Maven-Ideen, die du sofort ausprobieren kannst" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>JavaLand 2026 recap: three practical Maven build ideas to try now</title>
    <link href="https://blog.bmarwell.de/2026/03/12/javaland-2026-recap-three-practical-maven-build-ideas.html"/>
    <id>https://blog.bmarwell.de/2026/03/12/javaland-2026-recap-three-practical-maven-build-ideas.html</id>
    <published>2026-03-12T21:12:00Z</published>
    <updated>2026-03-13T22:45:31Z</updated>
    <summary>Maarten Mulders and I gave our »Accelerating Maven Builds« talk at JavaLand 2026 in a 40-minute slot. Here are the three concrete tips we covered: drop-in replacement mvnd for a warm JVM, splitting into more reactor modules to unlock parallel builds, and the Maven Build Cache Extension to skip redundant work.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>&lt;strong&gt;JavaLand 2026&lt;/strong&gt; closed yesterday, and Maarten Mulders and I &lt;a href=&quot;/talks/accelerating-maven-builds.html&quot;&gt;had a blast presenting our talk »Accelerating Maven Builds«&lt;/a&gt;.
We shared practical tips and tricks &lt;a href=&quot;https://maarten.mulders.it/2024/03/measure-your-maven-build/&quot;&gt;how to measure&lt;/a&gt; and speed up your Maven builds.
From the questions from the audience we concluded that there’s a lot of interest in this topic.</p>
      <p><strong><a href="https://blog.bmarwell.de/2026/03/12/javaland-2026-recap-three-practical-maven-build-ideas.html" title="Read the full article: JavaLand 2026 recap: three practical Maven build ideas to try now">Read the full article "JavaLand 2026 recap: three practical Maven build ideas to try now" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>Crawled, Not Indexed: The Schema Bugs That Outlasted Every Performance Fix</title>
    <link href="https://blog.bmarwell.de/2026/03/09/crawled-not-indexed-schema-bugs-outlasted-every-performance-fix.html"/>
    <id>https://blog.bmarwell.de/2026/03/09/crawled-not-indexed-schema-bugs-outlasted-every-performance-fix.html</id>
    <published>2026-03-09T00:00:00Z</published>
    <updated>2026-03-14T00:00:00Z</updated>
    <summary>815 pages stuck in »Crawled – currently not indexed« despite weeks of performance work. The real culprit: silent JSON-LD and microdata bugs introduced during the 2022 JBake migration. This post details exactly what broke, how I found it with Rich Results Test and Google Search Console, and what the fixes were.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>Last year I found out I got completely deindexed by Google.
My blog is still not indexed, despite all the work I put in.
So I decided to write a follow-up to &lt;a href=&quot;/2025/12/30/how-i-got-deindexed-by-google.html&quot;&gt;How I Got Deindexed by Google&lt;/a&gt; where I analysed what was wrong with my blog.
Less surprisingly, there was more to fix.
Those silent bugs in the blog&amp;#8217;s structure and markup were present since 2022, when I migrated my blog to jbake.</p>
      <p><strong><a href="https://blog.bmarwell.de/2026/03/09/crawled-not-indexed-schema-bugs-outlasted-every-performance-fix.html" title="Read the full article: Crawled, Not Indexed: The Schema Bugs That Outlasted Every Performance Fix">Read the full article "Crawled, Not Indexed: The Schema Bugs That Outlasted Every Performance Fix" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>How I Got Deindexed by Google (And How I Fixed It)</title>
    <link href="https://blog.bmarwell.de/2025/12/30/how-i-got-deindexed-by-google.html"/>
    <id>https://blog.bmarwell.de/2025/12/30/how-i-got-deindexed-by-google.html</id>
    <published>2025-12-30T00:00:00Z</published>
    <updated>2026-03-14T00:00:00Z</updated>
    <summary>From 400 indexed pages to just 10: my journey through a Google deindexing nightmare and the comprehensive technical and content improvements that brought my blog back.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>When Google&amp;#8217;s algorithm decides your site isn&amp;#8217;t worthy anymore, it happens fast.
One day you&amp;#8217;re ranking for your content, the next you&amp;#8217;ve dropped from 400 indexed pages to just 10.
Zero clicks, zero impressions.</p>
      <p><strong><a href="https://blog.bmarwell.de/2025/12/30/how-i-got-deindexed-by-google.html" title="Read the full article: How I Got Deindexed by Google (And How I Fixed It)">Read the full article "How I Got Deindexed by Google (And How I Fixed It)" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>Regex vs. Email Addresses: A Battle You’ll Always Lose</title>
    <link href="https://blog.bmarwell.de/2025/09/05/regex-vs-email-addresses-battle-youll-lose.html"/>
    <id>https://blog.bmarwell.de/2025/09/05/regex-vs-email-addresses-battle-youll-lose.html</id>
    <published>2025-09-06T10:22:51Z</published>
    <updated>2025-09-06T00:00:00Z</updated>
    <summary>RFC 2822 allows characters like !, +, and even spaces (quoted) in email addresses — but most regex validators silently reject them. This post walks through what the spec actually permits, shows a real-world gallery of broken validators, and explains why server-side verification beats regex every time.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>You can register and log in into many websites using your email address as login ID.
But what happens if you cannot enter your valid email address into the form?
The root cause of this often is that some developers did not read RFC 2822.
Many web services do not allow email addresses which are valid, according to the specification.</p>
      <p><strong><a href="https://blog.bmarwell.de/2025/09/05/regex-vs-email-addresses-battle-youll-lose.html" title="Read the full article: Regex vs. Email Addresses: A Battle You’ll Always Lose">Read the full article "Regex vs. Email Addresses: A Battle You’ll Always Lose" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>There might be a decent code formatter for Java after all!</title>
    <link href="https://blog.bmarwell.de/2025/08/30/there-might-be-a-decent-code-formatter-java.html"/>
    <id>https://blog.bmarwell.de/2025/08/30/there-might-be-a-decent-code-formatter-java.html</id>
    <published>2025-08-30T22:39:51Z</published>
    <updated>2025-08-30T00:00:00Z</updated>
    <summary>palantir-java-format still can't format text blocks or unnamed variables two years after the issues were opened. So I built jdtfmt: a gofmt-style CLI formatter for Java, backed by Eclipse JDT, with native binaries for Linux, Mac, and Windows. Early stage — join the discussion.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>&lt;a href=&quot;https://jqno.nl/post/2024/08/24/why-are-there-no-decent-code-formatters-for-java/&quot;&gt;&lt;strong&gt;Why are there no decent code formatters for Java?&lt;/strong&gt;&lt;/a&gt; – a great question asked by Jan Ouwens one year ago.
I found myself asking the same question after palantir-java-format stopped working for me.</p>
      <p><strong><a href="https://blog.bmarwell.de/2025/08/30/there-might-be-a-decent-code-formatter-java.html" title="Read the full article: There might be a decent code formatter for Java after all!">Read the full article "There might be a decent code formatter for Java after all!" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>You might already have a Maven repository</title>
    <link href="https://blog.bmarwell.de/2025/04/28/you-might-already-have-maven-repository.html"/>
    <id>https://blog.bmarwell.de/2025/04/28/you-might-already-have-maven-repository.html</id>
    <published>2025-04-28T06:17:35Z</published>
    <updated>2026-03-13T22:45:31Z</updated>
    <summary>Avoid setting up a separate Maven repository! Discover how your existing Git host (GitHub, GitLab, Gitea) might already serve your Java artifacts.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>Recently, I saw this post about &lt;strong&gt;hosting a Maven Repository&lt;/strong&gt; on Reddit:</p>
      <p><strong><a href="https://blog.bmarwell.de/2025/04/28/you-might-already-have-maven-repository.html" title="Read the full article: You might already have a Maven repository">Read the full article "You might already have a Maven repository" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>Feed the Daemon: Faster Builds with Maven Reactor Modules #SnailToRocket</title>
    <link href="https://blog.bmarwell.de/2025/04/24/feed-daemon-faster-builds-maven-reactor-modules-snailtorocket.html"/>
    <id>https://blog.bmarwell.de/2025/04/24/feed-daemon-faster-builds-maven-reactor-modules-snailtorocket.html</id>
    <published>2025-04-24T06:39:51Z</published>
    <updated>2025-04-24T00:00:00Z</updated>
    <summary>Accelerate Maven! Use Maven Reactor Modules to unlock parallel execution for dramatically faster builds &amp; better software architecture. #SnailToRocket</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>Tired of &lt;strong&gt;sluggish Apache Maven builds&lt;/strong&gt; slowing down your development cycle?
Maven Reactor Modules allow you to split a project into smaller, independently buildable units.
Discover how strategically breaking down your application into Maven Reactor Modules can &lt;strong&gt;dramatically accelerate build times&lt;/strong&gt; through parallel execution and improve your overall software architecture.</p>
      <p><strong><a href="https://blog.bmarwell.de/2025/04/24/feed-daemon-faster-builds-maven-reactor-modules-snailtorocket.html" title="Read the full article: Feed the Daemon: Faster Builds with Maven Reactor Modules #SnailToRocket">Read the full article "Feed the Daemon: Faster Builds with Maven Reactor Modules #SnailToRocket" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>Creating an App Distribution with Apache Maven and JReleaser</title>
    <link href="https://blog.bmarwell.de/2025/04/12/creating-app-distribution-using-maven-jreleaser.html"/>
    <id>https://blog.bmarwell.de/2025/04/12/creating-app-distribution-using-maven-jreleaser.html</id>
    <published>2025-04-12T20:39:51Z</published>
    <updated>2025-04-17T00:00:00Z</updated>
    <summary>Distribute your Java utilities or applications seamlessly: create .tar.gz and .zip archives with Maven and JReleaser, ready for GitHub Releases.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>A common question among those new to Apache Maven and Java is how to create an application distribution.
This article guides you through creating an application distribution using &lt;a href=&quot;https://maven.apache.org/&quot;&gt;Apache Maven&lt;/a&gt; and the powerful &lt;a href=&quot;https://jreleaser.org/&quot;&gt;JReleaser tool&lt;/a&gt;, including its Maven plugin.</p>
      <p><strong><a href="https://blog.bmarwell.de/2025/04/12/creating-app-distribution-using-maven-jreleaser.html" title="Read the full article: Creating an App Distribution with Apache Maven and JReleaser">Read the full article "Creating an App Distribution with Apache Maven and JReleaser" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>

  <entry>
    <!-- lang="en-GB"  -->
    <title>Properly nesting annotation processors in Apache Maven projects</title>
    <link href="https://blog.bmarwell.de/2024/07/28/porperly-nesting-annotation-processors-maven-reactor.html"/>
    <id>https://blog.bmarwell.de/2024/07/28/porperly-nesting-annotation-processors-maven-reactor.html</id>
    <published>2024-07-28T09:39:51Z</published>
    <updated>2025-04-24T22:26:51Z</updated>
    <summary>Struggling with annotation processors in Maven reactor builds? Learn how to properly nest them across modules and avoid common multi-module pitfalls.</summary>
    <author>
      <name>Benjamin Marwell</name>
      <uri>https://bmarwell.de/</uri>
    </author>
    <content type="html">
      <p>I recently encountered a Maven multi module (reactor) project where each module had one annotation processor defined, but the database project had two defined.
This can be done easier using the lesser known &lt;code&gt;combine.children=&quot;append&quot;&lt;/code&gt; attribute in a &lt;code&gt;pom.xml&lt;/code&gt;.
This article will give you a hint how to do this.</p>
      <p><strong><a href="https://blog.bmarwell.de/2024/07/28/porperly-nesting-annotation-processors-maven-reactor.html" title="Read the full article: Properly nesting annotation processors in Apache Maven projects">Read the full article "Properly nesting annotation processors in Apache Maven projects" on Ben’s Build and B(r)ass Notes »</a></strong></p>
    </content>
  </entry>


</feed>
