Skip to main content

Code Remix sessions - 2025

Scaling code transformation: A practical playbook (December 17th, 2025)

Taint Tracking & Data Flow Analysis (December 10th, 2025)

Spring Boot 4 Awakens with DaShaun Carter (December 3rd, 2025)

Automating adoption and optimization with Timefold (November 19th, 2025)

Quantum-ready cryptography with Moderne (November 12th, 2025)

No type left behind: type attribution in OpenRewrite (November 5th, 2025)

Refactoring horror stories (October 29th, 2025)

GitHub actions hardening tips & recipes (October 15th, 2025)

Live long and code: What's new in Java 25 and Beyond (October 8th, 2025)

If you had to modernize a legacy app today... (October 1st, 2025)

Kotlin vs. Java: Has Java caught up? (September 24th, 2025)

OpenRewrite power moves part 3: Using traits (September 17th, 2025)

  • Announcements for the week
  • Summary
    • Traits are a way to build higher-level abstractions over LST elements. They allow you to define common characteristics or behaviors that might apply to different types of LST elements or involve more context than a single element can provide.
    • They help consolidate shared logic that you might otherwise put in utility classes, avoiding the need to add extension methods to every LST element. This keeps the public-facing API simpler while maintaining extensibility.
    • Some examples of traits include the annotation trait (which represents any LST element that has an annotation, regardless of whether it's a class, method, or variable declaration) and the Gradle dependency trait (which represents different ways dependencies can be declared in Gradle files and provides a common interface to access details like group ID, artifact ID, and version).
    • Traits can be converted into a visitor (using asVisitor()) which allows you to process only the LST elements that implement that specific trait, effectively filtering down to what you're interested in as a recipe author.
    • We also demonstrated how to create a TodoComment trait with a Matcher to identify these comments across different file types.

OpenRewrite power moves part 2: Scanning recipes (September 10th, 2025)

OpenRewrite power moves part 1: Using data tables (September 3rd, 2025)

Live Spring AI coding and real-world use cases (August 27th, 2025)

  • Announcements for the week
  • Summary
    • This week we welcomed Mark Heckler. He spoke about Spring AI and how it provides a unified interface to interact with various AI models (similar to how Spring Data works with different backend stores). He then demonstrated practical use cases for Spring AI. These include:
      • Text generation – Generating a summary or even a haiku based on a provided topic using an AI template.
      • Retrieval augmented generation (RAG) – Enhancing AI responses by integrating internal documents with a vector store. This allows for specific, fact-based answers relevant to the user's data.
      • Conversational AI – Maintaining separate conversation contexts using a conversation AI to prevent data cross-pollination between different user interactions
      • MCP / Tool calling – Integrating AI with deterministic external tools, like a weather service, to provide real-time, context-aware information.
      • Multimodal AI – Explaining an image and extracting information from it. Often combined with RAG to provide contextually relevant results.
    • While AI offers immense potential, it's crucial to understand that AI has weaknesses – especially regarding determinism vs. non-determinism. Mark advocated for combining AI's capabilities with deterministic options for best results.

HCL Recipes: Making them work for you (August 20th, 2025)

Moderne CLI major release (August 13th, 2025)

OpenRewrite Recipe Showdown: Tim and Claude vs. Sam (August 6th, 2025)

  • Announcements for the week
  • Main topic for the week
    • This week Sam and Tim compared different approaches to recipe development. They discussed how they use Claude and what the pros/cons are for using it over manual coding.

Forking Camunda 7: Operaton's Java 17 upgrade and migration path (July 30th, 2025)

  • Announcements for the week
  • Main topic for the week
    • This week we welcomed Karsten Thoms and Tim Zöller from Operaton. They talked about their experience forking Camunda 7, modernizing it to Java 17, and significantly reducing Sonar issues.

The missing piece in your observability puzzle (July 23rd, 2025)

Live Debug: Mapping release train dependencies with OpenRewrite (July 16th, 2025)

Scaling OpenRewrite to 3B lines of code (July 9th, 2025)

Fix slow Gradle builds before they ruin your life (July 2nd, 2025)

OpenRewrite Demystified: What it can really do for you (June 25th, 2025)

Gartner APPS Unpacked: Key Takeaways and Insights (June 11th, 2025)

OpenRewrite and C#: A match made in .NET heaven (June 4th, 2025)

Don't migrate to Spring Boot 3.5 until you watch this (May 28th, 2025)

Code Remix Summit Recap (May 21st, 2025)

Fix & Refactor Faster with Venkat Subramanium (April 30th, 2025)

Building Secure and Scalable Health Systems (April 25th, 2025)

Code, Change, and Roc with Isaac Van Doren (April 16th, 2025)

Banking vs. Startup: Engineering Lessons Learned (April 9th, 2025)

Scrying the future of Java with Merlin (March 26th, 2025)

The Shanman Strikes Again: Gradle .kts Support (March 19th, 2025)

Meet Moddy: AI Agent for Multi-Repo Modernization (March 12th, 2025)

  • Announcements for the week
  • Interesting community question
    • There was a community question that we thought was particularly notable and wanted to call out. Someone asked, "Is there a way to tell rewriteTest to ignore formatting when comparing before and after? Likewise, can we just compare LST equivalence while ignoring static imports or fully qualified types?"
  • Main topic for the week
    • This week we welcomed back Justine – who talked about our new AI agent: Moddy. For a detailed written guide on this, check out our blog post where we introduced Moddy.
    • If you've kept up with our code remix sessions, you may remember that Justine was on a code remix session a few weeks ago talking about something similar – Mod Agent. That was the precursor to the latest version – Moddy.
    • One of the first key points we discussed was about what Moddy is and what it isn't. Moddy is not a fully trained LLM model like ChatGPT or Llama or whatnot. Rather, it's meant to augment those existing models and connect them to Moderne and OpenRewrite – which is the irreplaceable core. In fact, users can choose to use whatever model they want with Moddy.
    • By creating Moddy like this, it means that people can safely run Moddy on their own internal code base without us ever seeing or having access to their code.
    • We also touched upon the interesting question of, "Why do you need to augment a model like this? Can't you just ask one of those other models to rewrite a 100,000 files for me?"
      • There are a couple reasons for this – first of all, it takes a significant amount of time to run these models. If you're passing in millions of lines of code and thousands of repos, you're going to be waiting a ridiculous amount of time. Then, even when (if) it does finish, it will likely be filled with hallucinations that lead to broken code. Lastly, for many of these models, you would be required to give these LLMs access to your code – which doesn't make sense for most companies.
    • After that, Justine took us through a demo of Moddy. With it, you can discover/find relevant recipes and, also, ask it intelligent questions about your code such as, "What repositories do I use Apache Commons in?"
    • Moddy isn't widely available yet -- but it will be soon for Moderne customers so keep your eyes out for it.

Security Starts With Culture (March 5th, 2025)

Top Tips & Techniques for Recipe Authors (February 26th, 2025)

Type Tables: Breaking up with classpath drama (February 19th, 2025)

Live, Laugh, Lombok: Expanding Support (February 12th, 2025)

Brewing Java 21: Live coding a recipe for success (January 29th, 2025)

Hero developer contributes TOML parser to OpenRewrite (January 22nd, 2025)

Fastest recipe runs ever - parallelizing the CLI (January 15th, 2025)

Moderne's next chapter in AI innovation (January 8th, 2025)