- iOS – The App Lifecycle and What a Phone Does to You
A browser tab lives until it is closed; your app can be suspended mid-sentence and killed without warning. scenePhase, the write you have to flush before backgrounding, the launch gate an async Keychain read forces on you, and the startup ordering that is load-bearing rather than tidy.
- TypeScript – Decorators
A decorator is a function that runs when the class is defined. What @Injectable, @Column and @Post are really doing, the metadata reflection that lets a framework read your parameter types at runtime, writing your own, and the split between the legacy experimentalDecorators and the standard ones — with which this app uses.
- NestJS – File Upload
FileInterceptor and multer, and the fact that decides everything else about an upload endpoint: the Content-Type is whatever the client typed. Memory storage versus disk and why it is a security choice, stopping a 2 GB request at 5 MB, sniffing magic bytes, and generating the stored filename rather than sanitising one.
- Android – Bottom Sheets and Dialogs
In Compose a sheet is shown by being composed and dismissed by leaving composition. ModalBottomSheet and its state, skipPartiallyExpanded, AlertDialog for destructive actions, resetting a form for free with keyed state, and the one nullable enum that makes two sheets at once impossible.
- iOS – Persistence, UserDefaults and the Keychain
Where each thing belongs and why the split is a security decision, not a convenience one. UserDefaults for preferences, the Keychain for a session token, the accessibility class that actually matters, and why the Security API makes you write save as delete-then-add. Plus what SwiftData is for.