- AI-Assisted Engineering – You Own the Output
An AI assistant can now read a codebase, trace a feature through five layers, write the change, run the tests and draft the pull request. That is not a prediction; it is what happened while this series was being written, and every post shows the session it came from. What it has not changed is who…
- Android – Networking with Retrofit and OkHttp
Retrofit interfaces as the API surface, OkHttp interceptors for the token, kotlinx.serialization and the three settings that bite, the base URL from build configuration rather than code, and why plain HTTP to your dev machine fails until you write a network security config.
- iOS – Taking Payments with Stripe
PaymentSheet rather than a card form of your own, and the PCI reason that is not negotiable. The two-step order-then-pay flow and why it has to be two steps, quarantining the SDK behind a protocol so checkout is testable, bridging a completion handler into async, and the dismissed sheet that is not an error.
- TypeScript – With React
Typing props and children, useState where inference is enough and where it is not, useRef's two different types, event handlers, and generic components. Plus the context pattern that removes the `| undefined` every consumer would otherwise have to handle, taken from this app's auth provider.
- NestJS – Testing
Test.createTestingModule, mocking a provider with useValue, and getting the token right — @InjectDataSource does not ask for the class, so overriding the class leaves your test talking to the real database. Then e2e with supertest, and the trap that makes a whole suite pass vacuously: forgetting the global pipe.