Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

iot

Scheduling reconnect attempts with exponential backoff, a cap and jitter, without blocking the loop

taught

Taught in

Requires

Local knowledge map

Local knowledge map

Choosing clean or persistent sessions and reasoning about… Deciding between a gateway and direct-to-cloud… Getting wall-clock time onto a device with NTP, timestampin… Recognizing at-least-once delivery and making a receiver… Buffering readings in a bounded offline queue with a drop… Publishing telemetry and handling commands from an ESP32 with th… Scheduling reconnect attempts with exponential backoff,… Debouncing a button in firmware with a time window or a state… Listing what can go wrong during an over-the-air update… Measuring distance with ultrasonic timing, time-of-fligh… Passing data from an ISR to a task with a single-producer… Recognizing which embedded-systems skills (non-blocking… Stating what each part of a system does when any one of its links… Using retained messages for last-known state and… Watching device health through heartbeats, metrics, logs and… Naming the ways a device's connection fails (access point,… Timing with millis() and rollover-safe unsigned subtraction Choosing integer types by width on 8-bit vs 32-bit… Designing a finite state machine with states, events and… Explaining how a device gets an address with DHCP and finds a… Explaining why delay() makes a sketch miss inputs

Click to expand

Solid arrows are required prerequisites; dashed are recommended or helpful. Lower rows are more foundational. Click any box to jump to that concept.