From classic fundamentals to AI-driven systems — engineering is getting both deeper and more complex

Sorting algorithms

🎯 Featured Article

🧠 Sorting algorithms
A visual and interactive way to understand how classic sorting algorithms behave, making performance differences tangible and comparable.
⬢ Demonstrates algorithm behavior through side-by-side animations
⬢ Highlights trade-offs between simplicity, speed and scalability

TL;DR (Quick Recap)

⬢ Revisit fundamentals like sorting to better understand performance trade-offs
⬢ Adopt native and JVM innovations to eliminate runtime inefficiencies
⬢ Design AI systems with context, memory and operational complexity in mind
⬢ Balance engineering judgment with verification, tooling and system insight

JVM Corner

🚀 Inside trivago’s GraalVM Migration: Native Image for GraphQL at Scale
Real-world impact of eliminating JVM warm-up with GraalVM Native Image.
⬢ Eliminate cold-start latency in high-traffic systems

🤖 How We Built a Java AI Agent by Connecting the Dots the Ecosystem Already Had
Proof that Java already has everything needed for AI agents — no Python required.
⬢ Combine Spring AI, JobRunr and Modulith into a cohesive runtime

📦 Data-Oriented Programming for Java: Beyond Records
Explores the next evolution beyond records with carrier classes.
⬢ Extend data modeling flexibility beyond record constraints
⬢ Enable better destructuring and reconstruction patterns

🎨 From Java to Wayland: A Pixel’s Journey
Deep dive into the rendering pipeline from Java to display.
⬢ Reveal complexity behind a single pixel render

🧰 Static code analysis in Kotlin — tools overview
Comparison of Kotlin linting and formatting tools.
⬢ Evaluate detekt, diktat and ktlint trade-offs
⬢ Reinforce automated code consistency practices

🧪 Testing Elasticsearch. It just got simpler.
Modern testing improvements in Elasticsearch ecosystem.
⬢ Leverage Testcontainers for realistic integration tests

⚙️ Embabel MCP Servers and Tools: Supercharging Your Agentic Flows on the JVM
Enhancing JVM-based AI agents with tools and context.
⬢ Integrate MCP servers for real-time data access

🍃 Spring Updates

🌱 Using Spring Data JDBC With Kotlin
Combines Kotlin’s strengths with Spring Data JDBC’s simplicity.
⬢ Model aggregates with explicit and predictable persistence
⬢ Leverage immutability and null safety for cleaner design

🧠 Spring AI Agentic Patterns (Part 6): AutoMemoryTools — Persistent Agent Memory Across Sessions
Improving long-term memory in AI agents.
⬢ Persist and manage conversational state across sessions
⬢ Address context loss with summarization strategies

⚖️ Jakarta EE 11 vs Spring: When the Right Answer Is No Spring at All
A pragmatic take on choosing frameworks.
⬢ Challenge defaulting to Spring Boot for every project

🧩 Beyond RAG: Architecting Context-Aware AI Systems with Spring Boot
Evolving beyond basic RAG patterns.
⬢ Design systems with richer context awareness

🔍 Extra Reads

AI Engineering & Agent Systems
🤖 The hidden technical debt of agentic engineering — Explores operational and infrastructure complexity behind AI agents.
🧠 AI Made Writing Code Easier. It Made Being an Engineer Harder. — Highlights the growing cognitive and system complexity in AI-assisted development.

Engineering Practices & Thinking
🧑‍💻 Big tech engineers need big egos — Balances confidence with pragmatism in large organizations.
🔐 Don’t trust, verify — Advocates for verification-first approach in software supply chains.
🧭 The Git Commands I Run Before Reading Any Code — Uses Git metadata to quickly assess codebase health.

Frontend & Developer Experience
Moving Railway’s Frontend Off Next.js — Shows how tooling changes dramatically improved build and feedback cycles.

Originally posted on marconak-matej.medium.com.