- React Native – Storing Data on the Device
There is no `localStorage`, and that turns out to be an improvement. `AsyncStorage` for what is inconvenient to lose, `expo-secure-store` — the iOS Keychain and Android EncryptedSharedPreferences — for anything an attacker could use. Both are asynchronous, which is why an app that reads a token on launch needs an `initialising` state and a splash screen that waits for it.
- Spring Security – How Authentication Works
The filter chain, AuthenticationManager, UserDetailsService and the SecurityContext — the four pieces everything else in Spring Security is built on. Password hashing with BCrypt, and why a login failure should be deliberately vague about which half of the credentials was wrong.
- TypeScript – Interfaces vs Type Aliases
They overlap almost completely, which is why the question keeps coming up. The three real differences — declaration merging, what each can name, and the error messages you get back — and the rule this app follows: interface for a shape with a name, type for everything a shape cannot express.
- NestJS – DTOs and Validation
class-validator, the global ValidationPipe, and the failure mode that ships more often than any other in Nest: an app with beautifully annotated DTOs and no global pipe is completely unvalidated, and nothing about it looks wrong. Plus whitelist, forbidNonWhitelisted, and why the response DTO is a separate idea from the request one.
- Python – Generators & Iterators
What the for loop is really doing, and how `yield` lets you produce a sequence without building it. Generator expressions, laziness and why it matters on a large file, and the one rule about consuming a generator twice.