- Android – Error Handling That Users Can Act On
One sealed ApiError whose cases are decisions, one place that maps every library exception onto it, the CancellationException you must never swallow, UiState instead of three booleans, and ActionOutcome for writes — including the cancelled case that a Result has nowhere to put.
- iOS – Accessibility
A drawn control carries no meaning. Labels, values, traits and the difference between them, combining a row into one announcement and the trap that hides its button, Dynamic Type, touch target size, and how to check any of it in about a minute — with the real controls in this app that needed each fix.
- AI-Assisted Engineering – Read the Code, Follow the Plan
Clicking Accept is not a review. The job moves from writing code to reading it: how to read an AI-written diff quickly, what to check first, how to hold the assistant to the agreed plan and spot drift, and a real case where accepting blind would have shipped a bug.
- TypeScript – Interview Questions
The questions a TypeScript role actually asks, answered against the twenty lessons before this one. any versus unknown, interface versus type, why enum is contentious, what structural typing means in practice, how narrowing works, what erases at build time and what does not. Short answers, with the reasoning behind them.
- NestJS – Interview Questions
The questions that actually get asked, with answers drawn from the nineteen lessons before this one — module scope and why a provider is not global, guards versus middleware versus interceptors, how Nest resolves a dependency, why the global ValidationPipe matters, and what happens to an exception on its way out.