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
The Flutter Race Conditions I Fixed with bloc_concurrency
Choose between droppable, restartable, sequential, and concurrent BLoC event handling using pagination, search, and submission examples.
Practical Pydantic Validation Beyond Basic Field Types
Use strict objects, constrained fields, normalization, literals, and model validators without moving business logic into schemas.
Serverless Observability Without Logging Everything
Use structured events, low-cardinality metrics, and clear naming to make Lambda systems diagnosable without producing noisy or unsafe logs.
A Production Swift Networking Layer with URLSession
Centralize authentication, envelopes, correlation IDs, decoding, safe diagnostics, and transport error mapping.
Predictable Compose Recomposition with State Hoisting
Control ownership, stability, derived values, and list identity before reaching for premature performance tricks.
Why I Keep Choosing BLoC and Equatable for Production Flutter Apps
How growing Flutter features pushed me from widget-owned state to explicit events, predictable states, and value equality.
Pydantic Is a Boundary, Not Your Entire Domain Model
Separate API schemas, internal domain types, and database rows so each representation serves the job it was designed for.
Reliable SQS Workers: Retries, Partial Failures, and Dead-Letter Queues
Build Lambda consumers that expect duplicate delivery, isolate poison messages, and retry only the records that failed.
Keeping Compose Screens Free of Network and Storage Work
Let composables describe UI while ViewModels and repositories own effects, retries, and persistence.