Writing
Articles on Java, Spring Boot, Kubernetes, Docker and AI engineering: agents, LLMs, MCP, RAG and prompt-injection defence. Most are on Medium and link out. Newest first.
- 14 Oct Notes on this site What this site is for, how the cluster at the top works, and where the writing lives.
- 8 Sept WebMCP: Give AI Agents Real Tools on Your Website What WebMCP is, how it differs from MCP, the API, and what to watch for when you add it to a site. Level Up Coding
- 5 Sept Prompt Injection Defense for Java Devs (Part 2): RAG, Egress, and What Comes Next Layers four to six of the defence, for retrieved RAG content and data egress, and where Dual-LLM, CaMeL and Llama Guard fit. Javarevisited
- 30 Jul Value Objects in Java 28: Integer Finally Behaves Like int JEP 401 lets classes opt out of identity, so == compares values and the JVM can flatten your objects like primitives. Javarevisited
- 2 Jun Prompt Injection Defense for Java Devs (Part 1): Locking Down Inputs, Outputs, and Tools The threat model and the first three layers of defence for a Spring Boot LLM app: input boundaries, output validation and tool-use guardrails. Javarevisited
- 5 May Spring AI + pgvector: A Beginner’s Guide to RAG Build your first Retrieval-Augmented Generation app in Spring Boot with Docker, OpenAI, and a vector database that lives inside Postgres. Javarevisited
- 4 May Why Coding Agents Love Git Worktrees One repo, many working directories, and how AI coding agents use them to run tasks in parallel without stepping on each other. Level Up Coding
- 3 May Building an MCP Server in Spring Boot: The Definitive Java Guide MCP is becoming the USB-C of AI tooling, but most tutorials are in Python or TypeScript. This is the production-ready Java guide, with LLM integration. Javarevisited
- 10 Apr Why Most AI Agents Fail in Production Hallucinations, black-box pipelines and missing guardrails, and how to build agents that still work on day two. AI Advances
- 8 Apr Write Java, Run on GPUs: How Project Babylon Changes Everything Project Babylon lets Java code run on GPUs without CUDA or OpenCL, extending Write Once, Run Anywhere to AI workloads. Javarevisited
- 4 Apr Why Your Spring Data Queries Break After Every Refactor Spring Data introduces type-safe property paths, replacing fragile string references with method references the compiler understands. Javarevisited
- 16 Mar Java Streams Were Missing One Thing. Java 22 Finally Fixed It. Collectors always forced your stream to stop. Gatherers in Java 22 let it keep going, with state, windows and full control. Javarevisited
- 16 Mar Your Coding Instincts Are Broken. AI Agents Just Exposed That. Everything you know about software trade-offs was calibrated for a world where writing code was expensive. That world is gone. Level Up Coding
- 21 Feb Java Already Ships a Logger. Almost Nobody Uses It. System.Logger, the quiet API added in Java 9, removes a whole class of logging dependencies. Javarevisited
- 21 Feb Your Retry Logic Is Probably Broken. Spring Boot 4 Just Fixed That For You Spring Boot 4 ships native retry in org.springframework.resilience, and the API has nuances most articles get wrong. Javarevisited
- 17 Jan Java Runs Out of Memory, Yet This Code Still Executes How the JVM plans for memory failure long before your heap fills, and why code still runs after an OutOfMemoryError. Javarevisited
- 1 Jan AI Writes Code Faster. Humans Still Ship Better Software An analysis of hundreds of GitHub pull requests shows AI-generated code has more bugs in logic, security and performance. Level Up Coding
2025
- 17 Dec Why Senior Engineers Stop Trusting Spring Boot Defaults Connection pools, transactions, async calls, and the hidden costs of Spring Boot's defaults as a system grows. Javarevisited
- 3 Dec How Java Keeps Winning in 2025: Loom, Valhalla, Panama, and What That Means for Your Career Industry data on Java's growth, and what Loom, Valhalla and Panama mean for your career. Javarevisited
- 14 Nov Five Kubernetes Static Analysis Tools That Improve Your Manifest Quality Five tools that review Kubernetes YAML manifests and catch misconfigurations before rollout. Level Up Coding
- 14 Nov How To Execute Commands In A Docker Container How to run one or more commands in a running or stopped Docker container. Level Up Coding
- 30 Oct Structured Concurrency in Java How structured concurrency ties threads to a scope, so failures, cancellation and cleanup stop leaking. Javarevisited
- 26 Oct OpenAI Cofounder Brutal take on LLMs, Agents and Why AGI is Still Decade Away Andrej Karpathy on why large language models and agents are further from AGI than the hype suggests. Level Up Coding
- 14 Oct Checked Exceptions Have No Place in Modern Java Lambdas, streams and frameworks already moved past checked exceptions. The language should too. Javarevisited
- 14 Oct Stop Being Polite to ChatGPT. It Works Better When You’re Rude. A Penn State study found ChatGPT gave more correct answers to rude prompts than to polite ones. The Startup
- 9 Oct System Scaling Techniques Senior Engineers Must Master: Part 2 How to scale connections, sessions and threads once rate limiting and caching are not enough. Level Up Coding
- 6 Oct System Scaling Techniques Senior Engineers Must Master: Part 1 The patterns that keep a system up under load: rate limiting, throttling, CDN caching, eventual consistency, edge computing and hot-partition mitigation. Level Up Coding
- 1 Oct How Java Virtual Threads Broke Netflix Netflix ran Java 21 virtual threads in production and hit thread pinning. Javarevisited
- 28 Sept Architecture Design Patterns Every Senior Developer Must Know Part 2 More architecture patterns for large systems, starting with Staged Event-Driven Architecture. Level Up Coding
- 26 Sept Architecture Design Patterns Every Senior Developer Must Know Part 1 Architecture patterns for large-scale systems, starting with CQRS and Event Sourcing. Level Up Coding
- 20 Sept Monitoring Spring Boot Applications: Part 2 Monitoring Spring Boot startup events with JDK Flight Recorder. Level Up Coding
- 19 Sept Spring Boot Under the Hoods What happens when a client calls your Spring Boot API: the request lifecycle, step by step. Javarevisited
2023
- 14 Apr Fast Local Development of Spring Boot Apps on k8s With Skaffold & Telepresence Using Skaffold and Telepresence for fast local development of Spring Boot apps that run on Kubernetes. Ambassador Labs
- 21 Feb Java Functional Interfaces for the Impatient: Part 1 The functional interfaces in java.util.function, with code examples. Part one of a series. Level Up Coding
2021
- 31 Dec Monitoring Spring Boot Applications: Part 1 Using JDK Flight Recorder, which ships with the JDK, to monitor a Spring Boot application. Level Up Coding
- 21 Mar Spring Boot and Java 16 Records Java 16 records, delivered in JEP 395, and how to use them in a Spring Boot application. Level Up Coding
- 21 Jan Demystifying Google Container Tool Jib: Java Image Builder Inside Jib's image layering, and the benefits of the distroless images it uses by default. Javarevisited
- 3 Jan 10 Books Every Java Developer Must Read Books for experienced Java developers on concurrency, microservices, new language features and best practices. Javarevisited
2020
- 31 Dec Declare var, not war Local-variable type inference with var, added in Java 10 to cut boilerplate. Javarevisited
- 22 Dec Deploying Spring Boot Application on Kubernetes How to create a pod and deploy a Spring Boot application on Kubernetes. Javarevisited
- 7 Dec CI/CD Workflow for Spring Boot Applications on Kubernetes via Skaffold A CI/CD workflow for a Spring Boot application on Kubernetes, built with Skaffold. Javarevisited
- 15 Nov Containerizing Spring Boot Application with Jib Build Docker or OCI images for a Spring Boot application with Jib, without a Docker client or a Dockerfile. Javarevisited
- 11 Nov Connecting Simple Java Client with Apache Geode Docker Container Starting a locator and a server in an Apache Geode container and connecting to the cluster from a simple Java client. Medium
- 11 Nov Openshift Github Integration Triggering OpenShift builds on Minishift when you push changes to a GitHub repository. Medium
- 11 Nov Running Apache Geode With Docker How to run Apache Geode, a distributed in-memory data grid, inside a Docker container. Medium
- 2 May Running Simple Spring Boot Application on Openshift(Minishift) Deploying a simple Spring Boot application to OpenShift with Minishift. Javarevisited