Migration isn’t just code — it’s broader. Choosing containerization or moving to Kubernetes adds extra steps and trade-offs. I’ve started a project that ties parts of that journey together. Not sure how far it’ll go, but getting started matters. github.com/sshaaf/migIQ #Kubernetes #Migration
Shaaf Syed
@shaaf.dev
Architect, developer, 🐧 ☕️ , ❤️, open source enthusiast, technical editor @InfoQ, 🏏 coach. @shaaf@fosstodon.org
How about just wrapping Konveyor/MTA static code analyzer with #ai skills for application #modernization github.com/sshaaf/mta-s...
/goal Once activated, a tiny, judgmental "manager model" watches *Agents every move. After every sentence, this miniature taskmaster asks, "Are we there yet?" If the answer is no, the manager shoves *Agent back into the basement for another round of typing instead of letting him talk to you.... #LLM
The framework so many 💚 and work with everyday. #Java youtu.be/0Gb1z-2SjHY?...
How a Group of Developers Took Back Control from Enterprise Java | Spring: The Documentary
In the early 2000s, Java enterprise development had become a bureaucratic nightmare: a proliferation of untestable Java artefacts, heavyweight application servers, and ivory-tower standards…
youtu.be
Pure Java gives you total control and performance, but it’s often highly opinionated. Now that I’m building a code tutorial SKILL, the "coding agent" takes the wheel. Is the flexibility worth the trade-off? shaaf.dev/post/2026-05... #Java #CodingAgents #BuildInPublic
Lessons from Building My First Claude Skill - a code tutorial generator
Sometime around last year, I started a project (Waver) that would generate tutorials from a codebase. Easy to follow tutorials in pure markdown + mermaid diagrams, so any person could be onboarded…
shaaf.dev
code that just runs as a script. using #JBang to convert pptx slides to png. shaaf.dev/post/2026-04...
Rendering powerpoint to png files with JBang
Part of my daily work is to create instructions for workshops, and labs. One of the things in that entire content creation process, is to take screenshots and matching instructions and inorder to do…
shaaf.dev
We want to have a meaningful result out of generative AI, not just chatting around… #Konveyor #CNCF shaaf.dev/post/2026-04...
Modernizing Legacy Code with Konveyor AI: From EJB to Kubernetes
I always enjoy participating in KubeCon. This time it was at the RAI center in Amsterdam. I have been to many conferences and the ones that are the best IMHO are the ones that are very community…
shaaf.dev
Was great to be part of #KubeConEU2026, in the beautiful city of Amsterdam and represent the latest updates in the @Konveyor_Community. youtu.be/6FNR4jGox9w?...
Project Lightning Talk: Konveyor AI for Every Language and the Future of App Moderniza... Shaaf Syed
Don't miss out! Join us at our next KubeCon + CloudNativeCon events in Mumbai, India (18-19 June, 2026), Yokohama, Japan (29-30 July, 2026), and Shanghai, China (8-9 September, 2026). Connect with…
youtu.be
Did you know that @intellijidea.com can tell you not only when you are using a vulnerable dependency, but also whether you are actually using the vulnerable part of that dependency? Read all about it on my blog: maritvandijk.com/vulnerable-a...
Vulnerable API usage: Is your Java code vulnerable? - Marit van Dijk
See whether your Java code is using a Vulnerable API of a dependency with known vulnerabilities in IntelliJ IDEA.
maritvandijk.com
Coding agents are innovating fast, but they're also getting bloated. To actually understand what they’re doing, you have to go back to the basics. A good way to learn is to get into it. Adding LSP support to the 260 line nanocode agent in #Java shaaf.dev/post/2026-04...
Nano Agent, Mega Senses: Adding LSP to the 260-Line Coding Agent
The original nanocode idea is easy to lose in the hype: a coding agent is mostly a loop. You send prompt plus tool definitions to the model; the model answers with text or tool calls; you execute…
shaaf.dev
An interesting read, if you want to understand coding agents or building one yourself.. its on my #TODO for sure. 😀 mariozechner.at/posts/2025-1...
What I learned building an opinionated and minimal coding agent
Lessons I learned while building my own coding agent from scratch.
mariozechner.at
„Over the next couple of years, the most valuable people to have on a software team are going to be experienced folks who’re actively working to keep their heuristics fresh. Who can combine curiosity with experience.“ buff.ly/HYgxmFn #developer #leadership #AI
My heuristics are wrong. What now? - Marc's Blog
More words. More meaning?
buff.ly
I built scribe mcp server using the #Quarkus mcp extension to generate static code analysis rules for @Konveyor_community. Here is a short post explaining it. shaaf.dev/post/2026-03...
Using LLMs and MCP to generate static code analysis rules
Scribe is a Model Context Protocol (MCP) server that exposes a single tool: executeKantraOperation. That tool turns structured parameters into YAML rules compatible with Konveyor / Kantra—the static…
shaaf.dev
It’s been about 8 months since my last update on neovim4j. Here is some latest updates with comprehensive documentation this time. 😀 shaaf.dev/post/2026-03...
Adding Rust Support and Some Major updates to My Neovim Config
It’s been about 8 months since my last update on neovim4j, and the config has evolved significantly. The name “neovim4j” is now a bit of a misnomer—while it started as a Java-focused setup, it’s…
shaaf.dev
When I started building my first MCP server, I had a tool explosion to the point where the tool would tell me I was over the limit. This made me restructure the bits. Here are two patterns that I used #Java #Keycloak #MCP shaaf.dev/post/2026-01...
Two Essential Patterns for Building MCP Servers
When building Model Context Protocol (MCP) servers, I learned two critical design patterns the hard way. What started as a straightforward implementation of a Keycloak administration server quickly…
shaaf.dev
Looking forward to speaking at Devnexus again this year. together with @danieloh30.bsky.social
Thinking about building an MCP server because everyone else is? 🤔 At #Devnexus, @shaaf.dev & @danieloh30.bsky.social share hard-earned lessons from real MCP builds—and explain when MCP adds value… and when it just adds overhead. devnexus.com/events/the-w... 🎟️ Get tickets at devnexus.com
An #MCP server for Keycloak IAM, supporting over 45 operations, including user management and realm configuration. Version 0.3 adds JWT authentication, SSE transport, Kubernetes support, containerization, health checks, and Prometheus metrics.https://shaaf.dev/post/2026-01-02-keycloak-mcp-server/
Keycloak MCP Server: Manage Identity with Natural Language
There is always a distinct thrill in learning something new and immediately putting it to the test. My journey with Model Context Protocol (MCP) servers began with a basic ‘books API’ demo, but I…
shaaf.dev
Introducing JUnit 6.0.0: a transformative update that unifies versions, elevates minimum requirements to Java 17, and introduces streamlined support for Kotlin suspend tests. Enjoy enhanced testing performance with the new CancellationToken API, built-in JFR listeners and many more—migrate today!
JUnit 6.0.0 Ships with Java 17 Baseline, Cancellation API, and Kotlin suspend Support
Introducing JUnit 6.0.0: a transformative update that unifies versions, elevates minimum requirements to Java 17, and introduces streamlined support for Kotlin suspend tests. Enjoy enhanced testing pe...
infoq.com
It’s all starts with fixing a simple thing 🤩 Vite: The Documentary youtu.be/bmWQqAKLgT4?...
Vite: The Documentary
"If you're using a JavaScript framework, you're probably using Vite." Created by Evan You (the mind behind Vue.js), Vite began as a frustrated response to slow build times with Webpack. What started…
youtu.be
A comprehensive guide for setting up and executing rules with Kantra on your machine #Konveyor #CNCF shaaf.dev/post/2025-09...
Complete local setup development guide for Konveyor Analyzer-lsp 🚀
Build, test, and develop Kantra rules locally with full JDT-LS and multi-language provider support Modernizing large, complex codebases is a significant challenge. Identifying migration blockers,…
shaaf.dev
Behind Every “Smart” #AI Tool Lies a Human Cleaning Up Its Chaos m.economictimes.com/ai/ai-insigh...
Behind Every “Smart” AI Tool Lies a Human Cleaning Up Its Chaos
As artificial intelligence platforms flood the internet with “sloppy” output, a growing number of human workers are being called upon to fix AIs errors, from clunky code to cringe-worthy art. Once…
m.economictimes.com
A lot of work goes into open-source projects, mostly run by enthusiasts, passionate people. They came across a problem and solved it for all of us. And now with things like #LLMs, the job gets harder. fastcode.io/2025/09/02/t...
The Hidden Vulnerabilities of Open Source
Exhausted volunteers maintaining critical infrastructure alone. From personal experience with contributor burnout to AI-powered future threats, here’s why our digital foundation is crumbling.
fastcode.io
Learning languages is always fun 🔋 🤩 I spent some time investigating #rust as a #java developer. shaaf.dev/post/my-firs...
My first 6 hours with Rust
TLDR; I took a day off from work today, although still most of my time I ended up doing my travel expenses. Talk about priorities. I am the one to blame here totally. 😄 So come around lunch time,…
shaaf.dev
Wow. This was an interesting documentary about #python and its open source roots. youtu.be/GfH4QL4VqJ0?...
Python: The Documentary | An origin story
This is the story of the world's most beloved programming language: Python. What began as a side project in Amsterdam during the 1990s became the software powering artificial intelligence, data…
youtu.be
Impact: Systematic discrimination, lack of access to information and free speech. www.usermag.co/p/we-must-fi...
We must fight age verification with all we have
Age verification laws exploit the moral panic over social media and mental health to repackage old censorship tactics under the guise of protecting children.
usermag.co
Directed Acyclic Graphs (DAG), tiny, no dependencies, task pipelines in just #Java. shaaf.dev/post/2025-08...
Think in Graphs, Not Just Chains: JGraphlet for TaskPipelines 🚀
JGraphlet is a tiny, zero-dependency library for building task pipelines in Java. Its power comes not from a long list of features, but from a small set of core design principles that work together…
shaaf.dev
Now includes Tools for IDP, Authflows, and integration with Keycloak discourse. Built with ❤️ for the #Java and #Quarkus community github.com/sshaaf/keycl...
GitHub - sshaaf/keycloak-mcp-server: An MCP server for Keycloak, designed to work with Keycloak for identity and access management, covering, Users, Realms, Clients, Roles, Groups, IDPs, Authentication. Searching keycloak discourse, Native builds available.
An MCP server for Keycloak, designed to work with Keycloak for identity and access management, covering, Users, Realms, Clients, Roles, Groups, IDPs, Authentication. Searching keycloak discourse, ...
github.com
Diving deeper into concurrency! learning and enjoying this latest #java book from @bazlur.ca
I'm happy to share that the Early Release of Modern Concurrency in Java, with all chapters, is now available on the O'Reilly platform. If you have access to the O'Reilly platform, you can take a look now. learning.oreilly.com/library/view...