- Java 11 Removed/Deprecated Features & Migration
Java 11 is the upgrade that breaks things. Not because the language changed — it barely did — but because Java 11 removed several modules that had been part of the JDK since the 1990s. Most upgrades from 8 fail for the same handful of reasons, and they are all fixable. Why this one hurts Java 9…
- Hash Tables
Turn the key into an array index and go straight there. Separate chaining, the load factor, why resizing has to rehash rather than copy, what a bad hashCode does to your O(1), and the equals/hashCode contract that breaks lookups when you get it wrong.
- Angular – RxJS, and How Much of It You Still Need
Signals took over state, but observables still own events over time. Built around one worked example — the menu search box — where `toObservable`, `debounceTime`, `distinctUntilChanged`, `switchMap` and `catchError` each fix a specific bug, and `toSignal` hands the result back to the template. Why `switchMap` and not `mergeMap` is the difference between correct and subtly wrong.
- Docker – Logs, Exec and Debugging a Container
Your container exited, or it says `unhealthy`, or it will not connect to the database. `logs -f`, `exec -it sh` into a running container, `inspect` for the config it actually got, `stats` for resources, what the exit code means, and the healthcheck that reported unhealthy forever because the image had no `curl` in it.
- Hasura – Actions
Actions are how anything Hasura cannot generate gets into the same GraphQL schema: you declare a type, point it at an HTTP endpoint, and it appears alongside the generated fields. Custom types, the request payload Hasura sends, forwarding client headers so your handler still knows who is calling, permissions, and error shapes. Shown with a real Action in front of a FastAPI endpoint, and its v3 replacement — a `Command` on a business-logic connector.