- Angular – Talking to an API with HttpClient
Every real app is mostly API calls. `provideHttpClient()`, typed `get` / `post` / `put` / `delete`, query params and headers, unwrapping observables with the `async` pipe or `toSignal`, the newer `httpResource()` for read-only data, and where to put error handling so it is not repeated in every component.
- Docker – Volumes, Bind Mounts and Keeping Your Data
A container's filesystem dies with it, so a database in a container needs somewhere else to write. Named volumes versus bind mounts, which to use for a database and which for live-reloading source, what `docker compose down -v` throws away, and why a bind-mounted database is measurably slower on a Mac.
- Hasura – Authentication
Hasura does not log anyone in — it verifies a token somebody else issued, and getting that split right is most of the work. JWT mode versus webhook mode, the `x-hasura-*` claims a token has to carry, the admin secret and why it must never reach a browser, and the unauthorized role that decides what a visitor with no token can see. Shown with one JWT secret shared between Hasura and a FastAPI backend — then `AuthConfig` in v3, where the admin secret does not exist at all.
- Python – Lists & List Comprehensions
Lists, the operations you actually use on them, sorting with a key, and list comprehensions — what they replace, when they are clearer than a loop, and the point past which they stop being readable.
- StringJoiner
Building a comma-separated string is one of those jobs that looks trivial and produces a trailing comma every time. StringJoiner is the small class Java 8 added to stop that happening, and two shorter forms cover most of what you would use it for. The problem Everyone writes this once, and everyone…