Event Tracking System Design for Android Applications
6 min read
A systems-level breakdown of designing an event tracking system for Android, covering batching, schema enforcement, local persistence, and delivery guarantees.
6 min read
A systems-level breakdown of designing an event tracking system for Android, covering batching, schema enforcement, local persistence, and delivery guarantees.
6 min read
Architecture and trade-offs for building a feature flag and remote configuration system that handles targeting, rollout, and consistency across mobile clients.
6 min read
End-to-end design of a mobile analytics pipeline covering ingestion, processing, storage, and querying, with emphasis on reliability and latency trade-offs.
6 min read
System design for a multi-channel notification system covering delivery guarantees, rate limiting, user preferences, and failure handling at scale.
6 min read
Designing a page view counter that handles concurrent writes, avoids double-counting, and stays responsive under load using Postgres.
7 min read
How to design APIs that handle duplicate requests safely, covering idempotency keys, server-side deduplication, and failure scenarios specific to mobile networks.
6 min read
Measuring latency, bundle size, and relevance quality between client-side search with Fuse.js and server-side search with Postgres full-text and Meilisearch.
7 min read
Strategies for API versioning that keep old mobile app versions functional, covering URL versioning, header versioning, additive changes, and deprecation policies.
8 min read
System design for a mobile experimentation platform covering assignment, exposure tracking, metric collection, statistical analysis, and guardrail metrics.
7 min read
Designing a configuration system for mobile apps at scale, covering config delivery, caching layers, override hierarchies, and safe rollout of config changes.
7 min read
Designing a feature flag system with percentage rollouts, user targeting, and kill switches using Postgres and an in-memory cache.
7 min read
Rate limiting strategies for APIs consumed by mobile clients, covering token bucket algorithms, client identification, degradation modes, and mobile-specific considerations.
6 min read
Architecture decisions behind building a file-based CMS with MDX, Git-backed versioning, and incremental builds for a content-heavy site.
7 min read
How to design analytics event schemas that remain valid through product pivots, feature changes, and evolving business requirements without breaking downstream consumers.
8 min read
Architecture for a lightweight metrics ingestion pipeline using a buffer, batch writes, and pre-aggregated rollups on Postgres.
8 min read
Comparing client-heavy and server-heavy mobile architectures across performance, maintainability, update velocity, and user experience trade-offs.
7 min read
Measured payload sizes, request counts, latency, and battery impact of REST vs GraphQL APIs serving a mobile application with varying network conditions.
7 min read
How to design backend APIs that account for mobile-specific constraints: bandwidth, latency, battery, intermittent connectivity, and long-lived client versions.
7 min read
Implementing token bucket and sliding window rate limiting with Redis, including burst handling, multi-tier limits, and measured overhead.
9 min read
A comparison of push and pull architectures for mobile data delivery, covering WebSockets, SSE, polling, push notifications, and hybrid approaches with their constraints.
8 min read
Designing a webhook delivery system with retries, dead letter queues, signature verification, and measured reliability under various failure conditions.
8 min read
Architecture for a session-based authentication service with JWT access tokens, refresh token rotation, and measured security trade-offs.
6 min read
A framework for deciding where to draw boundaries in software systems, covering service boundaries, module boundaries, and data boundaries, with the trade-offs of each approach.
8 min read
Designing an inverted index from scratch with tokenization, ranking, and query parsing, then comparing it against Postgres full-text search.
7 min read
The specific qualities and patterns I look for when reviewing system designs, from data flow clarity to failure mode analysis, and the common mistakes that signal deeper problems.