- React – useReducer
When a component grows six setState calls that must agree with each other, a reducer collapses them into one function you can read top to bottom. Actions, the reducer's purity requirement, typing actions as a discriminated union, and the useReducer + context pairing that gives you Redux's shape without Redux.
- 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…
- Date Time API
Java has two date APIs. The old one — Date , Calendar , SimpleDateFormat — is mutable, not thread-safe, and confusing enough that it was replaced. The modern one, java.time , arrived in Java 8 and is what you should use for everything. This matters more than most "prefer the new API" advice,…
- 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.