Sam Snyder has spent the past decade working on improving developer happiness with better tooling. At Tableau software, he used data from the development and deployment pipeline to systematically seize the greatest opportunities for improvement and eliminate the greatest pain points. At Gradle, he integrated that process and data visualization methodology into Gradle Enterprise. Now as VP of Engineering at Moderne, Sam leads development on the core refactoring technologies and teaches Moderne's customers how to automate away the tedious, repetitive parts of software development.
Software keeps moving—and so must we. From end-of-life frameworks to sprawling polyglot stacks and never-ending CVEs, modernizing code at scale is one of the toughest, most necessary problems in engineering today. In this keynote, we’ll take a clear-eyed look at where we are—and what it really takes to move forward.
We’ll unpack the rise of agentic AI, and why the future isn’t just about bigger models but better data and tools. Generative AI may be great at writing new code, but modernizing existing code? That takes precision—and deterministic systems that know when not to guess.
We’ll also dig into the language engineering problem: how do you unify modernization with codebases written in Java, C#, Python, JavaScript, and more? Each language needs a custom model that captures types, formatting, and structure for meaningful, accurate change at scale.
Finally, we’ll confront the security tradeoffs facing modern teams: should you upgrade fast to stay on the latest most secure versions, or leverage back patches to stay secure on what you know? The answer isn't always forward motion—it’s smarter, safer modernization.
We're helping teams navigate all of this with confidence at Moderne, providing AI-driven, multi-language refactoring and modernization at scale. After all, modern software demands more than speed—it demands the ability to evolve, safely and continuously, no matter how complex the codebase or how fast the industry moves.
Join us as we kick off Code Remix Summit—your front-row seat to the future of code.
Generative AI can be a powerful force multiplier for developers, but it also comes with limitations. Developers are expected to co-create with AI, and check the generated output, or risk hallucinations running wild. This can aid development at a local machine, but what happens when you try to apply these tools on a massive scale?
For mass-scale code operations, AI needs to have agency, able to operate with some degree of autonomy. In this session, we’ll cover how you can combine retrieval and tool calling techniques, the richest code data source for Java called the Lossless Semantic Tree (LST), and OpenRewrite rules-based recipes to drive more efficient and accurate AI model output for refactoring and analyzing large codebases.
You’ll learn about how you can use AI embeddings as a powerful tool to visualize, analyze, and even do smarter sampling for your codebase. Plus, we’ll show you how to leverage GenAI to accelerate writing OpenRewrite deterministic recipes.
We’ll take an honest look back and a look ahead on our process, to show you how enterprises can now reliably leverage AI for code modernization at scale.
How adaptable is your technology stack to changes in business requirements, technological advancements, and the availability of new and better tools? When you can more easily secure, upgrade, move, or modernize your code, that means you can adapt quickly and efficiently to changes in technology and markets. That’s what Migration Engineering is all about, which we’ll be exploring in this workshop.
We’ll discuss and demonstrate how to write custom recipes using OpenRewrite, an open source auto-refactoring tool that enables large-scale code analysis and transformations for your teams. You’ll learn the make-up of recipes as we walk through a number of examples, then we’ll demonstrate how to write custom recipes using OpenRewrite. We will assemble these recipes with the visitor pattern, and show how to stitch recipes together with YAML, with Refaster-style templates, with Semgrep matchers, etc. We’ll also show how Generative AI can be applied to accelerate recipe development.
This is a comprehensive look at all kinds of recipe development that will enable you to come away fully equipped to plan and exercise large-scale code transformations in your organization.
Outline
What is Migration Engineering? (15 minutes)
Introducing OpenRewrite (30 minutes)
From source code as text to the Lossless Semantic Tree
How the OpenRewrite community is organized
Recipe Exercise #1: change all integer literals to 42 (because 42 is the answer to life, the universe, and everything) (30 minutes)
Recipe Exercise #2: fixing SAST issues with Refaster-style templates (30 minutes)
Recipe Exercise #3: finding and securing Personally Identifiable Information (1 hour)
Introducing search markers
Introducing Data Tables for impact analysis
Securing endpoints that expose PII
Recipe Exercise #4: finding and fixing SQL injection (1 hour)
Using OpenRewrite’s support for Semgrep-style local data flow analysis
Contributing a security recipe to the open source catalog of OWASP Top Ten recipes
Mass remediation: using our first recipes to issue pull requests or commits to many repositories at once (15 minutes)
Visualization #1: Visualizing the distribution of Gradle versions in a codebase (30 minutes)
Connecting Jupyter Notebooks to OpenRewrite Data Tables
Building a simple bar chart of Gradle version distribution across hundreds of repositories.
Visualization #2: Visualizing unused binary dependencies in Maven and Gradle projects (30 minutes)
Use of network analysis tools in Jupyter for visualizing large scale directed graphs
Where to integrate Migration Engineering into the SDLC (15 minutes)
Open recipe development lab (1.5 hours)
How adaptable is your technology stack to changes in business requirements, technological advancements, and the availability of new and better tools? When you can more easily secure, upgrade, move, or modernize your code, that means you can adapt quickly and efficiently to changes in technology and markets. That’s what Migration Engineering is all about, which we’ll be exploring in this workshop.
We’ll discuss and demonstrate how to write custom recipes using OpenRewrite, an open source auto-refactoring tool that enables large-scale code analysis and transformations for your teams. You’ll learn the make-up of recipes as we walk through a number of examples, then we’ll demonstrate how to write custom recipes using OpenRewrite. We will assemble these recipes with the visitor pattern, and show how to stitch recipes together with YAML, with Refaster-style templates, with Semgrep matchers, etc. We’ll also show how Generative AI can be applied to accelerate recipe development.
This is a comprehensive look at all kinds of recipe development that will enable you to come away fully equipped to plan and exercise large-scale code transformations in your organization.
Outline
What is Migration Engineering? (15 minutes)
Introducing OpenRewrite (30 minutes)
From source code as text to the Lossless Semantic Tree
How the OpenRewrite community is organized
Recipe Exercise #1: change all integer literals to 42 (because 42 is the answer to life, the universe, and everything) (30 minutes)
Recipe Exercise #2: fixing SAST issues with Refaster-style templates (30 minutes)
Recipe Exercise #3: finding and securing Personally Identifiable Information (1 hour)
Introducing search markers
Introducing Data Tables for impact analysis
Securing endpoints that expose PII
Recipe Exercise #4: finding and fixing SQL injection (1 hour)
Using OpenRewrite’s support for Semgrep-style local data flow analysis
Contributing a security recipe to the open source catalog of OWASP Top Ten recipes
Mass remediation: using our first recipes to issue pull requests or commits to many repositories at once (15 minutes)
Visualization #1: Visualizing the distribution of Gradle versions in a codebase (30 minutes)
Connecting Jupyter Notebooks to OpenRewrite Data Tables
Building a simple bar chart of Gradle version distribution across hundreds of repositories.
Visualization #2: Visualizing unused binary dependencies in Maven and Gradle projects (30 minutes)
Use of network analysis tools in Jupyter for visualizing large scale directed graphs
Where to integrate Migration Engineering into the SDLC (15 minutes)
Open recipe development lab (1.5 hours)