- Terraform – Data Sources and Reading Existing Infrastructure
Not everything you reference is something you created. Data sources read what is already there — the latest AMI, the availability zones in this region, an existing VPC, another stack's remote state. When a data source is the right answer, when importing the resource is, and the hard-coded AMI id that stopped existing.
- 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…