The MCP spec says a client should discover the auth server and dynamically register itself. Cognito supports neither half of that. This is the war story of getting Kiro, Claude, claude.ai, and VS Code Copilot all authenticated to one remote MCP server behind Cognito — the DCR dead end, the static client-ID path that works, and the per-client quirks that only surface live.
How I built an interactive Kanban board as an MCP App — a UI served by an MCP server and rendered inside the chat — then deployed it to Bedrock AgentCore behind a Gateway. The interesting parts weren't the happy path: a widget-per-tool-call render bug, latency-zero drag races, and a /tmp SQLite store that silently reset on every call.
A deep dive into how Lambda actually runs your code — Firecracker microVMs, the invoke path, the Assignment and Placement services, cold starts, lazy-loading 10 GB container images, and SnapStart.
A deep dive into how AgentCore Runtime hosts AI agents — the session-per-microVM isolation model, the Active/Idle/Terminated lifecycle, the service contract, async work via HealthyBusy, what the pricing model reveals about the architecture, and designing chat vs. overnight-batch fleets inside the quota envelope.
A thorough walk through Chapter 7 of Designing Data-Intensive Applications: what a transaction really is, ACID demystified, every weak isolation level (read committed, snapshot isolation) and the race conditions they do and don't prevent (dirty reads/writes, read skew, lost updates, write skew, phantoms), and the three ways to achieve full serializability — serial execution, two-phase locking, and serializable snapshot isolation.
Working through Chapter 5 of Designing Data-Intensive Applications: why we replicate data, the three replication architectures (single-leader, multi-leader, leaderless), synchronous vs asynchronous tradeoffs, what goes wrong with replication lag, and how systems detect and resolve write conflicts.
Working through Chapter 4 of Designing Data-Intensive Applications: why we need encoding formats at all, how JSON/Protobuf/Avro/Thrift differ, what backward and forward compatibility actually mean, and how data flows between processes via databases, RPC, and message queues.
Working through Chapter 3 of Designing Data-Intensive Applications: how indexes actually work, from a dumb append-only log to hash indexes, SSTables, LSM-trees, B-trees, and the secondary indexes built on top of them.
Notes on the advanced Postgres jargon that keeps showing up in production discussions — MVCC, WAL, locks, vacuum, RLS, replication, and the connection pooling gotchas that flow from them.
A deep dive into how S3 actually stores 100 trillion objects — the metadata/data split, flat namespace, placement service, durability through erasure coding, versioning, multipart uploads, garbage collection, and consistency.