Archive
All 9 entries, newest first: 5 short notes and 4 longer essays. Search by title or topic, or narrow the list to one tag.
9 entries
2026
- MLX Studio: a macOS app to download, run and serve MLX models on Apple SiliconTo run a local model on a Mac you usually need three command-line tools: one to download the weights, one to serve them and one to chat. You find out that a model does not fit in memory at a given context length only when loading fails. Connecting your own code to the model is one more integration.
- Native image vs JVM on Spring Boot 4.1: 4.3x less memory, 18x faster startupMost native image vs JVM numbers come from benchmarks of other applications. Here one service is built both ways from the same source code and measured on the same dashboard, so the numbers describe this code on this cluster.
- Java, Python, Node and Rust on the same REST service: 7 MB to 191 MB at idleMoving a service to another language was expensive because of the integration work. The language itself was easy to learn. You had to choose a framework, an ORM, migrations and metrics, make them work together and connect them to the production tooling. AI coding tools now do much of that work, so the runtime choice is worth measuring again.
- InvestigatorAI: a multi-agent investigation system with LangChain4j, Neo4j and QdrantAn investigation question can need a graph query, a document search and a check of the sources. One model call cannot do all of this well. When the work is split into separate tasks, each one using real data, the answers are more accurate and you can see which step produced a wrong finding.
- Remote debugging a Spring Boot service on Kubernetes with JDWPWhen a bug appears only inside the cluster, debugging with logs means adding a log line, rebuilding the image, redeploying and reproducing the bug again. Each attempt takes minutes, and the new log line may still not show the value you need.
- One trace ID across Spring Boot, FastAPI and LangChain on Kubernetes with OpenTelemetry and GrafanaWhen a service that calls two other services fails, you have to read three log streams and match the lines by timestamp. With one correlation ID in every request and every log line, one query returns all the lines of the failed request.
- Centralized exception handling in REST APIs with Spring and FastAPIAn API often handles exceptions in one of two bad ways. It catches them and logs nothing, so nobody can find the error later. Or it lets them reach the client, and the response shows class names, table names and SQL.
- Local Kubernetes on a Mac: Minikube profiles, kubectl contexts and k9sTesting a change on a remote Kubernetes cluster means building an image, pushing it to a registry, deploying it and waiting, which takes minutes for every change. A local cluster removes the remote deploy from that loop.
- Java, Python and Node versions on a Mac with SDKMAN, pyenv and nvmDifferent projects need different Java, Python and Node versions. Without a version manager you have one version per language, and you reinstall runtimes by hand every time you change project.