Rafael Winterhalter

Rafael Winterhalter

@rafaelcodes.bsky.social

software consultant who likes static typing, coding at http://github.com/raphw 🇧🇻🇩🇪🇪🇺

718 followers92 following99 posts

Ever wanted or were forced to use two versions of the same library in Java at the same time, but you did not want to shade: Jenesis now supports layers which uses the JVM to split off a layer within a JVM, without moving a single package. jenesis.build/tool/depende...

jenesis.buildDependencies · JenesisDeclaring dependencies in each layout, how they resolve through Maven Central and the Jenesis Module Index, which version wins a conflict, pruning an unwanted transitive, and giving a nameless library...

Rafael Winterhalter reposted

In Session 4 of the GitHub Secure Open Source Fund, 50 projects upgraded their security posture through AI-assisted workflows, maintainer expertise, GitHub security tools, and more. As AI changes how software is built, maintainers remain at the center of protecting the open source ecosystem. 👇

github.blogWhat 50 open source projects taught us about security in the AI eraSee how the projects in the GitHub Secure Open Source Fund combined AI-assisted workflows, maintainer expertise, and more to improve project security.

I added support for most JVM languages to Jenesis and polished the framework altogether. I also added a range of demos: github.com/raphw/jenesi... If you are interested in build tools and always thought that building on the JVM should be easier, maybe this approach is for you. Let me know!

github.comjenesis/demo at main · raphw/jenesisA modern Java build tool: Java-native config, plugin-free, with module-info.java treated as a feature, not an afterthought. - raphw/jenesis

As amazingly well Claude and Codex are working as tools; they are not useful as pair programmers in my eyes, as they are never pushing back. Makes me wonder how broad the need for maintenance of technical debt will affect worker productivity. The best code is the one you don't write, still.

Rafael Winterhalter reposted

I had the pleasure of traveling home to Munich to talk to Marco about software, and I quite enjoyed it! And I will hope you will, too. Thanks for having me.

New deep-dive on The Marco Show! 🎥 Watch now: youtu.be/AzfhxgkBL9s Marco sits down with @rafaelcodes.bsky.social (creator of ByteBuddy) to unravel JVM internals, bytecode instrumentation, Mockito and Hibernate internals, legacy Java realities, and the challenges of maintaining open source at scale.

Rafael Winterhalter reposted

Help--my LocalDate isn’t flattened! Just before my Valhalla talk at JFall, I found out that the early access build can flatten LocalDate arrays, but the latest version from Github cannot. Why? Serialization, of course. Read the gory details at https://horstmann.com/un...

Rafael Winterhalter reposted

Und das, liebe Kinder, ist der Grund, warum man sich bei existenziell wichtigen Werkzeugen am besten mindestens parallel auf lokal gehostete Open Source Lösungen stützt. Wenn #Trump anfängt, die US-Tech-Konzerne in Waffen zu verwandeln, wird es finster. #KritIs

Do I understand it correctly that the central-publishing-maven-plugin intends to replace the nexus-staging-maven-plugin? But not necessarily the maven-release-plugin? How would one otherwise handle tagging in Git? I'm confused.

What frustrates me most about Kotlin and Scala is their closed world perspective on their own tooling. Java byte code is well-defined and easy to interop. It should not be hard to add an annotation to a class, but with Kotlin it somehow is: discuss.kotlinlang.org/t/dynamicly-...

discuss.kotlinlang.orgDynamicly added annotations are not visibleI am trying to add support for kotest for a test intelligence tool. To do so, I need to be able to add the Ignored annotation to classes dynamically using a Java agent, but the annotation seems to not...

Catch of the day: The Kafka client for Java logs a bunch of things on info level that likely should be debug, which resulted in Splunk logging for millions of crowns of repetitive things nobody needs. I argue that libraries should never log anything on the info level.

Rafael Winterhalter reposted

One of my most radical political positions is that online ads should be treated like addictive substances (alcohol) and have something like 100% VAT. This doesn’t exist because governments can’t technically charge VAT for online ads served in the country.

Rafael Winterhalter reposted

💘 Roses are red, commits turn green, JavaZone’s stage is calling—be seen! 💘 Every bug fix, late-night hack, and production horror story deserves an audience. Your code has a story—share it at #JavaZone2025! 💌 talks.javazone.no/ ℹ️ https://2025.javazone.no/en/speaker #JavaZone

So Apple.tv has no Android app, but if you open it in the browser, it automatically routes to /us. This I have to replace with /no manually, otherwise the page crashes loading a language bundle for a popup. Did someone make this page in Dreamweaver? Severance better be a good show.

It took another release to iron out some issues with the Class File API Integration. Also, Byte Buddy now offers improved support for using constantdynamic in instrumentation, with fallback to invokedynamic if not yet available. github.com/raphw/byte-b...

github.comRelease Byte Buddy 1.17.0 · raphw/byte-buddyAssure that implicit choice for class reader and class writer are always symmetric with regard to internal representation. Retrofit MemberSubstitution to also allow for intercepting invokedynamic i...

I made a mistake in my changed build and 1.16.1 now offers the actual support for this.

Rafael Winterhalter@rafaelcodes.bsky.social

Byte Buddy 1.16.0 now integrates the Java Class File API and is therefore compatible with any future JDK that retains its instruction set, without activating the experimental flag. github.com/raphw/byte-b...