# Understand how systems work, by playing with them

> Free lessons on system design, technology and AI with live simulations, decision tables, working code and prompts you can hand to an AI.

Short lessons on system design, technology and AI. Move a slider, break something, see why, then leave with code that runs and a brief you can hand to an AI.

## Processing data: batch and stream

From what the two approaches are, through windows and tools, to a working pipeline you can run for a few dollars.

- [Batch vs stream processing, explained with a simulation](https://learn.chabulab.com/system-design/batch-vs-stream-explained.md): Batch collects data and processes it at once, stream handles it as it arrives. Run a live simulation to see what each costs, with a comparison table.
- [Batch or stream: which one fits your problem?](https://learn.chabulab.com/system-design/choosing-batch-or-stream.md): Pick a real problem to see whether batch, stream or both fits it, and why. With a quick rule for choosing and the Lambda and Kappa architectures.
- [Stream windows, event time and late data, explained](https://learn.chabulab.com/system-design/stream-windows-and-late-data.md): An endless flow cannot be summed once. Watch fixed, sliding and session windows in a live demo, then learn event time, watermarks and how to avoid duplicates.
- [Data processing tools: what to choose by language and cloud](https://learn.chabulab.com/system-design/data-processing-technologies.md): What Spark, Flink, Kafka, Airflow and the services on Cloudflare, AWS, Google Cloud and Azure do. Choose in three layers: industry standard, cloud, language.
- [Build a cheap data pipeline with TypeScript on Cloudflare or AWS](https://learn.chabulab.com/system-design/build-cheap-data-pipelines-typescript.md): Take orders, process small batches and total them nightly in one Worker. With a price table by tier, an AWS version and a prompt to hand the job to an AI.
- [Build batch pipelines with Spark and stream with Kafka, Flink](https://learn.chabulab.com/system-design/batch-and-stream-with-spark-and-flink.md): The steps to build a batch pipeline with PySpark and Airflow and a stream pipeline with Kafka and Flink SQL, with samples, safe re-runs and what to learn next.

- [Rate limiting explained: fixed window, sliding window and token bucket](https://learn.chabulab.com/system-design/rate-limiting-explained.md): Three ways to say no to too many requests. Run all three on the same traffic, see which lets a burst through, then return 429 the right way.
