mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-05-01 01:59:10 -05:00
295 lines
71 KiB
HTML
295 lines
71 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<link rel="icon" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/favicon.ico" />
|
|
<!-- Preload is necessary because we show these images when we disconnect from the server,
|
|
but at that point we cannot load these images from the server -->
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/gradient-yHQUC_QB.png" as="image" />
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/noise-60BoTA8O.png" as="image" />
|
|
<!-- Preload the fonts -->
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/Lora-VariableFont_wght-B2ootaw-.ttf" as="font" crossorigin="anonymous" />
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/PTSans-Regular-CxL0S8W7.ttf" as="font" crossorigin="anonymous" />
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/PTSans-Bold-D9fedIX3.ttf" as="font" crossorigin="anonymous" />
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/FiraMono-Regular-BTCkDNvf.ttf" as="font" crossorigin="anonymous" />
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/FiraMono-Medium-DU3aDxX5.ttf" as="font" crossorigin="anonymous" />
|
|
<link rel="preload" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/FiraMono-Bold-CLVRCuM9.ttf" as="font" crossorigin="anonymous" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta name="theme-color" content="#000000" />
|
|
<meta name="description" content="a marimo app" />
|
|
<link rel="apple-touch-icon" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/apple-touch-icon.png" />
|
|
<link rel="manifest" crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/manifest.json" />
|
|
|
|
<script data-marimo="true">
|
|
function __resizeIframe(obj) {
|
|
const scrollbarHeight = 20; // Max between windows, mac, and linux
|
|
|
|
function setHeight() {
|
|
// Guard against race condition where iframe isn't ready
|
|
if (!obj.contentWindow?.document?.documentElement) {
|
|
return;
|
|
}
|
|
const element = obj.contentWindow.document.documentElement;
|
|
// If there is no vertical scrollbar, we don't need to resize the iframe
|
|
if (element.scrollHeight === element.clientHeight) {
|
|
return;
|
|
}
|
|
|
|
// Create a new height that includes the scrollbar height if it's visible
|
|
const hasHorizontalScrollbar = element.scrollWidth > element.clientWidth;
|
|
const newHeight = element.scrollHeight + (hasHorizontalScrollbar ? scrollbarHeight : 0);
|
|
|
|
// Only update the height if it's different from the current height
|
|
if (obj.style.height !== `${newHeight}px`) {
|
|
obj.style.height = `${newHeight}px`;
|
|
}
|
|
}
|
|
|
|
// Resize the iframe to the height of the content and bottom scrollbar height
|
|
setHeight();
|
|
|
|
// Resize the iframe when the content changes
|
|
const resizeObserver = new ResizeObserver((_entries) => {
|
|
setHeight();
|
|
});
|
|
// Only observe if iframe content is ready
|
|
if (obj.contentWindow?.document?.body) {
|
|
resizeObserver.observe(obj.contentWindow.document.body);
|
|
}
|
|
}
|
|
</script>
|
|
<marimo-filename hidden>lab_00_the_map.py</marimo-filename>
|
|
<!-- TODO(Trevor): Legacy, required by VS Code plugin. Remove when plugin is updated (see marimo/server/_templates/template.py) -->
|
|
<marimo-version data-version="{{ version }}" hidden></marimo-version>
|
|
<marimo-user-config data-config="{{ user_config }}" hidden></marimo-user-config>
|
|
<marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
|
|
<!-- /TODO -->
|
|
<title>lab 00 the map</title>
|
|
<script type="module" crossorigin crossorigin="anonymous" src="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/index-BI2D29sc.js"></script>
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/preload-helper-BW0IMuFq.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/hotkeys-uKX61F1_.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/defaultLocale-BLUna9fQ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/precisionRound-Cl9k9ZmS.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/defaultLocale-DzliDDTm.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/vega-loader.browser-C8wT63Va.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_Uint8Array-BGESiCQL.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/tooltip-CrRUCOBw.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/clsx-D0MtrJOx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/cn-C1rgT0yh.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/chunk-LvLJmgfZ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/react-BGmjiNul.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/compiler-runtime-DeeZ7FnK.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/jsx-runtime-DN_bIXfG.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/badge-DAnNhy3O.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useEventListener-COkmyg1v.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/button-B8cGZzP5.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/react-dom-C9fstfnp.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/Combination-D1TsGrBC.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/menu-items-9PZrU2e0.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-CBrDuocE.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/createLucideIcon-CW2xpJ57.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/check-CrAQug3q.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/select-D9lTzMzP.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/tooltip-CvjcEpZC.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/use-toast-Bzf3rpev.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_getTag-BWqNuuwU.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_baseIsEqual-Cz9Tt_-E.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useEvent-DlWF5OMa.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/invariant-C6yE60hi.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_baseFor-Duhs3RiJ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/merge-BBX6ug-N.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/zod-Cg4WLWh2.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/utils-Czt8B2GX.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/constants-Bkp4R3bQ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/Deferred-DzyBMRsy.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/config-CENq_7Pd.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/uuid-ClFZlR7U.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/DeferredRequestRegistry-B3BENoUa.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/requests-C0HaHO6a.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/isSymbol-BGkTcW3U.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/toString-DlRqgfqz.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_hasUnicode-zBEpxwYe.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useLifecycle-CmDXEyIC.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useNonce-EAuSVK-5.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useTheme-BSVRc0kJ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/once-CTiSlR1m.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/capabilities-BmAOeMOK.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/createReducer-DDa-hVe3.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-CAcX026F.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-DKNOF5xd.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-CI6_zMIl.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-BVf1IY4_.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-Cq_4nPfh.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-CVj-_Iiz.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-HGZzCB0y.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-RKnr9SNh.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-BuhT82Xx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/stex-0ac7Aukl.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/toDate-5JckKRQn.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/cjs-Bj40p_Np.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_arrayReduce-bZBYsK-u.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/type-BdyvjzTI.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_baseProperty-DuoFhI7N.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/now-6sUe0ZdD.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/debounce-BbFlGgjv.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/toInteger-CDcO32Gx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/database-zap-CaVvnK_o.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/main-CwSdzVhm.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/cells-CmJW_FeD.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/ErrorBoundary-C7JBxSzd.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/kbd-Czc5z_04.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useInstallPackage-RldLPyJs.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/alert-dialog-jcHA5geR.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dialog-CF5DtF1E.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useDebounce-em3gna-v.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/numbers-C9_R_vlY.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/SSRProvider-DD7JA3RM.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/context-BAYdLMF_.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useNumberFormatter-D8ks3oPN.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/usePress-C2LPFxyv.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/input-Bkl2Yfmh.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/ImperativeModal-BZvZlZQZ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/cell-link-D7bPw7Fz.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/multi-map-CQd4MZr5.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/alert-BEdExd6A.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/chevron-right-CqEd11Di.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dropdown-menu-BP4_BZLr.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/links-DNmjkr65.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/datasource-CCq9qyVG.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/state-B8vBQnkH.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/MarimoErrorOutput-DAK6volb.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/copy-DRhpWiOq.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/copy-gBVL4NN-.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/copy-icon-jWsqdLn1.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/spinner-C1czjtp7.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/es-BJsT6vfZ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/focus-KGgBDCvb.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/LazyAnyLanguageCodeMirror-Dr2G5gxJ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/katex-dFZM4X_7.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/marked.esm-BZNXs5FA.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/chunk-OGVTOU66-DQphfHw1.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/markdown-renderer-DjqhqmES.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dist-D0NgYwYf.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/command-B1zRJT1a.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/popover-DtnzNVk-.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useRunCells-DNnhJ0Gs.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/mode-CXc0VeQq.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/purify.es-N-2faAGj.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/RenderHTML-B4Nb8r0D.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/table-BatLo2vd.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/tabs-CHiEPtZV.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useAsyncData-Dj1oqsrZ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useIframeCapabilities-CU-WWxnz.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/errors-z7WpYca5.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/error-banner-Cq4Yn1WZ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/formats-DtJ_484s.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/en-US-DhMN8sxe.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/isValid-DhzaK-Y1.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/dates-CdsE1R40.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/download-C_slsU-7.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/maps-s2pQkyf5.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/extends-B9D0JO9U.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/emotion-is-prop-valid.esm-lG8j6oqk.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useDateFormatter-CV0QXb5P.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/range-sshwVRcP.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/capitalize-DQeWKRGx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/table-BLx7B_us.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/JsonOutput-DlwRx3jE.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/file-BnFXtaZZ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/play-BJDBXApx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/chat-components-BQ_d4LQG.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/isEmpty-DIxUV1UR.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/circle-check-big-OIMTUpe6.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/chat-display-ZS_L6G-P.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/ai-model-dropdown-C-5PlP5A.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/renderShortcut-BzTDKVab.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useDeleteCell-D-55qWAK.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/icons-9QU2Dup7.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/process-output-DN66BQYe.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/blob-DtJQFQyD.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/objectWithoutPropertiesLoose-CboCOq4o.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/esm-D2_Kx6xF.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/add-cell-with-ai-DEdol3w0.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/chart-no-axes-column-D42sFB6d.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/square-function-DxXFdbn8.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/spec-qp_XZeSS.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/column-preview-DZ--KOk1.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/switch-C5jvDmuG.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/toggle-D-5M3JI_.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/globals-DPW2B3A9.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/share-CXQVxivL.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/memoize-DN0TMY36.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/get-CyLJYAfP.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_baseSet-6FYvpjrm.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/react-resizable-panels.browser.esm-B7ZqbY8M.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/utilities.esm-CqQATX3k.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/floating-outline-DqdzWKrn.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useAddCell-DveVmvs9.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/eye-off-D9zAYqG9.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/plus-CHesBJpY.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/readonly-python-code-Dr5fAkba.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/file-video-camera-CZUg-nFA.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/types-D5CL190S.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/label-CqyOmxjL.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/textarea-DzIuH-E_.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/refresh-ccw-DbW1_PHb.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/trash-2-C-lF7BNB.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/form-DyJ8-Zz6.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/field-86WoveRM.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useBoolean-GvygmcM1.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/useDeepCompareMemoize-81gQouTn.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/types-B42u_5hF.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/prop-types-C638SUfx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/es-FiXEquL2.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/VisuallyHidden-B0mBEsSm.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/hasIn-DydgU7lx.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/_baseFlatten-CLPh0yMf.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/flatten-Buk63LQO.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/pick-DeQioq0G.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/code-xml-MBUyxNtK.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/download-DobaYJPt.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/house-CncUa_LL.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/refresh-cw-Din9uFKE.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/settings-MTlHVxz3.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/square-leQTJTJJ.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/triangle-alert-CbD0f2J6.js">
|
|
<link rel="modulepreload" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/bundle.esm-dxSncdJD.js">
|
|
<link rel="stylesheet" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/cells-jmgGt1lS.css">
|
|
<link rel="stylesheet" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/markdown-renderer-DdDKmWlR.css">
|
|
<link rel="stylesheet" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/JsonOutput-B7vuddcd.css">
|
|
<link rel="stylesheet" crossorigin crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/@marimo-team/frontend@0.19.6/dist/assets/index-BI9O54ok.css">
|
|
|
|
<script data-marimo="true">
|
|
window.__MARIMO_STATIC__ = {};
|
|
window.__MARIMO_STATIC__.files = {};
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<!-- This is a portal for the data editor to render in -->
|
|
<div id="portal" data-testid="glide-portal" style="position: fixed; left: 0; top: 0; z-index: 9999"></div>
|
|
<script data-marimo="true">
|
|
window.__MARIMO_MOUNT_CONFIG__ = {
|
|
"filename": "lab_00_the_map.py",
|
|
"mode": "read",
|
|
"version": "0.19.6",
|
|
"serverToken": "static",
|
|
"config": {"ai": {"custom_providers": {}, "models": {"custom_models": [], "displayed_models": []}}, "completion": {"activate_on_typing": true, "copilot": false, "signature_hint_on_typing": false}, "diagnostics": {"sql_linter": true}, "display": {"cell_output": "below", "code_editor_font_size": 14, "dataframes": "rich", "default_table_max_columns": 50, "default_table_page_size": 10, "default_width": "medium", "reference_highlighting": true, "theme": "light"}, "formatting": {"line_length": 79}, "keymap": {"overrides": {}, "preset": "default"}, "language_servers": {"pylsp": {"enable_flake8": false, "enable_mypy": true, "enable_pydocstyle": false, "enable_pyflakes": false, "enable_pylint": false, "enable_ruff": true, "enabled": false}}, "mcp": {"mcpServers": {}, "presets": []}, "package_management": {"manager": "pip"}, "runtime": {"auto_instantiate": false, "auto_reload": "off", "default_csv_encoding": "utf-8", "default_sql_output": "auto", "on_cell_change": "autorun", "output_max_bytes": 8000000, "reactive_tests": true, "std_stream_max_bytes": 1000000, "watcher_on_save": "lazy"}, "save": {"autosave": "after_delay", "autosave_delay": 1000, "format_on_save": false}, "server": {"browser": "default", "follow_symlink": false}, "snippets": {"custom_paths": [], "include_default_snippets": true}},
|
|
"configOverrides": {},
|
|
"appConfig": {"sql_output": "auto", "width": "medium"},
|
|
"view": {"showAppCode": true},
|
|
"notebook": {"cells": [{"code": "import marimo as mo\nimport sys\nimport os\nfrom pathlib import Path\n\n# --- PATH INJECTION ---\ntry:\n notebook_path = Path(os.path.abspath(__file__))\nexcept NameError:\n notebook_path = Path(os.getcwd()) / \"labs\" / \"vol1\" / \"lab_00_the_map.py\"\n\nproject_root = notebook_path.parents[2]\nif str(project_root) not in sys.path:\n sys.path.append(str(project_root))\n\nfrom labs.core.style import COLORS, LAB_CSS\nfrom labs.core.components import Card\n", "code_hash": "b92b69cac8565a291f7d5c24a8a01e0d", "config": {"column": null, "disabled": false, "hide_code": false}, "id": "Hbol", "name": "__"}, {"code": "# --- HEADER \u0026 VISION ---\nmo.vstack([\n LAB_CSS,\n mo.md(\"# \ud83d\uddfa\ufe0f Lab 00: The Systems Map\"),\n mo.md(\n r\"\"\"\n ### **Welcome to the Design Phase**\n You are entering the **Machine Learning Systems Laboratory**. This is not a standard coding tutorial; this is a **Diagnostic Flight Simulator**. \n\n To engineer AI Systems, you must master the **Four-Pillar Lifecycle**. The textbook gave you the theory. In these labs, you will act as a **System Architect**, navigating the physical trade-offs of the universe before you ever write a line of code.\n \"\"\"\n ),\n mo.md(\"\"\"\n ```mermaid\n graph LR\n A[\ud83d\udcd6 READ\u003Cbr\u003ETheory \u0026 Math] --\u003E B[\ud83d\udcd0 DESIGN\u003Cbr\u003ETrade-off Analysis]\n style B fill:#006395,stroke:#333,stroke-width:4px,color:#fff\n B --\u003E C[\ud83c\udfd7\ufe0f BUILD\u003Cbr\u003ESoftware Mechanics]\n C --\u003E D[\ud83d\ude80 DEPLOY\u003Cbr\u003EPhysical Hardware]\n ```\n \"\"\")\n])", "code_hash": "deffca33a9361cfddde1e93bba358117", "config": {"column": null, "disabled": false, "hide_code": false}, "id": "MJUe", "name": "__"}, {"code": "# --- THE METHODOLOGY ---\nmo.vstack([\n mo.md(\"## How These Labs Work: The Gearbox\"),\n mo.md(\"To prevent mindless 'slider guessing', every interactive analysis task in this curriculum follows a strict four-step engineering loop:\"),\n mo.hstack([\n Card(\"1. Predict\", \"You are given a crisis. The simulation is **Locked**. You must type an engineering hypothesis to proceed.\"),\n Card(\"2. Act\", \"The simulation unlocks. You manipulate the D\u00b7A\u00b7M variables (Data, Algorithm, Machine).\")\n ], widths=[1, 1]),\n mo.hstack([\n Card(\"3. Observe\", \"The Physics Engine renders high-fidelity visual instruments (Rooflines, Waterfalls) showing the physical reality.\"),\n Card(\"4. Reflect\", \"You justify your design choice in a formal 'Design Ledger' submission to a Stakeholder.\")\n ], widths=[1, 1])\n])", "code_hash": "b52cde1c63096578ed0d656be94f8f67", "config": {"column": null, "disabled": false, "hide_code": false}, "id": "vblA", "name": "__"}, {"code": "# --- TRACK SELECTION ---\nmo.md(\"## Choose Your Career Track\")\nmo.md(\"You will refine a single, complex system over the next 16 chapters. Your choice here defines your **Fixed North Star Mission** and the specific 'Arch Nemesis' you will fight.\")\n\ntrack_selector = mo.ui.radio(\n options={\n \"\u2601\ufe0f Cloud Titan (LLM Serving)\": \"CLOUD\",\n \"\ud83e\udd16 Edge Guardian (AV Perception)\": \"EDGE\",\n \"\ud83d\udd76\ufe0f Mobile Nomad (AR Vision)\": \"MOBILE\",\n \"\ud83d\udc42 Tiny Pioneer (Neural Audio)\": \"TINY\"\n },\n label=\"Select your Specialization:\"\n)\ntrack_selector", "code_hash": "04d930de1cea3ad72a35687b166e36b4", "config": {"column": null, "disabled": false, "hide_code": false}, "id": "bkHC", "name": "__"}, {"code": "# --- DYNAMIC STORYBOARD ---\ndef render_storyboard():\n if track_selector.value is None: return mo.md(\"_Select a track to generate your 16-chapter storyboard._\")\n\n _data = {\n \"CLOUD\": {\n \"title\": \"LLM Serving Architect\",\n \"goal\": \"Maximize serving throughput for Llama-3-70B on a single H100 node.\",\n \"wall\": \"The Memory Wall (HBM Bandwidth)\",\n \"color\": COLORS['BlueLine'],\n \"arc\": [\n (\"Ch 01-04\", \"Foundations\", \"Dimensioning the 80GB VRAM bet.\"),\n (\"Ch 05-08\", \"Build\", \"Calculating the Arithmetic Intensity of Attention.\"),\n (\"Ch 09-12\", \"Optimize\", \"Quantizing to INT4 to survive the Memory Wall.\"),\n (\"Ch 13-16\", \"Deploy\", \"Balancing P99 Latency vs. Throughput for 1,000 users.\")\n ]\n },\n \"EDGE\": {\n \"title\": \"AV Systems Lead\",\n \"goal\": \"Maintain a deterministic 10ms safety-critical vision loop on an NVIDIA Orin.\",\n \"wall\": \"The Determinism Wall (Jitter)\",\n \"color\": COLORS['RedLine'],\n \"arc\": [\n (\"Ch 01-04\", \"Foundations\", \"Calculating the 'Speed of Light' penalty.\"),\n (\"Ch 05-08\", \"Build\", \"Choosing between CNNs and ViTs for real-time safety.\"),\n (\"Ch 09-12\", \"Optimize\", \"SRAM Tiling to avoid DRAM latency spikes.\"),\n (\"Ch 13-16\", \"Deploy\", \"Defending against Environmental Data Drift.\")\n ]\n },\n \"MOBILE\": {\n \"title\": \"AR Glasses Developer\",\n \"goal\": \"Run 60FPS AR translation on Meta Ray-Bans under a 2W thermal envelope.\",\n \"wall\": \"The Thermal Wall (Thermodynamics)\",\n \"color\": COLORS['OrangeLine'],\n \"arc\": [\n (\"Ch 01-04\", \"Foundations\", \"The energy cost of moving bits over Bluetooth.\"),\n (\"Ch 05-08\", \"Build\", \"Analyzing the 'Dispatch Tax' of small kernels.\"),\n (\"Ch 09-12\", \"Optimize\", \"Pruning 50% of the model to save mW.\"),\n (\"Ch 13-16\", \"Deploy\", \"The 3-Year TCO of replacing degraded batteries.\")\n ]\n },\n \"TINY\": {\n \"title\": \"Neural Hearable Lead\",\n \"goal\": \"Real-time speech isolation in \u003C10ms under 1mW of power.\",\n \"wall\": \"The Echo Wall (SRAM Capacity)\",\n \"color\": COLORS['GreenLine'],\n \"arc\": [\n (\"Ch 01-04\", \"Foundations\", \"The 10^9 scaling gap of the MCU universe.\"),\n (\"Ch 05-08\", \"Build\", \"Why Depthwise-Separable Convs are mandatory.\"),\n (\"Ch 09-12\", \"Optimize\", \"1-bit quantization to fit inside 256KB SRAM.\"),\n (\"Ch 13-16\", \"Deploy\", \"Optimizing the 'Duty Cycle' to sleep for 99% of the time.\")\n ]\n }\n }\n\n _t = _data[track_selector.value]\n\n _arc_html = \"\".join([f\"\u003Cli\u003E\u003Cstrong\u003E{phase} ({chapters}):\u003C/strong\u003E {desc}\u003C/li\u003E\" for chapters, phase, desc in _t['arc']])\n\n return mo.vstack([\n mo.md(f\"### \ud83d\uddfa\ufe0f The {_t['title']} Roadmap\"),\n mo.md(f\"\"\"\n \u003Cdiv style='padding:20px; border-left:8px solid {_t['color']}; background:#f8faff;'\u003E\n \u003Cstrong\u003EYour North Star:\u003C/strong\u003E {_t['goal']}\u003Cbr/\u003E\n \u003Cstrong\u003EYour Arch Nemesis:\u003C/strong\u003E \u003Cspan style='color:{COLORS['RedLine']}; font-weight:bold;'\u003E{_t['wall']}\u003C/span\u003E\n \u003Cbr/\u003E\u003Cbr/\u003E\n \u003Cstrong\u003EThe 16-Chapter Journey:\u003C/strong\u003E\n \u003Cul\u003E{_arc_html}\u003C/ul\u003E\n \u003C/div\u003E\n \"\"\"),\n mo.md(\"---\"),\n Card(\"Initialization Complete\", f\"\u2705 **{_t['title']}** persona adopted. You are now ready to begin the physics orientation.\u003Cbr/\u003E\u003Cbr/\u003E\ud83d\udc49 **Proceed to Lab 01: The Moment of AI.**\")\n ])\n\nrender_storyboard()", "code_hash": "b0f8ed5437b07c5d03e2012112b26837", "config": {"column": null, "disabled": false, "hide_code": false}, "id": "lEQa", "name": "__"}], "metadata": {"marimo_version": "0.19.6"}, "version": "1"},
|
|
"session": {"cells": [{"code_hash": "b92b69cac8565a291f7d5c24a8a01e0d", "console": [], "id": "Hbol", "outputs": [{"data": {"text/plain": ""}, "type": "data"}]}, {"code_hash": "deffca33a9361cfddde1e93bba358117", "console": [], "id": "MJUe", "outputs": [{"data": {"text/html": "\u003Cdiv style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'\u003E\n\u003Cstyle\u003E\n :root {\n --blue: #006395;\n --red: #CB202D;\n --green: #008F45;\n --text: #2c3e50;\n }\n\n .lab-container {\n font-family: 'Inter', -apple-system, sans-serif;\n color: var(--text);\n max-width: 900px;\n margin: auto;\n }\n\n .lab-card {\n background-color: white;\n border: 1px solid #dee2e6;\n border-radius: 12px;\n padding: 1.5rem;\n height: 100%;\n box-shadow: 0 4px 12px rgba(0,0,0,0.03);\n display: flex;\n flex-direction: column;\n }\n\n .lab-card h3 {\n margin-top: 0;\n font-size: 0.9rem;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n color: #7f8c8d;\n border-bottom: 1px solid #eee;\n padding-bottom: 8px;\n margin-bottom: 1rem;\n }\n\n .metric-row {\n display: flex;\n justify-content: space-between;\n padding: 8px 0;\n border-bottom: 1px solid #f8f9fa;\n }\n\n .metric-label { font-weight: 500; color: #7f8c8d; font-size: 0.9rem; }\n .metric-value { font-family: 'SF Mono', monospace; font-weight: 600; color: var(--blue); }\n\n .prediction-box {\n background-color: #FFE5CC;\n border-left: 4px solid #CC5500;\n padding: 1rem;\n border-radius: 8px;\n margin: 1rem 0;\n }\n\n .feasibility-banner {\n padding: 1rem;\n border-radius: 10px;\n font-weight: 700;\n text-align: center;\n margin-bottom: 2rem;\n box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n }\n\n .stakeholder-card {\n background: #f8f9fa;\n border-radius: 12px;\n padding: 1.5rem;\n border-left: 6px solid var(--blue);\n margin-top: 1rem;\n }\n\u003C/style\u003E\n\u003Cspan class=\"markdown prose dark:prose-invert contents\"\u003E\u003Ch1 id=\"lab-00-the-systems-map\"\u003E\ud83d\uddfa\ufe0f Lab 00: The Systems Map\u003C/h1\u003E\u003C/span\u003E\u003Cspan class=\"markdown prose dark:prose-invert contents\"\u003E\u003Ch3 id=\"welcome-to-the-design-phase\"\u003E\u003Cstrong\u003EWelcome to the Design Phase\u003C/strong\u003E\u003C/h3\u003E\n\u003Cspan class=\"paragraph\"\u003EYou are entering the \u003Cstrong\u003EMachine Learning Systems Laboratory\u003C/strong\u003E. This is not a standard coding tutorial; this is a \u003Cstrong\u003EDiagnostic Flight Simulator\u003C/strong\u003E. \u003C/span\u003E\n\u003Cspan class=\"paragraph\"\u003ETo engineer AI Systems, you must master the \u003Cstrong\u003EFour-Pillar Lifecycle\u003C/strong\u003E. The textbook gave you the theory. In these labs, you will act as a \u003Cstrong\u003ESystem Architect\u003C/strong\u003E, navigating the physical trade-offs of the universe before you ever write a line of code.\u003C/span\u003E\u003C/span\u003E\u003Cspan class=\"markdown prose dark:prose-invert contents\"\u003E\u003Cdiv class=\"language-ecl codehilite\"\u003E\u003Cpre\u003E\u003Cspan\u003E\u003C/span\u003E\u003Ccode\u003E\u003Cspan class=\"nf\"\u003Egraph\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003ELR\u003C/span\u003E\n\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EA\u003C/span\u003E\u003Cspan class=\"p\"\u003E[\u003C/span\u003E\u003Cspan class=\"err\"\u003E\ud83d\udcd6\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EREAD\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026lt;\u003C/span\u003E\u003Cspan class=\"n\"\u003Ebr\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026gt;\u003C/span\u003E\u003Cspan class=\"n\"\u003ETheory\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026amp;\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EMath\u003C/span\u003E\u003Cspan class=\"p\"\u003E]\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"o\"\u003E--\u0026gt;\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EB\u003C/span\u003E\u003Cspan class=\"p\"\u003E[\u003C/span\u003E\u003Cspan class=\"err\"\u003E\ud83d\udcd0\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EDESIGN\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026lt;\u003C/span\u003E\u003Cspan class=\"n\"\u003Ebr\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026gt;\u003C/span\u003E\u003Cspan class=\"n\"\u003ETrade\u003C/span\u003E\u003Cspan class=\"o\"\u003E-\u003C/span\u003E\u003Cspan class=\"n\"\u003Eoff\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EAnalysis\u003C/span\u003E\u003Cspan class=\"p\"\u003E]\u003C/span\u003E\n\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003Estyle\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EB\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003Efill\u003C/span\u003E\u003Cspan class=\"o\"\u003E:\u003C/span\u003E\u003Cspan class=\"err\"\u003E#\u003C/span\u003E\u003Cspan class=\"mo\"\u003E0063\u003C/span\u003E\u003Cspan class=\"mi\"\u003E95\u003C/span\u003E\u003Cspan class=\"p\"\u003E,\u003C/span\u003E\u003Cspan class=\"n\"\u003Estroke\u003C/span\u003E\u003Cspan class=\"o\"\u003E:\u003C/span\u003E\u003Cspan class=\"err\"\u003E#\u003C/span\u003E\u003Cspan class=\"mi\"\u003E333\u003C/span\u003E\u003Cspan class=\"p\"\u003E,\u003C/span\u003E\u003Cspan class=\"n\"\u003Estroke\u003C/span\u003E\u003Cspan class=\"o\"\u003E-\u003C/span\u003E\u003Cspan class=\"n\"\u003Ewidth\u003C/span\u003E\u003Cspan class=\"o\"\u003E:\u003C/span\u003E\u003Cspan class=\"mi\"\u003E4\u003C/span\u003E\u003Cspan class=\"n\"\u003Epx\u003C/span\u003E\u003Cspan class=\"p\"\u003E,\u003C/span\u003E\u003Cspan class=\"n\"\u003Ecolor\u003C/span\u003E\u003Cspan class=\"o\"\u003E:\u003C/span\u003E\u003Cspan class=\"err\"\u003E#\u003C/span\u003E\u003Cspan class=\"n\"\u003Efff\u003C/span\u003E\n\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EB\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"o\"\u003E--\u0026gt;\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EC\u003C/span\u003E\u003Cspan class=\"p\"\u003E[\u003C/span\u003E\u003Cspan class=\"err\"\u003E\ud83c\udfd7\ufe0f\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"kr\"\u003EBUILD\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026lt;\u003C/span\u003E\u003Cspan class=\"n\"\u003Ebr\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026gt;\u003C/span\u003E\u003Cspan class=\"n\"\u003ESoftware\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EMechanics\u003C/span\u003E\u003Cspan class=\"p\"\u003E]\u003C/span\u003E\n\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EC\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"o\"\u003E--\u0026gt;\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003ED\u003C/span\u003E\u003Cspan class=\"p\"\u003E[\u003C/span\u003E\u003Cspan class=\"err\"\u003E\ud83d\ude80\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EDEPLOY\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026lt;\u003C/span\u003E\u003Cspan class=\"n\"\u003Ebr\u003C/span\u003E\u003Cspan class=\"o\"\u003E\u0026gt;\u003C/span\u003E\u003Cspan class=\"n\"\u003EPhysical\u003C/span\u003E\u003Cspan class=\"w\"\u003E \u003C/span\u003E\u003Cspan class=\"n\"\u003EHardware\u003C/span\u003E\u003Cspan class=\"p\"\u003E]\u003C/span\u003E\n\u003C/code\u003E\u003C/pre\u003E\u003C/div\u003E\u003C/span\u003E\u003C/div\u003E"}, "type": "data"}]}, {"code_hash": "b52cde1c63096578ed0d656be94f8f67", "console": [], "id": "vblA", "outputs": [{"data": {"text/html": "\u003Cdiv style='display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'\u003E\u003Cspan class=\"markdown prose dark:prose-invert contents\"\u003E\u003Ch2 id=\"how-these-labs-work-the-gearbox\"\u003EHow These Labs Work: The Gearbox\u003C/h2\u003E\u003C/span\u003E\u003Cspan class=\"markdown prose dark:prose-invert contents\"\u003E\u003Cspan class=\"paragraph\"\u003ETo prevent mindless 'slider guessing', every interactive analysis task in this curriculum follows a strict four-step engineering loop:\u003C/span\u003E\u003C/span\u003E\u003Cdiv style='display: flex;flex: 1;flex-direction: row;justify-content: space-between;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'\u003E\u003Cdiv style='flex: 1'\u003E\n \u003Cdiv class=\"lab-card\"\u003E\n \u003Ch3\u003E1. Predict\u003C/h3\u003E\n \u003Cdiv style=\"flex-grow: 1;\"\u003EYou are given a crisis. The simulation is **Locked**. You must type an engineering hypothesis to proceed.\u003C/div\u003E\n \u003C/div\u003E\n \u003C/div\u003E\u003Cdiv style='flex: 1'\u003E\n \u003Cdiv class=\"lab-card\"\u003E\n \u003Ch3\u003E2. Act\u003C/h3\u003E\n \u003Cdiv style=\"flex-grow: 1;\"\u003EThe simulation unlocks. You manipulate the D\u00b7A\u00b7M variables (Data, Algorithm, Machine).\u003C/div\u003E\n \u003C/div\u003E\n \u003C/div\u003E\u003C/div\u003E\u003Cdiv style='display: flex;flex: 1;flex-direction: row;justify-content: space-between;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'\u003E\u003Cdiv style='flex: 1'\u003E\n \u003Cdiv class=\"lab-card\"\u003E\n \u003Ch3\u003E3. Observe\u003C/h3\u003E\n \u003Cdiv style=\"flex-grow: 1;\"\u003EThe Physics Engine renders high-fidelity visual instruments (Rooflines, Waterfalls) showing the physical reality.\u003C/div\u003E\n \u003C/div\u003E\n \u003C/div\u003E\u003Cdiv style='flex: 1'\u003E\n \u003Cdiv class=\"lab-card\"\u003E\n \u003Ch3\u003E4. Reflect\u003C/h3\u003E\n \u003Cdiv style=\"flex-grow: 1;\"\u003EYou justify your design choice in a formal 'Design Ledger' submission to a Stakeholder.\u003C/div\u003E\n \u003C/div\u003E\n \u003C/div\u003E\u003C/div\u003E\u003C/div\u003E"}, "type": "data"}]}, {"code_hash": "04d930de1cea3ad72a35687b166e36b4", "console": [], "id": "bkHC", "outputs": [{"data": {"text/html": "\u003Cmarimo-ui-element object-id='bkHC-0' random-id='846ac619-91fa-27e4-3a39-39fedc728749'\u003E\u003Cmarimo-radio data-initial-value='null' data-label='\u0026quot;\u0026lt;span class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026gt;\u0026lt;span class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026gt;Select your Specialization:\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026quot;' data-options='[\u0026quot;\u2601\ufe0f Cloud Titan (LLM Serving)\u0026quot;,\u0026quot;\ud83e\udd16 Edge Guardian (AV Perception)\u0026quot;,\u0026quot;\ud83d\udd76\ufe0f Mobile Nomad (AR Vision)\u0026quot;,\u0026quot;\ud83d\udc42 Tiny Pioneer (Neural Audio)\u0026quot;]' data-inline='false' data-disabled='false'\u003E\u003C/marimo-radio\u003E\u003C/marimo-ui-element\u003E"}, "type": "data"}]}, {"code_hash": "b0f8ed5437b07c5d03e2012112b26837", "console": [], "id": "lEQa", "outputs": [{"data": {"text/markdown": "\u003Cspan class=\"markdown prose dark:prose-invert contents\"\u003E\u003Cspan class=\"paragraph\"\u003E\u003Cem\u003ESelect a track to generate your 16-chapter storyboard.\u003C/em\u003E\u003C/span\u003E\u003C/span\u003E"}, "type": "data"}]}], "metadata": {"marimo_version": "0.19.6"}, "version": "1"},
|
|
"runtimeConfig": null,
|
|
};
|
|
</script>
|
|
|
|
<marimo-code hidden="">
|
|
import%20marimo%0A%0A__generated_with%20%3D%20%220.19.6%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20sys%0A%20%20%20%20import%20os%0A%20%20%20%20from%20pathlib%20import%20Path%0A%0A%20%20%20%20%23%20---%20PATH%20INJECTION%20---%0A%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20notebook_path%20%3D%20Path(os.path.abspath(__file__))%0A%20%20%20%20except%20NameError%3A%0A%20%20%20%20%20%20%20%20notebook_path%20%3D%20Path(os.getcwd())%20%2F%20%22labs%22%20%2F%20%22vol1%22%20%2F%20%22lab_00_the_map.py%22%0A%0A%20%20%20%20project_root%20%3D%20notebook_path.parents%5B2%5D%0A%20%20%20%20if%20str(project_root)%20not%20in%20sys.path%3A%0A%20%20%20%20%20%20%20%20sys.path.append(str(project_root))%0A%0A%20%20%20%20from%20labs.core.style%20import%20COLORS%2C%20LAB_CSS%0A%20%20%20%20from%20labs.core.components%20import%20Card%0A%0A%20%20%20%20return%20COLORS%2C%20Card%2C%20LAB_CSS%2C%20mo%0A%0A%0A%40app.cell%0Adef%20_(LAB_CSS%2C%20mo)%3A%0A%20%20%20%20%23%20---%20HEADER%20%26%20VISION%20---%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20LAB_CSS%2C%0A%20%20%20%20%20%20%20%20mo.md(%22%23%20%F0%9F%97%BA%EF%B8%8F%20Lab%2000%3A%20The%20Systems%20Map%22)%2C%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%20**Welcome%20to%20the%20Design%20Phase**%0A%20%20%20%20%20%20%20%20%20%20%20%20You%20are%20entering%20the%20**Machine%20Learning%20Systems%20Laboratory**.%20This%20is%20not%20a%20standard%20coding%20tutorial%3B%20this%20is%20a%20**Diagnostic%20Flight%20Simulator**.%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20To%20engineer%20AI%20Systems%2C%20you%20must%20master%20the%20**Four-Pillar%20Lifecycle**.%20The%20textbook%20gave%20you%20the%20theory.%20In%20these%20labs%2C%20you%20will%20act%20as%20a%20**System%20Architect**%2C%20navigating%20the%20physical%20trade-offs%20of%20the%20universe%20before%20you%20ever%20write%20a%20line%20of%20code.%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%2C%0A%20%20%20%20%20%20%20%20mo.md(%22%22%22%0A%20%20%20%20%20%20%20%20%60%60%60mermaid%0A%20%20%20%20%20%20%20%20graph%20LR%0A%20%20%20%20%20%20%20%20%20%20%20%20A%5B%F0%9F%93%96%20READ%3Cbr%3ETheory%20%26%20Math%5D%20--%3E%20B%5B%F0%9F%93%90%20DESIGN%3Cbr%3ETrade-off%20Analysis%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20style%20B%20fill%3A%23006395%2Cstroke%3A%23333%2Cstroke-width%3A4px%2Ccolor%3A%23fff%0A%20%20%20%20%20%20%20%20%20%20%20%20B%20--%3E%20C%5B%F0%9F%8F%97%EF%B8%8F%20BUILD%3Cbr%3ESoftware%20Mechanics%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20C%20--%3E%20D%5B%F0%9F%9A%80%20DEPLOY%3Cbr%3EPhysical%20Hardware%5D%0A%20%20%20%20%20%20%20%20%60%60%60%0A%20%20%20%20%20%20%20%20%22%22%22)%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(Card%2C%20mo)%3A%0A%20%20%20%20%23%20---%20THE%20METHODOLOGY%20---%0A%20%20%20%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20mo.md(%22%23%23%20How%20These%20Labs%20Work%3A%20The%20Gearbox%22)%2C%0A%20%20%20%20%20%20%20%20mo.md(%22To%20prevent%20mindless%20'slider%20guessing'%2C%20every%20interactive%20analysis%20task%20in%20this%20curriculum%20follows%20a%20strict%20four-step%20engineering%20loop%3A%22)%2C%0A%20%20%20%20%20%20%20%20mo.hstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20Card(%221.%20Predict%22%2C%20%22You%20are%20given%20a%20crisis.%20The%20simulation%20is%20**Locked**.%20You%20must%20type%20an%20engineering%20hypothesis%20to%20proceed.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20Card(%222.%20Act%22%2C%20%22The%20simulation%20unlocks.%20You%20manipulate%20the%20D%C2%B7A%C2%B7M%20variables%20(Data%2C%20Algorithm%2C%20Machine).%22)%0A%20%20%20%20%20%20%20%20%5D%2C%20widths%3D%5B1%2C%201%5D)%2C%0A%20%20%20%20%20%20%20%20mo.hstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20Card(%223.%20Observe%22%2C%20%22The%20Physics%20Engine%20renders%20high-fidelity%20visual%20instruments%20(Rooflines%2C%20Waterfalls)%20showing%20the%20physical%20reality.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20Card(%224.%20Reflect%22%2C%20%22You%20justify%20your%20design%20choice%20in%20a%20formal%20'Design%20Ledger'%20submission%20to%20a%20Stakeholder.%22)%0A%20%20%20%20%20%20%20%20%5D%2C%20widths%3D%5B1%2C%201%5D)%0A%20%20%20%20%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20%23%20---%20TRACK%20SELECTION%20---%0A%20%20%20%20mo.md(%22%23%23%20Choose%20Your%20Career%20Track%22)%0A%20%20%20%20mo.md(%22You%20will%20refine%20a%20single%2C%20complex%20system%20over%20the%20next%2016%20chapters.%20Your%20choice%20here%20defines%20your%20**Fixed%20North%20Star%20Mission**%20and%20the%20specific%20'Arch%20Nemesis'%20you%20will%20fight.%22)%0A%0A%20%20%20%20track_selector%20%3D%20mo.ui.radio(%0A%20%20%20%20%20%20%20%20options%3D%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%E2%98%81%EF%B8%8F%20Cloud%20Titan%20(LLM%20Serving)%22%3A%20%22CLOUD%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%F0%9F%A4%96%20Edge%20Guardian%20(AV%20Perception)%22%3A%20%22EDGE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%F0%9F%95%B6%EF%B8%8F%20Mobile%20Nomad%20(AR%20Vision)%22%3A%20%22MOBILE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%F0%9F%91%82%20Tiny%20Pioneer%20(Neural%20Audio)%22%3A%20%22TINY%22%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20label%3D%22Select%20your%20Specialization%3A%22%0A%20%20%20%20)%0A%20%20%20%20track_selector%0A%20%20%20%20return%20(track_selector%2C)%0A%0A%0A%40app.cell%0Adef%20_(COLORS%2C%20Card%2C%20mo%2C%20track_selector)%3A%0A%20%20%20%20%23%20---%20DYNAMIC%20STORYBOARD%20---%0A%20%20%20%20def%20render_storyboard()%3A%0A%20%20%20%20%20%20%20%20if%20track_selector.value%20is%20None%3A%20return%20mo.md(%22_Select%20a%20track%20to%20generate%20your%2016-chapter%20storyboard._%22)%0A%0A%20%20%20%20%20%20%20%20_data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22CLOUD%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22LLM%20Serving%20Architect%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22goal%22%3A%20%22Maximize%20serving%20throughput%20for%20Llama-3-70B%20on%20a%20single%20H100%20node.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22wall%22%3A%20%22The%20Memory%20Wall%20(HBM%20Bandwidth)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22color%22%3A%20COLORS%5B'BlueLine'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22arc%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2001-04%22%2C%20%22Foundations%22%2C%20%22Dimensioning%20the%2080GB%20VRAM%20bet.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2005-08%22%2C%20%22Build%22%2C%20%22Calculating%20the%20Arithmetic%20Intensity%20of%20Attention.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2009-12%22%2C%20%22Optimize%22%2C%20%22Quantizing%20to%20INT4%20to%20survive%20the%20Memory%20Wall.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2013-16%22%2C%20%22Deploy%22%2C%20%22Balancing%20P99%20Latency%20vs.%20Throughput%20for%201%2C000%20users.%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22EDGE%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22AV%20Systems%20Lead%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22goal%22%3A%20%22Maintain%20a%20deterministic%2010ms%20safety-critical%20vision%20loop%20on%20an%20NVIDIA%20Orin.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22wall%22%3A%20%22The%20Determinism%20Wall%20(Jitter)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22color%22%3A%20COLORS%5B'RedLine'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22arc%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2001-04%22%2C%20%22Foundations%22%2C%20%22Calculating%20the%20'Speed%20of%20Light'%20penalty.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2005-08%22%2C%20%22Build%22%2C%20%22Choosing%20between%20CNNs%20and%20ViTs%20for%20real-time%20safety.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2009-12%22%2C%20%22Optimize%22%2C%20%22SRAM%20Tiling%20to%20avoid%20DRAM%20latency%20spikes.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2013-16%22%2C%20%22Deploy%22%2C%20%22Defending%20against%20Environmental%20Data%20Drift.%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22MOBILE%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22AR%20Glasses%20Developer%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22goal%22%3A%20%22Run%2060FPS%20AR%20translation%20on%20Meta%20Ray-Bans%20under%20a%202W%20thermal%20envelope.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22wall%22%3A%20%22The%20Thermal%20Wall%20(Thermodynamics)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22color%22%3A%20COLORS%5B'OrangeLine'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22arc%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2001-04%22%2C%20%22Foundations%22%2C%20%22The%20energy%20cost%20of%20moving%20bits%20over%20Bluetooth.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2005-08%22%2C%20%22Build%22%2C%20%22Analyzing%20the%20'Dispatch%20Tax'%20of%20small%20kernels.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2009-12%22%2C%20%22Optimize%22%2C%20%22Pruning%2050%25%20of%20the%20model%20to%20save%20mW.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2013-16%22%2C%20%22Deploy%22%2C%20%22The%203-Year%20TCO%20of%20replacing%20degraded%20batteries.%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22TINY%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22title%22%3A%20%22Neural%20Hearable%20Lead%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22goal%22%3A%20%22Real-time%20speech%20isolation%20in%20%3C10ms%20under%201mW%20of%20power.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22wall%22%3A%20%22The%20Echo%20Wall%20(SRAM%20Capacity)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22color%22%3A%20COLORS%5B'GreenLine'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22arc%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2001-04%22%2C%20%22Foundations%22%2C%20%22The%2010%5E9%20scaling%20gap%20of%20the%20MCU%20universe.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2005-08%22%2C%20%22Build%22%2C%20%22Why%20Depthwise-Separable%20Convs%20are%20mandatory.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2009-12%22%2C%20%22Optimize%22%2C%20%221-bit%20quantization%20to%20fit%20inside%20256KB%20SRAM.%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(%22Ch%2013-16%22%2C%20%22Deploy%22%2C%20%22Optimizing%20the%20'Duty%20Cycle'%20to%20sleep%20for%2099%25%20of%20the%20time.%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20_t%20%3D%20_data%5Btrack_selector.value%5D%0A%0A%20%20%20%20%20%20%20%20_arc_html%20%3D%20%22%22.join(%5Bf%22%3Cli%3E%3Cstrong%3E%7Bphase%7D%20(%7Bchapters%7D)%3A%3C%2Fstrong%3E%20%7Bdesc%7D%3C%2Fli%3E%22%20for%20chapters%2C%20phase%2C%20desc%20in%20_t%5B'arc'%5D%5D)%0A%0A%20%20%20%20%20%20%20%20return%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(f%22%23%23%23%20%F0%9F%97%BA%EF%B8%8F%20The%20%7B_t%5B'title'%5D%7D%20Roadmap%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(f%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D'padding%3A20px%3B%20border-left%3A8px%20solid%20%7B_t%5B'color'%5D%7D%3B%20background%3A%23f8faff%3B'%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EYour%20North%20Star%3A%3C%2Fstrong%3E%20%7B_t%5B'goal'%5D%7D%3Cbr%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EYour%20Arch%20Nemesis%3A%3C%2Fstrong%3E%20%3Cspan%20style%3D'color%3A%7BCOLORS%5B'RedLine'%5D%7D%3B%20font-weight%3Abold%3B'%3E%7B_t%5B'wall'%5D%7D%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbr%2F%3E%3Cbr%2F%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EThe%2016-Chapter%20Journey%3A%3C%2Fstrong%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cul%3E%7B_arc_html%7D%3C%2Ful%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%22---%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20Card(%22Initialization%20Complete%22%2C%20f%22%E2%9C%85%20**%7B_t%5B'title'%5D%7D**%20persona%20adopted.%20You%20are%20now%20ready%20to%20begin%20the%20physics%20orientation.%3Cbr%2F%3E%3Cbr%2F%3E%F0%9F%91%89%20**Proceed%20to%20Lab%2001%3A%20The%20Moment%20of%20AI.**%22)%0A%20%20%20%20%20%20%20%20%5D)%0A%0A%20%20%20%20render_storyboard()%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
|
|
</marimo-code>
|
|
|
|
<marimo-code-hash hidden="">7a4ac11e8fcc5bea089d918c7be48446</marimo-code-hash>
|
|
</body>
|
|
</html>
|