- Java 21 Pattern Matching for switch
Java 21 lets a switch match on types, not just constants. Combined with sealed types , it turns a chain of instanceof checks into something the compiler can prove is complete. The chain it replaces Each case tests a type and binds a variable of that type, the same as instanceof pattern matching .…
- React – Error Boundaries
One thrown error in one component blanks the entire page — React unmounts the whole tree rather than show something broken. An error boundary is the only thing that stops it, it is still the one thing you need a class component for, and it does not catch event handlers or async code. Here is what to do about all three.
- Angular – Template-Driven Forms
The quicker of Angular's two form systems, and the right choice for a short form. `FormsModule` and `ngModel`, `ngForm` and template reference variables, the built-in validators, showing an error only once the field has been touched, and the point at which you should stop and reach for reactive forms instead.
- 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`.