The engineering notebook
RSS feedGood software.
Lessons from building it.
Deep dives into Flutter and Dart, with notes from across the stack. Architecture, backend systems, cloud, and AI - from the work behind the code.
By Ashish Bhakhand 108 published articles
All articles
108 articles
One Client Boundary per Feature in TCA
Give reducers a small capability-based dependency while network, persistence, and caching remain implementation details.
Flutter Forms Are State Machines, Not Widgets
Build Flutter forms that handle touched fields, dirty values, validation, submission, and reset without mixing everything into the UI.
Designing State, Intent, and Side-Effect Contracts in Kotlin
Give Compose features an explicit vocabulary for durable UI state, user input, and one-time work.
Why I Usually Choose FastAPI Over Django-and When I Would Choose Django
A practical framework decision based on the product you are building, the infrastructure you already have, and the work each framework removes.
Testing Business Logic Without AWS or MongoDB
Use Jest and repository ports to test decisions directly, without building fake Lambda events or connecting to a database.
MVI Versus MVVM for Complex Health Application State
Use a single state and explicit events when screens combine permissions, synchronization, local data, remote data, and navigation.
The Composable Architecture in a Real Application
Use state, actions, reducers, effects, and dependencies to make complex SwiftUI behavior explicit and testable.
Typed Failures in Dart Without Going Full Functional
Handle expected failures in Dart with clear result types, practical repository examples, and exhaustive UI states.
How I Structure TypeScript Lambda Features Without a Heavy Framework
A feature-first structure keeps Lambda handlers thin, business rules testable, and AWS and MongoDB details at the edges.