- AI-Assisted Engineering – Turning a Ticket into Requirements
A one-line ticket is not a spec. Using the assistant to draw out clarifying questions, edge cases and conflicts with existing behaviour before any code exists, and why the answers have to come from a person, not the model.
- AI-Assisted Engineering – Analysing an Unfamiliar Codebase
Before changing anything, understand it. Using Claude read-only to trace checkout from the button to Stripe, size the change, and find the rules the code already enforces. Plus how to check that the explanation you got is true.
- Android – Coroutines and Flow
Structured concurrency on Android: viewModelScope, an application scope for work that must outlive a screen, async for parallel requests, cancellation as a debounce, a polling loop that stops itself, Mutex instead of synchronized, and StateFlow with stateIn and collectAsStateWithLifecycle.
- iOS – Testing an iOS App
What to test and what to skip. Pure rules first because they cost nothing, a real URLSession against a stubbed URLProtocol so the assertions are about the bytes you would send, hand-written doubles over a mocking framework, testing async and main-actor code, and why @MainActor on an XCTestCase is wrong.
- AI-Assisted Engineering – Setting Claude Up for a Real Codebase
An assistant is only as good as the context it starts with. CLAUDE.md as standing instructions, a progress report as shared state, memory, permission modes, and MCP servers for GitHub, AWS and the browser. What to put in each, and what to leave out.