- ArrayList — Building a Growable Array
ArrayList with the lid off — an array, a size, and a resize when it fills up. Why doubling makes add() amortised O(1) while growing by one makes n adds O(n^2), what the resize actually costs, and the null that stops a removed element leaking.
- Spring Boot – JdbcTemplate
When JPA has nothing to offer — aggregates, reports, any query whose result is not an entity. NamedParameterJdbcTemplate, RowMappers in their own testable classes, and the trap that silently inflated a revenue report: hand-written SQL never sees the @SQLRestriction that hides deleted rows.
- Terraform – Install It and Run Your First Apply
Install Terraform, point it at AWS, and create something real. The four commands the whole tool is built around — `init`, `plan`, `apply`, `destroy` — what each one actually does, how to read a plan before you approve it, and why `init` downloads hundreds of megabytes the first time and nothing the second.
- React Native – Deep Linking and the URL as State
A phone app has URLs too. Registering a scheme, what a universal link needs beyond that, and the habit worth keeping from the web: putting screen state in route params so a link opens the app already filtered. Also the trap — a deep link can point at a screen a newer build removed, which is why `+not-found` matters more here than on the web.
- Python – Iteration (for / while loops)
The for loop that walks a sequence rather than an index, when a while loop is the right shape, range, enumerate and zip, break and continue, and the loop-else clause almost nobody knows is there.