{"question": "Why doesn't my Spark code do anything until I call count()?", "lessons": ["course/06-execution-model.html"]}
{"question": "How do I read the Spark UI to find a slow stage?", "lessons": ["course/22-spark-ui.html"]}
{"question": "One key has most of the rows and a single task runs forever", "lessons": ["course/23-skew-aqe.html"]}
{"question": "When should I cache a DataFrame?", "lessons": ["course/20-caching.html"]}
{"question": "pandas UDF vs normal python UDF speed", "lessons": ["course/16-udfs.html"]}
{"question": "Why does comparing a column to NULL return no rows?", "lessons": ["sql/05-filtering-nulls.html"]}
{"question": "running total per customer ordered by date", "lessons": ["sql/14-windows-1.html", "sql/15-windows-2.html"]}
{"question": "find customers who never placed an order", "lessons": ["sql/10-advanced-joins.html", "sql/12-subqueries.html"]}
{"question": "walk an employee-manager hierarchy with a recursive query", "lessons": ["sql/13-cte.html"]}
{"question": "fast pagination without OFFSET on large tables", "lessons": ["sql/06-order-limit.html"]}
{"question": "dirty reads, phantom reads and isolation levels", "lessons": ["mysql/08-mvcc.html", "sql/25-transactions.html"]}
{"question": "how does a B-tree index make lookups fast", "lessons": ["mysql/10-btree.html", "sql/26-indexes.html"]}
{"question": "two transactions wait for each other forever in InnoDB", "lessons": ["mysql/09-locking.html"]}
{"question": "composite index column order leftmost prefix rule", "lessons": ["mysql/11-composite-indexes.html"]}
{"question": "set up a replica for high availability", "lessons": ["mysql/19-replication.html"]}
{"question": "restore the database to a point in time using binary logs", "lessons": ["mysql/18-backup.html"]}
{"question": "what is a closure and the nonlocal keyword", "lessons": ["python/02-scope-closures.html"]}
{"question": "write a decorator that takes arguments", "lessons": ["python/05-decorators.html"]}
{"question": "process a huge file lazily without loading it into memory", "lessons": ["python/06-iterators-generators.html"]}
{"question": "why don't threads speed up CPU bound Python code", "lessons": ["python/16-gil-concurrency.html"]}
{"question": "run many HTTP requests concurrently with the event loop", "lessons": ["python/17-asyncio.html"]}
{"question": "find the shortest route in a weighted graph", "lessons": ["dsa/18-shortest-paths.html", "dsa/25-project.html"]}
{"question": "autocomplete words by prefix", "lessons": ["dsa/16-tries.html"]}
{"question": "keep the k largest items efficiently", "lessons": ["dsa/15-heaps.html"]}
{"question": "govern tables, permissions and lineage across workspaces", "lessons": ["databricks/06-unity-catalog.html"]}
{"question": "incrementally ingest new files landing in cloud storage", "lessons": ["databricks/08-ingestion.html"]}
{"question": "bronze silver gold layers", "lessons": ["course/26-lakehouse.html", "databricks/09-medallion.html"]}
{"question": "make the model return JSON that matches a Pydantic schema", "lessons": ["openai-sdk/06-structured-outputs.html"]}
{"question": "the model asks my code to run a function, how do I loop", "lessons": ["openai-sdk/07-function-calling.html"]}
{"question": "handle rate limit 429 errors with backoff", "lessons": ["openai-sdk/12-errors-retries.html"]}
{"question": "show tokens to the user as they are generated", "lessons": ["openai-sdk/05-streaming.html"]}
{"question": "reduce cost with prompt caching and batching", "lessons": ["openai-sdk/13-cost-latency.html"]}
{"question": "What does the KV cache store during generation?", "lessons": ["ai-engineering/02-tokens-transformer.html"]}
{"question": "my stdio MCP server breaks when I print debug output", "lessons": ["ai-engineering/12-mcp.html"]}
{"question": "a tool definition changed after I approved the server", "lessons": ["ai-engineering/14-mcp-client-security.html"]}
{"question": "which span attribute holds the number of input tokens", "lessons": ["ai-engineering/17-otel-genai.html"]}
{"question": "why is the p95 from my latency histogram inaccurate", "lessons": ["ai-engineering/19-grafana-stack.html"]}
{"question": "the semantic cache answered a question that meant the opposite", "lessons": ["ai-engineering/20-guardrails.html"]}
{"question": "how do I check that an LLM judge agrees with human labels", "lessons": ["ai-engineering/10-rag-evaluation.html"]}
{"question": "merge BM25 and vector rankings without tuning scores", "lessons": ["ai-engineering/08-retrieval.html"]}
{"question": "spans go missing when a short script exits", "lessons": ["ai-engineering/16-opentelemetry.html", "ai-engineering/18-langfuse.html"]}
