AppSync Events, part 4b: load, contention, and the aggregate-mode payoff
Smoke-scale numbers against a live Event API, a calibrated experiment programme for the latency knee and hot-item contention, and the sync/async trade finally stated with data.
Smoke-scale numbers against a live Event API, a calibrated experiment programme for the latency knee and hot-item contention, and the sync/async trade finally stated with data.
DynamoDB can do semantic search natively now. A complete, code-heavy guide to the new vector indexes - the custom resource CloudFormation makes you write, and the score semantics you don't want to get backwards.
The publisher-visible failure surface AWS doesn't document, the dead-letter queue that stayed empty, and what a poisoned handler taught us about EVENT-mode semantics: measured, dated, reproducible.
Pinning docs-vs-source discrepancies with tests, a module-load pattern for testable Lambda handlers, and a hand-rolled WebSocket client whose own race condition made the case for it.
Designing for partial failure on purpose: one DynamoDB transaction with four outcomes, an error taxonomy shaped by a library's formatter, and the case where aggregate mode wins outright.
A verified picture of AppSync Events: what the service actually is, the complete pricing model, the quotas that shape designs, and the two open questions that started this series.
Publishing events for other systems without coupling the write path, why aggregates get closed instead of deleted, an EventBridge failure mode that hides in a 200, and where this architecture costs you.
Queries shouldn't replay history. Building a materialized read model off DynamoDB Streams - projections, idempotent upserts, the single-table self-loop trap, and eventual consistency you can watch happen.
Why an append-only event log beats a balance column, and how to build a real write model on DynamoDB - the fold, invariants, optimistic concurrency, and snapshots.
App-shell precaching, one Workbox rule for map tiles, and a 'cache this area' button that warms the cache with plain fetch(): the service-worker layer of an offline-first PWA.
Leaflet without the marker-icon hacks, geolocation as a small state machine, and a monotone-chain convex hull with a projected-shoelace area readout: the map layer of an offline-first PWA.
A code-level walkthrough of Waypoints' offline-first data layer: IndexedDB as the source of truth, a payload-free outbox, and idempotent sync to AppSync keyed on client-generated UUIDs.
The from-scratch setup of Elliot's main compute — flashing Ubuntu 24.04 Server, the mDNS and direct-ethernet DDS plumbing that makes two Pis talk, the swap and USB-current tweaks a Pi 5 actually needs, and a clean ROS2 Jazzy install.
Moving an AI journaling coach from the Amplify AI Kit to a Strands agent on AgentCore Runtime - with a shadow memory pipeline that lets it actually remember you.
How Realysis runs its one agentic feature on Lambda + AppSync - why results are published instead of returned, how cancellation and a token budget share one kill-switch, and the guardrails that bound the one variable-cost actor.
The hardware and ROS2 software behind Elliot's status ring — driving 96 WS2812Bs straight from a Pi's SPI with no microcontroller, a pure-function animation engine on a render thread, and the sudo that quietly cut the node off from the rest of ROS2.
The conventions, guardrails, and MCP setup I use to run long autonomous coding sessions without drift.
An Astro static site, a navy-and-brass design system, and a single CDK stack you can deploy from your laptop. Here's the whole recipe.