Shaaf Syed
Developer Advocate
Copenhagen, Denmark
Actions
is a Sr. Principal Developer Advocate at Red Hat and a seasoned architect with over 25 years of experience in open source. Based in Copenhagen, Shaaf specializes in the intersection of Java, Quarkus, and Kubernetes, with a current focus on Application Modernization through Generative AI. As a contributor to Konveyor.io and the "Kai" project, he is at the forefront of using Large Language Models to automate complex legacy migrations and integrate the Model Context Protocol (MCP) into enterprise workflows. Beyond his engineering work, Shaaf is a dedicated community catalyst. He has been the lead organizer for Copenhagen Tech Talks since 2013 and serves as a Technical Editor for InfoQ, where he curates cutting-edge content on Java and AI/ML. A frequent speaker at international summits, Shaaf is passionate about making advanced technologies like AI/ML accessible to the Java community, frequently sharing his findings on his blog at shaaf.dev. When he isn’t hacking on open-source middleware like Keycloak or Infinispan, he can be found on the cricket pitch coaching the next generation of athletes in Denmark.
Area of Expertise
Topics
Navigating Application Modernization - Leveraging Gen-AI
This talk presents an approach that utilizes static code analysis using Konveyor.io (CNCF Sandbox project) coupled with Large Language Models (LLMs) to facilitate automated code transformation. Our method comes from the tool "Kai", which analyzes static code to pinpoint areas within source code requiring modification. Kai uses the power of LLMs to generate code changes to resolve identified incidents. It eliminates the need for fine-tuning LLMs. Instead, it augments the knowledge of LLMs with Konveyor data through prompt engineering (few shots) and the use of Retrieval-Augmented Generation (RAG). This session includes a demo showcasing how a legacy application is migrated and then deployed to Kubernetes using the power of Kai.
Navigating Application Modernization - Leveraging Gen-AI
This talk presents an approach that utilizes static code analysis using Konveyor.io (CNCF Sandbox project) coupled with Large Language Models (LLMs) to facilitate automated code transformation. Our method comes from the tool "Kai", which analyzes static code to pinpoint areas within source code requiring modification. Kai uses the power of LLMs to generate code changes to resolve identified incidents. It eliminates the need for fine-tuning LLMs. Instead, it augments the knowledge of LLMs with Konveyor data through prompt engineering (few shots) and the use of Retrieval-Augmented Generation (RAG). This session includes a demo showcasing how a legacy application is migrated and then deployed to Kubernetes using the power of Kai.
The wrong reasons to build an MCP server
We’ve built multiple MCP servers—enough to know where they shine, and where they hurt. MCP is powerful: it standardizes how LLMs connect with tools, prompts, and resources. But here’s the hard truth: not every use case deserves an MCP server. Sometimes it’s just overhead, slowing you down when a plain SDK or direct API call would have worked better.
In this workshop, we’ll share lessons learned from real MCP builds: the wins, the painful over-engineering, and the “wish we hadn’t done that” moments. You’ll see common anti-patterns like wrapping trivial APIs, using MCP as a database proxy, or introducing it in environments where latency and lifecycle management become a nightmare.
Most importantly, we’ll give you a practical checklist to decide when MCP is worth it—and when it’s simply the wrong tool. You’ll walk away with clear guidance, battle-tested stories, and the confidence to avoid the mistakes we made.
Contents of the workshop:
Part 1: The API Trap
Part 2: The Right-Sized Use Case
Part 3: Choose your game: Chatbot, MCP, Agent
Part 4: Decision Framework in Action
Learning Benefits and Takeaways:
- Not every integration needs an MCP server—sometimes it’s just overhead.
- Learn to spot common anti-patterns (wrapping trivial APIs, database proxies, FOMO-driven builds).
- A decision checklist to evaluate MCP vs. simpler options.
- Understand when MCP adds real value: interoperability, tool ecosystems, complex workflows.
- Lessons learned from real-world MCP implementations—what worked, what didn’t.
Java + LLMs: A hands-on guide to building LLM Apps in Java with Jakarta
AI is revolutionizing the software landscape. However, for many Java developers, integrating these powerful AI tools into existing enterprise applications or a new one can feel daunting. This hands-on session will demystify the process and show you how to build LLM-powered features directly into your Java codebase.
Using JakartaEE and the LangChain4j library, we'll explore RAG, a cutting-edge technique that combines the vast knowledge of LLMs with the precision of your own data. We'll explore how to create both few-shot and zero-shot RAG models and then add practical features like summarization and similarity search, backed by an Embedding database.
Through a live coding demo, we’ll walk you through constructing an AI-powered online store backend and provide practical insights into the architecture and code.
Whether you're familiar with AI or just getting started, this session will give you the confidence and skills to harness the potential of LLMs in your Java projects.
Application Modernization Leveraging Gen-AI for Automated Code Transformation
This talk presents an approach that utilizes static code analysis using Konveyor.io (CNCF Sandbox project) coupled with Large Language Models (LLMs) to facilitate automated code transformation.
Our method comes from the tool "Kai", which analyzes static code to pinpoint areas within source code requiring modification. Kai uses the power of LLMs to generate code changes to resolve identified incidents. It eliminates the need for fine-tuning LLMs. Instead, it augments the knowledge of LLMs with Konveyor data through prompt engineering (few shots) and the use of Retrieval-Augmented Generation (RAG).
This session includes a demo showcasing how a legacy application is migrated and then deployed to Kubernetes using the power of Kai.
Shaping Tomorrow's Technology: Navigating Cloud-Native, Serverless, and Polyglot Programming
Tailored for developers looking to modernize their applications, this talk guides the transition to cloud-native and serverless architectures. It emphasizes developer productivity by showcasing architectural patterns, common pitfalls, and the benefits of polyglot programming. A live demo will further illuminate and detail the practical applications. If you're a developer seeking to enhance efficiency and embrace cutting-edge practices, this is the right talk for your journey towards a successful modernization.
Devnexus 2025 Sessionize Event
JChampions Conference 2025 Sessionize Event
CNCF-hosted Co-located Events North America 2023 Sessionize Event
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top