- Java 25 Migration Guide (21→25)
Java 21 to 25 is the smallest LTS-to-LTS step Java has had. Nothing significant was removed from the API, the language changes are additive, and most applications move by changing one number. This post covers what to check anyway. The one-line version Upgrade build plugins and dependencies first,…
- Terraform – Dev, Staging and Prod Without Copy-Paste
Three ways to run the same configuration against three environments: workspaces, separate directories with a shared module, and one directory with per-environment `.tfvars` and backend config. What each actually gives you, why workspaces are a trap for prod specifically, and the layout that survives the fourth environment.
- React Native – Performance
Why a React Native app drops frames and what to do about it. There are two threads and most of your code is on one of them. `memo` and `useCallback` as a pair — one is useless without the other — `FlatList` over `ScrollView`, animations on the native driver, and the honest advice: measure before you optimise, because the usual suspects are usually innocent.
- TypeScript – Classes
public, private and protected, and why TypeScript's private is a compile-time promise while #private is a runtime one. readonly, parameter properties and the build flag that bans them, abstract classes, implements versus extends, and subclassing Error so the UI can tell a rejected write from a server that fell over.
- NestJS – Middleware
The outermost layer, and the only one that is not really Nest — it is Express, with a class around it. What that buys and what it costs, why there is no APP_MIDDLEWARE token, and the question that decides between middleware and an interceptor: does this need to run even when a guard rejects the request?