- Tries
A prefix tree: one node per character, words spelled out along the paths. Why it is the wrong choice for exact lookup — a HashSet is simpler and faster — and the right one for autocomplete and every other prefix question a set cannot answer.
- Terraform with AWS – Building the Network and Database
The first half of a real deployment. A VPC with public and private subnets across two availability zones, an internet gateway and route tables, security groups that reference each other instead of hard-coding CIDRs, and an RDS MySQL instance for the pizza API — with the database password kept out of both the code and the state file.
- React Native – Error Boundaries and Failure States
A crash on a phone is a blank screen the user cannot refresh away. Error boundaries and what they deliberately do NOT catch — event handlers, timeouts, async functions, which is most of the code that fails. Turning an API error into something a customer can read, distinguishing a failure from a cancellation, and the LogBox and red screen you only see in development.
- Spring Boot – Testing
The test pyramid as Spring Boot expresses it: a plain unit test with Mockito, a @WebMvcTest slice, a @DataJpaTest slice, and @SpringBootTest for the cases that genuinely need the whole context. Testing secured endpoints, and why the slice you reach for first should be the smallest one that fails honestly.
- TypeScript – Generics
A generic is a function's type argument, and the point is preserving a relationship the checker would otherwise lose. Constraints with extends, defaults, generic interfaces and classes, and the rule for when NOT to reach for one — with a data loading hook that would return `any` without them.