Topics
What I keep coming back to.
Series run in order; topics are a running theme. Every post also keeps its tags — this is the curated view on top of them.
-
Series
Cats Core
Learning Typelevel Cats Core in Scala 2 through runnable examples: combining optional values, collecting validation errors, and understanding the type classes behind practical operations.
-
Series
Scala and the JVM
Learning Scala 2 and Play from a Java and Spring background, step by step: language fundamentals, sbt workflows, domain modelling, asynchronous services, with runnable examples and practical comparisons.
-
Series
LLMs, the whole thing
Working through large language models from the ground up — turning text into tokens, embeddings and the geometry of meaning, the transformer architecture, attention, how these models are trained, and what separates one generation from the next.
-
Topic
Maths for LLMs
Understand the mathematics under large language models, built from zero — words as coordinates, the angle that measures meaning, the dot-product shortcut that computes it, and the contrastive objective that shapes the whole space.
-
Series
Building agents on the JVM with Embabel
Learning Embabel by building with it, in order — planning, durable sessions, testing without a model, tools, human-in-the-loop, tracing, exposing it over MCP.
-
Series
Shipping an AI feature into my own product
Build it, attack it, keep extending it — the Ask Zakaria concierge from the first prompt through prompt-injection red-teaming to reading a job description and taking questions by voice.
-
Series
Learning MongoDB
Coming to document databases from a relational background, in order — modelling, then aggregation, then what the engine does underneath.
-
Topic
From Java to Python
Coming to Python from years on the JVM — learning it by mapping every concept back to Java, then using it to build the AI tooling that made me want the language in the first place.
-
Topic
Traces, Tempo and the LGTM stack
Instrument it, learn to query it, then point it at something that thinks.
-
Topic
Working with Claude Code
An agent as a collaborator rather than an autocomplete — design systems, durable knowledge, automation ladders, subagent fleets on my own source, and now in CI.
-
Topic
Working with Codex / ChatGPT
Using Codex and ChatGPT as engineering collaborators — repository workflows, security reviews, automation, and the practical boundaries that keep the work controlled.
-
Topic
Security and privacy, in practice
Attacking my own features and reading the protocols underneath them — secrets delivery, response headers, a published address for bad news, a cookie banner that sets no cookies, and what an auth flow is actually protecting you from.
-
Topic
The Model Context Protocol, hands on
Building MCP servers and pointing agents at real systems — Spring Boot tools, an email inbox, a JVM agent framework.
-
Topic
Git, past the happy path
The plumbing under the porcelain — what git actually stores, the rules that only announce themselves when you break them, and how the model changes once more than one worker shares a repository.
-
Topic
Spring and Java mechanics
Framework behaviour that only shows up when you push on it — validation, migrations, batch, aggregate boundaries, events that outlive the request, and the Spring AI plumbing that fills a vector store and queries it back.
-
Topic
Running the box: Docker, Linux, the JVM
What actually happens between systemd and your fat jar.
-
Topic
Building this site in public
Shipping and operating my own product in public — one jar serving two hosts, making it findable, dropping experiments into it, shipping a free CV builder off the side.
-
Topic
Patterns for engineers
The design and architecture patterns every backend engineer should have at hand — each built as a small, runnable showcase you can watch work, with the trade-offs and the framework gotchas spelled out rather than hand-waved.
-
Topic
Ideas
Things I'm exploring before they're fully formed — experiments, sketches and open questions, written down while they're still moving.
-
Series
Learning enumeratum
A hands-on, lesson-by-lesson walk through enumeratum, the Scala library that turns sealed traits into real enums: autogenerated values, safe parsing from strings, and integrations with JSON and databases. Each post starts from runnable sbt code on Scala 2.13 and compares it with what plain Scala gives you, scala.Enumeration and hand-rolled case objects, so you see why teams reach for it.
- Series Guice and play and escaping DI hell
-
Series
Kubernetes: From Zero to Hero
Building and operating my own Kubernetes lab (v1.37): a multi-node cluster with Calico for network policies, metrics-server for autoscaling, and the Gateway API. Next comes a kubeadm setup on Ubuntu VMs to practise installs, version upgrades and etcd backup/restore. Everything is reproducible: pinned versions, idempotent bash scripts, all in git.