- Docker Compose – Profiles, Overrides and Multiple Files
Not every service should start every time. Compose profiles put Elasticsearch, a message broker and a mail sink behind opt-in flags so the default `up` starts one container. Then `compose.override.yaml`, stacking `-f` files for dev and prod, and how `${VAR}` and `.env` interpolation works.
- Hasura – Migrations, Metadata and CI/CD
How a schema change gets from your laptop to production without anyone clicking in a console. What the Hasura CLI's migrations, metadata and seeds directories each hold, why metadata and migrations must move together, and the awkward question of who owns the schema when your ORM already runs its own migrations. Then a pipeline that applies both on merge, and the v3 equivalent built on `ddn supergraph build`.
- Java 21 Virtual Threads
A virtual thread is a thread that costs almost nothing to create. You can have millions of them. That single change removes the reason most server code was written asynchronously, and it is the biggest thing to happen to Java concurrency in twenty years. The problem A platform thread — the only…
- Greedy Algorithms
Take the best-looking option at each step and never reconsider. Fast, simple, and correct only when the greedy choice property holds — with a worked case where greedy returns three coins and dynamic programming returns two, so you can see it fail.
- Spring Boot – Stateless API Authentication with JWT
Issuing a token at login, validating it in a OncePerRequestFilter, and putting the result in the SecurityContext. Where the signing key comes from, what does and does not belong in a claim, and the honest trade-off nobody mentions: a stateless token cannot be revoked.