[[Mnemonic Markdown Idea Dump]] supports embedded interactive code execution through two complementary environments, each optimized for different use cases. **Pyodide** provides a fast, lightweight Python environment running entirely in WebAssembly. It boots in 2-3 seconds and executes code at near-native speed, with full support for the scientific Python stack (numpy, pandas, matplotlib, scikit-learn). This is ideal for data science, statistics, and scientific computing courses where students need to write Python code and generate visualizations. Graphics work seamlessly - matplotlib plots and Plotly charts render directly in the browser without any filesystem coordination. **WebVM** provides a complete Linux environment running in the browser via x86 emulation. It takes 10-30 seconds to boot but gives students access to a real Unix shell with authentic system behavior. This is essential for systems programming, Unix/Linux courses, shell scripting, and anything requiring actual OS-level operations like file permissions, process management, or compiling C programs. The terminal feels reasonably responsive for educational purposes - simple commands are nearly instant, though heavy computation runs 3-10x slower than native. Both environments support filesystem access from JavaScript, allowing the page to read files created by code execution and display them in the browser. A single VM instance persists throughout the reading session, so state is maintained across multiple code blocks - files created in one example remain available in later examples. Course authors specify which environment each interactive block should use, and students get a seamless experience where Python code executes instantly while system-level commands run in a full Linux environment. This architecture provides the power of both worlds: fast Python execution for most courses, with full Unix capability when needed for systems-level teaching. ## Future Ideas - Linux / Unix based cards. You actually execute the answer and the system determines if the output is correct. - Debugging cards. -> Fix this bug. A good way to learn syntax. - Basic implementation cards. -> rewrite this using list comprehension -> implements test for correctness of output + shows what the answer should look like. These facilitate micro exercises for technical skills!