- React Native – Platform APIs and Device Differences
Where "write once" stops. `Platform.OS` and `Platform.select`, `.ios.tsx`/`.android.tsx` files that the bundler picks for you, `Alert` instead of `window.confirm`, `Dimensions` versus `useWindowDimensions` — and `AppState`, the one with no web equivalent at all: the OS can suspend or kill your process without warning, and unsaved work goes with it.
- TypeScript – Unions and Intersections
A union is a value that is one of these; an intersection is a value that is all of these at once. Why you can only reach the members a union has in common, why an intersection of two conflicting properties gives you never rather than an error, and how a union of string literals replaces a validation function.
- NestJS – Pipes
What a pipe is — transform, validate, or both — the built-in ones worth knowing, and writing your own PipeTransform. Built around a real bug this app had: @Length(1, 80) happily passed three spaces that the service then stored as an empty string, because the validator and the service disagreed about what the value was.
- Java 17 Other Improvements
Six years and three LTS releases separate Java 11 from Java 17. The headline features get their own posts; this one collects the smaller changes that arrived in between and are easy to miss entirely — several of which you have probably already benefited from without noticing. Helpful…
- Dynamic Programming
Solve each subproblem once and remember the answer. The two conditions that have to hold, top-down memoisation versus bottom-up tables, and the jump from O(2^n) to O(n) on Fibonacci. Plus coin change, knapsack, LCS and Kadane's algorithm.