YOUR LEARNING LIBRARY
Start where you are.
Build what comes next.
Foundations for your first steps. Focused workshops for deeper practice. The lesson counts below describe content available now.
Beginner
JavaScript from zero
From your first instruction to a working expense summary. No setup or previous coding needed.
Prerequisite: NoneView syllabus ↗Python · 11 lessonsPython from zero
Learn with readable examples, small experiments, and a practical expense project.
Prerequisite: NoneView syllabus ↗SQL · 8 lessonsSQL for everyday data
Query a real SQLite database, then build a spending report.
Prerequisite: NoneView syllabus ↗Intermediate
Advanced
JavaScript engineering patterns
Build a cache, order dependent jobs, retain async outcomes and reason about sliding windows.
Prerequisite: JavaScript foundationsView syllabus ↗TypeScript · 3 lessonsTypeScript at application boundaries
Validate unknown data, model state transitions and preserve type relationships.
Prerequisite: TypeScript foundationsView syllabus ↗Python · 3 lessonsPython data pipelines and algorithms
Merge reservations, rank frequent events and build a resilient JSON ingestion pipeline.
Prerequisite: Python foundationsView syllabus ↗SQL · 3 lessonsSQL beyond basic queries
Rank tied records, calculate running totals and paginate with composite cursors.
Prerequisite: SQL foundationsView syllabus ↗Go · 1 lessonsGo · Cancellation in a bounded worker pool
Cancellation must reach both work and blocked channel operations.
Prerequisite: Go functions, channels and contextView syllabus ↗Rust · 1 lessonsRust · Share ownership without hiding failures
Thread safety and correct failure handling are separate responsibilities.
Prerequisite: Rust ownership, Result and threadsView syllabus ↗Java · 1 lessonsJava · Coalesce concurrent cache loads
One in-flight operation per key prevents duplicate expensive work.
Prerequisite: Java collections, futures and executorsView syllabus ↗C# · 1 lessonsC# · Bound asynchronous work and propagate cancellation
Bound concurrency independently from the size of the input.
Prerequisite: C# Task, async/await and CancellationTokenView syllabus ↗TypeScript · 1 lessonsReact · Prevent stale requests from replacing current state
An effect owns the lifetime of the asynchronous work it starts.
Prerequisite: React hooks and TypeScript unionsView syllabus ↗JavaScript · 1 lessonsNode.js · Stream files with backpressure
A slow consumer must constrain a fast producer.
Prerequisite: Node.js streams and promisesView syllabus ↗TypeScript · 1 lessonsNext.js · Authorize every server-side mutation
A hidden button is not an authorization boundary.
Prerequisite: Next.js App Router, sessions and SQLView syllabus ↗TypeScript · 1 lessonsExpress / NestJS · Design an idempotent write
A retry should reuse the original result without repeating the business effect.
Prerequisite: HTTP APIs, SQL transactions and request validationView syllabus ↗Python · 1 lessonsDjango / FastAPI · Keep blocking work out of async handlers
The event loop stays responsive only while handlers cooperate.
Prerequisite: Python async/await and HTTP API basicsView syllabus ↗C# · 1 lessonsASP.NET Core · Detect conflicting edits with a version token
A read-modify-write operation needs a conflict policy.
Prerequisite: ASP.NET Core minimal APIs and EF CoreView syllabus ↗SQL · 1 lessonsSystem design · Deliver events with a transactional outbox
Write business state and the intent to publish in one transaction.
Prerequisite: SQL transactions, queues and API designView syllabus ↗SQL · 1 lessonsDatabase engineering · Transfer value without lost updates
Lock shared records in a consistent order and keep invariants in the database.
Prerequisite: SQL updates, constraints and transactionsView syllabus ↗JavaScript · 1 lessonsDevOps / Cloud · Drain a service during deployment
Readiness, liveness and graceful shutdown solve different problems.
Prerequisite: HTTP, Node.js and container basicsView syllabus ↗