diff --git a/conductor/tracks/default_layout_install_20260629/metadata.json b/conductor/tracks/default_layout_install_20260629/metadata.json new file mode 100644 index 00000000..4f97808e --- /dev/null +++ b/conductor/tracks/default_layout_install_20260629/metadata.json @@ -0,0 +1,110 @@ +{ + "track_id": "default_layout_install_20260629", + "name": "Default Layout Install + Hardcoded Path Cleanup + layouts/ Stack", + "status": "active", + "branch": "tier2/post_module_taxonomy_de_cruft_20260627", + "created": "2026-06-29", + "owner": "Tier 1 (initialized); implementation delegated to Tier 2/3.", + "blocked_by": [], + "blocks": [], + "scope": { + "new_files": [ + "layouts/default.ini", + "src/layouts.py", + "tests/test_default_layout_install.py", + "tests/test_reset_layout.py" + ], + "modified_files": [ + "src/paths.py (add `layouts: Path` field + SLOP_GLOBAL_LAYOUTS env override + get_layouts_dir() accessor, mirror themes pattern at line 60/83/150/210-216)", + "src/gui_2.py (App._post_init install hook + drain helper `_install_default_layout_if_empty_result`, mirror the existing `_post_init_callback_result` and `_diag_layout_state_ini_text_result` drain pattern at line 1448+)", + "src/commands.py (drop hardcoded tests/artifacts/... path from reset_layout at line 369-376; simplify docstring at line 351-362)", + "tests/conftest.py:709 (path update from tests/artifacts/manualslop_layout_default.ini to layouts/default.ini)", + "conductor/tracks.md (add row at end of Active Tracks)", + "conductor/chronology.md (prepend row)" + ], + "deleted_files": [], + "relocated_files": [ + "tests/artifacts/manualslop_layout_default.ini -> layouts/default.ini (git mv preserves history; same content; new parallel-to-themes/ home at repo root per user directive 2026-06-29)" + ] + }, + "estimated_effort": { + "method": "scope (per workflow.md Tier 1 Track Initialization Rules. NO day estimates.)", + "phase_1": "10 tasks: 1 audit + 1 git mv + 1 conftest path update + 4 src/paths.py layouts-field edits + 1 src/layouts.py loader + 1 import verification + 1 commit", + "phase_2": "9 tasks: 1 failing tests + 1 red-confirm + 1 helper + 1 wire-to-_post_init + 1 drain-helper + 1 green-confirm + 1 adjacent-batch + 1 commit + 1 manual verification", + "phase_3": "7 tasks: 1 failing test + 1 red-confirm + 1 commands.py edit + 1 docstring update + 1 green-confirm + 1 adjacent-batch + 1 commit", + "phase_4": "6 tasks: 1 acceptance run + 1 empirical repro + 1 checkpoint + 1 plan SHA append + 1 plan commit + 1 tracks.md row" + }, + "verification_criteria": [ + "G1: when cwd/manualslop_layout.ini is missing or <1000 bytes or has 0 [Window][ entries, App._post_init installs layouts/default.ini (resolved via src/layouts.py + src/paths.py:get_layouts_dir()) to cwd/manualslop_layout.ini BEFORE immapp.run; log line `[GUI] installed default layout: -> ` is emitted", + "G2: after install, the merged show_windows state has the 8 default-true windows (Project Settings, Files & Media, AI Settings, Discussion Hub, Operations Hub, Theme, Log Management, Diagnostics) set to True even if config.toml previously pinned them to False", + "G3: src/commands.py:reset_layout has only 1 path in layout_paths list (cwd-relative); the tests/artifacts/live_gui_workspace/manualslop_layout.ini reference is gone (verified via inspect.getsource assertion in tests/test_reset_layout.py)", + "G4: tests/test_default_layout_install.py exists and has 3+ tests, all passing: test_default_layout_installed_when_ini_missing, test_default_layout_installed_when_ini_empty, test_default_layout_NOT_installed_when_layout_present", + "G5: layouts/default.ini is the source of truth at repo root (parallel to themes/); tests/conftest.py:709 reads from the new path; the old tests/artifacts/manualslop_layout_default.ini is gone (git mv relocated it)", + "G6: src/paths.py declares a `layouts: Path` field (mirror of themes line 60); resolves layouts = root_dir / 'layouts' (mirror line 83); supports SLOP_GLOBAL_LAYOUTS env + config-file override (mirror line 150); exposes get_layouts_dir() accessor (mirror line 210-216)", + "G7: src/layouts.py exists with LayoutFile @dataclass(frozen=True, slots=True) + load_layouts_from_dir(path, scope) + load_layouts_from_disk() consumer (mirror src/theme_models.py:181-225 + src/theme_2.py:340-346; uses Result[T] per data-oriented convention)", + "G8: tests/conftest.py:709 reads from layouts/default.ini; the live_gui fixture continues to ship the default layout to fresh test workspaces; no test environment regression", + "VC_no_production_path_to_test_fixtures: regex search `tests/artifacts` against src/**/*.py returns 0 matches (the prior false positive at src/commands.py:371 is gone)", + "VC_no_configs_in_src: regex search `\\.ini$` against src/**/* returns 0 matches; configs at repo root only (themes/, layouts/, etc.)" + ], + "regressions_and_pre_existing_failures": [], + "pre_existing_failures_remaining": [], + "deferred_to_followup_tracks": [ + { + "title": "panel_defs_fleury_migration", + "description": "Migrate the ~40 imperative render_x functions and `_render_window_if_open(name, lambda: render_x(app))` call sites in src/gui_2.py into declarative PanelDef records (name, render_callable, dock_target, default_visible, pops_out) per Ryan Fleury's raddbg 'type view' / 'lens' pattern (talk transcripts at docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json and docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json). The render loop becomes `for panel in PANELS: if app.show_windows.get(panel.name): panel.render(app)`. Pre-conditions: this track establishes `layouts/` at repo root + `src/layouts.py` as the typed loader so the future migration has somewhere to land.", + "track_status": "not yet initialized; deferred per user directive 2026-06-29 ('I don't need to full on convert the gui definitions in the codebase to this way of defining them but just something to keep in mind')" + }, + { + "title": "test_engine_integration_20260627 (separate ongoing track)", + "description": "Bridge the imgui test engine so visual regression can verify 'panels are visible' rather than relying on the INI-content proxy this track uses. This track does NOT depend on the engine; the engine track is orthogonal and was planned before this one.", + "track_status": "active (separate track; not blocked by this one)" + }, + { + "title": "Visual-regression coverage of empty-INI recovery", + "description": "After test_engine_integration ships, replace the INI-content assertion (G4) with `ctx.capture_screenshot_window('Project Settings')` + baseline PNG diff. The INI-content proxy is correct-but-imperfect; pixel-level would be definitive.", + "track_status": "not yet initialized; follows test_engine_integration Track 3" + }, + { + "title": "Multiple bundled layouts", + "description": "After the default layout lands, optionally add `layouts/compact.ini` (small-screen), `layouts/wide.ini` (wide-screen), etc. so users can pick via WorkspaceProfile. Defer until user asks.", + "track_status": "not yet initialized; opportunistic follow-up" + } + ], + "risk_register": [ + { + "id": "R1", + "description": "Install runs in _post_init (main thread) BEFORE immapp.run reads the INI; if HelloImGui caches the INI filename and resolves it on a different thread, the install may be too late", + "likelihood": "low", + "impact": "install runs but panels still invisible on first render", + "mitigation": "_post_init is the canonical post-init callback wired in src/gui_2.py:685-687; it runs synchronously before the GL/window loop starts. ImGui reads the INI inside immapp.run() during startup. Order is deterministic. Empirical verification via Task 2.9 (user launches sloppy.py standalone with deleted INI; confirms panels visible)." + }, + { + "id": "R2", + "description": "shutil.copy2 overwrites a user-customized INI silently; users who intentionally crafted a tiny stub INI to suppress dock saves lose their work", + "likelihood": "low", + "impact": "data loss for power users", + "mitigation": "The empty-INI heuristic is 'file missing OR size < 1000 bytes OR zero [Window][ entries'. Any user with a customized layout will have a larger INI with [Window] entries, which the heuristic preserves. Add a defensive log: `[GUI] detected small INI (N bytes); installing default layout` so power users notice and can rename if needed." + }, + { + "id": "R3", + "description": "layouts/default.ini is not in the wheel (git mv's content is fine but a future wheel-build pipeline might exclude it)", + "likelihood": "low", + "impact": "RuntimeError or FileNotFoundError on first launch for end users", + "mitigation": "src/layouts.py catches FileNotFoundError and drains to _startup_timeline_errors. The themes/ pattern at src/theme_2.py:340-346 already handles this precedent. Pre-flight check via Task 4.1 (acceptance run from a fresh wheel-less dev install) catches this." + }, + { + "id": "R4", + "description": "Default-true windows in the bundled INI diverge from _default_windows in src/app_controller.py:2086-2108 (e.g., a window renamed but only one of the two got updated)", + "likelihood": "medium", + "impact": "visually inconsistent — some panels docked, some not", + "mitigation": "The bundled INI is intentionally narrower than _default_windows (it omits MMA Dashboard, Task DAG, Tier 1-4, Message, Tool Calls, Text Viewer, etc. — those start hidden per user preference 'I don't want mma to be visible by default' documented at tests/artifacts/manualslop_layout_default.ini:20-22). The convergence assertion is in Task 4.1: 7+ of 9 default-true windows must appear in the saved INI." + }, + { + "id": "R5", + "description": "src/layouts.py is a new file; per the file-naming HARD RULE in AGENTS.md ('New src/.py files may only be created on the user's explicit request'), I may be blocked from creating it", + "likelihood": "low (user explicitly authorized in 2026-06-29 feedback)", + "impact": "track blocked at Phase 1 Task 1.8", + "mitigation": "User said: 'Make a layouts directory similar to the themes directory where we can store default layouts for the apps I guess.' This is explicit authorization for the parallel pattern. src/layouts.py mirrors src/theme_2.py/src/theme_models.py exactly." + } + ] +} diff --git a/conductor/tracks/default_layout_install_20260629/plan.md b/conductor/tracks/default_layout_install_20260629/plan.md new file mode 100644 index 00000000..c2de8003 --- /dev/null +++ b/conductor/tracks/default_layout_install_20260629/plan.md @@ -0,0 +1,161 @@ +## Phase 1: Move default layout + create layouts/ stack (parallel to themes/) + +Focus: relocate `tests/artifacts/manualslop_layout_default.ini` to `layouts/default.ini` at repo root; add the parallel `src/paths.py` field, `get_layouts_dir()` accessor, and `src/layouts.py` loader module — exactly the themes pattern (`themes/` + `src/path.py:60,83,150` + `src/theme_models.py` + `src/theme_2.py`). + +- [ ] Task 1.1: Verify bundled layout content + themes pattern baseline + - WHERE: `tests/artifacts/manualslop_layout_default.ini` (109 lines), `src/paths.py:60,83,150,210-216`, `src/theme_models.py:181-225`, `src/theme_2.py:340-346`, `themes/` at repo root + - WHAT: confirm files exist with the expected sizes and that the themes pattern is the canonical reference + - HOW: `git log --oneline -- tests/artifacts/manualslop_layout_default.ini` for provenance; `Get-Content src/paths.py | Select-String -Pattern "themes\s*[:=]|themes\s*=|root_dir/"` to map the path-resolution shape + - SAFETY: pure read; no behavior change +- [ ] Task 1.2: `git mv` asset to new home + - WHERE: `tests/artifacts/manualslop_layout_default.ini` → `layouts/default.ini` (new dir at repo root, parallel to `themes/`) + - WHAT: `git mv tests/artifacts/manualslop_layout_default.ini layouts/default.ini` + - HOW: PowerShell `git mv` preserves history; verify with `git status` after + - SAFETY: file rename, no content change; `layouts/` is gitignored? verify — `grep -i "layouts" .gitignore` should return nothing (or only `tests/artifacts/` excluding layouts/) +- [ ] Task 1.3: Update `tests/conftest.py:709` to read from `layouts/` + - WHERE: `tests/conftest.py:709` — `_default_layout_src = project_root / "tests" / "artifacts" / "manualslop_layout_default.ini"` + - WHAT: change to `_default_layout_src = project_root / "layouts" / "default.ini"` + - HOW: `manual-slop_edit_file`; preserve 1-space indentation per `conductor/code_styleguides/python.md` + - SAFETY: no semantic change to test behavior; same bundled content, new path +- [ ] Task 1.4: Add `layouts` field to `src/paths.py` config dataclass (mirror themes) + - WHERE: `src/paths.py:60` (`themes: Path = ...`) — add a `layouts: Path = ...` field right after + - WHAT: add the field declaration matching the `themes` shape exactly + - HOW: `manual-slop_edit_file`; 1-space indent + - SAFETY: additive — does not change existing fields +- [ ] Task 1.5: Resolve `layouts` default in `src/paths.py` (mirror themes) + - WHERE: `src/paths.py:83` (`themes = root_dir / "themes",`) — add `layouts = root_dir / "layouts",` immediately below + - WHAT: resolve the default path in the `initialize_paths`-style function + - HOW: `manual-slop_edit_file`; ensure the same closure/call-site shape as themes + - SAFETY: additive; existing themes path unchanged +- [ ] Task 1.6: Add `SLOP_GLOBAL_LAYOUTS` env + config override (mirror themes) + - WHERE: `src/paths.py:150` — add `_resolve_path("SLOP_GLOBAL_LAYOUTS", "layouts", root_dir / "layouts", config_path)` line in the same call shape + - WHAT: register the env var + config-file override for `layouts`, parallel to themes + - HOW: `manual-slop_edit_file`; exact-string preserve the existing `_resolve_path` call for themes + - SAFETY: additive; new env var only +- [ ] Task 1.7: Add `get_layouts_dir()` accessor to `src/paths.py` (mirror themes) + - WHERE: `src/paths.py:210-216` — add 2 functions (`get_layouts_dir() -> Path` + `get_layouts_project_config_path() -> Path` if themes has it) right after + - WHAT: accessor functions + - HOW: `manual-slop_edit_file`; preserve docstring format + - SAFETY: additive +- [ ] Task 1.8: Create `src/layouts.py` loader module (mirror `src/theme_models.py` + `src/theme_2.py`) + - WHERE: new file `src/layouts.py` + - WHAT: define `LayoutFile` `@dataclass(frozen=True, slots=True)` with `(name: str, raw_text: str, source_path: Path, scope: str)` fields; define `load_layouts_from_dir(path: Path, scope: str) -> dict[str, LayoutFile]` and `load_layouts_from_file(path: Path, scope: str) -> dict[str, LayoutFile]`; define `load_layouts_from_disk() -> None` that calls both with global + project paths; wrap parse errors in `Result` per `conductor/code_styleguides/error_handling.md` + - HOW: model after `src/theme_models.py:181-225` (`load_themes_from_dir`, `load_themes_from_toml`) + `src/theme_2.py:340-346` (`load_themes_from_disk`) + - SAFETY: new file, no existing code modification; uses `from __future__ import annotations` + `@dataclass(frozen=True, slots=True)` per `conductor/code_styleguides/data_oriented_design.md` §8.5 +- [ ] Task 1.9: Add `src/layouts.py` to `tests/test_gui2_layout.py`-adjacent test inventory if present; for now, just verify import works + - WHERE: `tests/` + - WHAT: `uv run python -c "from src.layouts import load_layouts_from_disk; print(load_layouts_from_disk())"` to verify the module imports and returns a dict (empty by default since the test cwd has no `layouts/`) + - HOW: direct Python invocation + - SAFETY: pure inspection +- [ ] Task 1.10: Commit phase 1 with git note + - WHAT: `chore(layouts): introduce layouts/ directory + src/layouts.py (themes pattern); relocate default layout asset` + - HOW: standard atomic commit per `conductor/workflow.md` §Task Workflow; attach a 3-line git note explaining: relocation from tests/artifacts; parallel to themes; src/layouts.py mirrors src/theme_models.py + src/theme_2.py; sets up the home for eventual Fleury-style PanelDef migration + +## Phase 2: Install-on-empty-INI in `App._post_init` + +Focus: ship `layouts/default.ini` to `cwd/manualslop_layout.ini` when the file is missing/empty/small, before `immapp.run(...)` reads it. + +- [ ] Task 2.1: Write failing test for install behavior + - WHERE: new file `tests/test_default_layout_install.py` + - WHAT: red phase — 3 tests: + 1. `test_default_layout_installed_when_ini_missing` — `os.remove(cwd/manualslop_layout.ini)` before launch; `subprocess.Popen(sloppy_args, cwd=temp_workspace)`; wait ≥ 5s; assert `manualslop_layout.ini` exists with `[Window][Project Settings]` entry + a non-empty `DockId=` line + 2. `test_default_layout_installed_when_ini_empty` — write a 5-byte stub INI before launch; same assertions as (1) + 3. `test_default_layout_NOT_installed_when_layout_present` — pre-write a custom `[Window][CustomPanel]` INI; assert the custom panel survives (no overwrite) + - HOW: each test spawns the app via `subprocess.Popen(["uv", "run", "python", "-u", "sloppy.py", "--enable-test-hooks"], cwd=temp_workspace, stdout=log_file, stderr=log_file, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)` (mirrors the conftest at line 792), waits 5-8s, terminates via `kill_process_tree()` (per the conftest pattern at line 853), then asserts on the saved INI + - SAFETY: tests MUST NOT touch the repo-root `manualslop_layout.ini`; each test uses its own cwd (per `conductor/code_styleguides/workspace_paths.md`); temp workspace path = `Path("tests/artifacts/_default_layout_install_")` +- [ ] Task 2.2: Run phase 2.1 tests; confirm RED (fails for the right reason) + - WHERE: `tests/test_default_layout_install.py` + - HOW: `uv run pytest tests/test_default_layout_install.py -v --tb=short --timeout=120` + - Expected: 3 tests fail because no install logic exists yet; the temp-workspace INI is empty or absent post-launch +- [ ] Task 2.3: Implement `_install_default_layout_if_empty` helper + - WHERE: new module-level function `_install_default_layout_if_empty(src_ini: Path, dst_ini: Path) -> Result[bool]` near `_diag_layout_state` (`src/gui_2.py:584-615`) + - WHAT: reads `src_ini` text, decides if `dst_ini` is "missing/empty" (file size < 1000 bytes OR zero `[Window][` lines), copies bundled → dst on true, returns Result[True]; on false returns Result[False]; on `OSError` returns Result with ErrorInfo per `conductor/code_styleguides/error_handling.md` + - HOW: `shutil.copy2` for atomic copy; `sys.stderr.write(f"[GUI] installed default layout: {src_ini} -> {dst_ini}\n")` for the user-visible log + - SAFETY: thread-safe (no shared state); pure file I/O; 1-space indentation per project rule +- [ ] Task 2.4: Wire the helper into `App._post_init` + - WHERE: `src/gui_2.py:570-582` (`App._post_init` body) + - WHAT: call `_install_default_layout_if_empty` BEFORE `_diag_layout_state`; append ErrorInfo to `app._startup_timeline_errors` if `not result.ok` + - HOW: `install_result = _install_default_layout_if_empty_result(app, src_path, dst_path)`; if not ok, drain via `_startup_timeline_errors` per the existing pattern at line 580-582 + - SAFETY: `_post_init` runs on the main thread (HelloImGui callback), no race +- [ ] Task 2.5: Add drain helper `_install_default_layout_if_empty_result` + - WHERE: `src/gui_2.py` near other drain helpers (line 1448 area: `_post_init_callback_result`) + - WHAT: `Result[None]` wrapper for the install; mirrors the existing `Result`-returning pattern for `_post_init_callback_result` and `_diag_layout_state_ini_text_result` + - HOW: same pattern; signature `def _install_default_layout_if_empty_result(app, src_path, dst_path) -> Result[bool]` + - SAFETY: append-to-drain convention per `conductor/code_styleguides/error_handling.md` +- [ ] Task 2.6: Verify phase 2.1 tests now pass + - WHERE: `tests/test_default_layout_install.py` + - HOW: `uv run pytest tests/test_default_layout_install.py -v --tb=short --timeout=120` + - Expected: all 3 pass; the post-launch INI has 7+ `[Window][X]` entries +- [ ] Task 2.7: Run adjacent test batch (`tests/test_gui*.py`) to confirm no regression + - WHERE: `tests/test_gui2_layout.py`, `tests/test_gui_diagnostics.py`, `tests/test_layout_reorganization.py` + - HOW: `uv run python scripts/run_tests_batched.py --tier test_gui*` (per `conductor/workflow.md` §"Tier 2 Autonomous Sandbox" — use the batched runner, never raw pytest for batched verification) + - Expected: prior batch_green preserved; no _post_init regressions +- [ ] Task 2.8: Commit phase 2 with git note + - WHAT: `fix(gui): install default layout when cwd/manualslop_layout.ini is empty` + - HOW: standard atomic commit; git note = "Installs bundled `layouts/default.ini` (resolved via the new src/layouts.py path resolution) to cwd when the user's INI is missing or empty, restoring visible panels on first-run / post-deletion. Drains errors to `_startup_timeline_errors` per data-oriented convention." +- [ ] Task 2.9: User Manual Verification + - PAUSE; await user `yes` after deleting `manualslop_layout.ini` and launching `sloppy.py` standalone — confirm panels are visible + +## Phase 3: Remove hardcoded test-fixture path from production code + +Focus: `src/commands.py:369-376` references `tests/artifacts/live_gui_workspace/manualslop_layout.ini`; this is dead code in production + violates the user's "production code MUST NOT reference test-fixture paths" principle (and the 2026-06-29 reinforcement: "the codebase should default to the immediate directory for initial tomls"). + +- [ ] Task 3.1: Write failing test for `reset_layout` path cleanup + - WHERE: new file `tests/test_reset_layout.py` + - WHAT: red phase — verify `reset_layout` only consults the cwd-relative path + 1. `test_reset_layout_only_targets_cwd_ini` — set cwd to a clean temp dir; write `/manualslop_layout.ini`; create `/tests/artifacts/live_gui_workspace/manualslop_layout.ini` (decoy); invoke `reset_layout(app)` on a mock app with `show_windows = {}`; use `inspect.getsource(commands.reset_layout)` to assert the string `tests/artifacts/live_gui_workspace` does not appear in `reset_layout`'s source + - HOW: instantiate a minimal `App`-like mock with `show_windows = {}`; import `commands` directly (it has `inspect`-friendly source); pure unit test, no live_gui spawn + - SAFETY: no real GUI render; the test reads source via `inspect.getsource()` +- [ ] Task 3.2: Run phase 3.1 tests; confirm RED + - HOW: `uv run pytest tests/test_reset_layout.py -v --tb=short` + - Expected: test fails because the current `reset_layout` source contains `tests/artifacts/live_gui_workspace` (the hardcoded path the user flagged) +- [ ] Task 3.3: Remove the hardcoded path from `commands.reset_layout` + - WHERE: `src/commands.py:369-376` + - WHAT: `layout_paths = ["manualslop_layout.ini"]` (drop the `os.path.join("tests", ...)` line) + - HOW: `manual-slop_edit_file` with `old_string` containing both `layout_paths = [` and the `os.path.join(...)` line; replace with `layout_paths = ["manualslop_layout.ini"]` + - SAFETY: shrinks the function; no behavior change for end users (cwd-relative was the only functional path) +- [ ] Task 3.4: Update `commands.reset_layout` docstring + - WHERE: `src/commands.py:351-362` + - WHAT: simplify the docstring; drop the phrase "deletes manualslop_layout.ini so hello_imgui regenerates a fresh" if no longer accurate + - HOW: minimal edit via `manual-slop_edit_file` + - SAFETY: docstring only, no behavior change +- [ ] Task 3.5: Verify phase 3.1 tests now pass + - HOW: `uv run pytest tests/test_reset_layout.py -v --tb=short` + - Expected: 1 test passes; the `inspect.getsource` assertion holds +- [ ] Task 3.6: Run adjacent test_batch (`tests/test_commands*.py`) + - HOW: `uv run python scripts/run_tests_batched.py --filter test_commands*` + - Expected: no regression +- [ ] Task 3.7: Commit phase 3 with git note + - WHAT: `chore(commands): remove dead test-fixture path from reset_layout` + - HOW: standard atomic commit; git note = "Reset_layout referenced `tests/artifacts/live_gui_workspace/manualslop_layout.ini`, dead code in production. Removed per user directive 2026-06-29: production code must default to the immediate directory." + +## Phase 4: Verification + +Focus: full-batch confirmation; per-target test runs; cross-reference the original bug report. + +- [ ] Task 4.1: Confirm spec acceptance criteria via test execution + - WHERE: `tests/test_default_layout_install.py`, `tests/test_reset_layout.py`, `tests/test_gui*.py`, `tests/test_commands*.py` + - HOW: `uv run python scripts/run_tests_batched.py --filter "test_default_layout_install|test_reset_layout|test_gui2_layout|test_gui_diagnostics|test_layout_reorganization|test_commands"` + - Acceptance: + - G1 (install on empty INI) — `test_default_layout_installed_when_ini_missing` passes + - G2 (overrides cleared on install) — `test_default_layout_installed_when_ini_empty` passes + - G3 (`reset_layout` path cleanup) — `test_reset_layout_only_targets_cwd_ini` passes + - G4 (regression test for visibility-after-empty) — all 3 `test_default_layout_install` tests pass + - G5 / G6 / G7 (layouts/ stack) — `tests/conftest.py:709` reads from new path; live_gui fixture unaffected; `src/layouts.py` importable + - G8 (conftest path update) — `tests/conftest.py:709` reads from `layouts/default.ini` +- [ ] Task 4.2: Empirical reproduction of the original bug + - WHERE: production cwd (no test harness) + - HOW: `Remove-Item manualslop_layout.ini -ErrorAction SilentlyContinue`; `uv run python sloppy.py`; observe via screenshot or VNC that Project Settings, Files & Media, AI Settings, Discussion Hub, Operations Hub, Theme, Log Management, Diagnostics are all visible + - SAFETY: requires user confirmation; this is the manual verification step per `conductor/workflow.md` §"Phase Completion Verification" +- [ ] Task 4.3: Checkpoint commit + verification git note + - WHAT: `conductor(checkpoint): end of Phase 4 (default_layout_install_20260629 complete)` + - HOW: empty commit allowed per `conductor/workflow.md` §"Phase Completion Verification"; attach a long-form verification report as git note documenting the 1 asset relocated (`tests/artifacts/manualslop_layout_default.ini` → `layouts/default.ini`), 2 new files (`layouts/default.ini`, `src/layouts.py`), 1 src command file modified (`commands.reset_layout`), 1 paths file modified (`src/paths.py` adds `layouts` field), 1 conftest updated (`tests/conftest.py:709`), 3 test files added (`tests/test_default_layout_install.py`, `tests/test_reset_layout.py`, etc.), and the empirical reproduction result +- [ ] Task 4.4: Append phase checkpoint + completion SHAs to `plan.md` + - WHERE: this file + - WHAT: append `[checkpoint: <7-char SHA>]` after each phase header + `[track complete: <7-char SHA>]` at end +- [ ] Task 4.5: Commit final plan update + - WHAT: `conductor(plan): mark default_layout_install_20260629 phases 1-4 complete` +- [ ] Task 4.6: Add row to `conductor/tracks.md` + - WHERE: `conductor/tracks.md` — Active Tracks table + - WHAT: add a row for `default_layout_install_20260629` with status "shipped 2026-06-29" after Phase 4 completes + - HOW: insert a new row following the table conventions; commit in the same Phase 4 commit batch diff --git a/conductor/tracks/default_layout_install_20260629/spec.md b/conductor/tracks/default_layout_install_20260629/spec.md new file mode 100644 index 00000000..d78e02ae --- /dev/null +++ b/conductor/tracks/default_layout_install_20260629/spec.md @@ -0,0 +1,145 @@ +# Track Specification: Default Layout Install + Hardcoded Path Cleanup + +## Overview + +Manual Slop's GUI panels become invisible at startup whenever `manualslop_layout.ini` is missing, empty, or refers to window names that don't exist in the current build. The root cause is structural: `imgui.begin("Panel Name")` creates a **floating** window with no docking info when the INI has no `[Window][Panel Name] + DockId` entry. Floating windows get default positions that overlap the menu bar or get clipped by the full-screen dockspace, so users see "nothing" while the Windows menu (which reads `app.show_windows`) still shows the panels as "checked." + +The pre-existing workaround in `tests/conftest.py:700-712` ships a known-good layout into the test workspace at every session. There is no equivalent installation path for end-user launches — first-run, post-deletion, and post-corrupt-INI users all land in the same broken state. This track ships the equivalent installation path for production launches **AND** introduces the `layouts/` directory at the repo root (parallel to `themes/`) as the canonical home for default layout assets. It also removes a hardcoded `tests/artifacts/...` path that escaped into `src/commands.py`. + +**Two patterns established by this track:** + +1. **`layouts/` directory pattern (the immediate deliverable):** Same shape as `themes/` — bundled assets at repo root, path resolution via `src/paths.py`, loaders in a parallel `src/` module. Sets up the directory structure for the eventual Fleury-style migration below. + +2. **Fleury "type view" / "lens" pattern (the eventual normalization target, NOT in this track):** The user's stated long-term direction is to define GUI panels as declarative "constructs" — data tables of `(panel_name, render_callable, dock_target)` tuples that the renderer iterates per-frame, similar to how Ryan Fleury defines **type views** ("lenses in the code, but views to the user") in the rad debugger to say "if you have this type, just do that automatically for me" (verified from the rad debugger talk transcripts stored at `docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json` v1@2241s and `docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json` v2@7697s; see "Eventual Normalization Target" below). The current track **does not** migrate the GUI definitions — it just sets up the layout asset home so the future migration has somewhere to land. + +## Current State Audit (as of master `1bea0d23`, branch `tier2/post_module_taxonomy_de_cruft_20260627`) + +### Already Implemented (DO NOT re-implement) + +- **`themes/` directory + path/loader stack (the PARALLEL pattern this track mirrors):** + - `themes/` at repo root contains 8 built-in themes (`nord_dark.toml`, `monokai.toml`, etc.). The directory lives at repo root, **not** under `src/` — per the user's "don't put configs in `src/`" directive. + - `src/paths.py:60` declares `themes: Path`; `src/paths.py:83` resolves it to `root_dir / "themes"`; `src/paths.py:150` adds `SLOP_GLOBAL_THEMES` env override + config-file override on top of the default. + - `src/theme_models.py:181-225` defines `load_themes_from_dir(path, scope)` and `load_themes_from_toml(path, scope)` — directory + file loaders, both returning `Result`-wrapping `dict[str, ThemeFile]`. + - `src/theme_2.py:340-346` calls `load_themes_from_disk()` which iterates `cfg.themes` and merges `load_themes_from_dir(...)` per scope. + - The 4-function pattern: declare `Path` on the config dataclass, resolve in `initialize_paths`, expose a `get_themes_dir()` accessor, load via the dedicated module. + +- **`tests/artifacts/manualslop_layout_default.ini`** (109 lines, 2699 bytes) — pre-baked default layout with explicit `DockId` entries for Project Settings, Files & Media, AI Settings, Operations Hub, Discussion Hub, Log Management, Diagnostics, Theme, and the four MMA tier panels (collapsed). Three-column split: DockSpace `0xAFBEEF01` with DockNodes `0x10` (left, 4 tabs) and `0x11` (right, 6 tabs). Docstring lists the iter-step procedure: "open sloppy.py, arrange, quit (HelloImGui auto-saves), copy resulting INI over this one." + +- **`live_gui` fixture ships the default layout** (`tests/conftest.py:700-712`): copies `tests/artifacts/manualslop_layout_default.ini` to `temp_workspace / "manualslop_layout.ini"` before spawning `sloppy.py --enable-test-hooks`. Comment at line 700-705 explicitly documents the failure mode: + > "Without this, HelloImGui auto-docks on first launch in a non-deterministic way, and the user's saved repo-root layout references stale pre-hub-refactor window names." + +- **`App._diag_layout_state()`** (`src/gui_2.py:584-615`) — one-shot startup diagnostic that logs `show_windows` entries, visible-by-default windows, and warns about stale `[Window][...]` entries in the INI that reference post-refactor-renamed windows (e.g. "Projects", "Files", "Screenshots", "Discussion History", "Provider", "Message", "Response", "Tool Calls", "Comms History", "System Prompts"). Already wired into `_post_init` at line 580. + +- **`commands.reset_layout`** (`src/commands.py:342-378`) — sets every `show_windows[*]` to True and deletes the layout INI. Docstring (line 351-362) acknowledges: "User will need to restart sloppy.py for the dock layout to fully take effect." + +- **HelloImGui save on shutdown** (`src/gui_2.py:1494-1515` via `_shutdown_save_ini_result`, called from `App.shutdown` line 972-973): `imgui.save_ini_settings_to_disk(app.runner_params.ini_filename)` writes whatever ImGui has in its settings registry. **Empirical evidence shows it only writes `[Window][Debug##Default]` if no window was given a `DockId` and persisted position** (verified via 8s run with show_windows=True for 9 panels → 585-byte INI). + +- **`ini_filename` resolution** (`src/gui_2.py:681`): `self.runner_params.ini_filename = "manualslop_layout.ini"` — relative to cwd. `ini_folder_type = IniFolderType.current_folder` on line 680. HelloImGui resolves this to `/manualslop_layout.ini`. + +- **Test workspace isolation** (`tests/conftest.py:660-666`): per-run workspace lives under `tests/artifacts/_live_gui_workspace_/`, sets up its own `manual_slop.toml` + `conductor/tracks/` + `config.toml`. + +### Gaps to Fill (This Track's Scope) + +- **GAP-1: No production-side default-layout installer.** When `manualslop_layout.ini` is missing or empty AND the user launches `sloppy.py` outside the test harness, the app does not install a sane default. HelloImGui auto-creates a fresh INI with only `[Window][Debug##Default]` and an empty dockspace. The user's saved `show_windows` flags (default-true for 9 panels) are honored by `_render_window_if_open` calls but the resulting `imgui.begin(...)` calls produce invisible floating windows. The conftest's well-known workaround is not exposed to production launches. + +- **GAP-2: Hardcoded test-fixture path in production code.** `src/commands.py:371` contains `os.path.join("tests", "artifacts", "live_gui_workspace", "manualslop_layout.ini")` inside the `reset_layout` command. This path only exists inside the test runner's per-session workspace. From a production cwd of `C:\Users\Ed\Projects\foo\`, the `tests/artifacts/live_gui_workspace/...` lookup will silently fail and only the first (cwd-relative) path is checked. The second path is dead code in production and a misplaced test-path reference in production source — violates the user's principle: **"the codebase should default to the immediate directory for initial tomls"** (2026-06-29 feedback) and the existing rule "production code MUST NOT reference test fixture paths." + +- **GAP-3: No `layouts/` directory + path/loader stack.** Right now the only "default layout" lives in `tests/artifacts/` — wrong location, wrong owner. The themes system has the full pattern (`themes/` + `src/paths.py` declaration + `src/theme_models.py`/`src/theme_2.py` loaders); the layouts system has nothing. This track ships the analogous `layouts/` + `src/layouts.py` stack so the layouts home is parallel to themes, not buried under `tests/artifacts/` and not under `src/`. + +- **GAP-4: No regression test for the visibility-after-empty-INI scenario.** The existing `test_workspace_profiles_sim.py::test_workspace_profiles_restoration` and `test_gui_text_viewer.py::test_text_viewer_state_update` test workspace/profile state via the API but do NOT verify that `imgui.begin(...)` actually registers a docked window (i.e., that the layout INI grows the expected `[Window][X] + DockId` entries after a render). Without an INI-content regression test, GAP-1 can regress silently. + +## Goals + +- **G1.** When `sloppy.py` (production) launches and `cwd/manualslop_layout.ini` is missing OR contains 0 `[Window][` entries OR is under 1000 bytes (heuristic for "effectively empty"), `App._post_init` SHALL install `layouts/default.ini` (the bundled asset) to `cwd/manualslop_layout.ini` BEFORE HelloImGui loads it. The log output shall include `[GUI] installed default layout: -> ` so users can see what happened. + +- **G2.** `App._post_init` SHALL respect the user's `show_windows` overrides from `config.toml` when installing the default layout (the install ONLY writes the INI; it does NOT mutate `app.show_windows`). The default-true windows (`Project Settings`, `Files & Media`, `AI Settings`, `Discussion Hub`, `Operations Hub`, `Theme`, `Log Management`, `Diagnostics` per `_default_windows` in `src/app_controller.py:2086-2108`) SHALL be visible after install because the bundled `layouts/default.ini` references exactly those names with `DockId` entries. + +- **G3.** `commands.reset_layout` (`src/commands.py:342-378`) SHALL remove the hardcoded `tests/artifacts/...` path from its `layout_paths` list, leaving only the cwd-relative `"manualslop_layout.ini"`. The `live_gui` workspace path is owned by the test fixture, not the app. + +- **G4.** A new `layouts/` directory at repo root SHALL exist parallel to `themes/`. The new asset `layouts/default.ini` SHALL be a `git mv` of `tests/artifacts/manualslop_layout_default.ini` (preserving git history). The `src/paths.py` config dataclass SHALL add a `layouts: Path` field (parallel to `themes: Path`); initialize_paths SHALL resolve `layouts = root_dir / "layouts"` with `SLOP_GLOBAL_LAYOUTS` env override + config-file override on top, mirroring the themes pattern at line 60 + 83 + 150. + +- **G5.** A new `src/layouts.py` module SHALL be added (parallel to `src/theme_2.py`/`src/theme_models.py`), exposing at minimum: + - `get_layouts_dir() -> Path` accessor + - `load_layouts_from_disk() -> dict[str, LayoutFile]` reader, returning a `Result`-wrapped dict (per data-oriented convention; per the existing `theme_models.load_themes_from_dir` shape) + - The `LayoutFile` dataclass as a `@dataclass(frozen=True, slots=True)` per the project's C11/Odin/Jai-in-Python value-type mandate (no `dict[str, Any]`) + - **No new `.py` file beyond this `src/layouts.py`; the loader reuses the existing `Result[T]` plumbing in `src/result_types.py` and follows the `theme_models.load_themes_from_*` contract** (per the file-naming convention in `conductor/workflow.md`: helpers for an existing system go in the system module — and `layouts/` is the system being introduced). + +- **G6.** Add `tests/test_default_layout_install.py` that: + - Removes `cwd/manualslop_layout.ini` and verifies the app installs the default on launch + - Runs the app for ≥ 5 seconds via `subprocess.Popen(sloppy_args, cwd=temp_workspace)` (mirrors the conftest pattern at line 792), then terminates the subprocess + - Asserts the saved INI contains `[Window][Project Settings]` with a `DockId=` line + - Asserts the saved INI contains ≥ 7 of the 9 default-visible windows + - Does NOT depend on the `imgui_test_engine` (which is a separate follow-up track per `conductor/tracks/test_engine_integration_20260627/spec.md`) + +- **G7.** Add `tests/test_reset_layout.py` that asserts `commands.reset_layout`'s source has no `tests/artifacts/...` string and only consults the cwd-relative `"manualslop_layout.ini"`. Does not depend on launching the app (pure unit test on the function source). + +- **G8.** Update `tests/conftest.py:709` to read the bundled layout from `layouts/default.ini` (new path) instead of `tests/artifacts/manualslop_layout_default.ini` (old path). The test fixture continues to work; only the source-of-truth path changes. + +## Non-Functional Requirements + +- **No configs in `src/`** — per the user's explicit directive (2026-06-29): `.ini` config files live at repo root (`themes/`, `layouts/`, `config.toml`, etc.), not under `src/`. The loaders (Python code) DO live in `src/`, but the bundled assets they read do NOT. + +- **No day estimates** in track artifacts (per `conductor/workflow.md` §"Tier 1 Track Initialization Rules" — HARD BAN). + +- **No opaque types** in new code (per `conductor/code_styleguides/data_oriented_design.md` §8.5 — Python Type Promotion Mandate). The new `LayoutFile` dataclass uses `@dataclass(frozen=True, slots=True)` with explicit fields. The `dict[str, Any]` BANNED pattern from `conductor/code_styleguides/python.md` §17 is explicitly avoided; loaders return `dict[str, LayoutFile]` (typed instances, not opaque dicts). + +- **Mirror the `themes/` pattern faithfully** — the new `src/layouts.py` should re-use the `load_themes_from_dir` shape: function signature takes `(path, scope)`, returns `dict[str, LayoutFile]`, drained via `_layout_err = Result(...)`. This makes future code that needs to iterate layouts/ parallel to iterate themes/ follow the same pattern (per `conductor/code_styleguides/feature_flags.md` "delete to turn off": a missing `layouts/` directory or a malformed INI returns the empty dict, not an exception). + +- **Atomic per-task commits** with git notes (per `conductor/workflow.md` §"Task Workflow" step 9-10). + +## Architecture Reference + +- **`themes/` mirror pattern (the canonical reference):** + - `src/paths.py:60` — `themes: Path = ...` field on the config dataclass + - `src/paths.py:83` — `root_dir / "themes"` default in the resolve function + - `src/paths.py:150` — `SLOP_GLOBAL_THEMES` env override + config override + - `src/paths.py:210-216` — `get_themes_dir()` accessor functions + - `src/theme_models.py:181-225` — `load_themes_from_dir(path, scope)` and `load_themes_from_toml(path, scope)` returning `dict[str, ThemeFile]` + - `src/theme_2.py:340-346` — `load_themes_from_disk()` consumer of the dir loader + +- **Why `layouts/` not `src/default_layout/`:** the user explicitly rejected putting `.ini` config files in `./src/` (2026-06-29 directive: "I don't want the codebase ./src to have configuration files"). The themes system pre-existed this directive and already lives at repo root — the layouts system follows that precedent. + +- **HelloImGui IniFolderType / save_ini_settings_to_disk:** `src/gui_2.py:680-681`, `src/gui_2.py:1494-1515`. The `_shutdown_save_ini_result` helper at line 1494 is the canonical save path; the new install runs in `_post_init` BEFORE `immapp.run(...)` (which happens after `_post_init` at `src/gui_2.py:1486`). + +- **`_diag_layout_state` (`src/gui_2.py:584-615`):** emit a one-shot log line `[GUI] installed default layout: -> ` from `_post_init` after a successful install so the diagnostic already runs at the right time. The existing diagnostic continues to log state AFTER install, so the log order tells the user the install happened. + +- **`_render_window_if_open` (`src/gui_2.py:1115-1120`):** the `_post_init` install runs before `immapp.run(...)`, which means HelloImGui loads the installed INI on the next frame and the `[Window][Project Settings] + DockId=` entries are honored by `imgui.begin(...)`. No change to `_render_window_if_open` is needed — the existing call site (`src/gui_2.py:1832-1855` in `render_main_interface`) already passes `show_windows[name]` correctly. + +- **`conductor/code_styleguides/error_handling.md`:** the install is best-effort. On `OSError` / `FileNotFoundError` (asset missing in the wheel), append to `app._startup_timeline_errors` and continue (the user gets a normal first-run experience, panels may not appear, but the app does not crash). + +## Eventual Normalization Target (Fleury "View Constructs" — out of scope for this track) + +The user's stated long-term direction (2026-06-29, with reference to Ryan Fleury's raddbg talks at `https://youtu.be/rcJwvx2CTZY` and `https://youtu.be/_9_bK_WjuYY`, transcripts at `docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json` and `docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json`): + +> "Eventually I wanted to adopt Ryan Fleury's way of defining view constructs like he has with the rad debugger... I don't need to full on convert the gui definitions in the codebase to this way of defining them but just something to keep in mind as its the eventual normalization target for how I treat these panel definitions." + +**The pattern, extracted from the transcripts:** +- v1@2237s: Ryan calls `imgui.begin("Window", p_open)` and the type-view system runs: "a view type view is just saying, 'If you have this type, just do that automatically for me.'" +- v2@7697s: Ryan renames them: "lenses in the code but to the users they're just called views... the type view is just saying... if you have this type, just do that automatically for me." +- The pattern is **declarative**: each panel/widget is a data table of `(name, render_callable, dock_target, default_visible, pops_out)` entries that the render loop iterates per-frame. The codebase stops having scattered `_render_window_if_open("X", lambda: render_x(app))` calls and replaces them with one `for panel in PANELS: if app.show_windows.get(panel.name): panel.render(app)`. + +**Why this track sets up that future:** +1. **`layouts/` at repo root** = the home for the declarative asset (eventually a `.py` module alongside, or a TOML/INI with panel-by-panel config). +2. **`src/layouts.py` as a typed loader** = the precedent that "config + loader" is the canonical way to define layout state, instead of hardcoded imperative blocks in `gui_2.py`. +3. **`layouts/default.ini` keyed by panel NAME (`[Window][Project Settings]`)** = the name strings are already the keys; the future migration to `PANELS: tuple[PanelDef, ...]` will keep those names but add `render_callable` and `dock_target` fields. + +**What this track does NOT do** (explicitly deferred): migrate the ~40 `render_x` functions in `src/gui_2.py` into declarative `PanelDef` records. That's a much larger refactor (touching ~3000 lines of GUI code) that needs its own dedicated track per the user ("[don't need to] full on convert... just something to keep in mind"). Logged in `metadata.json:deferred_to_followup_tracks` for the next planner. + +## Out of Scope + +- **Replacing layout state via `imgui_test_engine`** (`conductor/tracks/test_engine_integration_20260627/spec.md`) — this is a separate follow-up track. G6's regression test uses INI content as a proxy for "imgui.begin was called and registered a docked window", not pixel-level visual regression. +- **Migrating panel definitions to Fleury-style `PanelDef` data records** — see "Eventual Normalization Target" above; tracked in `metadata.json:deferred_to_followup_tracks[].panel_defs_fleury_migration`. +- **Auto-iterating layout per user agent role** (`docs/guide_workspace_profiles.md:Contextual Auto-Switch`) — separate feature; the per-track `Contextual Auto-Switch` opt-in lives behind `ui_auto_switch_layout` and uses WorkspaceProfiles, not the per-window INI. +- **Refreshing `_diag_layout_state` thresholds** — the existing "stale window" warn set (line 605: `_STALE_WINDOW_NAMES = {"Projects", ...}`) is unchanged by this track. +- **WorkspaceProfile save/load** — orthogonal; profile save captures `show_windows` + `ini_content`, profile load applies them via `imgui.load_ini_settings_from_memory` (`src/gui_2.py:927`). The install on first run does not interact with profiles. +- **Layout editing UI** (`src/gui_2.py:render_operations_hub` "Workspace Layouts" tab) — unchanged. +- **Adding more than one bundled layout to `layouts/`** — `default.ini` is enough for this track; users can hand-author `my-layout.ini` and switch via WorkspaceProfile. Future track may add `compact.ini`, `wide.ini`, etc. + +## See Also + +- `docs/guide_workspace_profiles.md` — Workspace profiles (orthogonal but conceptually adjacent) +- `conductor/tracks/test_engine_integration_20260627/spec.md` — ImGui Test Engine integration (deferred follow-up for visual regression coverage) +- `conductor/code_styleguides/feature_flags.md` — "delete to turn off" pattern: install behavior is gated on INI absence, so `cat manualslop_layout.ini` to leave a no-op stub (≥ 1000 bytes / ≥ 1 `[Window][` entry) suppresses the install +- `conductor/code_styleguides/error_handling.md` — boundary handling for the install path +- `conductor/tech-stack.md` §"`src/paths.py`" — the existing themes pattern is the canonical reference for the new layouts path resolution +- Video transcripts (Fleury talks): `docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json`, `docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json` — recorded by `scripts/video_analysis/extract_transcript.py` diff --git a/conductor/tracks/default_layout_install_20260629/state.toml b/conductor/tracks/default_layout_install_20260629/state.toml new file mode 100644 index 00000000..f15b22ac --- /dev/null +++ b/conductor/tracks/default_layout_install_20260629/state.toml @@ -0,0 +1,75 @@ +# Track state for default_layout_install_20260629 +# Updated by Tier 2 Tech Lead as tasks complete + +[meta] +track_id = "default_layout_install_20260629" +name = "Default Layout Install + Hardcoded Path Cleanup + layouts/ Stack" +status = "active" +current_phase = 0 +last_updated = "2026-06-29" + +[blocked_by] +# None. This track is independent. + +[blocks] +# None. The test_engine_integration_20260627 track benefits but is not blocked. + +[phases] +phase_1 = { status = "pending", checkpoint_sha = "", name = "Move default layout to layouts/ + create src/layouts.py stack (mirror themes/)" } +phase_2 = { status = "pending", checkpoint_sha = "", name = "Install-on-empty-INI in App._post_init" } +phase_3 = { status = "pending", checkpoint_sha = "", name = "Remove hardcoded test-fixture path from production code" } +phase_4 = { status = "pending", checkpoint_sha = "", name = "Verification + checkpoint" } + +[tasks] +# Phase 1 (10 tasks) +t1_1 = { status = "pending", commit_sha = "", description = "Verify bundled layout content + themes pattern baseline" } +t1_2 = { status = "pending", commit_sha = "", description = "git mv tests/artifacts/manualslop_layout_default.ini -> layouts/default.ini" } +t1_3 = { status = "pending", commit_sha = "", description = "Update tests/conftest.py:709 to layouts/default.ini" } +t1_4 = { status = "pending", commit_sha = "", description = "Add `layouts: Path` to src/paths.py config dataclass (mirror themes line 60)" } +t1_5 = { status = "pending", commit_sha = "", description = "Resolve layouts = root_dir / 'layouts' in src/paths.py (mirror line 83)" } +t1_6 = { status = "pending", commit_sha = "", description = "Add SLOP_GLOBAL_LAYOUTS env + config override in src/paths.py (mirror line 150)" } +t1_7 = { status = "pending", commit_sha = "", description = "Add get_layouts_dir() accessor to src/paths.py (mirror line 210-216)" } +t1_8 = { status = "pending", commit_sha = "", description = "Create src/layouts.py loader module (mirror src/theme_models.py + src/theme_2.py)" } +t1_9 = { status = "pending", commit_sha = "", description = "Verify src/layouts.py imports + returns empty dict cleanly" } +t1_10 = { status = "pending", commit_sha = "", description = "Commit phase 1 with git note (relocation + layouts/ stack + future Fleury target)" } + +# Phase 2 (9 tasks) +t2_1 = { status = "pending", commit_sha = "", description = "Write 3 failing tests in tests/test_default_layout_install.py" } +t2_2 = { status = "pending", commit_sha = "", description = "Confirm RED (tests fail for install-logic-missing reason)" } +t2_3 = { status = "pending", commit_sha = "", description = "Implement _install_default_layout_if_empty helper in src/gui_2.py" } +t2_4 = { status = "pending", commit_sha = "", description = "Wire helper into App._post_init BEFORE _diag_layout_state" } +t2_5 = { status = "pending", commit_sha = "", description = "Add drain helper _install_default_layout_if_empty_result per data-oriented convention" } +t2_6 = { status = "pending", commit_sha = "", description = "Confirm GREEN (all 3 tests pass)" } +t2_7 = { status = "pending", commit_sha = "", description = "Run adjacent tests/test_gui*.py batch; no regression" } +t2_8 = { status = "pending", commit_sha = "", description = "Commit phase 2 with git note" } +t2_9 = { status = "pending", commit_sha = "", description = "User Manual Verification: standalone launch with deleted INI; panels visible" } + +# Phase 3 (7 tasks) +t3_1 = { status = "pending", commit_sha = "", description = "Write tests/test_reset_layout.py failing test for path cleanup" } +t3_2 = { status = "pending", commit_sha = "", description = "Confirm RED (test reads source via inspect and asserts dead path is gone)" } +t3_3 = { status = "pending", commit_sha = "", description = "Remove hardcoded tests/artifacts/... line from src/commands.py:reset_layout" } +t3_4 = { status = "pending", commit_sha = "", description = "Update commands.reset_layout docstring (line 351-362)" } +t3_5 = { status = "pending", commit_sha = "", description = "Confirm GREEN" } +t3_6 = { status = "pending", commit_sha = "", description = "Run tests/test_commands*.py batch; no regression" } +t3_7 = { status = "pending", commit_sha = "", description = "Commit phase 3 with git note" } + +# Phase 4 (6 tasks) +t4_1 = { status = "pending", commit_sha = "", description = "Run batched verification per workflow.md §Phase Completion Verification" } +t4_2 = { status = "pending", commit_sha = "", description = "Empirical reproduction of original bug (production cwd, manual)" } +t4_3 = { status = "pending", commit_sha = "", description = "Phase 4 checkpoint commit + verification git note" } +t4_4 = { status = "pending", commit_sha = "", description = "Append phase checkpoint SHAs to plan.md" } +t4_5 = { status = "pending", commit_sha = "", description = "Commit final plan update" } +t4_6 = { status = "pending", commit_sha = "", description = "Add row to conductor/tracks.md + commit in same batch" } + +[verification] +phase_4_g1_install_on_empty_ini = false +phase_4_g2_overrides_cleared = false +phase_4_g3_path_cleanup = false +phase_4_g4_regression_tests = false +phase_4_g5_layouts_at_root = false +phase_4_g6_paths_layouts_field = false +phase_4_g7_src_layouts_py = false +phase_4_g8_conftest_path_update = false +phase_4_no_test_paths_in_src = false +phase_4_no_configs_in_src = false +phase_4_user_signoff = false diff --git a/docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json b/docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json new file mode 100644 index 00000000..6f37d378 --- /dev/null +++ b/docs/transcripts/_9_bK_WjuYY_ryan_fleury_raddbg_walkthrough.json @@ -0,0 +1,35807 @@ +{ + "video_id": "_9_bK_WjuYY", + "segments": [ + { + "start": 1.73, + "duration": 0.0, + "text": "[Music]" + }, + { + "start": 14.799, + "duration": 0.0, + "text": "All<00:00:14.880> right,<00:00:15.280> good<00:00:15.599> morning<00:00:16.080> everybody.<00:00:17.279> I" + }, + { + "start": 17.51, + "duration": 0.0, + "text": "All right, good morning everybody. I" + }, + { + "start": 17.52, + "duration": 0.0, + "text": "All right, good morning everybody. I hope<00:00:17.680> we<00:00:17.920> all<00:00:18.160> had<00:00:18.320> a<00:00:18.480> great<00:00:18.720> time<00:00:19.119> drinking" + }, + { + "start": 19.59, + "duration": 0.0, + "text": "hope we all had a great time drinking" + }, + { + "start": 19.6, + "duration": 0.0, + "text": "hope we all had a great time drinking yesterday,<00:00:20.240> hanging<00:00:20.640> out,<00:00:20.960> the<00:00:21.199> nice<00:00:21.439> dinner." + }, + { + "start": 22.39, + "duration": 0.0, + "text": "yesterday, hanging out, the nice dinner." + }, + { + "start": 22.4, + "duration": 0.0, + "text": "yesterday, hanging out, the nice dinner. Uh<00:00:22.640> for<00:00:22.880> the<00:00:23.039> future<00:00:23.359> dinners,<00:00:23.840> alcohol<00:00:24.240> is" + }, + { + "start": 24.47, + "duration": 0.0, + "text": "Uh for the future dinners, alcohol is" + }, + { + "start": 24.48, + "duration": 0.0, + "text": "Uh for the future dinners, alcohol is not<00:00:24.720> included.<00:00:25.359> We'll<00:00:25.600> run<00:00:25.760> out<00:00:25.920> of<00:00:26.160> money" + }, + { + "start": 27.83, + "duration": 0.0, + "text": "not included. We'll run out of money" + }, + { + "start": 27.84, + "duration": 0.0, + "text": "not included. We'll run out of money today.<00:00:28.240> Our<00:00:28.400> first<00:00:28.560> speaker<00:00:28.800> is<00:00:29.039> Ryan.<00:00:29.599> You" + }, + { + "start": 29.75, + "duration": 0.0, + "text": "today. Our first speaker is Ryan. You" + }, + { + "start": 29.76, + "duration": 0.0, + "text": "today. Our first speaker is Ryan. You know,<00:00:29.840> we<00:00:30.000> all<00:00:30.160> know<00:00:30.320> Ryan<00:00:30.800> strikes<00:00:31.279> fear<00:00:31.599> in" + }, + { + "start": 31.91, + "duration": 0.0, + "text": "know, we all know Ryan strikes fear in" + }, + { + "start": 31.92, + "duration": 0.0, + "text": "know, we all know Ryan strikes fear in his<00:00:32.079> enemies<00:00:32.640> because<00:00:32.960> he's<00:00:33.280> so<00:00:33.840> good<00:00:34.000> at<00:00:34.239> what" + }, + { + "start": 34.389, + "duration": 0.0, + "text": "his enemies because he's so good at what" + }, + { + "start": 34.399, + "duration": 0.0, + "text": "his enemies because he's so good at what he<00:00:34.559> does.<00:00:35.440> And<00:00:35.680> now,<00:00:36.079> as<00:00:36.320> you<00:00:36.480> remember<00:00:36.719> from" + }, + { + "start": 36.95, + "duration": 0.0, + "text": "he does. And now, as you remember from" + }, + { + "start": 36.96, + "duration": 0.0, + "text": "he does. And now, as you remember from yesterday,<00:00:37.680> he's<00:00:38.000> learned<00:00:38.239> to<00:00:38.480> ride<00:00:38.800> the" + }, + { + "start": 38.95, + "duration": 0.0, + "text": "yesterday, he's learned to ride the" + }, + { + "start": 38.96, + "duration": 0.0, + "text": "yesterday, he's learned to ride the moose." + }, + { + "start": 41.03, + "duration": 0.0, + "text": "moose." + }, + { + "start": 41.04, + "duration": 0.0, + "text": "moose. >> That's<00:00:41.280> true.<00:00:42.640> So<00:00:43.040> truly<00:00:43.520> now,<00:00:43.840> he<00:00:44.160> will<00:00:44.320> be" + }, + { + "start": 44.549, + "duration": 0.0, + "text": ">> That's true. So truly now, he will be" + }, + { + "start": 44.559, + "duration": 0.0, + "text": ">> That's true. So truly now, he will be completely<00:00:45.200> undefeated.<00:00:46.559> Everybody,<00:00:47.039> Ryan" + }, + { + "start": 47.43, + "duration": 0.0, + "text": "completely undefeated. Everybody, Ryan" + }, + { + "start": 47.44, + "duration": 0.0, + "text": "completely undefeated. Everybody, Ryan Flurry." + }, + { + "start": 55.36, + "duration": 0.0, + "text": ">> All<00:00:55.440> right.<00:00:55.840> Uh,<00:00:56.239> well,<00:00:56.399> thank<00:00:56.559> you,<00:00:56.800> Sam." + }, + { + "start": 57.189, + "duration": 0.0, + "text": ">> All right. Uh, well, thank you, Sam." + }, + { + "start": 57.199, + "duration": 0.0, + "text": ">> All right. Uh, well, thank you, Sam. That<00:00:57.440> was<00:00:57.520> a<00:00:57.840> great<00:00:58.079> introduction.<00:00:58.480> It<00:00:58.640> was" + }, + { + "start": 58.709, + "duration": 0.0, + "text": "That was a great introduction. It was" + }, + { + "start": 58.719, + "duration": 0.0, + "text": "That was a great introduction. It was not<00:00:58.800> a<00:00:58.960> real<00:00:59.120> moose,<00:00:59.600> by<00:00:59.680> the<00:00:59.840> way.<00:01:00.000> It<00:01:00.239> was" + }, + { + "start": 60.31, + "duration": 0.0, + "text": "not a real moose, by the way. It was" + }, + { + "start": 60.32, + "duration": 0.0, + "text": "not a real moose, by the way. It was fake<00:01:00.640> for<00:01:00.879> for<00:01:01.199> those<00:01:01.520> watching<00:01:01.840> online.<00:01:02.480> Um," + }, + { + "start": 63.349, + "duration": 0.0, + "text": "fake for for those watching online. Um," + }, + { + "start": 63.359, + "duration": 0.0, + "text": "fake for for those watching online. Um, so,<00:01:03.760> hi<00:01:04.000> everyone.<00:01:04.720> Uh,<00:01:05.119> thanks<00:01:05.360> for<00:01:05.519> being" + }, + { + "start": 65.91, + "duration": 0.0, + "text": "so, hi everyone. Uh, thanks for being" + }, + { + "start": 65.92, + "duration": 0.0, + "text": "so, hi everyone. Uh, thanks for being here<00:01:06.240> and<00:01:06.400> and<00:01:06.799> coming<00:01:07.040> to<00:01:07.200> listen.<00:01:07.520> Uh,<00:01:07.680> thank" + }, + { + "start": 67.83, + "duration": 0.0, + "text": "here and and coming to listen. Uh, thank" + }, + { + "start": 67.84, + "duration": 0.0, + "text": "here and and coming to listen. Uh, thank you<00:01:07.920> to<00:01:08.080> Sam,<00:01:08.479> Sander,<00:01:08.799> and<00:01:08.960> Charlie<00:01:09.360> for" + }, + { + "start": 69.67, + "duration": 0.0, + "text": "you to Sam, Sander, and Charlie for" + }, + { + "start": 69.68, + "duration": 0.0, + "text": "you to Sam, Sander, and Charlie for organizing<00:01:10.240> this.<00:01:10.640> This<00:01:10.880> has<00:01:11.040> been,<00:01:11.920> uh," + }, + { + "start": 72.149, + "duration": 0.0, + "text": "organizing this. This has been, uh," + }, + { + "start": 72.159, + "duration": 0.0, + "text": "organizing this. This has been, uh, absolutely<00:01:12.640> amazing.<00:01:13.040> Like<00:01:13.200> the<00:01:13.439> best<00:01:13.600> energy" + }, + { + "start": 73.91, + "duration": 0.0, + "text": "absolutely amazing. Like the best energy" + }, + { + "start": 73.92, + "duration": 0.0, + "text": "absolutely amazing. Like the best energy of<00:01:14.080> any<00:01:14.240> conference<00:01:14.560> I've<00:01:14.799> been<00:01:14.880> to<00:01:15.280> by<00:01:15.600> far." + }, + { + "start": 75.99, + "duration": 0.0, + "text": "of any conference I've been to by far." + }, + { + "start": 76.0, + "duration": 0.0, + "text": "of any conference I've been to by far. So,<00:01:16.479> thank<00:01:16.640> you<00:01:16.799> guys<00:01:16.960> so<00:01:17.200> much.<00:01:17.520> Um,<00:01:18.960> yes," + }, + { + "start": 79.67, + "duration": 0.0, + "text": "So, thank you guys so much. Um, yes," + }, + { + "start": 79.68, + "duration": 0.0, + "text": "So, thank you guys so much. Um, yes, clap<00:01:20.000> for<00:01:20.159> that." + }, + { + "start": 84.88, + "duration": 0.0, + "text": "And<00:01:25.280> uh<00:01:25.680> I'm<00:01:26.000> honored<00:01:26.320> to<00:01:26.560> be<00:01:26.720> here<00:01:26.880> because" + }, + { + "start": 87.109, + "duration": 0.0, + "text": "And uh I'm honored to be here because" + }, + { + "start": 87.119, + "duration": 0.0, + "text": "And uh I'm honored to be here because there's<00:01:27.360> so<00:01:27.520> many<00:01:27.680> people<00:01:27.840> you've<00:01:28.080> brought" + }, + { + "start": 88.31, + "duration": 0.0, + "text": "there's so many people you've brought" + }, + { + "start": 88.32, + "duration": 0.0, + "text": "there's so many people you've brought that<00:01:28.560> I<00:01:28.799> really<00:01:29.040> respect.<00:01:29.520> So<00:01:29.680> I'm<00:01:30.080> I<00:01:30.320> it's" + }, + { + "start": 90.55, + "duration": 0.0, + "text": "that I really respect. So I'm I it's" + }, + { + "start": 90.56, + "duration": 0.0, + "text": "that I really respect. So I'm I it's like<00:01:31.119> dream<00:01:31.439> come<00:01:31.600> true<00:01:31.840> to<00:01:32.000> be<00:01:32.079> here<00:01:32.320> and" + }, + { + "start": 92.55, + "duration": 0.0, + "text": "like dream come true to be here and" + }, + { + "start": 92.56, + "duration": 0.0, + "text": "like dream come true to be here and speak<00:01:32.799> alongside<00:01:33.280> them.<00:01:33.520> So<00:01:34.400> uh<00:01:34.560> for<00:01:34.720> those" + }, + { + "start": 94.87, + "duration": 0.0, + "text": "speak alongside them. So uh for those" + }, + { + "start": 94.88, + "duration": 0.0, + "text": "speak alongside them. So uh for those who've<00:01:35.200> not<00:01:35.759> uh<00:01:35.920> who<00:01:36.159> have<00:01:36.240> not<00:01:36.400> yet<00:01:36.640> met,<00:01:36.880> my" + }, + { + "start": 97.03, + "duration": 0.0, + "text": "who've not uh who have not yet met, my" + }, + { + "start": 97.04, + "duration": 0.0, + "text": "who've not uh who have not yet met, my name<00:01:37.119> is<00:01:37.200> Ryan<00:01:37.520> Flurry.<00:01:38.320> Um<00:01:38.799> I<00:01:39.119> work<00:01:39.280> on<00:01:39.439> the" + }, + { + "start": 99.59, + "duration": 0.0, + "text": "name is Ryan Flurry. Um I work on the" + }, + { + "start": 99.6, + "duration": 0.0, + "text": "name is Ryan Flurry. Um I work on the RAD<00:01:39.920> debugger,<00:01:40.320> which<00:01:40.479> is<00:01:40.560> the<00:01:40.720> project" + }, + { + "start": 101.109, + "duration": 0.0, + "text": "RAD debugger, which is the project" + }, + { + "start": 101.119, + "duration": 0.0, + "text": "RAD debugger, which is the project originally<00:01:41.600> started<00:01:41.840> by<00:01:41.920> Rad<00:01:42.240> Game<00:01:42.479> tools." + }, + { + "start": 102.71, + "duration": 0.0, + "text": "originally started by Rad Game tools." + }, + { + "start": 102.72, + "duration": 0.0, + "text": "originally started by Rad Game tools. You<00:01:42.799> may<00:01:42.880> have<00:01:43.040> heard<00:01:43.119> of<00:01:43.200> it<00:01:43.680> from<00:01:43.920> like<00:01:44.240> 2013" + }, + { + "start": 104.87, + "duration": 0.0, + "text": "You may have heard of it from like 2013" + }, + { + "start": 104.88, + "duration": 0.0, + "text": "You may have heard of it from like 2013 or<00:01:45.040> whatever<00:01:45.520> when<00:01:45.759> it<00:01:45.920> started<00:01:46.240> when<00:01:46.399> I<00:01:46.640> was" + }, + { + "start": 106.71, + "duration": 0.0, + "text": "or whatever when it started when I was" + }, + { + "start": 106.72, + "duration": 0.0, + "text": "or whatever when it started when I was like<00:01:47.280> 15<00:01:47.680> or<00:01:47.920> something.<00:01:48.640> Um<00:01:49.280> it's<00:01:49.520> gone" + }, + { + "start": 109.749, + "duration": 0.0, + "text": "like 15 or something. Um it's gone" + }, + { + "start": 109.759, + "duration": 0.0, + "text": "like 15 or something. Um it's gone through<00:01:50.320> some<00:01:50.560> some<00:01:51.119> successive<00:01:51.680> teams.<00:01:52.159> Um" + }, + { + "start": 113.429, + "duration": 0.0, + "text": "through some some successive teams. Um" + }, + { + "start": 113.439, + "duration": 0.0, + "text": "through some some successive teams. Um uh<00:01:53.920> but<00:01:54.320> uh<00:01:54.479> RAD<00:01:54.720> game<00:01:54.880> tool<00:01:55.040> is<00:01:55.200> now<00:01:55.360> part<00:01:55.439> of" + }, + { + "start": 115.51, + "duration": 0.0, + "text": "uh but uh RAD game tool is now part of" + }, + { + "start": 115.52, + "duration": 0.0, + "text": "uh but uh RAD game tool is now part of Epic<00:01:55.840> Games.<00:01:56.159> If<00:01:56.320> it<00:01:56.479> needs<00:01:56.640> to<00:01:56.720> be<00:01:56.880> said" + }, + { + "start": 117.109, + "duration": 0.0, + "text": "Epic Games. If it needs to be said" + }, + { + "start": 117.119, + "duration": 0.0, + "text": "Epic Games. If it needs to be said though,<00:01:57.360> I'm<00:01:57.520> not<00:01:57.680> here<00:01:57.759> to<00:01:57.920> represent<00:01:58.240> them." + }, + { + "start": 118.469, + "duration": 0.0, + "text": "though, I'm not here to represent them." + }, + { + "start": 118.479, + "duration": 0.0, + "text": "though, I'm not here to represent them. I'm<00:01:58.719> here<00:01:58.880> on<00:01:59.040> my<00:01:59.119> own<00:01:59.520> uh<00:01:59.680> own<00:01:59.840> behalf.<00:02:00.399> So" + }, + { + "start": 121.429, + "duration": 0.0, + "text": "I'm here on my own uh own behalf. So" + }, + { + "start": 121.439, + "duration": 0.0, + "text": "I'm here on my own uh own behalf. So while<00:02:01.680> working<00:02:01.920> on<00:02:02.159> on<00:02:02.640> uh<00:02:02.719> the<00:02:02.880> Rad<00:02:03.119> debugger," + }, + { + "start": 123.429, + "duration": 0.0, + "text": "while working on on uh the Rad debugger," + }, + { + "start": 123.439, + "duration": 0.0, + "text": "while working on on uh the Rad debugger, I<00:02:03.520> tried<00:02:03.680> to<00:02:03.759> prioritize<00:02:04.320> something<00:02:04.880> that" + }, + { + "start": 125.19, + "duration": 0.0, + "text": "I tried to prioritize something that" + }, + { + "start": 125.2, + "duration": 0.0, + "text": "I tried to prioritize something that I've<00:02:05.360> always<00:02:05.520> felt<00:02:05.759> is<00:02:06.000> missing<00:02:06.320> from" + }, + { + "start": 126.55, + "duration": 0.0, + "text": "I've always felt is missing from" + }, + { + "start": 126.56, + "duration": 0.0, + "text": "I've always felt is missing from programming<00:02:07.040> tooling,<00:02:07.439> which<00:02:07.600> is<00:02:08.000> uh<00:02:08.160> good" + }, + { + "start": 128.389, + "duration": 0.0, + "text": "programming tooling, which is uh good" + }, + { + "start": 128.399, + "duration": 0.0, + "text": "programming tooling, which is uh good visual<00:02:08.800> feedback.<00:02:09.599> So<00:02:10.319> having<00:02:10.800> open" + }, + { + "start": 131.11, + "duration": 0.0, + "text": "visual feedback. So having open" + }, + { + "start": 131.12, + "duration": 0.0, + "text": "visual feedback. So having open visibility<00:02:11.520> into<00:02:11.760> a<00:02:12.000> system.<00:02:12.640> Um<00:02:13.200> I've<00:02:13.440> always" + }, + { + "start": 133.589, + "duration": 0.0, + "text": "visibility into a system. Um I've always" + }, + { + "start": 133.599, + "duration": 0.0, + "text": "visibility into a system. Um I've always felt<00:02:13.760> that<00:02:13.920> computers<00:02:14.239> are<00:02:14.400> very<00:02:14.560> opaque." + }, + { + "start": 136.07, + "duration": 0.0, + "text": "felt that computers are very opaque." + }, + { + "start": 136.08, + "duration": 0.0, + "text": "felt that computers are very opaque. Um,<00:02:16.720> coming<00:02:16.959> from<00:02:17.120> game<00:02:17.360> development,<00:02:18.160> uh," + }, + { + "start": 138.949, + "duration": 0.0, + "text": "Um, coming from game development, uh," + }, + { + "start": 138.959, + "duration": 0.0, + "text": "Um, coming from game development, uh, it's<00:02:19.440> really<00:02:19.680> easy<00:02:19.920> to<00:02:20.080> learn<00:02:20.239> when<00:02:20.480> you<00:02:20.879> are" + }, + { + "start": 141.11, + "duration": 0.0, + "text": "it's really easy to learn when you are" + }, + { + "start": 141.12, + "duration": 0.0, + "text": "it's really easy to learn when you are always<00:02:21.360> debugging<00:02:21.760> things<00:02:21.920> that<00:02:22.160> it's<00:02:22.319> very" + }, + { + "start": 142.47, + "duration": 0.0, + "text": "always debugging things that it's very" + }, + { + "start": 142.48, + "duration": 0.0, + "text": "always debugging things that it's very useful.<00:02:22.800> We<00:02:22.959> saw<00:02:23.120> in<00:02:23.440> Dennis's<00:02:24.000> talk<00:02:24.160> that" + }, + { + "start": 144.309, + "duration": 0.0, + "text": "useful. We saw in Dennis's talk that" + }, + { + "start": 144.319, + "duration": 0.0, + "text": "useful. We saw in Dennis's talk that it's<00:02:24.560> like<00:02:24.720> if<00:02:24.959> you're<00:02:25.040> looking<00:02:25.200> at" + }, + { + "start": 145.51, + "duration": 0.0, + "text": "it's like if you're looking at" + }, + { + "start": 145.52, + "duration": 0.0, + "text": "it's like if you're looking at timestamps,<00:02:26.480> it's<00:02:26.800> totally<00:02:27.200> different" + }, + { + "start": 147.35, + "duration": 0.0, + "text": "timestamps, it's totally different" + }, + { + "start": 147.36, + "duration": 0.0, + "text": "timestamps, it's totally different experience<00:02:27.599> than<00:02:27.840> looking<00:02:28.000> at<00:02:28.080> a<00:02:28.239> profile<00:02:28.560> at" + }, + { + "start": 148.63, + "duration": 0.0, + "text": "experience than looking at a profile at" + }, + { + "start": 148.64, + "duration": 0.0, + "text": "experience than looking at a profile at a<00:02:28.800> flame<00:02:29.120> graph,<00:02:29.360> right?<00:02:29.520> It's<00:02:29.760> completely" + }, + { + "start": 150.07, + "duration": 0.0, + "text": "a flame graph, right? It's completely" + }, + { + "start": 150.08, + "duration": 0.0, + "text": "a flame graph, right? It's completely different<00:02:30.319> experience.<00:02:31.360> Um,<00:02:31.920> and<00:02:32.400> game" + }, + { + "start": 152.63, + "duration": 0.0, + "text": "different experience. Um, and game" + }, + { + "start": 152.64, + "duration": 0.0, + "text": "different experience. Um, and game developers,<00:02:33.200> you<00:02:33.519> always<00:02:33.840> are<00:02:34.080> visualizing" + }, + { + "start": 154.55, + "duration": 0.0, + "text": "developers, you always are visualizing" + }, + { + "start": 154.56, + "duration": 0.0, + "text": "developers, you always are visualizing things.<00:02:34.879> You're<00:02:35.120> always<00:02:35.280> trying<00:02:35.519> to<00:02:35.680> get<00:02:35.920> a" + }, + { + "start": 156.07, + "duration": 0.0, + "text": "things. You're always trying to get a" + }, + { + "start": 156.08, + "duration": 0.0, + "text": "things. You're always trying to get a different<00:02:36.319> view<00:02:36.480> into<00:02:36.720> your<00:02:36.879> data<00:02:37.040> to<00:02:37.200> make" + }, + { + "start": 157.35, + "duration": 0.0, + "text": "different view into your data to make" + }, + { + "start": 157.36, + "duration": 0.0, + "text": "different view into your data to make something<00:02:37.599> clear." + }, + { + "start": 159.35, + "duration": 0.0, + "text": "something clear." + }, + { + "start": 159.36, + "duration": 0.0, + "text": "something clear. Um,<00:02:40.480> and<00:02:40.800> we<00:02:41.120> use<00:02:41.360> those<00:02:41.680> visualization<00:02:42.239> tools" + }, + { + "start": 162.55, + "duration": 0.0, + "text": "Um, and we use those visualization tools" + }, + { + "start": 162.56, + "duration": 0.0, + "text": "Um, and we use those visualization tools to<00:02:42.879> create<00:02:43.599> better<00:02:44.000> software<00:02:45.120> more" + }, + { + "start": 165.67, + "duration": 0.0, + "text": "to create better software more" + }, + { + "start": 165.68, + "duration": 0.0, + "text": "to create better software more efficiently,<00:02:46.080> which<00:02:46.239> is<00:02:46.319> why<00:02:46.480> we're<00:02:46.640> all" + }, + { + "start": 166.71, + "duration": 0.0, + "text": "efficiently, which is why we're all" + }, + { + "start": 166.72, + "duration": 0.0, + "text": "efficiently, which is why we're all here,<00:02:46.959> right?<00:02:47.760> Um,<00:02:48.800> so<00:02:49.760> in<00:02:50.000> other<00:02:50.160> words,<00:02:50.400> it's" + }, + { + "start": 170.55, + "duration": 0.0, + "text": "here, right? Um, so in other words, it's" + }, + { + "start": 170.56, + "duration": 0.0, + "text": "here, right? Um, so in other words, it's it's<00:02:50.800> useful<00:02:51.120> when<00:02:51.760> cracking<00:02:52.080> the<00:02:52.319> code.<00:02:52.879> I" + }, + { + "start": 173.19, + "duration": 0.0, + "text": "it's useful when cracking the code. I" + }, + { + "start": 173.2, + "duration": 0.0, + "text": "it's useful when cracking the code. I did<00:02:53.360> the<00:02:53.599> title<00:02:53.920> thing.<00:02:54.319> So" + }, + { + "start": 175.91, + "duration": 0.0, + "text": "did the title thing. So" + }, + { + "start": 175.92, + "duration": 0.0, + "text": "did the title thing. So um<00:02:56.560> so<00:02:56.720> there<00:02:56.959> are<00:02:57.040> many<00:02:57.280> talks<00:02:58.000> uh<00:02:58.080> or" + }, + { + "start": 178.39, + "duration": 0.0, + "text": "um so there are many talks uh or" + }, + { + "start": 178.4, + "duration": 0.0, + "text": "um so there are many talks uh or resources<00:02:59.120> on<00:02:59.519> debuggers<00:03:00.319> but<00:03:00.879> um<00:03:01.120> my" + }, + { + "start": 181.35, + "duration": 0.0, + "text": "resources on debuggers but um my" + }, + { + "start": 181.36, + "duration": 0.0, + "text": "resources on debuggers but um my impression<00:03:01.599> is<00:03:01.760> that<00:03:01.920> not<00:03:02.159> many<00:03:02.319> of<00:03:02.400> them" + }, + { + "start": 182.55, + "duration": 0.0, + "text": "impression is that not many of them" + }, + { + "start": 182.56, + "duration": 0.0, + "text": "impression is that not many of them focus<00:03:02.879> on<00:03:03.599> this<00:03:03.840> visualization<00:03:04.560> problem<00:03:05.599> even" + }, + { + "start": 185.83, + "duration": 0.0, + "text": "focus on this visualization problem even" + }, + { + "start": 185.84, + "duration": 0.0, + "text": "focus on this visualization problem even though<00:03:06.000> I<00:03:06.159> would<00:03:06.319> claim<00:03:06.720> it's<00:03:07.599> perhaps<00:03:08.000> the" + }, + { + "start": 188.229, + "duration": 0.0, + "text": "though I would claim it's perhaps the" + }, + { + "start": 188.239, + "duration": 0.0, + "text": "though I would claim it's perhaps the most<00:03:08.480> important<00:03:08.720> problem<00:03:08.879> that<00:03:09.120> a<00:03:09.280> debugger" + }, + { + "start": 189.67, + "duration": 0.0, + "text": "most important problem that a debugger" + }, + { + "start": 189.68, + "duration": 0.0, + "text": "most important problem that a debugger needs<00:03:09.840> to<00:03:10.000> solve<00:03:10.239> is<00:03:10.480> is<00:03:10.800> quick<00:03:11.200> good" + }, + { + "start": 191.35, + "duration": 0.0, + "text": "needs to solve is is quick good" + }, + { + "start": 191.36, + "duration": 0.0, + "text": "needs to solve is is quick good visualization<00:03:12.080> flexible<00:03:12.480> visualization" + }, + { + "start": 193.67, + "duration": 0.0, + "text": "visualization flexible visualization" + }, + { + "start": 193.68, + "duration": 0.0, + "text": "visualization flexible visualization into<00:03:14.000> your<00:03:14.159> data.<00:03:15.440> Um<00:03:15.760> so<00:03:16.080> I'm<00:03:16.319> going<00:03:16.400> to" + }, + { + "start": 196.47, + "duration": 0.0, + "text": "into your data. Um so I'm going to" + }, + { + "start": 196.48, + "duration": 0.0, + "text": "into your data. Um so I'm going to present<00:03:16.720> all<00:03:16.879> the<00:03:16.959> work<00:03:17.120> that<00:03:17.280> I've<00:03:17.440> done<00:03:17.599> on" + }, + { + "start": 197.83, + "duration": 0.0, + "text": "present all the work that I've done on" + }, + { + "start": 197.84, + "duration": 0.0, + "text": "present all the work that I've done on that<00:03:18.000> problem<00:03:18.640> to<00:03:18.800> you<00:03:18.879> all<00:03:19.120> today.<00:03:20.080> Now,<00:03:20.319> if" + }, + { + "start": 200.47, + "duration": 0.0, + "text": "that problem to you all today. Now, if" + }, + { + "start": 200.48, + "duration": 0.0, + "text": "that problem to you all today. Now, if you<00:03:20.560> aren't<00:03:20.800> familiar<00:03:21.040> with<00:03:21.200> debuggers,<00:03:22.319> um," + }, + { + "start": 202.47, + "duration": 0.0, + "text": "you aren't familiar with debuggers, um," + }, + { + "start": 202.48, + "duration": 0.0, + "text": "you aren't familiar with debuggers, um, or<00:03:22.720> if<00:03:22.879> you<00:03:22.959> don't<00:03:23.120> know<00:03:23.200> what<00:03:23.360> I<00:03:23.519> mean<00:03:23.760> by" + }, + { + "start": 204.07, + "duration": 0.0, + "text": "or if you don't know what I mean by" + }, + { + "start": 204.08, + "duration": 0.0, + "text": "or if you don't know what I mean by visualization<00:03:24.720> using<00:03:24.959> a<00:03:25.120> debugger,<00:03:26.319> uh,<00:03:26.400> I" + }, + { + "start": 206.55, + "duration": 0.0, + "text": "visualization using a debugger, uh, I" + }, + { + "start": 206.56, + "duration": 0.0, + "text": "visualization using a debugger, uh, I have<00:03:26.640> some<00:03:26.800> videos<00:03:27.040> of<00:03:27.120> the<00:03:27.200> RAD<00:03:27.440> debugger" + }, + { + "start": 207.83, + "duration": 0.0, + "text": "have some videos of the RAD debugger" + }, + { + "start": 207.84, + "duration": 0.0, + "text": "have some videos of the RAD debugger that<00:03:28.000> I'd<00:03:28.239> like<00:03:28.319> to<00:03:28.560> share<00:03:28.800> to<00:03:28.959> set<00:03:29.120> the<00:03:29.360> stage" + }, + { + "start": 209.589, + "duration": 0.0, + "text": "that I'd like to share to set the stage" + }, + { + "start": 209.599, + "duration": 0.0, + "text": "that I'd like to share to set the stage for<00:03:30.000> everything<00:03:30.319> I'm<00:03:30.560> going<00:03:30.640> to<00:03:30.720> talk<00:03:30.879> about." + }, + { + "start": 212.949, + "duration": 0.0, + "text": "for everything I'm going to talk about." + }, + { + "start": 212.959, + "duration": 0.0, + "text": "for everything I'm going to talk about. So,<00:03:33.680> uh,<00:03:33.920> first<00:03:34.159> thing,<00:03:34.400> if<00:03:34.640> I've<00:03:34.799> got<00:03:35.040> I've" + }, + { + "start": 215.27, + "duration": 0.0, + "text": "So, uh, first thing, if I've got I've" + }, + { + "start": 215.28, + "duration": 0.0, + "text": "So, uh, first thing, if I've got I've got<00:03:35.360> my<00:03:35.519> little<00:03:35.680> game<00:03:36.000> project,<00:03:36.879> shameless" + }, + { + "start": 217.35, + "duration": 0.0, + "text": "got my little game project, shameless" + }, + { + "start": 217.36, + "duration": 0.0, + "text": "got my little game project, shameless plug,<00:03:38.080> it's<00:03:38.319> not<00:03:38.480> really<00:03:38.959> special<00:03:39.280> yet,<00:03:39.519> but," + }, + { + "start": 220.229, + "duration": 0.0, + "text": "plug, it's not really special yet, but," + }, + { + "start": 220.239, + "duration": 0.0, + "text": "plug, it's not really special yet, but, uh,<00:03:40.400> you<00:03:40.560> know,<00:03:40.640> if<00:03:40.799> I've<00:03:40.959> got<00:03:41.040> this<00:03:41.280> program," + }, + { + "start": 221.589, + "duration": 0.0, + "text": "uh, you know, if I've got this program," + }, + { + "start": 221.599, + "duration": 0.0, + "text": "uh, you know, if I've got this program, I<00:03:41.760> can<00:03:41.840> do<00:03:42.000> things<00:03:42.159> in<00:03:42.319> the<00:03:42.480> program.<00:03:43.599> Um" + }, + { + "start": 225.11, + "duration": 0.0, + "text": "I can do things in the program. Um" + }, + { + "start": 225.12, + "duration": 0.0, + "text": "I can do things in the program. Um if<00:03:45.360> I<00:03:45.519> want<00:03:45.599> to<00:03:45.760> run<00:03:45.920> that<00:03:46.080> from<00:03:46.239> within<00:03:46.400> the" + }, + { + "start": 226.55, + "duration": 0.0, + "text": "if I want to run that from within the" + }, + { + "start": 226.56, + "duration": 0.0, + "text": "if I want to run that from within the debugger<00:03:46.959> in<00:03:47.120> the<00:03:47.200> case<00:03:47.360> of<00:03:47.440> rad<00:03:47.680> debugger<00:03:47.920> I" + }, + { + "start": 227.99, + "duration": 0.0, + "text": "debugger in the case of rad debugger I" + }, + { + "start": 228.0, + "duration": 0.0, + "text": "debugger in the case of rad debugger I can<00:03:48.080> do<00:03:48.159> radg<00:03:48.959> same<00:03:49.200> command<00:03:49.519> line<00:03:50.159> opens<00:03:50.480> up" + }, + { + "start": 230.55, + "duration": 0.0, + "text": "can do radg same command line opens up" + }, + { + "start": 230.56, + "duration": 0.0, + "text": "can do radg same command line opens up the<00:03:50.720> debugger<00:03:51.040> I<00:03:51.200> can<00:03:51.280> either<00:03:51.519> launch<00:03:51.840> the" + }, + { + "start": 232.07, + "duration": 0.0, + "text": "the debugger I can either launch the" + }, + { + "start": 232.08, + "duration": 0.0, + "text": "the debugger I can either launch the program<00:03:53.040> from<00:03:53.920> like<00:03:54.319> uh<00:03:54.400> with<00:03:54.560> the<00:03:54.640> debugger" + }, + { + "start": 235.11, + "duration": 0.0, + "text": "program from like uh with the debugger" + }, + { + "start": 235.12, + "duration": 0.0, + "text": "program from like uh with the debugger attached" + }, + { + "start": 236.789, + "duration": 0.0, + "text": "attached" + }, + { + "start": 236.799, + "duration": 0.0, + "text": "attached um<00:03:58.239> I<00:03:58.480> can<00:03:58.560> also<00:03:58.799> step<00:03:59.040> into<00:03:59.200> the<00:03:59.360> program" + }, + { + "start": 239.67, + "duration": 0.0, + "text": "um I can also step into the program" + }, + { + "start": 239.68, + "duration": 0.0, + "text": "um I can also step into the program these<00:03:59.840> are<00:04:00.000> all<00:04:00.159> very<00:04:00.319> common<00:04:00.560> debugger" + }, + { + "start": 240.949, + "duration": 0.0, + "text": "these are all very common debugger" + }, + { + "start": 240.959, + "duration": 0.0, + "text": "these are all very common debugger features<00:04:01.280> right<00:04:01.439> I<00:04:01.599> can<00:04:01.680> step<00:04:01.840> through<00:04:02.080> the" + }, + { + "start": 242.229, + "duration": 0.0, + "text": "features right I can step through the" + }, + { + "start": 242.239, + "duration": 0.0, + "text": "features right I can step through the code<00:04:03.280> um" + }, + { + "start": 245.35, + "duration": 0.0, + "text": "code um" + }, + { + "start": 245.36, + "duration": 0.0, + "text": "code um so<00:04:05.519> in<00:04:05.680> that<00:04:05.840> case<00:04:06.000> I'm<00:04:06.159> stepping<00:04:06.319> over<00:04:06.560> lines" + }, + { + "start": 246.789, + "duration": 0.0, + "text": "so in that case I'm stepping over lines" + }, + { + "start": 246.799, + "duration": 0.0, + "text": "so in that case I'm stepping over lines of<00:04:06.879> source<00:04:07.200> code<00:04:07.760> I<00:04:07.920> can<00:04:08.080> evaluate<00:04:08.560> things<00:04:08.720> if" + }, + { + "start": 248.949, + "duration": 0.0, + "text": "of source code I can evaluate things if" + }, + { + "start": 248.959, + "duration": 0.0, + "text": "of source code I can evaluate things if I<00:04:09.120> hover<00:04:09.360> them" + }, + { + "start": 252.48, + "duration": 0.0, + "text": "uh<00:04:12.720> so<00:04:12.879> if<00:04:13.120> I<00:04:13.280> put<00:04:13.680> uh<00:04:13.760> I<00:04:14.000> can<00:04:14.159> put<00:04:14.239> a<00:04:14.400> variable" + }, + { + "start": 254.869, + "duration": 0.0, + "text": "uh so if I put uh I can put a variable" + }, + { + "start": 254.879, + "duration": 0.0, + "text": "uh so if I put uh I can put a variable into<00:04:15.200> the<00:04:15.439> watch<00:04:15.760> window<00:04:16.000> here.<00:04:17.040> Uh<00:04:17.759> so<00:04:18.000> in" + }, + { + "start": 258.15, + "duration": 0.0, + "text": "into the watch window here. Uh so in" + }, + { + "start": 258.16, + "duration": 0.0, + "text": "into the watch window here. Uh so in this<00:04:18.239> case<00:04:18.400> it's<00:04:18.560> the<00:04:18.720> global<00:04:19.040> shared<00:04:19.280> and<00:04:19.440> if" + }, + { + "start": 259.59, + "duration": 0.0, + "text": "this case it's the global shared and if" + }, + { + "start": 259.6, + "duration": 0.0, + "text": "this case it's the global shared and if I<00:04:19.680> expand<00:04:19.919> that<00:04:20.160> you<00:04:20.320> can<00:04:20.400> see<00:04:20.479> as<00:04:20.639> I<00:04:20.799> step" + }, + { + "start": 260.949, + "duration": 0.0, + "text": "I expand that you can see as I step" + }, + { + "start": 260.959, + "duration": 0.0, + "text": "I expand that you can see as I step through<00:04:21.120> the<00:04:21.280> code<00:04:21.440> you<00:04:21.680> see<00:04:21.840> things<00:04:22.079> change" + }, + { + "start": 262.39, + "duration": 0.0, + "text": "through the code you see things change" + }, + { + "start": 262.4, + "duration": 0.0, + "text": "through the code you see things change live.<00:04:22.800> It's<00:04:23.040> very<00:04:23.759> very<00:04:24.080> common<00:04:24.320> debugger<00:04:25.280> um" + }, + { + "start": 265.59, + "duration": 0.0, + "text": "live. It's very very common debugger um" + }, + { + "start": 265.6, + "duration": 0.0, + "text": "live. It's very very common debugger um features<00:04:26.080> really.<00:04:27.280> Um<00:04:28.080> debuggers<00:04:28.720> also<00:04:29.040> tend" + }, + { + "start": 269.27, + "duration": 0.0, + "text": "features really. Um debuggers also tend" + }, + { + "start": 269.28, + "duration": 0.0, + "text": "features really. Um debuggers also tend to<00:04:29.440> have<00:04:29.600> like<00:04:29.840> features<00:04:30.240> to<00:04:31.199> uh<00:04:31.520> navigate<00:04:31.919> to" + }, + { + "start": 272.15, + "duration": 0.0, + "text": "to have like features to uh navigate to" + }, + { + "start": 272.16, + "duration": 0.0, + "text": "to have like features to uh navigate to different<00:04:32.320> parts<00:04:32.560> of<00:04:32.639> the<00:04:32.880> code.<00:04:33.360> Um<00:04:33.919> so<00:04:34.080> I<00:04:34.320> can" + }, + { + "start": 274.39, + "duration": 0.0, + "text": "different parts of the code. Um so I can" + }, + { + "start": 274.4, + "duration": 0.0, + "text": "different parts of the code. Um so I can go<00:04:34.560> to<00:04:34.800> some<00:04:35.360> to<00:04:35.600> some<00:04:35.840> function<00:04:36.160> and<00:04:36.320> and" + }, + { + "start": 276.71, + "duration": 0.0, + "text": "go to some to some function and and" + }, + { + "start": 276.72, + "duration": 0.0, + "text": "go to some to some function and and place<00:04:36.880> a<00:04:37.040> break<00:04:37.280> point<00:04:37.600> say<00:04:37.840> stop<00:04:38.080> at<00:04:38.240> this" + }, + { + "start": 278.39, + "duration": 0.0, + "text": "place a break point say stop at this" + }, + { + "start": 278.4, + "duration": 0.0, + "text": "place a break point say stop at this line<00:04:38.560> of<00:04:38.720> source<00:04:38.960> code<00:04:40.240> and<00:04:40.479> so<00:04:40.639> on.<00:04:40.880> Right?" + }, + { + "start": 281.11, + "duration": 0.0, + "text": "line of source code and so on. Right?" + }, + { + "start": 281.12, + "duration": 0.0, + "text": "line of source code and so on. Right? That's<00:04:41.360> like<00:04:42.560> pretty<00:04:42.880> basic<00:04:43.120> debugger<00:04:43.600> stuff." + }, + { + "start": 284.71, + "duration": 0.0, + "text": "That's like pretty basic debugger stuff." + }, + { + "start": 284.72, + "duration": 0.0, + "text": "That's like pretty basic debugger stuff. Um,<00:04:45.600> that's<00:04:45.840> like<00:04:46.000> this<00:04:46.160> is<00:04:46.240> what<00:04:46.320> it<00:04:46.479> looks" + }, + { + "start": 286.55, + "duration": 0.0, + "text": "Um, that's like this is what it looks" + }, + { + "start": 286.56, + "duration": 0.0, + "text": "Um, that's like this is what it looks like<00:04:46.720> to<00:04:46.880> use<00:04:46.960> one,<00:04:47.280> right?" + }, + { + "start": 290.8, + "duration": 0.0, + "text": "Google<00:04:51.120> Slides<00:04:51.360> is<00:04:51.520> weird<00:04:51.759> with<00:04:52.080> videos." + }, + { + "start": 292.55, + "duration": 0.0, + "text": "Google Slides is weird with videos." + }, + { + "start": 292.56, + "duration": 0.0, + "text": "Google Slides is weird with videos. Okay,<00:04:52.800> so<00:04:53.040> let's<00:04:53.199> say<00:04:53.280> I've<00:04:53.440> got<00:04:53.520> a<00:04:53.680> crash<00:04:53.840> in" + }, + { + "start": 294.07, + "duration": 0.0, + "text": "Okay, so let's say I've got a crash in" + }, + { + "start": 294.08, + "duration": 0.0, + "text": "Okay, so let's say I've got a crash in my<00:04:54.160> game.<00:04:54.800> Um,<00:04:55.120> I'm<00:04:55.440> hooked<00:04:55.759> up<00:04:55.840> to<00:04:56.000> my<00:04:56.160> game.<00:04:56.320> I" + }, + { + "start": 296.469, + "duration": 0.0, + "text": "my game. Um, I'm hooked up to my game. I" + }, + { + "start": 296.479, + "duration": 0.0, + "text": "my game. Um, I'm hooked up to my game. I hit<00:04:56.639> F5<00:04:57.280> or<00:04:57.600> I<00:04:57.919> press<00:04:58.160> the<00:04:58.479> green<00:04:58.639> arrow.<00:04:58.960> F5<00:04:59.280> is" + }, + { + "start": 299.43, + "duration": 0.0, + "text": "hit F5 or I press the green arrow. F5 is" + }, + { + "start": 299.44, + "duration": 0.0, + "text": "hit F5 or I press the green arrow. F5 is the<00:04:59.520> hotkey<00:04:59.759> for<00:04:59.919> that.<00:05:00.400> Uh,<00:05:00.560> the<00:05:00.720> debugger" + }, + { + "start": 301.11, + "duration": 0.0, + "text": "the hotkey for that. Uh, the debugger" + }, + { + "start": 301.12, + "duration": 0.0, + "text": "the hotkey for that. Uh, the debugger will<00:05:01.280> catch<00:05:01.440> that.<00:05:01.680> It'll<00:05:02.000> show<00:05:02.080> me<00:05:02.240> where" + }, + { + "start": 302.469, + "duration": 0.0, + "text": "will catch that. It'll show me where" + }, + { + "start": 302.479, + "duration": 0.0, + "text": "will catch that. It'll show me where that<00:05:02.639> is.<00:05:02.880> I<00:05:03.040> can<00:05:03.120> dig<00:05:03.360> into<00:05:03.600> things<00:05:03.759> like<00:05:03.919> the" + }, + { + "start": 304.07, + "duration": 0.0, + "text": "that is. I can dig into things like the" + }, + { + "start": 304.08, + "duration": 0.0, + "text": "that is. I can dig into things like the call<00:05:04.320> stack.<00:05:05.040> I<00:05:05.280> can<00:05:05.440> see<00:05:05.680> I<00:05:05.919> can<00:05:06.080> evaluate" + }, + { + "start": 306.55, + "duration": 0.0, + "text": "call stack. I can see I can evaluate" + }, + { + "start": 306.56, + "duration": 0.0, + "text": "call stack. I can see I can evaluate things<00:05:06.800> still.<00:05:07.120> I<00:05:07.280> can<00:05:07.440> I<00:05:07.680> can<00:05:07.840> see<00:05:08.000> why<00:05:08.320> some" + }, + { + "start": 308.55, + "duration": 0.0, + "text": "things still. I can I can see why some" + }, + { + "start": 308.56, + "duration": 0.0, + "text": "things still. I can I can see why some bug<00:05:08.880> is<00:05:09.039> happening,<00:05:09.360> right?<00:05:09.440> I<00:05:09.680> can<00:05:09.840> see<00:05:10.320> I<00:05:10.560> can" + }, + { + "start": 310.79, + "duration": 0.0, + "text": "bug is happening, right? I can see I can" + }, + { + "start": 310.8, + "duration": 0.0, + "text": "bug is happening, right? I can see I can sort<00:05:10.960> of<00:05:11.039> get<00:05:11.199> visibility<00:05:11.600> into<00:05:11.919> the<00:05:12.080> system" + }, + { + "start": 312.55, + "duration": 0.0, + "text": "sort of get visibility into the system" + }, + { + "start": 312.56, + "duration": 0.0, + "text": "sort of get visibility into the system when<00:05:12.960> something<00:05:13.199> goes<00:05:13.440> wrong.<00:05:14.479> Um<00:05:14.720> I<00:05:14.960> can<00:05:15.120> go" + }, + { + "start": 315.27, + "duration": 0.0, + "text": "when something goes wrong. Um I can go" + }, + { + "start": 315.28, + "duration": 0.0, + "text": "when something goes wrong. Um I can go back<00:05:15.680> uh<00:05:15.919> frames<00:05:16.240> in<00:05:16.320> the<00:05:16.479> call<00:05:16.720> stack.<00:05:17.600> Uh" + }, + { + "start": 318.15, + "duration": 0.0, + "text": "back uh frames in the call stack. Uh" + }, + { + "start": 318.16, + "duration": 0.0, + "text": "back uh frames in the call stack. Uh stuff<00:05:18.400> like<00:05:18.639> this." + }, + { + "start": 323.44, + "duration": 0.0, + "text": "Okay.<00:05:24.320> So<00:05:24.560> you<00:05:24.720> know<00:05:24.960> let's<00:05:25.120> say<00:05:25.360> like<00:05:25.600> in<00:05:25.759> in" + }, + { + "start": 326.15, + "duration": 0.0, + "text": "Okay. So you know let's say like in in" + }, + { + "start": 326.16, + "duration": 0.0, + "text": "Okay. So you know let's say like in in my<00:05:26.320> game<00:05:26.560> for<00:05:26.639> example<00:05:26.960> the<00:05:27.199> the<00:05:27.360> player<00:05:27.680> can" + }, + { + "start": 327.909, + "duration": 0.0, + "text": "my game for example the the player can" + }, + { + "start": 327.919, + "duration": 0.0, + "text": "my game for example the the player can like<00:05:28.240> hit<00:05:28.479> something.<00:05:28.880> So<00:05:28.960> if<00:05:29.199> I<00:05:29.520> go<00:05:29.600> ahead<00:05:29.840> and" + }, + { + "start": 329.99, + "duration": 0.0, + "text": "like hit something. So if I go ahead and" + }, + { + "start": 330.0, + "duration": 0.0, + "text": "like hit something. So if I go ahead and spawn<00:05:30.639> a<00:05:31.120> a<00:05:31.280> little<00:05:31.440> jelly<00:05:31.840> entity<00:05:32.160> here<00:05:32.720> I<00:05:32.960> can" + }, + { + "start": 333.029, + "duration": 0.0, + "text": "spawn a a little jelly entity here I can" + }, + { + "start": 333.039, + "duration": 0.0, + "text": "spawn a a little jelly entity here I can walk<00:05:33.199> up<00:05:33.440> as<00:05:33.680> the<00:05:33.840> player<00:05:34.160> and<00:05:34.400> punch<00:05:34.639> it.<00:05:35.600> If<00:05:35.840> I" + }, + { + "start": 335.99, + "duration": 0.0, + "text": "walk up as the player and punch it. If I" + }, + { + "start": 336.0, + "duration": 0.0, + "text": "walk up as the player and punch it. If I wanted<00:05:36.160> to<00:05:36.400> specifically<00:05:36.960> stop<00:05:37.680> when<00:05:38.560> that" + }, + { + "start": 338.95, + "duration": 0.0, + "text": "wanted to specifically stop when that" + }, + { + "start": 338.96, + "duration": 0.0, + "text": "wanted to specifically stop when that punching<00:05:39.360> code<00:05:39.680> path<00:05:39.840> is<00:05:40.000> hitting,<00:05:40.320> I<00:05:40.479> can<00:05:40.639> go" + }, + { + "start": 340.71, + "duration": 0.0, + "text": "punching code path is hitting, I can go" + }, + { + "start": 340.72, + "duration": 0.0, + "text": "punching code path is hitting, I can go and<00:05:40.960> find<00:05:41.120> wherever<00:05:41.440> I<00:05:41.520> wrote<00:05:41.759> the<00:05:41.919> code,<00:05:42.400> put" + }, + { + "start": 342.55, + "duration": 0.0, + "text": "and find wherever I wrote the code, put" + }, + { + "start": 342.56, + "duration": 0.0, + "text": "and find wherever I wrote the code, put a<00:05:42.639> break<00:05:42.880> point<00:05:43.120> there,<00:05:43.440> and<00:05:43.680> then<00:05:43.840> I<00:05:44.080> can<00:05:44.240> just" + }, + { + "start": 344.629, + "duration": 0.0, + "text": "a break point there, and then I can just" + }, + { + "start": 344.639, + "duration": 0.0, + "text": "a break point there, and then I can just like<00:05:45.840> uh<00:05:46.080> wait<00:05:46.320> for<00:05:46.479> some<00:05:46.800> wait<00:05:47.039> for<00:05:47.120> that" + }, + { + "start": 347.27, + "duration": 0.0, + "text": "like uh wait for some wait for that" + }, + { + "start": 347.28, + "duration": 0.0, + "text": "like uh wait for some wait for that event<00:05:47.520> to<00:05:47.680> happen,<00:05:47.919> right?<00:05:48.080> Wait<00:05:48.240> for<00:05:48.320> that" + }, + { + "start": 348.469, + "duration": 0.0, + "text": "event to happen, right? Wait for that" + }, + { + "start": 348.479, + "duration": 0.0, + "text": "event to happen, right? Wait for that code<00:05:48.639> path<00:05:48.800> to<00:05:48.960> be<00:05:49.039> executed.<00:05:49.840> You<00:05:50.080> stop.<00:05:50.800> Um" + }, + { + "start": 351.029, + "duration": 0.0, + "text": "code path to be executed. You stop. Um" + }, + { + "start": 351.039, + "duration": 0.0, + "text": "code path to be executed. You stop. Um and<00:05:51.280> at<00:05:51.440> that<00:05:51.600> point,<00:05:51.759> I<00:05:51.919> can<00:05:52.000> inspect<00:05:52.320> the" + }, + { + "start": 352.469, + "duration": 0.0, + "text": "and at that point, I can inspect the" + }, + { + "start": 352.479, + "duration": 0.0, + "text": "and at that point, I can inspect the state,<00:05:52.720> right?<00:05:52.960> Most,<00:05:53.280> you<00:05:53.440> know,<00:05:53.600> very" + }, + { + "start": 353.749, + "duration": 0.0, + "text": "state, right? Most, you know, very" + }, + { + "start": 353.759, + "duration": 0.0, + "text": "state, right? Most, you know, very common<00:05:54.000> debugger<00:05:54.400> stuff,<00:05:54.560> but<00:05:54.800> I<00:05:54.960> know<00:05:55.039> a<00:05:55.199> lot" + }, + { + "start": 355.27, + "duration": 0.0, + "text": "common debugger stuff, but I know a lot" + }, + { + "start": 355.28, + "duration": 0.0, + "text": "common debugger stuff, but I know a lot of<00:05:55.360> people<00:05:55.520> don't.<00:05:55.919> They<00:05:56.160> claim<00:05:56.479> they<00:05:56.639> don't" + }, + { + "start": 356.79, + "duration": 0.0, + "text": "of people don't. They claim they don't" + }, + { + "start": 356.8, + "duration": 0.0, + "text": "of people don't. They claim they don't use<00:05:56.960> debugger,<00:05:57.440> so<00:05:57.840> I<00:05:58.080> figured<00:05:58.320> I<00:05:58.560> would<00:05:58.639> just" + }, + { + "start": 358.87, + "duration": 0.0, + "text": "use debugger, so I figured I would just" + }, + { + "start": 358.88, + "duration": 0.0, + "text": "use debugger, so I figured I would just show<00:05:59.039> it.<00:05:59.440> Um<00:06:00.639> you<00:06:00.880> can<00:06:00.960> also<00:06:01.120> add<00:06:01.280> conditions" + }, + { + "start": 361.59, + "duration": 0.0, + "text": "show it. Um you can also add conditions" + }, + { + "start": 361.6, + "duration": 0.0, + "text": "show it. Um you can also add conditions to<00:06:01.680> a<00:06:01.840> breakpoint.<00:06:02.240> You<00:06:02.320> could<00:06:02.479> say<00:06:02.800> only<00:06:03.120> stop" + }, + { + "start": 363.35, + "duration": 0.0, + "text": "to a breakpoint. You could say only stop" + }, + { + "start": 363.36, + "duration": 0.0, + "text": "to a breakpoint. You could say only stop if<00:06:03.680> this<00:06:03.840> condition<00:06:04.160> is<00:06:04.319> true.<00:06:04.639> So<00:06:04.800> in<00:06:04.960> this" + }, + { + "start": 365.029, + "duration": 0.0, + "text": "if this condition is true. So in this" + }, + { + "start": 365.039, + "duration": 0.0, + "text": "if this condition is true. So in this case,<00:06:05.199> I'm<00:06:05.360> checking<00:06:06.000> if<00:06:06.240> it's<00:06:06.479> specifically" + }, + { + "start": 367.029, + "duration": 0.0, + "text": "case, I'm checking if it's specifically" + }, + { + "start": 367.039, + "duration": 0.0, + "text": "case, I'm checking if it's specifically the<00:06:07.280> player's<00:06:07.680> right<00:06:07.919> hand<00:06:08.080> or<00:06:08.319> right<00:06:08.560> hand<00:06:08.960> uh" + }, + { + "start": 369.35, + "duration": 0.0, + "text": "the player's right hand or right hand uh" + }, + { + "start": 369.36, + "duration": 0.0, + "text": "the player's right hand or right hand uh from<00:06:09.600> our<00:06:09.759> perspective,<00:06:10.319> right?" + }, + { + "start": 371.909, + "duration": 0.0, + "text": "from our perspective, right?" + }, + { + "start": 371.919, + "duration": 0.0, + "text": "from our perspective, right? So<00:06:12.080> yeah,<00:06:12.319> there<00:06:12.479> you<00:06:12.639> go." + }, + { + "start": 375.59, + "duration": 0.0, + "text": "So yeah, there you go." + }, + { + "start": 375.6, + "duration": 0.0, + "text": "So yeah, there you go. Uh<00:06:15.840> so<00:06:16.000> what<00:06:16.160> exactly<00:06:16.479> do<00:06:16.639> I<00:06:16.720> mean<00:06:16.880> by" + }, + { + "start": 376.95, + "duration": 0.0, + "text": "Uh so what exactly do I mean by" + }, + { + "start": 376.96, + "duration": 0.0, + "text": "Uh so what exactly do I mean by visualization?<00:06:17.840> Um<00:06:18.720> as<00:06:19.120> I<00:06:19.360> kind<00:06:19.520> of<00:06:19.600> covered" + }, + { + "start": 379.909, + "duration": 0.0, + "text": "visualization? Um as I kind of covered" + }, + { + "start": 379.919, + "duration": 0.0, + "text": "visualization? Um as I kind of covered already,<00:06:20.160> a<00:06:20.400> basic<00:06:20.639> version<00:06:20.720> of<00:06:20.880> this<00:06:21.039> is<00:06:21.199> the" + }, + { + "start": 381.35, + "duration": 0.0, + "text": "already, a basic version of this is the" + }, + { + "start": 381.36, + "duration": 0.0, + "text": "already, a basic version of this is the watch<00:06:21.600> window,<00:06:22.240> right?<00:06:22.479> You<00:06:22.720> can<00:06:22.800> evaluate<00:06:23.360> an" + }, + { + "start": 383.59, + "duration": 0.0, + "text": "watch window, right? You can evaluate an" + }, + { + "start": 383.6, + "duration": 0.0, + "text": "watch window, right? You can evaluate an expression<00:06:24.479> um<00:06:24.560> and<00:06:24.800> see<00:06:25.039> things<00:06:25.280> change." + }, + { + "start": 386.07, + "duration": 0.0, + "text": "expression um and see things change." + }, + { + "start": 386.08, + "duration": 0.0, + "text": "expression um and see things change. Another<00:06:26.400> example<00:06:27.039> would<00:06:27.280> be<00:06:28.080> memory<00:06:28.479> view." + }, + { + "start": 389.029, + "duration": 0.0, + "text": "Another example would be memory view." + }, + { + "start": 389.039, + "duration": 0.0, + "text": "Another example would be memory view. It's<00:06:29.199> just<00:06:29.360> another<00:06:29.680> very<00:06:30.000> common<00:06:31.199> uh" + }, + { + "start": 391.67, + "duration": 0.0, + "text": "It's just another very common uh" + }, + { + "start": 391.68, + "duration": 0.0, + "text": "It's just another very common uh visualization<00:06:32.560> technique<00:06:32.880> in<00:06:33.120> a<00:06:33.199> debugger." + }, + { + "start": 393.43, + "duration": 0.0, + "text": "visualization technique in a debugger." + }, + { + "start": 393.44, + "duration": 0.0, + "text": "visualization technique in a debugger. you<00:06:33.680> just<00:06:33.759> want<00:06:33.840> to<00:06:34.000> see<00:06:34.080> a<00:06:34.240> grid<00:06:34.400> of<00:06:34.560> bytes<00:06:35.280> uh" + }, + { + "start": 395.35, + "duration": 0.0, + "text": "you just want to see a grid of bytes uh" + }, + { + "start": 395.36, + "duration": 0.0, + "text": "you just want to see a grid of bytes uh in<00:06:35.680> sort<00:06:35.840> of<00:06:35.919> a<00:06:36.000> hex<00:06:36.240> editor<00:06:36.720> style<00:06:37.039> view.<00:06:38.000> Um" + }, + { + "start": 399.11, + "duration": 0.0, + "text": "in sort of a hex editor style view. Um" + }, + { + "start": 399.12, + "duration": 0.0, + "text": "in sort of a hex editor style view. Um and<00:06:39.280> then<00:06:39.440> many<00:06:39.680> of<00:06:39.759> the<00:06:39.840> same<00:06:40.000> things<00:06:40.160> apply" + }, + { + "start": 400.39, + "duration": 0.0, + "text": "and then many of the same things apply" + }, + { + "start": 400.4, + "duration": 0.0, + "text": "and then many of the same things apply right<00:06:40.639> as<00:06:40.800> I<00:06:40.960> step<00:06:41.120> through<00:06:41.280> the<00:06:41.440> program<00:06:41.759> I" + }, + { + "start": 401.909, + "duration": 0.0, + "text": "right as I step through the program I" + }, + { + "start": 401.919, + "duration": 0.0, + "text": "right as I step through the program I can<00:06:42.080> I<00:06:42.319> can<00:06:43.039> see<00:06:43.600> particular<00:06:44.000> bytes<00:06:44.400> change." + }, + { + "start": 404.71, + "duration": 0.0, + "text": "can I can see particular bytes change." + }, + { + "start": 404.72, + "duration": 0.0, + "text": "can I can see particular bytes change. So<00:06:44.800> here<00:06:44.960> I'm<00:06:45.120> evaluating<00:06:45.520> the<00:06:45.680> string" + }, + { + "start": 405.909, + "duration": 0.0, + "text": "So here I'm evaluating the string" + }, + { + "start": 405.919, + "duration": 0.0, + "text": "So here I'm evaluating the string variable<00:06:47.360> um" + }, + { + "start": 409.27, + "duration": 0.0, + "text": "variable um" + }, + { + "start": 409.28, + "duration": 0.0, + "text": "variable um and<00:06:49.520> then<00:06:49.680> I<00:06:50.160> assume<00:06:50.560> I<00:06:50.800> think<00:06:50.880> I<00:06:51.039> go<00:06:51.199> to<00:06:51.360> the<00:06:51.680> to" + }, + { + "start": 411.83, + "duration": 0.0, + "text": "and then I assume I think I go to the to" + }, + { + "start": 411.84, + "duration": 0.0, + "text": "and then I assume I think I go to the to the<00:06:52.000> memory<00:06:52.240> for<00:06:52.400> it<00:06:52.560> and<00:06:52.720> if<00:06:52.880> I<00:06:53.039> step<00:06:53.280> you'll" + }, + { + "start": 413.59, + "duration": 0.0, + "text": "the memory for it and if I step you'll" + }, + { + "start": 413.6, + "duration": 0.0, + "text": "the memory for it and if I step you'll see<00:06:53.919> it<00:06:54.160> changes" + }, + { + "start": 415.749, + "duration": 0.0, + "text": "see it changes" + }, + { + "start": 415.759, + "duration": 0.0, + "text": "see it changes etc.<00:06:56.080> So,<00:06:56.400> so<00:06:56.800> basic<00:06:57.360> very<00:06:57.600> common<00:06:57.840> debugger" + }, + { + "start": 418.309, + "duration": 0.0, + "text": "etc. So, so basic very common debugger" + }, + { + "start": 418.319, + "duration": 0.0, + "text": "etc. So, so basic very common debugger visualiza<00:06:58.880> uh<00:06:59.039> visualization<00:06:59.599> features<00:07:00.000> but" + }, + { + "start": 420.15, + "duration": 0.0, + "text": "visualiza uh visualization features but" + }, + { + "start": 420.16, + "duration": 0.0, + "text": "visualiza uh visualization features but this<00:07:00.319> is<00:07:00.479> like<00:07:00.960> this<00:07:01.199> is<00:07:01.360> the<00:07:01.520> subject.<00:07:02.080> Now" + }, + { + "start": 423.029, + "duration": 0.0, + "text": "this is like this is the subject. Now" + }, + { + "start": 423.039, + "duration": 0.0, + "text": "this is like this is the subject. Now again<00:07:03.360> just<00:07:03.520> a<00:07:03.680> couple<00:07:03.840> basic<00:07:04.160> examples<00:07:04.479> we'll" + }, + { + "start": 424.629, + "duration": 0.0, + "text": "again just a couple basic examples we'll" + }, + { + "start": 424.639, + "duration": 0.0, + "text": "again just a couple basic examples we'll get<00:07:04.800> into<00:07:05.039> more<00:07:05.440> later" + }, + { + "start": 426.95, + "duration": 0.0, + "text": "get into more later" + }, + { + "start": 426.96, + "duration": 0.0, + "text": "get into more later but<00:07:07.440> I<00:07:07.599> find<00:07:07.759> this<00:07:08.000> particular<00:07:08.400> problem" + }, + { + "start": 428.79, + "duration": 0.0, + "text": "but I find this particular problem" + }, + { + "start": 428.8, + "duration": 0.0, + "text": "but I find this particular problem important<00:07:09.599> because<00:07:09.840> for<00:07:10.080> me<00:07:10.240> while<00:07:10.479> learning" + }, + { + "start": 430.87, + "duration": 0.0, + "text": "important because for me while learning" + }, + { + "start": 430.88, + "duration": 0.0, + "text": "important because for me while learning programming<00:07:11.520> things<00:07:11.759> would<00:07:11.919> often<00:07:12.240> feel<00:07:13.120> like" + }, + { + "start": 433.35, + "duration": 0.0, + "text": "programming things would often feel like" + }, + { + "start": 433.36, + "duration": 0.0, + "text": "programming things would often feel like this.<00:07:13.919> Now<00:07:14.160> for<00:07:14.319> those<00:07:14.560> who<00:07:14.720> don't<00:07:14.800> know<00:07:14.880> what" + }, + { + "start": 435.029, + "duration": 0.0, + "text": "this. Now for those who don't know what" + }, + { + "start": 435.039, + "duration": 0.0, + "text": "this. Now for those who don't know what this<00:07:15.199> is<00:07:15.759> either<00:07:16.479> this<00:07:16.639> is<00:07:16.800> the<00:07:16.960> origin<00:07:17.199> of<00:07:17.280> the" + }, + { + "start": 437.43, + "duration": 0.0, + "text": "this is either this is the origin of the" + }, + { + "start": 437.44, + "duration": 0.0, + "text": "this is either this is the origin of the term<00:07:17.759> blackbox.<00:07:18.720> Uh<00:07:18.880> it's<00:07:19.039> a<00:07:19.199> flight<00:07:19.360> log" + }, + { + "start": 439.589, + "duration": 0.0, + "text": "term blackbox. Uh it's a flight log" + }, + { + "start": 439.599, + "duration": 0.0, + "text": "term blackbox. Uh it's a flight log recording<00:07:19.919> device.<00:07:20.479> Uh<00:07:21.039> and<00:07:21.360> yes<00:07:21.919> I<00:07:22.160> thought" + }, + { + "start": 442.23, + "duration": 0.0, + "text": "recording device. Uh and yes I thought" + }, + { + "start": 442.24, + "duration": 0.0, + "text": "recording device. Uh and yes I thought it<00:07:22.479> would<00:07:22.560> have<00:07:22.639> been<00:07:22.800> black<00:07:23.120> as<00:07:23.360> well.<00:07:24.400> uh<00:07:24.560> but" + }, + { + "start": 444.79, + "duration": 0.0, + "text": "it would have been black as well. uh but" + }, + { + "start": 444.8, + "duration": 0.0, + "text": "it would have been black as well. uh but no<00:07:25.039> it's<00:07:25.360> orange<00:07:25.680> for<00:07:26.000> whatever<00:07:26.319> reason<00:07:26.880> but" + }, + { + "start": 447.589, + "duration": 0.0, + "text": "no it's orange for whatever reason but" + }, + { + "start": 447.599, + "duration": 0.0, + "text": "no it's orange for whatever reason but in<00:07:27.919> programming<00:07:28.319> we've<00:07:28.560> abstracted<00:07:29.039> the<00:07:29.199> term" + }, + { + "start": 450.07, + "duration": 0.0, + "text": "in programming we've abstracted the term" + }, + { + "start": 450.08, + "duration": 0.0, + "text": "in programming we've abstracted the term as<00:07:30.319> we<00:07:30.479> know<00:07:30.720> programs<00:07:31.120> can<00:07:31.199> be<00:07:31.360> understood<00:07:31.840> as" + }, + { + "start": 452.07, + "duration": 0.0, + "text": "as we know programs can be understood as" + }, + { + "start": 452.08, + "duration": 0.0, + "text": "as we know programs can be understood as a<00:07:32.319> transform<00:07:33.039> from<00:07:33.280> A<00:07:33.440> to<00:07:33.599> B<00:07:33.919> right<00:07:34.160> some<00:07:34.319> input" + }, + { + "start": 454.71, + "duration": 0.0, + "text": "a transform from A to B right some input" + }, + { + "start": 454.72, + "duration": 0.0, + "text": "a transform from A to B right some input data<00:07:35.039> in<00:07:35.280> some<00:07:35.440> format<00:07:35.840> A<00:07:36.160> to<00:07:36.400> some<00:07:36.560> output" + }, + { + "start": 456.95, + "duration": 0.0, + "text": "data in some format A to some output" + }, + { + "start": 456.96, + "duration": 0.0, + "text": "data in some format A to some output data<00:07:37.280> in<00:07:37.520> format<00:07:37.919> B<00:07:39.199> um<00:07:40.160> we<00:07:40.400> use<00:07:40.479> the<00:07:40.639> term" + }, + { + "start": 460.87, + "duration": 0.0, + "text": "data in format B um we use the term" + }, + { + "start": 460.88, + "duration": 0.0, + "text": "data in format B um we use the term blackbox<00:07:41.440> when<00:07:41.599> we<00:07:41.840> don't<00:07:42.000> know<00:07:42.160> anything" + }, + { + "start": 462.469, + "duration": 0.0, + "text": "blackbox when we don't know anything" + }, + { + "start": 462.479, + "duration": 0.0, + "text": "blackbox when we don't know anything about<00:07:42.800> why" + }, + { + "start": 464.39, + "duration": 0.0, + "text": "about why" + }, + { + "start": 464.4, + "duration": 0.0, + "text": "about why something<00:07:44.800> happens<00:07:45.520> between<00:07:45.840> A<00:07:46.080> and<00:07:46.240> B<00:07:46.960> we" + }, + { + "start": 467.11, + "duration": 0.0, + "text": "something happens between A and B we" + }, + { + "start": 467.12, + "duration": 0.0, + "text": "something happens between A and B we don't<00:07:47.280> know<00:07:47.680> why<00:07:47.919> it<00:07:48.080> produces<00:07:48.400> B<00:07:48.639> we<00:07:48.720> don't" + }, + { + "start": 468.87, + "duration": 0.0, + "text": "don't know why it produces B we don't" + }, + { + "start": 468.88, + "duration": 0.0, + "text": "don't know why it produces B we don't know<00:07:48.960> how<00:07:49.120> it's<00:07:49.360> happening<00:07:50.000> we<00:07:50.160> hit<00:07:50.319> a<00:07:50.479> button" + }, + { + "start": 470.71, + "duration": 0.0, + "text": "know how it's happening we hit a button" + }, + { + "start": 470.72, + "duration": 0.0, + "text": "know how it's happening we hit a button we<00:07:50.880> run<00:07:51.039> a<00:07:51.199> program<00:07:51.759> and<00:07:52.000> something<00:07:52.400> happens" + }, + { + "start": 472.79, + "duration": 0.0, + "text": "we run a program and something happens" + }, + { + "start": 472.8, + "duration": 0.0, + "text": "we run a program and something happens out<00:07:53.039> pops<00:07:53.280> a" + }, + { + "start": 474.23, + "duration": 0.0, + "text": "out pops a" + }, + { + "start": 474.24, + "duration": 0.0, + "text": "out pops a You<00:07:54.400> know,<00:07:54.560> maybe<00:07:55.199> you<00:07:55.440> hope<00:07:56.240> it<00:07:56.400> works<00:07:57.120> great" + }, + { + "start": 477.35, + "duration": 0.0, + "text": "You know, maybe you hope it works great" + }, + { + "start": 477.36, + "duration": 0.0, + "text": "You know, maybe you hope it works great and<00:07:57.599> if<00:07:57.680> it<00:07:57.840> doesn't<00:07:58.639> go,<00:07:59.360> right?<00:08:00.240> Another<00:08:00.560> way" + }, + { + "start": 480.629, + "duration": 0.0, + "text": "and if it doesn't go, right? Another way" + }, + { + "start": 480.639, + "duration": 0.0, + "text": "and if it doesn't go, right? Another way of<00:08:00.800> looking<00:08:00.960> at<00:08:01.120> this<00:08:01.360> is<00:08:01.520> that<00:08:01.680> the<00:08:01.840> arrow<00:08:02.160> in" + }, + { + "start": 482.309, + "duration": 0.0, + "text": "of looking at this is that the arrow in" + }, + { + "start": 482.319, + "duration": 0.0, + "text": "of looking at this is that the arrow in the<00:08:02.400> middle,<00:08:02.960> the<00:08:03.280> code" + }, + { + "start": 485.27, + "duration": 0.0, + "text": "the middle, the code" + }, + { + "start": 485.28, + "duration": 0.0, + "text": "the middle, the code is<00:08:05.520> showing<00:08:05.840> very<00:08:06.160> few<00:08:06.400> signs<00:08:06.639> of<00:08:06.879> life.<00:08:07.680> Your" + }, + { + "start": 487.909, + "duration": 0.0, + "text": "is showing very few signs of life. Your" + }, + { + "start": 487.919, + "duration": 0.0, + "text": "is showing very few signs of life. Your program<00:08:08.160> is<00:08:08.400> doing<00:08:08.560> something<00:08:08.879> maybe" + }, + { + "start": 489.11, + "duration": 0.0, + "text": "program is doing something maybe" + }, + { + "start": 489.12, + "duration": 0.0, + "text": "program is doing something maybe undesirable<00:08:10.080> and<00:08:10.240> you<00:08:10.479> don't<00:08:10.639> know<00:08:10.879> why." + }, + { + "start": 491.67, + "duration": 0.0, + "text": "undesirable and you don't know why." + }, + { + "start": 491.68, + "duration": 0.0, + "text": "undesirable and you don't know why. There's<00:08:12.000> very<00:08:12.240> little<00:08:12.479> information<00:08:12.879> coming" + }, + { + "start": 493.11, + "duration": 0.0, + "text": "There's very little information coming" + }, + { + "start": 493.12, + "duration": 0.0, + "text": "There's very little information coming out<00:08:13.280> of<00:08:13.360> the<00:08:13.599> system.<00:08:14.560> Meanwhile,<00:08:14.960> you<00:08:15.120> just" + }, + { + "start": 495.27, + "duration": 0.0, + "text": "out of the system. Meanwhile, you just" + }, + { + "start": 495.28, + "duration": 0.0, + "text": "out of the system. Meanwhile, you just want<00:08:15.360> your<00:08:15.520> program<00:08:15.759> to<00:08:15.919> work." + }, + { + "start": 497.589, + "duration": 0.0, + "text": "want your program to work." + }, + { + "start": 497.599, + "duration": 0.0, + "text": "want your program to work. As<00:08:17.840> I<00:08:18.080> see<00:08:18.160> it,<00:08:18.800> the<00:08:19.039> challenge<00:08:19.280> here<00:08:19.440> is<00:08:19.520> that" + }, + { + "start": 499.749, + "duration": 0.0, + "text": "As I see it, the challenge here is that" + }, + { + "start": 499.759, + "duration": 0.0, + "text": "As I see it, the challenge here is that computers<00:08:20.080> are<00:08:20.319> inherently<00:08:20.800> opaque<00:08:21.120> to<00:08:21.199> us." + }, + { + "start": 501.27, + "duration": 0.0, + "text": "computers are inherently opaque to us." + }, + { + "start": 501.28, + "duration": 0.0, + "text": "computers are inherently opaque to us. They're<00:08:21.599> doing<00:08:22.000> billions<00:08:22.400> and<00:08:22.639> billions<00:08:22.960> of" + }, + { + "start": 503.11, + "duration": 0.0, + "text": "They're doing billions and billions of" + }, + { + "start": 503.12, + "duration": 0.0, + "text": "They're doing billions and billions of things<00:08:23.919> per<00:08:24.160> second.<00:08:25.120> And<00:08:25.280> so<00:08:25.520> there's" + }, + { + "start": 505.749, + "duration": 0.0, + "text": "things per second. And so there's" + }, + { + "start": 505.759, + "duration": 0.0, + "text": "things per second. And so there's actually<00:08:25.919> an<00:08:26.080> enormous<00:08:26.479> amount<00:08:26.639> of" + }, + { + "start": 506.79, + "duration": 0.0, + "text": "actually an enormous amount of" + }, + { + "start": 506.8, + "duration": 0.0, + "text": "actually an enormous amount of information<00:08:27.199> you<00:08:27.360> might<00:08:27.599> actually<00:08:27.919> imagine" + }, + { + "start": 508.79, + "duration": 0.0, + "text": "information you might actually imagine" + }, + { + "start": 508.8, + "duration": 0.0, + "text": "information you might actually imagine needing<00:08:29.280> in<00:08:29.520> order<00:08:29.680> to<00:08:29.919> understand<00:08:30.240> what's" + }, + { + "start": 510.55, + "duration": 0.0, + "text": "needing in order to understand what's" + }, + { + "start": 510.56, + "duration": 0.0, + "text": "needing in order to understand what's happening." + }, + { + "start": 512.469, + "duration": 0.0, + "text": "happening." + }, + { + "start": 512.479, + "duration": 0.0, + "text": "happening. So<00:08:32.640> it's<00:08:32.800> always<00:08:32.959> a<00:08:33.120> game<00:08:33.279> of<00:08:33.440> understanding" + }, + { + "start": 513.829, + "duration": 0.0, + "text": "So it's always a game of understanding" + }, + { + "start": 513.839, + "duration": 0.0, + "text": "So it's always a game of understanding how<00:08:34.080> to<00:08:34.479> narrow<00:08:34.800> down<00:08:34.959> to<00:08:35.120> the<00:08:35.279> subset<00:08:35.599> of" + }, + { + "start": 515.829, + "duration": 0.0, + "text": "how to narrow down to the subset of" + }, + { + "start": 515.839, + "duration": 0.0, + "text": "how to narrow down to the subset of information<00:08:36.320> you<00:08:36.560> actually<00:08:36.719> care<00:08:36.959> about<00:08:37.120> and" + }, + { + "start": 517.43, + "duration": 0.0, + "text": "information you actually care about and" + }, + { + "start": 517.44, + "duration": 0.0, + "text": "information you actually care about and presenting<00:08:37.760> it<00:08:37.919> in<00:08:38.000> a<00:08:38.159> way<00:08:38.240> that<00:08:38.399> makes<00:08:38.560> sense." + }, + { + "start": 519.589, + "duration": 0.0, + "text": "presenting it in a way that makes sense." + }, + { + "start": 519.599, + "duration": 0.0, + "text": "presenting it in a way that makes sense. Um" + }, + { + "start": 523.2, + "duration": 0.0, + "text": "now<00:08:43.440> one<00:08:43.599> of<00:08:43.680> the<00:08:43.839> first<00:08:44.320> ways<00:08:44.560> we<00:08:44.800> learn<00:08:45.040> to" + }, + { + "start": 525.19, + "duration": 0.0, + "text": "now one of the first ways we learn to" + }, + { + "start": 525.2, + "duration": 0.0, + "text": "now one of the first ways we learn to extract<00:08:45.680> information<00:08:46.640> uh<00:08:46.800> from<00:08:46.959> a<00:08:47.120> program<00:08:47.360> is" + }, + { + "start": 527.509, + "duration": 0.0, + "text": "extract information uh from a program is" + }, + { + "start": 527.519, + "duration": 0.0, + "text": "extract information uh from a program is through<00:08:47.680> textual<00:08:48.160> logging<00:08:49.040> or<00:08:49.519> uh<00:08:49.680> print" + }, + { + "start": 529.91, + "duration": 0.0, + "text": "through textual logging or uh print" + }, + { + "start": 529.92, + "duration": 0.0, + "text": "through textual logging or uh print debugging." + }, + { + "start": 531.59, + "duration": 0.0, + "text": "debugging." + }, + { + "start": 531.6, + "duration": 0.0, + "text": "debugging. uh<00:08:51.760> your<00:08:52.000> program<00:08:52.240> does<00:08:52.399> whatever<00:08:52.720> it<00:08:52.880> was" + }, + { + "start": 533.03, + "duration": 0.0, + "text": "uh your program does whatever it was" + }, + { + "start": 533.04, + "duration": 0.0, + "text": "uh your program does whatever it was going<00:08:53.200> to<00:08:53.360> do<00:08:53.760> and<00:08:54.000> then<00:08:54.160> in<00:08:54.399> addition<00:08:54.640> to" + }, + { + "start": 534.79, + "duration": 0.0, + "text": "going to do and then in addition to" + }, + { + "start": 534.8, + "duration": 0.0, + "text": "going to do and then in addition to whatever<00:08:55.120> it<00:08:55.279> was<00:08:55.440> going<00:08:55.519> to<00:08:55.600> do<00:08:55.760> like<00:08:55.920> the" + }, + { + "start": 536.07, + "duration": 0.0, + "text": "whatever it was going to do like the" + }, + { + "start": 536.08, + "duration": 0.0, + "text": "whatever it was going to do like the thing<00:08:56.160> you<00:08:56.320> actually<00:08:56.560> wanted<00:08:56.720> it<00:08:56.959> to<00:08:57.040> do<00:08:57.600> it<00:08:57.760> it" + }, + { + "start": 538.15, + "duration": 0.0, + "text": "thing you actually wanted it to do it it" + }, + { + "start": 538.16, + "duration": 0.0, + "text": "thing you actually wanted it to do it it produces<00:08:58.480> a<00:08:58.720> parallel<00:08:59.200> output<00:08:59.680> which<00:08:59.920> is<00:09:00.080> just" + }, + { + "start": 540.23, + "duration": 0.0, + "text": "produces a parallel output which is just" + }, + { + "start": 540.24, + "duration": 0.0, + "text": "produces a parallel output which is just like<00:09:00.480> the<00:09:00.640> textual<00:09:01.120> log<00:09:01.360> of<00:09:01.519> of<00:09:02.160> what<00:09:02.399> happens" + }, + { + "start": 542.63, + "duration": 0.0, + "text": "like the textual log of of what happens" + }, + { + "start": 542.64, + "duration": 0.0, + "text": "like the textual log of of what happens they<00:09:02.880> come<00:09:03.040> from<00:09:03.360> print<00:09:03.600> statements<00:09:04.000> you" + }, + { + "start": 544.07, + "duration": 0.0, + "text": "they come from print statements you" + }, + { + "start": 544.08, + "duration": 0.0, + "text": "they come from print statements you annotate<00:09:04.480> your<00:09:04.640> program<00:09:04.880> with<00:09:05.680> now<00:09:05.839> you'll" + }, + { + "start": 546.07, + "duration": 0.0, + "text": "annotate your program with now you'll" + }, + { + "start": 546.08, + "duration": 0.0, + "text": "annotate your program with now you'll see<00:09:06.320> some<00:09:06.480> people<00:09:06.800> make<00:09:06.959> the<00:09:07.200> argument<00:09:07.920> that" + }, + { + "start": 548.15, + "duration": 0.0, + "text": "see some people make the argument that" + }, + { + "start": 548.16, + "duration": 0.0, + "text": "see some people make the argument that this<00:09:08.399> is<00:09:08.480> all<00:09:08.640> they<00:09:08.800> need" + }, + { + "start": 550.79, + "duration": 0.0, + "text": "this is all they need" + }, + { + "start": 550.8, + "duration": 0.0, + "text": "this is all they need and<00:09:10.959> what<00:09:11.360> what<00:09:11.600> I'm<00:09:11.760> about<00:09:11.920> to<00:09:12.080> say<00:09:12.240> might" + }, + { + "start": 552.47, + "duration": 0.0, + "text": "and what what I'm about to say might" + }, + { + "start": 552.48, + "duration": 0.0, + "text": "and what what I'm about to say might surprise<00:09:12.800> you<00:09:13.440> but<00:09:13.600> in<00:09:13.839> one<00:09:14.000> sense<00:09:14.800> they're" + }, + { + "start": 555.11, + "duration": 0.0, + "text": "surprise you but in one sense they're" + }, + { + "start": 555.12, + "duration": 0.0, + "text": "surprise you but in one sense they're right<00:09:16.160> but<00:09:16.320> there<00:09:16.399> are<00:09:16.560> two<00:09:16.720> problems<00:09:16.880> with" + }, + { + "start": 557.03, + "duration": 0.0, + "text": "right but there are two problems with" + }, + { + "start": 557.04, + "duration": 0.0, + "text": "right but there are two problems with their<00:09:17.200> argument<00:09:18.000> one<00:09:18.240> problem<00:09:18.560> we<00:09:18.800> can<00:09:18.959> solve" + }, + { + "start": 559.269, + "duration": 0.0, + "text": "their argument one problem we can solve" + }, + { + "start": 559.279, + "duration": 0.0, + "text": "their argument one problem we can solve while<00:09:19.440> keeping<00:09:19.680> print<00:09:19.920> debugging" + }, + { + "start": 560.87, + "duration": 0.0, + "text": "while keeping print debugging" + }, + { + "start": 560.88, + "duration": 0.0, + "text": "while keeping print debugging One<00:09:21.040> problem<00:09:21.279> we<00:09:21.519> cannot" + }, + { + "start": 563.269, + "duration": 0.0, + "text": "One problem we cannot" + }, + { + "start": 563.279, + "duration": 0.0, + "text": "One problem we cannot problem<00:09:23.600> number<00:09:23.839> one" + }, + { + "start": 566.23, + "duration": 0.0, + "text": "problem number one" + }, + { + "start": 566.24, + "duration": 0.0, + "text": "problem number one text<00:09:26.640> often<00:09:26.959> sucks" + }, + { + "start": 570.64, + "duration": 0.0, + "text": "uh<00:09:31.040> it's<00:09:31.200> often<00:09:31.519> insufficient<00:09:32.080> right<00:09:32.240> you" + }, + { + "start": 572.389, + "duration": 0.0, + "text": "uh it's often insufficient right you" + }, + { + "start": 572.399, + "duration": 0.0, + "text": "uh it's often insufficient right you can't<00:09:32.560> understand<00:09:32.800> what<00:09:32.959> it's<00:09:33.200> actually" + }, + { + "start": 573.35, + "duration": 0.0, + "text": "can't understand what it's actually" + }, + { + "start": 573.36, + "duration": 0.0, + "text": "can't understand what it's actually encoding<00:09:34.000> let's<00:09:34.240> go<00:09:34.320> ahead<00:09:34.480> and<00:09:34.560> do<00:09:34.640> an" + }, + { + "start": 574.79, + "duration": 0.0, + "text": "encoding let's go ahead and do an" + }, + { + "start": 574.8, + "duration": 0.0, + "text": "encoding let's go ahead and do an example<00:09:36.160> let's<00:09:36.399> say<00:09:36.560> we<00:09:36.720> have<00:09:36.800> some<00:09:36.959> image" + }, + { + "start": 577.19, + "duration": 0.0, + "text": "example let's say we have some image" + }, + { + "start": 577.2, + "duration": 0.0, + "text": "example let's say we have some image format<00:09:38.160> decoding<00:09:38.959> uh<00:09:39.440> we<00:09:39.680> have<00:09:39.760> some<00:09:39.920> image" + }, + { + "start": 580.23, + "duration": 0.0, + "text": "format decoding uh we have some image" + }, + { + "start": 580.24, + "duration": 0.0, + "text": "format decoding uh we have some image format<00:09:40.560> decoding<00:09:41.120> code<00:09:42.480> and<00:09:43.120> uh<00:09:43.519> we<00:09:44.080> we<00:09:44.399> want" + }, + { + "start": 584.55, + "duration": 0.0, + "text": "format decoding code and uh we we want" + }, + { + "start": 584.56, + "duration": 0.0, + "text": "format decoding code and uh we we want to<00:09:44.720> test<00:09:44.880> it<00:09:45.040> and<00:09:45.279> we<00:09:45.519> expect<00:09:45.760> to<00:09:46.000> get<00:09:46.320> you<00:09:46.480> know" + }, + { + "start": 586.63, + "duration": 0.0, + "text": "to test it and we expect to get you know" + }, + { + "start": 586.64, + "duration": 0.0, + "text": "to test it and we expect to get you know something<00:09:46.800> like<00:09:47.040> this<00:09:47.279> image" + }, + { + "start": 590.64, + "duration": 0.0, + "text": "Can<00:09:50.880> anyone<00:09:51.120> tell<00:09:51.279> me<00:09:51.440> where<00:09:51.600> the<00:09:51.760> bad<00:09:52.000> pixels" + }, + { + "start": 592.47, + "duration": 0.0, + "text": "Can anyone tell me where the bad pixels" + }, + { + "start": 592.48, + "duration": 0.0, + "text": "Can anyone tell me where the bad pixels are<00:09:52.720> after<00:09:52.959> I've<00:09:53.120> loaded<00:09:53.360> the<00:09:53.519> image?<00:09:53.680> I've" + }, + { + "start": 593.91, + "duration": 0.0, + "text": "are after I've loaded the image? I've" + }, + { + "start": 593.92, + "duration": 0.0, + "text": "are after I've loaded the image? I've I've<00:09:54.080> done<00:09:54.240> the<00:09:54.399> print<00:09:54.640> f<00:09:54.800> debugging." + }, + { + "start": 596.63, + "duration": 0.0, + "text": "I've done the print f debugging." + }, + { + "start": 596.64, + "duration": 0.0, + "text": "I've done the print f debugging. Okay," + }, + { + "start": 599.11, + "duration": 0.0, + "text": "Okay," + }, + { + "start": 599.12, + "duration": 0.0, + "text": "Okay, if<00:09:59.279> you're<00:09:59.440> looking<00:09:59.519> at<00:09:59.680> this,<00:09:59.920> it's<00:10:00.080> like," + }, + { + "start": 600.23, + "duration": 0.0, + "text": "if you're looking at this, it's like," + }, + { + "start": 600.24, + "duration": 0.0, + "text": "if you're looking at this, it's like, oh,<00:10:00.640> like<00:10:00.880> what's<00:10:01.040> that?<00:10:01.360> What<00:10:01.440> are<00:10:01.600> those" + }, + { + "start": 601.829, + "duration": 0.0, + "text": "oh, like what's that? What are those" + }, + { + "start": 601.839, + "duration": 0.0, + "text": "oh, like what's that? What are those fuchsia<00:10:02.320> pixels<00:10:02.720> in<00:10:02.880> the<00:10:03.040> corner,<00:10:03.279> right?" + }, + { + "start": 603.43, + "duration": 0.0, + "text": "fuchsia pixels in the corner, right?" + }, + { + "start": 603.44, + "duration": 0.0, + "text": "fuchsia pixels in the corner, right? Like<00:10:03.600> what<00:10:03.760> is<00:10:03.920> that<00:10:04.080> about?<00:10:05.040> So,<00:10:05.279> you<00:10:05.440> can" + }, + { + "start": 605.59, + "duration": 0.0, + "text": "Like what is that about? So, you can" + }, + { + "start": 605.6, + "duration": 0.0, + "text": "Like what is that about? So, you can instantly<00:10:06.000> see<00:10:06.160> the<00:10:06.399> problem<00:10:06.720> when<00:10:06.959> it's" + }, + { + "start": 607.19, + "duration": 0.0, + "text": "instantly see the problem when it's" + }, + { + "start": 607.2, + "duration": 0.0, + "text": "instantly see the problem when it's presented<00:10:07.440> to<00:10:07.519> you<00:10:07.680> in<00:10:07.839> a<00:10:08.000> different<00:10:08.160> way." + }, + { + "start": 609.19, + "duration": 0.0, + "text": "presented to you in a different way." + }, + { + "start": 609.2, + "duration": 0.0, + "text": "presented to you in a different way. Similarly,<00:10:09.680> you<00:10:09.839> have<00:10:09.920> some<00:10:10.080> 3D<00:10:10.480> geometry" + }, + { + "start": 610.87, + "duration": 0.0, + "text": "Similarly, you have some 3D geometry" + }, + { + "start": 610.88, + "duration": 0.0, + "text": "Similarly, you have some 3D geometry data<00:10:11.519> and<00:10:11.760> I<00:10:12.000> give<00:10:12.080> you<00:10:12.240> this." + }, + { + "start": 614.389, + "duration": 0.0, + "text": "data and I give you this." + }, + { + "start": 614.399, + "duration": 0.0, + "text": "data and I give you this. you're<00:10:14.640> not<00:10:14.720> going<00:10:14.800> to<00:10:14.880> be<00:10:15.040> very<00:10:15.279> quick<00:10:15.440> to" + }, + { + "start": 615.67, + "duration": 0.0, + "text": "you're not going to be very quick to" + }, + { + "start": 615.68, + "duration": 0.0, + "text": "you're not going to be very quick to like<00:10:16.480> pick<00:10:16.720> out<00:10:16.959> where<00:10:17.200> the<00:10:17.360> broken<00:10:17.680> vertex" + }, + { + "start": 618.069, + "duration": 0.0, + "text": "like pick out where the broken vertex" + }, + { + "start": 618.079, + "duration": 0.0, + "text": "like pick out where the broken vertex is,<00:10:18.399> right?" + }, + { + "start": 620.23, + "duration": 0.0, + "text": "is, right?" + }, + { + "start": 620.24, + "duration": 0.0, + "text": "is, right? Um," + }, + { + "start": 622.23, + "duration": 0.0, + "text": "Um," + }, + { + "start": 622.24, + "duration": 0.0, + "text": "Um, but<00:10:22.640> if<00:10:22.880> I<00:10:23.040> show<00:10:23.200> you<00:10:23.360> this,<00:10:23.680> it's<00:10:23.920> like,<00:10:24.160> wow," + }, + { + "start": 624.47, + "duration": 0.0, + "text": "but if I show you this, it's like, wow," + }, + { + "start": 624.48, + "duration": 0.0, + "text": "but if I show you this, it's like, wow, something's<00:10:24.800> really<00:10:24.959> off<00:10:25.200> there,<00:10:25.440> right?" + }, + { + "start": 625.59, + "duration": 0.0, + "text": "something's really off there, right?" + }, + { + "start": 625.6, + "duration": 0.0, + "text": "something's really off there, right? It's<00:10:25.760> like<00:10:25.839> you've<00:10:26.079> got<00:10:26.160> this<00:10:26.320> cube<00:10:26.560> structure" + }, + { + "start": 627.35, + "duration": 0.0, + "text": "It's like you've got this cube structure" + }, + { + "start": 627.36, + "duration": 0.0, + "text": "It's like you've got this cube structure and<00:10:27.600> then,<00:10:28.320> uh,<00:10:29.440> what's<00:10:29.760> that<00:10:29.920> vertex<00:10:30.560> doing" + }, + { + "start": 630.87, + "duration": 0.0, + "text": "and then, uh, what's that vertex doing" + }, + { + "start": 630.88, + "duration": 0.0, + "text": "and then, uh, what's that vertex doing over<00:10:31.120> there?<00:10:31.360> Like,<00:10:31.519> what<00:10:31.680> is<00:10:31.760> that<00:10:31.920> about?" + }, + { + "start": 632.63, + "duration": 0.0, + "text": "over there? Like, what is that about?" + }, + { + "start": 632.64, + "duration": 0.0, + "text": "over there? Like, what is that about? You<00:10:32.800> know,<00:10:34.240> so<00:10:34.959> there<00:10:35.120> are<00:10:35.279> numerous<00:10:35.760> examples" + }, + { + "start": 636.15, + "duration": 0.0, + "text": "You know, so there are numerous examples" + }, + { + "start": 636.16, + "duration": 0.0, + "text": "You know, so there are numerous examples like<00:10:36.399> this.<00:10:37.040> Text<00:10:37.279> is<00:10:37.440> sometimes<00:10:37.839> exactly" + }, + { + "start": 638.15, + "duration": 0.0, + "text": "like this. Text is sometimes exactly" + }, + { + "start": 638.16, + "duration": 0.0, + "text": "like this. Text is sometimes exactly what<00:10:38.399> you<00:10:38.560> want.<00:10:38.880> It's<00:10:39.040> often<00:10:39.360> times<00:10:40.240> uh<00:10:40.640> not." + }, + { + "start": 641.75, + "duration": 0.0, + "text": "what you want. It's often times uh not." + }, + { + "start": 641.76, + "duration": 0.0, + "text": "what you want. It's often times uh not. Uh<00:10:42.399> but<00:10:42.720> this<00:10:42.880> is<00:10:42.959> the<00:10:43.120> problem<00:10:43.279> I<00:10:43.440> suggested" + }, + { + "start": 643.829, + "duration": 0.0, + "text": "Uh but this is the problem I suggested" + }, + { + "start": 643.839, + "duration": 0.0, + "text": "Uh but this is the problem I suggested we<00:10:44.000> could<00:10:44.160> solve.<00:10:44.880> So<00:10:45.120> even<00:10:45.279> when<00:10:45.519> text<00:10:45.760> is<00:10:45.920> not" + }, + { + "start": 646.15, + "duration": 0.0, + "text": "we could solve. So even when text is not" + }, + { + "start": 646.16, + "duration": 0.0, + "text": "we could solve. So even when text is not enough,<00:10:46.640> you<00:10:46.880> didn't<00:10:47.120> necessarily<00:10:47.680> need<00:10:47.920> your" + }, + { + "start": 648.15, + "duration": 0.0, + "text": "enough, you didn't necessarily need your" + }, + { + "start": 648.16, + "duration": 0.0, + "text": "enough, you didn't necessarily need your log<00:10:48.880> to<00:10:49.200> just<00:10:49.440> produce<00:10:49.760> text.<00:10:50.079> You<00:10:50.240> didn't" + }, + { + "start": 650.389, + "duration": 0.0, + "text": "log to just produce text. You didn't" + }, + { + "start": 650.399, + "duration": 0.0, + "text": "log to just produce text. You didn't just<00:10:50.640> need<00:10:50.800> the<00:10:50.959> print<00:10:51.279> statement,<00:10:51.680> right?<00:10:52.000> Or" + }, + { + "start": 652.23, + "duration": 0.0, + "text": "just need the print statement, right? Or" + }, + { + "start": 652.24, + "duration": 0.0, + "text": "just need the print statement, right? Or maybe<00:10:52.399> that's<00:10:52.640> not<00:10:52.800> the<00:10:52.880> only<00:10:53.040> thing<00:10:53.120> you" + }, + { + "start": 653.269, + "duration": 0.0, + "text": "maybe that's not the only thing you" + }, + { + "start": 653.279, + "duration": 0.0, + "text": "maybe that's not the only thing you could<00:10:53.440> have<00:10:53.680> done.<00:10:54.640> So<00:10:54.800> this<00:10:55.040> is<00:10:55.120> an<00:10:55.279> example" + }, + { + "start": 655.509, + "duration": 0.0, + "text": "could have done. So this is an example" + }, + { + "start": 655.519, + "duration": 0.0, + "text": "could have done. So this is an example of<00:10:55.680> one<00:10:55.920> solution<00:10:56.079> to<00:10:56.320> that<00:10:56.480> problem.<00:10:56.880> This<00:10:57.040> is" + }, + { + "start": 657.11, + "duration": 0.0, + "text": "of one solution to that problem. This is" + }, + { + "start": 657.12, + "duration": 0.0, + "text": "of one solution to that problem. This is graph<00:10:57.440> viz<00:10:58.640> um<00:10:59.360> uh<00:10:59.440> or<00:10:59.600> a<00:10:59.760> screenshot<00:11:00.079> from<00:11:00.160> the" + }, + { + "start": 660.23, + "duration": 0.0, + "text": "graph viz um uh or a screenshot from the" + }, + { + "start": 660.24, + "duration": 0.0, + "text": "graph viz um uh or a screenshot from the graph<00:11:00.480> viz<00:11:00.720> visualizer.<00:11:01.360> In<00:11:01.519> this<00:11:01.600> case,<00:11:01.839> you" + }, + { + "start": 662.069, + "duration": 0.0, + "text": "graph viz visualizer. In this case, you" + }, + { + "start": 662.079, + "duration": 0.0, + "text": "graph viz visualizer. In this case, you your<00:11:02.240> program<00:11:02.560> still<00:11:02.720> outputs<00:11:03.120> text,<00:11:04.079> but" + }, + { + "start": 664.31, + "duration": 0.0, + "text": "your program still outputs text, but" + }, + { + "start": 664.32, + "duration": 0.0, + "text": "your program still outputs text, but it's<00:11:04.800> um<00:11:06.160> uh<00:11:06.399> it<00:11:06.640> outputs<00:11:07.120> text<00:11:07.279> in<00:11:07.440> a" + }, + { + "start": 667.59, + "duration": 0.0, + "text": "it's um uh it outputs text in a" + }, + { + "start": 667.6, + "duration": 0.0, + "text": "it's um uh it outputs text in a structured<00:11:07.920> format<00:11:08.240> that<00:11:08.399> can<00:11:08.480> be<00:11:08.640> parsed<00:11:08.880> by" + }, + { + "start": 668.949, + "duration": 0.0, + "text": "structured format that can be parsed by" + }, + { + "start": 668.959, + "duration": 0.0, + "text": "structured format that can be parsed by a<00:11:09.040> visualizer<00:11:09.519> program.<00:11:10.240> present<00:11:10.560> your<00:11:10.720> data" + }, + { + "start": 670.949, + "duration": 0.0, + "text": "a visualizer program. present your data" + }, + { + "start": 670.959, + "duration": 0.0, + "text": "a visualizer program. present your data like<00:11:11.120> a<00:11:11.279> graph<00:11:11.519> like<00:11:11.680> this,<00:11:12.160> right?" + }, + { + "start": 674.23, + "duration": 0.0, + "text": "like a graph like this, right?" + }, + { + "start": 674.24, + "duration": 0.0, + "text": "like a graph like this, right? Another<00:11:14.560> example,<00:11:14.959> this<00:11:15.120> is<00:11:15.279> a<00:11:15.440> mustache<00:11:16.160> made" + }, + { + "start": 676.47, + "duration": 0.0, + "text": "Another example, this is a mustache made" + }, + { + "start": 676.48, + "duration": 0.0, + "text": "Another example, this is a mustache made by<00:11:16.720> Casey,<00:11:17.120> who<00:11:17.279> you<00:11:17.440> all<00:11:17.600> heard<00:11:17.760> from" + }, + { + "start": 678.069, + "duration": 0.0, + "text": "by Casey, who you all heard from" + }, + { + "start": 678.079, + "duration": 0.0, + "text": "by Casey, who you all heard from yesterday.<00:11:19.040> Um,<00:11:19.519> specifically<00:11:20.160> designed<00:11:20.480> to" + }, + { + "start": 680.949, + "duration": 0.0, + "text": "yesterday. Um, specifically designed to" + }, + { + "start": 680.959, + "duration": 0.0, + "text": "yesterday. Um, specifically designed to debug<00:11:21.760> image<00:11:22.000> and<00:11:22.240> video<00:11:22.480> compression" + }, + { + "start": 683.11, + "duration": 0.0, + "text": "debug image and video compression" + }, + { + "start": 683.12, + "duration": 0.0, + "text": "debug image and video compression software.<00:11:24.079> Um,<00:11:24.560> so<00:11:24.800> this<00:11:25.120> system<00:11:25.440> works" + }, + { + "start": 685.99, + "duration": 0.0, + "text": "software. Um, so this system works" + }, + { + "start": 686.0, + "duration": 0.0, + "text": "software. Um, so this system works pretty<00:11:26.320> much<00:11:26.399> the<00:11:26.560> same<00:11:26.720> way<00:11:26.800> as<00:11:27.040> print" + }, + { + "start": 687.269, + "duration": 0.0, + "text": "pretty much the same way as print" + }, + { + "start": 687.279, + "duration": 0.0, + "text": "pretty much the same way as print debugging,<00:11:28.079> but<00:11:28.399> it's<00:11:28.800> structured,<00:11:29.360> right?" + }, + { + "start": 689.509, + "duration": 0.0, + "text": "debugging, but it's structured, right?" + }, + { + "start": 689.519, + "duration": 0.0, + "text": "debugging, but it's structured, right? It's<00:11:29.680> not<00:11:29.839> just<00:11:30.000> textual<00:11:30.399> data.<00:11:30.640> It's<00:11:30.800> not" + }, + { + "start": 690.949, + "duration": 0.0, + "text": "It's not just textual data. It's not" + }, + { + "start": 690.959, + "duration": 0.0, + "text": "It's not just textual data. It's not presented<00:11:31.200> as<00:11:31.360> text<00:11:31.680> as<00:11:31.839> just<00:11:32.079> textual<00:11:32.480> data." + }, + { + "start": 693.75, + "duration": 0.0, + "text": "presented as text as just textual data." + }, + { + "start": 693.76, + "duration": 0.0, + "text": "presented as text as just textual data. Um,<00:11:35.040> in<00:11:35.200> the<00:11:35.360> same<00:11:35.519> vein,<00:11:36.240> there's<00:11:36.480> this" + }, + { + "start": 696.71, + "duration": 0.0, + "text": "Um, in the same vein, there's this" + }, + { + "start": 696.72, + "duration": 0.0, + "text": "Um, in the same vein, there's this program<00:11:37.120> called<00:11:37.360> render<00:11:37.680> doc.<00:11:38.880> Um,<00:11:39.440> anyone" + }, + { + "start": 699.75, + "duration": 0.0, + "text": "program called render doc. Um, anyone" + }, + { + "start": 699.76, + "duration": 0.0, + "text": "program called render doc. Um, anyone who's<00:11:40.079> done<00:11:40.320> any<00:11:40.560> amount<00:11:40.800> of<00:11:40.880> GPU<00:11:41.360> programming" + }, + { + "start": 701.829, + "duration": 0.0, + "text": "who's done any amount of GPU programming" + }, + { + "start": 701.839, + "duration": 0.0, + "text": "who's done any amount of GPU programming probably<00:11:42.240> knows<00:11:43.120> that<00:11:43.360> like<00:11:43.680> this<00:11:44.079> without" + }, + { + "start": 704.389, + "duration": 0.0, + "text": "probably knows that like this without" + }, + { + "start": 704.399, + "duration": 0.0, + "text": "probably knows that like this without this<00:11:44.640> program,<00:11:45.040> your<00:11:45.279> life<00:11:46.320> was<00:11:46.640> probably" + }, + { + "start": 706.949, + "duration": 0.0, + "text": "this program, your life was probably" + }, + { + "start": 706.959, + "duration": 0.0, + "text": "this program, your life was probably pretty<00:11:47.200> bad.<00:11:47.600> Like,<00:11:48.000> uh,<00:11:48.640> everyone<00:11:48.959> has<00:11:49.120> their" + }, + { + "start": 709.35, + "duration": 0.0, + "text": "pretty bad. Like, uh, everyone has their" + }, + { + "start": 709.36, + "duration": 0.0, + "text": "pretty bad. Like, uh, everyone has their story<00:11:49.519> of<00:11:49.680> like<00:11:49.920> you<00:11:50.079> set<00:11:50.240> up<00:11:50.399> all<00:11:50.560> this" + }, + { + "start": 710.79, + "duration": 0.0, + "text": "story of like you set up all this" + }, + { + "start": 710.8, + "duration": 0.0, + "text": "story of like you set up all this boilerplate<00:11:51.440> OpenGL,<00:11:52.000> Vulcan<00:11:52.399> code," + }, + { + "start": 712.63, + "duration": 0.0, + "text": "boilerplate OpenGL, Vulcan code," + }, + { + "start": 712.64, + "duration": 0.0, + "text": "boilerplate OpenGL, Vulcan code, whatever<00:11:52.880> it<00:11:53.040> is.<00:11:54.000> You<00:11:54.160> run<00:11:54.399> your<00:11:54.560> program," + }, + { + "start": 714.87, + "duration": 0.0, + "text": "whatever it is. You run your program," + }, + { + "start": 714.88, + "duration": 0.0, + "text": "whatever it is. You run your program, you're<00:11:55.120> really<00:11:55.279> excited<00:11:56.399> and<00:11:56.560> there's<00:11:56.800> a" + }, + { + "start": 716.949, + "duration": 0.0, + "text": "you're really excited and there's a" + }, + { + "start": 716.959, + "duration": 0.0, + "text": "you're really excited and there's a black<00:11:57.200> screen<00:11:57.760> like<00:11:58.000> it's<00:11:58.160> just<00:11:58.320> like<00:11:58.480> what's" + }, + { + "start": 718.63, + "duration": 0.0, + "text": "black screen like it's just like what's" + }, + { + "start": 718.64, + "duration": 0.0, + "text": "black screen like it's just like what's what's<00:11:58.959> going<00:11:59.040> on,<00:11:59.440> right?<00:12:00.480> Um,<00:12:01.440> render<00:12:01.760> doc's" + }, + { + "start": 722.069, + "duration": 0.0, + "text": "what's going on, right? Um, render doc's" + }, + { + "start": 722.079, + "duration": 0.0, + "text": "what's going on, right? Um, render doc's like<00:12:02.240> extremely<00:12:02.560> useful.<00:12:02.880> So,<00:12:02.959> it<00:12:03.120> sort<00:12:03.279> of" + }, + { + "start": 723.35, + "duration": 0.0, + "text": "like extremely useful. So, it sort of" + }, + { + "start": 723.36, + "duration": 0.0, + "text": "like extremely useful. So, it sort of logs<00:12:03.680> all<00:12:03.760> the<00:12:03.920> API<00:12:04.240> calls<00:12:04.560> you<00:12:04.720> get<00:12:05.040> and<00:12:05.279> it" + }, + { + "start": 725.509, + "duration": 0.0, + "text": "logs all the API calls you get and it" + }, + { + "start": 725.519, + "duration": 0.0, + "text": "logs all the API calls you get and it captures<00:12:05.920> state.<00:12:06.240> It<00:12:06.399> hooks<00:12:06.720> those<00:12:06.880> APIs<00:12:07.279> and" + }, + { + "start": 727.509, + "duration": 0.0, + "text": "captures state. It hooks those APIs and" + }, + { + "start": 727.519, + "duration": 0.0, + "text": "captures state. It hooks those APIs and it<00:12:07.760> captures<00:12:08.160> that<00:12:08.399> state<00:12:09.040> and<00:12:09.279> presents<00:12:09.600> it" + }, + { + "start": 729.75, + "duration": 0.0, + "text": "it captures that state and presents it" + }, + { + "start": 729.76, + "duration": 0.0, + "text": "it captures that state and presents it in<00:12:09.920> this<00:12:10.079> form.<00:12:10.320> It<00:12:10.399> knows<00:12:10.639> the<00:12:10.800> before<00:12:10.959> and" + }, + { + "start": 731.11, + "duration": 0.0, + "text": "in this form. It knows the before and" + }, + { + "start": 731.12, + "duration": 0.0, + "text": "in this form. It knows the before and after<00:12:11.360> states<00:12:11.600> of<00:12:11.760> every<00:12:11.920> GPU<00:12:12.399> resource<00:12:12.720> that" + }, + { + "start": 732.949, + "duration": 0.0, + "text": "after states of every GPU resource that" + }, + { + "start": 732.959, + "duration": 0.0, + "text": "after states of every GPU resource that you<00:12:13.040> touch<00:12:14.160> um<00:12:14.959> when<00:12:15.120> you<00:12:15.360> when<00:12:15.519> you<00:12:15.600> make" + }, + { + "start": 735.75, + "duration": 0.0, + "text": "you touch um when you when you make" + }, + { + "start": 735.76, + "duration": 0.0, + "text": "you touch um when you when you make those<00:12:15.920> API<00:12:16.320> calls,<00:12:16.639> right?<00:12:17.680> Or<00:12:18.000> caused<00:12:18.240> by<00:12:18.399> the" + }, + { + "start": 738.55, + "duration": 0.0, + "text": "those API calls, right? Or caused by the" + }, + { + "start": 738.56, + "duration": 0.0, + "text": "those API calls, right? Or caused by the work<00:12:18.959> implied<00:12:19.360> by<00:12:19.519> those<00:12:19.680> API<00:12:20.000> calls.<00:12:20.639> Uh<00:12:20.800> so" + }, + { + "start": 741.03, + "duration": 0.0, + "text": "work implied by those API calls. Uh so" + }, + { + "start": 741.04, + "duration": 0.0, + "text": "work implied by those API calls. Uh so it's<00:12:21.120> another<00:12:21.360> example.<00:12:21.680> It's<00:12:21.839> yet<00:12:22.000> another" + }, + { + "start": 742.23, + "duration": 0.0, + "text": "it's another example. It's yet another" + }, + { + "start": 742.24, + "duration": 0.0, + "text": "it's another example. It's yet another structure<00:12:22.480> of<00:12:22.639> a<00:12:22.800> structured<00:12:23.600> non-extual" + }, + { + "start": 744.31, + "duration": 0.0, + "text": "structure of a structured non-extual" + }, + { + "start": 744.32, + "duration": 0.0, + "text": "structure of a structured non-extual log.<00:12:25.120> So<00:12:25.360> just<00:12:25.519> to<00:12:25.680> be<00:12:25.839> clear,<00:12:26.560> I'm<00:12:26.800> not<00:12:26.880> saying" + }, + { + "start": 747.03, + "duration": 0.0, + "text": "log. So just to be clear, I'm not saying" + }, + { + "start": 747.04, + "duration": 0.0, + "text": "log. So just to be clear, I'm not saying that<00:12:27.279> logging<00:12:27.680> is<00:12:27.920> wrong<00:12:28.399> or<00:12:28.720> not<00:12:28.959> useful<00:12:29.519> or" + }, + { + "start": 749.75, + "duration": 0.0, + "text": "that logging is wrong or not useful or" + }, + { + "start": 749.76, + "duration": 0.0, + "text": "that logging is wrong or not useful or can't<00:12:30.000> be<00:12:30.160> better<00:12:30.480> than<00:12:30.720> just<00:12:30.880> like<00:12:31.040> helpless" + }, + { + "start": 751.35, + "duration": 0.0, + "text": "can't be better than just like helpless" + }, + { + "start": 751.36, + "duration": 0.0, + "text": "can't be better than just like helpless print<00:12:31.600> debugging.<00:12:32.639> But<00:12:32.800> there's<00:12:32.959> another" + }, + { + "start": 753.269, + "duration": 0.0, + "text": "print debugging. But there's another" + }, + { + "start": 753.279, + "duration": 0.0, + "text": "print debugging. But there's another problem.<00:12:34.720> Problem<00:12:35.040> number<00:12:35.279> two" + }, + { + "start": 757.59, + "duration": 0.0, + "text": "problem. Problem number two" + }, + { + "start": 757.6, + "duration": 0.0, + "text": "problem. Problem number two is<00:12:37.920> time<00:12:38.720> and<00:12:38.959> thus<00:12:39.279> money<00:12:39.600> and<00:12:39.839> sanity.<00:12:41.279> The" + }, + { + "start": 761.509, + "duration": 0.0, + "text": "is time and thus money and sanity. The" + }, + { + "start": 761.519, + "duration": 0.0, + "text": "is time and thus money and sanity. The second<00:12:41.760> major<00:12:42.079> problem<00:12:42.480> with<00:12:42.800> log<00:12:43.360> uh" + }, + { + "start": 763.59, + "duration": 0.0, + "text": "second major problem with log uh" + }, + { + "start": 763.6, + "duration": 0.0, + "text": "second major problem with log uh debugging<00:12:44.079> is<00:12:44.320> that<00:12:44.880> it<00:12:45.040> often<00:12:45.360> requires" + }, + { + "start": 765.75, + "duration": 0.0, + "text": "debugging is that it often requires" + }, + { + "start": 765.76, + "duration": 0.0, + "text": "debugging is that it often requires modifications<00:12:46.320> of<00:12:46.560> the<00:12:46.800> program<00:12:47.600> that<00:12:47.839> you're" + }, + { + "start": 767.99, + "duration": 0.0, + "text": "modifications of the program that you're" + }, + { + "start": 768.0, + "duration": 0.0, + "text": "modifications of the program that you're digging<00:12:48.320> into.<00:12:48.959> So<00:12:49.120> let's<00:12:49.360> set<00:12:49.519> aside<00:12:49.760> the" + }, + { + "start": 769.91, + "duration": 0.0, + "text": "digging into. So let's set aside the" + }, + { + "start": 769.92, + "duration": 0.0, + "text": "digging into. So let's set aside the cases<00:12:50.079> where<00:12:50.240> you<00:12:50.399> can't<00:12:50.560> actually<00:12:50.720> do<00:12:50.880> that," + }, + { + "start": 771.11, + "duration": 0.0, + "text": "cases where you can't actually do that," + }, + { + "start": 771.12, + "duration": 0.0, + "text": "cases where you can't actually do that, right?<00:12:51.519> Like<00:12:51.680> you're<00:12:51.920> not<00:12:52.000> doing<00:12:52.160> any<00:12:52.399> reverse" + }, + { + "start": 772.71, + "duration": 0.0, + "text": "right? Like you're not doing any reverse" + }, + { + "start": 772.72, + "duration": 0.0, + "text": "right? Like you're not doing any reverse engineering.<00:12:53.680> You're<00:12:53.920> not<00:12:54.399> uh<00:12:55.040> you're<00:12:55.200> not" + }, + { + "start": 775.43, + "duration": 0.0, + "text": "engineering. You're not uh you're not" + }, + { + "start": 775.44, + "duration": 0.0, + "text": "engineering. You're not uh you're not doing<00:12:55.600> any<00:12:55.760> of<00:12:55.839> that.<00:12:56.160> You<00:12:56.399> can<00:12:56.480> control<00:12:56.800> your" + }, + { + "start": 776.949, + "duration": 0.0, + "text": "doing any of that. You can control your" + }, + { + "start": 776.959, + "duration": 0.0, + "text": "doing any of that. You can control your program.<00:12:57.279> You<00:12:57.440> can<00:12:57.519> modify<00:12:57.760> the<00:12:58.000> program." + }, + { + "start": 778.389, + "duration": 0.0, + "text": "program. You can modify the program." + }, + { + "start": 778.399, + "duration": 0.0, + "text": "program. You can modify the program. There's<00:12:58.639> still<00:12:58.800> a<00:12:59.040> problem<00:12:59.200> with<00:12:59.519> requiring" + }, + { + "start": 779.91, + "duration": 0.0, + "text": "There's still a problem with requiring" + }, + { + "start": 779.92, + "duration": 0.0, + "text": "There's still a problem with requiring that<00:13:00.160> in<00:13:00.399> order<00:13:00.560> to<00:13:00.720> get<00:13:01.040> at<00:13:01.360> very<00:13:01.600> simple" + }, + { + "start": 781.91, + "duration": 0.0, + "text": "that in order to get at very simple" + }, + { + "start": 781.92, + "duration": 0.0, + "text": "that in order to get at very simple information." + }, + { + "start": 783.43, + "duration": 0.0, + "text": "information." + }, + { + "start": 783.44, + "duration": 0.0, + "text": "information. Let's<00:13:03.680> walk<00:13:03.920> through<00:13:04.079> the<00:13:04.320> series<00:13:04.480> of<00:13:04.720> steps" + }, + { + "start": 785.75, + "duration": 0.0, + "text": "Let's walk through the series of steps" + }, + { + "start": 785.76, + "duration": 0.0, + "text": "Let's walk through the series of steps you<00:13:06.000> might<00:13:06.160> go<00:13:06.320> through<00:13:06.480> when<00:13:06.720> using<00:13:06.959> logs<00:13:08.079> uh" + }, + { + "start": 788.15, + "duration": 0.0, + "text": "you might go through when using logs uh" + }, + { + "start": 788.16, + "duration": 0.0, + "text": "you might go through when using logs uh in<00:13:08.399> order<00:13:08.480> to<00:13:08.720> debug<00:13:09.279> a<00:13:09.519> black<00:13:09.839> box.<00:13:11.040> So<00:13:11.279> first" + }, + { + "start": 791.67, + "duration": 0.0, + "text": "in order to debug a black box. So first" + }, + { + "start": 791.68, + "duration": 0.0, + "text": "in order to debug a black box. So first you're<00:13:11.920> presumably<00:13:12.800> writing<00:13:13.120> some<00:13:13.360> code<00:13:13.600> for" + }, + { + "start": 793.75, + "duration": 0.0, + "text": "you're presumably writing some code for" + }, + { + "start": 793.76, + "duration": 0.0, + "text": "you're presumably writing some code for some<00:13:13.920> actual<00:13:14.240> task<00:13:14.480> you<00:13:14.720> have.<00:13:15.519> Um,<00:13:16.320> number" + }, + { + "start": 796.629, + "duration": 0.0, + "text": "some actual task you have. Um, number" + }, + { + "start": 796.639, + "duration": 0.0, + "text": "some actual task you have. Um, number two,<00:13:16.880> you<00:13:17.200> build,<00:13:17.600> right?<00:13:17.760> You<00:13:17.920> wait<00:13:18.000> for<00:13:18.160> your" + }, + { + "start": 798.23, + "duration": 0.0, + "text": "two, you build, right? You wait for your" + }, + { + "start": 798.24, + "duration": 0.0, + "text": "two, you build, right? You wait for your build<00:13:18.399> to<00:13:18.560> complete,<00:13:19.120> you<00:13:19.360> run,<00:13:19.760> create" + }, + { + "start": 800.069, + "duration": 0.0, + "text": "build to complete, you run, create" + }, + { + "start": 800.079, + "duration": 0.0, + "text": "build to complete, you run, create whatever<00:13:20.399> state<00:13:20.639> you<00:13:20.880> wanted<00:13:21.120> to<00:13:21.200> be<00:13:21.279> in<00:13:21.519> to" + }, + { + "start": 801.75, + "duration": 0.0, + "text": "whatever state you wanted to be in to" + }, + { + "start": 801.76, + "duration": 0.0, + "text": "whatever state you wanted to be in to observe<00:13:22.160> the<00:13:22.320> code<00:13:22.480> that<00:13:22.720> you<00:13:22.800> wrote,<00:13:23.279> and" + }, + { + "start": 803.509, + "duration": 0.0, + "text": "observe the code that you wrote, and" + }, + { + "start": 803.519, + "duration": 0.0, + "text": "observe the code that you wrote, and then<00:13:23.680> you<00:13:24.000> check<00:13:24.240> the<00:13:24.399> log,<00:13:24.639> right?<00:13:24.880> You" + }, + { + "start": 804.949, + "duration": 0.0, + "text": "then you check the log, right? You" + }, + { + "start": 804.959, + "duration": 0.0, + "text": "then you check the log, right? You observe<00:13:25.279> the<00:13:25.440> log." + }, + { + "start": 807.99, + "duration": 0.0, + "text": "observe the log." + }, + { + "start": 808.0, + "duration": 0.0, + "text": "observe the log. And<00:13:28.079> then<00:13:28.240> a<00:13:28.480> very<00:13:28.720> common<00:13:29.279> outcome<00:13:29.680> of<00:13:29.839> this" + }, + { + "start": 810.069, + "duration": 0.0, + "text": "And then a very common outcome of this" + }, + { + "start": 810.079, + "duration": 0.0, + "text": "And then a very common outcome of this process<00:13:30.480> is<00:13:31.040> you<00:13:31.200> realize<00:13:31.600> info<00:13:31.920> you<00:13:32.079> didn't" + }, + { + "start": 812.55, + "duration": 0.0, + "text": "process is you realize info you didn't" + }, + { + "start": 812.56, + "duration": 0.0, + "text": "process is you realize info you didn't uh<00:13:32.639> you<00:13:32.880> needed<00:13:33.360> isn't<00:13:33.760> logged,<00:13:34.800> you<00:13:34.959> add<00:13:35.200> new" + }, + { + "start": 815.35, + "duration": 0.0, + "text": "uh you needed isn't logged, you add new" + }, + { + "start": 815.36, + "duration": 0.0, + "text": "uh you needed isn't logged, you add new logging<00:13:35.760> code,<00:13:35.920> and<00:13:36.079> you<00:13:36.240> go<00:13:36.399> back<00:13:36.560> up<00:13:36.639> to<00:13:36.800> the" + }, + { + "start": 816.949, + "duration": 0.0, + "text": "logging code, and you go back up to the" + }, + { + "start": 816.959, + "duration": 0.0, + "text": "logging code, and you go back up to the build<00:13:37.200> step,<00:13:37.440> and<00:13:37.600> you<00:13:37.760> run<00:13:37.920> an<00:13:38.160> observe.<00:13:38.639> Same" + }, + { + "start": 818.87, + "duration": 0.0, + "text": "build step, and you run an observe. Same" + }, + { + "start": 818.88, + "duration": 0.0, + "text": "build step, and you run an observe. Same thing<00:13:38.959> with<00:13:39.120> profiling.<00:13:39.920> Same<00:13:40.079> thing<00:13:40.160> with" + }, + { + "start": 820.629, + "duration": 0.0, + "text": "thing with profiling. Same thing with" + }, + { + "start": 820.639, + "duration": 0.0, + "text": "thing with profiling. Same thing with any<00:13:40.959> form<00:13:41.120> of<00:13:41.279> logging<00:13:41.680> is<00:13:41.839> like<00:13:42.000> this,<00:13:42.320> right?" + }, + { + "start": 822.55, + "duration": 0.0, + "text": "any form of logging is like this, right?" + }, + { + "start": 822.56, + "duration": 0.0, + "text": "any form of logging is like this, right? because<00:13:42.800> you're<00:13:43.040> it's<00:13:43.600> explicitly<00:13:44.240> wired" + }, + { + "start": 824.55, + "duration": 0.0, + "text": "because you're it's explicitly wired" + }, + { + "start": 824.56, + "duration": 0.0, + "text": "because you're it's explicitly wired into<00:13:44.880> the<00:13:45.040> to<00:13:45.200> the<00:13:45.360> program's<00:13:45.839> code,<00:13:46.160> right?" + }, + { + "start": 827.43, + "duration": 0.0, + "text": "into the to the program's code, right?" + }, + { + "start": 827.44, + "duration": 0.0, + "text": "into the to the program's code, right? In<00:13:47.680> other<00:13:47.839> words,<00:13:49.120> let's<00:13:49.360> say<00:13:49.519> you're<00:13:49.680> missing" + }, + { + "start": 829.91, + "duration": 0.0, + "text": "In other words, let's say you're missing" + }, + { + "start": 829.92, + "duration": 0.0, + "text": "In other words, let's say you're missing some<00:13:50.240> expression<00:13:50.720> X<00:13:51.200> from<00:13:51.440> the<00:13:51.600> log,<00:13:52.000> where<00:13:52.240> X" + }, + { + "start": 832.55, + "duration": 0.0, + "text": "some expression X from the log, where X" + }, + { + "start": 832.56, + "duration": 0.0, + "text": "some expression X from the log, where X could<00:13:52.720> be<00:13:52.800> anything<00:13:53.040> you<00:13:53.279> might<00:13:53.440> evaluate" + }, + { + "start": 833.99, + "duration": 0.0, + "text": "could be anything you might evaluate" + }, + { + "start": 834.0, + "duration": 0.0, + "text": "could be anything you might evaluate within<00:13:54.240> a<00:13:54.399> log<00:13:54.639> or<00:13:54.880> print<00:13:55.120> statement<00:13:56.320> after" + }, + { + "start": 836.629, + "duration": 0.0, + "text": "within a log or print statement after" + }, + { + "start": 836.639, + "duration": 0.0, + "text": "within a log or print statement after you<00:13:56.880> discover<00:13:57.279> this,<00:13:58.240> the<00:13:58.480> new<00:13:58.800> information" + }, + { + "start": 839.189, + "duration": 0.0, + "text": "you discover this, the new information" + }, + { + "start": 839.199, + "duration": 0.0, + "text": "you discover this, the new information you<00:13:59.680> have<00:13:59.920> that<00:14:00.160> you<00:14:00.320> could<00:14:00.480> enter<00:14:00.720> into<00:14:00.880> the" + }, + { + "start": 841.11, + "duration": 0.0, + "text": "you have that you could enter into the" + }, + { + "start": 841.12, + "duration": 0.0, + "text": "you have that you could enter into the system<00:14:01.519> is<00:14:01.760> simply<00:14:02.160> X.<00:14:03.199> In<00:14:03.360> a<00:14:03.600> very<00:14:04.000> basic," + }, + { + "start": 844.629, + "duration": 0.0, + "text": "system is simply X. In a very basic," + }, + { + "start": 844.639, + "duration": 0.0, + "text": "system is simply X. In a very basic, more<00:14:04.959> ideal<00:14:06.320> user<00:14:06.720> flow,<00:14:07.600> you<00:14:07.760> would<00:14:07.920> just" + }, + { + "start": 848.069, + "duration": 0.0, + "text": "more ideal user flow, you would just" + }, + { + "start": 848.079, + "duration": 0.0, + "text": "more ideal user flow, you would just have<00:14:08.240> to<00:14:08.399> write<00:14:08.560> that.<00:14:08.800> You<00:14:08.959> just<00:14:09.040> have<00:14:09.120> to<00:14:09.279> say" + }, + { + "start": 849.43, + "duration": 0.0, + "text": "have to write that. You just have to say" + }, + { + "start": 849.44, + "duration": 0.0, + "text": "have to write that. You just have to say X.<00:14:09.760> X<00:14:10.000> is<00:14:10.079> what<00:14:10.240> I'm<00:14:10.399> looking<00:14:10.560> for,<00:14:11.279> right?" + }, + { + "start": 851.59, + "duration": 0.0, + "text": "X. X is what I'm looking for, right?" + }, + { + "start": 851.6, + "duration": 0.0, + "text": "X. X is what I'm looking for, right? Instead,<00:14:12.160> you'd<00:14:12.560> find<00:14:12.639> a<00:14:12.800> spot<00:14:12.959> in<00:14:13.120> your<00:14:13.279> code," + }, + { + "start": 853.91, + "duration": 0.0, + "text": "Instead, you'd find a spot in your code," + }, + { + "start": 853.92, + "duration": 0.0, + "text": "Instead, you'd find a spot in your code, write<00:14:14.160> the<00:14:14.399> extra<00:14:14.639> printing<00:14:14.959> or<00:14:15.120> logging" + }, + { + "start": 855.509, + "duration": 0.0, + "text": "write the extra printing or logging" + }, + { + "start": 855.519, + "duration": 0.0, + "text": "write the extra printing or logging code,<00:14:15.760> and<00:14:16.000> that's<00:14:16.160> like<00:14:16.320> the<00:14:16.480> best<00:14:16.720> case," + }, + { + "start": 856.949, + "duration": 0.0, + "text": "code, and that's like the best case," + }, + { + "start": 856.959, + "duration": 0.0, + "text": "code, and that's like the best case, right?<00:14:17.199> We<00:14:17.360> don't<00:14:17.440> know<00:14:17.440> what<00:14:17.680> it's<00:14:17.839> going<00:14:17.920> to" + }, + { + "start": 857.99, + "duration": 0.0, + "text": "right? We don't know what it's going to" + }, + { + "start": 858.0, + "duration": 0.0, + "text": "right? We don't know what it's going to look<00:14:18.160> like.<00:14:18.959> Um,<00:14:19.440> you<00:14:19.680> build," + }, + { + "start": 861.189, + "duration": 0.0, + "text": "look like. Um, you build," + }, + { + "start": 861.199, + "duration": 0.0, + "text": "look like. Um, you build, you<00:14:21.440> run<00:14:21.600> and<00:14:21.760> recreate<00:14:22.160> whatever<00:14:22.480> state<00:14:22.720> you" + }, + { + "start": 862.87, + "duration": 0.0, + "text": "you run and recreate whatever state you" + }, + { + "start": 862.88, + "duration": 0.0, + "text": "you run and recreate whatever state you wanted<00:14:23.120> to<00:14:23.199> be<00:14:23.279> in,<00:14:23.680> and<00:14:23.920> you<00:14:24.079> browse<00:14:24.320> the<00:14:24.480> log" + }, + { + "start": 864.71, + "duration": 0.0, + "text": "wanted to be in, and you browse the log" + }, + { + "start": 864.72, + "duration": 0.0, + "text": "wanted to be in, and you browse the log again." + }, + { + "start": 866.55, + "duration": 0.0, + "text": "again." + }, + { + "start": 866.56, + "duration": 0.0, + "text": "again. And<00:14:27.040> needless<00:14:27.440> to<00:14:27.600> say,<00:14:27.760> the<00:14:28.000> huge<00:14:28.240> problem" + }, + { + "start": 868.389, + "duration": 0.0, + "text": "And needless to say, the huge problem" + }, + { + "start": 868.399, + "duration": 0.0, + "text": "And needless to say, the huge problem with<00:14:28.639> this,<00:14:29.839> this<00:14:30.320> is<00:14:30.720> roughly<00:14:31.199> instant<00:14:31.839> for" + }, + { + "start": 872.069, + "duration": 0.0, + "text": "with this, this is roughly instant for" + }, + { + "start": 872.079, + "duration": 0.0, + "text": "with this, this is roughly instant for the<00:14:32.320> user." + }, + { + "start": 874.23, + "duration": 0.0, + "text": "the user." + }, + { + "start": 874.24, + "duration": 0.0, + "text": "the user. This<00:14:34.639> is<00:14:34.880> often<00:14:35.279> frustratingly<00:14:36.000> long.<00:14:37.199> So" + }, + { + "start": 877.43, + "duration": 0.0, + "text": "This is often frustratingly long. So" + }, + { + "start": 877.44, + "duration": 0.0, + "text": "This is often frustratingly long. So even<00:14:37.600> in<00:14:37.839> a<00:14:38.000> small<00:14:38.320> wellorganized<00:14:38.959> codebase" + }, + { + "start": 879.35, + "duration": 0.0, + "text": "even in a small wellorganized codebase" + }, + { + "start": 879.36, + "duration": 0.0, + "text": "even in a small wellorganized codebase that<00:14:39.600> builds<00:14:39.920> very<00:14:40.160> quickly<00:14:41.440> uh<00:14:41.600> that's" + }, + { + "start": 881.99, + "duration": 0.0, + "text": "that builds very quickly uh that's" + }, + { + "start": 882.0, + "duration": 0.0, + "text": "that builds very quickly uh that's optimized<00:14:42.560> for<00:14:42.800> very<00:14:43.120> good<00:14:43.360> development" + }, + { + "start": 883.829, + "duration": 0.0, + "text": "optimized for very good development" + }, + { + "start": 883.839, + "duration": 0.0, + "text": "optimized for very good development times<00:14:45.120> this<00:14:45.360> will<00:14:45.519> take<00:14:45.680> many<00:14:45.920> extra<00:14:46.240> seconds." + }, + { + "start": 887.99, + "duration": 0.0, + "text": "times this will take many extra seconds." + }, + { + "start": 888.0, + "duration": 0.0, + "text": "times this will take many extra seconds. Um<00:14:48.399> furthermore<00:14:48.880> if<00:14:48.959> a<00:14:49.120> codebase<00:14:49.519> isn't" + }, + { + "start": 889.75, + "duration": 0.0, + "text": "Um furthermore if a codebase isn't" + }, + { + "start": 889.76, + "duration": 0.0, + "text": "Um furthermore if a codebase isn't prepared<00:14:50.000> to<00:14:50.240> recreate<00:14:50.720> state<00:14:51.040> very<00:14:51.279> easily" + }, + { + "start": 891.75, + "duration": 0.0, + "text": "prepared to recreate state very easily" + }, + { + "start": 891.76, + "duration": 0.0, + "text": "prepared to recreate state very easily which<00:14:51.920> it<00:14:52.160> very<00:14:52.320> often<00:14:52.639> is<00:14:53.279> uh<00:14:53.600> not<00:14:53.839> prepared" + }, + { + "start": 894.15, + "duration": 0.0, + "text": "which it very often is uh not prepared" + }, + { + "start": 894.16, + "duration": 0.0, + "text": "which it very often is uh not prepared to<00:14:54.320> do<00:14:54.399> that<00:14:55.199> um<00:14:55.360> it'll<00:14:55.680> be<00:14:56.079> much<00:14:56.320> worse." + }, + { + "start": 898.79, + "duration": 0.0, + "text": "to do that um it'll be much worse." + }, + { + "start": 898.8, + "duration": 0.0, + "text": "to do that um it'll be much worse. And<00:14:59.040> lastly,<00:14:59.360> browsing<00:14:59.760> the<00:14:59.920> log<00:15:00.160> itself<00:15:01.040> can" + }, + { + "start": 901.269, + "duration": 0.0, + "text": "And lastly, browsing the log itself can" + }, + { + "start": 901.279, + "duration": 0.0, + "text": "And lastly, browsing the log itself can often<00:15:01.519> be<00:15:01.680> quite<00:15:01.920> slow.<00:15:02.240> And<00:15:02.399> the<00:15:02.560> reason<00:15:02.720> why" + }, + { + "start": 902.87, + "duration": 0.0, + "text": "often be quite slow. And the reason why" + }, + { + "start": 902.88, + "duration": 0.0, + "text": "often be quite slow. And the reason why is<00:15:03.120> that<00:15:03.279> it's<00:15:03.360> a<00:15:03.519> fire<00:15:03.760> hose<00:15:04.000> of<00:15:04.160> information," + }, + { + "start": 904.55, + "duration": 0.0, + "text": "is that it's a fire hose of information," + }, + { + "start": 904.56, + "duration": 0.0, + "text": "is that it's a fire hose of information, right?<00:15:04.800> You<00:15:04.959> have<00:15:05.120> so<00:15:05.279> much<00:15:05.440> information" + }, + { + "start": 905.829, + "duration": 0.0, + "text": "right? You have so much information" + }, + { + "start": 905.839, + "duration": 0.0, + "text": "right? You have so much information pouring<00:15:06.240> into<00:15:06.480> you.<00:15:07.360> Um,<00:15:07.600> and<00:15:07.839> you're<00:15:08.079> just" + }, + { + "start": 908.23, + "duration": 0.0, + "text": "pouring into you. Um, and you're just" + }, + { + "start": 908.24, + "duration": 0.0, + "text": "pouring into you. Um, and you're just like<00:15:08.480> looking<00:15:08.639> for<00:15:08.959> if<00:15:09.199> you're<00:15:09.760> sometimes<00:15:10.079> the" + }, + { + "start": 910.23, + "duration": 0.0, + "text": "like looking for if you're sometimes the" + }, + { + "start": 910.24, + "duration": 0.0, + "text": "like looking for if you're sometimes the log<00:15:10.399> is<00:15:10.560> useful<00:15:10.800> information,<00:15:11.199> right?" + }, + { + "start": 911.43, + "duration": 0.0, + "text": "log is useful information, right?" + }, + { + "start": 911.44, + "duration": 0.0, + "text": "log is useful information, right? Sometimes<00:15:11.680> you<00:15:11.839> want<00:15:11.920> to<00:15:12.000> see<00:15:12.160> it<00:15:12.320> over<00:15:12.560> time," + }, + { + "start": 912.87, + "duration": 0.0, + "text": "Sometimes you want to see it over time," + }, + { + "start": 912.88, + "duration": 0.0, + "text": "Sometimes you want to see it over time, but<00:15:13.120> if<00:15:13.279> you're<00:15:13.360> trying<00:15:13.440> to<00:15:13.600> zoom<00:15:13.839> in<00:15:14.000> and" + }, + { + "start": 914.23, + "duration": 0.0, + "text": "but if you're trying to zoom in and" + }, + { + "start": 914.24, + "duration": 0.0, + "text": "but if you're trying to zoom in and really<00:15:14.480> narrow<00:15:14.800> in<00:15:14.959> on<00:15:15.120> one<00:15:15.360> particular" + }, + { + "start": 915.67, + "duration": 0.0, + "text": "really narrow in on one particular" + }, + { + "start": 915.68, + "duration": 0.0, + "text": "really narrow in on one particular thing,<00:15:15.920> you<00:15:16.160> have<00:15:16.240> a<00:15:16.480> whole<00:15:16.639> window<00:15:16.880> of" + }, + { + "start": 917.03, + "duration": 0.0, + "text": "thing, you have a whole window of" + }, + { + "start": 917.04, + "duration": 0.0, + "text": "thing, you have a whole window of information<00:15:17.360> that<00:15:17.519> you<00:15:17.600> have<00:15:17.680> to<00:15:17.839> look" + }, + { + "start": 917.91, + "duration": 0.0, + "text": "information that you have to look" + }, + { + "start": 917.92, + "duration": 0.0, + "text": "information that you have to look through." + }, + { + "start": 919.43, + "duration": 0.0, + "text": "through." + }, + { + "start": 919.44, + "duration": 0.0, + "text": "through. Um,<00:15:20.480> so" + }, + { + "start": 922.79, + "duration": 0.0, + "text": "Um, so" + }, + { + "start": 922.8, + "duration": 0.0, + "text": "Um, so I<00:15:23.040> think<00:15:23.120> of<00:15:23.360> this<00:15:23.519> problem<00:15:24.079> as<00:15:24.399> being<00:15:25.120> related" + }, + { + "start": 925.91, + "duration": 0.0, + "text": "I think of this problem as being related" + }, + { + "start": 925.92, + "duration": 0.0, + "text": "I think of this problem as being related to<00:15:26.480> information<00:15:26.880> flow.<00:15:28.320> uh<00:15:28.399> a<00:15:28.639> constant<00:15:29.040> cycle" + }, + { + "start": 929.35, + "duration": 0.0, + "text": "to information flow. uh a constant cycle" + }, + { + "start": 929.36, + "duration": 0.0, + "text": "to information flow. uh a constant cycle of<00:15:29.519> information<00:15:30.000> passing<00:15:30.399> between<00:15:30.639> the<00:15:30.800> user" + }, + { + "start": 931.11, + "duration": 0.0, + "text": "of information passing between the user" + }, + { + "start": 931.12, + "duration": 0.0, + "text": "of information passing between the user and<00:15:31.279> the<00:15:31.519> computer.<00:15:32.320> So<00:15:32.800> you<00:15:33.440> on<00:15:33.680> the<00:15:33.839> left" + }, + { + "start": 934.069, + "duration": 0.0, + "text": "and the computer. So you on the left" + }, + { + "start": 934.079, + "duration": 0.0, + "text": "and the computer. So you on the left there<00:15:35.440> good<00:15:35.680> good<00:15:36.000> diagram.<00:15:36.639> Pass<00:15:36.880> down<00:15:37.120> your" + }, + { + "start": 937.269, + "duration": 0.0, + "text": "there good good diagram. Pass down your" + }, + { + "start": 937.279, + "duration": 0.0, + "text": "there good good diagram. Pass down your your<00:15:37.440> your<00:15:37.839> information<00:15:38.240> as<00:15:38.399> inputs." + }, + { + "start": 939.03, + "duration": 0.0, + "text": "your your information as inputs." + }, + { + "start": 939.04, + "duration": 0.0, + "text": "your your information as inputs. Computer<00:15:39.360> returns<00:15:39.600> it<00:15:39.760> back<00:15:39.920> out<00:15:40.000> as<00:15:40.240> outputs," + }, + { + "start": 940.629, + "duration": 0.0, + "text": "Computer returns it back out as outputs," + }, + { + "start": 940.639, + "duration": 0.0, + "text": "Computer returns it back out as outputs, right?" + }, + { + "start": 942.31, + "duration": 0.0, + "text": "right?" + }, + { + "start": 942.32, + "duration": 0.0, + "text": "right? Um<00:15:43.760> so<00:15:44.000> we<00:15:44.240> repeat<00:15:44.639> we<00:15:44.959> repeat<00:15:45.199> this<00:15:45.360> cycle<00:15:45.600> of" + }, + { + "start": 945.75, + "duration": 0.0, + "text": "Um so we repeat we repeat this cycle of" + }, + { + "start": 945.76, + "duration": 0.0, + "text": "Um so we repeat we repeat this cycle of information<00:15:46.000> flow<00:15:46.240> in<00:15:46.399> order<00:15:46.560> to<00:15:46.800> sort<00:15:47.040> of" + }, + { + "start": 947.11, + "duration": 0.0, + "text": "information flow in order to sort of" + }, + { + "start": 947.12, + "duration": 0.0, + "text": "information flow in order to sort of refine<00:15:47.440> our<00:15:47.600> data<00:15:47.760> over<00:15:48.000> time.<00:15:48.160> It's<00:15:48.320> this" + }, + { + "start": 948.47, + "duration": 0.0, + "text": "refine our data over time. It's this" + }, + { + "start": 948.48, + "duration": 0.0, + "text": "refine our data over time. It's this constant<00:15:48.880> back<00:15:49.040> and<00:15:49.279> forth<00:15:49.920> with<00:15:50.079> the" + }, + { + "start": 950.31, + "duration": 0.0, + "text": "constant back and forth with the" + }, + { + "start": 950.32, + "duration": 0.0, + "text": "constant back and forth with the computer.<00:15:50.639> You<00:15:50.800> start<00:15:50.959> with<00:15:51.120> some<00:15:51.279> very" + }, + { + "start": 951.509, + "duration": 0.0, + "text": "computer. You start with some very" + }, + { + "start": 951.519, + "duration": 0.0, + "text": "computer. You start with some very unrefined<00:15:52.160> state<00:15:52.639> or<00:15:52.800> or<00:15:53.120> no<00:15:53.360> state<00:15:53.519> at<00:15:53.680> all" + }, + { + "start": 953.99, + "duration": 0.0, + "text": "unrefined state or or no state at all" + }, + { + "start": 954.0, + "duration": 0.0, + "text": "unrefined state or or no state at all and<00:15:54.240> then<00:15:54.399> you<00:15:54.959> progressively<00:15:55.519> refine<00:15:55.839> it." + }, + { + "start": 956.15, + "duration": 0.0, + "text": "and then you progressively refine it." + }, + { + "start": 956.16, + "duration": 0.0, + "text": "and then you progressively refine it. you<00:15:56.480> you<00:15:56.880> build<00:15:57.120> towards<00:15:57.440> whatever<00:15:57.759> you're" + }, + { + "start": 957.91, + "duration": 0.0, + "text": "you you build towards whatever you're" + }, + { + "start": 957.92, + "duration": 0.0, + "text": "you you build towards whatever you're trying<00:15:58.000> to<00:15:58.160> build<00:15:58.399> towards." + }, + { + "start": 961.519, + "duration": 0.0, + "text": "For<00:16:01.839> programmers,<00:16:02.560> the<00:16:02.800> data<00:16:03.040> we're<00:16:03.199> working" + }, + { + "start": 963.35, + "duration": 0.0, + "text": "For programmers, the data we're working" + }, + { + "start": 963.36, + "duration": 0.0, + "text": "For programmers, the data we're working on<00:16:03.519> is<00:16:03.759> code.<00:16:04.160> So<00:16:04.320> if<00:16:04.480> we<00:16:04.639> zoom<00:16:04.800> into<00:16:05.120> one<00:16:05.279> of" + }, + { + "start": 965.35, + "duration": 0.0, + "text": "on is code. So if we zoom into one of" + }, + { + "start": 965.36, + "duration": 0.0, + "text": "on is code. So if we zoom into one of those<00:16:05.519> like<00:16:05.680> little<00:16:05.839> blob<00:16:06.240> shapes,<00:16:06.480> we've<00:16:06.720> got" + }, + { + "start": 966.79, + "duration": 0.0, + "text": "those like little blob shapes, we've got" + }, + { + "start": 966.8, + "duration": 0.0, + "text": "those like little blob shapes, we've got A<00:16:07.040> to<00:16:07.199> B<00:16:07.600> prime<00:16:07.839> and<00:16:07.920> then<00:16:08.079> A<00:16:08.240> to<00:16:08.399> B<00:16:08.560> double" + }, + { + "start": 968.87, + "duration": 0.0, + "text": "A to B prime and then A to B double" + }, + { + "start": 968.88, + "duration": 0.0, + "text": "A to B prime and then A to B double prime.<00:16:09.519> That's<00:16:09.680> what<00:16:09.839> we're<00:16:10.000> refining." + }, + { + "start": 972.23, + "duration": 0.0, + "text": "prime. That's what we're refining." + }, + { + "start": 972.24, + "duration": 0.0, + "text": "prime. That's what we're refining. Uh<00:16:12.480> the<00:16:12.720> information<00:16:13.120> flow<00:16:13.600> cycle<00:16:13.920> is<00:16:14.160> sort<00:16:14.320> of" + }, + { + "start": 974.389, + "duration": 0.0, + "text": "Uh the information flow cycle is sort of" + }, + { + "start": 974.399, + "duration": 0.0, + "text": "Uh the information flow cycle is sort of what<00:16:14.639> pushes<00:16:14.880> this<00:16:15.040> forward,<00:16:15.279> right?<00:16:15.440> We<00:16:15.600> see" + }, + { + "start": 975.67, + "duration": 0.0, + "text": "what pushes this forward, right? We see" + }, + { + "start": 975.68, + "duration": 0.0, + "text": "what pushes this forward, right? We see the<00:16:15.759> outputs<00:16:16.079> from<00:16:16.160> one<00:16:16.320> state,<00:16:16.560> we<00:16:16.720> produce" + }, + { + "start": 977.189, + "duration": 0.0, + "text": "the outputs from one state, we produce" + }, + { + "start": 977.199, + "duration": 0.0, + "text": "the outputs from one state, we produce information<00:16:17.600> that<00:16:17.759> encodes<00:16:18.079> a<00:16:18.240> new<00:16:18.399> state<00:16:18.560> and" + }, + { + "start": 978.71, + "duration": 0.0, + "text": "information that encodes a new state and" + }, + { + "start": 978.72, + "duration": 0.0, + "text": "information that encodes a new state and and<00:16:18.800> and<00:16:19.120> so<00:16:19.279> on<00:16:19.360> and<00:16:19.600> so<00:16:19.759> forth.<00:16:20.800> Um" + }, + { + "start": 983.509, + "duration": 0.0, + "text": "and and so on and so forth. Um" + }, + { + "start": 983.519, + "duration": 0.0, + "text": "and and so on and so forth. Um uh<00:16:23.680> oh.<00:16:24.399> So<00:16:24.639> we<00:16:24.800> can<00:16:24.880> think<00:16:24.959> of<00:16:25.120> this" + }, + { + "start": 985.269, + "duration": 0.0, + "text": "uh oh. So we can think of this" + }, + { + "start": 985.279, + "duration": 0.0, + "text": "uh oh. So we can think of this refinement<00:16:25.680> process<00:16:26.079> as<00:16:26.399> like<00:16:26.560> a<00:16:26.800> repeating" + }, + { + "start": 987.189, + "duration": 0.0, + "text": "refinement process as like a repeating" + }, + { + "start": 987.199, + "duration": 0.0, + "text": "refinement process as like a repeating cycle<00:16:27.440> across<00:16:27.839> time.<00:16:28.720> Um<00:16:29.360> and<00:16:29.519> now<00:16:29.839> maybe<00:16:30.079> this" + }, + { + "start": 990.31, + "duration": 0.0, + "text": "cycle across time. Um and now maybe this" + }, + { + "start": 990.32, + "duration": 0.0, + "text": "cycle across time. Um and now maybe this is<00:16:30.480> all<00:16:30.880> just<00:16:31.199> like<00:16:31.440> a<00:16:31.680> little<00:16:32.000> abstract<00:16:32.720> and<00:16:32.959> I" + }, + { + "start": 993.11, + "duration": 0.0, + "text": "is all just like a little abstract and I" + }, + { + "start": 993.12, + "duration": 0.0, + "text": "is all just like a little abstract and I get<00:16:33.279> it.<00:16:33.839> But<00:16:33.920> the<00:16:34.160> reason<00:16:34.320> I<00:16:34.480> frame<00:16:34.639> it<00:16:34.800> this" + }, + { + "start": 994.949, + "duration": 0.0, + "text": "get it. But the reason I frame it this" + }, + { + "start": 994.959, + "duration": 0.0, + "text": "get it. But the reason I frame it this way<00:16:35.360> is<00:16:35.600> to<00:16:35.839> associate<00:16:36.880> um<00:16:37.199> certain<00:16:37.519> problems" + }, + { + "start": 997.749, + "duration": 0.0, + "text": "way is to associate um certain problems" + }, + { + "start": 997.759, + "duration": 0.0, + "text": "way is to associate um certain problems on<00:16:38.000> computers<00:16:38.880> like<00:16:39.120> with<00:16:39.360> programming<00:16:39.759> or" + }, + { + "start": 999.91, + "duration": 0.0, + "text": "on computers like with programming or" + }, + { + "start": 999.92, + "duration": 0.0, + "text": "on computers like with programming or debugging<00:16:40.959> or<00:16:41.519> uh<00:16:41.680> or<00:16:42.000> understanding" + }, + { + "start": 1002.47, + "duration": 0.0, + "text": "debugging or uh or understanding" + }, + { + "start": 1002.48, + "duration": 0.0, + "text": "debugging or uh or understanding anything<00:16:42.880> with<00:16:43.120> certain<00:16:43.920> uh<00:16:44.000> undesirable" + }, + { + "start": 1004.71, + "duration": 0.0, + "text": "anything with certain uh undesirable" + }, + { + "start": 1004.72, + "duration": 0.0, + "text": "anything with certain uh undesirable properties<00:16:45.040> of<00:16:45.199> this<00:16:45.360> sort<00:16:45.519> of<00:16:45.600> like<00:16:45.759> wave" + }, + { + "start": 1006.069, + "duration": 0.0, + "text": "properties of this sort of like wave" + }, + { + "start": 1006.079, + "duration": 0.0, + "text": "properties of this sort of like wave pattern<00:16:46.320> that<00:16:46.480> you<00:16:46.639> end<00:16:46.720> up<00:16:46.880> seeing.<00:16:48.320> For" + }, + { + "start": 1008.47, + "duration": 0.0, + "text": "pattern that you end up seeing. For" + }, + { + "start": 1008.48, + "duration": 0.0, + "text": "pattern that you end up seeing. For instance,<00:16:49.680> programming<00:16:50.160> can<00:16:50.399> feel<00:16:50.560> very" + }, + { + "start": 1010.79, + "duration": 0.0, + "text": "instance, programming can feel very" + }, + { + "start": 1010.8, + "duration": 0.0, + "text": "instance, programming can feel very frustrating" + }, + { + "start": 1012.389, + "duration": 0.0, + "text": "frustrating" + }, + { + "start": 1012.399, + "duration": 0.0, + "text": "frustrating um<00:16:52.639> or<00:16:53.120> more<00:16:53.360> opaque<00:16:53.759> or<00:16:53.920> more<00:16:54.079> difficult<00:16:54.320> to" + }, + { + "start": 1014.47, + "duration": 0.0, + "text": "um or more opaque or more difficult to" + }, + { + "start": 1014.48, + "duration": 0.0, + "text": "um or more opaque or more difficult to understand<00:16:55.120> when<00:16:55.440> this<00:16:55.600> cycle<00:16:55.839> has<00:16:56.000> a<00:16:56.079> much" + }, + { + "start": 1016.23, + "duration": 0.0, + "text": "understand when this cycle has a much" + }, + { + "start": 1016.24, + "duration": 0.0, + "text": "understand when this cycle has a much longer<00:16:56.560> frequency.<00:16:57.600> Um<00:16:58.639> if<00:16:58.800> the<00:16:58.959> flow<00:16:59.199> of" + }, + { + "start": 1019.35, + "duration": 0.0, + "text": "longer frequency. Um if the flow of" + }, + { + "start": 1019.36, + "duration": 0.0, + "text": "longer frequency. Um if the flow of information<00:16:59.680> is<00:16:59.839> blocked<00:17:00.160> on<00:17:00.320> something," + }, + { + "start": 1020.55, + "duration": 0.0, + "text": "information is blocked on something," + }, + { + "start": 1020.56, + "duration": 0.0, + "text": "information is blocked on something, let's<00:17:00.720> just<00:17:00.880> use<00:17:01.040> compile<00:17:01.440> times<00:17:01.680> as<00:17:01.839> an" + }, + { + "start": 1021.99, + "duration": 0.0, + "text": "let's just use compile times as an" + }, + { + "start": 1022.0, + "duration": 0.0, + "text": "let's just use compile times as an example.<00:17:02.639> You<00:17:02.800> tweak<00:17:03.120> something,<00:17:03.759> you" + }, + { + "start": 1023.99, + "duration": 0.0, + "text": "example. You tweak something, you" + }, + { + "start": 1024.0, + "duration": 0.0, + "text": "example. You tweak something, you accidentally<00:17:04.480> touch<00:17:04.640> a<00:17:04.799> C++<00:17:05.360> header<00:17:05.679> file," + }, + { + "start": 1025.99, + "duration": 0.0, + "text": "accidentally touch a C++ header file," + }, + { + "start": 1026.0, + "duration": 0.0, + "text": "accidentally touch a C++ header file, you're<00:17:06.160> in<00:17:06.400> like<00:17:06.559> some<00:17:06.799> major<00:17:07.199> nightmare<00:17:08.240> uh" + }, + { + "start": 1028.549, + "duration": 0.0, + "text": "you're in like some major nightmare uh" + }, + { + "start": 1028.559, + "duration": 0.0, + "text": "you're in like some major nightmare uh C++<00:17:09.039> codebase,<00:17:09.679> you<00:17:09.839> hit<00:17:10.000> build,<00:17:10.240> and<00:17:10.400> you're" + }, + { + "start": 1030.47, + "duration": 0.0, + "text": "C++ codebase, you hit build, and you're" + }, + { + "start": 1030.48, + "duration": 0.0, + "text": "C++ codebase, you hit build, and you're like,<00:17:10.640> great,<00:17:10.880> I<00:17:11.039> can't<00:17:11.120> wait<00:17:11.280> to<00:17:11.439> test<00:17:11.679> this" + }, + { + "start": 1031.909, + "duration": 0.0, + "text": "like, great, I can't wait to test this" + }, + { + "start": 1031.919, + "duration": 0.0, + "text": "like, great, I can't wait to test this new<00:17:12.160> like<00:17:12.480> jump<00:17:13.199> speed<00:17:13.439> or<00:17:13.679> whatever.<00:17:14.480> And" + }, + { + "start": 1034.63, + "duration": 0.0, + "text": "new like jump speed or whatever. And" + }, + { + "start": 1034.64, + "duration": 0.0, + "text": "new like jump speed or whatever. And it's<00:17:14.880> like<00:17:15.679> 10<00:17:15.919> minutes<00:17:16.559> just<00:17:16.799> gone.<00:17:17.520> Um" + }, + { + "start": 1040.799, + "duration": 0.0, + "text": "uh<00:17:21.280> that's<00:17:21.600> an<00:17:21.760> example<00:17:22.000> of<00:17:22.240> like" + }, + { + "start": 1042.47, + "duration": 0.0, + "text": "uh that's an example of like" + }, + { + "start": 1042.48, + "duration": 0.0, + "text": "uh that's an example of like deterioration<00:17:23.039> of<00:17:23.199> this<00:17:23.439> information<00:17:23.760> flow," + }, + { + "start": 1044.069, + "duration": 0.0, + "text": "deterioration of this information flow," + }, + { + "start": 1044.079, + "duration": 0.0, + "text": "deterioration of this information flow, the<00:17:24.240> quality<00:17:24.400> of<00:17:24.559> this<00:17:24.799> information<00:17:25.199> flow" + }, + { + "start": 1045.829, + "duration": 0.0, + "text": "the quality of this information flow" + }, + { + "start": 1045.839, + "duration": 0.0, + "text": "the quality of this information flow just<00:17:26.079> due<00:17:26.319> to<00:17:26.559> this<00:17:27.039> frequency<00:17:27.520> expanding." + }, + { + "start": 1049.029, + "duration": 0.0, + "text": "just due to this frequency expanding." + }, + { + "start": 1049.039, + "duration": 0.0, + "text": "just due to this frequency expanding. Um<00:17:29.919> so<00:17:30.240> this<00:17:30.559> is<00:17:30.880> less<00:17:31.200> efficient.<00:17:32.000> It's<00:17:32.160> less" + }, + { + "start": 1052.39, + "duration": 0.0, + "text": "Um so this is less efficient. It's less" + }, + { + "start": 1052.4, + "duration": 0.0, + "text": "Um so this is less efficient. It's less effective.<00:17:33.039> It's<00:17:33.280> not<00:17:33.440> good.<00:17:34.559> Furthermore," + }, + { + "start": 1055.029, + "duration": 0.0, + "text": "effective. It's not good. Furthermore," + }, + { + "start": 1055.039, + "duration": 0.0, + "text": "effective. It's not good. Furthermore, the<00:17:35.200> information<00:17:35.440> flow<00:17:35.760> doesn't<00:17:36.000> only<00:17:36.160> have<00:17:36.240> a" + }, + { + "start": 1056.39, + "duration": 0.0, + "text": "the information flow doesn't only have a" + }, + { + "start": 1056.4, + "duration": 0.0, + "text": "the information flow doesn't only have a frequency<00:17:36.720> but<00:17:36.880> a<00:17:37.039> band<00:17:37.440> a<00:17:37.600> bandwidth<00:17:38.080> as" + }, + { + "start": 1058.23, + "duration": 0.0, + "text": "frequency but a band a bandwidth as" + }, + { + "start": 1058.24, + "duration": 0.0, + "text": "frequency but a band a bandwidth as well.<00:17:39.360> Now<00:17:39.600> to<00:17:39.760> be<00:17:39.840> fair,<00:17:40.080> I<00:17:40.240> probably<00:17:40.400> could" + }, + { + "start": 1060.549, + "duration": 0.0, + "text": "well. Now to be fair, I probably could" + }, + { + "start": 1060.559, + "duration": 0.0, + "text": "well. Now to be fair, I probably could have<00:17:40.640> drawn<00:17:40.880> that<00:17:41.039> as<00:17:41.280> like<00:17:41.840> the<00:17:42.080> amplitude," + }, + { + "start": 1062.549, + "duration": 0.0, + "text": "have drawn that as like the amplitude," + }, + { + "start": 1062.559, + "duration": 0.0, + "text": "have drawn that as like the amplitude, but<00:17:42.720> I<00:17:42.960> just<00:17:43.120> wanted<00:17:43.360> to<00:17:43.520> make<00:17:43.600> it<00:17:43.760> like<00:17:44.000> thick" + }, + { + "start": 1064.23, + "duration": 0.0, + "text": "but I just wanted to make it like thick" + }, + { + "start": 1064.24, + "duration": 0.0, + "text": "but I just wanted to make it like thick versus<00:17:44.559> thin<00:17:44.799> for<00:17:45.039> whatever<00:17:45.280> reason.<00:17:45.440> I<00:17:45.600> don't" + }, + { + "start": 1065.75, + "duration": 0.0, + "text": "versus thin for whatever reason. I don't" + }, + { + "start": 1065.76, + "duration": 0.0, + "text": "versus thin for whatever reason. I don't It's<00:17:45.919> all<00:17:46.000> abstract,<00:17:46.400> but<00:17:46.559> you<00:17:46.720> get<00:17:46.799> the" + }, + { + "start": 1066.95, + "duration": 0.0, + "text": "It's all abstract, but you get the" + }, + { + "start": 1066.96, + "duration": 0.0, + "text": "It's all abstract, but you get the point.<00:17:47.600> Um,<00:17:48.720> it,<00:17:49.039> you<00:17:49.120> know,<00:17:49.200> if<00:17:49.440> you're" + }, + { + "start": 1069.59, + "duration": 0.0, + "text": "point. Um, it, you know, if you're" + }, + { + "start": 1069.6, + "duration": 0.0, + "text": "point. Um, it, you know, if you're waiting<00:17:49.760> a<00:17:49.919> long<00:17:50.080> time<00:17:50.160> for<00:17:50.400> some<00:17:50.559> information" + }, + { + "start": 1070.87, + "duration": 0.0, + "text": "waiting a long time for some information" + }, + { + "start": 1070.88, + "duration": 0.0, + "text": "waiting a long time for some information to<00:17:51.039> come<00:17:51.200> back,<00:17:51.440> it's<00:17:51.600> better<00:17:51.760> if<00:17:51.919> you<00:17:52.080> get<00:17:52.160> a" + }, + { + "start": 1072.31, + "duration": 0.0, + "text": "to come back, it's better if you get a" + }, + { + "start": 1072.32, + "duration": 0.0, + "text": "to come back, it's better if you get a lot<00:17:52.400> of<00:17:52.559> information.<00:17:53.360> If<00:17:53.600> you<00:17:53.679> get<00:17:53.840> very" + }, + { + "start": 1074.07, + "duration": 0.0, + "text": "lot of information. If you get very" + }, + { + "start": 1074.08, + "duration": 0.0, + "text": "lot of information. If you get very little<00:17:54.320> information<00:17:54.880> and<00:17:55.360> you're<00:17:55.600> waiting<00:17:55.760> a" + }, + { + "start": 1075.909, + "duration": 0.0, + "text": "little information and you're waiting a" + }, + { + "start": 1075.919, + "duration": 0.0, + "text": "little information and you're waiting a long<00:17:56.080> time<00:17:56.160> for<00:17:56.320> it,<00:17:56.480> it's<00:17:56.720> like<00:17:56.880> almost" + }, + { + "start": 1077.11, + "duration": 0.0, + "text": "long time for it, it's like almost" + }, + { + "start": 1077.12, + "duration": 0.0, + "text": "long time for it, it's like almost completely<00:17:57.520> useless." + }, + { + "start": 1080.23, + "duration": 0.0, + "text": "completely useless." + }, + { + "start": 1080.24, + "duration": 0.0, + "text": "completely useless. Um," + }, + { + "start": 1081.99, + "duration": 0.0, + "text": "Um," + }, + { + "start": 1082.0, + "duration": 0.0, + "text": "Um, so<00:18:02.880> the<00:18:03.120> goal<00:18:03.440> is<00:18:03.679> to<00:18:03.840> maximize<00:18:04.320> frequency<00:18:05.360> and" + }, + { + "start": 1085.83, + "duration": 0.0, + "text": "so the goal is to maximize frequency and" + }, + { + "start": 1085.84, + "duration": 0.0, + "text": "so the goal is to maximize frequency and maximize<00:18:06.400> useful<00:18:06.799> bandwidth." + }, + { + "start": 1088.63, + "duration": 0.0, + "text": "maximize useful bandwidth." + }, + { + "start": 1088.64, + "duration": 0.0, + "text": "maximize useful bandwidth. So<00:18:08.880> let's<00:18:09.120> take<00:18:09.200> a<00:18:09.520> look<00:18:09.760> at<00:18:10.080> logging<00:18:10.559> from" + }, + { + "start": 1090.789, + "duration": 0.0, + "text": "So let's take a look at logging from" + }, + { + "start": 1090.799, + "duration": 0.0, + "text": "So let's take a look at logging from this<00:18:10.960> perspective.<00:18:11.600> Um<00:18:11.919> logging<00:18:12.480> does" + }, + { + "start": 1092.71, + "duration": 0.0, + "text": "this perspective. Um logging does" + }, + { + "start": 1092.72, + "duration": 0.0, + "text": "this perspective. Um logging does obviously<00:18:13.200> have<00:18:13.440> the<00:18:13.679> ability<00:18:13.919> to<00:18:14.080> provide" + }, + { + "start": 1094.71, + "duration": 0.0, + "text": "obviously have the ability to provide" + }, + { + "start": 1094.72, + "duration": 0.0, + "text": "obviously have the ability to provide useful<00:18:15.120> information.<00:18:16.160> Um<00:18:16.640> it<00:18:16.880> can" + }, + { + "start": 1097.029, + "duration": 0.0, + "text": "useful information. Um it can" + }, + { + "start": 1097.039, + "duration": 0.0, + "text": "useful information. Um it can dramatically<00:18:17.440> improve<00:18:17.760> the<00:18:17.919> bandwidth<00:18:18.559> uh" + }, + { + "start": 1098.87, + "duration": 0.0, + "text": "dramatically improve the bandwidth uh" + }, + { + "start": 1098.88, + "duration": 0.0, + "text": "dramatically improve the bandwidth uh improve<00:18:19.120> the<00:18:19.280> bandwidth<00:18:19.600> of<00:18:19.840> information<00:18:20.559> uh" + }, + { + "start": 1101.029, + "duration": 0.0, + "text": "improve the bandwidth of information uh" + }, + { + "start": 1101.039, + "duration": 0.0, + "text": "improve the bandwidth of information uh output<00:18:21.440> from<00:18:21.600> the<00:18:21.760> computer<00:18:22.000> back<00:18:22.160> to<00:18:22.320> you." + }, + { + "start": 1103.11, + "duration": 0.0, + "text": "output from the computer back to you." + }, + { + "start": 1103.12, + "duration": 0.0, + "text": "output from the computer back to you. But<00:18:23.280> it<00:18:23.520> can<00:18:23.679> require<00:18:24.160> many<00:18:24.480> slow<00:18:24.720> iterations" + }, + { + "start": 1105.19, + "duration": 0.0, + "text": "But it can require many slow iterations" + }, + { + "start": 1105.2, + "duration": 0.0, + "text": "But it can require many slow iterations to<00:18:25.440> refine<00:18:25.760> for<00:18:26.000> some<00:18:26.160> debugging<00:18:26.640> case.<00:18:26.880> And" + }, + { + "start": 1107.029, + "duration": 0.0, + "text": "to refine for some debugging case. And" + }, + { + "start": 1107.039, + "duration": 0.0, + "text": "to refine for some debugging case. And again<00:18:27.280> there's<00:18:27.679> there's<00:18:27.919> a<00:18:28.080> universe<00:18:28.400> of" + }, + { + "start": 1108.63, + "duration": 0.0, + "text": "again there's there's a universe of" + }, + { + "start": 1108.64, + "duration": 0.0, + "text": "again there's there's a universe of information<00:18:28.880> you<00:18:29.120> could<00:18:29.200> be<00:18:29.360> looking<00:18:29.520> at.<00:18:30.000> You" + }, + { + "start": 1110.15, + "duration": 0.0, + "text": "information you could be looking at. You" + }, + { + "start": 1110.16, + "duration": 0.0, + "text": "information you could be looking at. You can't<00:18:30.320> log<00:18:30.640> all<00:18:30.720> of<00:18:30.880> it.<00:18:31.600> Um<00:18:32.160> and<00:18:32.559> and<00:18:32.799> it<00:18:32.960> can" + }, + { + "start": 1113.35, + "duration": 0.0, + "text": "can't log all of it. Um and and it can" + }, + { + "start": 1113.36, + "duration": 0.0, + "text": "can't log all of it. Um and and it can uh<00:18:33.919> also<00:18:34.240> slow<00:18:34.480> down<00:18:34.640> the<00:18:34.799> execution<00:18:35.120> of<00:18:35.200> the" + }, + { + "start": 1115.35, + "duration": 0.0, + "text": "uh also slow down the execution of the" + }, + { + "start": 1115.36, + "duration": 0.0, + "text": "uh also slow down the execution of the program<00:18:35.600> itself.<00:18:35.919> So<00:18:36.160> it's<00:18:36.480> you<00:18:36.640> you<00:18:36.960> get<00:18:37.120> a" + }, + { + "start": 1117.35, + "duration": 0.0, + "text": "program itself. So it's you you get a" + }, + { + "start": 1117.36, + "duration": 0.0, + "text": "program itself. So it's you you get a little<00:18:37.440> bit<00:18:37.520> thicker<00:18:37.840> bandwidth<00:18:38.880> but<00:18:39.600> you" + }, + { + "start": 1119.99, + "duration": 0.0, + "text": "little bit thicker bandwidth but you" + }, + { + "start": 1120.0, + "duration": 0.0, + "text": "little bit thicker bandwidth but you decrease<00:18:40.400> the<00:18:40.559> frequency<00:18:40.960> a<00:18:41.120> bit." + }, + { + "start": 1122.87, + "duration": 0.0, + "text": "decrease the frequency a bit." + }, + { + "start": 1122.88, + "duration": 0.0, + "text": "decrease the frequency a bit. Um<00:18:43.919> so<00:18:44.400> hopefully<00:18:44.799> I've<00:18:44.960> been<00:18:45.120> convincing" + }, + { + "start": 1125.59, + "duration": 0.0, + "text": "Um so hopefully I've been convincing" + }, + { + "start": 1125.6, + "duration": 0.0, + "text": "Um so hopefully I've been convincing enough<00:18:46.559> to<00:18:46.720> to<00:18:47.120> show<00:18:47.360> that<00:18:47.760> while<00:18:48.000> logs<00:18:48.400> can<00:18:48.559> be" + }, + { + "start": 1128.71, + "duration": 0.0, + "text": "enough to to show that while logs can be" + }, + { + "start": 1128.72, + "duration": 0.0, + "text": "enough to to show that while logs can be good<00:18:48.880> and<00:18:49.120> while<00:18:49.840> this<00:18:50.080> is<00:18:50.320> a<00:18:50.640> completely" + }, + { + "start": 1131.11, + "duration": 0.0, + "text": "good and while this is a completely" + }, + { + "start": 1131.12, + "duration": 0.0, + "text": "good and while this is a completely valid<00:18:51.520> technique,<00:18:52.400> it's<00:18:52.640> it's<00:18:53.200> uh<00:18:53.440> it<00:18:53.679> can<00:18:53.760> be" + }, + { + "start": 1133.909, + "duration": 0.0, + "text": "valid technique, it's it's uh it can be" + }, + { + "start": 1133.919, + "duration": 0.0, + "text": "valid technique, it's it's uh it can be less<00:18:54.160> efficient<00:18:54.480> than<00:18:54.640> what<00:18:54.799> you<00:18:54.960> might<00:18:55.600> uh" + }, + { + "start": 1135.75, + "duration": 0.0, + "text": "less efficient than what you might uh" + }, + { + "start": 1135.76, + "duration": 0.0, + "text": "less efficient than what you might uh imagine<00:18:56.080> is<00:18:56.320> the<00:18:56.480> ideal<00:18:56.799> case." + }, + { + "start": 1138.789, + "duration": 0.0, + "text": "imagine is the ideal case." + }, + { + "start": 1138.799, + "duration": 0.0, + "text": "imagine is the ideal case. That's<00:18:58.960> where<00:18:59.120> a<00:18:59.280> debugger<00:18:59.600> comes<00:18:59.760> into<00:19:00.000> play." + }, + { + "start": 1141.83, + "duration": 0.0, + "text": "That's where a debugger comes into play." + }, + { + "start": 1141.84, + "duration": 0.0, + "text": "That's where a debugger comes into play. So<00:19:02.000> I'll<00:19:02.240> start<00:19:02.320> by<00:19:02.480> saying<00:19:02.559> that<00:19:02.720> I<00:19:02.880> often<00:19:03.120> see" + }, + { + "start": 1143.27, + "duration": 0.0, + "text": "So I'll start by saying that I often see" + }, + { + "start": 1143.28, + "duration": 0.0, + "text": "So I'll start by saying that I often see debuggers<00:19:03.919> misunderstood.<00:19:04.720> If<00:19:04.960> you<00:19:05.120> if<00:19:05.280> I" + }, + { + "start": 1145.43, + "duration": 0.0, + "text": "debuggers misunderstood. If you if I" + }, + { + "start": 1145.44, + "duration": 0.0, + "text": "debuggers misunderstood. If you if I could<00:19:05.520> have<00:19:05.679> gone<00:19:05.919> back<00:19:06.160> in<00:19:06.400> time,<00:19:07.039> I<00:19:07.280> pro<00:19:07.600> like" + }, + { + "start": 1147.83, + "duration": 0.0, + "text": "could have gone back in time, I pro like" + }, + { + "start": 1147.84, + "duration": 0.0, + "text": "could have gone back in time, I pro like in<00:19:08.160> if<00:19:08.320> I<00:19:08.480> was<00:19:08.559> in<00:19:08.799> charge,<00:19:09.280> I<00:19:09.520> wouldn't<00:19:09.760> have" + }, + { + "start": 1150.07, + "duration": 0.0, + "text": "in if I was in charge, I wouldn't have" + }, + { + "start": 1150.08, + "duration": 0.0, + "text": "in if I was in charge, I wouldn't have called<00:19:10.240> them<00:19:10.400> that<00:19:10.720> probably.<00:19:10.960> I<00:19:11.120> mean,<00:19:11.280> I" + }, + { + "start": 1151.43, + "duration": 0.0, + "text": "called them that probably. I mean, I" + }, + { + "start": 1151.44, + "duration": 0.0, + "text": "called them that probably. I mean, I understand<00:19:11.600> it's<00:19:11.840> like<00:19:11.919> the<00:19:12.080> physical<00:19:12.320> bug<00:19:12.480> in" + }, + { + "start": 1152.63, + "duration": 0.0, + "text": "understand it's like the physical bug in" + }, + { + "start": 1152.64, + "duration": 0.0, + "text": "understand it's like the physical bug in the<00:19:12.720> machine.<00:19:12.960> Everyone<00:19:13.200> knows<00:19:13.440> the<00:19:13.760> story." + }, + { + "start": 1154.07, + "duration": 0.0, + "text": "the machine. Everyone knows the story." + }, + { + "start": 1154.08, + "duration": 0.0, + "text": "the machine. Everyone knows the story. But,<00:19:14.799> you<00:19:14.960> know,<00:19:15.120> it<00:19:15.280> might<00:19:15.520> illuminate<00:19:15.919> them" + }, + { + "start": 1156.07, + "duration": 0.0, + "text": "But, you know, it might illuminate them" + }, + { + "start": 1156.08, + "duration": 0.0, + "text": "But, you know, it might illuminate them a<00:19:16.240> little<00:19:16.320> bit<00:19:16.480> today<00:19:16.880> like<00:19:17.120> modern<00:19:17.440> debuggers" + }, + { + "start": 1157.909, + "duration": 0.0, + "text": "a little bit today like modern debuggers" + }, + { + "start": 1157.919, + "duration": 0.0, + "text": "a little bit today like modern debuggers if<00:19:18.080> you<00:19:18.160> think<00:19:18.400> about<00:19:18.640> them<00:19:18.799> as<00:19:18.960> just<00:19:19.039> a" + }, + { + "start": 1159.19, + "duration": 0.0, + "text": "if you think about them as just a" + }, + { + "start": 1159.2, + "duration": 0.0, + "text": "if you think about them as just a program<00:19:19.440> analyzer.<00:19:20.000> So,<00:19:20.000> it's<00:19:20.080> giving<00:19:20.240> you<00:19:20.320> a" + }, + { + "start": 1160.47, + "duration": 0.0, + "text": "program analyzer. So, it's giving you a" + }, + { + "start": 1160.48, + "duration": 0.0, + "text": "program analyzer. So, it's giving you a window<00:19:20.720> into<00:19:20.880> your<00:19:21.120> program." + }, + { + "start": 1162.71, + "duration": 0.0, + "text": "window into your program." + }, + { + "start": 1162.72, + "duration": 0.0, + "text": "window into your program. Uh<00:19:23.039> really,<00:19:23.280> it's<00:19:23.520> just<00:19:23.919> giving<00:19:24.160> you" + }, + { + "start": 1164.39, + "duration": 0.0, + "text": "Uh really, it's just giving you" + }, + { + "start": 1164.4, + "duration": 0.0, + "text": "Uh really, it's just giving you information<00:19:24.799> extraction<00:19:25.280> tools." + }, + { + "start": 1166.95, + "duration": 0.0, + "text": "information extraction tools." + }, + { + "start": 1166.96, + "duration": 0.0, + "text": "information extraction tools. Uh<00:19:27.280> in<00:19:27.520> any<00:19:27.760> case," + }, + { + "start": 1170.07, + "duration": 0.0, + "text": "Uh in any case," + }, + { + "start": 1170.08, + "duration": 0.0, + "text": "Uh in any case, a<00:19:30.320> debugger<00:19:30.720> allows<00:19:30.960> us<00:19:31.200> to<00:19:32.000> analyze<00:19:32.400> a" + }, + { + "start": 1172.63, + "duration": 0.0, + "text": "a debugger allows us to analyze a" + }, + { + "start": 1172.64, + "duration": 0.0, + "text": "a debugger allows us to analyze a program<00:19:32.960> at<00:19:33.200> runtime." + }, + { + "start": 1174.789, + "duration": 0.0, + "text": "program at runtime." + }, + { + "start": 1174.799, + "duration": 0.0, + "text": "program at runtime. without<00:19:35.120> modifying<00:19:35.600> it.<00:19:36.400> Um<00:19:36.880> you<00:19:37.120> can<00:19:37.200> use" + }, + { + "start": 1177.35, + "duration": 0.0, + "text": "without modifying it. Um you can use" + }, + { + "start": 1177.36, + "duration": 0.0, + "text": "without modifying it. Um you can use structural<00:19:37.760> information<00:19:38.080> about<00:19:38.240> the<00:19:38.400> program" + }, + { + "start": 1178.63, + "duration": 0.0, + "text": "structural information about the program" + }, + { + "start": 1178.64, + "duration": 0.0, + "text": "structural information about the program stored<00:19:38.880> in<00:19:39.039> debug<00:19:39.360> info<00:19:40.080> to<00:19:40.320> get<00:19:40.559> like" + }, + { + "start": 1180.95, + "duration": 0.0, + "text": "stored in debug info to get like" + }, + { + "start": 1180.96, + "duration": 0.0, + "text": "stored in debug info to get like readaloud<00:19:41.520> print<00:19:41.760> loop<00:19:42.000> style<00:19:42.240> features<00:19:42.720> at" + }, + { + "start": 1182.95, + "duration": 0.0, + "text": "readaloud print loop style features at" + }, + { + "start": 1182.96, + "duration": 0.0, + "text": "readaloud print loop style features at the<00:19:43.120> limit.<00:19:44.400> Um<00:19:44.799> and<00:19:45.039> therefore<00:19:45.360> you<00:19:45.600> shortcut" + }, + { + "start": 1185.99, + "duration": 0.0, + "text": "the limit. Um and therefore you shortcut" + }, + { + "start": 1186.0, + "duration": 0.0, + "text": "the limit. Um and therefore you shortcut the<00:19:46.160> code<00:19:46.320> modification<00:19:46.880> process" + }, + { + "start": 1187.19, + "duration": 0.0, + "text": "the code modification process" + }, + { + "start": 1187.2, + "duration": 0.0, + "text": "the code modification process altogether.<00:19:47.679> You<00:19:47.760> you<00:19:48.080> completely<00:19:48.559> avoid<00:19:48.799> the" + }, + { + "start": 1188.95, + "duration": 0.0, + "text": "altogether. You you completely avoid the" + }, + { + "start": 1188.96, + "duration": 0.0, + "text": "altogether. You you completely avoid the tool<00:19:49.200> chain.<00:19:50.080> Um<00:19:50.880> so<00:19:51.280> importantly<00:19:51.760> debugger" + }, + { + "start": 1192.15, + "duration": 0.0, + "text": "tool chain. Um so importantly debugger" + }, + { + "start": 1192.16, + "duration": 0.0, + "text": "tool chain. Um so importantly debugger allows<00:19:52.400> us<00:19:52.559> to<00:19:52.960> avoid<00:19:53.440> that<00:19:53.760> second<00:19:54.080> problem" + }, + { + "start": 1194.71, + "duration": 0.0, + "text": "allows us to avoid that second problem" + }, + { + "start": 1194.72, + "duration": 0.0, + "text": "allows us to avoid that second problem of<00:19:54.960> modification<00:19:55.520> time.<00:19:55.840> How<00:19:56.080> long<00:19:56.320> does<00:19:56.480> it" + }, + { + "start": 1196.63, + "duration": 0.0, + "text": "of modification time. How long does it" + }, + { + "start": 1196.64, + "duration": 0.0, + "text": "of modification time. How long does it take<00:19:57.120> for<00:19:57.360> me<00:19:57.600> to<00:19:58.320> get<00:19:58.480> some<00:19:58.720> new<00:19:58.960> information" + }, + { + "start": 1199.27, + "duration": 0.0, + "text": "take for me to get some new information" + }, + { + "start": 1199.28, + "duration": 0.0, + "text": "take for me to get some new information out<00:19:59.440> of<00:19:59.600> the<00:19:59.760> system?<00:20:00.400> All<00:20:00.400> right.<00:20:01.760> Um,<00:20:02.880> so<00:20:03.280> the" + }, + { + "start": 1203.51, + "duration": 0.0, + "text": "out of the system? All right. Um, so the" + }, + { + "start": 1203.52, + "duration": 0.0, + "text": "out of the system? All right. Um, so the reason<00:20:03.600> I've<00:20:03.840> been<00:20:04.000> so<00:20:04.160> focused<00:20:04.320> on<00:20:04.400> debugger" + }, + { + "start": 1204.87, + "duration": 0.0, + "text": "reason I've been so focused on debugger" + }, + { + "start": 1204.88, + "duration": 0.0, + "text": "reason I've been so focused on debugger visualization<00:20:05.520> and<00:20:05.760> the<00:20:05.919> reason<00:20:06.080> why<00:20:06.559> I<00:20:07.200> would" + }, + { + "start": 1207.43, + "duration": 0.0, + "text": "visualization and the reason why I would" + }, + { + "start": 1207.44, + "duration": 0.0, + "text": "visualization and the reason why I would argue<00:20:07.679> it's<00:20:07.919> important<00:20:08.160> and<00:20:08.400> hopefully<00:20:08.880> it's" + }, + { + "start": 1209.11, + "duration": 0.0, + "text": "argue it's important and hopefully it's" + }, + { + "start": 1209.12, + "duration": 0.0, + "text": "argue it's important and hopefully it's been<00:20:09.360> convincing<00:20:09.760> and<00:20:10.160> justifies<00:20:10.720> this<00:20:10.880> talk." + }, + { + "start": 1211.59, + "duration": 0.0, + "text": "been convincing and justifies this talk." + }, + { + "start": 1211.6, + "duration": 0.0, + "text": "been convincing and justifies this talk. Um,<00:20:12.240> first<00:20:12.559> the<00:20:12.720> visualizations<00:20:13.440> don't<00:20:13.600> need" + }, + { + "start": 1213.669, + "duration": 0.0, + "text": "Um, first the visualizations don't need" + }, + { + "start": 1213.679, + "duration": 0.0, + "text": "Um, first the visualizations don't need to<00:20:13.760> be<00:20:13.919> textual<00:20:14.480> and<00:20:14.720> second<00:20:15.120> they<00:20:15.280> don't<00:20:15.440> need" + }, + { + "start": 1215.59, + "duration": 0.0, + "text": "to be textual and second they don't need" + }, + { + "start": 1215.6, + "duration": 0.0, + "text": "to be textual and second they don't need to<00:20:15.679> be<00:20:15.919> they<00:20:16.160> don't<00:20:16.320> need<00:20:16.480> to<00:20:16.640> require<00:20:17.039> this" + }, + { + "start": 1217.19, + "duration": 0.0, + "text": "to be they don't need to require this" + }, + { + "start": 1217.2, + "duration": 0.0, + "text": "to be they don't need to require this this<00:20:17.600> build<00:20:18.640> run<00:20:19.039> recreate<00:20:19.520> state<00:20:20.000> observe" + }, + { + "start": 1220.47, + "duration": 0.0, + "text": "this build run recreate state observe" + }, + { + "start": 1220.48, + "duration": 0.0, + "text": "this build run recreate state observe loop." + }, + { + "start": 1223.11, + "duration": 0.0, + "text": "loop." + }, + { + "start": 1223.12, + "duration": 0.0, + "text": "loop. So<00:20:23.440> in<00:20:23.600> order<00:20:23.840> to<00:20:24.000> be<00:20:24.160> useful<00:20:24.400> a<00:20:24.559> debugger<00:20:24.880> has" + }, + { + "start": 1224.95, + "duration": 0.0, + "text": "So in order to be useful a debugger has" + }, + { + "start": 1224.96, + "duration": 0.0, + "text": "So in order to be useful a debugger has to<00:20:25.039> meet<00:20:25.200> that<00:20:25.360> mandate.<00:20:26.320> It<00:20:26.480> needs<00:20:26.640> to" + }, + { + "start": 1226.71, + "duration": 0.0, + "text": "to meet that mandate. It needs to" + }, + { + "start": 1226.72, + "duration": 0.0, + "text": "to meet that mandate. It needs to provide<00:20:26.960> a<00:20:27.120> variety<00:20:27.360> of<00:20:27.760> visualizations<00:20:28.559> not" + }, + { + "start": 1228.71, + "duration": 0.0, + "text": "provide a variety of visualizations not" + }, + { + "start": 1228.72, + "duration": 0.0, + "text": "provide a variety of visualizations not just<00:20:28.880> textual<00:20:29.440> ones.<00:20:30.080> and<00:20:30.240> it<00:20:30.480> needs<00:20:30.640> to<00:20:30.720> be" + }, + { + "start": 1230.789, + "duration": 0.0, + "text": "just textual ones. and it needs to be" + }, + { + "start": 1230.799, + "duration": 0.0, + "text": "just textual ones. and it needs to be able<00:20:30.880> to<00:20:31.039> do<00:20:31.120> it<00:20:31.280> quickly.<00:20:32.400> Um,<00:20:32.799> if<00:20:32.960> it<00:20:33.120> can't" + }, + { + "start": 1233.35, + "duration": 0.0, + "text": "able to do it quickly. Um, if it can't" + }, + { + "start": 1233.36, + "duration": 0.0, + "text": "able to do it quickly. Um, if it can't provide<00:20:33.679> a<00:20:34.000> variety,<00:20:34.799> then<00:20:35.440> um,<00:20:35.919> it<00:20:36.080> forces" + }, + { + "start": 1236.39, + "duration": 0.0, + "text": "provide a variety, then um, it forces" + }, + { + "start": 1236.4, + "duration": 0.0, + "text": "provide a variety, then um, it forces the<00:20:36.559> programmer<00:20:36.799> to<00:20:36.960> go<00:20:37.039> back<00:20:37.120> to<00:20:37.280> custom" + }, + { + "start": 1237.51, + "duration": 0.0, + "text": "the programmer to go back to custom" + }, + { + "start": 1237.52, + "duration": 0.0, + "text": "the programmer to go back to custom logging<00:20:37.919> tools.<00:20:38.720> And<00:20:38.880> if<00:20:39.039> it<00:20:39.200> can't<00:20:39.440> do<00:20:39.600> it" + }, + { + "start": 1239.75, + "duration": 0.0, + "text": "logging tools. And if it can't do it" + }, + { + "start": 1239.76, + "duration": 0.0, + "text": "logging tools. And if it can't do it quickly,<00:20:40.159> it's<00:20:40.400> faster<00:20:40.720> anyways<00:20:41.039> for<00:20:41.200> the" + }, + { + "start": 1241.35, + "duration": 0.0, + "text": "quickly, it's faster anyways for the" + }, + { + "start": 1241.36, + "duration": 0.0, + "text": "quickly, it's faster anyways for the programmer<00:20:41.679> to<00:20:41.840> go<00:20:42.000> back<00:20:42.080> to<00:20:42.159> the<00:20:42.320> program<00:20:42.559> and" + }, + { + "start": 1242.71, + "duration": 0.0, + "text": "programmer to go back to the program and" + }, + { + "start": 1242.72, + "duration": 0.0, + "text": "programmer to go back to the program and just<00:20:42.799> write<00:20:42.960> their<00:20:43.120> own<00:20:43.280> custom<00:20:43.520> visualizer," + }, + { + "start": 1244.149, + "duration": 0.0, + "text": "just write their own custom visualizer," + }, + { + "start": 1244.159, + "duration": 0.0, + "text": "just write their own custom visualizer, right?<00:20:44.480> So,<00:20:44.559> if<00:20:44.720> it<00:20:44.960> can't<00:20:45.120> do<00:20:45.280> both<00:20:45.520> of<00:20:45.679> those" + }, + { + "start": 1245.909, + "duration": 0.0, + "text": "right? So, if it can't do both of those" + }, + { + "start": 1245.919, + "duration": 0.0, + "text": "right? So, if it can't do both of those things,<00:20:46.880> then<00:20:47.360> the<00:20:47.760> utility<00:20:48.000> of<00:20:48.080> a<00:20:48.240> debugger" + }, + { + "start": 1248.63, + "duration": 0.0, + "text": "things, then the utility of a debugger" + }, + { + "start": 1248.64, + "duration": 0.0, + "text": "things, then the utility of a debugger dramatically<00:20:49.120> drops." + }, + { + "start": 1252.799, + "duration": 0.0, + "text": "So,<00:20:53.039> let's<00:20:53.280> look<00:20:53.360> at<00:20:53.520> how<00:20:53.600> this<00:20:53.840> will<00:20:54.000> work." + }, + { + "start": 1255.59, + "duration": 0.0, + "text": "So, let's look at how this will work." + }, + { + "start": 1255.6, + "duration": 0.0, + "text": "So, let's look at how this will work. I'll<00:20:55.840> start<00:20:56.000> with<00:20:56.080> a<00:20:56.320> brief<00:20:56.559> introduction<00:20:56.960> to" + }, + { + "start": 1257.11, + "duration": 0.0, + "text": "I'll start with a brief introduction to" + }, + { + "start": 1257.12, + "duration": 0.0, + "text": "I'll start with a brief introduction to the<00:20:57.360> basics<00:20:57.600> of<00:20:57.760> how<00:20:58.080> debuggers<00:20:58.640> work<00:20:58.799> with" + }, + { + "start": 1258.95, + "duration": 0.0, + "text": "the basics of how debuggers work with" + }, + { + "start": 1258.96, + "duration": 0.0, + "text": "the basics of how debuggers work with your<00:20:59.200> programs<00:20:59.600> at<00:20:59.840> all<00:21:00.000> and<00:21:00.159> then<00:21:00.320> we'll" + }, + { + "start": 1260.549, + "duration": 0.0, + "text": "your programs at all and then we'll" + }, + { + "start": 1260.559, + "duration": 0.0, + "text": "your programs at all and then we'll build<00:21:00.720> up<00:21:01.039> from<00:21:01.280> there." + }, + { + "start": 1263.029, + "duration": 0.0, + "text": "build up from there." + }, + { + "start": 1263.039, + "duration": 0.0, + "text": "build up from there. First,<00:21:03.360> let's<00:21:03.600> consider<00:21:03.919> how<00:21:04.080> your<00:21:04.240> program" + }, + { + "start": 1264.47, + "duration": 0.0, + "text": "First, let's consider how your program" + }, + { + "start": 1264.48, + "duration": 0.0, + "text": "First, let's consider how your program is<00:21:04.799> executing<00:21:05.440> on<00:21:05.679> a<00:21:05.840> modern<00:21:06.159> operating" + }, + { + "start": 1266.549, + "duration": 0.0, + "text": "is executing on a modern operating" + }, + { + "start": 1266.559, + "duration": 0.0, + "text": "is executing on a modern operating system.<00:21:07.360> And<00:21:07.679> note<00:21:07.919> that<00:21:08.159> like<00:21:08.320> the" + }, + { + "start": 1268.47, + "duration": 0.0, + "text": "system. And note that like the" + }, + { + "start": 1268.48, + "duration": 0.0, + "text": "system. And note that like the terminology<00:21:08.960> I<00:21:09.120> use,<00:21:09.360> it<00:21:09.520> differs<00:21:09.840> across<00:21:10.960> uh" + }, + { + "start": 1271.11, + "duration": 0.0, + "text": "terminology I use, it differs across uh" + }, + { + "start": 1271.12, + "duration": 0.0, + "text": "terminology I use, it differs across uh environments<00:21:11.600> or<00:21:11.919> platforms,<00:21:12.400> but<00:21:12.559> you<00:21:12.799> can" + }, + { + "start": 1272.95, + "duration": 0.0, + "text": "environments or platforms, but you can" + }, + { + "start": 1272.96, + "duration": 0.0, + "text": "environments or platforms, but you can find<00:21:13.280> analoges<00:21:13.840> of<00:21:14.000> everything.<00:21:14.559> Um<00:21:14.880> it's" + }, + { + "start": 1275.11, + "duration": 0.0, + "text": "find analoges of everything. Um it's" + }, + { + "start": 1275.12, + "duration": 0.0, + "text": "find analoges of everything. Um it's all,<00:21:15.840> you<00:21:16.000> know,<00:21:16.559> you'll<00:21:16.880> you'll<00:21:17.120> find<00:21:17.280> the" + }, + { + "start": 1277.51, + "duration": 0.0, + "text": "all, you know, you'll you'll find the" + }, + { + "start": 1277.52, + "duration": 0.0, + "text": "all, you know, you'll you'll find the matching<00:21:17.840> terms<00:21:18.240> if<00:21:18.480> you<00:21:18.559> look.<00:21:19.679> Um<00:21:20.080> so<00:21:20.240> when" + }, + { + "start": 1280.39, + "duration": 0.0, + "text": "matching terms if you look. Um so when" + }, + { + "start": 1280.4, + "duration": 0.0, + "text": "matching terms if you look. Um so when you<00:21:20.559> start<00:21:20.640> your<00:21:20.799> program,<00:21:21.120> you<00:21:21.200> know,<00:21:21.280> you've" + }, + { + "start": 1281.51, + "duration": 0.0, + "text": "you start your program, you know, you've" + }, + { + "start": 1281.52, + "duration": 0.0, + "text": "you start your program, you know, you've got<00:21:21.600> your<00:21:21.760> executables<00:21:22.799> uh<00:21:22.960> file<00:21:23.200> on<00:21:23.360> disk." + }, + { + "start": 1283.75, + "duration": 0.0, + "text": "got your executables uh file on disk." + }, + { + "start": 1283.76, + "duration": 0.0, + "text": "got your executables uh file on disk. there's<00:21:23.919> a<00:21:24.000> bunch<00:21:24.080> of<00:21:24.159> DL<00:21:24.640> files<00:21:24.880> on<00:21:25.120> disk.<00:21:25.919> Uh" + }, + { + "start": 1286.23, + "duration": 0.0, + "text": "there's a bunch of DL files on disk. Uh" + }, + { + "start": 1286.24, + "duration": 0.0, + "text": "there's a bunch of DL files on disk. Uh those<00:21:26.640> can<00:21:26.799> be<00:21:26.960> referred<00:21:27.200> to<00:21:27.360> as<00:21:27.520> executable" + }, + { + "start": 1288.149, + "duration": 0.0, + "text": "those can be referred to as executable" + }, + { + "start": 1288.159, + "duration": 0.0, + "text": "those can be referred to as executable images." + }, + { + "start": 1289.909, + "duration": 0.0, + "text": "images." + }, + { + "start": 1289.919, + "duration": 0.0, + "text": "images. Um<00:21:30.240> when<00:21:30.480> you<00:21:30.640> launch<00:21:30.880> your<00:21:31.120> process,<00:21:32.000> the<00:21:32.240> the" + }, + { + "start": 1292.63, + "duration": 0.0, + "text": "Um when you launch your process, the the" + }, + { + "start": 1292.64, + "duration": 0.0, + "text": "Um when you launch your process, the the kernel's<00:21:33.039> loader<00:21:33.280> is<00:21:33.440> actually<00:21:33.679> going<00:21:33.840> to" + }, + { + "start": 1293.99, + "duration": 0.0, + "text": "kernel's loader is actually going to" + }, + { + "start": 1294.0, + "duration": 0.0, + "text": "kernel's loader is actually going to take<00:21:34.559> those<00:21:34.880> images<00:21:35.760> and<00:21:36.320> uh<00:21:36.480> it<00:21:37.280> it<00:21:37.600> produces" + }, + { + "start": 1297.99, + "duration": 0.0, + "text": "take those images and uh it it produces" + }, + { + "start": 1298.0, + "duration": 0.0, + "text": "take those images and uh it it produces modules.<00:21:38.480> Modules<00:21:38.799> aren't<00:21:39.039> exactly<00:21:39.280> the<00:21:39.440> same" + }, + { + "start": 1299.51, + "duration": 0.0, + "text": "modules. Modules aren't exactly the same" + }, + { + "start": 1299.52, + "duration": 0.0, + "text": "modules. Modules aren't exactly the same as<00:21:39.760> executable<00:21:40.240> images,<00:21:40.480> but<00:21:40.640> you<00:21:40.720> can<00:21:40.880> think" + }, + { + "start": 1300.95, + "duration": 0.0, + "text": "as executable images, but you can think" + }, + { + "start": 1300.96, + "duration": 0.0, + "text": "as executable images, but you can think of<00:21:41.039> modules<00:21:41.440> as<00:21:41.600> sort<00:21:41.760> of<00:21:42.000> the<00:21:42.240> loaded" + }, + { + "start": 1302.63, + "duration": 0.0, + "text": "of modules as sort of the loaded" + }, + { + "start": 1302.64, + "duration": 0.0, + "text": "of modules as sort of the loaded equivalent<00:21:43.200> into<00:21:43.440> your<00:21:43.679> address<00:21:44.000> space<00:21:44.799> of" + }, + { + "start": 1305.11, + "duration": 0.0, + "text": "equivalent into your address space of" + }, + { + "start": 1305.12, + "duration": 0.0, + "text": "equivalent into your address space of those<00:21:45.360> executable<00:21:45.919> images." + }, + { + "start": 1307.669, + "duration": 0.0, + "text": "those executable images." + }, + { + "start": 1307.679, + "duration": 0.0, + "text": "those executable images. Um<00:21:48.159> the<00:21:48.320> process<00:21:48.640> also<00:21:48.880> includes<00:21:49.120> a<00:21:49.280> page" + }, + { + "start": 1309.51, + "duration": 0.0, + "text": "Um the process also includes a page" + }, + { + "start": 1309.52, + "duration": 0.0, + "text": "Um the process also includes a page table<00:21:49.840> to<00:21:50.080> map<00:21:50.320> from,<00:21:50.720> you<00:21:50.880> know,<00:21:50.960> it's<00:21:51.120> got<00:21:51.200> a" + }, + { + "start": 1311.35, + "duration": 0.0, + "text": "table to map from, you know, it's got a" + }, + { + "start": 1311.36, + "duration": 0.0, + "text": "table to map from, you know, it's got a virtual<00:21:51.600> address<00:21:51.840> base.<00:21:52.159> It<00:21:52.240> maps<00:21:52.480> from" + }, + { + "start": 1312.63, + "duration": 0.0, + "text": "virtual address base. It maps from" + }, + { + "start": 1312.64, + "duration": 0.0, + "text": "virtual address base. It maps from virtual<00:21:52.880> addresses<00:21:53.200> to<00:21:53.360> physical<00:21:53.679> addresses." + }, + { + "start": 1314.71, + "duration": 0.0, + "text": "virtual addresses to physical addresses." + }, + { + "start": 1314.72, + "duration": 0.0, + "text": "virtual addresses to physical addresses. Um," + }, + { + "start": 1317.11, + "duration": 0.0, + "text": "Um," + }, + { + "start": 1317.12, + "duration": 0.0, + "text": "Um, and<00:21:57.600> uh,<00:21:57.679> your<00:21:57.919> process<00:21:58.240> also<00:21:58.880> contains<00:21:59.200> one" + }, + { + "start": 1319.35, + "duration": 0.0, + "text": "and uh, your process also contains one" + }, + { + "start": 1319.36, + "duration": 0.0, + "text": "and uh, your process also contains one or<00:21:59.520> more<00:21:59.679> threads<00:22:00.000> that<00:22:00.159> are<00:22:00.320> executing<00:22:00.720> just," + }, + { + "start": 1321.11, + "duration": 0.0, + "text": "or more threads that are executing just," + }, + { + "start": 1321.12, + "duration": 0.0, + "text": "or more threads that are executing just, you<00:22:01.280> know,<00:22:01.360> pieces<00:22:01.679> of<00:22:01.919> code,<00:22:02.400> right?<00:22:03.760> Uh,<00:22:04.000> and" + }, + { + "start": 1324.31, + "duration": 0.0, + "text": "you know, pieces of code, right? Uh, and" + }, + { + "start": 1324.32, + "duration": 0.0, + "text": "you know, pieces of code, right? Uh, and each<00:22:04.559> one<00:22:04.799> includes<00:22:05.200> things<00:22:05.440> like<00:22:05.760> a<00:22:06.000> register" + }, + { + "start": 1326.47, + "duration": 0.0, + "text": "each one includes things like a register" + }, + { + "start": 1326.48, + "duration": 0.0, + "text": "each one includes things like a register file.<00:22:07.360> Um,<00:22:07.600> the<00:22:07.840> kernel<00:22:08.320> scheduler<00:22:08.799> then<00:22:08.960> is" + }, + { + "start": 1329.029, + "duration": 0.0, + "text": "file. Um, the kernel scheduler then is" + }, + { + "start": 1329.039, + "duration": 0.0, + "text": "file. Um, the kernel scheduler then is like,<00:22:09.280> I've<00:22:09.440> got<00:22:09.520> all<00:22:09.600> these<00:22:09.760> threads.<00:22:10.080> I'll" + }, + { + "start": 1330.31, + "duration": 0.0, + "text": "like, I've got all these threads. I'll" + }, + { + "start": 1330.32, + "duration": 0.0, + "text": "like, I've got all these threads. I'll start<00:22:10.480> putting<00:22:10.720> them<00:22:10.799> onto<00:22:11.039> these<00:22:11.200> cores." + }, + { + "start": 1331.59, + "duration": 0.0, + "text": "start putting them onto these cores." + }, + { + "start": 1331.6, + "duration": 0.0, + "text": "start putting them onto these cores. We'll<00:22:11.760> schedule<00:22:12.000> them,<00:22:12.320> get<00:22:12.480> them<00:22:12.640> going,<00:22:13.360> and" + }, + { + "start": 1333.59, + "duration": 0.0, + "text": "We'll schedule them, get them going, and" + }, + { + "start": 1333.6, + "duration": 0.0, + "text": "We'll schedule them, get them going, and then<00:22:13.760> your<00:22:14.000> program<00:22:14.320> is<00:22:14.640> executing." + }, + { + "start": 1336.95, + "duration": 0.0, + "text": "then your program is executing." + }, + { + "start": 1336.96, + "duration": 0.0, + "text": "then your program is executing. So,<00:22:17.200> a<00:22:17.360> debugger<00:22:17.840> is<00:22:18.000> just<00:22:18.159> a<00:22:18.400> program.<00:22:19.360> And<00:22:19.520> so" + }, + { + "start": 1339.669, + "duration": 0.0, + "text": "So, a debugger is just a program. And so" + }, + { + "start": 1339.679, + "duration": 0.0, + "text": "So, a debugger is just a program. And so when<00:22:19.840> it<00:22:20.000> executes<00:22:20.480> it's<00:22:20.640> just<00:22:20.799> another" + }, + { + "start": 1341.19, + "duration": 0.0, + "text": "when it executes it's just another" + }, + { + "start": 1341.2, + "duration": 0.0, + "text": "when it executes it's just another process<00:22:22.159> uh<00:22:22.320> one<00:22:22.559> which<00:22:22.799> the<00:22:23.039> kernel<00:22:23.520> records" + }, + { + "start": 1343.909, + "duration": 0.0, + "text": "process uh one which the kernel records" + }, + { + "start": 1343.919, + "duration": 0.0, + "text": "process uh one which the kernel records as<00:22:24.159> being<00:22:24.400> attached<00:22:25.360> to<00:22:26.000> uh" + }, + { + "start": 1349.2, + "duration": 0.0, + "text": "ah<00:22:29.520> got<00:22:29.679> it<00:22:29.919> thanks<00:22:31.120> uh<00:22:31.280> it's<00:22:31.520> just<00:22:31.760> another" + }, + { + "start": 1351.99, + "duration": 0.0, + "text": "ah got it thanks uh it's just another" + }, + { + "start": 1352.0, + "duration": 0.0, + "text": "ah got it thanks uh it's just another process<00:22:32.400> but<00:22:32.799> uh<00:22:32.880> the<00:22:33.120> kernel<00:22:33.520> is<00:22:33.760> just" + }, + { + "start": 1354.31, + "duration": 0.0, + "text": "process but uh the kernel is just" + }, + { + "start": 1354.32, + "duration": 0.0, + "text": "process but uh the kernel is just recording<00:22:34.799> the<00:22:35.039> debugger<00:22:35.520> as<00:22:35.760> being<00:22:36.000> attached" + }, + { + "start": 1356.549, + "duration": 0.0, + "text": "recording the debugger as being attached" + }, + { + "start": 1356.559, + "duration": 0.0, + "text": "recording the debugger as being attached to<00:22:37.360> the<00:22:37.600> debuggy.<00:22:38.080> It's<00:22:38.240> just<00:22:38.320> a<00:22:38.480> state<00:22:38.720> in<00:22:38.880> the" + }, + { + "start": 1358.95, + "duration": 0.0, + "text": "to the debuggy. It's just a state in the" + }, + { + "start": 1358.96, + "duration": 0.0, + "text": "to the debuggy. It's just a state in the kernel." + }, + { + "start": 1360.47, + "duration": 0.0, + "text": "kernel." + }, + { + "start": 1360.48, + "duration": 0.0, + "text": "kernel. Um,<00:22:41.760> so,<00:22:42.320> uh,<00:22:42.880> when<00:22:43.120> a<00:22:43.280> debugger<00:22:43.600> is<00:22:43.760> attached" + }, + { + "start": 1363.99, + "duration": 0.0, + "text": "Um, so, uh, when a debugger is attached" + }, + { + "start": 1364.0, + "duration": 0.0, + "text": "Um, so, uh, when a debugger is attached to<00:22:44.080> another<00:22:44.400> process,<00:22:44.960> which<00:22:45.280> I<00:22:45.440> refer<00:22:45.600> to<00:22:45.760> as" + }, + { + "start": 1365.909, + "duration": 0.0, + "text": "to another process, which I refer to as" + }, + { + "start": 1365.919, + "duration": 0.0, + "text": "to another process, which I refer to as the<00:22:46.080> debug,<00:22:47.200> I<00:22:47.360> don't<00:22:47.440> know<00:22:47.520> if<00:22:47.679> anyone<00:22:47.919> else" + }, + { + "start": 1368.07, + "duration": 0.0, + "text": "the debug, I don't know if anyone else" + }, + { + "start": 1368.08, + "duration": 0.0, + "text": "the debug, I don't know if anyone else does<00:22:48.320> that,<00:22:48.480> but<00:22:48.799> it's<00:22:49.039> kind<00:22:49.200> of,<00:22:49.440> you<00:22:49.600> know,<00:22:49.760> I" + }, + { + "start": 1369.909, + "duration": 0.0, + "text": "does that, but it's kind of, you know, I" + }, + { + "start": 1369.919, + "duration": 0.0, + "text": "does that, but it's kind of, you know, I don't<00:22:50.000> know,<00:22:50.320> hopefully<00:22:50.720> hopefully<00:22:51.039> it's" + }, + { + "start": 1371.27, + "duration": 0.0, + "text": "don't know, hopefully hopefully it's" + }, + { + "start": 1371.28, + "duration": 0.0, + "text": "don't know, hopefully hopefully it's clear.<00:22:51.600> Hope<00:22:51.840> I<00:22:52.000> don't<00:22:52.159> fumble<00:22:52.880> it.<00:22:53.200> But<00:22:53.760> point" + }, + { + "start": 1373.99, + "duration": 0.0, + "text": "clear. Hope I don't fumble it. But point" + }, + { + "start": 1374.0, + "duration": 0.0, + "text": "clear. Hope I don't fumble it. But point being,<00:22:54.480> uh,<00:22:54.640> when<00:22:54.880> you're<00:22:55.039> attached<00:22:55.440> as<00:22:55.600> debug" + }, + { + "start": 1375.99, + "duration": 0.0, + "text": "being, uh, when you're attached as debug" + }, + { + "start": 1376.0, + "duration": 0.0, + "text": "being, uh, when you're attached as debug as<00:22:56.159> the<00:22:56.320> debugger,<00:22:56.720> the<00:22:56.799> kernel<00:22:57.120> will<00:22:57.280> report" + }, + { + "start": 1377.51, + "duration": 0.0, + "text": "as the debugger, the kernel will report" + }, + { + "start": 1377.52, + "duration": 0.0, + "text": "as the debugger, the kernel will report to<00:22:57.679> the<00:22:57.760> debugger<00:22:58.559> uh,<00:22:58.720> debug<00:22:59.039> events.<00:22:59.360> You" + }, + { + "start": 1379.51, + "duration": 0.0, + "text": "to the debugger uh, debug events. You" + }, + { + "start": 1379.52, + "duration": 0.0, + "text": "to the debugger uh, debug events. You get<00:22:59.840> sort<00:23:00.000> of<00:23:00.080> a<00:23:00.240> series<00:23:00.400> of<00:23:00.559> debug<00:23:00.960> events." + }, + { + "start": 1381.43, + "duration": 0.0, + "text": "get sort of a series of debug events." + }, + { + "start": 1381.44, + "duration": 0.0, + "text": "get sort of a series of debug events. Um,<00:23:02.799> sometimes<00:23:03.120> the<00:23:03.280> building<00:23:03.520> blocks<00:23:03.679> that" + }, + { + "start": 1383.83, + "duration": 0.0, + "text": "Um, sometimes the building blocks that" + }, + { + "start": 1383.84, + "duration": 0.0, + "text": "Um, sometimes the building blocks that the<00:23:03.919> colonel<00:23:04.159> provides<00:23:04.400> are<00:23:04.559> lower<00:23:04.799> than" + }, + { + "start": 1384.95, + "duration": 0.0, + "text": "the colonel provides are lower than" + }, + { + "start": 1384.96, + "duration": 0.0, + "text": "the colonel provides are lower than this,<00:23:05.280> but<00:23:06.240> in<00:23:06.400> principle,<00:23:06.799> this<00:23:06.960> is<00:23:07.120> sort<00:23:07.280> of" + }, + { + "start": 1387.51, + "duration": 0.0, + "text": "this, but in principle, this is sort of" + }, + { + "start": 1387.52, + "duration": 0.0, + "text": "this, but in principle, this is sort of how<00:23:07.760> it's<00:23:08.000> how<00:23:08.159> you<00:23:08.320> can<00:23:08.480> conceptualize<00:23:09.039> it." + }, + { + "start": 1389.909, + "duration": 0.0, + "text": "how it's how you can conceptualize it." + }, + { + "start": 1389.919, + "duration": 0.0, + "text": "how it's how you can conceptualize it. Um,<00:23:10.480> and<00:23:10.640> these<00:23:10.880> debug<00:23:11.200> events<00:23:11.440> include" + }, + { + "start": 1391.669, + "duration": 0.0, + "text": "Um, and these debug events include" + }, + { + "start": 1391.679, + "duration": 0.0, + "text": "Um, and these debug events include things<00:23:11.840> like,<00:23:12.080> okay,<00:23:12.240> a<00:23:12.400> thread<00:23:12.559> has<00:23:12.720> been" + }, + { + "start": 1392.789, + "duration": 0.0, + "text": "things like, okay, a thread has been" + }, + { + "start": 1392.799, + "duration": 0.0, + "text": "things like, okay, a thread has been created,<00:23:13.120> a<00:23:13.280> module<00:23:13.520> has<00:23:13.679> been<00:23:13.840> loaded," + }, + { + "start": 1395.59, + "duration": 0.0, + "text": "created, a module has been loaded," + }, + { + "start": 1395.6, + "duration": 0.0, + "text": "created, a module has been loaded, etc.<00:23:16.640> Or,<00:23:17.039> oh,<00:23:17.280> I<00:23:17.440> should<00:23:17.600> say,<00:23:17.840> this<00:23:18.000> one's" + }, + { + "start": 1398.31, + "duration": 0.0, + "text": "etc. Or, oh, I should say, this one's" + }, + { + "start": 1398.32, + "duration": 0.0, + "text": "etc. Or, oh, I should say, this one's important,<00:23:18.960> or<00:23:19.280> an<00:23:19.520> exception<00:23:19.840> has<00:23:20.080> been<00:23:20.159> hit," + }, + { + "start": 1400.549, + "duration": 0.0, + "text": "important, or an exception has been hit," + }, + { + "start": 1400.559, + "duration": 0.0, + "text": "important, or an exception has been hit, right?<00:23:21.120> Like<00:23:21.280> a<00:23:21.520> hardware<00:23:21.840> exception." + }, + { + "start": 1403.59, + "duration": 0.0, + "text": "right? Like a hardware exception." + }, + { + "start": 1403.6, + "duration": 0.0, + "text": "right? Like a hardware exception. Um,<00:23:24.000> so<00:23:24.159> the<00:23:24.400> debugger<00:23:24.799> process<00:23:25.120> control," + }, + { + "start": 1405.59, + "duration": 0.0, + "text": "Um, so the debugger process control," + }, + { + "start": 1405.6, + "duration": 0.0, + "text": "Um, so the debugger process control, like<00:23:25.760> the<00:23:25.919> piece<00:23:26.080> of<00:23:26.159> the<00:23:26.240> debugger<00:23:26.640> that's" + }, + { + "start": 1406.789, + "duration": 0.0, + "text": "like the piece of the debugger that's" + }, + { + "start": 1406.799, + "duration": 0.0, + "text": "like the piece of the debugger that's doing<00:23:26.960> process<00:23:27.280> control,<00:23:27.600> and<00:23:27.760> the<00:23:27.919> debuggy" + }, + { + "start": 1408.31, + "duration": 0.0, + "text": "doing process control, and the debuggy" + }, + { + "start": 1408.32, + "duration": 0.0, + "text": "doing process control, and the debuggy are<00:23:28.480> in<00:23:28.640> kind<00:23:28.720> of<00:23:28.799> one<00:23:28.960> of<00:23:29.120> two<00:23:29.360> states,<00:23:29.600> you" + }, + { + "start": 1409.75, + "duration": 0.0, + "text": "are in kind of one of two states, you" + }, + { + "start": 1409.76, + "duration": 0.0, + "text": "are in kind of one of two states, you can<00:23:29.840> think<00:23:30.000> of<00:23:30.080> it.<00:23:31.360> um<00:23:31.760> either<00:23:32.000> the" + }, + { + "start": 1412.149, + "duration": 0.0, + "text": "can think of it. um either the" + }, + { + "start": 1412.159, + "duration": 0.0, + "text": "can think of it. um either the debugger's<00:23:32.720> process<00:23:33.039> control<00:23:33.679> is<00:23:34.000> running" + }, + { + "start": 1415.11, + "duration": 0.0, + "text": "debugger's process control is running" + }, + { + "start": 1415.12, + "duration": 0.0, + "text": "debugger's process control is running and<00:23:35.360> the<00:23:35.520> debuggy<00:23:36.000> is<00:23:36.240> paused<00:23:37.520> or<00:23:38.000> the" + }, + { + "start": 1418.23, + "duration": 0.0, + "text": "and the debuggy is paused or the" + }, + { + "start": 1418.24, + "duration": 0.0, + "text": "and the debuggy is paused or the debugger<00:23:38.720> process<00:23:39.120> control<00:23:39.360> is<00:23:39.600> paused<00:23:40.320> and" + }, + { + "start": 1420.549, + "duration": 0.0, + "text": "debugger process control is paused and" + }, + { + "start": 1420.559, + "duration": 0.0, + "text": "debugger process control is paused and the<00:23:40.720> debug<00:23:41.360> is<00:23:41.679> running.<00:23:42.159> So<00:23:42.320> it<00:23:42.559> get<00:23:42.799> kind<00:23:42.960> of" + }, + { + "start": 1423.029, + "duration": 0.0, + "text": "the debug is running. So it get kind of" + }, + { + "start": 1423.039, + "duration": 0.0, + "text": "the debug is running. So it get kind of a<00:23:43.360> pingpong<00:23:43.919> between<00:23:44.159> these<00:23:44.400> two<00:23:44.559> states<00:23:44.799> is" + }, + { + "start": 1425.029, + "duration": 0.0, + "text": "a pingpong between these two states is" + }, + { + "start": 1425.039, + "duration": 0.0, + "text": "a pingpong between these two states is happening." + }, + { + "start": 1427.59, + "duration": 0.0, + "text": "happening." + }, + { + "start": 1427.6, + "duration": 0.0, + "text": "happening. Uh<00:23:47.840> and<00:23:48.080> this<00:23:48.240> means<00:23:48.400> that<00:23:48.720> execution<00:23:49.679> between" + }, + { + "start": 1429.909, + "duration": 0.0, + "text": "Uh and this means that execution between" + }, + { + "start": 1429.919, + "duration": 0.0, + "text": "Uh and this means that execution between a<00:23:50.080> debugger<00:23:50.480> and<00:23:50.640> debug<00:23:51.280> can<00:23:51.440> sort<00:23:51.600> of<00:23:51.679> be<00:23:52.000> you" + }, + { + "start": 1432.23, + "duration": 0.0, + "text": "a debugger and debug can sort of be you" + }, + { + "start": 1432.24, + "duration": 0.0, + "text": "a debugger and debug can sort of be you can<00:23:52.320> think<00:23:52.400> of<00:23:52.480> it<00:23:52.640> as<00:23:52.799> interled<00:23:53.280> across<00:23:53.600> time" + }, + { + "start": 1433.909, + "duration": 0.0, + "text": "can think of it as interled across time" + }, + { + "start": 1433.919, + "duration": 0.0, + "text": "can think of it as interled across time like<00:23:54.320> it's<00:23:54.559> mutually<00:23:54.960> exclusive<00:23:55.520> only<00:23:55.760> one<00:23:55.919> is" + }, + { + "start": 1436.149, + "duration": 0.0, + "text": "like it's mutually exclusive only one is" + }, + { + "start": 1436.159, + "duration": 0.0, + "text": "like it's mutually exclusive only one is really<00:23:56.400> doing<00:23:56.559> things<00:23:57.679> uh<00:23:57.760> at<00:23:58.000> a<00:23:58.159> time." + }, + { + "start": 1439.59, + "duration": 0.0, + "text": "really doing things uh at a time." + }, + { + "start": 1439.6, + "duration": 0.0, + "text": "really doing things uh at a time. This<00:23:59.840> allows<00:24:00.080> the<00:24:00.159> debugger<00:24:00.559> to<00:24:00.720> sort<00:24:00.880> of" + }, + { + "start": 1440.95, + "duration": 0.0, + "text": "This allows the debugger to sort of" + }, + { + "start": 1440.96, + "duration": 0.0, + "text": "This allows the debugger to sort of interle<00:24:01.360> its<00:24:01.600> execution<00:24:02.480> with<00:24:02.720> the<00:24:02.880> debuggy" + }, + { + "start": 1443.35, + "duration": 0.0, + "text": "interle its execution with the debuggy" + }, + { + "start": 1443.36, + "duration": 0.0, + "text": "interle its execution with the debuggy in<00:24:03.440> a<00:24:03.520> variety<00:24:03.760> of<00:24:03.840> ways.<00:24:04.080> So<00:24:04.240> this<00:24:04.400> is<00:24:04.480> how<00:24:04.640> the" + }, + { + "start": 1444.789, + "duration": 0.0, + "text": "in a variety of ways. So this is how the" + }, + { + "start": 1444.799, + "duration": 0.0, + "text": "in a variety of ways. So this is how the runtime<00:24:05.520> code<00:24:05.840> modification<00:24:06.720> actually" + }, + { + "start": 1447.029, + "duration": 0.0, + "text": "runtime code modification actually" + }, + { + "start": 1447.039, + "duration": 0.0, + "text": "runtime code modification actually works.<00:24:07.679> It's<00:24:07.919> that<00:24:08.320> the<00:24:08.559> debugger<00:24:09.120> has<00:24:09.360> the" + }, + { + "start": 1449.51, + "duration": 0.0, + "text": "works. It's that the debugger has the" + }, + { + "start": 1449.52, + "duration": 0.0, + "text": "works. It's that the debugger has the opportunity<00:24:09.840> to<00:24:10.080> sort<00:24:10.240> of<00:24:10.400> mutate<00:24:10.880> the<00:24:11.120> debug" + }, + { + "start": 1452.149, + "duration": 0.0, + "text": "opportunity to sort of mutate the debug" + }, + { + "start": 1452.159, + "duration": 0.0, + "text": "opportunity to sort of mutate the debug live<00:24:12.720> before<00:24:12.960> it<00:24:13.200> continues.<00:24:13.760> So<00:24:13.919> you<00:24:14.080> can" + }, + { + "start": 1454.31, + "duration": 0.0, + "text": "live before it continues. So you can" + }, + { + "start": 1454.32, + "duration": 0.0, + "text": "live before it continues. So you can change<00:24:14.640> how<00:24:14.799> it's<00:24:15.039> actually<00:24:15.279> executing." + }, + { + "start": 1455.99, + "duration": 0.0, + "text": "change how it's actually executing." + }, + { + "start": 1456.0, + "duration": 0.0, + "text": "change how it's actually executing. That's<00:24:16.240> how<00:24:16.400> it<00:24:16.480> avoids<00:24:16.880> the<00:24:17.120> whole<00:24:17.440> build" + }, + { + "start": 1457.75, + "duration": 0.0, + "text": "That's how it avoids the whole build" + }, + { + "start": 1457.76, + "duration": 0.0, + "text": "That's how it avoids the whole build step<00:24:18.159> alto<00:24:18.400> together.<00:24:19.360> Um" + }, + { + "start": 1461.029, + "duration": 0.0, + "text": "step alto together. Um" + }, + { + "start": 1461.039, + "duration": 0.0, + "text": "step alto together. Um now<00:24:21.200> the<00:24:21.360> granularity<00:24:21.840> here<00:24:22.000> is<00:24:22.159> somewhat" + }, + { + "start": 1462.39, + "duration": 0.0, + "text": "now the granularity here is somewhat" + }, + { + "start": 1462.4, + "duration": 0.0, + "text": "now the granularity here is somewhat subtle<00:24:23.039> and<00:24:23.279> it<00:24:23.440> varies<00:24:23.679> by<00:24:23.919> platform.<00:24:24.480> So," + }, + { + "start": 1465.029, + "duration": 0.0, + "text": "subtle and it varies by platform. So," + }, + { + "start": 1465.039, + "duration": 0.0, + "text": "subtle and it varies by platform. So, you<00:24:25.200> know,<00:24:25.360> for<00:24:25.520> example,<00:24:26.159> while<00:24:26.480> the<00:24:26.640> debuggy" + }, + { + "start": 1467.11, + "duration": 0.0, + "text": "you know, for example, while the debuggy" + }, + { + "start": 1467.12, + "duration": 0.0, + "text": "you know, for example, while the debuggy is<00:24:27.279> executing,<00:24:27.600> the<00:24:27.760> debugger<00:24:28.080> could<00:24:28.240> still" + }, + { + "start": 1468.39, + "duration": 0.0, + "text": "is executing, the debugger could still" + }, + { + "start": 1468.4, + "duration": 0.0, + "text": "is executing, the debugger could still be<00:24:28.559> doing<00:24:28.720> UI<00:24:29.200> like<00:24:30.000> um<00:24:30.480> you<00:24:30.720> know," + }, + { + "start": 1472.71, + "duration": 0.0, + "text": "be doing UI like um you know," + }, + { + "start": 1472.72, + "duration": 0.0, + "text": "be doing UI like um you know, it's<00:24:33.039> not<00:24:33.200> necessarily<00:24:34.000> exactly<00:24:34.559> that,<00:24:35.279> you" + }, + { + "start": 1475.43, + "duration": 0.0, + "text": "it's not necessarily exactly that, you" + }, + { + "start": 1475.44, + "duration": 0.0, + "text": "it's not necessarily exactly that, you know,<00:24:35.679> the<00:24:35.840> the<00:24:36.240> entire<00:24:36.559> debugger<00:24:36.960> is<00:24:37.120> stopped" + }, + { + "start": 1477.35, + "duration": 0.0, + "text": "know, the the entire debugger is stopped" + }, + { + "start": 1477.36, + "duration": 0.0, + "text": "know, the the entire debugger is stopped while<00:24:37.600> the<00:24:37.760> debuggy<00:24:38.960> uh<00:24:39.120> is<00:24:39.360> running.<00:24:40.320> Um" + }, + { + "start": 1482.149, + "duration": 0.0, + "text": "while the debuggy uh is running. Um" + }, + { + "start": 1482.159, + "duration": 0.0, + "text": "while the debuggy uh is running. Um now<00:24:42.400> on<00:24:42.640> Windows,<00:24:43.360> it<00:24:43.600> tends<00:24:43.840> to<00:24:44.000> look<00:24:44.159> a<00:24:44.320> lot" + }, + { + "start": 1484.47, + "duration": 0.0, + "text": "now on Windows, it tends to look a lot" + }, + { + "start": 1484.48, + "duration": 0.0, + "text": "now on Windows, it tends to look a lot like<00:24:44.640> this<00:24:45.120> um<00:24:45.279> because<00:24:45.520> it's<00:24:45.760> explicitly" + }, + { + "start": 1486.39, + "duration": 0.0, + "text": "like this um because it's explicitly" + }, + { + "start": 1486.4, + "duration": 0.0, + "text": "like this um because it's explicitly like<00:24:46.799> wait<00:24:47.039> for<00:24:47.200> a<00:24:47.279> debug<00:24:47.679> event<00:24:47.919> API.<00:24:48.720> Um<00:24:49.039> so" + }, + { + "start": 1489.19, + "duration": 0.0, + "text": "like wait for a debug event API. Um so" + }, + { + "start": 1489.2, + "duration": 0.0, + "text": "like wait for a debug event API. Um so in<00:24:49.360> that<00:24:49.520> case,<00:24:49.679> it's<00:24:49.919> like<00:24:50.080> your<00:24:50.240> thread<00:24:50.400> is" + }, + { + "start": 1490.63, + "duration": 0.0, + "text": "in that case, it's like your thread is" + }, + { + "start": 1490.64, + "duration": 0.0, + "text": "in that case, it's like your thread is literally<00:24:50.960> sleeping<00:24:51.279> here.<00:24:51.919> So<00:24:52.559> um<00:24:52.799> it<00:24:53.039> looks" + }, + { + "start": 1493.75, + "duration": 0.0, + "text": "literally sleeping here. So um it looks" + }, + { + "start": 1493.76, + "duration": 0.0, + "text": "literally sleeping here. So um it looks it<00:24:54.000> looks<00:24:54.240> a<00:24:54.400> lot<00:24:54.480> like<00:24:54.720> this.<00:24:55.120> Uh<00:24:55.679> but<00:24:56.080> you" + }, + { + "start": 1496.149, + "duration": 0.0, + "text": "it looks a lot like this. Uh but you" + }, + { + "start": 1496.159, + "duration": 0.0, + "text": "it looks a lot like this. Uh but you know<00:24:56.400> hope<00:24:56.640> hopefully<00:24:56.960> that's<00:24:57.200> clear<00:24:57.360> enough." + }, + { + "start": 1498.149, + "duration": 0.0, + "text": "know hope hopefully that's clear enough." + }, + { + "start": 1498.159, + "duration": 0.0, + "text": "know hope hopefully that's clear enough. Um" + }, + { + "start": 1501.11, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1501.12, + "duration": 0.0, + "text": "Um so<00:25:01.679> this<00:25:01.919> interled<00:25:02.720> uh<00:25:02.880> execution<00:25:03.760> like<00:25:03.919> I" + }, + { + "start": 1504.07, + "duration": 0.0, + "text": "so this interled uh execution like I" + }, + { + "start": 1504.08, + "duration": 0.0, + "text": "so this interled uh execution like I said<00:25:04.480> the<00:25:04.720> debugger<00:25:05.120> can<00:25:05.200> do<00:25:05.279> a<00:25:05.440> bunch<00:25:05.600> of" + }, + { + "start": 1505.669, + "duration": 0.0, + "text": "said the debugger can do a bunch of" + }, + { + "start": 1505.679, + "duration": 0.0, + "text": "said the debugger can do a bunch of things<00:25:06.080> like<00:25:06.880> read<00:25:07.440> registers,<00:25:08.080> write" + }, + { + "start": 1508.39, + "duration": 0.0, + "text": "things like read registers, write" + }, + { + "start": 1508.4, + "duration": 0.0, + "text": "things like read registers, write registers,<00:25:09.440> read<00:25:09.760> debug<00:25:10.159> events<00:25:10.559> or<00:25:10.880> obtain" + }, + { + "start": 1511.269, + "duration": 0.0, + "text": "registers, read debug events or obtain" + }, + { + "start": 1511.279, + "duration": 0.0, + "text": "registers, read debug events or obtain debug<00:25:11.679> events," + }, + { + "start": 1514.149, + "duration": 0.0, + "text": "debug events," + }, + { + "start": 1514.159, + "duration": 0.0, + "text": "debug events, read<00:25:14.400> memory,<00:25:15.120> write<00:25:15.360> memory" + }, + { + "start": 1517.11, + "duration": 0.0, + "text": "read memory, write memory" + }, + { + "start": 1517.12, + "duration": 0.0, + "text": "read memory, write memory um<00:25:17.520> and<00:25:17.760> so<00:25:17.919> on.<00:25:18.640> Uh<00:25:19.039> and<00:25:19.279> then<00:25:19.679> you<00:25:19.840> know<00:25:20.080> from" + }, + { + "start": 1520.549, + "duration": 0.0, + "text": "um and so on. Uh and then you know from" + }, + { + "start": 1520.559, + "duration": 0.0, + "text": "um and so on. Uh and then you know from the" + }, + { + "start": 1522.31, + "duration": 0.0, + "text": "the" + }, + { + "start": 1522.32, + "duration": 0.0, + "text": "the well<00:25:22.559> that<00:25:22.799> covers<00:25:23.039> all<00:25:23.120> of<00:25:23.200> it<00:25:23.360> right<00:25:23.600> read" + }, + { + "start": 1523.75, + "duration": 0.0, + "text": "well that covers all of it right read" + }, + { + "start": 1523.76, + "duration": 0.0, + "text": "well that covers all of it right read and<00:25:23.919> write<00:25:24.159> is<00:25:24.559> reading<00:25:24.960> is<00:25:25.039> is<00:25:25.360> the<00:25:25.520> blue<00:25:25.760> and" + }, + { + "start": 1525.99, + "duration": 0.0, + "text": "and write is reading is is the blue and" + }, + { + "start": 1526.0, + "duration": 0.0, + "text": "and write is reading is is the blue and then<00:25:26.640> writing<00:25:26.960> is<00:25:27.120> the<00:25:27.279> orange<00:25:27.600> right?" + }, + { + "start": 1530.07, + "duration": 0.0, + "text": "then writing is the orange right?" + }, + { + "start": 1530.08, + "duration": 0.0, + "text": "then writing is the orange right? So<00:25:30.640> we<00:25:30.880> know<00:25:30.960> that<00:25:31.120> a<00:25:31.279> debugger<00:25:31.840> can<00:25:32.080> read" + }, + { + "start": 1532.31, + "duration": 0.0, + "text": "So we know that a debugger can read" + }, + { + "start": 1532.32, + "duration": 0.0, + "text": "So we know that a debugger can read registers<00:25:32.799> in<00:25:32.960> memory<00:25:33.440> which<00:25:33.600> is<00:25:33.760> really<00:25:33.919> the" + }, + { + "start": 1534.07, + "duration": 0.0, + "text": "registers in memory which is really the" + }, + { + "start": 1534.08, + "duration": 0.0, + "text": "registers in memory which is really the main<00:25:34.240> building<00:25:34.559> block<00:25:35.279> for<00:25:35.520> like<00:25:35.760> extracting" + }, + { + "start": 1536.31, + "duration": 0.0, + "text": "main building block for like extracting" + }, + { + "start": 1536.32, + "duration": 0.0, + "text": "main building block for like extracting information<00:25:36.720> out<00:25:36.880> of<00:25:36.960> a<00:25:37.200> process<00:25:37.520> right<00:25:37.679> you" + }, + { + "start": 1537.83, + "duration": 0.0, + "text": "information out of a process right you" + }, + { + "start": 1537.84, + "duration": 0.0, + "text": "information out of a process right you kind<00:25:38.000> of<00:25:38.159> you<00:25:38.400> can<00:25:38.480> read<00:25:38.720> memory<00:25:39.760> right<00:25:40.080> and<00:25:40.240> so" + }, + { + "start": 1540.47, + "duration": 0.0, + "text": "kind of you can read memory right and so" + }, + { + "start": 1540.48, + "duration": 0.0, + "text": "kind of you can read memory right and so like<00:25:40.640> all<00:25:40.799> we<00:25:40.960> need<00:25:41.120> is<00:25:41.360> to<00:25:41.520> like<00:25:41.679> ask<00:25:41.919> the<00:25:42.080> user" + }, + { + "start": 1542.23, + "duration": 0.0, + "text": "like all we need is to like ask the user" + }, + { + "start": 1542.24, + "duration": 0.0, + "text": "like all we need is to like ask the user for<00:25:42.400> an<00:25:42.559> address<00:25:43.039> you<00:25:43.120> know<00:25:43.279> ask<00:25:43.520> them<00:25:43.679> for<00:25:43.760> a" + }, + { + "start": 1543.909, + "duration": 0.0, + "text": "for an address you know ask them for a" + }, + { + "start": 1543.919, + "duration": 0.0, + "text": "for an address you know ask them for a size<00:25:44.080> and<00:25:44.240> then<00:25:44.320> we<00:25:44.400> just<00:25:44.559> show<00:25:44.640> them<00:25:44.720> the" + }, + { + "start": 1544.87, + "duration": 0.0, + "text": "size and then we just show them the" + }, + { + "start": 1544.88, + "duration": 0.0, + "text": "size and then we just show them the bytes<00:25:45.120> and<00:25:45.200> then<00:25:45.360> we're<00:25:45.440> done<00:25:45.679> right" + }, + { + "start": 1545.909, + "duration": 0.0, + "text": "bytes and then we're done right" + }, + { + "start": 1545.919, + "duration": 0.0, + "text": "bytes and then we're done right visualization<00:25:47.120> the<00:25:47.360> end<00:25:48.400> um<00:25:49.360> obviously<00:25:49.679> not" + }, + { + "start": 1549.99, + "duration": 0.0, + "text": "visualization the end um obviously not" + }, + { + "start": 1550.0, + "duration": 0.0, + "text": "visualization the end um obviously not as<00:25:50.159> the<00:25:50.400> user<00:25:50.880> you<00:25:51.039> don't<00:25:51.200> want<00:25:51.279> to<00:25:51.360> ask<00:25:51.600> about" + }, + { + "start": 1551.83, + "duration": 0.0, + "text": "as the user you don't want to ask about" + }, + { + "start": 1551.84, + "duration": 0.0, + "text": "as the user you don't want to ask about address<00:25:52.400> uh<00:25:52.559> what<00:25:52.799> what<00:25:52.960> did<00:25:53.120> I<00:25:53.279> write<00:25:53.679> 0x1<00:25:54.559> f4" + }, + { + "start": 1555.11, + "duration": 0.0, + "text": "address uh what what did I write 0x1 f4" + }, + { + "start": 1555.12, + "duration": 0.0, + "text": "address uh what what did I write 0x1 f4 3<00:25:55.440> b5<00:25:55.919> c<00:25:56.159> 0<00:25:56.640> b<00:25:56.799> 0" + }, + { + "start": 1558.47, + "duration": 0.0, + "text": "3 b5 c 0 b 0" + }, + { + "start": 1558.48, + "duration": 0.0, + "text": "3 b5 c 0 b 0 you<00:25:58.640> wanted<00:25:58.880> to<00:25:58.960> ask<00:25:59.120> about<00:25:59.440> X" + }, + { + "start": 1561.43, + "duration": 0.0, + "text": "you wanted to ask about X" + }, + { + "start": 1561.44, + "duration": 0.0, + "text": "you wanted to ask about X and<00:26:01.679> ideally<00:26:02.080> the<00:26:02.240> system<00:26:02.480> which<00:26:03.039> allows<00:26:03.279> you" + }, + { + "start": 1563.43, + "duration": 0.0, + "text": "and ideally the system which allows you" + }, + { + "start": 1563.44, + "duration": 0.0, + "text": "and ideally the system which allows you to<00:26:03.600> ask<00:26:03.760> about<00:26:03.919> X<00:26:04.720> is<00:26:05.039> flexible<00:26:05.520> enough<00:26:06.480> such" + }, + { + "start": 1566.71, + "duration": 0.0, + "text": "to ask about X is flexible enough such" + }, + { + "start": 1566.72, + "duration": 0.0, + "text": "to ask about X is flexible enough such that<00:26:07.039> X<00:26:07.279> is<00:26:07.520> a<00:26:07.679> large<00:26:08.000> set<00:26:08.159> of<00:26:08.240> expressions.<00:26:08.720> It" + }, + { + "start": 1568.789, + "duration": 0.0, + "text": "that X is a large set of expressions. It" + }, + { + "start": 1568.799, + "duration": 0.0, + "text": "that X is a large set of expressions. It could<00:26:08.960> be<00:26:09.200> it<00:26:09.360> could<00:26:09.520> be<00:26:09.679> many<00:26:09.919> things<00:26:10.000> you" + }, + { + "start": 1570.23, + "duration": 0.0, + "text": "could be it could be many things you" + }, + { + "start": 1570.24, + "duration": 0.0, + "text": "could be it could be many things you could<00:26:10.320> ask<00:26:10.480> about<00:26:10.720> your<00:26:10.880> program." + }, + { + "start": 1573.35, + "duration": 0.0, + "text": "could ask about your program." + }, + { + "start": 1573.36, + "duration": 0.0, + "text": "could ask about your program. Um<00:26:13.760> debuggers<00:26:14.240> know<00:26:14.320> how<00:26:14.400> to<00:26:14.559> evaluate" + }, + { + "start": 1574.87, + "duration": 0.0, + "text": "Um debuggers know how to evaluate" + }, + { + "start": 1574.88, + "duration": 0.0, + "text": "Um debuggers know how to evaluate something<00:26:15.120> like<00:26:15.279> X<00:26:16.240> through<00:26:17.039> uh<00:26:17.200> an<00:26:17.440> evalu<00:26:18.080> uh" + }, + { + "start": 1578.23, + "duration": 0.0, + "text": "something like X through uh an evalu uh" + }, + { + "start": 1578.24, + "duration": 0.0, + "text": "something like X through uh an evalu uh an<00:26:18.480> expression<00:26:18.960> evaluation<00:26:19.600> system.<00:26:20.559> And" + }, + { + "start": 1580.71, + "duration": 0.0, + "text": "an expression evaluation system. And" + }, + { + "start": 1580.72, + "duration": 0.0, + "text": "an expression evaluation system. And this<00:26:20.880> is<00:26:20.960> where<00:26:21.120> all<00:26:21.279> the<00:26:21.440> visualization" + }, + { + "start": 1581.99, + "duration": 0.0, + "text": "this is where all the visualization" + }, + { + "start": 1582.0, + "duration": 0.0, + "text": "this is where all the visualization stuff<00:26:22.240> starts<00:26:22.640> kind<00:26:22.799> of<00:26:22.880> piecing<00:26:23.279> together." + }, + { + "start": 1583.669, + "duration": 0.0, + "text": "stuff starts kind of piecing together." + }, + { + "start": 1583.679, + "duration": 0.0, + "text": "stuff starts kind of piecing together. So<00:26:23.840> let's<00:26:24.000> dig<00:26:24.159> into<00:26:24.400> that." + }, + { + "start": 1586.39, + "duration": 0.0, + "text": "So let's dig into that." + }, + { + "start": 1586.4, + "duration": 0.0, + "text": "So let's dig into that. Evaluating<00:26:27.039> expressions,<00:26:27.679> it's<00:26:27.919> just<00:26:28.080> a" + }, + { + "start": 1588.23, + "duration": 0.0, + "text": "Evaluating expressions, it's just a" + }, + { + "start": 1588.24, + "duration": 0.0, + "text": "Evaluating expressions, it's just a compiler.<00:26:28.720> It's<00:26:28.880> just<00:26:29.039> a<00:26:29.200> compiler<00:26:29.600> problem." + }, + { + "start": 1590.149, + "duration": 0.0, + "text": "compiler. It's just a compiler problem." + }, + { + "start": 1590.159, + "duration": 0.0, + "text": "compiler. It's just a compiler problem. Normal<00:26:30.480> compiler<00:26:30.960> problem.<00:26:31.200> We<00:26:31.360> know<00:26:31.440> how<00:26:31.600> to" + }, + { + "start": 1591.669, + "duration": 0.0, + "text": "Normal compiler problem. We know how to" + }, + { + "start": 1591.679, + "duration": 0.0, + "text": "Normal compiler problem. We know how to solve<00:26:31.919> those.<00:26:32.400> If<00:26:32.640> we<00:26:32.799> have<00:26:32.880> some<00:26:33.360> textual" + }, + { + "start": 1593.909, + "duration": 0.0, + "text": "solve those. If we have some textual" + }, + { + "start": 1593.919, + "duration": 0.0, + "text": "solve those. If we have some textual expression<00:26:34.400> like<00:26:34.640> entity.targets<00:26:35.840> at<00:26:36.080> five," + }, + { + "start": 1597.269, + "duration": 0.0, + "text": "expression like entity.targets at five," + }, + { + "start": 1597.279, + "duration": 0.0, + "text": "expression like entity.targets at five, the<00:26:37.520> first<00:26:37.679> step<00:26:37.840> we<00:26:38.080> can<00:26:38.159> use<00:26:38.320> to<00:26:38.480> understand" + }, + { + "start": 1598.789, + "duration": 0.0, + "text": "the first step we can use to understand" + }, + { + "start": 1598.799, + "duration": 0.0, + "text": "the first step we can use to understand that<00:26:39.039> expression<00:26:40.400> is<00:26:40.640> to<00:26:40.799> parse<00:26:41.039> it<00:26:41.440> into<00:26:41.679> a" + }, + { + "start": 1601.83, + "duration": 0.0, + "text": "that expression is to parse it into a" + }, + { + "start": 1601.84, + "duration": 0.0, + "text": "that expression is to parse it into a structured<00:26:42.240> representation.<00:26:43.279> Now<00:26:43.600> Sam<00:26:44.159> has" + }, + { + "start": 1604.39, + "duration": 0.0, + "text": "structured representation. Now Sam has" + }, + { + "start": 1604.4, + "duration": 0.0, + "text": "structured representation. Now Sam has some<00:26:44.640> opinions<00:26:46.080> that<00:26:46.400> will<00:26:47.039> invalidate<00:26:47.840> what" + }, + { + "start": 1608.07, + "duration": 0.0, + "text": "some opinions that will invalidate what" + }, + { + "start": 1608.08, + "duration": 0.0, + "text": "some opinions that will invalidate what what<00:26:48.240> I<00:26:48.400> say<00:26:48.720> maybe,<00:26:48.960> but<00:26:49.279> but<00:26:49.600> you<00:26:49.679> know<00:26:49.840> the" + }, + { + "start": 1609.99, + "duration": 0.0, + "text": "what I say maybe, but but you know the" + }, + { + "start": 1610.0, + "duration": 0.0, + "text": "what I say maybe, but but you know the traditional<00:26:50.320> pipeline<00:26:50.720> is<00:26:50.880> like<00:26:51.039> okay,<00:26:51.279> first" + }, + { + "start": 1611.43, + "duration": 0.0, + "text": "traditional pipeline is like okay, first" + }, + { + "start": 1611.44, + "duration": 0.0, + "text": "traditional pipeline is like okay, first you're<00:26:51.600> going<00:26:51.600> to<00:26:51.760> parse<00:26:51.919> it<00:26:52.080> into<00:26:52.240> some<00:26:52.400> sort" + }, + { + "start": 1612.47, + "duration": 0.0, + "text": "you're going to parse it into some sort" + }, + { + "start": 1612.48, + "duration": 0.0, + "text": "you're going to parse it into some sort of<00:26:52.559> abstract<00:26:52.960> syntax<00:26:53.360> tree<00:26:53.679> structure.<00:26:54.640> Um," + }, + { + "start": 1615.029, + "duration": 0.0, + "text": "of abstract syntax tree structure. Um," + }, + { + "start": 1615.039, + "duration": 0.0, + "text": "of abstract syntax tree structure. Um, you<00:26:55.200> know,<00:26:55.279> in<00:26:55.440> this<00:26:55.600> case,<00:26:56.080> not<00:26:56.320> surprising," + }, + { + "start": 1617.11, + "duration": 0.0, + "text": "you know, in this case, not surprising," + }, + { + "start": 1617.12, + "duration": 0.0, + "text": "you know, in this case, not surprising, square<00:26:57.440> brackets<00:26:57.760> at<00:26:57.919> the<00:26:58.000> top,<00:26:58.240> five<00:26:58.480> on<00:26:58.640> the" + }, + { + "start": 1618.789, + "duration": 0.0, + "text": "square brackets at the top, five on the" + }, + { + "start": 1618.799, + "duration": 0.0, + "text": "square brackets at the top, five on the right,<00:26:59.039> dot<00:26:59.279> operator<00:26:59.679> on<00:26:59.840> the<00:26:59.919> left," + }, + { + "start": 1620.149, + "duration": 0.0, + "text": "right, dot operator on the left," + }, + { + "start": 1620.159, + "duration": 0.0, + "text": "right, dot operator on the left, entity.targets" + }, + { + "start": 1621.909, + "duration": 0.0, + "text": "entity.targets" + }, + { + "start": 1621.919, + "duration": 0.0, + "text": "entity.targets for<00:27:02.080> the<00:27:02.240> children<00:27:02.480> of<00:27:02.559> the<00:27:02.720> dot<00:27:02.960> operator." + }, + { + "start": 1625.51, + "duration": 0.0, + "text": "for the children of the dot operator." + }, + { + "start": 1625.52, + "duration": 0.0, + "text": "for the children of the dot operator. From<00:27:05.760> there,<00:27:06.720> um,<00:27:07.039> you<00:27:07.279> know,<00:27:07.760> you<00:27:07.919> can" + }, + { + "start": 1628.07, + "duration": 0.0, + "text": "From there, um, you know, you can" + }, + { + "start": 1628.08, + "duration": 0.0, + "text": "From there, um, you know, you can evaluate<00:27:08.400> types<00:27:08.720> for<00:27:08.799> the<00:27:08.880> abstract<00:27:09.279> syntax" + }, + { + "start": 1629.51, + "duration": 0.0, + "text": "evaluate types for the abstract syntax" + }, + { + "start": 1629.52, + "duration": 0.0, + "text": "evaluate types for the abstract syntax tree.<00:27:09.760> You<00:27:09.840> can<00:27:09.919> type<00:27:10.159> check<00:27:10.320> it,<00:27:10.799> you<00:27:10.960> can" + }, + { + "start": 1631.11, + "duration": 0.0, + "text": "tree. You can type check it, you can" + }, + { + "start": 1631.12, + "duration": 0.0, + "text": "tree. You can type check it, you can interpret<00:27:11.520> it,<00:27:12.000> or<00:27:12.240> you<00:27:12.400> can<00:27:12.480> produce<00:27:12.799> any" + }, + { + "start": 1632.95, + "duration": 0.0, + "text": "interpret it, or you can produce any" + }, + { + "start": 1632.96, + "duration": 0.0, + "text": "interpret it, or you can produce any intermediate<00:27:13.520> representation<00:27:14.240> that<00:27:14.480> you" + }, + { + "start": 1634.71, + "duration": 0.0, + "text": "intermediate representation that you" + }, + { + "start": 1634.72, + "duration": 0.0, + "text": "intermediate representation that you need.<00:27:15.520> Um,<00:27:15.760> you<00:27:15.919> can<00:27:16.000> lower<00:27:16.240> down<00:27:16.400> to<00:27:16.559> bite" + }, + { + "start": 1636.789, + "duration": 0.0, + "text": "need. Um, you can lower down to bite" + }, + { + "start": 1636.799, + "duration": 0.0, + "text": "need. Um, you can lower down to bite code.<00:27:17.279> You<00:27:17.440> could<00:27:17.520> even<00:27:17.679> lower<00:27:17.919> down<00:27:18.080> to" + }, + { + "start": 1638.149, + "duration": 0.0, + "text": "code. You could even lower down to" + }, + { + "start": 1638.159, + "duration": 0.0, + "text": "code. You could even lower down to native<00:27:18.559> code.<00:27:19.679> In<00:27:19.919> this<00:27:20.080> particular<00:27:20.480> case,<00:27:21.120> if" + }, + { + "start": 1641.35, + "duration": 0.0, + "text": "native code. In this particular case, if" + }, + { + "start": 1641.36, + "duration": 0.0, + "text": "native code. In this particular case, if we<00:27:21.520> boil<00:27:21.919> down<00:27:22.159> to<00:27:22.400> like<00:27:22.559> a<00:27:22.799> simple<00:27:23.120> sort<00:27:23.279> of" + }, + { + "start": 1643.43, + "duration": 0.0, + "text": "we boil down to like a simple sort of" + }, + { + "start": 1643.44, + "duration": 0.0, + "text": "we boil down to like a simple sort of stack<00:27:23.760> machine<00:27:24.400> like<00:27:24.640> intermediate" + }, + { + "start": 1645.11, + "duration": 0.0, + "text": "stack machine like intermediate" + }, + { + "start": 1645.12, + "duration": 0.0, + "text": "stack machine like intermediate representation<00:27:25.600> bite<00:27:25.919> code<00:27:26.400> uh<00:27:26.640> like<00:27:26.960> format" + }, + { + "start": 1648.549, + "duration": 0.0, + "text": "representation bite code uh like format" + }, + { + "start": 1648.559, + "duration": 0.0, + "text": "representation bite code uh like format um<00:27:29.360> you<00:27:29.520> know<00:27:29.760> not<00:27:30.000> that<00:27:30.159> surprising<00:27:30.960> push<00:27:31.200> the" + }, + { + "start": 1651.35, + "duration": 0.0, + "text": "um you know not that surprising push the" + }, + { + "start": 1651.36, + "duration": 0.0, + "text": "um you know not that surprising push the address<00:27:31.679> of<00:27:31.760> entity<00:27:32.080> add<00:27:32.240> the<00:27:32.320> offset<00:27:32.640> of" + }, + { + "start": 1652.789, + "duration": 0.0, + "text": "address of entity add the offset of" + }, + { + "start": 1652.799, + "duration": 0.0, + "text": "address of entity add the offset of targets<00:27:33.360> add<00:27:33.600> five<00:27:33.840> times<00:27:34.240> you<00:27:34.400> know<00:27:34.480> the" + }, + { + "start": 1654.63, + "duration": 0.0, + "text": "targets add five times you know the" + }, + { + "start": 1654.64, + "duration": 0.0, + "text": "targets add five times you know the element<00:27:34.960> size<00:27:35.120> of<00:27:35.279> whatever<00:27:35.520> this<00:27:35.679> array<00:27:35.919> is" + }, + { + "start": 1656.23, + "duration": 0.0, + "text": "element size of whatever this array is" + }, + { + "start": 1656.24, + "duration": 0.0, + "text": "element size of whatever this array is and<00:27:36.400> then<00:27:36.559> you<00:27:36.640> pop<00:27:36.880> and<00:27:36.960> that's<00:27:37.120> your<00:27:37.279> address" + }, + { + "start": 1657.59, + "duration": 0.0, + "text": "and then you pop and that's your address" + }, + { + "start": 1657.6, + "duration": 0.0, + "text": "and then you pop and that's your address of<00:27:37.760> entity.target<00:27:38.320> target<00:27:38.559> set<00:27:38.880> five" + }, + { + "start": 1660.47, + "duration": 0.0, + "text": "of entity.target target set five" + }, + { + "start": 1660.48, + "duration": 0.0, + "text": "of entity.target target set five and<00:27:40.720> then<00:27:40.960> obviously<00:27:41.279> to<00:27:41.440> compute<00:27:41.760> the<00:27:41.919> value" + }, + { + "start": 1662.07, + "duration": 0.0, + "text": "and then obviously to compute the value" + }, + { + "start": 1662.08, + "duration": 0.0, + "text": "and then obviously to compute the value of<00:27:42.240> something<00:27:42.400> you<00:27:42.559> just<00:27:42.720> read<00:27:42.880> from<00:27:43.039> whatever" + }, + { + "start": 1663.35, + "duration": 0.0, + "text": "of something you just read from whatever" + }, + { + "start": 1663.36, + "duration": 0.0, + "text": "of something you just read from whatever that<00:27:43.520> address<00:27:43.840> is<00:27:44.240> because<00:27:44.559> the<00:27:44.799> debugger<00:27:45.200> can" + }, + { + "start": 1665.35, + "duration": 0.0, + "text": "that address is because the debugger can" + }, + { + "start": 1665.36, + "duration": 0.0, + "text": "that address is because the debugger can do<00:27:45.520> that<00:27:45.919> and<00:27:46.159> then<00:27:46.559> you've<00:27:46.799> got<00:27:46.960> your<00:27:47.200> value." + }, + { + "start": 1669.43, + "duration": 0.0, + "text": "do that and then you've got your value." + }, + { + "start": 1669.44, + "duration": 0.0, + "text": "do that and then you've got your value. So<00:27:49.600> the<00:27:49.760> full<00:27:50.000> pipeline<00:27:50.720> might<00:27:50.960> look" + }, + { + "start": 1671.19, + "duration": 0.0, + "text": "So the full pipeline might look" + }, + { + "start": 1671.2, + "duration": 0.0, + "text": "So the full pipeline might look something<00:27:51.360> like<00:27:51.520> this<00:27:52.320> and<00:27:52.559> we<00:27:52.799> can<00:27:52.960> call<00:27:53.200> that" + }, + { + "start": 1673.51, + "duration": 0.0, + "text": "something like this and we can call that" + }, + { + "start": 1673.52, + "duration": 0.0, + "text": "something like this and we can call that an<00:27:53.760> evaluation.<00:27:54.960> Um<00:27:55.279> so<00:27:55.440> you<00:27:55.600> start<00:27:55.679> with<00:27:55.840> the" + }, + { + "start": 1675.99, + "duration": 0.0, + "text": "an evaluation. Um so you start with the" + }, + { + "start": 1676.0, + "duration": 0.0, + "text": "an evaluation. Um so you start with the text<00:27:56.159> you<00:27:56.240> get<00:27:56.320> an<00:27:56.480> abstract<00:27:56.799> syntax<00:27:57.200> tree<00:27:57.919> you" + }, + { + "start": 1678.07, + "duration": 0.0, + "text": "text you get an abstract syntax tree you" + }, + { + "start": 1678.08, + "duration": 0.0, + "text": "text you get an abstract syntax tree you get<00:27:58.240> an<00:27:58.480> intermediate<00:27:58.960> representation<00:27:59.840> you" + }, + { + "start": 1679.909, + "duration": 0.0, + "text": "get an intermediate representation you" + }, + { + "start": 1679.919, + "duration": 0.0, + "text": "get an intermediate representation you know<00:28:00.000> a<00:28:00.240> type<00:28:00.720> pops<00:28:01.039> out<00:28:01.600> and<00:28:01.840> you<00:28:02.000> get<00:28:02.159> a<00:28:02.559> uh" + }, + { + "start": 1682.789, + "duration": 0.0, + "text": "know a type pops out and you get a uh" + }, + { + "start": 1682.799, + "duration": 0.0, + "text": "know a type pops out and you get a uh value<00:28:03.520> finally<00:28:03.919> at<00:28:04.080> the<00:28:04.240> end." + }, + { + "start": 1686.07, + "duration": 0.0, + "text": "value finally at the end." + }, + { + "start": 1686.08, + "duration": 0.0, + "text": "value finally at the end. But<00:28:06.320> how<00:28:06.399> does<00:28:06.559> our<00:28:06.960> compiler<00:28:08.000> know<00:28:08.240> what<00:28:08.399> the" + }, + { + "start": 1688.63, + "duration": 0.0, + "text": "But how does our compiler know what the" + }, + { + "start": 1688.64, + "duration": 0.0, + "text": "But how does our compiler know what the address<00:28:08.880> of<00:28:09.039> entity<00:28:09.360> is?<00:28:09.679> Like<00:28:09.919> what<00:28:10.080> was" + }, + { + "start": 1690.23, + "duration": 0.0, + "text": "address of entity is? Like what was" + }, + { + "start": 1690.24, + "duration": 0.0, + "text": "address of entity is? Like what was that?<00:28:10.640> And<00:28:10.880> how<00:28:11.039> do<00:28:11.200> we<00:28:11.600> we<00:28:12.000> like<00:28:12.240> the<00:28:12.399> com<00:28:12.640> our" + }, + { + "start": 1692.95, + "duration": 0.0, + "text": "that? And how do we we like the com our" + }, + { + "start": 1692.96, + "duration": 0.0, + "text": "that? And how do we we like the com our compiler<00:28:13.679> really<00:28:13.919> wants<00:28:14.159> to<00:28:14.320> talk<00:28:14.480> about<00:28:14.720> the" + }, + { + "start": 1694.95, + "duration": 0.0, + "text": "compiler really wants to talk about the" + }, + { + "start": 1694.96, + "duration": 0.0, + "text": "compiler really wants to talk about the same<00:28:15.200> things<00:28:15.840> that<00:28:16.159> the<00:28:16.480> actual<00:28:16.880> program" + }, + { + "start": 1697.269, + "duration": 0.0, + "text": "same things that the actual program" + }, + { + "start": 1697.279, + "duration": 0.0, + "text": "same things that the actual program compiler<00:28:18.240> talked<00:28:18.480> about<00:28:18.720> like<00:28:18.880> the<00:28:18.960> thing" + }, + { + "start": 1699.11, + "duration": 0.0, + "text": "compiler talked about like the thing" + }, + { + "start": 1699.12, + "duration": 0.0, + "text": "compiler talked about like the thing you're<00:28:19.440> interacting<00:28:19.840> with<00:28:20.000> when<00:28:20.240> you<00:28:20.320> write" + }, + { + "start": 1700.47, + "duration": 0.0, + "text": "you're interacting with when you write" + }, + { + "start": 1700.48, + "duration": 0.0, + "text": "you're interacting with when you write the<00:28:20.640> code.<00:28:21.200> You<00:28:21.440> the<00:28:21.679> debugger<00:28:22.159> wanted<00:28:22.399> to" + }, + { + "start": 1702.549, + "duration": 0.0, + "text": "the code. You the debugger wanted to" + }, + { + "start": 1702.559, + "duration": 0.0, + "text": "the code. You the debugger wanted to talk<00:28:22.799> about<00:28:23.039> that<00:28:23.360> stuff<00:28:24.000> too.<00:28:24.640> And<00:28:24.799> we<00:28:24.960> can<00:28:25.120> do" + }, + { + "start": 1705.19, + "duration": 0.0, + "text": "talk about that stuff too. And we can do" + }, + { + "start": 1705.2, + "duration": 0.0, + "text": "talk about that stuff too. And we can do that<00:28:25.679> with<00:28:26.000> debug<00:28:26.320> info<00:28:26.880> which<00:28:27.120> is<00:28:27.279> provided" + }, + { + "start": 1707.51, + "duration": 0.0, + "text": "that with debug info which is provided" + }, + { + "start": 1707.52, + "duration": 0.0, + "text": "that with debug info which is provided to<00:28:27.679> us<00:28:27.840> by<00:28:28.000> the<00:28:28.159> compiler<00:28:28.559> and<00:28:28.640> linker." + }, + { + "start": 1711.43, + "duration": 0.0, + "text": "to us by the compiler and linker." + }, + { + "start": 1711.44, + "duration": 0.0, + "text": "to us by the compiler and linker. Whoops." + }, + { + "start": 1713.269, + "duration": 0.0, + "text": "Whoops." + }, + { + "start": 1713.279, + "duration": 0.0, + "text": "Whoops. Okay.<00:28:34.559> So<00:28:34.880> debug<00:28:35.279> info<00:28:35.919> contains<00:28:36.320> a<00:28:36.640> like<00:28:36.799> a" + }, + { + "start": 1716.95, + "duration": 0.0, + "text": "Okay. So debug info contains a like a" + }, + { + "start": 1716.96, + "duration": 0.0, + "text": "Okay. So debug info contains a like a ton<00:28:37.120> of<00:28:37.279> stuff<00:28:37.520> like<00:28:37.679> there's<00:28:37.919> just<00:28:38.080> tons<00:28:38.240> of" + }, + { + "start": 1718.389, + "duration": 0.0, + "text": "ton of stuff like there's just tons of" + }, + { + "start": 1718.399, + "duration": 0.0, + "text": "ton of stuff like there's just tons of stuff<00:28:38.559> in<00:28:38.720> there.<00:28:39.200> I'm<00:28:39.360> not<00:28:39.520> going<00:28:39.600> to<00:28:39.679> cover" + }, + { + "start": 1719.83, + "duration": 0.0, + "text": "stuff in there. I'm not going to cover" + }, + { + "start": 1719.84, + "duration": 0.0, + "text": "stuff in there. I'm not going to cover all<00:28:40.000> of<00:28:40.159> it.<00:28:40.640> Um<00:28:41.039> but<00:28:41.279> you<00:28:41.440> can<00:28:41.520> think<00:28:41.679> of<00:28:41.840> it<00:28:42.000> as" + }, + { + "start": 1722.23, + "duration": 0.0, + "text": "all of it. Um but you can think of it as" + }, + { + "start": 1722.24, + "duration": 0.0, + "text": "all of it. Um but you can think of it as sort<00:28:42.320> of<00:28:42.399> a<00:28:42.640> serialization<00:28:43.919> of<00:28:44.159> what<00:28:44.320> the" + }, + { + "start": 1724.47, + "duration": 0.0, + "text": "sort of a serialization of what the" + }, + { + "start": 1724.48, + "duration": 0.0, + "text": "sort of a serialization of what the compiler<00:28:44.880> and<00:28:45.039> linker<00:28:45.440> did<00:28:45.679> to<00:28:45.919> turn<00:28:46.320> your" + }, + { + "start": 1726.47, + "duration": 0.0, + "text": "compiler and linker did to turn your" + }, + { + "start": 1726.48, + "duration": 0.0, + "text": "compiler and linker did to turn your highle<00:28:46.960> source<00:28:47.200> code<00:28:47.919> into<00:28:49.120> your" + }, + { + "start": 1731.11, + "duration": 0.0, + "text": "highle source code into your" + }, + { + "start": 1731.12, + "duration": 0.0, + "text": "highle source code into your final<00:28:51.760> uh<00:28:52.000> you<00:28:52.159> know<00:28:52.320> executable<00:28:52.799> images" + }, + { + "start": 1733.19, + "duration": 0.0, + "text": "final uh you know executable images" + }, + { + "start": 1733.2, + "duration": 0.0, + "text": "final uh you know executable images right<00:28:54.159> so<00:28:54.399> it's<00:28:54.559> sort<00:28:54.640> of<00:28:54.720> a<00:28:54.880> recording<00:28:55.200> of" + }, + { + "start": 1735.35, + "duration": 0.0, + "text": "right so it's sort of a recording of" + }, + { + "start": 1735.36, + "duration": 0.0, + "text": "right so it's sort of a recording of like<00:28:55.520> what<00:28:55.679> work<00:28:56.000> happened<00:28:56.640> if<00:28:56.799> that<00:28:57.039> makes" + }, + { + "start": 1737.19, + "duration": 0.0, + "text": "like what work happened if that makes" + }, + { + "start": 1737.2, + "duration": 0.0, + "text": "like what work happened if that makes sense." + }, + { + "start": 1738.389, + "duration": 0.0, + "text": "sense." + }, + { + "start": 1738.399, + "duration": 0.0, + "text": "sense. Um<00:28:59.120> so<00:28:59.600> one<00:28:59.840> thing<00:28:59.919> that<00:29:00.159> debug<00:29:00.559> info<00:29:00.799> has" + }, + { + "start": 1741.029, + "duration": 0.0, + "text": "Um so one thing that debug info has" + }, + { + "start": 1741.039, + "duration": 0.0, + "text": "Um so one thing that debug info has which<00:29:01.200> I<00:29:01.360> don't<00:29:01.520> cover<00:29:01.679> here<00:29:01.840> because<00:29:02.080> it's" + }, + { + "start": 1742.23, + "duration": 0.0, + "text": "which I don't cover here because it's" + }, + { + "start": 1742.24, + "duration": 0.0, + "text": "which I don't cover here because it's not<00:29:02.399> exactly<00:29:02.720> relevant<00:29:03.039> to<00:29:03.279> this<00:29:03.520> talk<00:29:04.240> is" + }, + { + "start": 1744.63, + "duration": 0.0, + "text": "not exactly relevant to this talk is" + }, + { + "start": 1744.64, + "duration": 0.0, + "text": "not exactly relevant to this talk is line<00:29:04.960> information<00:29:05.600> which<00:29:05.840> will<00:29:06.240> take<00:29:06.720> uh<00:29:06.799> it" + }, + { + "start": 1747.029, + "duration": 0.0, + "text": "line information which will take uh it" + }, + { + "start": 1747.039, + "duration": 0.0, + "text": "line information which will take uh it takes<00:29:07.200> like<00:29:07.840> ranges<00:29:08.159> of<00:29:08.320> exeu<00:29:08.880> ex<00:29:08.880> executable" + }, + { + "start": 1749.51, + "duration": 0.0, + "text": "takes like ranges of exeu ex executable" + }, + { + "start": 1749.52, + "duration": 0.0, + "text": "takes like ranges of exeu ex executable code<00:29:09.840> inside<00:29:10.159> of<00:29:10.320> your<00:29:11.279> uh<00:29:11.440> inside<00:29:11.679> of<00:29:11.760> your" + }, + { + "start": 1751.909, + "duration": 0.0, + "text": "code inside of your uh inside of your" + }, + { + "start": 1751.919, + "duration": 0.0, + "text": "code inside of your uh inside of your executable<00:29:12.480> image<00:29:12.880> and<00:29:13.039> it<00:29:13.279> maps<00:29:13.520> it<00:29:13.679> to<00:29:13.760> some" + }, + { + "start": 1753.99, + "duration": 0.0, + "text": "executable image and it maps it to some" + }, + { + "start": 1754.0, + "duration": 0.0, + "text": "executable image and it maps it to some source<00:29:14.240> location.<00:29:14.960> So<00:29:15.120> that's<00:29:15.279> like<00:29:15.440> one" + }, + { + "start": 1755.669, + "duration": 0.0, + "text": "source location. So that's like one" + }, + { + "start": 1755.679, + "duration": 0.0, + "text": "source location. So that's like one thing<00:29:16.080> used<00:29:16.240> to<00:29:16.399> implement<00:29:16.640> things<00:29:16.799> like" + }, + { + "start": 1756.95, + "duration": 0.0, + "text": "thing used to implement things like" + }, + { + "start": 1756.96, + "duration": 0.0, + "text": "thing used to implement things like stepping.<00:29:18.399> Not<00:29:18.640> going<00:29:18.720> to<00:29:18.799> get<00:29:18.960> into<00:29:19.120> that" + }, + { + "start": 1759.269, + "duration": 0.0, + "text": "stepping. Not going to get into that" + }, + { + "start": 1759.279, + "duration": 0.0, + "text": "stepping. Not going to get into that here<00:29:19.679> but<00:29:19.840> that's<00:29:20.080> in<00:29:20.240> debug<00:29:20.559> info<00:29:20.960> too.<00:29:22.000> Um," + }, + { + "start": 1763.35, + "duration": 0.0, + "text": "here but that's in debug info too. Um," + }, + { + "start": 1763.36, + "duration": 0.0, + "text": "here but that's in debug info too. Um, so<00:29:23.600> these<00:29:23.840> are<00:29:24.000> all<00:29:24.159> the<00:29:24.320> parts<00:29:24.559> that<00:29:24.720> I<00:29:25.039> would" + }, + { + "start": 1765.269, + "duration": 0.0, + "text": "so these are all the parts that I would" + }, + { + "start": 1765.279, + "duration": 0.0, + "text": "so these are all the parts that I would consider<00:29:25.679> relevant<00:29:26.080> for<00:29:26.399> like<00:29:27.039> evaluation," + }, + { + "start": 1767.59, + "duration": 0.0, + "text": "consider relevant for like evaluation," + }, + { + "start": 1767.6, + "duration": 0.0, + "text": "consider relevant for like evaluation, the<00:29:27.840> basics<00:29:28.159> of<00:29:28.320> an<00:29:28.480> evaluation<00:29:29.039> system," + }, + { + "start": 1769.35, + "duration": 0.0, + "text": "the basics of an evaluation system," + }, + { + "start": 1769.36, + "duration": 0.0, + "text": "the basics of an evaluation system, right?<00:29:30.240> So<00:29:30.320> you've<00:29:30.559> got<00:29:30.720> types,<00:29:31.760> globals," + }, + { + "start": 1772.23, + "duration": 0.0, + "text": "right? So you've got types, globals," + }, + { + "start": 1772.24, + "duration": 0.0, + "text": "right? So you've got types, globals, thread<00:29:32.480> locals,<00:29:32.880> procedures,<00:29:33.600> location" + }, + { + "start": 1774.07, + "duration": 0.0, + "text": "thread locals, procedures, location" + }, + { + "start": 1774.08, + "duration": 0.0, + "text": "thread locals, procedures, location info,<00:29:34.480> scopes,<00:29:34.799> and<00:29:34.960> locals.<00:29:35.440> All<00:29:35.679> this" + }, + { + "start": 1776.149, + "duration": 0.0, + "text": "info, scopes, and locals. All this" + }, + { + "start": 1776.159, + "duration": 0.0, + "text": "info, scopes, and locals. All this information<00:29:36.559> about<00:29:36.720> all<00:29:36.880> of<00:29:37.039> these<00:29:37.200> is<00:29:37.360> inside" + }, + { + "start": 1777.669, + "duration": 0.0, + "text": "information about all of these is inside" + }, + { + "start": 1777.679, + "duration": 0.0, + "text": "information about all of these is inside debug<00:29:38.000> info." + }, + { + "start": 1781.52, + "duration": 0.0, + "text": "The<00:29:41.760> thing<00:29:41.840> about<00:29:42.000> debug<00:29:42.399> info<00:29:42.960> very<00:29:43.279> cross" + }, + { + "start": 1783.59, + "duration": 0.0, + "text": "The thing about debug info very cross" + }, + { + "start": 1783.6, + "duration": 0.0, + "text": "The thing about debug info very cross referential.<00:29:44.480> So<00:29:44.720> globals<00:29:46.000> all<00:29:46.240> point<00:29:46.480> to" + }, + { + "start": 1786.63, + "duration": 0.0, + "text": "referential. So globals all point to" + }, + { + "start": 1786.64, + "duration": 0.0, + "text": "referential. So globals all point to their<00:29:46.880> type<00:29:47.120> information.<00:29:47.600> So<00:29:47.840> a<00:29:48.000> global" + }, + { + "start": 1788.31, + "duration": 0.0, + "text": "their type information. So a global" + }, + { + "start": 1788.32, + "duration": 0.0, + "text": "their type information. So a global variable<00:29:48.640> obviously<00:29:48.960> has<00:29:49.120> a<00:29:49.279> type.<00:29:49.919> Global" + }, + { + "start": 1790.23, + "duration": 0.0, + "text": "variable obviously has a type. Global" + }, + { + "start": 1790.24, + "duration": 0.0, + "text": "variable obviously has a type. Global gets<00:29:50.480> a<00:29:50.640> type.<00:29:51.840> Thread<00:29:52.080> locals<00:29:52.399> get<00:29:52.480> a<00:29:52.559> type." + }, + { + "start": 1792.789, + "duration": 0.0, + "text": "gets a type. Thread locals get a type." + }, + { + "start": 1792.799, + "duration": 0.0, + "text": "gets a type. Thread locals get a type. Procedures<00:29:53.200> get<00:29:53.279> a<00:29:53.520> type.<00:29:54.399> Local<00:29:54.799> variables" + }, + { + "start": 1795.19, + "duration": 0.0, + "text": "Procedures get a type. Local variables" + }, + { + "start": 1795.2, + "duration": 0.0, + "text": "Procedures get a type. Local variables obviously<00:29:55.520> get<00:29:55.679> a<00:29:55.840> type." + }, + { + "start": 1798.389, + "duration": 0.0, + "text": "obviously get a type." + }, + { + "start": 1798.399, + "duration": 0.0, + "text": "obviously get a type. Locals<00:29:59.039> refer<00:29:59.279> to<00:29:59.440> their<00:29:59.679> location<00:30:00.080> info." + }, + { + "start": 1801.669, + "duration": 0.0, + "text": "Locals refer to their location info." + }, + { + "start": 1801.679, + "duration": 0.0, + "text": "Locals refer to their location info. Hint<00:30:02.399> for<00:30:02.640> the<00:30:02.960> address<00:30:03.279> entity<00:30:03.679> thing.<00:30:03.840> We'll" + }, + { + "start": 1804.07, + "duration": 0.0, + "text": "Hint for the address entity thing. We'll" + }, + { + "start": 1804.08, + "duration": 0.0, + "text": "Hint for the address entity thing. We'll get<00:30:04.159> there.<00:30:04.960> Um,<00:30:05.200> and<00:30:05.520> scopes<00:30:05.840> refer<00:30:06.080> to<00:30:06.159> the" + }, + { + "start": 1806.31, + "duration": 0.0, + "text": "get there. Um, and scopes refer to the" + }, + { + "start": 1806.32, + "duration": 0.0, + "text": "get there. Um, and scopes refer to the local<00:30:06.480> variables<00:30:06.799> that<00:30:06.960> they<00:30:07.120> contain.<00:30:07.520> And" + }, + { + "start": 1807.59, + "duration": 0.0, + "text": "local variables that they contain. And" + }, + { + "start": 1807.6, + "duration": 0.0, + "text": "local variables that they contain. And the<00:30:07.760> procedures<00:30:08.240> refer<00:30:09.279> to<00:30:09.440> the<00:30:09.679> scopes<00:30:10.880> um" + }, + { + "start": 1811.029, + "duration": 0.0, + "text": "the procedures refer to the scopes um" + }, + { + "start": 1811.039, + "duration": 0.0, + "text": "the procedures refer to the scopes um that<00:30:11.200> that<00:30:11.520> that<00:30:11.760> are<00:30:11.919> sort<00:30:12.000> of<00:30:12.080> nested<00:30:12.480> under" + }, + { + "start": 1812.71, + "duration": 0.0, + "text": "that that that are sort of nested under" + }, + { + "start": 1812.72, + "duration": 0.0, + "text": "that that that are sort of nested under them." + }, + { + "start": 1815.19, + "duration": 0.0, + "text": "them." + }, + { + "start": 1815.2, + "duration": 0.0, + "text": "them. Zoom<00:30:15.440> into<00:30:15.679> types.<00:30:16.240> Types<00:30:16.640> take<00:30:16.799> the<00:30:16.880> form<00:30:17.120> of" + }, + { + "start": 1817.19, + "duration": 0.0, + "text": "Zoom into types. Types take the form of" + }, + { + "start": 1817.2, + "duration": 0.0, + "text": "Zoom into types. Types take the form of a<00:30:17.360> directed<00:30:17.760> graph." + }, + { + "start": 1820.31, + "duration": 0.0, + "text": "a directed graph." + }, + { + "start": 1820.32, + "duration": 0.0, + "text": "a directed graph. So<00:30:20.559> let's<00:30:20.720> say<00:30:20.799> I've<00:30:21.039> got<00:30:21.120> some<00:30:21.360> type<00:30:21.919> in32" + }, + { + "start": 1822.63, + "duration": 0.0, + "text": "So let's say I've got some type in32" + }, + { + "start": 1822.64, + "duration": 0.0, + "text": "So let's say I've got some type in32 four<00:30:22.799> bytes.<00:30:23.120> Everyone<00:30:23.360> knows<00:30:23.520> what<00:30:23.600> an<00:30:23.760> in32" + }, + { + "start": 1824.31, + "duration": 0.0, + "text": "four bytes. Everyone knows what an in32" + }, + { + "start": 1824.32, + "duration": 0.0, + "text": "four bytes. Everyone knows what an in32 is<00:30:24.559> here<00:30:24.880> I<00:30:25.039> would<00:30:25.200> imagine.<00:30:26.320> Um<00:30:26.960> the<00:30:27.200> type" + }, + { + "start": 1827.43, + "duration": 0.0, + "text": "is here I would imagine. Um the type" + }, + { + "start": 1827.44, + "duration": 0.0, + "text": "is here I would imagine. Um the type information<00:30:28.000> records<00:30:28.320> that<00:30:28.559> as<00:30:28.720> sort<00:30:28.799> of<00:30:28.880> a" + }, + { + "start": 1829.029, + "duration": 0.0, + "text": "information records that as sort of a" + }, + { + "start": 1829.039, + "duration": 0.0, + "text": "information records that as sort of a basic<00:30:29.279> type.<00:30:30.080> It<00:30:30.320> can<00:30:30.399> encode<00:30:30.720> like<00:30:30.880> the<00:30:31.039> name" + }, + { + "start": 1831.19, + "duration": 0.0, + "text": "basic type. It can encode like the name" + }, + { + "start": 1831.2, + "duration": 0.0, + "text": "basic type. It can encode like the name of<00:30:31.360> it<00:30:31.919> and<00:30:32.159> then<00:30:32.480> its<00:30:32.799> size<00:30:33.039> and<00:30:33.279> then" + }, + { + "start": 1833.43, + "duration": 0.0, + "text": "of it and then its size and then" + }, + { + "start": 1833.44, + "duration": 0.0, + "text": "of it and then its size and then probably<00:30:33.760> like<00:30:33.919> it's<00:30:34.159> just<00:30:34.320> got<00:30:34.399> a<00:30:34.559> fixed<00:30:34.799> code" + }, + { + "start": 1835.029, + "duration": 0.0, + "text": "probably like it's just got a fixed code" + }, + { + "start": 1835.039, + "duration": 0.0, + "text": "probably like it's just got a fixed code for<00:30:35.279> this<00:30:35.520> in<00:30:35.760> in<00:30:35.760> in<00:30:36.640> pretty<00:30:36.880> much<00:30:37.039> every" + }, + { + "start": 1837.19, + "duration": 0.0, + "text": "for this in in in pretty much every" + }, + { + "start": 1837.2, + "duration": 0.0, + "text": "for this in in in pretty much every case.<00:30:38.399> Um" + }, + { + "start": 1840.149, + "duration": 0.0, + "text": "case. Um" + }, + { + "start": 1840.159, + "duration": 0.0, + "text": "case. Um types<00:30:40.559> can<00:30:40.640> also<00:30:40.880> act<00:30:41.039> as<00:30:41.200> type<00:30:41.440> operators<00:30:42.159> on" + }, + { + "start": 1842.71, + "duration": 0.0, + "text": "types can also act as type operators on" + }, + { + "start": 1842.72, + "duration": 0.0, + "text": "types can also act as type operators on on<00:30:42.960> some<00:30:43.120> other<00:30:43.279> type.<00:30:43.600> So<00:30:43.679> you've<00:30:43.840> got<00:30:43.919> a" + }, + { + "start": 1844.07, + "duration": 0.0, + "text": "on some other type. So you've got a" + }, + { + "start": 1844.08, + "duration": 0.0, + "text": "on some other type. So you've got a type,<00:30:44.320> it<00:30:44.480> can<00:30:44.559> point<00:30:44.799> to<00:30:44.960> another<00:30:45.200> type<00:30:45.760> and" + }, + { + "start": 1845.99, + "duration": 0.0, + "text": "type, it can point to another type and" + }, + { + "start": 1846.0, + "duration": 0.0, + "text": "type, it can point to another type and say<00:30:46.159> I'm<00:30:46.399> an<00:30:46.640> operator<00:30:47.039> on<00:30:47.200> that<00:30:47.360> type.<00:30:48.000> So" + }, + { + "start": 1848.63, + "duration": 0.0, + "text": "say I'm an operator on that type. So" + }, + { + "start": 1848.64, + "duration": 0.0, + "text": "say I'm an operator on that type. So here<00:30:49.679> I've<00:30:49.919> got<00:30:50.080> this<00:30:50.399> 16<00:30:50.720> array<00:30:51.039> type<00:30:51.600> and<00:30:51.840> it" + }, + { + "start": 1851.99, + "duration": 0.0, + "text": "here I've got this 16 array type and it" + }, + { + "start": 1852.0, + "duration": 0.0, + "text": "here I've got this 16 array type and it points<00:30:52.240> at<00:30:52.320> the<00:30:52.480> N32<00:30:53.120> type<00:30:53.679> and<00:30:54.080> and<00:30:54.320> if<00:30:54.480> I" + }, + { + "start": 1854.549, + "duration": 0.0, + "text": "points at the N32 type and and if I" + }, + { + "start": 1854.559, + "duration": 0.0, + "text": "points at the N32 type and and if I point<00:30:54.720> at<00:30:54.880> the<00:30:55.120> 16<00:30:55.919> array<00:30:56.320> node,<00:30:57.120> that's<00:30:57.360> an<00:30:57.520> in" + }, + { + "start": 1857.99, + "duration": 0.0, + "text": "point at the 16 array node, that's an in" + }, + { + "start": 1858.0, + "duration": 0.0, + "text": "point at the 16 array node, that's an in that's<00:30:58.159> a<00:30:58.320> 16<00:30:58.640> array<00:30:58.799> of<00:30:58.880> N32s." + }, + { + "start": 1863.36, + "duration": 0.0, + "text": "If<00:31:03.600> I've<00:31:03.760> got<00:31:03.840> a<00:31:04.000> pointer<00:31:04.399> type<00:31:05.760> um<00:31:05.919> pointing" + }, + { + "start": 1866.23, + "duration": 0.0, + "text": "If I've got a pointer type um pointing" + }, + { + "start": 1866.24, + "duration": 0.0, + "text": "If I've got a pointer type um pointing to<00:31:06.399> the<00:31:06.480> N32,<00:31:07.520> if<00:31:07.760> I<00:31:07.840> point<00:31:08.000> at<00:31:08.240> that,<00:31:08.640> if<00:31:08.799> I<00:31:08.960> say" + }, + { + "start": 1869.19, + "duration": 0.0, + "text": "to the N32, if I point at that, if I say" + }, + { + "start": 1869.2, + "duration": 0.0, + "text": "to the N32, if I point at that, if I say like<00:31:09.440> that<00:31:09.679> type,<00:31:10.000> that's<00:31:10.240> going<00:31:10.240> to<00:31:10.320> be<00:31:10.399> an" + }, + { + "start": 1870.549, + "duration": 0.0, + "text": "like that type, that's going to be an" + }, + { + "start": 1870.559, + "duration": 0.0, + "text": "like that type, that's going to be an N32<00:31:11.279> pointer." + }, + { + "start": 1873.83, + "duration": 0.0, + "text": "N32 pointer." + }, + { + "start": 1873.84, + "duration": 0.0, + "text": "N32 pointer. double<00:31:14.159> pointer" + }, + { + "start": 1877.36, + "duration": 0.0, + "text": "32<00:31:17.840> array<00:31:18.320> of<00:31:18.559> double<00:31:18.880> pointer" + }, + { + "start": 1883.12, + "duration": 0.0, + "text": "type<00:31:23.440> information<00:31:23.840> maybe<00:31:24.080> unsurprisingly" + }, + { + "start": 1884.789, + "duration": 0.0, + "text": "type information maybe unsurprisingly" + }, + { + "start": 1884.799, + "duration": 0.0, + "text": "type information maybe unsurprisingly also<00:31:25.120> covers<00:31:25.600> uh<00:31:25.760> userdefined<00:31:26.320> types<00:31:26.640> like" + }, + { + "start": 1886.87, + "duration": 0.0, + "text": "also covers uh userdefined types like" + }, + { + "start": 1886.88, + "duration": 0.0, + "text": "also covers uh userdefined types like structures" + }, + { + "start": 1888.95, + "duration": 0.0, + "text": "structures" + }, + { + "start": 1888.96, + "duration": 0.0, + "text": "structures if<00:31:29.200> I've<00:31:29.360> got<00:31:29.520> two<00:31:29.679> structures<00:31:30.000> here<00:31:30.320> and" + }, + { + "start": 1890.47, + "duration": 0.0, + "text": "if I've got two structures here and" + }, + { + "start": 1890.48, + "duration": 0.0, + "text": "if I've got two structures here and we've<00:31:30.640> got<00:31:30.799> entity<00:31:31.440> ve<00:31:31.840> 3<00:31:32.559> um<00:31:32.799> entity's<00:31:33.279> got" + }, + { + "start": 1893.75, + "duration": 0.0, + "text": "we've got entity ve 3 um entity's got" + }, + { + "start": 1893.76, + "duration": 0.0, + "text": "we've got entity ve 3 um entity's got position<00:31:34.080> velocity<00:31:34.559> vec<00:31:34.799> 3<00:31:34.960> x<00:31:35.200> y<00:31:35.279> and<00:31:35.520> z<00:31:35.919> then" + }, + { + "start": 1896.149, + "duration": 0.0, + "text": "position velocity vec 3 x y and z then" + }, + { + "start": 1896.159, + "duration": 0.0, + "text": "position velocity vec 3 x y and z then there's<00:31:36.320> some<00:31:36.480> base<00:31:36.720> type<00:31:36.960> float<00:31:37.360> 32<00:31:38.720> um<00:31:39.440> you" + }, + { + "start": 1899.59, + "duration": 0.0, + "text": "there's some base type float 32 um you" + }, + { + "start": 1899.6, + "duration": 0.0, + "text": "there's some base type float 32 um you know" + }, + { + "start": 1901.19, + "duration": 0.0, + "text": "know" + }, + { + "start": 1901.2, + "duration": 0.0, + "text": "know not<00:31:41.440> that<00:31:41.679> surprising<00:31:42.080> hopefully<00:31:42.720> position" + }, + { + "start": 1903.11, + "duration": 0.0, + "text": "not that surprising hopefully position" + }, + { + "start": 1903.12, + "duration": 0.0, + "text": "not that surprising hopefully position points<00:31:43.440> of<00:31:43.519> velocity<00:31:44.399> points<00:31:44.640> of<00:31:44.799> ve<00:31:45.440> xyz" + }, + { + "start": 1905.99, + "duration": 0.0, + "text": "points of velocity points of ve xyz" + }, + { + "start": 1906.0, + "duration": 0.0, + "text": "points of velocity points of ve xyz point<00:31:46.159> to<00:31:46.320> float<00:31:46.640> 32.<00:31:47.120> That's<00:31:47.279> how<00:31:47.440> that'd<00:31:47.600> be" + }, + { + "start": 1907.75, + "duration": 0.0, + "text": "point to float 32. That's how that'd be" + }, + { + "start": 1907.76, + "duration": 0.0, + "text": "point to float 32. That's how that'd be laid<00:31:47.919> out." + }, + { + "start": 1910.389, + "duration": 0.0, + "text": "laid out." + }, + { + "start": 1910.399, + "duration": 0.0, + "text": "laid out. So<00:31:51.200> like<00:31:51.360> I<00:31:51.519> said,<00:31:51.840> debug<00:31:52.240> info<00:31:52.640> has<00:31:53.279> uh<00:31:53.440> data" + }, + { + "start": 1913.669, + "duration": 0.0, + "text": "So like I said, debug info has uh data" + }, + { + "start": 1913.679, + "duration": 0.0, + "text": "So like I said, debug info has uh data bounce<00:31:54.000> scopes<00:31:54.559> in<00:31:54.799> your<00:31:55.039> program.<00:31:56.320> So<00:31:56.559> let's" + }, + { + "start": 1916.71, + "duration": 0.0, + "text": "bounce scopes in your program. So let's" + }, + { + "start": 1916.72, + "duration": 0.0, + "text": "bounce scopes in your program. So let's say<00:31:56.799> I've<00:31:57.039> got<00:31:57.120> this<00:31:57.279> procedure<00:31:57.679> update." + }, + { + "start": 1918.47, + "duration": 0.0, + "text": "say I've got this procedure update." + }, + { + "start": 1918.48, + "duration": 0.0, + "text": "say I've got this procedure update. We've<00:31:58.720> got<00:31:59.039> uh<00:31:59.120> some<00:31:59.360> local<00:31:59.679> variable<00:32:00.159> entity" + }, + { + "start": 1920.87, + "duration": 0.0, + "text": "We've got uh some local variable entity" + }, + { + "start": 1920.88, + "duration": 0.0, + "text": "We've got uh some local variable entity pointer<00:32:01.360> entities.<00:32:02.399> Um<00:32:03.600> and<00:32:03.840> we've<00:32:04.159> got<00:32:04.240> two" + }, + { + "start": 1924.47, + "duration": 0.0, + "text": "pointer entities. Um and we've got two" + }, + { + "start": 1924.48, + "duration": 0.0, + "text": "pointer entities. Um and we've got two loops.<00:32:05.039> We've<00:32:05.279> got<00:32:05.440> some<00:32:06.000> idx<00:32:06.399> variable." + }, + { + "start": 1926.87, + "duration": 0.0, + "text": "loops. We've got some idx variable." + }, + { + "start": 1926.88, + "duration": 0.0, + "text": "loops. We've got some idx variable. That's<00:32:07.039> how<00:32:07.120> I<00:32:07.200> shorten<00:32:07.600> index.<00:32:08.480> I<00:32:08.640> don't<00:32:08.799> know" + }, + { + "start": 1928.87, + "duration": 0.0, + "text": "That's how I shorten index. I don't know" + }, + { + "start": 1928.88, + "duration": 0.0, + "text": "That's how I shorten index. I don't know how<00:32:09.039> many<00:32:09.200> people<00:32:09.440> do<00:32:09.600> that,<00:32:09.760> but<00:32:10.640> uh<00:32:10.799> so<00:32:11.039> index" + }, + { + "start": 1931.59, + "duration": 0.0, + "text": "how many people do that, but uh so index" + }, + { + "start": 1931.6, + "duration": 0.0, + "text": "how many people do that, but uh so index and<00:32:11.840> then<00:32:12.159> you<00:32:12.320> know<00:32:12.399> we've<00:32:12.640> got<00:32:12.960> maybe<00:32:13.200> we're" + }, + { + "start": 1933.43, + "duration": 0.0, + "text": "and then you know we've got maybe we're" + }, + { + "start": 1933.44, + "duration": 0.0, + "text": "and then you know we've got maybe we're looping<00:32:13.679> over<00:32:13.840> the<00:32:14.000> entities<00:32:14.399> or<00:32:14.559> or" + }, + { + "start": 1935.11, + "duration": 0.0, + "text": "looping over the entities or or" + }, + { + "start": 1935.12, + "duration": 0.0, + "text": "looping over the entities or or whatever.<00:32:15.840> So<00:32:16.000> if<00:32:16.159> we<00:32:16.320> have<00:32:16.399> this<00:32:16.799> then<00:32:17.200> in" + }, + { + "start": 1937.43, + "duration": 0.0, + "text": "whatever. So if we have this then in" + }, + { + "start": 1937.44, + "duration": 0.0, + "text": "whatever. So if we have this then in debug<00:32:17.760> info<00:32:18.240> you've<00:32:18.399> got<00:32:18.480> a<00:32:18.640> procedure<00:32:19.120> record" + }, + { + "start": 1939.75, + "duration": 0.0, + "text": "debug info you've got a procedure record" + }, + { + "start": 1939.76, + "duration": 0.0, + "text": "debug info you've got a procedure record for<00:32:20.080> for<00:32:20.320> the<00:32:20.480> update<00:32:21.519> procedure.<00:32:22.880> It<00:32:23.120> points" + }, + { + "start": 1943.43, + "duration": 0.0, + "text": "for for the update procedure. It points" + }, + { + "start": 1943.44, + "duration": 0.0, + "text": "for for the update procedure. It points at<00:32:23.519> a<00:32:23.760> at<00:32:23.919> a<00:32:24.080> scope<00:32:24.399> tree<00:32:25.440> um<00:32:25.760> underneath<00:32:26.320> which" + }, + { + "start": 1946.95, + "duration": 0.0, + "text": "at a at a scope tree um underneath which" + }, + { + "start": 1946.96, + "duration": 0.0, + "text": "at a at a scope tree um underneath which uh<00:32:27.200> you<00:32:27.440> also<00:32:27.600> have<00:32:27.760> local<00:32:28.000> variables.<00:32:28.320> So" + }, + { + "start": 1948.389, + "duration": 0.0, + "text": "uh you also have local variables. So" + }, + { + "start": 1948.399, + "duration": 0.0, + "text": "uh you also have local variables. So you've<00:32:28.640> got<00:32:28.720> at<00:32:28.880> the<00:32:28.960> root<00:32:29.200> scope<00:32:29.360> you've<00:32:29.519> got" + }, + { + "start": 1949.59, + "duration": 0.0, + "text": "you've got at the root scope you've got" + }, + { + "start": 1949.6, + "duration": 0.0, + "text": "you've got at the root scope you've got the<00:32:29.760> entities<00:32:30.159> variable<00:32:30.880> at<00:32:31.039> the<00:32:31.279> two" + }, + { + "start": 1951.83, + "duration": 0.0, + "text": "the entities variable at the two" + }, + { + "start": 1951.84, + "duration": 0.0, + "text": "the entities variable at the two subscopes<00:32:32.559> you've<00:32:32.799> got<00:32:33.039> two<00:32:33.279> different<00:32:33.600> index" + }, + { + "start": 1953.99, + "duration": 0.0, + "text": "subscopes you've got two different index" + }, + { + "start": 1954.0, + "duration": 0.0, + "text": "subscopes you've got two different index variables" + }, + { + "start": 1955.669, + "duration": 0.0, + "text": "variables" + }, + { + "start": 1955.679, + "duration": 0.0, + "text": "variables and<00:32:36.080> each<00:32:36.320> one<00:32:36.480> of<00:32:36.559> the<00:32:36.720> variables<00:32:37.600> contain<00:32:38.159> uh" + }, + { + "start": 1958.31, + "duration": 0.0, + "text": "and each one of the variables contain uh" + }, + { + "start": 1958.32, + "duration": 0.0, + "text": "and each one of the variables contain uh points<00:32:38.480> at<00:32:38.640> their<00:32:38.880> type<00:32:39.039> info.<00:32:40.159> So<00:32:41.039> you've<00:32:41.360> got" + }, + { + "start": 1962.23, + "duration": 0.0, + "text": "points at their type info. So you've got" + }, + { + "start": 1962.24, + "duration": 0.0, + "text": "points at their type info. So you've got index<00:32:43.679> maybe<00:32:44.000> points<00:32:44.240> to<00:32:44.320> in<00:32:44.640> 64" + }, + { + "start": 1966.389, + "duration": 0.0, + "text": "index maybe points to in 64" + }, + { + "start": 1966.399, + "duration": 0.0, + "text": "index maybe points to in 64 entities<00:32:47.440> points<00:32:47.760> to<00:32:48.000> a<00:32:48.159> pointer<00:32:48.480> which" + }, + { + "start": 1968.71, + "duration": 0.0, + "text": "entities points to a pointer which" + }, + { + "start": 1968.72, + "duration": 0.0, + "text": "entities points to a pointer which points<00:32:48.880> to<00:32:48.960> an<00:32:49.200> entity<00:32:49.519> type.<00:32:50.559> That's<00:32:50.799> how<00:32:50.960> the" + }, + { + "start": 1971.11, + "duration": 0.0, + "text": "points to an entity type. That's how the" + }, + { + "start": 1971.12, + "duration": 0.0, + "text": "points to an entity type. That's how the type<00:32:51.360> might<00:32:51.600> show<00:32:51.760> up." + }, + { + "start": 1976.32, + "duration": 0.0, + "text": "A<00:32:56.480> variable<00:32:56.799> like<00:32:57.200> index<00:32:58.000> not<00:32:58.240> only<00:32:58.559> refers<00:32:58.799> to" + }, + { + "start": 1979.029, + "duration": 0.0, + "text": "A variable like index not only refers to" + }, + { + "start": 1979.039, + "duration": 0.0, + "text": "A variable like index not only refers to an<00:32:59.120> in64<00:33:00.080> might<00:33:00.320> also<00:33:00.640> refer<00:33:01.039> to" + }, + { + "start": 1983.19, + "duration": 0.0, + "text": "an in64 might also refer to" + }, + { + "start": 1983.2, + "duration": 0.0, + "text": "an in64 might also refer to its<00:33:03.519> location<00:33:04.000> information.<00:33:05.039> And<00:33:05.200> this" + }, + { + "start": 1985.43, + "duration": 0.0, + "text": "its location information. And this" + }, + { + "start": 1985.44, + "duration": 0.0, + "text": "its location information. And this location<00:33:05.840> info<00:33:06.240> is<00:33:06.399> how<00:33:06.559> our<00:33:06.720> debugger's" + }, + { + "start": 1987.19, + "duration": 0.0, + "text": "location info is how our debugger's" + }, + { + "start": 1987.2, + "duration": 0.0, + "text": "location info is how our debugger's expression<00:33:07.600> compiler<00:33:08.399> can<00:33:08.640> actually" + }, + { + "start": 1988.789, + "duration": 0.0, + "text": "expression compiler can actually" + }, + { + "start": 1988.799, + "duration": 0.0, + "text": "expression compiler can actually understand<00:33:09.200> where<00:33:09.440> certain<00:33:09.679> variables<00:33:10.159> live." + }, + { + "start": 1990.549, + "duration": 0.0, + "text": "understand where certain variables live." + }, + { + "start": 1990.559, + "duration": 0.0, + "text": "understand where certain variables live. So<00:33:10.720> if<00:33:10.880> our<00:33:11.039> variable<00:33:11.440> index<00:33:12.000> within<00:33:12.399> some" + }, + { + "start": 1992.63, + "duration": 0.0, + "text": "So if our variable index within some" + }, + { + "start": 1992.64, + "duration": 0.0, + "text": "So if our variable index within some scope<00:33:12.880> is<00:33:13.120> at<00:33:13.279> like<00:33:13.440> the<00:33:13.600> value<00:33:13.679> of<00:33:13.840> the<00:33:14.000> stack" + }, + { + "start": 1994.23, + "duration": 0.0, + "text": "scope is at like the value of the stack" + }, + { + "start": 1994.24, + "duration": 0.0, + "text": "scope is at like the value of the stack pointer<00:33:15.120> minus<00:33:15.519> 64<00:33:15.919> bytes<00:33:16.960> um<00:33:17.200> then<00:33:17.440> the" + }, + { + "start": 1997.669, + "duration": 0.0, + "text": "pointer minus 64 bytes um then the" + }, + { + "start": 1997.679, + "duration": 0.0, + "text": "pointer minus 64 bytes um then the location<00:33:18.000> info<00:33:18.320> is<00:33:18.559> what's<00:33:18.799> going<00:33:18.880> to<00:33:19.039> tell<00:33:19.279> us" + }, + { + "start": 1999.43, + "duration": 0.0, + "text": "location info is what's going to tell us" + }, + { + "start": 1999.44, + "duration": 0.0, + "text": "location info is what's going to tell us that<00:33:19.679> it's<00:33:19.840> going<00:33:19.919> to<00:33:20.000> encode<00:33:20.320> that<00:33:20.559> somehow." + }, + { + "start": 2002.47, + "duration": 0.0, + "text": "that it's going to encode that somehow." + }, + { + "start": 2002.48, + "duration": 0.0, + "text": "that it's going to encode that somehow. It<00:33:22.720> might<00:33:22.880> also<00:33:23.120> tell<00:33:23.279> us<00:33:23.440> that<00:33:24.080> um<00:33:24.240> a<00:33:24.399> reg<00:33:24.799> a" + }, + { + "start": 2004.95, + "duration": 0.0, + "text": "It might also tell us that um a reg a" + }, + { + "start": 2004.96, + "duration": 0.0, + "text": "It might also tell us that um a reg a variable<00:33:25.279> lives<00:33:25.519> inside<00:33:25.760> of<00:33:25.840> a<00:33:26.000> register<00:33:26.880> or" + }, + { + "start": 2007.83, + "duration": 0.0, + "text": "variable lives inside of a register or" + }, + { + "start": 2007.84, + "duration": 0.0, + "text": "variable lives inside of a register or the<00:33:28.159> value<00:33:29.120> of<00:33:29.279> a<00:33:29.519> variable<00:33:30.000> is<00:33:30.399> like<00:33:31.519> uh<00:33:31.760> you" + }, + { + "start": 2011.909, + "duration": 0.0, + "text": "the value of a variable is like uh you" + }, + { + "start": 2011.919, + "duration": 0.0, + "text": "the value of a variable is like uh you know<00:33:32.159> it<00:33:32.399> could<00:33:32.480> be<00:33:32.559> arbitrarily<00:33:33.120> complicated" + }, + { + "start": 2013.59, + "duration": 0.0, + "text": "know it could be arbitrarily complicated" + }, + { + "start": 2013.6, + "duration": 0.0, + "text": "know it could be arbitrarily complicated really<00:33:33.919> that<00:33:34.159> it<00:33:34.240> can<00:33:34.320> be<00:33:34.480> computed<00:33:34.880> somehow." + }, + { + "start": 2015.75, + "duration": 0.0, + "text": "really that it can be computed somehow." + }, + { + "start": 2015.76, + "duration": 0.0, + "text": "really that it can be computed somehow. Um<00:33:36.640> but<00:33:36.880> those<00:33:37.120> cases<00:33:37.440> tend<00:33:37.600> to<00:33:37.679> show<00:33:37.760> up<00:33:37.919> in" + }, + { + "start": 2018.07, + "duration": 0.0, + "text": "Um but those cases tend to show up in" + }, + { + "start": 2018.08, + "duration": 0.0, + "text": "Um but those cases tend to show up in optimized<00:33:38.480> builds,<00:33:38.720> right?<00:33:38.960> You're<00:33:39.120> not" + }, + { + "start": 2019.269, + "duration": 0.0, + "text": "optimized builds, right? You're not" + }, + { + "start": 2019.279, + "duration": 0.0, + "text": "optimized builds, right? You're not always<00:33:39.519> going<00:33:39.600> to<00:33:39.760> have<00:33:40.320> complicated<00:33:40.799> cases" + }, + { + "start": 2021.19, + "duration": 0.0, + "text": "always going to have complicated cases" + }, + { + "start": 2021.2, + "duration": 0.0, + "text": "always going to have complicated cases like<00:33:41.360> that.<00:33:42.480> Um<00:33:43.120> global<00:33:43.440> variables<00:33:43.760> and" + }, + { + "start": 2023.909, + "duration": 0.0, + "text": "like that. Um global variables and" + }, + { + "start": 2023.919, + "duration": 0.0, + "text": "like that. Um global variables and thread<00:33:44.159> locals<00:33:44.559> tend<00:33:44.799> to<00:33:44.960> have<00:33:45.760> much<00:33:46.080> simpler" + }, + { + "start": 2026.87, + "duration": 0.0, + "text": "thread locals tend to have much simpler" + }, + { + "start": 2026.88, + "duration": 0.0, + "text": "thread locals tend to have much simpler uh<00:33:47.039> location<00:33:47.360> info.<00:33:47.919> they<00:33:48.159> tend<00:33:48.320> to<00:33:48.480> be<00:33:48.559> like" + }, + { + "start": 2028.789, + "duration": 0.0, + "text": "uh location info. they tend to be like" + }, + { + "start": 2028.799, + "duration": 0.0, + "text": "uh location info. they tend to be like fixed<00:33:49.200> offset<00:33:49.679> like<00:33:49.919> address<00:33:50.240> offsets<00:33:51.120> into" + }, + { + "start": 2031.83, + "duration": 0.0, + "text": "fixed offset like address offsets into" + }, + { + "start": 2031.84, + "duration": 0.0, + "text": "fixed offset like address offsets into in<00:33:52.080> the<00:33:52.320> case<00:33:52.399> of<00:33:52.559> globals<00:33:53.039> like<00:33:53.120> a<00:33:53.519> like<00:33:53.760> a" + }, + { + "start": 2033.909, + "duration": 0.0, + "text": "in the case of globals like a like a" + }, + { + "start": 2033.919, + "duration": 0.0, + "text": "in the case of globals like a like a module<00:33:54.320> or<00:33:54.559> something." + }, + { + "start": 2036.31, + "duration": 0.0, + "text": "module or something." + }, + { + "start": 2036.32, + "duration": 0.0, + "text": "module or something. So<00:33:57.360> with<00:33:57.600> all<00:33:57.679> of<00:33:57.840> those<00:33:58.000> pieces<00:33:58.320> we<00:33:58.480> can<00:33:58.559> sort" + }, + { + "start": 2038.71, + "duration": 0.0, + "text": "So with all of those pieces we can sort" + }, + { + "start": 2038.72, + "duration": 0.0, + "text": "So with all of those pieces we can sort of<00:33:58.799> put<00:33:59.039> together<00:33:59.679> a<00:33:59.919> compiler<00:34:00.399> in<00:34:00.640> the" + }, + { + "start": 2040.789, + "duration": 0.0, + "text": "of put together a compiler in the" + }, + { + "start": 2040.799, + "duration": 0.0, + "text": "of put together a compiler in the debugger<00:34:01.760> which<00:34:02.080> evaluates<00:34:02.640> expressions." + }, + { + "start": 2044.47, + "duration": 0.0, + "text": "debugger which evaluates expressions." + }, + { + "start": 2044.48, + "duration": 0.0, + "text": "debugger which evaluates expressions. So" + }, + { + "start": 2046.23, + "duration": 0.0, + "text": "So" + }, + { + "start": 2046.24, + "duration": 0.0, + "text": "So now<00:34:06.480> that<00:34:06.640> we<00:34:06.720> know<00:34:06.880> how<00:34:06.960> to<00:34:07.120> compute<00:34:07.519> the" + }, + { + "start": 2047.75, + "duration": 0.0, + "text": "now that we know how to compute the" + }, + { + "start": 2047.76, + "duration": 0.0, + "text": "now that we know how to compute the value<00:34:08.399> of<00:34:08.639> an<00:34:08.879> expression,<00:34:09.280> I'll<00:34:09.520> unpack<00:34:09.839> how" + }, + { + "start": 2050.069, + "duration": 0.0, + "text": "value of an expression, I'll unpack how" + }, + { + "start": 2050.079, + "duration": 0.0, + "text": "value of an expression, I'll unpack how we<00:34:10.240> can<00:34:10.399> begin<00:34:10.960> to<00:34:11.440> uh<00:34:11.599> to<00:34:11.839> visualize<00:34:12.320> it." + }, + { + "start": 2053.829, + "duration": 0.0, + "text": "we can begin to uh to visualize it." + }, + { + "start": 2053.839, + "duration": 0.0, + "text": "we can begin to uh to visualize it. So<00:34:14.320> the<00:34:14.639> most<00:34:14.800> basic<00:34:15.119> form<00:34:15.359> of<00:34:15.520> visualization" + }, + { + "start": 2056.47, + "duration": 0.0, + "text": "So the most basic form of visualization" + }, + { + "start": 2056.48, + "duration": 0.0, + "text": "So the most basic form of visualization that<00:34:16.720> we<00:34:16.879> can<00:34:17.040> do<00:34:17.119> for<00:34:17.280> an<00:34:17.440> evaluation<00:34:18.320> is<00:34:18.720> turn" + }, + { + "start": 2058.95, + "duration": 0.0, + "text": "that we can do for an evaluation is turn" + }, + { + "start": 2058.96, + "duration": 0.0, + "text": "that we can do for an evaluation is turn its<00:34:19.280> value<00:34:19.520> into<00:34:19.760> a<00:34:19.919> string,<00:34:20.240> right?<00:34:20.480> Just" + }, + { + "start": 2060.629, + "duration": 0.0, + "text": "its value into a string, right? Just" + }, + { + "start": 2060.639, + "duration": 0.0, + "text": "its value into a string, right? Just turn<00:34:20.720> it<00:34:20.879> into<00:34:21.119> text." + }, + { + "start": 2063.75, + "duration": 0.0, + "text": "turn it into text." + }, + { + "start": 2063.76, + "duration": 0.0, + "text": "turn it into text. So<00:34:24.320> you<00:34:24.480> know,<00:34:24.639> for<00:34:24.720> example,<00:34:25.520> you've<00:34:25.839> got<00:34:26.879> uh" + }, + { + "start": 2067.03, + "duration": 0.0, + "text": "So you know, for example, you've got uh" + }, + { + "start": 2067.04, + "duration": 0.0, + "text": "So you know, for example, you've got uh some<00:34:27.280> entity<00:34:28.000> expression,<00:34:28.800> you<00:34:29.040> want<00:34:29.119> to<00:34:29.200> turn" + }, + { + "start": 2069.349, + "duration": 0.0, + "text": "some entity expression, you want to turn" + }, + { + "start": 2069.359, + "duration": 0.0, + "text": "some entity expression, you want to turn it<00:34:29.440> into<00:34:29.679> a<00:34:29.760> string<00:34:30.000> like<00:34:30.159> this.<00:34:30.399> You've<00:34:30.639> got," + }, + { + "start": 2070.869, + "duration": 0.0, + "text": "it into a string like this. You've got," + }, + { + "start": 2070.879, + "duration": 0.0, + "text": "it into a string like this. You've got, you<00:34:30.960> know,<00:34:31.359> left<00:34:31.599> curly<00:34:32.079> brace<00:34:32.399> and<00:34:32.560> then<00:34:32.639> you" + }, + { + "start": 2072.79, + "duration": 0.0, + "text": "you know, left curly brace and then you" + }, + { + "start": 2072.8, + "duration": 0.0, + "text": "you know, left curly brace and then you put<00:34:32.960> print<00:34:33.200> out<00:34:33.359> all<00:34:33.520> the<00:34:33.679> members<00:34:34.320> uh" + }, + { + "start": 2074.389, + "duration": 0.0, + "text": "put print out all the members uh" + }, + { + "start": 2074.399, + "duration": 0.0, + "text": "put print out all the members uh recursively<00:34:35.599> and<00:34:35.839> so<00:34:36.000> on." + }, + { + "start": 2078.95, + "duration": 0.0, + "text": "recursively and so on." + }, + { + "start": 2078.96, + "duration": 0.0, + "text": "recursively and so on. So<00:34:39.200> what<00:34:39.440> this<00:34:39.599> code<00:34:39.919> path<00:34:40.240> does<00:34:40.560> is<00:34:41.040> sort<00:34:41.280> of" + }, + { + "start": 2081.349, + "duration": 0.0, + "text": "So what this code path does is sort of" + }, + { + "start": 2081.359, + "duration": 0.0, + "text": "So what this code path does is sort of inherently<00:34:42.000> dependent<00:34:42.399> on<00:34:42.879> what<00:34:43.280> on<00:34:43.679> the<00:34:43.919> type" + }, + { + "start": 2084.23, + "duration": 0.0, + "text": "inherently dependent on what on the type" + }, + { + "start": 2084.24, + "duration": 0.0, + "text": "inherently dependent on what on the type information<00:34:45.040> of<00:34:45.280> some<00:34:45.520> evaluation.<00:34:46.159> So<00:34:46.320> you" + }, + { + "start": 2086.47, + "duration": 0.0, + "text": "information of some evaluation. So you" + }, + { + "start": 2086.48, + "duration": 0.0, + "text": "information of some evaluation. So you could<00:34:46.639> first<00:34:46.800> note<00:34:47.040> that<00:34:47.200> we've<00:34:47.440> got<00:34:47.520> a<00:34:47.760> set<00:34:47.919> of" + }, + { + "start": 2088.47, + "duration": 0.0, + "text": "could first note that we've got a set of" + }, + { + "start": 2088.48, + "duration": 0.0, + "text": "could first note that we've got a set of like<00:34:48.879> known<00:34:49.280> simple<00:34:49.679> cases,<00:34:50.079> right?<00:34:50.399> We<00:34:50.639> know" + }, + { + "start": 2090.79, + "duration": 0.0, + "text": "like known simple cases, right? We know" + }, + { + "start": 2090.8, + "duration": 0.0, + "text": "like known simple cases, right? We know how<00:34:50.960> to<00:34:51.040> print<00:34:51.200> an<00:34:51.359> integer.<00:34:51.760> We<00:34:51.839> know<00:34:51.919> how<00:34:52.079> to" + }, + { + "start": 2092.149, + "duration": 0.0, + "text": "how to print an integer. We know how to" + }, + { + "start": 2092.159, + "duration": 0.0, + "text": "how to print an integer. We know how to print<00:34:52.320> a<00:34:52.480> floating<00:34:52.800> point.<00:34:53.599> We<00:34:53.839> know<00:34:54.000> how<00:34:54.159> to" + }, + { + "start": 2094.23, + "duration": 0.0, + "text": "print a floating point. We know how to" + }, + { + "start": 2094.24, + "duration": 0.0, + "text": "print a floating point. We know how to print<00:34:55.359> uh<00:34:55.839> well,<00:34:56.159> okay,<00:34:56.560> strings<00:34:56.879> are" + }, + { + "start": 2097.03, + "duration": 0.0, + "text": "print uh well, okay, strings are" + }, + { + "start": 2097.04, + "duration": 0.0, + "text": "print uh well, okay, strings are complicated.<00:34:57.920> Um<00:34:58.800> but<00:34:59.040> we<00:34:59.200> know<00:34:59.280> how<00:34:59.440> to<00:34:59.520> print" + }, + { + "start": 2099.75, + "duration": 0.0, + "text": "complicated. Um but we know how to print" + }, + { + "start": 2099.76, + "duration": 0.0, + "text": "complicated. Um but we know how to print those<00:35:00.079> those<00:35:00.400> two,<00:35:00.640> right?<00:35:00.800> It's<00:35:00.960> like<00:35:01.040> an" + }, + { + "start": 2101.19, + "duration": 0.0, + "text": "those those two, right? It's like an" + }, + { + "start": 2101.2, + "duration": 0.0, + "text": "those those two, right? It's like an integer.<00:35:01.680> We<00:35:01.839> know<00:35:01.920> how<00:35:02.079> to<00:35:02.160> do<00:35:02.320> that.<00:35:02.640> you" + }, + { + "start": 2102.79, + "duration": 0.0, + "text": "integer. We know how to do that. you" + }, + { + "start": 2102.8, + "duration": 0.0, + "text": "integer. We know how to do that. you know,<00:35:02.960> maybe<00:35:03.119> we<00:35:03.280> can<00:35:03.359> change<00:35:03.520> the<00:35:03.680> radics." + }, + { + "start": 2104.47, + "duration": 0.0, + "text": "know, maybe we can change the radics." + }, + { + "start": 2104.48, + "duration": 0.0, + "text": "know, maybe we can change the radics. Um," + }, + { + "start": 2106.47, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2106.48, + "duration": 0.0, + "text": "Um, with<00:35:06.640> floating<00:35:07.040> point" + }, + { + "start": 2108.55, + "duration": 0.0, + "text": "with floating point" + }, + { + "start": 2108.56, + "duration": 0.0, + "text": "with floating point also,<00:35:08.880> you<00:35:09.040> can<00:35:09.119> change<00:35:09.359> the<00:35:09.520> radex.<00:35:10.320> Uh,<00:35:10.560> but" + }, + { + "start": 2110.79, + "duration": 0.0, + "text": "also, you can change the radex. Uh, but" + }, + { + "start": 2110.8, + "duration": 0.0, + "text": "also, you can change the radex. Uh, but you<00:35:10.960> know,<00:35:11.040> we<00:35:11.200> know<00:35:11.280> how<00:35:11.440> to<00:35:11.520> print<00:35:11.680> these<00:35:11.920> two" + }, + { + "start": 2112.069, + "duration": 0.0, + "text": "you know, we know how to print these two" + }, + { + "start": 2112.079, + "duration": 0.0, + "text": "you know, we know how to print these two things.<00:35:13.040> With<00:35:13.599> uh<00:35:14.560> strings,<00:35:14.960> it's<00:35:15.280> relatively" + }, + { + "start": 2115.91, + "duration": 0.0, + "text": "things. With uh strings, it's relatively" + }, + { + "start": 2115.92, + "duration": 0.0, + "text": "things. With uh strings, it's relatively basic,<00:35:16.400> but<00:35:16.640> it's<00:35:16.960> it's<00:35:17.359> not<00:35:17.520> as<00:35:17.680> it's<00:35:18.000> not<00:35:18.079> as" + }, + { + "start": 2118.23, + "duration": 0.0, + "text": "basic, but it's it's not as it's not as" + }, + { + "start": 2118.24, + "duration": 0.0, + "text": "basic, but it's it's not as it's not as trivial<00:35:18.560> as<00:35:18.640> those<00:35:18.880> first<00:35:19.040> two<00:35:19.200> cases<00:35:19.520> because" + }, + { + "start": 2119.75, + "duration": 0.0, + "text": "trivial as those first two cases because" + }, + { + "start": 2119.76, + "duration": 0.0, + "text": "trivial as those first two cases because strings<00:35:21.040> um<00:35:21.680> they're<00:35:21.920> not<00:35:22.160> normally<00:35:22.480> encoded" + }, + { + "start": 2123.03, + "duration": 0.0, + "text": "strings um they're not normally encoded" + }, + { + "start": 2123.04, + "duration": 0.0, + "text": "strings um they're not normally encoded as<00:35:23.760> uh<00:35:24.160> or<00:35:24.400> they're<00:35:24.640> normally<00:35:24.880> encoded<00:35:25.200> as<00:35:25.440> a" + }, + { + "start": 2125.589, + "duration": 0.0, + "text": "as uh or they're normally encoded as a" + }, + { + "start": 2125.599, + "duration": 0.0, + "text": "as uh or they're normally encoded as a like<00:35:25.760> a<00:35:26.000> pointer<00:35:26.560> or<00:35:26.800> an<00:35:27.040> array<00:35:27.280> of<00:35:27.440> characters" + }, + { + "start": 2127.91, + "duration": 0.0, + "text": "like a pointer or an array of characters" + }, + { + "start": 2127.92, + "duration": 0.0, + "text": "like a pointer or an array of characters in<00:35:28.079> in<00:35:28.320> the<00:35:28.400> case<00:35:28.560> of<00:35:28.640> like<00:35:28.800> C<00:35:29.040> types." + }, + { + "start": 2129.27, + "duration": 0.0, + "text": "in in the case of like C types." + }, + { + "start": 2129.28, + "duration": 0.0, + "text": "in in the case of like C types. Obviously<00:35:29.680> there's<00:35:29.839> formal<00:35:30.240> types<00:35:30.480> in<00:35:30.640> the" + }, + { + "start": 2130.87, + "duration": 0.0, + "text": "Obviously there's formal types in the" + }, + { + "start": 2130.88, + "duration": 0.0, + "text": "Obviously there's formal types in the languages<00:35:31.280> but<00:35:31.520> in<00:35:31.680> terms<00:35:31.839> of<00:35:31.920> debug<00:35:32.320> info" + }, + { + "start": 2133.03, + "duration": 0.0, + "text": "languages but in terms of debug info" + }, + { + "start": 2133.04, + "duration": 0.0, + "text": "languages but in terms of debug info there's<00:35:33.280> no<00:35:33.520> string<00:35:34.000> like<00:35:34.160> there's<00:35:34.320> no<00:35:34.480> formal" + }, + { + "start": 2134.79, + "duration": 0.0, + "text": "there's no string like there's no formal" + }, + { + "start": 2134.8, + "duration": 0.0, + "text": "there's no string like there's no formal string<00:35:35.040> type<00:35:35.200> in<00:35:35.359> the<00:35:35.440> debug<00:35:35.839> info<00:35:36.160> obviously" + }, + { + "start": 2136.55, + "duration": 0.0, + "text": "string type in the debug info obviously" + }, + { + "start": 2136.56, + "duration": 0.0, + "text": "string type in the debug info obviously because<00:35:36.800> debug<00:35:37.119> info<00:35:37.440> evolves<00:35:37.839> around<00:35:38.320> sort" + }, + { + "start": 2138.47, + "duration": 0.0, + "text": "because debug info evolves around sort" + }, + { + "start": 2138.48, + "duration": 0.0, + "text": "because debug info evolves around sort of<00:35:38.560> the<00:35:38.720> C<00:35:38.960> tool<00:35:39.200> chain<00:35:39.839> there's<00:35:40.160> the<00:35:40.400> standard" + }, + { + "start": 2140.79, + "duration": 0.0, + "text": "of the C tool chain there's the standard" + }, + { + "start": 2140.8, + "duration": 0.0, + "text": "of the C tool chain there's the standard of<00:35:41.280> string<00:35:41.520> types<00:35:41.760> in<00:35:42.000> other<00:35:42.160> languages<00:35:43.119> not" + }, + { + "start": 2143.589, + "duration": 0.0, + "text": "of string types in other languages not" + }, + { + "start": 2143.599, + "duration": 0.0, + "text": "of string types in other languages not buried<00:35:43.920> that<00:35:44.079> deep<00:35:44.240> in<00:35:44.400> the<00:35:44.560> ecosystem." + }, + { + "start": 2146.79, + "duration": 0.0, + "text": "buried that deep in the ecosystem." + }, + { + "start": 2146.8, + "duration": 0.0, + "text": "buried that deep in the ecosystem. Um,<00:35:47.440> so<00:35:47.599> if<00:35:47.760> it's<00:35:47.920> a<00:35:48.000> pointer<00:35:48.320> to<00:35:48.480> a<00:35:48.640> character" + }, + { + "start": 2148.95, + "duration": 0.0, + "text": "Um, so if it's a pointer to a character" + }, + { + "start": 2148.96, + "duration": 0.0, + "text": "Um, so if it's a pointer to a character type,<00:35:49.359> it's<00:35:49.599> a<00:35:49.760> pretty<00:35:50.000> safe<00:35:50.240> bet<00:35:50.480> that<00:35:50.720> it's<00:35:50.880> a" + }, + { + "start": 2151.03, + "duration": 0.0, + "text": "type, it's a pretty safe bet that it's a" + }, + { + "start": 2151.04, + "duration": 0.0, + "text": "type, it's a pretty safe bet that it's a string.<00:35:51.599> But<00:35:51.760> if<00:35:51.839> it's<00:35:52.000> a<00:35:52.079> pointer<00:35:52.400> to<00:35:52.480> a<00:35:52.640> U8," + }, + { + "start": 2153.589, + "duration": 0.0, + "text": "string. But if it's a pointer to a U8," + }, + { + "start": 2153.599, + "duration": 0.0, + "text": "string. But if it's a pointer to a U8, it's<00:35:53.839> like<00:35:54.800> maybe<00:35:55.119> a<00:35:55.280> string.<00:35:55.680> Like<00:35:55.920> who<00:35:56.160> knows" + }, + { + "start": 2156.39, + "duration": 0.0, + "text": "it's like maybe a string. Like who knows" + }, + { + "start": 2156.4, + "duration": 0.0, + "text": "it's like maybe a string. Like who knows for<00:35:56.640> sure,<00:35:56.960> probably,<00:35:57.920> maybe<00:35:58.320> not,<00:35:58.800> you<00:35:58.960> know," + }, + { + "start": 2159.27, + "duration": 0.0, + "text": "for sure, probably, maybe not, you know," + }, + { + "start": 2159.28, + "duration": 0.0, + "text": "for sure, probably, maybe not, you know, not<00:35:59.520> really<00:35:59.760> clear.<00:36:00.240> But<00:36:00.320> you<00:36:00.560> can<00:36:00.640> try<00:36:00.800> it<00:36:00.960> and" + }, + { + "start": 2161.109, + "duration": 0.0, + "text": "not really clear. But you can try it and" + }, + { + "start": 2161.119, + "duration": 0.0, + "text": "not really clear. But you can try it and then<00:36:01.280> if<00:36:01.440> it<00:36:01.599> doesn't<00:36:02.079> produce<00:36:02.400> any,<00:36:02.800> you" + }, + { + "start": 2162.87, + "duration": 0.0, + "text": "then if it doesn't produce any, you" + }, + { + "start": 2162.88, + "duration": 0.0, + "text": "then if it doesn't produce any, you know,<00:36:03.119> seemingly<00:36:03.520> readable<00:36:03.920> text,<00:36:04.880> you<00:36:05.040> know," + }, + { + "start": 2165.349, + "duration": 0.0, + "text": "know, seemingly readable text, you know," + }, + { + "start": 2165.359, + "duration": 0.0, + "text": "know, seemingly readable text, you know, maybe<00:36:05.680> don't<00:36:05.839> use<00:36:06.079> it.<00:36:07.040> Um,<00:36:07.760> the<00:36:08.000> other<00:36:08.160> caveat" + }, + { + "start": 2168.47, + "duration": 0.0, + "text": "maybe don't use it. Um, the other caveat" + }, + { + "start": 2168.48, + "duration": 0.0, + "text": "maybe don't use it. Um, the other caveat is<00:36:08.640> that<00:36:08.800> you<00:36:08.960> don't<00:36:09.119> actually<00:36:09.280> know<00:36:09.440> how<00:36:09.680> many" + }, + { + "start": 2169.91, + "duration": 0.0, + "text": "is that you don't actually know how many" + }, + { + "start": 2169.92, + "duration": 0.0, + "text": "is that you don't actually know how many characters<00:36:10.720> you're<00:36:10.960> working<00:36:11.119> with,<00:36:11.440> right?" + }, + { + "start": 2171.589, + "duration": 0.0, + "text": "characters you're working with, right?" + }, + { + "start": 2171.599, + "duration": 0.0, + "text": "characters you're working with, right? you<00:36:11.760> don't<00:36:12.079> because<00:36:12.320> it's<00:36:12.560> just<00:36:12.720> pointers<00:36:13.280> in" + }, + { + "start": 2173.51, + "duration": 0.0, + "text": "you don't because it's just pointers in" + }, + { + "start": 2173.52, + "duration": 0.0, + "text": "you don't because it's just pointers in the<00:36:13.599> type<00:36:13.839> info.<00:36:14.560> You<00:36:14.800> don't<00:36:14.960> know<00:36:15.200> that<00:36:15.440> like" + }, + { + "start": 2175.589, + "duration": 0.0, + "text": "the type info. You don't know that like" + }, + { + "start": 2175.599, + "duration": 0.0, + "text": "the type info. You don't know that like that's,<00:36:16.160> you<00:36:16.240> know,<00:36:16.400> that's<00:36:16.560> what<00:36:16.720> everyone" + }, + { + "start": 2176.95, + "duration": 0.0, + "text": "that's, you know, that's what everyone" + }, + { + "start": 2176.96, + "duration": 0.0, + "text": "that's, you know, that's what everyone talks<00:36:17.119> about<00:36:17.200> with<00:36:17.359> pointers.<00:36:17.760> You<00:36:17.920> don't" + }, + { + "start": 2178.069, + "duration": 0.0, + "text": "talks about with pointers. You don't" + }, + { + "start": 2178.079, + "duration": 0.0, + "text": "talks about with pointers. You don't know<00:36:19.119> how<00:36:19.359> many<00:36:19.520> things<00:36:19.760> they're<00:36:20.000> pointing" + }, + { + "start": 2180.23, + "duration": 0.0, + "text": "know how many things they're pointing" + }, + { + "start": 2180.24, + "duration": 0.0, + "text": "know how many things they're pointing to,<00:36:20.960> you<00:36:21.119> know.<00:36:21.280> So,<00:36:22.000> um,<00:36:22.400> you<00:36:22.560> know," + }, + { + "start": 2184.23, + "duration": 0.0, + "text": "to, you know. So, um, you know," + }, + { + "start": 2184.24, + "duration": 0.0, + "text": "to, you know. So, um, you know, you<00:36:24.400> kind<00:36:24.560> of<00:36:24.640> have<00:36:24.800> to<00:36:24.880> guess.<00:36:25.119> You<00:36:25.280> could" + }, + { + "start": 2185.349, + "duration": 0.0, + "text": "you kind of have to guess. You could" + }, + { + "start": 2185.359, + "duration": 0.0, + "text": "you kind of have to guess. You could say,<00:36:25.599> I've<00:36:25.839> got<00:36:25.920> some<00:36:26.160> fixed<00:36:26.400> upper<00:36:26.720> limit." + }, + { + "start": 2187.03, + "duration": 0.0, + "text": "say, I've got some fixed upper limit." + }, + { + "start": 2187.04, + "duration": 0.0, + "text": "say, I've got some fixed upper limit. I'll<00:36:27.280> look<00:36:27.359> for<00:36:27.520> a<00:36:27.680> null<00:36:27.920> terminator.<00:36:28.800> Um,<00:36:29.280> you" + }, + { + "start": 2189.43, + "duration": 0.0, + "text": "I'll look for a null terminator. Um, you" + }, + { + "start": 2189.44, + "duration": 0.0, + "text": "I'll look for a null terminator. Um, you know,<00:36:29.520> the<00:36:29.760> UI<00:36:30.000> can<00:36:30.160> only<00:36:30.320> render<00:36:30.640> so<00:36:30.800> much" + }, + { + "start": 2190.95, + "duration": 0.0, + "text": "know, the UI can only render so much" + }, + { + "start": 2190.96, + "duration": 0.0, + "text": "know, the UI can only render so much text<00:36:31.280> anyways.<00:36:31.920> So,<00:36:32.079> you<00:36:32.240> can<00:36:32.560> have<00:36:32.720> a<00:36:32.880> pretty" + }, + { + "start": 2193.03, + "duration": 0.0, + "text": "text anyways. So, you can have a pretty" + }, + { + "start": 2193.04, + "duration": 0.0, + "text": "text anyways. So, you can have a pretty small<00:36:33.280> limit,<00:36:33.920> but,<00:36:34.240> you<00:36:34.400> know,<00:36:35.119> not<00:36:35.359> too" + }, + { + "start": 2195.589, + "duration": 0.0, + "text": "small limit, but, you know, not too" + }, + { + "start": 2195.599, + "duration": 0.0, + "text": "small limit, but, you know, not too difficult.<00:36:36.880> With<00:36:37.119> enum<00:36:37.520> values,<00:36:38.640> you<00:36:38.800> can" + }, + { + "start": 2198.87, + "duration": 0.0, + "text": "difficult. With enum values, you can" + }, + { + "start": 2198.88, + "duration": 0.0, + "text": "difficult. With enum values, you can just<00:36:39.040> look<00:36:39.200> at<00:36:39.280> the<00:36:39.359> enum<00:36:39.760> type<00:36:39.920> info<00:36:40.160> since" + }, + { + "start": 2200.31, + "duration": 0.0, + "text": "just look at the enum type info since" + }, + { + "start": 2200.32, + "duration": 0.0, + "text": "just look at the enum type info since that's<00:36:40.560> in<00:36:40.880> in<00:36:41.119> the<00:36:41.280> debug<00:36:41.680> info.<00:36:42.320> You<00:36:42.480> can" + }, + { + "start": 2202.63, + "duration": 0.0, + "text": "that's in in the debug info. You can" + }, + { + "start": 2202.64, + "duration": 0.0, + "text": "that's in in the debug info. You can like<00:36:43.119> try<00:36:43.359> to<00:36:43.520> find<00:36:43.839> some<00:36:44.079> member<00:36:44.400> inside<00:36:44.640> of" + }, + { + "start": 2204.71, + "duration": 0.0, + "text": "like try to find some member inside of" + }, + { + "start": 2204.72, + "duration": 0.0, + "text": "like try to find some member inside of the<00:36:44.880> enum<00:36:45.280> type<00:36:45.440> info.<00:36:45.839> See<00:36:46.000> if<00:36:46.320> an<00:36:46.560> integer" + }, + { + "start": 2206.95, + "duration": 0.0, + "text": "the enum type info. See if an integer" + }, + { + "start": 2206.96, + "duration": 0.0, + "text": "the enum type info. See if an integer evaluation<00:36:47.839> or<00:36:48.079> an<00:36:48.640> uh<00:36:48.880> you<00:36:49.040> know,<00:36:49.200> you'd<00:36:49.520> have" + }, + { + "start": 2209.589, + "duration": 0.0, + "text": "evaluation or an uh you know, you'd have" + }, + { + "start": 2209.599, + "duration": 0.0, + "text": "evaluation or an uh you know, you'd have it<00:36:49.839> as<00:36:50.000> an<00:36:50.079> enum<00:36:50.560> evaluation.<00:36:51.520> Uh<00:36:51.760> you<00:36:52.000> could" + }, + { + "start": 2212.069, + "duration": 0.0, + "text": "it as an enum evaluation. Uh you could" + }, + { + "start": 2212.079, + "duration": 0.0, + "text": "it as an enum evaluation. Uh you could say<00:36:52.320> like<00:36:52.480> I've<00:36:52.720> got<00:36:52.880> this<00:36:53.040> integer<00:36:53.440> value." + }, + { + "start": 2213.75, + "duration": 0.0, + "text": "say like I've got this integer value." + }, + { + "start": 2213.76, + "duration": 0.0, + "text": "say like I've got this integer value. Let's<00:36:54.000> try<00:36:54.079> to<00:36:54.240> look<00:36:54.320> up<00:36:54.480> at<00:36:54.640> the<00:36:54.800> enum<00:36:55.200> type" + }, + { + "start": 2215.43, + "duration": 0.0, + "text": "Let's try to look up at the enum type" + }, + { + "start": 2215.44, + "duration": 0.0, + "text": "Let's try to look up at the enum type information.<00:36:56.000> Find<00:36:56.240> out<00:36:57.200> if<00:36:57.440> there's<00:36:57.599> a" + }, + { + "start": 2217.75, + "duration": 0.0, + "text": "information. Find out if there's a" + }, + { + "start": 2217.76, + "duration": 0.0, + "text": "information. Find out if there's a member<00:36:57.920> inside<00:36:58.160> of<00:36:58.240> the<00:36:58.400> enum<00:36:59.040> that<00:37:00.160> um<00:37:01.359> that" + }, + { + "start": 2222.31, + "duration": 0.0, + "text": "member inside of the enum that um that" + }, + { + "start": 2222.32, + "duration": 0.0, + "text": "member inside of the enum that um that there's<00:37:02.560> a<00:37:02.720> member<00:37:02.880> that<00:37:03.119> has<00:37:03.280> a<00:37:03.440> value<00:37:03.599> that" + }, + { + "start": 2223.829, + "duration": 0.0, + "text": "there's a member that has a value that" + }, + { + "start": 2223.839, + "duration": 0.0, + "text": "there's a member that has a value that matches<00:37:04.160> whatever<00:37:04.480> value<00:37:04.720> I<00:37:04.880> evaluated.<00:37:05.599> then" + }, + { + "start": 2225.75, + "duration": 0.0, + "text": "matches whatever value I evaluated. then" + }, + { + "start": 2225.76, + "duration": 0.0, + "text": "matches whatever value I evaluated. then I<00:37:05.920> use<00:37:06.079> the<00:37:06.240> name<00:37:07.040> if<00:37:07.280> if<00:37:07.520> not<00:37:07.680> then<00:37:07.839> maybe<00:37:08.000> I" + }, + { + "start": 2228.15, + "duration": 0.0, + "text": "I use the name if if not then maybe I" + }, + { + "start": 2228.16, + "duration": 0.0, + "text": "I use the name if if not then maybe I just<00:37:08.320> fall<00:37:08.480> back<00:37:08.560> to<00:37:08.640> the<00:37:08.800> integer<00:37:09.119> case<00:37:09.599> or" + }, + { + "start": 2229.91, + "duration": 0.0, + "text": "just fall back to the integer case or" + }, + { + "start": 2229.92, + "duration": 0.0, + "text": "just fall back to the integer case or whatever." + }, + { + "start": 2232.15, + "duration": 0.0, + "text": "whatever." + }, + { + "start": 2232.16, + "duration": 0.0, + "text": "whatever. The<00:37:12.400> only<00:37:12.560> missing<00:37:12.880> piece<00:37:13.040> here<00:37:13.680> are<00:37:14.000> compound" + }, + { + "start": 2234.47, + "duration": 0.0, + "text": "The only missing piece here are compound" + }, + { + "start": 2234.48, + "duration": 0.0, + "text": "The only missing piece here are compound types<00:37:14.800> like<00:37:14.960> strrus,<00:37:15.440> unions<00:37:15.760> and<00:37:15.920> arrays." + }, + { + "start": 2237.51, + "duration": 0.0, + "text": "types like strrus, unions and arrays." + }, + { + "start": 2237.52, + "duration": 0.0, + "text": "types like strrus, unions and arrays. Uh<00:37:17.839> so<00:37:18.000> with<00:37:18.160> a<00:37:18.320> strruct" + }, + { + "start": 2240.15, + "duration": 0.0, + "text": "Uh so with a strruct" + }, + { + "start": 2240.16, + "duration": 0.0, + "text": "Uh so with a strruct might<00:37:20.320> want<00:37:20.480> something<00:37:20.720> like<00:37:20.800> that<00:37:21.040> like<00:37:21.200> I" + }, + { + "start": 2241.349, + "duration": 0.0, + "text": "might want something like that like I" + }, + { + "start": 2241.359, + "duration": 0.0, + "text": "might want something like that like I mentioned<00:37:21.599> earlier<00:37:22.000> braces<00:37:22.720> iterate<00:37:23.119> the" + }, + { + "start": 2243.349, + "duration": 0.0, + "text": "mentioned earlier braces iterate the" + }, + { + "start": 2243.359, + "duration": 0.0, + "text": "mentioned earlier braces iterate the members." + }, + { + "start": 2246.31, + "duration": 0.0, + "text": "members." + }, + { + "start": 2246.32, + "duration": 0.0, + "text": "members. So<00:37:27.040> this<00:37:27.280> can<00:37:27.440> be<00:37:27.599> done<00:37:27.760> by<00:37:28.000> just<00:37:28.400> you<00:37:28.640> walk" + }, + { + "start": 2249.03, + "duration": 0.0, + "text": "So this can be done by just you walk" + }, + { + "start": 2249.04, + "duration": 0.0, + "text": "So this can be done by just you walk basically<00:37:29.359> the<00:37:29.520> strct<00:37:29.839> members<00:37:30.079> recursively." + }, + { + "start": 2251.589, + "duration": 0.0, + "text": "basically the strct members recursively." + }, + { + "start": 2251.599, + "duration": 0.0, + "text": "basically the strct members recursively. So<00:37:31.760> you<00:37:31.920> walk<00:37:32.079> to<00:37:32.240> each<00:37:32.880> uh<00:37:33.200> child<00:37:33.839> and<00:37:34.000> then" + }, + { + "start": 2254.15, + "duration": 0.0, + "text": "So you walk to each uh child and then" + }, + { + "start": 2254.16, + "duration": 0.0, + "text": "So you walk to each uh child and then when<00:37:34.320> you<00:37:34.480> come<00:37:34.640> across<00:37:34.960> another<00:37:35.520> compound" + }, + { + "start": 2255.91, + "duration": 0.0, + "text": "when you come across another compound" + }, + { + "start": 2255.92, + "duration": 0.0, + "text": "when you come across another compound strct,<00:37:36.160> you've<00:37:36.320> got<00:37:36.400> a<00:37:36.480> strct<00:37:36.720> inside<00:37:36.960> of<00:37:37.040> a" + }, + { + "start": 2257.109, + "duration": 0.0, + "text": "strct, you've got a strct inside of a" + }, + { + "start": 2257.119, + "duration": 0.0, + "text": "strct, you've got a strct inside of a strruct.<00:37:37.680> You've<00:37:37.839> got<00:37:37.920> to<00:37:38.079> say,<00:37:38.240> okay,<00:37:38.480> I'm" + }, + { + "start": 2258.63, + "duration": 0.0, + "text": "strruct. You've got to say, okay, I'm" + }, + { + "start": 2258.64, + "duration": 0.0, + "text": "strruct. You've got to say, okay, I'm going<00:37:38.720> to<00:37:38.800> recursively<00:37:39.280> descend<00:37:39.599> into<00:37:39.760> that." + }, + { + "start": 2259.99, + "duration": 0.0, + "text": "going to recursively descend into that." + }, + { + "start": 2260.0, + "duration": 0.0, + "text": "going to recursively descend into that. So<00:37:40.079> I<00:37:40.240> go,<00:37:40.720> you<00:37:40.960> know,<00:37:41.359> um<00:37:41.599> doesn't<00:37:41.839> have<00:37:41.920> to<00:37:42.000> be" + }, + { + "start": 2262.15, + "duration": 0.0, + "text": "So I go, you know, um doesn't have to be" + }, + { + "start": 2262.16, + "duration": 0.0, + "text": "So I go, you know, um doesn't have to be literally<00:37:42.480> recursive,<00:37:43.280> but<00:37:43.680> you<00:37:43.839> know,<00:37:44.480> uh" + }, + { + "start": 2264.63, + "duration": 0.0, + "text": "literally recursive, but you know, uh" + }, + { + "start": 2264.64, + "duration": 0.0, + "text": "literally recursive, but you know, uh the<00:37:44.800> the<00:37:45.119> sort<00:37:45.280> of<00:37:45.359> algorithm<00:37:45.760> is<00:37:45.920> sort<00:37:46.079> of" + }, + { + "start": 2266.15, + "duration": 0.0, + "text": "the the sort of algorithm is sort of" + }, + { + "start": 2266.16, + "duration": 0.0, + "text": "the the sort of algorithm is sort of recursive.<00:37:46.640> You<00:37:46.720> need<00:37:46.800> like<00:37:46.960> a<00:37:47.119> stack.<00:37:47.839> So<00:37:49.280> um" + }, + { + "start": 2270.23, + "duration": 0.0, + "text": "recursive. You need like a stack. So um" + }, + { + "start": 2270.24, + "duration": 0.0, + "text": "recursive. You need like a stack. So um so<00:37:50.480> yeah,<00:37:50.640> you<00:37:50.800> walk<00:37:51.040> the<00:37:51.200> children,<00:37:51.599> you<00:37:51.760> do" + }, + { + "start": 2271.99, + "duration": 0.0, + "text": "so yeah, you walk the children, you do" + }, + { + "start": 2272.0, + "duration": 0.0, + "text": "so yeah, you walk the children, you do that,<00:37:52.640> you<00:37:52.880> can<00:37:52.960> get<00:37:53.040> a<00:37:53.200> string<00:37:53.440> like<00:37:53.599> that." + }, + { + "start": 2276.31, + "duration": 0.0, + "text": "that, you can get a string like that." + }, + { + "start": 2276.32, + "duration": 0.0, + "text": "that, you can get a string like that. Um<00:37:57.119> with<00:37:57.359> arrays,<00:37:57.920> very<00:37:58.160> similar<00:37:58.480> problem." + }, + { + "start": 2279.03, + "duration": 0.0, + "text": "Um with arrays, very similar problem." + }, + { + "start": 2279.04, + "duration": 0.0, + "text": "Um with arrays, very similar problem. you've<00:37:59.359> got<00:37:59.520> some<00:37:59.760> you<00:37:59.920> know<00:38:00.000> you<00:38:00.160> have<00:38:00.240> some" + }, + { + "start": 2280.39, + "duration": 0.0, + "text": "you've got some you know you have some" + }, + { + "start": 2280.4, + "duration": 0.0, + "text": "you've got some you know you have some notion<00:38:00.640> of<00:38:00.800> how<00:38:00.960> many<00:38:01.119> elements<00:38:01.440> are<00:38:01.599> in<00:38:01.680> the" + }, + { + "start": 2281.829, + "duration": 0.0, + "text": "notion of how many elements are in the" + }, + { + "start": 2281.839, + "duration": 0.0, + "text": "notion of how many elements are in the array.<00:38:02.000> So<00:38:02.079> you<00:38:02.320> can<00:38:02.400> say<00:38:02.800> well<00:38:02.960> I<00:38:03.119> found<00:38:03.280> the" + }, + { + "start": 2283.51, + "duration": 0.0, + "text": "array. So you can say well I found the" + }, + { + "start": 2283.52, + "duration": 0.0, + "text": "array. So you can say well I found the base<00:38:03.760> address<00:38:04.000> of<00:38:04.079> the<00:38:04.240> array<00:38:04.480> but<00:38:04.640> to" + }, + { + "start": 2284.87, + "duration": 0.0, + "text": "base address of the array but to" + }, + { + "start": 2284.88, + "duration": 0.0, + "text": "base address of the array but to actually<00:38:05.040> visualize<00:38:05.440> this<00:38:05.599> as<00:38:05.760> a<00:38:05.920> string<00:38:06.160> I" + }, + { + "start": 2286.31, + "duration": 0.0, + "text": "actually visualize this as a string I" + }, + { + "start": 2286.32, + "duration": 0.0, + "text": "actually visualize this as a string I want<00:38:06.400> to<00:38:06.560> go<00:38:06.960> okay<00:38:07.280> go<00:38:07.440> to<00:38:07.599> the<00:38:07.760> first<00:38:08.000> element" + }, + { + "start": 2288.79, + "duration": 0.0, + "text": "want to go okay go to the first element" + }, + { + "start": 2288.8, + "duration": 0.0, + "text": "want to go okay go to the first element turn<00:38:08.960> it<00:38:09.119> into<00:38:09.280> a<00:38:09.520> string<00:38:10.160> second<00:38:10.480> element" + }, + { + "start": 2290.87, + "duration": 0.0, + "text": "turn it into a string second element" + }, + { + "start": 2290.88, + "duration": 0.0, + "text": "turn it into a string second element turn<00:38:11.040> it<00:38:11.200> into<00:38:11.359> a<00:38:11.520> string<00:38:12.079> commas<00:38:12.480> delimiting" + }, + { + "start": 2293.03, + "duration": 0.0, + "text": "turn it into a string commas delimiting" + }, + { + "start": 2293.04, + "duration": 0.0, + "text": "turn it into a string commas delimiting them<00:38:14.000> pretty<00:38:14.320> basic<00:38:14.640> problem" + }, + { + "start": 2297.589, + "duration": 0.0, + "text": "them pretty basic problem" + }, + { + "start": 2297.599, + "duration": 0.0, + "text": "them pretty basic problem um<00:38:18.880> this<00:38:19.040> is<00:38:19.200> also<00:38:19.440> recursive<00:38:20.800> uh<00:38:21.280> so" + }, + { + "start": 2306.4, + "duration": 0.0, + "text": "so<00:38:27.200> what<00:38:27.440> I<00:38:27.599> want<00:38:27.680> to<00:38:27.760> note<00:38:28.079> here<00:38:28.400> is<00:38:28.640> that<00:38:28.880> both" + }, + { + "start": 2309.109, + "duration": 0.0, + "text": "so what I want to note here is that both" + }, + { + "start": 2309.119, + "duration": 0.0, + "text": "so what I want to note here is that both of<00:38:29.280> these<00:38:30.079> uh<00:38:30.320> exhibit<00:38:30.720> sort<00:38:30.960> of" + }, + { + "start": 2311.829, + "duration": 0.0, + "text": "of these uh exhibit sort of" + }, + { + "start": 2311.839, + "duration": 0.0, + "text": "of these uh exhibit sort of a<00:38:32.160> single<00:38:32.400> pattern<00:38:33.040> that<00:38:33.280> we<00:38:33.440> can<00:38:33.520> think<00:38:33.680> of" + }, + { + "start": 2313.829, + "duration": 0.0, + "text": "a single pattern that we can think of" + }, + { + "start": 2313.839, + "duration": 0.0, + "text": "a single pattern that we can think of which<00:38:34.000> is<00:38:34.160> that<00:38:34.400> if<00:38:34.560> we've<00:38:34.800> got<00:38:34.960> some" + }, + { + "start": 2315.109, + "duration": 0.0, + "text": "which is that if we've got some" + }, + { + "start": 2315.119, + "duration": 0.0, + "text": "which is that if we've got some evaluation<00:38:36.079> you've<00:38:36.400> computed<00:38:36.800> some" + }, + { + "start": 2316.95, + "duration": 0.0, + "text": "evaluation you've computed some" + }, + { + "start": 2316.96, + "duration": 0.0, + "text": "evaluation you've computed some evaluation<00:38:38.320> certain<00:38:38.640> types<00:38:39.119> can<00:38:39.280> produce<00:38:39.599> a" + }, + { + "start": 2319.91, + "duration": 0.0, + "text": "evaluation certain types can produce a" + }, + { + "start": 2319.92, + "duration": 0.0, + "text": "evaluation certain types can produce a set<00:38:40.160> of<00:38:40.400> child<00:38:40.720> evaluations<00:38:41.520> right<00:38:41.680> so<00:38:41.839> in<00:38:42.000> the" + }, + { + "start": 2322.069, + "duration": 0.0, + "text": "set of child evaluations right so in the" + }, + { + "start": 2322.079, + "duration": 0.0, + "text": "set of child evaluations right so in the case<00:38:42.160> of<00:38:42.320> the<00:38:42.480> strruct<00:38:43.599> you<00:38:43.760> produce<00:38:44.079> all<00:38:44.160> the" + }, + { + "start": 2324.31, + "duration": 0.0, + "text": "case of the strruct you produce all the" + }, + { + "start": 2324.32, + "duration": 0.0, + "text": "case of the strruct you produce all the members<00:38:45.119> and<00:38:45.359> if<00:38:45.520> in<00:38:45.760> the<00:38:45.839> case<00:38:45.920> of<00:38:46.079> arrays<00:38:46.640> you" + }, + { + "start": 2326.87, + "duration": 0.0, + "text": "members and if in the case of arrays you" + }, + { + "start": 2326.88, + "duration": 0.0, + "text": "members and if in the case of arrays you produce<00:38:47.119> all<00:38:47.359> of<00:38:47.440> the<00:38:47.920> array<00:38:48.240> elements" + }, + { + "start": 2331.92, + "duration": 0.0, + "text": "um" + }, + { + "start": 2333.589, + "duration": 0.0, + "text": "um" + }, + { + "start": 2333.599, + "duration": 0.0, + "text": "um another<00:38:53.920> common<00:38:54.240> case<00:38:54.560> just<00:38:54.880> before<00:38:55.119> I<00:38:55.280> move" + }, + { + "start": 2335.43, + "duration": 0.0, + "text": "another common case just before I move" + }, + { + "start": 2335.44, + "duration": 0.0, + "text": "another common case just before I move on<00:38:56.000> pointers<00:38:56.880> uh<00:38:57.599> don't<00:38:57.839> always<00:38:58.079> point<00:38:58.240> to" + }, + { + "start": 2338.39, + "duration": 0.0, + "text": "on pointers uh don't always point to" + }, + { + "start": 2338.4, + "duration": 0.0, + "text": "on pointers uh don't always point to strings<00:38:58.960> obviously<00:38:59.280> like<00:38:59.520> sometimes<00:38:59.760> they" + }, + { + "start": 2339.99, + "duration": 0.0, + "text": "strings obviously like sometimes they" + }, + { + "start": 2340.0, + "duration": 0.0, + "text": "strings obviously like sometimes they point<00:39:00.160> to<00:39:00.320> a<00:39:00.480> strruct" + }, + { + "start": 2341.829, + "duration": 0.0, + "text": "point to a strruct" + }, + { + "start": 2341.839, + "duration": 0.0, + "text": "point to a strruct Um<00:39:03.040> so<00:39:03.760> uh<00:39:04.240> in<00:39:04.480> those<00:39:04.720> cases<00:39:05.119> you<00:39:05.280> don't<00:39:05.440> just" + }, + { + "start": 2345.67, + "duration": 0.0, + "text": "Um so uh in those cases you don't just" + }, + { + "start": 2345.68, + "duration": 0.0, + "text": "Um so uh in those cases you don't just want<00:39:05.760> to<00:39:05.920> see<00:39:06.079> like<00:39:06.400> oh<00:39:06.640> my<00:39:06.880> pointer<00:39:07.280> value<00:39:07.599> is" + }, + { + "start": 2347.829, + "duration": 0.0, + "text": "want to see like oh my pointer value is" + }, + { + "start": 2347.839, + "duration": 0.0, + "text": "want to see like oh my pointer value is like<00:39:08.720> that<00:39:09.119> it's<00:39:09.280> like<00:39:09.440> you<00:39:09.680> want<00:39:09.760> to<00:39:09.839> see<00:39:09.920> what" + }, + { + "start": 2350.069, + "duration": 0.0, + "text": "like that it's like you want to see what" + }, + { + "start": 2350.079, + "duration": 0.0, + "text": "like that it's like you want to see what it's<00:39:10.320> pointing<00:39:10.560> to<00:39:10.880> often<00:39:11.599> um<00:39:11.680> other<00:39:11.920> than" + }, + { + "start": 2352.15, + "duration": 0.0, + "text": "it's pointing to often um other than" + }, + { + "start": 2352.16, + "duration": 0.0, + "text": "it's pointing to often um other than strruct<00:39:12.480> memory.<00:39:12.720> So<00:39:12.880> in<00:39:13.040> that<00:39:13.200> case<00:39:13.920> uh" + }, + { + "start": 2353.99, + "duration": 0.0, + "text": "strruct memory. So in that case uh" + }, + { + "start": 2354.0, + "duration": 0.0, + "text": "strruct memory. So in that case uh that's<00:39:14.240> also<00:39:14.480> another<00:39:14.800> case<00:39:15.040> of<00:39:15.280> expansion" + }, + { + "start": 2357.27, + "duration": 0.0, + "text": "that's also another case of expansion" + }, + { + "start": 2357.28, + "duration": 0.0, + "text": "that's also another case of expansion uh<00:39:17.440> you<00:39:17.599> just<00:39:17.760> dreference<00:39:18.320> the<00:39:18.480> pointer<00:39:18.880> you" + }, + { + "start": 2359.109, + "duration": 0.0, + "text": "uh you just dreference the pointer you" + }, + { + "start": 2359.119, + "duration": 0.0, + "text": "uh you just dreference the pointer you that's<00:39:19.359> your<00:39:19.680> child<00:39:20.000> evaluation<00:39:20.560> basically" + }, + { + "start": 2361.349, + "duration": 0.0, + "text": "that's your child evaluation basically" + }, + { + "start": 2361.359, + "duration": 0.0, + "text": "that's your child evaluation basically and<00:39:21.599> then<00:39:21.760> you<00:39:22.000> actually<00:39:22.240> do<00:39:22.320> the<00:39:22.480> recur" + }, + { + "start": 2362.87, + "duration": 0.0, + "text": "and then you actually do the recur" + }, + { + "start": 2362.88, + "duration": 0.0, + "text": "and then you actually do the recur recursive<00:39:23.359> path.<00:39:23.680> So<00:39:23.839> if<00:39:24.000> you're<00:39:24.079> pointing<00:39:24.320> at" + }, + { + "start": 2364.47, + "duration": 0.0, + "text": "recursive path. So if you're pointing at" + }, + { + "start": 2364.48, + "duration": 0.0, + "text": "recursive path. So if you're pointing at an<00:39:24.640> integer<00:39:24.960> you<00:39:25.119> print<00:39:25.200> the<00:39:25.359> integer.<00:39:25.599> If" + }, + { + "start": 2365.67, + "duration": 0.0, + "text": "an integer you print the integer. If" + }, + { + "start": 2365.68, + "duration": 0.0, + "text": "an integer you print the integer. If you're<00:39:25.760> pointing<00:39:26.000> out<00:39:26.079> the<00:39:26.160> array<00:39:26.400> you<00:39:26.480> print" + }, + { + "start": 2366.63, + "duration": 0.0, + "text": "you're pointing out the array you print" + }, + { + "start": 2366.64, + "duration": 0.0, + "text": "you're pointing out the array you print the<00:39:26.800> array.<00:39:27.119> so<00:39:27.280> on<00:39:27.440> and<00:39:27.599> so<00:39:27.680> forth.<00:39:27.920> It's<00:39:28.000> just" + }, + { + "start": 2368.069, + "duration": 0.0, + "text": "the array. so on and so forth. It's just" + }, + { + "start": 2368.079, + "duration": 0.0, + "text": "the array. so on and so forth. It's just one<00:39:28.320> layer<00:39:28.400> of<00:39:28.480> interaction<00:39:28.960> removed,<00:39:29.440> right?" + }, + { + "start": 2370.63, + "duration": 0.0, + "text": "one layer of interaction removed, right?" + }, + { + "start": 2370.64, + "duration": 0.0, + "text": "one layer of interaction removed, right? So<00:39:30.800> that<00:39:30.960> gives<00:39:31.119> us<00:39:31.280> all<00:39:31.359> the<00:39:31.520> building<00:39:31.760> blocks" + }, + { + "start": 2371.99, + "duration": 0.0, + "text": "So that gives us all the building blocks" + }, + { + "start": 2372.0, + "duration": 0.0, + "text": "So that gives us all the building blocks we<00:39:32.240> need<00:39:32.960> actually<00:39:33.440> to<00:39:33.680> build<00:39:33.839> a<00:39:34.000> very<00:39:34.160> simple" + }, + { + "start": 2374.39, + "duration": 0.0, + "text": "we need actually to build a very simple" + }, + { + "start": 2374.4, + "duration": 0.0, + "text": "we need actually to build a very simple watch<00:39:34.720> window." + }, + { + "start": 2376.47, + "duration": 0.0, + "text": "watch window." + }, + { + "start": 2376.48, + "duration": 0.0, + "text": "watch window. Uh<00:39:36.720> you<00:39:36.880> input<00:39:37.200> expressions<00:39:37.599> and<00:39:37.760> then<00:39:37.920> you" + }, + { + "start": 2378.069, + "duration": 0.0, + "text": "Uh you input expressions and then you" + }, + { + "start": 2378.079, + "duration": 0.0, + "text": "Uh you input expressions and then you just<00:39:38.480> stringify<00:39:39.040> them.<00:39:39.359> You<00:39:39.520> know,<00:39:39.599> they've" + }, + { + "start": 2379.829, + "duration": 0.0, + "text": "just stringify them. You know, they've" + }, + { + "start": 2379.839, + "duration": 0.0, + "text": "just stringify them. You know, they've got<00:39:40.000> type<00:39:40.240> info.<00:39:40.640> You<00:39:40.800> could<00:39:40.880> write<00:39:41.040> a<00:39:41.200> very" + }, + { + "start": 2381.349, + "duration": 0.0, + "text": "got type info. You could write a very" + }, + { + "start": 2381.359, + "duration": 0.0, + "text": "got type info. You could write a very simple<00:39:42.160> uh<00:39:42.400> stringification<00:39:43.440> path,<00:39:43.760> if<00:39:44.000> you" + }, + { + "start": 2384.069, + "duration": 0.0, + "text": "simple uh stringification path, if you" + }, + { + "start": 2384.079, + "duration": 0.0, + "text": "simple uh stringification path, if you will,<00:39:44.720> uh<00:39:44.880> for<00:39:45.119> the<00:39:45.359> type.<00:39:46.480> There<00:39:46.640> you<00:39:46.800> go." + }, + { + "start": 2388.63, + "duration": 0.0, + "text": "will, uh for the type. There you go." + }, + { + "start": 2388.64, + "duration": 0.0, + "text": "will, uh for the type. There you go. Um<00:39:49.599> that<00:39:49.839> gives<00:39:50.000> you<00:39:50.079> a<00:39:50.160> watch<00:39:50.400> window.<00:39:50.960> But<00:39:51.119> a" + }, + { + "start": 2391.349, + "duration": 0.0, + "text": "Um that gives you a watch window. But a" + }, + { + "start": 2391.359, + "duration": 0.0, + "text": "Um that gives you a watch window. But a very<00:39:51.520> useful<00:39:51.839> property<00:39:52.079> of<00:39:52.240> a<00:39:52.400> watch<00:39:52.640> window" + }, + { + "start": 2393.03, + "duration": 0.0, + "text": "very useful property of a watch window" + }, + { + "start": 2393.04, + "duration": 0.0, + "text": "very useful property of a watch window is<00:39:53.359> not<00:39:53.680> only<00:39:53.839> that<00:39:54.079> you<00:39:54.240> can<00:39:54.640> enter<00:39:54.880> an" + }, + { + "start": 2395.109, + "duration": 0.0, + "text": "is not only that you can enter an" + }, + { + "start": 2395.119, + "duration": 0.0, + "text": "is not only that you can enter an expression,<00:39:55.920> but<00:39:56.079> that<00:39:56.320> you<00:39:56.480> can<00:39:56.640> also<00:39:57.440> expand" + }, + { + "start": 2397.829, + "duration": 0.0, + "text": "expression, but that you can also expand" + }, + { + "start": 2397.839, + "duration": 0.0, + "text": "expression, but that you can also expand them." + }, + { + "start": 2399.91, + "duration": 0.0, + "text": "them." + }, + { + "start": 2399.92, + "duration": 0.0, + "text": "them. So<00:40:00.320> this<00:40:00.560> is<00:40:00.720> really<00:40:01.119> useful<00:40:01.520> because<00:40:01.920> you" + }, + { + "start": 2401.99, + "duration": 0.0, + "text": "So this is really useful because you" + }, + { + "start": 2402.0, + "duration": 0.0, + "text": "So this is really useful because you know<00:40:02.160> more<00:40:02.320> often<00:40:02.560> than<00:40:02.720> not<00:40:03.040> like<00:40:03.359> that" + }, + { + "start": 2403.589, + "duration": 0.0, + "text": "know more often than not like that" + }, + { + "start": 2403.599, + "duration": 0.0, + "text": "know more often than not like that single<00:40:04.000> line<00:40:04.240> visualization<00:40:04.800> path.<00:40:05.200> It's" + }, + { + "start": 2405.43, + "duration": 0.0, + "text": "single line visualization path. It's" + }, + { + "start": 2405.44, + "duration": 0.0, + "text": "single line visualization path. It's like<00:40:05.680> you've<00:40:06.000> got<00:40:06.640> 256<00:40:07.440> elements<00:40:07.680> in<00:40:07.839> an<00:40:08.000> array" + }, + { + "start": 2408.23, + "duration": 0.0, + "text": "like you've got 256 elements in an array" + }, + { + "start": 2408.24, + "duration": 0.0, + "text": "like you've got 256 elements in an array or<00:40:08.480> or<00:40:08.640> whatever<00:40:09.440> and<00:40:09.760> you<00:40:09.920> only<00:40:10.160> see<00:40:10.240> the" + }, + { + "start": 2410.47, + "duration": 0.0, + "text": "or or whatever and you only see the" + }, + { + "start": 2410.48, + "duration": 0.0, + "text": "or or whatever and you only see the first<00:40:10.640> eight.<00:40:11.040> You<00:40:11.200> don't<00:40:11.280> want<00:40:11.359> to<00:40:11.520> be<00:40:11.680> like" + }, + { + "start": 2411.99, + "duration": 0.0, + "text": "first eight. You don't want to be like" + }, + { + "start": 2412.0, + "duration": 0.0, + "text": "first eight. You don't want to be like okay<00:40:12.320> now<00:40:12.480> evaluate<00:40:13.040> array<00:40:13.359> plus<00:40:13.760> 8<00:40:14.079> and<00:40:14.240> then" + }, + { + "start": 2414.39, + "duration": 0.0, + "text": "okay now evaluate array plus 8 and then" + }, + { + "start": 2414.4, + "duration": 0.0, + "text": "okay now evaluate array plus 8 and then array<00:40:14.720> plus<00:40:15.040> 16<00:40:15.280> and<00:40:15.440> array<00:40:15.760> plus<00:40:16.000> 32.<00:40:16.400> It's" + }, + { + "start": 2416.55, + "duration": 0.0, + "text": "array plus 16 and array plus 32. It's" + }, + { + "start": 2416.56, + "duration": 0.0, + "text": "array plus 16 and array plus 32. It's like<00:40:16.640> a<00:40:16.800> whole<00:40:16.880> nightmare,<00:40:17.359> right?<00:40:18.480> Um,<00:40:19.920> same" + }, + { + "start": 2420.15, + "duration": 0.0, + "text": "like a whole nightmare, right? Um, same" + }, + { + "start": 2420.16, + "duration": 0.0, + "text": "like a whole nightmare, right? Um, same thing<00:40:20.320> with<00:40:20.480> strrus<00:40:21.280> especially<00:40:22.079> you<00:40:22.320> know" + }, + { + "start": 2422.87, + "duration": 0.0, + "text": "thing with strrus especially you know" + }, + { + "start": 2422.88, + "duration": 0.0, + "text": "thing with strrus especially you know you<00:40:23.119> don't<00:40:23.200> want<00:40:23.359> to<00:40:23.440> force<00:40:23.760> the<00:40:23.920> user<00:40:24.240> to<00:40:24.400> like" + }, + { + "start": 2424.55, + "duration": 0.0, + "text": "you don't want to force the user to like" + }, + { + "start": 2424.56, + "duration": 0.0, + "text": "you don't want to force the user to like think<00:40:24.720> of<00:40:24.960> like<00:40:25.440> oh<00:40:25.760> like<00:40:25.920> what<00:40:26.160> was<00:40:26.240> the<00:40:26.400> fifth" + }, + { + "start": 2426.63, + "duration": 0.0, + "text": "think of like oh like what was the fifth" + }, + { + "start": 2426.64, + "duration": 0.0, + "text": "think of like oh like what was the fifth element<00:40:26.960> of<00:40:27.200> entity<00:40:27.680> like<00:40:27.839> let<00:40:28.000> me<00:40:28.079> put<00:40:28.160> that" + }, + { + "start": 2428.31, + "duration": 0.0, + "text": "element of entity like let me put that" + }, + { + "start": 2428.32, + "duration": 0.0, + "text": "element of entity like let me put that in<00:40:28.480> as<00:40:28.640> a<00:40:28.800> second<00:40:28.960> expression<00:40:29.520> that<00:40:29.680> just" + }, + { + "start": 2429.829, + "duration": 0.0, + "text": "in as a second expression that just" + }, + { + "start": 2429.839, + "duration": 0.0, + "text": "in as a second expression that just sucks.<00:40:30.160> So<00:40:30.320> expansion<00:40:30.960> very<00:40:31.280> easy<00:40:31.680> design" + }, + { + "start": 2432.069, + "duration": 0.0, + "text": "sucks. So expansion very easy design" + }, + { + "start": 2432.079, + "duration": 0.0, + "text": "sucks. So expansion very easy design extension<00:40:32.720> we<00:40:32.960> could<00:40:33.040> do<00:40:33.119> to<00:40:33.280> the<00:40:33.359> watch" + }, + { + "start": 2433.589, + "duration": 0.0, + "text": "extension we could do to the watch" + }, + { + "start": 2433.599, + "duration": 0.0, + "text": "extension we could do to the watch window<00:40:33.839> to<00:40:33.920> just<00:40:34.079> speed<00:40:34.320> those<00:40:34.480> things<00:40:34.640> up<00:40:34.800> a" + }, + { + "start": 2434.95, + "duration": 0.0, + "text": "window to just speed those things up a" + }, + { + "start": 2434.96, + "duration": 0.0, + "text": "window to just speed those things up a little<00:40:35.040> bit<00:40:35.520> in<00:40:35.760> those<00:40:35.920> cases<00:40:36.240> if<00:40:36.400> the<00:40:36.560> user<00:40:36.720> is" + }, + { + "start": 2436.87, + "duration": 0.0, + "text": "little bit in those cases if the user is" + }, + { + "start": 2436.88, + "duration": 0.0, + "text": "little bit in those cases if the user is looking<00:40:37.119> for<00:40:37.359> entity.position<00:40:38.320> they<00:40:38.480> don't" + }, + { + "start": 2438.55, + "duration": 0.0, + "text": "looking for entity.position they don't" + }, + { + "start": 2438.56, + "duration": 0.0, + "text": "looking for entity.position they don't even<00:40:38.720> have<00:40:38.800> to<00:40:38.960> type<00:40:39.200> entity.position<00:40:40.160> is" + }, + { + "start": 2440.39, + "duration": 0.0, + "text": "even have to type entity.position is" + }, + { + "start": 2440.4, + "duration": 0.0, + "text": "even have to type entity.position is just<00:40:40.560> there.<00:40:40.960> So<00:40:41.119> that's<00:40:41.280> even<00:40:41.520> faster," + }, + { + "start": 2441.91, + "duration": 0.0, + "text": "just there. So that's even faster," + }, + { + "start": 2441.92, + "duration": 0.0, + "text": "just there. So that's even faster, right,<00:40:42.160> than<00:40:42.320> having<00:40:42.560> to<00:40:42.720> do<00:40:42.880> like<00:40:44.000> the<00:40:44.320> print" + }, + { + "start": 2444.87, + "duration": 0.0, + "text": "right, than having to do like the print" + }, + { + "start": 2444.88, + "duration": 0.0, + "text": "right, than having to do like the print uh<00:40:45.040> sort<00:40:45.200> of<00:40:45.280> the<00:40:45.520> print<00:40:45.920> writing<00:40:46.320> even" + }, + { + "start": 2446.55, + "duration": 0.0, + "text": "uh sort of the print writing even" + }, + { + "start": 2446.56, + "duration": 0.0, + "text": "uh sort of the print writing even writing<00:40:46.880> the<00:40:47.119> expression<00:40:47.440> that<00:40:47.599> you<00:40:47.760> want<00:40:47.839> to" + }, + { + "start": 2447.91, + "duration": 0.0, + "text": "writing the expression that you want to" + }, + { + "start": 2447.92, + "duration": 0.0, + "text": "writing the expression that you want to print.<00:40:48.320> We<00:40:48.480> don't<00:40:48.640> even<00:40:48.800> have<00:40:48.960> to<00:40:49.119> do<00:40:49.200> that." + }, + { + "start": 2451.829, + "duration": 0.0, + "text": "print. We don't even have to do that." + }, + { + "start": 2451.839, + "duration": 0.0, + "text": "print. We don't even have to do that. Lucky<00:40:52.160> for<00:40:52.320> us,<00:40:52.960> we<00:40:53.200> already<00:40:53.359> know<00:40:53.520> how<00:40:53.680> to" + }, + { + "start": 2453.829, + "duration": 0.0, + "text": "Lucky for us, we already know how to" + }, + { + "start": 2453.839, + "duration": 0.0, + "text": "Lucky for us, we already know how to expand<00:40:54.079> an<00:40:54.320> evaluation.<00:40:55.680> That's<00:40:55.920> why<00:40:56.000> I<00:40:56.160> made" + }, + { + "start": 2456.309, + "duration": 0.0, + "text": "expand an evaluation. That's why I made" + }, + { + "start": 2456.319, + "duration": 0.0, + "text": "expand an evaluation. That's why I made that<00:40:56.480> note.<00:40:57.359> It's<00:40:57.680> you<00:40:57.920> take<00:40:58.000> an<00:40:58.160> evaluation" + }, + { + "start": 2458.63, + "duration": 0.0, + "text": "that note. It's you take an evaluation" + }, + { + "start": 2458.64, + "duration": 0.0, + "text": "that note. It's you take an evaluation and<00:40:58.800> you<00:40:58.960> produce<00:40:59.119> a<00:40:59.280> list<00:40:59.440> of<00:40:59.520> evaluations." + }, + { + "start": 2460.15, + "duration": 0.0, + "text": "and you produce a list of evaluations." + }, + { + "start": 2460.16, + "duration": 0.0, + "text": "and you produce a list of evaluations. You<00:41:00.319> need<00:41:00.480> it<00:41:00.800> for<00:41:01.680> the<00:41:02.240> uh<00:41:02.640> for<00:41:02.960> the<00:41:03.200> recursive" + }, + { + "start": 2463.91, + "duration": 0.0, + "text": "You need it for the uh for the recursive" + }, + { + "start": 2463.92, + "duration": 0.0, + "text": "You need it for the uh for the recursive children<00:41:04.319> walking<00:41:04.720> case<00:41:05.040> when<00:41:05.280> you<00:41:05.599> take" + }, + { + "start": 2466.309, + "duration": 0.0, + "text": "children walking case when you take" + }, + { + "start": 2466.319, + "duration": 0.0, + "text": "children walking case when you take structures<00:41:06.640> or<00:41:06.880> arrays<00:41:07.200> and<00:41:07.359> turn<00:41:07.520> them<00:41:07.760> into" + }, + { + "start": 2468.069, + "duration": 0.0, + "text": "structures or arrays and turn them into" + }, + { + "start": 2468.079, + "duration": 0.0, + "text": "structures or arrays and turn them into a<00:41:08.319> string,<00:41:08.720> right?" + }, + { + "start": 2471.839, + "duration": 0.0, + "text": "um<00:41:12.240> you<00:41:12.480> can<00:41:12.640> use<00:41:12.800> that<00:41:13.040> same<00:41:13.200> path<00:41:13.520> to<00:41:13.760> produce" + }, + { + "start": 2473.99, + "duration": 0.0, + "text": "um you can use that same path to produce" + }, + { + "start": 2474.0, + "duration": 0.0, + "text": "um you can use that same path to produce a<00:41:14.160> tree<00:41:14.319> of<00:41:14.400> evaluations.<00:41:15.440> So<00:41:16.000> you<00:41:16.160> know<00:41:16.240> if<00:41:16.400> I" + }, + { + "start": 2476.55, + "duration": 0.0, + "text": "a tree of evaluations. So you know if I" + }, + { + "start": 2476.56, + "duration": 0.0, + "text": "a tree of evaluations. So you know if I evaluate<00:41:16.880> the<00:41:17.040> root<00:41:17.280> level<00:41:17.520> entity<00:41:18.160> that" + }, + { + "start": 2478.39, + "duration": 0.0, + "text": "evaluate the root level entity that" + }, + { + "start": 2478.4, + "duration": 0.0, + "text": "evaluate the root level entity that produces<00:41:18.720> a<00:41:18.960> list<00:41:19.119> of<00:41:19.280> subealuations<00:41:20.000> which" + }, + { + "start": 2480.15, + "duration": 0.0, + "text": "produces a list of subealuations which" + }, + { + "start": 2480.16, + "duration": 0.0, + "text": "produces a list of subealuations which are<00:41:20.480> named<00:41:20.880> position<00:41:21.359> velocity<00:41:21.680> in<00:41:21.839> this<00:41:22.000> case" + }, + { + "start": 2482.87, + "duration": 0.0, + "text": "are named position velocity in this case" + }, + { + "start": 2482.88, + "duration": 0.0, + "text": "are named position velocity in this case um<00:41:23.280> and<00:41:23.440> I<00:41:23.599> can<00:41:23.760> build<00:41:23.920> the<00:41:24.079> tree<00:41:24.720> that<00:41:25.040> way<00:41:26.000> but" + }, + { + "start": 2486.23, + "duration": 0.0, + "text": "um and I can build the tree that way but" + }, + { + "start": 2486.24, + "duration": 0.0, + "text": "um and I can build the tree that way but there's<00:41:26.400> a<00:41:26.560> problem." + }, + { + "start": 2488.23, + "duration": 0.0, + "text": "there's a problem." + }, + { + "start": 2488.24, + "duration": 0.0, + "text": "there's a problem. Let's<00:41:28.480> say<00:41:28.560> we've<00:41:28.800> got<00:41:28.880> an<00:41:29.040> array<00:41:29.520> of<00:41:29.760> 1" + }, + { + "start": 2489.91, + "duration": 0.0, + "text": "Let's say we've got an array of 1" + }, + { + "start": 2489.92, + "duration": 0.0, + "text": "Let's say we've got an array of 1 billion<00:41:30.319> integers." + }, + { + "start": 2494.88, + "duration": 0.0, + "text": "I<00:41:35.040> evaluate<00:41:35.520> it,<00:41:35.760> turn<00:41:35.920> it<00:41:36.079> into<00:41:36.319> a<00:41:36.480> string," + }, + { + "start": 2499.109, + "duration": 0.0, + "text": "I evaluate it, turn it into a string," + }, + { + "start": 2499.119, + "duration": 0.0, + "text": "I evaluate it, turn it into a string, or<00:41:39.440> in<00:41:39.760> general,<00:41:40.240> if<00:41:40.480> I<00:41:40.640> expand<00:41:40.880> it,<00:41:41.040> like<00:41:41.200> I'm" + }, + { + "start": 2501.43, + "duration": 0.0, + "text": "or in general, if I expand it, like I'm" + }, + { + "start": 2501.44, + "duration": 0.0, + "text": "or in general, if I expand it, like I'm trying<00:41:41.520> to<00:41:42.319> open<00:41:42.640> it<00:41:42.800> in<00:41:43.280> watch<00:41:43.599> window." + }, + { + "start": 2504.15, + "duration": 0.0, + "text": "trying to open it in watch window." + }, + { + "start": 2504.16, + "duration": 0.0, + "text": "trying to open it in watch window. Either<00:41:44.480> case,<00:41:45.119> I<00:41:45.359> have<00:41:45.440> to<00:41:45.599> produce<00:41:45.839> a<00:41:46.000> list<00:41:46.079> of" + }, + { + "start": 2506.23, + "duration": 0.0, + "text": "Either case, I have to produce a list of" + }, + { + "start": 2506.24, + "duration": 0.0, + "text": "Either case, I have to produce a list of child<00:41:46.560> evaluations" + }, + { + "start": 2508.95, + "duration": 0.0, + "text": "child evaluations" + }, + { + "start": 2508.96, + "duration": 0.0, + "text": "child evaluations that<00:41:49.200> requires<00:41:49.520> 1<00:41:49.680> billion<00:41:50.000> expansions." + }, + { + "start": 2511.109, + "duration": 0.0, + "text": "that requires 1 billion expansions." + }, + { + "start": 2511.119, + "duration": 0.0, + "text": "that requires 1 billion expansions. Unsurprisingly,<00:41:52.319> now<00:41:52.560> you<00:41:52.800> may<00:41:52.960> think<00:41:53.040> that" + }, + { + "start": 2513.27, + "duration": 0.0, + "text": "Unsurprisingly, now you may think that" + }, + { + "start": 2513.28, + "duration": 0.0, + "text": "Unsurprisingly, now you may think that that's<00:41:53.440> like<00:41:53.680> very<00:41:53.920> contrived<00:41:54.640> or<00:41:54.800> or" + }, + { + "start": 2515.109, + "duration": 0.0, + "text": "that's like very contrived or or" + }, + { + "start": 2515.119, + "duration": 0.0, + "text": "that's like very contrived or or whatever,<00:41:55.599> but<00:41:55.839> remember<00:41:56.079> that<00:41:56.240> the<00:41:56.400> debugger" + }, + { + "start": 2516.79, + "duration": 0.0, + "text": "whatever, but remember that the debugger" + }, + { + "start": 2516.8, + "duration": 0.0, + "text": "whatever, but remember that the debugger needs<00:41:56.960> to<00:41:57.119> work<00:41:57.200> with<00:41:58.000> uh<00:41:58.240> needs<00:41:58.400> to<00:41:58.480> work" + }, + { + "start": 2518.63, + "duration": 0.0, + "text": "needs to work with uh needs to work" + }, + { + "start": 2518.64, + "duration": 0.0, + "text": "needs to work with uh needs to work gracefully<00:41:59.119> with<00:41:59.359> arbitrary<00:41:59.839> code.<00:42:00.319> Doesn't" + }, + { + "start": 2521.109, + "duration": 0.0, + "text": "gracefully with arbitrary code. Doesn't" + }, + { + "start": 2521.119, + "duration": 0.0, + "text": "gracefully with arbitrary code. Doesn't shouldn't<00:42:01.440> matter<00:42:01.680> what<00:42:01.839> the<00:42:02.000> user<00:42:02.240> actually" + }, + { + "start": 2522.47, + "duration": 0.0, + "text": "shouldn't matter what the user actually" + }, + { + "start": 2522.48, + "duration": 0.0, + "text": "shouldn't matter what the user actually puts.<00:42:02.880> If<00:42:03.040> it's<00:42:03.200> complete<00:42:03.440> bogus,<00:42:03.839> the" + }, + { + "start": 2523.99, + "duration": 0.0, + "text": "puts. If it's complete bogus, the" + }, + { + "start": 2524.0, + "duration": 0.0, + "text": "puts. If it's complete bogus, the debugger<00:42:04.400> should<00:42:04.640> at<00:42:04.640> least<00:42:05.200> handle<00:42:05.520> it" + }, + { + "start": 2525.67, + "duration": 0.0, + "text": "debugger should at least handle it" + }, + { + "start": 2525.68, + "duration": 0.0, + "text": "debugger should at least handle it gracefully.<00:42:06.720> Furthermore,<00:42:07.280> if<00:42:07.440> you<00:42:07.520> ever" + }, + { + "start": 2527.75, + "duration": 0.0, + "text": "gracefully. Furthermore, if you ever" + }, + { + "start": 2527.76, + "duration": 0.0, + "text": "gracefully. Furthermore, if you ever like<00:42:08.000> generate<00:42:08.480> an<00:42:08.720> array<00:42:09.040> type<00:42:09.440> and<00:42:09.599> you're" + }, + { + "start": 2529.829, + "duration": 0.0, + "text": "like generate an array type and you're" + }, + { + "start": 2529.839, + "duration": 0.0, + "text": "like generate an array type and you're saying<00:42:09.920> like,<00:42:10.160> oh,<00:42:10.319> the<00:42:10.480> size<00:42:10.640> of<00:42:10.800> this<00:42:10.960> array" + }, + { + "start": 2531.19, + "duration": 0.0, + "text": "saying like, oh, the size of this array" + }, + { + "start": 2531.2, + "duration": 0.0, + "text": "saying like, oh, the size of this array is<00:42:11.440> actually<00:42:11.680> sized<00:42:12.000> by<00:42:12.160> this<00:42:12.400> variable<00:42:12.720> over" + }, + { + "start": 2532.95, + "duration": 0.0, + "text": "is actually sized by this variable over" + }, + { + "start": 2532.96, + "duration": 0.0, + "text": "is actually sized by this variable over here<00:42:13.520> and<00:42:13.760> that<00:42:13.920> variable<00:42:14.160> is<00:42:14.319> not" + }, + { + "start": 2534.47, + "duration": 0.0, + "text": "here and that variable is not" + }, + { + "start": 2534.48, + "duration": 0.0, + "text": "here and that variable is not initialized<00:42:15.040> at<00:42:15.200> some<00:42:15.440> point<00:42:15.520> in<00:42:15.760> the" + }, + { + "start": 2535.91, + "duration": 0.0, + "text": "initialized at some point in the" + }, + { + "start": 2535.92, + "duration": 0.0, + "text": "initialized at some point in the program.<00:42:16.240> It'll<00:42:16.480> be<00:42:16.560> complete<00:42:16.880> bogus.<00:42:17.280> It'll" + }, + { + "start": 2537.51, + "duration": 0.0, + "text": "program. It'll be complete bogus. It'll" + }, + { + "start": 2537.52, + "duration": 0.0, + "text": "program. It'll be complete bogus. It'll it<00:42:17.760> could<00:42:17.839> be<00:42:18.000> something<00:42:18.160> like<00:42:18.319> 1<00:42:18.560> billion<00:42:19.280> and" + }, + { + "start": 2539.91, + "duration": 0.0, + "text": "it could be something like 1 billion and" + }, + { + "start": 2539.92, + "duration": 0.0, + "text": "it could be something like 1 billion and you<00:42:20.079> know<00:42:20.240> then<00:42:20.400> you<00:42:20.560> have<00:42:20.640> to<00:42:20.800> handle<00:42:20.960> it" + }, + { + "start": 2541.19, + "duration": 0.0, + "text": "you know then you have to handle it" + }, + { + "start": 2541.2, + "duration": 0.0, + "text": "you know then you have to handle it anyways,<00:42:21.680> right?" + }, + { + "start": 2543.19, + "duration": 0.0, + "text": "anyways, right?" + }, + { + "start": 2543.2, + "duration": 0.0, + "text": "anyways, right? This<00:42:23.359> problem<00:42:23.599> doesn't<00:42:23.839> stop<00:42:24.079> there.<00:42:25.040> Let's" + }, + { + "start": 2545.27, + "duration": 0.0, + "text": "This problem doesn't stop there. Let's" + }, + { + "start": 2545.28, + "duration": 0.0, + "text": "This problem doesn't stop there. Let's say<00:42:25.359> you've<00:42:25.520> got<00:42:25.599> a<00:42:25.760> structure<00:42:26.000> like<00:42:26.160> this," + }, + { + "start": 2546.39, + "duration": 0.0, + "text": "say you've got a structure like this," + }, + { + "start": 2546.4, + "duration": 0.0, + "text": "say you've got a structure like this, some<00:42:26.640> linked<00:42:26.960> list<00:42:27.200> node,<00:42:27.680> got<00:42:27.839> a<00:42:28.000> next" + }, + { + "start": 2548.23, + "duration": 0.0, + "text": "some linked list node, got a next" + }, + { + "start": 2548.24, + "duration": 0.0, + "text": "some linked list node, got a next pointer<00:42:28.560> in<00:42:28.720> x<00:42:28.880> and<00:42:29.040> y<00:42:29.599> in<00:42:29.920> 32.<00:42:31.359> Um" + }, + { + "start": 2555.119, + "duration": 0.0, + "text": "uh<00:42:36.319> whoops.<00:42:37.680> So<00:42:38.079> let's<00:42:38.319> walk<00:42:38.480> through<00:42:38.640> the" + }, + { + "start": 2558.79, + "duration": 0.0, + "text": "uh whoops. So let's walk through the" + }, + { + "start": 2558.8, + "duration": 0.0, + "text": "uh whoops. So let's walk through the steps<00:42:38.960> to<00:42:39.280> actually<00:42:39.520> visualize<00:42:39.920> it.<00:42:40.079> We're" + }, + { + "start": 2560.309, + "duration": 0.0, + "text": "steps to actually visualize it. We're" + }, + { + "start": 2560.319, + "duration": 0.0, + "text": "steps to actually visualize it. We're evaluating<00:42:40.720> node.<00:42:41.040> We<00:42:41.119> want<00:42:41.200> to<00:42:41.280> turn<00:42:41.440> it<00:42:41.599> into" + }, + { + "start": 2561.75, + "duration": 0.0, + "text": "evaluating node. We want to turn it into" + }, + { + "start": 2561.76, + "duration": 0.0, + "text": "evaluating node. We want to turn it into a<00:42:41.920> string.<00:42:42.640> Whoops.<00:42:43.200> That<00:42:43.680> goes<00:42:43.920> through<00:42:44.079> all" + }, + { + "start": 2564.23, + "duration": 0.0, + "text": "a string. Whoops. That goes through all" + }, + { + "start": 2564.24, + "duration": 0.0, + "text": "a string. Whoops. That goes through all I<00:42:44.400> guess<00:42:44.480> I<00:42:44.640> could<00:42:44.720> just<00:42:44.880> do<00:42:44.960> that.<00:42:45.200> That's" + }, + { + "start": 2565.349, + "duration": 0.0, + "text": "I guess I could just do that. That's" + }, + { + "start": 2565.359, + "duration": 0.0, + "text": "I guess I could just do that. That's that's<00:42:45.680> fine.<00:42:46.079> Step<00:42:46.319> one,<00:42:46.560> push<00:42:46.720> a<00:42:46.880> left" + }, + { + "start": 2567.109, + "duration": 0.0, + "text": "that's fine. Step one, push a left" + }, + { + "start": 2567.119, + "duration": 0.0, + "text": "that's fine. Step one, push a left brace,<00:42:47.440> descend<00:42:47.839> to<00:42:47.920> next,<00:42:48.160> push<00:42:48.319> string<00:42:48.480> of" + }, + { + "start": 2568.55, + "duration": 0.0, + "text": "brace, descend to next, push string of" + }, + { + "start": 2568.56, + "duration": 0.0, + "text": "brace, descend to next, push string of x,<00:42:48.720> push<00:42:48.880> string<00:42:49.119> of<00:42:49.200> y," + }, + { + "start": 2570.95, + "duration": 0.0, + "text": "x, push string of y," + }, + { + "start": 2570.96, + "duration": 0.0, + "text": "x, push string of y, and<00:42:51.119> then<00:42:51.280> we<00:42:51.440> wrap<00:42:51.599> it<00:42:51.680> all<00:42:51.760> up<00:42:51.920> with<00:42:52.000> a" + }, + { + "start": 2572.15, + "duration": 0.0, + "text": "and then we wrap it all up with a" + }, + { + "start": 2572.16, + "duration": 0.0, + "text": "and then we wrap it all up with a closing<00:42:52.400> brace.<00:42:52.720> Right.<00:42:53.280> Problem<00:42:53.520> here<00:42:53.680> is" + }, + { + "start": 2573.829, + "duration": 0.0, + "text": "closing brace. Right. Problem here is" + }, + { + "start": 2573.839, + "duration": 0.0, + "text": "closing brace. Right. Problem here is that<00:42:54.000> that<00:42:54.319> is<00:42:54.560> recursive.<00:42:55.680> So<00:42:56.880> um<00:42:57.599> begins<00:42:58.000> the" + }, + { + "start": 2578.23, + "duration": 0.0, + "text": "that that is recursive. So um begins the" + }, + { + "start": 2578.24, + "duration": 0.0, + "text": "that that is recursive. So um begins the entire<00:42:58.640> process<00:42:58.960> again<00:42:59.200> and<00:42:59.440> then<00:42:59.599> it<00:42:59.760> just" + }, + { + "start": 2579.91, + "duration": 0.0, + "text": "entire process again and then it just" + }, + { + "start": 2579.92, + "duration": 0.0, + "text": "entire process again and then it just descends<00:43:00.240> and<00:43:00.400> descends<00:43:00.720> and<00:43:00.880> descends." + }, + { + "start": 2581.67, + "duration": 0.0, + "text": "descends and descends and descends." + }, + { + "start": 2581.68, + "duration": 0.0, + "text": "descends and descends and descends. Maybe<00:43:01.920> you're<00:43:02.160> like<00:43:02.720> I<00:43:02.960> know<00:43:03.040> the<00:43:03.280> solution" + }, + { + "start": 2583.67, + "duration": 0.0, + "text": "Maybe you're like I know the solution" + }, + { + "start": 2583.68, + "duration": 0.0, + "text": "Maybe you're like I know the solution stop<00:43:04.000> when<00:43:04.079> you<00:43:04.240> hit<00:43:04.319> a<00:43:04.400> null<00:43:04.720> pointer<00:43:05.760> can't" + }, + { + "start": 2586.069, + "duration": 0.0, + "text": "stop when you hit a null pointer can't" + }, + { + "start": 2586.079, + "duration": 0.0, + "text": "stop when you hit a null pointer can't do<00:43:06.240> that.<00:43:06.720> Remember<00:43:06.960> it's<00:43:07.200> any<00:43:07.440> arbitrary" + }, + { + "start": 2587.99, + "duration": 0.0, + "text": "do that. Remember it's any arbitrary" + }, + { + "start": 2588.0, + "duration": 0.0, + "text": "do that. Remember it's any arbitrary structure.<00:43:08.800> In<00:43:09.040> fact<00:43:10.160> uh<00:43:10.319> a<00:43:10.560> very<00:43:10.720> common<00:43:10.960> case" + }, + { + "start": 2591.19, + "duration": 0.0, + "text": "structure. In fact uh a very common case" + }, + { + "start": 2591.2, + "duration": 0.0, + "text": "structure. In fact uh a very common case is<00:43:11.359> like<00:43:11.520> sentinel<00:43:11.920> nodes<00:43:12.160> for<00:43:12.240> example<00:43:12.480> or" + }, + { + "start": 2592.71, + "duration": 0.0, + "text": "is like sentinel nodes for example or" + }, + { + "start": 2592.72, + "duration": 0.0, + "text": "is like sentinel nodes for example or like<00:43:12.880> nil<00:43:13.200> nodes<00:43:13.680> they<00:43:13.920> point<00:43:14.160> at<00:43:14.319> themselves." + }, + { + "start": 2594.79, + "duration": 0.0, + "text": "like nil nodes they point at themselves." + }, + { + "start": 2594.8, + "duration": 0.0, + "text": "like nil nodes they point at themselves. So<00:43:14.960> you'll<00:43:15.200> just<00:43:15.359> go<00:43:15.599> forever<00:43:15.920> and<00:43:16.160> you<00:43:16.400> have" + }, + { + "start": 2596.55, + "duration": 0.0, + "text": "So you'll just go forever and you have" + }, + { + "start": 2596.56, + "duration": 0.0, + "text": "So you'll just go forever and you have to<00:43:16.640> be<00:43:16.720> able<00:43:16.880> to<00:43:17.119> handle<00:43:17.440> this<00:43:17.680> case<00:43:17.920> right." + }, + { + "start": 2599.99, + "duration": 0.0, + "text": "to be able to handle this case right." + }, + { + "start": 2600.0, + "duration": 0.0, + "text": "to be able to handle this case right. Um<00:43:21.040> so" + }, + { + "start": 2602.55, + "duration": 0.0, + "text": "Um so" + }, + { + "start": 2602.56, + "duration": 0.0, + "text": "Um so in<00:43:22.800> either<00:43:23.119> case<00:43:23.760> the<00:43:24.000> billion<00:43:24.319> array<00:43:24.560> of" + }, + { + "start": 2604.63, + "duration": 0.0, + "text": "in either case the billion array of" + }, + { + "start": 2604.64, + "duration": 0.0, + "text": "in either case the billion array of integers<00:43:25.440> or<00:43:25.760> the<00:43:26.240> recursing<00:43:26.720> node<00:43:27.040> structure" + }, + { + "start": 2608.23, + "duration": 0.0, + "text": "integers or the recursing node structure" + }, + { + "start": 2608.24, + "duration": 0.0, + "text": "integers or the recursing node structure um<00:43:28.480> and<00:43:28.800> many<00:43:29.119> other<00:43:29.359> like<00:43:29.680> similar<00:43:30.160> sort<00:43:30.400> of" + }, + { + "start": 2610.63, + "duration": 0.0, + "text": "um and many other like similar sort of" + }, + { + "start": 2610.64, + "duration": 0.0, + "text": "um and many other like similar sort of kinds<00:43:30.960> of<00:43:31.119> problems.<00:43:31.760> The<00:43:32.000> fundamental" + }, + { + "start": 2612.55, + "duration": 0.0, + "text": "kinds of problems. The fundamental" + }, + { + "start": 2612.56, + "duration": 0.0, + "text": "kinds of problems. The fundamental problem<00:43:32.800> here<00:43:33.440> is<00:43:33.680> that<00:43:33.920> we<00:43:34.160> have<00:43:34.319> not" + }, + { + "start": 2614.47, + "duration": 0.0, + "text": "problem here is that we have not" + }, + { + "start": 2614.48, + "duration": 0.0, + "text": "problem here is that we have not properly<00:43:34.880> bounded<00:43:35.280> the<00:43:35.520> problem.<00:43:36.640> Uh<00:43:37.119> the<00:43:37.520> we" + }, + { + "start": 2617.75, + "duration": 0.0, + "text": "properly bounded the problem. Uh the we" + }, + { + "start": 2617.76, + "duration": 0.0, + "text": "properly bounded the problem. Uh the we haven't<00:43:37.920> we<00:43:38.079> haven't<00:43:38.240> properly<00:43:38.640> bounded<00:43:39.440> the" + }, + { + "start": 2620.309, + "duration": 0.0, + "text": "haven't we haven't properly bounded the" + }, + { + "start": 2620.319, + "duration": 0.0, + "text": "haven't we haven't properly bounded the set<00:43:40.560> of<00:43:40.720> information<00:43:41.040> that<00:43:41.200> the<00:43:41.359> debugger" + }, + { + "start": 2621.75, + "duration": 0.0, + "text": "set of information that the debugger" + }, + { + "start": 2621.76, + "duration": 0.0, + "text": "set of information that the debugger actually<00:43:41.920> has<00:43:42.160> to<00:43:42.240> work<00:43:42.400> with.<00:43:42.640> Right?<00:43:42.800> the" + }, + { + "start": 2622.95, + "duration": 0.0, + "text": "actually has to work with. Right? the" + }, + { + "start": 2622.96, + "duration": 0.0, + "text": "actually has to work with. Right? the debugger<00:43:43.359> can<00:43:43.520> just<00:43:43.680> like<00:43:44.640> we<00:43:45.200> so<00:43:45.440> far<00:43:45.599> we've" + }, + { + "start": 2625.829, + "duration": 0.0, + "text": "debugger can just like we so far we've" + }, + { + "start": 2625.839, + "duration": 0.0, + "text": "debugger can just like we so far we've only<00:43:46.000> sketched<00:43:46.319> out<00:43:46.480> if<00:43:46.720> like<00:43:47.119> this<00:43:47.280> is<00:43:47.359> a" + }, + { + "start": 2627.589, + "duration": 0.0, + "text": "only sketched out if like this is a" + }, + { + "start": 2627.599, + "duration": 0.0, + "text": "only sketched out if like this is a magical<00:43:48.000> function<00:43:48.480> you<00:43:48.640> can<00:43:48.800> do<00:43:48.880> this<00:43:49.040> and" + }, + { + "start": 2629.19, + "duration": 0.0, + "text": "magical function you can do this and" + }, + { + "start": 2629.2, + "duration": 0.0, + "text": "magical function you can do this and then<00:43:49.359> the<00:43:49.520> debugger<00:43:49.839> just<00:43:50.000> calls<00:43:50.160> them<00:43:50.400> gets<00:43:50.560> a" + }, + { + "start": 2630.71, + "duration": 0.0, + "text": "then the debugger just calls them gets a" + }, + { + "start": 2630.72, + "duration": 0.0, + "text": "then the debugger just calls them gets a list<00:43:50.800> of<00:43:50.880> evaluations<00:43:51.520> it's<00:43:51.680> like<00:43:52.160> okay<00:43:52.640> now" + }, + { + "start": 2632.79, + "duration": 0.0, + "text": "list of evaluations it's like okay now" + }, + { + "start": 2632.8, + "duration": 0.0, + "text": "list of evaluations it's like okay now you've<00:43:52.960> got<00:43:53.040> a<00:43:53.280> billion<00:43:53.680> things<00:43:53.920> to<00:43:54.240> go<00:43:54.400> and<00:43:54.640> do" + }, + { + "start": 2635.67, + "duration": 0.0, + "text": "you've got a billion things to go and do" + }, + { + "start": 2635.68, + "duration": 0.0, + "text": "you've got a billion things to go and do not<00:43:55.839> really<00:43:56.079> realistic<00:43:56.480> we<00:43:56.640> need<00:43:56.720> to<00:43:56.880> scope<00:43:57.119> it" + }, + { + "start": 2637.27, + "duration": 0.0, + "text": "not really realistic we need to scope it" + }, + { + "start": 2637.28, + "duration": 0.0, + "text": "not really realistic we need to scope it we<00:43:57.359> need<00:43:57.440> to<00:43:57.599> bound<00:43:57.839> it<00:43:58.240> again<00:43:58.560> the<00:43:58.800> debugger" + }, + { + "start": 2639.109, + "duration": 0.0, + "text": "we need to bound it again the debugger" + }, + { + "start": 2639.119, + "duration": 0.0, + "text": "we need to bound it again the debugger has<00:43:59.200> to<00:43:59.359> be<00:43:59.520> fast" + }, + { + "start": 2641.43, + "duration": 0.0, + "text": "has to be fast" + }, + { + "start": 2641.44, + "duration": 0.0, + "text": "has to be fast um" + }, + { + "start": 2643.43, + "duration": 0.0, + "text": "um" + }, + { + "start": 2643.44, + "duration": 0.0, + "text": "um so" + }, + { + "start": 2645.03, + "duration": 0.0, + "text": "so" + }, + { + "start": 2645.04, + "duration": 0.0, + "text": "so um" + }, + { + "start": 2647.51, + "duration": 0.0, + "text": "um" + }, + { + "start": 2647.52, + "duration": 0.0, + "text": "um note<00:44:07.920> that<00:44:08.160> a<00:44:08.319> debugger<00:44:08.720> UI<00:44:09.520> cannot<00:44:10.240> uh<00:44:11.040> you" + }, + { + "start": 2651.19, + "duration": 0.0, + "text": "note that a debugger UI cannot uh you" + }, + { + "start": 2651.2, + "duration": 0.0, + "text": "note that a debugger UI cannot uh you can't<00:44:11.359> visualize<00:44:11.760> arbitrarily<00:44:12.240> many<00:44:12.560> things" + }, + { + "start": 2653.03, + "duration": 0.0, + "text": "can't visualize arbitrarily many things" + }, + { + "start": 2653.04, + "duration": 0.0, + "text": "can't visualize arbitrarily many things anyways.<00:44:13.920> So<00:44:14.079> it<00:44:14.240> can't<00:44:14.560> visualize<00:44:14.960> a<00:44:15.200> billion" + }, + { + "start": 2655.43, + "duration": 0.0, + "text": "anyways. So it can't visualize a billion" + }, + { + "start": 2655.44, + "duration": 0.0, + "text": "anyways. So it can't visualize a billion integers.<00:44:16.240> It<00:44:16.400> can<00:44:16.560> only<00:44:16.800> visualize<00:44:17.359> like" + }, + { + "start": 2657.589, + "duration": 0.0, + "text": "integers. It can only visualize like" + }, + { + "start": 2657.599, + "duration": 0.0, + "text": "integers. It can only visualize like some<00:44:17.839> windowed<00:44:18.400> range<00:44:18.640> of<00:44:18.800> it." + }, + { + "start": 2660.87, + "duration": 0.0, + "text": "some windowed range of it." + }, + { + "start": 2660.88, + "duration": 0.0, + "text": "some windowed range of it. Um<00:44:21.920> there's<00:44:22.160> really<00:44:22.319> only<00:44:22.560> so<00:44:22.720> many<00:44:22.880> visual" + }, + { + "start": 2663.51, + "duration": 0.0, + "text": "Um there's really only so many visual" + }, + { + "start": 2663.52, + "duration": 0.0, + "text": "Um there's really only so many visual visualizations<00:44:24.160> you<00:44:24.319> can<00:44:24.480> actually<00:44:24.640> fit<00:44:24.960> on<00:44:25.119> a" + }, + { + "start": 2665.27, + "duration": 0.0, + "text": "visualizations you can actually fit on a" + }, + { + "start": 2665.28, + "duration": 0.0, + "text": "visualizations you can actually fit on a screen,<00:44:25.839> right?<00:44:26.880> So<00:44:26.960> you<00:44:27.119> can<00:44:27.280> use<00:44:27.440> those<00:44:27.599> sort" + }, + { + "start": 2667.75, + "duration": 0.0, + "text": "screen, right? So you can use those sort" + }, + { + "start": 2667.76, + "duration": 0.0, + "text": "screen, right? So you can use those sort of<00:44:27.839> like<00:44:28.079> soft<00:44:28.400> up<00:44:28.720> you<00:44:28.960> can<00:44:29.040> use<00:44:29.280> that<00:44:29.680> fact<00:44:30.000> to" + }, + { + "start": 2670.23, + "duration": 0.0, + "text": "of like soft up you can use that fact to" + }, + { + "start": 2670.24, + "duration": 0.0, + "text": "of like soft up you can use that fact to sort<00:44:30.400> of<00:44:30.480> form<00:44:30.880> soft<00:44:31.119> upper<00:44:31.520> limits<00:44:32.160> to<00:44:32.400> what" + }, + { + "start": 2672.55, + "duration": 0.0, + "text": "sort of form soft upper limits to what" + }, + { + "start": 2672.56, + "duration": 0.0, + "text": "sort of form soft upper limits to what you<00:44:32.720> actually<00:44:32.880> have<00:44:33.040> to<00:44:33.119> grab<00:44:33.359> as<00:44:33.599> the" + }, + { + "start": 2673.75, + "duration": 0.0, + "text": "you actually have to grab as the" + }, + { + "start": 2673.76, + "duration": 0.0, + "text": "you actually have to grab as the debugger." + }, + { + "start": 2675.43, + "duration": 0.0, + "text": "debugger." + }, + { + "start": 2675.44, + "duration": 0.0, + "text": "debugger. So<00:44:36.000> um<00:44:36.800> to<00:44:37.119> do<00:44:37.280> that<00:44:37.839> these<00:44:38.319> expansions<00:44:39.200> or" + }, + { + "start": 2679.67, + "duration": 0.0, + "text": "So um to do that these expansions or" + }, + { + "start": 2679.68, + "duration": 0.0, + "text": "So um to do that these expansions or anything<00:44:40.160> like<00:44:40.480> sort<00:44:40.720> of<00:44:40.800> that<00:44:41.520> that<00:44:41.920> could" + }, + { + "start": 2682.15, + "duration": 0.0, + "text": "anything like sort of that that could" + }, + { + "start": 2682.16, + "duration": 0.0, + "text": "anything like sort of that that could expand<00:44:42.560> like<00:44:42.880> that<00:44:43.520> needs<00:44:43.760> to<00:44:43.839> be<00:44:44.000> windowed" + }, + { + "start": 2685.03, + "duration": 0.0, + "text": "expand like that needs to be windowed" + }, + { + "start": 2685.04, + "duration": 0.0, + "text": "expand like that needs to be windowed right" + }, + { + "start": 2687.43, + "duration": 0.0, + "text": "right" + }, + { + "start": 2687.44, + "duration": 0.0, + "text": "right needs<00:44:47.680> to<00:44:47.760> be<00:44:47.920> windowed.<00:44:48.400> So<00:44:48.560> instead<00:44:48.880> of" + }, + { + "start": 2689.19, + "duration": 0.0, + "text": "needs to be windowed. So instead of" + }, + { + "start": 2689.2, + "duration": 0.0, + "text": "needs to be windowed. So instead of taking<00:44:49.520> an<00:44:49.920> an<00:44:50.160> evaluation<00:44:50.720> producing<00:44:51.040> a<00:44:51.200> list" + }, + { + "start": 2691.27, + "duration": 0.0, + "text": "taking an an evaluation producing a list" + }, + { + "start": 2691.28, + "duration": 0.0, + "text": "taking an an evaluation producing a list of<00:44:51.440> evaluations<00:44:52.400> we<00:44:52.640> need<00:44:52.720> to<00:44:52.880> scope<00:44:53.200> it.<00:44:53.359> We" + }, + { + "start": 2693.51, + "duration": 0.0, + "text": "of evaluations we need to scope it. We" + }, + { + "start": 2693.52, + "duration": 0.0, + "text": "of evaluations we need to scope it. We can<00:44:53.680> say<00:44:53.920> we<00:44:54.160> we're<00:44:54.400> taking<00:44:54.640> an<00:44:54.800> evaluation" + }, + { + "start": 2695.349, + "duration": 0.0, + "text": "can say we we're taking an evaluation" + }, + { + "start": 2695.359, + "duration": 0.0, + "text": "can say we we're taking an evaluation and<00:44:55.520> some<00:44:55.760> range<00:44:56.079> of<00:44:56.560> within<00:44:56.880> that<00:44:57.119> expansion." + }, + { + "start": 2697.829, + "duration": 0.0, + "text": "and some range of within that expansion." + }, + { + "start": 2697.839, + "duration": 0.0, + "text": "and some range of within that expansion. We<00:44:58.000> produce<00:44:58.240> a<00:44:58.400> list<00:44:58.560> of<00:44:58.720> evaluations<00:44:59.280> just" + }, + { + "start": 2699.51, + "duration": 0.0, + "text": "We produce a list of evaluations just" + }, + { + "start": 2699.52, + "duration": 0.0, + "text": "We produce a list of evaluations just for<00:44:59.680> that<00:44:59.839> range,<00:45:00.240> right?<00:45:00.400> We<00:45:00.560> need<00:45:00.720> some" + }, + { + "start": 2701.19, + "duration": 0.0, + "text": "for that range, right? We need some" + }, + { + "start": 2701.2, + "duration": 0.0, + "text": "for that range, right? We need some windowed<00:45:01.680> range.<00:45:02.640> When<00:45:02.880> we<00:45:03.040> generate<00:45:03.359> a" + }, + { + "start": 2703.51, + "duration": 0.0, + "text": "windowed range. When we generate a" + }, + { + "start": 2703.52, + "duration": 0.0, + "text": "windowed range. When we generate a string,<00:45:04.319> you<00:45:04.480> know,<00:45:05.760> you<00:45:06.000> can't<00:45:06.160> just<00:45:06.319> go" + }, + { + "start": 2706.47, + "duration": 0.0, + "text": "string, you know, you can't just go" + }, + { + "start": 2706.48, + "duration": 0.0, + "text": "string, you know, you can't just go forever.<00:45:07.119> Maybe<00:45:07.359> you<00:45:07.520> say,<00:45:07.680> I<00:45:07.920> I've<00:45:08.079> got<00:45:08.160> an" + }, + { + "start": 2708.309, + "duration": 0.0, + "text": "forever. Maybe you say, I I've got an" + }, + { + "start": 2708.319, + "duration": 0.0, + "text": "forever. Maybe you say, I I've got an evaluation.<00:45:08.800> I've<00:45:08.960> got<00:45:09.040> a<00:45:09.200> font<00:45:10.480> and<00:45:10.640> I've<00:45:10.880> got" + }, + { + "start": 2710.95, + "duration": 0.0, + "text": "evaluation. I've got a font and I've got" + }, + { + "start": 2710.96, + "duration": 0.0, + "text": "evaluation. I've got a font and I've got some<00:45:11.200> pixel<00:45:11.599> range<00:45:12.560> um<00:45:12.640> that,<00:45:13.040> you<00:45:13.119> know," + }, + { + "start": 2713.27, + "duration": 0.0, + "text": "some pixel range um that, you know," + }, + { + "start": 2713.28, + "duration": 0.0, + "text": "some pixel range um that, you know, delimmits<00:45:13.760> how<00:45:13.920> many<00:45:14.079> characters<00:45:14.400> I<00:45:14.560> actually" + }, + { + "start": 2714.79, + "duration": 0.0, + "text": "delimmits how many characters I actually" + }, + { + "start": 2714.8, + "duration": 0.0, + "text": "delimmits how many characters I actually want<00:45:14.880> to<00:45:14.960> generate<00:45:15.200> and<00:45:15.440> then<00:45:15.520> I<00:45:15.599> get<00:45:15.680> a<00:45:15.760> string" + }, + { + "start": 2715.91, + "duration": 0.0, + "text": "want to generate and then I get a string" + }, + { + "start": 2715.92, + "duration": 0.0, + "text": "want to generate and then I get a string at<00:45:16.079> the<00:45:16.160> end<00:45:16.319> there." + }, + { + "start": 2718.309, + "duration": 0.0, + "text": "at the end there." + }, + { + "start": 2718.319, + "duration": 0.0, + "text": "at the end there. Now<00:45:19.359> if<00:45:19.520> we<00:45:19.680> imagine<00:45:20.000> windowing<00:45:20.480> a<00:45:20.640> list<00:45:20.800> of" + }, + { + "start": 2721.19, + "duration": 0.0, + "text": "Now if we imagine windowing a list of" + }, + { + "start": 2721.2, + "duration": 0.0, + "text": "Now if we imagine windowing a list of rows<00:45:21.920> like<00:45:22.319> in<00:45:22.480> a<00:45:22.640> watch<00:45:22.880> window,<00:45:23.599> it's<00:45:23.760> a<00:45:23.920> very" + }, + { + "start": 2724.069, + "duration": 0.0, + "text": "rows like in a watch window, it's a very" + }, + { + "start": 2724.079, + "duration": 0.0, + "text": "rows like in a watch window, it's a very simple<00:45:24.400> problem.<00:45:25.040> Um<00:45:25.359> especially<00:45:25.680> because" + }, + { + "start": 2725.829, + "duration": 0.0, + "text": "simple problem. Um especially because" + }, + { + "start": 2725.839, + "duration": 0.0, + "text": "simple problem. Um especially because the<00:45:26.079> rows<00:45:26.240> are<00:45:26.400> all<00:45:26.480> like<00:45:26.720> uniformly<00:45:27.280> sized," + }, + { + "start": 2727.67, + "duration": 0.0, + "text": "the rows are all like uniformly sized," + }, + { + "start": 2727.68, + "duration": 0.0, + "text": "the rows are all like uniformly sized, right?<00:45:28.960> Um<00:45:29.760> you're<00:45:30.000> storing<00:45:30.240> some<00:45:30.560> state" + }, + { + "start": 2730.95, + "duration": 0.0, + "text": "right? Um you're storing some state" + }, + { + "start": 2730.96, + "duration": 0.0, + "text": "right? Um you're storing some state somewhere<00:45:31.359> that<00:45:31.680> you<00:45:31.839> know<00:45:32.000> deter<00:45:32.480> determines" + }, + { + "start": 2732.87, + "duration": 0.0, + "text": "somewhere that you know deter determines" + }, + { + "start": 2732.88, + "duration": 0.0, + "text": "somewhere that you know deter determines your<00:45:33.040> scroll<00:45:33.440> position" + }, + { + "start": 2735.829, + "duration": 0.0, + "text": "your scroll position" + }, + { + "start": 2735.839, + "duration": 0.0, + "text": "your scroll position and<00:45:36.079> that<00:45:36.400> combined<00:45:36.800> with<00:45:37.040> like<00:45:37.280> how<00:45:37.599> large" + }, + { + "start": 2737.91, + "duration": 0.0, + "text": "and that combined with like how large" + }, + { + "start": 2737.92, + "duration": 0.0, + "text": "and that combined with like how large the<00:45:38.160> visible<00:45:38.480> range<00:45:38.720> is<00:45:38.960> will<00:45:39.200> tell<00:45:39.359> you<00:45:39.680> you" + }, + { + "start": 2739.75, + "duration": 0.0, + "text": "the visible range is will tell you you" + }, + { + "start": 2739.76, + "duration": 0.0, + "text": "the visible range is will tell you you know<00:45:39.920> depending<00:45:40.160> on<00:45:40.319> how<00:45:40.480> you're<00:45:40.640> storing" + }, + { + "start": 2740.79, + "duration": 0.0, + "text": "know depending on how you're storing" + }, + { + "start": 2740.8, + "duration": 0.0, + "text": "know depending on how you're storing that<00:45:40.960> scroll<00:45:41.280> offset.<00:45:41.839> you<00:45:42.000> know,<00:45:42.160> you<00:45:42.240> can" + }, + { + "start": 2742.309, + "duration": 0.0, + "text": "that scroll offset. you know, you can" + }, + { + "start": 2742.319, + "duration": 0.0, + "text": "that scroll offset. you know, you can store<00:45:42.480> it<00:45:42.560> in<00:45:42.720> a<00:45:42.880> number<00:45:42.960> of<00:45:43.119> ways,<00:45:43.280> but<00:45:43.520> you" + }, + { + "start": 2743.67, + "duration": 0.0, + "text": "store it in a number of ways, but you" + }, + { + "start": 2743.68, + "duration": 0.0, + "text": "store it in a number of ways, but you could<00:45:43.760> pretty<00:45:44.000> easily<00:45:44.240> compute,<00:45:44.880> oh,<00:45:45.040> I'm" + }, + { + "start": 2745.19, + "duration": 0.0, + "text": "could pretty easily compute, oh, I'm" + }, + { + "start": 2745.2, + "duration": 0.0, + "text": "could pretty easily compute, oh, I'm viewing<00:45:45.520> this<00:45:45.680> index<00:45:46.000> to<00:45:46.160> this<00:45:46.400> this<00:45:46.720> index," + }, + { + "start": 2747.19, + "duration": 0.0, + "text": "viewing this index to this this index," + }, + { + "start": 2747.2, + "duration": 0.0, + "text": "viewing this index to this this index, right?" + }, + { + "start": 2749.829, + "duration": 0.0, + "text": "right?" + }, + { + "start": 2749.839, + "duration": 0.0, + "text": "right? Um," + }, + { + "start": 2751.67, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2751.68, + "duration": 0.0, + "text": "Um, not<00:45:51.920> surprisingly,<00:45:52.960> region<00:45:53.359> before<00:45:53.599> and" + }, + { + "start": 2753.75, + "duration": 0.0, + "text": "not surprisingly, region before and" + }, + { + "start": 2753.76, + "duration": 0.0, + "text": "not surprisingly, region before and after<00:45:54.400> not<00:45:54.720> visible.<00:45:55.200> Don't<00:45:55.440> need<00:45:55.599> to<00:45:55.680> do" + }, + { + "start": 2755.829, + "duration": 0.0, + "text": "after not visible. Don't need to do" + }, + { + "start": 2755.839, + "duration": 0.0, + "text": "after not visible. Don't need to do anything<00:45:56.000> for<00:45:56.240> you.<00:45:56.400> You<00:45:56.640> don't<00:45:56.800> actually" + }, + { + "start": 2757.03, + "duration": 0.0, + "text": "anything for you. You don't actually" + }, + { + "start": 2757.04, + "duration": 0.0, + "text": "anything for you. You don't actually have<00:45:57.280> to<00:45:57.440> compute<00:45:57.839> anything<00:45:58.480> for<00:45:58.800> those.<00:45:59.359> Work" + }, + { + "start": 2759.67, + "duration": 0.0, + "text": "have to compute anything for those. Work" + }, + { + "start": 2759.68, + "duration": 0.0, + "text": "have to compute anything for those. Work only<00:45:59.839> needs<00:46:00.000> to<00:46:00.160> be<00:46:00.240> done<00:46:00.319> for<00:46:00.480> the<00:46:00.560> visible" + }, + { + "start": 2760.95, + "duration": 0.0, + "text": "only needs to be done for the visible" + }, + { + "start": 2760.96, + "duration": 0.0, + "text": "only needs to be done for the visible region." + }, + { + "start": 2762.79, + "duration": 0.0, + "text": "region." + }, + { + "start": 2762.8, + "duration": 0.0, + "text": "region. But<00:46:03.040> if<00:46:03.200> we<00:46:03.359> take<00:46:03.440> a<00:46:03.599> look<00:46:03.680> at<00:46:03.839> an<00:46:04.000> actual<00:46:04.240> watch" + }, + { + "start": 2764.55, + "duration": 0.0, + "text": "But if we take a look at an actual watch" + }, + { + "start": 2764.56, + "duration": 0.0, + "text": "But if we take a look at an actual watch window,<00:46:05.040> you<00:46:05.200> might<00:46:05.359> notice<00:46:05.760> it's<00:46:06.079> not<00:46:06.240> really" + }, + { + "start": 2766.39, + "duration": 0.0, + "text": "window, you might notice it's not really" + }, + { + "start": 2766.4, + "duration": 0.0, + "text": "window, you might notice it's not really a<00:46:06.640> list.<00:46:07.040> It's<00:46:07.280> kind<00:46:07.440> of<00:46:07.520> this<00:46:07.920> tree" + }, + { + "start": 2768.23, + "duration": 0.0, + "text": "a list. It's kind of this tree" + }, + { + "start": 2768.24, + "duration": 0.0, + "text": "a list. It's kind of this tree structure,<00:46:09.200> right?<00:46:09.599> It's<00:46:09.839> a<00:46:10.000> tree<00:46:10.240> of<00:46:10.400> lists" + }, + { + "start": 2770.95, + "duration": 0.0, + "text": "structure, right? It's a tree of lists" + }, + { + "start": 2770.96, + "duration": 0.0, + "text": "structure, right? It's a tree of lists where<00:46:11.280> each<00:46:12.079> list<00:46:12.640> in<00:46:13.040> the<00:46:13.280> tree<00:46:13.520> kind<00:46:13.760> of" + }, + { + "start": 2773.829, + "duration": 0.0, + "text": "where each list in the tree kind of" + }, + { + "start": 2773.839, + "duration": 0.0, + "text": "where each list in the tree kind of interrupts<00:46:14.400> the<00:46:14.560> parent<00:46:15.200> list." + }, + { + "start": 2778.88, + "duration": 0.0, + "text": "Um<00:46:19.359> so<00:46:19.839> this<00:46:20.400> these<00:46:20.720> are<00:46:20.800> all<00:46:20.880> the<00:46:21.040> members<00:46:21.280> of" + }, + { + "start": 2781.43, + "duration": 0.0, + "text": "Um so this these are all the members of" + }, + { + "start": 2781.44, + "duration": 0.0, + "text": "Um so this these are all the members of shared<00:46:21.920> on<00:46:22.160> this<00:46:22.319> level.<00:46:23.760> These<00:46:24.079> are<00:46:24.160> the" + }, + { + "start": 2784.309, + "duration": 0.0, + "text": "shared on this level. These are the" + }, + { + "start": 2784.319, + "duration": 0.0, + "text": "shared on this level. These are the members<00:46:24.560> of<00:46:24.720> the<00:46:24.880> control<00:46:25.200> bindings<00:46:25.680> member." + }, + { + "start": 2786.95, + "duration": 0.0, + "text": "members of the control bindings member." + }, + { + "start": 2786.96, + "duration": 0.0, + "text": "members of the control bindings member. These<00:46:27.280> are<00:46:27.359> the<00:46:27.520> members<00:46:28.079> uh<00:46:28.160> these<00:46:28.400> are<00:46:28.480> the" + }, + { + "start": 2788.63, + "duration": 0.0, + "text": "These are the members uh these are the" + }, + { + "start": 2788.64, + "duration": 0.0, + "text": "These are the members uh these are the elements<00:46:28.880> of<00:46:29.040> the<00:46:29.200> bindings<00:46:29.599> array<00:46:29.839> inside<00:46:30.079> of" + }, + { + "start": 2790.23, + "duration": 0.0, + "text": "elements of the bindings array inside of" + }, + { + "start": 2790.24, + "duration": 0.0, + "text": "elements of the bindings array inside of control<00:46:30.560> bindings." + }, + { + "start": 2793.68, + "duration": 0.0, + "text": "Oh<00:46:33.920> no.<00:46:35.280> Uh<00:46:35.760> these<00:46:36.079> are<00:46:36.160> the<00:46:36.560> uh<00:46:36.640> the<00:46:36.880> members" + }, + { + "start": 2797.19, + "duration": 0.0, + "text": "Oh no. Uh these are the uh the members" + }, + { + "start": 2797.2, + "duration": 0.0, + "text": "Oh no. Uh these are the uh the members of<00:46:37.359> bindings<00:46:37.839> at<00:46:38.079> four." + }, + { + "start": 2799.99, + "duration": 0.0, + "text": "of bindings at four." + }, + { + "start": 2800.0, + "duration": 0.0, + "text": "of bindings at four. Um," + }, + { + "start": 2803.119, + "duration": 0.0, + "text": "wait.<00:46:43.920> Yeah,<00:46:44.160> bindings<00:46:44.640> of<00:46:44.800> four.<00:46:45.040> Yep.<00:46:45.760> So," + }, + { + "start": 2805.91, + "duration": 0.0, + "text": "wait. Yeah, bindings of four. Yep. So," + }, + { + "start": 2805.92, + "duration": 0.0, + "text": "wait. Yeah, bindings of four. Yep. So, if<00:46:46.160> you<00:46:46.240> encode<00:46:46.640> that<00:46:46.880> hierarchy<00:46:47.359> into<00:46:47.680> sort" + }, + { + "start": 2807.829, + "duration": 0.0, + "text": "if you encode that hierarchy into sort" + }, + { + "start": 2807.839, + "duration": 0.0, + "text": "if you encode that hierarchy into sort of<00:46:47.920> a<00:46:48.079> tree<00:46:48.319> structure,<00:46:48.720> if<00:46:48.880> you're<00:46:48.960> just" + }, + { + "start": 2809.109, + "duration": 0.0, + "text": "of a tree structure, if you're just" + }, + { + "start": 2809.119, + "duration": 0.0, + "text": "of a tree structure, if you're just going<00:46:49.280> to<00:46:49.440> like<00:46:50.000> build<00:46:50.319> that<00:46:50.880> explicitly," + }, + { + "start": 2811.51, + "duration": 0.0, + "text": "going to like build that explicitly," + }, + { + "start": 2811.52, + "duration": 0.0, + "text": "going to like build that explicitly, it'd<00:46:51.760> look<00:46:52.079> something<00:46:52.400> like<00:46:52.640> this.<00:46:54.000> So,<00:46:55.280> um," + }, + { + "start": 2816.39, + "duration": 0.0, + "text": "it'd look something like this. So, um," + }, + { + "start": 2816.4, + "duration": 0.0, + "text": "it'd look something like this. So, um, you've<00:46:56.640> got<00:46:56.720> your<00:46:57.119> watch<00:46:57.359> list,<00:46:57.680> which<00:46:57.839> is" + }, + { + "start": 2817.99, + "duration": 0.0, + "text": "you've got your watch list, which is" + }, + { + "start": 2818.0, + "duration": 0.0, + "text": "you've got your watch list, which is just<00:46:58.160> some<00:46:58.319> number<00:46:58.480> of<00:46:58.640> watch<00:46:58.880> expressions," + }, + { + "start": 2819.829, + "duration": 0.0, + "text": "just some number of watch expressions," + }, + { + "start": 2819.839, + "duration": 0.0, + "text": "just some number of watch expressions, members<00:47:00.160> of<00:47:00.480> members<00:47:00.800> of<00:47:01.040> shared,<00:47:01.440> members<00:47:01.680> of" + }, + { + "start": 2821.829, + "duration": 0.0, + "text": "members of members of shared, members of" + }, + { + "start": 2821.839, + "duration": 0.0, + "text": "members of members of shared, members of control<00:47:02.079> bindings,<00:47:02.800> elements<00:47:03.119> of<00:47:03.280> bindings," + }, + { + "start": 2823.91, + "duration": 0.0, + "text": "control bindings, elements of bindings," + }, + { + "start": 2823.92, + "duration": 0.0, + "text": "control bindings, elements of bindings, members<00:47:04.160> of<00:47:04.319> bindings<00:47:04.720> at<00:47:04.880> four.<00:47:05.680> For<00:47:06.000> this" + }, + { + "start": 2826.23, + "duration": 0.0, + "text": "members of bindings at four. For this" + }, + { + "start": 2826.24, + "duration": 0.0, + "text": "members of bindings at four. For this example,<00:47:06.560> that's<00:47:06.800> what<00:47:06.880> we<00:47:07.040> would<00:47:07.280> see," + }, + { + "start": 2827.51, + "duration": 0.0, + "text": "example, that's what we would see," + }, + { + "start": 2827.52, + "duration": 0.0, + "text": "example, that's what we would see, right?<00:47:07.760> So<00:47:07.920> let's<00:47:08.160> see<00:47:08.240> how<00:47:08.400> we<00:47:08.560> can<00:47:08.640> take<00:47:08.800> a" + }, + { + "start": 2828.95, + "duration": 0.0, + "text": "right? So let's see how we can take a" + }, + { + "start": 2828.96, + "duration": 0.0, + "text": "right? So let's see how we can take a structure<00:47:09.280> like<00:47:09.520> this<00:47:10.000> and<00:47:10.240> window<00:47:10.640> it." + }, + { + "start": 2832.309, + "duration": 0.0, + "text": "structure like this and window it." + }, + { + "start": 2832.319, + "duration": 0.0, + "text": "structure like this and window it. So<00:47:12.720> first<00:47:13.359> let's<00:47:13.680> label<00:47:14.079> each<00:47:14.319> node.<00:47:14.960> Um<00:47:16.160> W<00:47:16.400> is" + }, + { + "start": 2836.55, + "duration": 0.0, + "text": "So first let's label each node. Um W is" + }, + { + "start": 2836.56, + "duration": 0.0, + "text": "So first let's label each node. Um W is watch<00:47:16.800> list.<00:47:17.040> S<00:47:17.280> is<00:47:17.440> shared.<00:47:18.079> C<00:47:18.319> is<00:47:18.480> the<00:47:18.640> member" + }, + { + "start": 2839.03, + "duration": 0.0, + "text": "watch list. S is shared. C is the member" + }, + { + "start": 2839.04, + "duration": 0.0, + "text": "watch list. S is shared. C is the member members<00:47:19.359> of<00:47:19.520> control<00:47:19.839> bindings.<00:47:20.720> B<00:47:20.960> is<00:47:21.119> the" + }, + { + "start": 2841.27, + "duration": 0.0, + "text": "members of control bindings. B is the" + }, + { + "start": 2841.28, + "duration": 0.0, + "text": "members of control bindings. B is the elements<00:47:21.520> of<00:47:21.680> bindings.<00:47:22.480> Four<00:47:22.640> is<00:47:22.800> the" + }, + { + "start": 2842.95, + "duration": 0.0, + "text": "elements of bindings. Four is the" + }, + { + "start": 2842.96, + "duration": 0.0, + "text": "elements of bindings. Four is the members<00:47:23.440> of<00:47:23.839> bindings<00:47:24.319> at<00:47:24.480> four." + }, + { + "start": 2846.15, + "duration": 0.0, + "text": "members of bindings at four." + }, + { + "start": 2846.16, + "duration": 0.0, + "text": "members of bindings at four. We<00:47:26.400> can<00:47:26.560> also<00:47:26.720> say<00:47:26.960> that<00:47:27.599> each<00:47:27.920> node<00:47:28.400> sort<00:47:28.640> of" + }, + { + "start": 2848.87, + "duration": 0.0, + "text": "We can also say that each node sort of" + }, + { + "start": 2848.88, + "duration": 0.0, + "text": "We can also say that each node sort of uh<00:47:29.119> splits<00:47:29.599> the<00:47:29.839> parent<00:47:30.400> at<00:47:30.720> some<00:47:30.960> particular" + }, + { + "start": 2851.43, + "duration": 0.0, + "text": "uh splits the parent at some particular" + }, + { + "start": 2851.44, + "duration": 0.0, + "text": "uh splits the parent at some particular index<00:47:31.839> in<00:47:32.079> the<00:47:32.240> range.<00:47:32.560> So<00:47:33.359> s<00:47:33.920> uh<00:47:34.079> let's<00:47:34.319> just" + }, + { + "start": 2854.47, + "duration": 0.0, + "text": "index in the range. So s uh let's just" + }, + { + "start": 2854.48, + "duration": 0.0, + "text": "index in the range. So s uh let's just say<00:47:34.640> they<00:47:34.880> all<00:47:35.119> split<00:47:35.359> their<00:47:35.520> parent<00:47:35.839> at<00:47:36.480> uh" + }, + { + "start": 2856.71, + "duration": 0.0, + "text": "say they all split their parent at uh" + }, + { + "start": 2856.72, + "duration": 0.0, + "text": "say they all split their parent at uh you<00:47:36.880> know<00:47:37.040> s<00:47:37.440> subscript<00:47:38.079> whatever<00:47:38.400> that<00:47:38.560> node" + }, + { + "start": 2858.87, + "duration": 0.0, + "text": "you know s subscript whatever that node" + }, + { + "start": 2858.88, + "duration": 0.0, + "text": "you know s subscript whatever that node happens<00:47:39.119> to<00:47:39.280> be." + }, + { + "start": 2864.48, + "duration": 0.0, + "text": "We<00:47:44.640> then<00:47:44.880> turn<00:47:45.040> this<00:47:45.200> tree<00:47:45.440> into<00:47:45.680> a<00:47:45.839> flat<00:47:46.079> list." + }, + { + "start": 2866.39, + "duration": 0.0, + "text": "We then turn this tree into a flat list." + }, + { + "start": 2866.4, + "duration": 0.0, + "text": "We then turn this tree into a flat list. Right?<00:47:46.640> You<00:47:46.800> have<00:47:46.880> this<00:47:47.040> tree<00:47:47.280> structure<00:47:48.240> and" + }, + { + "start": 2868.87, + "duration": 0.0, + "text": "Right? You have this tree structure and" + }, + { + "start": 2868.88, + "duration": 0.0, + "text": "Right? You have this tree structure and um<00:47:49.119> each<00:47:49.440> split<00:47:49.920> actually<00:47:50.160> causes<00:47:50.880> two<00:47:51.599> uh" + }, + { + "start": 2872.23, + "duration": 0.0, + "text": "um each split actually causes two uh" + }, + { + "start": 2872.24, + "duration": 0.0, + "text": "um each split actually causes two uh ranges<00:47:52.560> of<00:47:52.960> rows<00:47:53.040> to<00:47:53.200> be<00:47:53.359> generated.<00:47:53.760> Right?" + }, + { + "start": 2873.91, + "duration": 0.0, + "text": "ranges of rows to be generated. Right?" + }, + { + "start": 2873.92, + "duration": 0.0, + "text": "ranges of rows to be generated. Right? You've<00:47:54.079> got<00:47:54.240> W<00:47:54.560> for<00:47:54.720> the<00:47:54.880> top<00:47:55.760> um<00:47:56.720> uh<00:47:57.040> well" + }, + { + "start": 2877.27, + "duration": 0.0, + "text": "You've got W for the top um uh well" + }, + { + "start": 2877.28, + "duration": 0.0, + "text": "You've got W for the top um uh well you've<00:47:57.440> got<00:47:57.599> W<00:47:57.839> as<00:47:58.000> the<00:47:58.160> top<00:47:58.319> node<00:47:58.560> and<00:47:58.800> then" + }, + { + "start": 2879.03, + "duration": 0.0, + "text": "you've got W as the top node and then" + }, + { + "start": 2879.04, + "duration": 0.0, + "text": "you've got W as the top node and then the<00:47:59.359> things<00:47:59.599> before<00:47:59.920> the<00:48:00.160> splits<00:48:00.720> are<00:48:01.040> W<00:48:01.359> pre" + }, + { + "start": 2881.589, + "duration": 0.0, + "text": "the things before the splits are W pre" + }, + { + "start": 2881.599, + "duration": 0.0, + "text": "the things before the splits are W pre and<00:48:01.760> the<00:48:01.920> things<00:48:02.079> after<00:48:02.319> the<00:48:02.480> splits<00:48:02.720> are<00:48:02.880> W" + }, + { + "start": 2883.19, + "duration": 0.0, + "text": "and the things after the splits are W" + }, + { + "start": 2883.2, + "duration": 0.0, + "text": "and the things after the splits are W post<00:48:03.839> in<00:48:04.000> this<00:48:04.160> particular<00:48:04.480> case<00:48:04.720> for<00:48:04.880> one" + }, + { + "start": 2885.19, + "duration": 0.0, + "text": "post in this particular case for one" + }, + { + "start": 2885.2, + "duration": 0.0, + "text": "post in this particular case for one child<00:48:05.440> split<00:48:05.680> it's<00:48:05.760> a<00:48:05.839> very<00:48:06.000> simple<00:48:06.160> case" + }, + { + "start": 2886.39, + "duration": 0.0, + "text": "child split it's a very simple case" + }, + { + "start": 2886.4, + "duration": 0.0, + "text": "child split it's a very simple case right<00:48:06.560> you've<00:48:06.720> only<00:48:06.880> got<00:48:06.960> one<00:48:07.200> split<00:48:07.440> per<00:48:07.599> node" + }, + { + "start": 2887.829, + "duration": 0.0, + "text": "right you've only got one split per node" + }, + { + "start": 2887.839, + "duration": 0.0, + "text": "right you've only got one split per node but<00:48:08.640> um<00:48:08.880> but<00:48:09.040> yes<00:48:09.280> you've<00:48:09.440> got<00:48:09.599> W<00:48:09.760> pre<00:48:10.880> and<00:48:11.119> so" + }, + { + "start": 2891.19, + "duration": 0.0, + "text": "but um but yes you've got W pre and so" + }, + { + "start": 2891.2, + "duration": 0.0, + "text": "but um but yes you've got W pre and so on<00:48:11.359> and<00:48:11.520> so<00:48:11.680> forth<00:48:12.240> doesn't<00:48:12.400> have<00:48:12.560> any<00:48:12.720> splits" + }, + { + "start": 2893.03, + "duration": 0.0, + "text": "on and so forth doesn't have any splits" + }, + { + "start": 2893.04, + "duration": 0.0, + "text": "on and so forth doesn't have any splits underneath<00:48:13.359> it<00:48:13.520> so<00:48:13.680> you<00:48:13.839> just<00:48:13.920> get<00:48:14.079> four<00:48:15.280> um" + }, + { + "start": 2895.51, + "duration": 0.0, + "text": "underneath it so you just get four um" + }, + { + "start": 2895.52, + "duration": 0.0, + "text": "underneath it so you just get four um but<00:48:15.760> you<00:48:15.920> can<00:48:16.079> flatten<00:48:16.400> it<00:48:16.560> this<00:48:16.800> way" + }, + { + "start": 2900.48, + "duration": 0.0, + "text": "and<00:48:20.640> looking<00:48:20.880> back<00:48:20.960> at<00:48:21.119> the<00:48:21.359> original<00:48:21.599> image" + }, + { + "start": 2902.549, + "duration": 0.0, + "text": "and looking back at the original image" + }, + { + "start": 2902.559, + "duration": 0.0, + "text": "and looking back at the original image we<00:48:22.800> can<00:48:22.880> see<00:48:23.040> these<00:48:23.280> ranges<00:48:23.760> directly,<00:48:24.559> right?" + }, + { + "start": 2905.349, + "duration": 0.0, + "text": "we can see these ranges directly, right?" + }, + { + "start": 2905.359, + "duration": 0.0, + "text": "we can see these ranges directly, right? Here's<00:48:25.760> W<00:48:26.000> pre,<00:48:26.960> here's<00:48:27.280> S<00:48:27.520> pre,<00:48:28.640> here's<00:48:29.040> C" + }, + { + "start": 2909.27, + "duration": 0.0, + "text": "Here's W pre, here's S pre, here's C" + }, + { + "start": 2909.28, + "duration": 0.0, + "text": "Here's W pre, here's S pre, here's C pre," + }, + { + "start": 2910.79, + "duration": 0.0, + "text": "pre," + }, + { + "start": 2910.8, + "duration": 0.0, + "text": "pre, here's<00:48:31.119> B<00:48:31.359> pre,<00:48:32.160> here's<00:48:32.400> all<00:48:32.480> the<00:48:32.640> members" + }, + { + "start": 2912.87, + "duration": 0.0, + "text": "here's B pre, here's all the members" + }, + { + "start": 2912.88, + "duration": 0.0, + "text": "here's B pre, here's all the members before,<00:48:33.359> no,<00:48:33.599> no<00:48:33.839> splits,<00:48:34.240> right?<00:48:34.480> So,<00:48:34.559> that's" + }, + { + "start": 2914.79, + "duration": 0.0, + "text": "before, no, no splits, right? So, that's" + }, + { + "start": 2914.8, + "duration": 0.0, + "text": "before, no, no splits, right? So, that's all<00:48:34.880> of<00:48:35.040> them.<00:48:36.160> Uh,<00:48:36.400> and<00:48:36.559> then<00:48:36.720> we<00:48:36.880> pop<00:48:37.119> back" + }, + { + "start": 2917.27, + "duration": 0.0, + "text": "all of them. Uh, and then we pop back" + }, + { + "start": 2917.28, + "duration": 0.0, + "text": "all of them. Uh, and then we pop back out,<00:48:37.440> right?<00:48:37.599> We've<00:48:37.760> got<00:48:37.920> B<00:48:38.160> post.<00:48:39.040> Cost" + }, + { + "start": 2919.75, + "duration": 0.0, + "text": "out, right? We've got B post. Cost" + }, + { + "start": 2919.76, + "duration": 0.0, + "text": "out, right? We've got B post. Cost happens<00:48:40.079> to<00:48:40.240> be<00:48:40.319> empty,<00:48:40.800> right?<00:48:41.040> There's<00:48:41.200> no" + }, + { + "start": 2921.349, + "duration": 0.0, + "text": "happens to be empty, right? There's no" + }, + { + "start": 2921.359, + "duration": 0.0, + "text": "happens to be empty, right? There's no members<00:48:41.680> after<00:48:42.720> um<00:48:42.960> bindings,<00:48:43.520> which<00:48:44.000> no" + }, + { + "start": 2924.309, + "duration": 0.0, + "text": "members after um bindings, which no" + }, + { + "start": 2924.319, + "duration": 0.0, + "text": "members after um bindings, which no problem." + }, + { + "start": 2925.99, + "duration": 0.0, + "text": "problem." + }, + { + "start": 2926.0, + "duration": 0.0, + "text": "problem. And<00:48:46.160> then<00:48:46.319> we<00:48:46.400> get<00:48:46.559> S<00:48:46.800> post." + }, + { + "start": 2928.47, + "duration": 0.0, + "text": "And then we get S post." + }, + { + "start": 2928.48, + "duration": 0.0, + "text": "And then we get S post. um<00:48:48.720> that's<00:48:48.960> all<00:48:49.040> you<00:48:49.200> can<00:48:49.280> see<00:48:49.359> in<00:48:49.520> this<00:48:49.599> image," + }, + { + "start": 2929.75, + "duration": 0.0, + "text": "um that's all you can see in this image," + }, + { + "start": 2929.76, + "duration": 0.0, + "text": "um that's all you can see in this image, but<00:48:50.000> then<00:48:50.079> there'd<00:48:50.319> be<00:48:50.400> a<00:48:50.559> W<00:48:50.800> post<00:48:51.359> further<00:48:51.760> on" + }, + { + "start": 2932.069, + "duration": 0.0, + "text": "but then there'd be a W post further on" + }, + { + "start": 2932.079, + "duration": 0.0, + "text": "but then there'd be a W post further on like<00:48:52.720> you<00:48:52.880> know<00:48:52.960> I<00:48:53.119> think<00:48:53.200> there<00:48:53.520> technically" + }, + { + "start": 2933.91, + "duration": 0.0, + "text": "like you know I think there technically" + }, + { + "start": 2933.92, + "duration": 0.0, + "text": "like you know I think there technically should<00:48:54.160> be<00:48:54.319> but<00:48:54.960> um<00:48:55.440> there<00:48:55.920> but<00:48:56.160> you<00:48:56.319> can't" + }, + { + "start": 2936.39, + "duration": 0.0, + "text": "should be but um there but you can't" + }, + { + "start": 2936.4, + "duration": 0.0, + "text": "should be but um there but you can't really<00:48:56.640> see<00:48:56.720> it<00:48:56.960> but<00:48:57.280> there'd<00:48:57.520> be<00:48:57.599> a<00:48:57.680> W<00:48:57.920> post" + }, + { + "start": 2938.15, + "duration": 0.0, + "text": "really see it but there'd be a W post" + }, + { + "start": 2938.16, + "duration": 0.0, + "text": "really see it but there'd be a W post after<00:48:58.400> that.<00:48:59.280> So<00:48:59.599> given<00:48:59.920> this<00:49:00.079> flat<00:49:00.319> list<00:49:00.559> of" + }, + { + "start": 2940.71, + "duration": 0.0, + "text": "after that. So given this flat list of" + }, + { + "start": 2940.72, + "duration": 0.0, + "text": "after that. So given this flat list of ranges<00:49:01.680> um<00:49:01.839> of<00:49:02.079> evaluations<00:49:02.720> we<00:49:02.880> can<00:49:02.960> then" + }, + { + "start": 2943.109, + "duration": 0.0, + "text": "ranges um of evaluations we can then" + }, + { + "start": 2943.119, + "duration": 0.0, + "text": "ranges um of evaluations we can then perform<00:49:03.440> the<00:49:03.599> windowing<00:49:04.079> on<00:49:04.240> that<00:49:04.480> structure." + }, + { + "start": 2944.79, + "duration": 0.0, + "text": "perform the windowing on that structure." + }, + { + "start": 2944.8, + "duration": 0.0, + "text": "perform the windowing on that structure. You've<00:49:04.960> got<00:49:05.040> a<00:49:05.200> you've<00:49:05.440> got<00:49:05.520> a<00:49:05.680> linear<00:49:06.000> list<00:49:06.319> at" + }, + { + "start": 2946.47, + "duration": 0.0, + "text": "You've got a you've got a linear list at" + }, + { + "start": 2946.48, + "duration": 0.0, + "text": "You've got a you've got a linear list at that<00:49:06.720> point<00:49:06.880> you<00:49:07.119> know<00:49:07.280> how<00:49:07.599> big<00:49:07.839> each<00:49:08.079> of" + }, + { + "start": 2948.15, + "duration": 0.0, + "text": "that point you know how big each of" + }, + { + "start": 2948.16, + "duration": 0.0, + "text": "that point you know how big each of these<00:49:08.400> ranges<00:49:08.800> are.<00:49:09.359> Then<00:49:09.599> you<00:49:09.760> can<00:49:10.160> uh<00:49:10.400> window" + }, + { + "start": 2950.79, + "duration": 0.0, + "text": "these ranges are. Then you can uh window" + }, + { + "start": 2950.8, + "duration": 0.0, + "text": "these ranges are. Then you can uh window that<00:49:10.960> list.<00:49:11.280> it's<00:49:11.520> sort<00:49:11.680> of<00:49:12.000> um<00:49:13.440> you're" + }, + { + "start": 2953.67, + "duration": 0.0, + "text": "that list. it's sort of um you're" + }, + { + "start": 2953.68, + "duration": 0.0, + "text": "that list. it's sort of um you're performing<00:49:14.000> windowing<00:49:14.400> on<00:49:14.480> a<00:49:14.640> much<00:49:14.800> more" + }, + { + "start": 2954.95, + "duration": 0.0, + "text": "performing windowing on a much more" + }, + { + "start": 2954.96, + "duration": 0.0, + "text": "performing windowing on a much more limited<00:49:15.280> range<00:49:15.599> than<00:49:15.760> the<00:49:16.000> full<00:49:16.240> set<00:49:16.400> of" + }, + { + "start": 2956.549, + "duration": 0.0, + "text": "limited range than the full set of" + }, + { + "start": 2956.559, + "duration": 0.0, + "text": "limited range than the full set of possible<00:49:17.119> rows.<00:49:17.359> Right?" + }, + { + "start": 2960.309, + "duration": 0.0, + "text": "possible rows. Right?" + }, + { + "start": 2960.319, + "duration": 0.0, + "text": "possible rows. Right? So<00:49:20.720> uh<00:49:20.800> in<00:49:21.040> my<00:49:21.200> terminology<00:49:21.680> and<00:49:21.920> the<00:49:22.079> way<00:49:22.160> that" + }, + { + "start": 2962.309, + "duration": 0.0, + "text": "So uh in my terminology and the way that" + }, + { + "start": 2962.319, + "duration": 0.0, + "text": "So uh in my terminology and the way that I<00:49:22.480> implement<00:49:22.800> this<00:49:23.359> uh<00:49:23.599> each<00:49:23.839> one<00:49:24.000> of<00:49:24.079> those" + }, + { + "start": 2964.309, + "duration": 0.0, + "text": "I implement this uh each one of those" + }, + { + "start": 2964.319, + "duration": 0.0, + "text": "I implement this uh each one of those nodes<00:49:24.720> the<00:49:25.200> in<00:49:25.440> the<00:49:25.680> sort<00:49:25.920> of<00:49:26.079> tree<00:49:26.319> of<00:49:26.640> ranged" + }, + { + "start": 2967.109, + "duration": 0.0, + "text": "nodes the in the sort of tree of ranged" + }, + { + "start": 2967.119, + "duration": 0.0, + "text": "nodes the in the sort of tree of ranged evaluations<00:49:27.680> or<00:49:28.000> whatever<00:49:28.319> you<00:49:28.400> want<00:49:28.480> to<00:49:28.559> call" + }, + { + "start": 2968.71, + "duration": 0.0, + "text": "evaluations or whatever you want to call" + }, + { + "start": 2968.72, + "duration": 0.0, + "text": "evaluations or whatever you want to call it<00:49:28.960> I<00:49:29.119> call<00:49:29.280> it<00:49:29.440> a<00:49:29.599> block.<00:49:30.240> Um<00:49:31.599> and<00:49:31.760> so<00:49:31.920> to<00:49:32.160> do" + }, + { + "start": 2972.23, + "duration": 0.0, + "text": "it I call it a block. Um and so to do" + }, + { + "start": 2972.24, + "duration": 0.0, + "text": "it I call it a block. Um and so to do this<00:49:32.400> step<00:49:32.640> of<00:49:32.800> evaluation<00:49:33.839> visualization<00:49:34.480> we" + }, + { + "start": 2974.63, + "duration": 0.0, + "text": "this step of evaluation visualization we" + }, + { + "start": 2974.64, + "duration": 0.0, + "text": "this step of evaluation visualization we produce<00:49:34.880> a<00:49:35.040> block<00:49:35.280> tree<00:49:35.839> from<00:49:36.079> an<00:49:36.240> evaluation." + }, + { + "start": 2977.19, + "duration": 0.0, + "text": "produce a block tree from an evaluation." + }, + { + "start": 2977.2, + "duration": 0.0, + "text": "produce a block tree from an evaluation. So<00:49:37.359> a<00:49:37.599> block<00:49:38.000> contains<00:49:38.319> an<00:49:38.559> evaluation<00:49:39.440> some" + }, + { + "start": 2979.67, + "duration": 0.0, + "text": "So a block contains an evaluation some" + }, + { + "start": 2979.68, + "duration": 0.0, + "text": "So a block contains an evaluation some root<00:49:40.000> evaluation<00:49:40.480> and<00:49:40.640> then<00:49:40.800> it<00:49:40.960> says<00:49:41.760> uh<00:49:41.920> I'm" + }, + { + "start": 2982.15, + "duration": 0.0, + "text": "root evaluation and then it says uh I'm" + }, + { + "start": 2982.16, + "duration": 0.0, + "text": "root evaluation and then it says uh I'm the<00:49:42.480> range<00:49:42.720> of<00:49:43.280> you<00:49:43.440> know<00:49:43.599> 0<00:49:43.920> to<00:49:45.040> n<00:49:45.680> of<00:49:46.079> the<00:49:46.240> or" + }, + { + "start": 2986.63, + "duration": 0.0, + "text": "the range of you know 0 to n of the or" + }, + { + "start": 2986.64, + "duration": 0.0, + "text": "the range of you know 0 to n of the or you<00:49:46.800> know<00:49:47.119> n<00:49:47.280> to<00:49:47.520> n<00:49:47.760> maybe<00:49:48.640> uh<00:49:48.800> of<00:49:49.200> like<00:49:49.440> within" + }, + { + "start": 2989.829, + "duration": 0.0, + "text": "you know n to n maybe uh of like within" + }, + { + "start": 2989.839, + "duration": 0.0, + "text": "you know n to n maybe uh of like within this<00:49:50.079> evaluation<00:49:50.640> I'm<00:49:50.880> sort<00:49:51.040> of<00:49:51.200> like<00:49:51.440> here's" + }, + { + "start": 2991.67, + "duration": 0.0, + "text": "this evaluation I'm sort of like here's" + }, + { + "start": 2991.68, + "duration": 0.0, + "text": "this evaluation I'm sort of like here's the<00:49:51.839> root<00:49:52.000> evaluation<00:49:52.480> that<00:49:52.720> I'm<00:49:52.880> going<00:49:52.960> to" + }, + { + "start": 2993.03, + "duration": 0.0, + "text": "the root evaluation that I'm going to" + }, + { + "start": 2993.04, + "duration": 0.0, + "text": "the root evaluation that I'm going to look<00:49:53.200> at<00:49:53.359> the<00:49:53.839> these<00:49:54.319> children<00:49:54.559> of<00:49:54.800> that." + }, + { + "start": 2996.47, + "duration": 0.0, + "text": "look at the these children of that." + }, + { + "start": 2996.48, + "duration": 0.0, + "text": "look at the these children of that. Um,<00:49:57.839> so<00:49:58.640> given<00:49:58.960> this<00:49:59.200> example,<00:49:59.839> you've<00:50:00.000> got<00:50:00.079> a" + }, + { + "start": 3000.23, + "duration": 0.0, + "text": "Um, so given this example, you've got a" + }, + { + "start": 3000.24, + "duration": 0.0, + "text": "Um, so given this example, you've got a ve<00:50:00.640> 4<00:50:01.760> array<00:50:02.400> of<00:50:02.640> 1<00:50:02.880> billion<00:50:03.440> ve<00:50:03.760> 4s.<00:50:04.640> Um,<00:50:05.680> uh," + }, + { + "start": 3005.829, + "duration": 0.0, + "text": "ve 4 array of 1 billion ve 4s. Um, uh," + }, + { + "start": 3005.839, + "duration": 0.0, + "text": "ve 4 array of 1 billion ve 4s. Um, uh, with<00:50:06.000> the<00:50:06.160> element<00:50:06.480> at,<00:50:06.880> uh,<00:50:07.040> you've<00:50:07.200> got<00:50:07.280> the" + }, + { + "start": 3007.43, + "duration": 0.0, + "text": "with the element at, uh, you've got the" + }, + { + "start": 3007.44, + "duration": 0.0, + "text": "with the element at, uh, you've got the element<00:50:07.760> at<00:50:07.920> 1<00:50:08.160> million<00:50:08.559> expanded.<00:50:09.040> So<00:50:09.200> you've" + }, + { + "start": 3009.43, + "duration": 0.0, + "text": "element at 1 million expanded. So you've" + }, + { + "start": 3009.44, + "duration": 0.0, + "text": "element at 1 million expanded. So you've like<00:50:09.920> scrolled<00:50:10.319> a<00:50:10.559> long<00:50:10.720> way<00:50:10.880> and<00:50:11.119> then<00:50:11.200> you've" + }, + { + "start": 3011.43, + "duration": 0.0, + "text": "like scrolled a long way and then you've" + }, + { + "start": 3011.44, + "duration": 0.0, + "text": "like scrolled a long way and then you've like<00:50:11.599> clicked," + }, + { + "start": 3013.91, + "duration": 0.0, + "text": "like clicked," + }, + { + "start": 3013.92, + "duration": 0.0, + "text": "like clicked, you<00:50:14.160> get<00:50:14.240> this<00:50:14.480> block<00:50:14.720> tree,<00:50:14.960> right?<00:50:15.119> You've" + }, + { + "start": 3015.27, + "duration": 0.0, + "text": "you get this block tree, right? You've" + }, + { + "start": 3015.28, + "duration": 0.0, + "text": "you get this block tree, right? You've got<00:50:15.440> some<00:50:15.599> root<00:50:15.920> evaluation<00:50:16.480> for<00:50:16.720> array.<00:50:18.160> Um," + }, + { + "start": 3018.95, + "duration": 0.0, + "text": "got some root evaluation for array. Um," + }, + { + "start": 3018.96, + "duration": 0.0, + "text": "got some root evaluation for array. Um, and<00:50:19.119> then<00:50:19.280> when<00:50:19.440> you<00:50:19.599> expand<00:50:19.839> array,<00:50:20.160> you<00:50:20.319> need" + }, + { + "start": 3020.39, + "duration": 0.0, + "text": "and then when you expand array, you need" + }, + { + "start": 3020.4, + "duration": 0.0, + "text": "and then when you expand array, you need a<00:50:20.559> block<00:50:20.720> for<00:50:20.880> that<00:50:21.119> expansion.<00:50:21.599> So<00:50:21.680> you<00:50:21.839> get" + }, + { + "start": 3022.23, + "duration": 0.0, + "text": "a block for that expansion. So you get" + }, + { + "start": 3022.24, + "duration": 0.0, + "text": "a block for that expansion. So you get one<00:50:22.480> node<00:50:22.720> that's<00:50:23.040> 0<00:50:23.280> to<00:50:23.440> 1<00:50:23.680> billion.<00:50:24.160> And<00:50:24.400> then" + }, + { + "start": 3024.87, + "duration": 0.0, + "text": "one node that's 0 to 1 billion. And then" + }, + { + "start": 3024.88, + "duration": 0.0, + "text": "one node that's 0 to 1 billion. And then you've<00:50:25.119> got<00:50:25.440> one<00:50:25.680> node<00:50:26.000> for<00:50:26.160> the<00:50:26.319> members<00:50:26.559> of" + }, + { + "start": 3026.71, + "duration": 0.0, + "text": "you've got one node for the members of" + }, + { + "start": 3026.72, + "duration": 0.0, + "text": "you've got one node for the members of the<00:50:26.880> 1<00:50:27.119> millionth<00:50:27.839> or<00:50:28.160> sorry<00:50:29.040> 1<00:50:29.280> million<00:50:29.680> and" + }, + { + "start": 3029.99, + "duration": 0.0, + "text": "the 1 millionth or sorry 1 million and" + }, + { + "start": 3030.0, + "duration": 0.0, + "text": "the 1 millionth or sorry 1 million and first<00:50:30.400> element.<00:50:31.280> Um<00:50:31.760> you<00:50:31.920> get<00:50:32.160> you<00:50:32.480> hopefully" + }, + { + "start": 3032.79, + "duration": 0.0, + "text": "first element. Um you get you hopefully" + }, + { + "start": 3032.8, + "duration": 0.0, + "text": "first element. Um you get you hopefully get<00:50:32.960> the<00:50:33.119> picture." + }, + { + "start": 3039.04, + "duration": 0.0, + "text": "Um" + }, + { + "start": 3042.48, + "duration": 0.0, + "text": "so<00:50:43.280> um<00:50:44.400> when<00:50:44.640> we're<00:50:44.880> actually<00:50:45.040> building<00:50:45.280> this" + }, + { + "start": 3045.51, + "duration": 0.0, + "text": "so um when we're actually building this" + }, + { + "start": 3045.52, + "duration": 0.0, + "text": "so um when we're actually building this block<00:50:45.760> tree<00:50:45.920> structure<00:50:46.240> so<00:50:46.400> we<00:50:46.559> have<00:50:46.720> an" + }, + { + "start": 3046.87, + "duration": 0.0, + "text": "block tree structure so we have an" + }, + { + "start": 3046.88, + "duration": 0.0, + "text": "block tree structure so we have an evaluation<00:50:47.680> we<00:50:47.839> need<00:50:48.000> to<00:50:48.079> sort<00:50:48.240> of<00:50:48.400> build<00:50:48.640> this" + }, + { + "start": 3048.87, + "duration": 0.0, + "text": "evaluation we need to sort of build this" + }, + { + "start": 3048.88, + "duration": 0.0, + "text": "evaluation we need to sort of build this block<00:50:49.200> structure<00:50:49.520> here.<00:50:50.720> And<00:50:51.040> the<00:50:51.200> way<00:50:51.359> we<00:50:51.520> can" + }, + { + "start": 3051.589, + "duration": 0.0, + "text": "block structure here. And the way we can" + }, + { + "start": 3051.599, + "duration": 0.0, + "text": "block structure here. And the way we can do<00:50:51.760> that<00:50:51.920> is<00:50:52.079> by<00:50:52.319> storing<00:50:52.800> some<00:50:53.119> kind<00:50:53.359> of" + }, + { + "start": 3053.75, + "duration": 0.0, + "text": "do that is by storing some kind of" + }, + { + "start": 3053.76, + "duration": 0.0, + "text": "do that is by storing some kind of expansion<00:50:54.240> state,<00:50:54.559> right?<00:50:54.720> We<00:50:54.880> need<00:50:54.960> to<00:50:55.200> sort" + }, + { + "start": 3055.349, + "duration": 0.0, + "text": "expansion state, right? We need to sort" + }, + { + "start": 3055.359, + "duration": 0.0, + "text": "expansion state, right? We need to sort of<00:50:55.680> have<00:50:55.920> some<00:50:56.240> data<00:50:56.559> structure<00:50:56.880> that<00:50:57.200> records" + }, + { + "start": 3058.39, + "duration": 0.0, + "text": "of have some data structure that records" + }, + { + "start": 3058.4, + "duration": 0.0, + "text": "of have some data structure that records which<00:50:58.640> nodes<00:50:58.960> are<00:50:59.119> expanded.<00:50:59.599> And<00:50:59.760> how<00:50:59.920> do<00:51:00.000> we" + }, + { + "start": 3060.15, + "duration": 0.0, + "text": "which nodes are expanded. And how do we" + }, + { + "start": 3060.16, + "duration": 0.0, + "text": "which nodes are expanded. And how do we record<00:51:00.480> that<00:51:00.800> if<00:51:01.200> you<00:51:01.359> know<00:51:01.440> we<00:51:01.680> don't<00:51:01.839> want<00:51:01.920> to" + }, + { + "start": 3062.069, + "duration": 0.0, + "text": "record that if you know we don't want to" + }, + { + "start": 3062.079, + "duration": 0.0, + "text": "record that if you know we don't want to store<00:51:02.400> something<00:51:02.640> for<00:51:02.800> every<00:51:03.119> row<00:51:03.200> because" + }, + { + "start": 3063.349, + "duration": 0.0, + "text": "store something for every row because" + }, + { + "start": 3063.359, + "duration": 0.0, + "text": "store something for every row because then<00:51:03.520> we're<00:51:03.599> back<00:51:03.760> in<00:51:03.920> the<00:51:04.079> same<00:51:04.319> problem," + }, + { + "start": 3064.63, + "duration": 0.0, + "text": "then we're back in the same problem," + }, + { + "start": 3064.64, + "duration": 0.0, + "text": "then we're back in the same problem, right?<00:51:04.880> It's<00:51:05.040> like<00:51:05.680> I<00:51:05.839> don't<00:51:06.000> want<00:51:06.079> to<00:51:06.240> store<00:51:06.559> 1" + }, + { + "start": 3066.71, + "duration": 0.0, + "text": "right? It's like I don't want to store 1" + }, + { + "start": 3066.72, + "duration": 0.0, + "text": "right? It's like I don't want to store 1 billion<00:51:07.200> expansion<00:51:07.680> states,<00:51:08.240> right?<00:51:08.559> Um<00:51:08.880> so" + }, + { + "start": 3069.109, + "duration": 0.0, + "text": "billion expansion states, right? Um so" + }, + { + "start": 3069.119, + "duration": 0.0, + "text": "billion expansion states, right? Um so we<00:51:09.359> need<00:51:09.440> to<00:51:09.599> find<00:51:09.839> some<00:51:10.079> kind<00:51:10.240> of<00:51:10.480> sparse" + }, + { + "start": 3071.109, + "duration": 0.0, + "text": "we need to find some kind of sparse" + }, + { + "start": 3071.119, + "duration": 0.0, + "text": "we need to find some kind of sparse representation<00:51:12.319> for<00:51:12.559> that<00:51:12.800> information." + }, + { + "start": 3076.24, + "duration": 0.0, + "text": "Um<00:51:16.960> so<00:51:17.280> to<00:51:17.520> see<00:51:17.680> how<00:51:17.839> that<00:51:18.000> might<00:51:18.240> work," + }, + { + "start": 3078.63, + "duration": 0.0, + "text": "Um so to see how that might work," + }, + { + "start": 3078.64, + "duration": 0.0, + "text": "Um so to see how that might work, consider<00:51:18.960> a<00:51:19.119> watch<00:51:19.440> tree<00:51:19.680> like<00:51:19.920> this.<00:51:20.880> Um<00:51:21.359> you" + }, + { + "start": 3081.589, + "duration": 0.0, + "text": "consider a watch tree like this. Um you" + }, + { + "start": 3081.599, + "duration": 0.0, + "text": "consider a watch tree like this. Um you need<00:51:21.760> a<00:51:21.920> data<00:51:22.160> structure<00:51:22.400> which<00:51:22.800> would<00:51:23.119> be" + }, + { + "start": 3083.27, + "duration": 0.0, + "text": "need a data structure which would be" + }, + { + "start": 3083.28, + "duration": 0.0, + "text": "need a data structure which would be able<00:51:23.440> to<00:51:23.760> sort<00:51:24.000> of<00:51:24.079> uniquely<00:51:24.720> pick<00:51:25.040> out" + }, + { + "start": 3085.349, + "duration": 0.0, + "text": "able to sort of uniquely pick out" + }, + { + "start": 3085.359, + "duration": 0.0, + "text": "able to sort of uniquely pick out certain<00:51:25.760> points<00:51:26.000> in<00:51:26.240> the<00:51:26.400> tree<00:51:27.280> and<00:51:27.680> store<00:51:27.839> a" + }, + { + "start": 3088.069, + "duration": 0.0, + "text": "certain points in the tree and store a" + }, + { + "start": 3088.079, + "duration": 0.0, + "text": "certain points in the tree and store a state<00:51:28.240> for<00:51:28.480> them<00:51:28.720> and<00:51:28.960> store<00:51:29.200> only<00:51:29.520> those" + }, + { + "start": 3089.75, + "duration": 0.0, + "text": "state for them and store only those" + }, + { + "start": 3089.76, + "duration": 0.0, + "text": "state for them and store only those expansion<00:51:30.240> states." + }, + { + "start": 3091.99, + "duration": 0.0, + "text": "expansion states." + }, + { + "start": 3092.0, + "duration": 0.0, + "text": "expansion states. Um<00:51:32.880> so<00:51:33.119> let's<00:51:33.359> say<00:51:33.520> A,<00:51:33.760> B,<00:51:34.000> C,<00:51:34.079> and<00:51:34.319> D.<00:51:34.559> Those" + }, + { + "start": 3094.71, + "duration": 0.0, + "text": "Um so let's say A, B, C, and D. Those" + }, + { + "start": 3094.72, + "duration": 0.0, + "text": "Um so let's say A, B, C, and D. Those are<00:51:34.800> the<00:51:34.960> nodes<00:51:35.359> that<00:51:35.599> we<00:51:35.760> want<00:51:35.920> to<00:51:36.079> sort<00:51:36.240> of<00:51:36.319> be" + }, + { + "start": 3096.39, + "duration": 0.0, + "text": "are the nodes that we want to sort of be" + }, + { + "start": 3096.4, + "duration": 0.0, + "text": "are the nodes that we want to sort of be able<00:51:36.559> to<00:51:36.720> uniquely<00:51:37.119> define." + }, + { + "start": 3099.43, + "duration": 0.0, + "text": "able to uniquely define." + }, + { + "start": 3099.44, + "duration": 0.0, + "text": "able to uniquely define. And<00:51:39.599> then<00:51:39.839> you<00:51:39.920> know<00:51:40.000> once<00:51:40.240> we<00:51:40.400> have<00:51:40.480> that<00:51:40.720> data" + }, + { + "start": 3100.95, + "duration": 0.0, + "text": "And then you know once we have that data" + }, + { + "start": 3100.96, + "duration": 0.0, + "text": "And then you know once we have that data structure<00:51:41.520> when<00:51:41.760> we're<00:51:41.920> building<00:51:42.160> the<00:51:42.319> block" + }, + { + "start": 3102.47, + "duration": 0.0, + "text": "structure when we're building the block" + }, + { + "start": 3102.48, + "duration": 0.0, + "text": "structure when we're building the block tree<00:51:42.640> we<00:51:42.800> can<00:51:42.880> go<00:51:42.960> ahead<00:51:43.200> and<00:51:43.359> say<00:51:43.839> here's<00:51:44.160> my" + }, + { + "start": 3104.47, + "duration": 0.0, + "text": "tree we can go ahead and say here's my" + }, + { + "start": 3104.48, + "duration": 0.0, + "text": "tree we can go ahead and say here's my here's<00:51:44.800> my<00:51:45.440> spot<00:51:45.680> in<00:51:45.839> the<00:51:46.000> tree<00:51:46.400> check<00:51:46.559> if<00:51:46.800> it's" + }, + { + "start": 3106.95, + "duration": 0.0, + "text": "here's my spot in the tree check if it's" + }, + { + "start": 3106.96, + "duration": 0.0, + "text": "here's my spot in the tree check if it's expanded<00:51:48.000> um<00:51:48.160> in<00:51:48.400> the<00:51:48.559> sparse<00:51:48.960> expansion" + }, + { + "start": 3109.349, + "duration": 0.0, + "text": "expanded um in the sparse expansion" + }, + { + "start": 3109.359, + "duration": 0.0, + "text": "expanded um in the sparse expansion state<00:51:49.760> and<00:51:49.920> if<00:51:50.160> it's<00:51:50.400> expanded<00:51:50.880> then<00:51:51.040> we" + }, + { + "start": 3111.43, + "duration": 0.0, + "text": "state and if it's expanded then we" + }, + { + "start": 3111.44, + "duration": 0.0, + "text": "state and if it's expanded then we recursively<00:51:52.000> descend<00:51:52.319> right<00:51:52.640> then<00:51:52.800> we<00:51:52.960> build" + }, + { + "start": 3113.109, + "duration": 0.0, + "text": "recursively descend right then we build" + }, + { + "start": 3113.119, + "duration": 0.0, + "text": "recursively descend right then we build another<00:51:53.440> block<00:51:53.680> in<00:51:53.920> the<00:51:54.079> in<00:51:54.240> the<00:51:54.400> block<00:51:54.559> tree." + }, + { + "start": 3116.39, + "duration": 0.0, + "text": "another block in the in the block tree." + }, + { + "start": 3116.4, + "duration": 0.0, + "text": "another block in the in the block tree. Oh<00:51:56.720> no." + }, + { + "start": 3119.27, + "duration": 0.0, + "text": "Oh no." + }, + { + "start": 3119.28, + "duration": 0.0, + "text": "Oh no. Okay.<00:51:59.920> One<00:52:00.240> way<00:52:00.319> of<00:52:00.480> defining<00:52:01.119> uh<00:52:01.280> A,<00:52:01.520> B,<00:52:01.680> C," + }, + { + "start": 3121.75, + "duration": 0.0, + "text": "Okay. One way of defining uh A, B, C," + }, + { + "start": 3121.76, + "duration": 0.0, + "text": "Okay. One way of defining uh A, B, C, and<00:52:02.000> D<00:52:02.400> for<00:52:02.720> any<00:52:03.040> tree" + }, + { + "start": 3124.549, + "duration": 0.0, + "text": "and D for any tree" + }, + { + "start": 3124.559, + "duration": 0.0, + "text": "and D for any tree um<00:52:04.880> is<00:52:05.119> to<00:52:05.440> store<00:52:05.760> a<00:52:06.079> walk<00:52:06.480> from<00:52:06.720> the<00:52:06.880> root<00:52:07.119> node" + }, + { + "start": 3127.27, + "duration": 0.0, + "text": "um is to store a walk from the root node" + }, + { + "start": 3127.28, + "duration": 0.0, + "text": "um is to store a walk from the root node of<00:52:07.440> the<00:52:07.599> tree<00:52:08.000> down<00:52:09.040> um<00:52:09.359> to<00:52:09.599> whatever<00:52:10.000> child" + }, + { + "start": 3130.309, + "duration": 0.0, + "text": "of the tree down um to whatever child" + }, + { + "start": 3130.319, + "duration": 0.0, + "text": "of the tree down um to whatever child you're<00:52:10.480> going<00:52:10.559> to<00:52:10.640> end<00:52:10.800> up<00:52:10.960> at.<00:52:11.599> Um<00:52:12.240> so,<00:52:12.640> you" + }, + { + "start": 3132.79, + "duration": 0.0, + "text": "you're going to end up at. Um so, you" + }, + { + "start": 3132.8, + "duration": 0.0, + "text": "you're going to end up at. Um so, you know,<00:52:12.960> consider<00:52:13.359> that<00:52:14.000> uh<00:52:14.559> we<00:52:14.880> know<00:52:15.680> that<00:52:16.160> each" + }, + { + "start": 3136.79, + "duration": 0.0, + "text": "know, consider that uh we know that each" + }, + { + "start": 3136.8, + "duration": 0.0, + "text": "know, consider that uh we know that each we<00:52:17.119> know<00:52:17.359> each<00:52:17.839> uh<00:52:18.000> index<00:52:18.400> within<00:52:18.720> some<00:52:19.040> parent" + }, + { + "start": 3140.549, + "duration": 0.0, + "text": "we know each uh index within some parent" + }, + { + "start": 3140.559, + "duration": 0.0, + "text": "we know each uh index within some parent uh<00:52:21.280> of<00:52:21.599> some<00:52:21.920> of<00:52:22.160> some<00:52:22.400> one<00:52:22.559> of<00:52:22.640> these<00:52:22.880> rows.<00:52:23.040> We" + }, + { + "start": 3143.19, + "duration": 0.0, + "text": "uh of some of some one of these rows. We" + }, + { + "start": 3143.2, + "duration": 0.0, + "text": "uh of some of some one of these rows. We know<00:52:23.280> the<00:52:23.440> index<00:52:23.760> within<00:52:24.000> its<00:52:24.240> parent,<00:52:24.559> right?" + }, + { + "start": 3145.27, + "duration": 0.0, + "text": "know the index within its parent, right?" + }, + { + "start": 3145.28, + "duration": 0.0, + "text": "know the index within its parent, right? So,<00:52:25.440> we've<00:52:25.680> got<00:52:26.240> one<00:52:26.480> is<00:52:26.640> the<00:52:26.800> first<00:52:26.960> one<00:52:27.119> at" + }, + { + "start": 3147.27, + "duration": 0.0, + "text": "So, we've got one is the first one at" + }, + { + "start": 3147.28, + "duration": 0.0, + "text": "So, we've got one is the first one at the<00:52:27.440> root<00:52:27.760> level.<00:52:28.400> We've<00:52:28.640> got<00:52:28.800> one<00:52:29.200> underneath" + }, + { + "start": 3149.67, + "duration": 0.0, + "text": "the root level. We've got one underneath" + }, + { + "start": 3149.68, + "duration": 0.0, + "text": "the root level. We've got one underneath that<00:52:30.800> and<00:52:30.960> then<00:52:31.119> we've<00:52:31.359> got<00:52:31.839> one<00:52:32.079> and<00:52:32.319> two" + }, + { + "start": 3152.71, + "duration": 0.0, + "text": "that and then we've got one and two" + }, + { + "start": 3152.72, + "duration": 0.0, + "text": "that and then we've got one and two underneath<00:52:33.200> that." + }, + { + "start": 3157.2, + "duration": 0.0, + "text": "This<00:52:37.359> node's<00:52:37.839> ID<00:52:38.079> can<00:52:38.319> then<00:52:38.559> be<00:52:39.200> uh<00:52:39.280> encoded<00:52:39.760> as" + }, + { + "start": 3159.99, + "duration": 0.0, + "text": "This node's ID can then be uh encoded as" + }, + { + "start": 3160.0, + "duration": 0.0, + "text": "This node's ID can then be uh encoded as okay<00:52:40.319> well<00:52:40.640> we<00:52:40.880> start<00:52:41.040> at<00:52:41.599> one<00:52:41.839> and<00:52:42.000> then<00:52:42.160> we" + }, + { + "start": 3162.309, + "duration": 0.0, + "text": "okay well we start at one and then we" + }, + { + "start": 3162.319, + "duration": 0.0, + "text": "okay well we start at one and then we walk<00:52:42.559> to<00:52:42.720> one." + }, + { + "start": 3164.549, + "duration": 0.0, + "text": "walk to one." + }, + { + "start": 3164.559, + "duration": 0.0, + "text": "walk to one. Um<00:52:45.839> here<00:52:46.319> you<00:52:46.480> know<00:52:46.559> you<00:52:46.720> you<00:52:46.960> start<00:52:47.119> at<00:52:47.359> one" + }, + { + "start": 3167.829, + "duration": 0.0, + "text": "Um here you know you you start at one" + }, + { + "start": 3167.839, + "duration": 0.0, + "text": "Um here you know you you start at one you<00:52:48.000> walk<00:52:48.160> to<00:52:48.400> one<00:52:48.640> you<00:52:48.800> walk<00:52:48.960> to<00:52:49.119> two.<00:52:49.440> That's" + }, + { + "start": 3169.67, + "duration": 0.0, + "text": "you walk to one you walk to two. That's" + }, + { + "start": 3169.68, + "duration": 0.0, + "text": "you walk to one you walk to two. That's that<00:52:49.920> that's<00:52:50.160> how<00:52:50.240> we<00:52:50.400> can<00:52:50.480> encode<00:52:50.800> that" + }, + { + "start": 3170.95, + "duration": 0.0, + "text": "that that's how we can encode that" + }, + { + "start": 3170.96, + "duration": 0.0, + "text": "that that's how we can encode that position<00:52:51.200> in<00:52:51.440> the<00:52:51.520> tree<00:52:52.240> here." + }, + { + "start": 3172.87, + "duration": 0.0, + "text": "position in the tree here." + }, + { + "start": 3172.88, + "duration": 0.0, + "text": "position in the tree here. Unsurprisingly<00:52:53.520> one<00:52:53.680> to<00:52:53.839> one<00:52:54.000> to<00:52:54.160> one." + }, + { + "start": 3176.309, + "duration": 0.0, + "text": "Unsurprisingly one to one to one." + }, + { + "start": 3176.319, + "duration": 0.0, + "text": "Unsurprisingly one to one to one. Now," + }, + { + "start": 3179.839, + "duration": 0.0, + "text": "okay,<00:53:00.640> right.<00:53:01.040> One<00:53:01.280> undesirable<00:53:02.079> property<00:53:02.400> of" + }, + { + "start": 3182.549, + "duration": 0.0, + "text": "okay, right. One undesirable property of" + }, + { + "start": 3182.559, + "duration": 0.0, + "text": "okay, right. One undesirable property of this<00:53:02.720> is<00:53:02.880> that<00:53:03.040> this<00:53:03.200> is<00:53:03.359> like<00:53:03.520> a<00:53:04.079> variable" + }, + { + "start": 3184.47, + "duration": 0.0, + "text": "this is that this is like a variable" + }, + { + "start": 3184.48, + "duration": 0.0, + "text": "this is that this is like a variable length<00:53:04.800> encoding<00:53:05.359> of<00:53:05.599> a<00:53:05.760> particular<00:53:06.079> spot<00:53:06.240> in" + }, + { + "start": 3186.39, + "duration": 0.0, + "text": "length encoding of a particular spot in" + }, + { + "start": 3186.4, + "duration": 0.0, + "text": "length encoding of a particular spot in the<00:53:06.559> tree.<00:53:06.880> You<00:53:07.040> have<00:53:07.200> to<00:53:07.280> store<00:53:07.440> this<00:53:07.680> chain" + }, + { + "start": 3187.91, + "duration": 0.0, + "text": "the tree. You have to store this chain" + }, + { + "start": 3187.92, + "duration": 0.0, + "text": "the tree. You have to store this chain of<00:53:08.079> walk<00:53:08.720> steps<00:53:09.200> to<00:53:09.520> get<00:53:09.680> from<00:53:09.839> the<00:53:10.000> root<00:53:10.240> node" + }, + { + "start": 3190.549, + "duration": 0.0, + "text": "of walk steps to get from the root node" + }, + { + "start": 3190.559, + "duration": 0.0, + "text": "of walk steps to get from the root node down.<00:53:11.359> Um,<00:53:12.720> and<00:53:13.040> so<00:53:13.520> all<00:53:13.760> your<00:53:14.079> ids<00:53:14.319> become" + }, + { + "start": 3194.549, + "duration": 0.0, + "text": "down. Um, and so all your ids become" + }, + { + "start": 3194.559, + "duration": 0.0, + "text": "down. Um, and so all your ids become variable<00:53:14.880> lengths.<00:53:15.200> Now,<00:53:15.359> obviously<00:53:15.680> you" + }, + { + "start": 3195.829, + "duration": 0.0, + "text": "variable lengths. Now, obviously you" + }, + { + "start": 3195.839, + "duration": 0.0, + "text": "variable lengths. Now, obviously you could<00:53:16.000> just<00:53:16.160> do<00:53:16.319> that,<00:53:16.800> but<00:53:17.040> I<00:53:17.200> figured<00:53:17.440> I" + }, + { + "start": 3197.589, + "duration": 0.0, + "text": "could just do that, but I figured I" + }, + { + "start": 3197.599, + "duration": 0.0, + "text": "could just do that, but I figured I would<00:53:17.680> include<00:53:18.000> how<00:53:18.160> you<00:53:18.400> don't<00:53:18.559> do<00:53:18.720> that<00:53:18.880> or" + }, + { + "start": 3199.19, + "duration": 0.0, + "text": "would include how you don't do that or" + }, + { + "start": 3199.2, + "duration": 0.0, + "text": "would include how you don't do that or how<00:53:19.359> you<00:53:19.520> don't<00:53:19.680> need<00:53:19.839> to<00:53:20.000> do<00:53:20.160> that.<00:53:20.559> Um<00:53:20.880> simple" + }, + { + "start": 3201.109, + "duration": 0.0, + "text": "how you don't need to do that. Um simple" + }, + { + "start": 3201.119, + "duration": 0.0, + "text": "how you don't need to do that. Um simple way<00:53:21.280> to<00:53:21.440> eliminate<00:53:21.839> that<00:53:22.640> would<00:53:22.960> just<00:53:23.200> be" + }, + { + "start": 3203.43, + "duration": 0.0, + "text": "way to eliminate that would just be" + }, + { + "start": 3203.44, + "duration": 0.0, + "text": "way to eliminate that would just be consider<00:53:24.480> first<00:53:24.720> we<00:53:24.960> can<00:53:25.040> consider<00:53:25.359> it<00:53:25.520> as" + }, + { + "start": 3205.67, + "duration": 0.0, + "text": "consider first we can consider it as" + }, + { + "start": 3205.68, + "duration": 0.0, + "text": "consider first we can consider it as sort<00:53:25.760> of<00:53:25.839> a<00:53:26.079> parent<00:53:27.359> uh<00:53:27.599> ID<00:53:27.920> and<00:53:28.079> then<00:53:28.240> some" + }, + { + "start": 3208.47, + "duration": 0.0, + "text": "sort of a parent uh ID and then some" + }, + { + "start": 3208.48, + "duration": 0.0, + "text": "sort of a parent uh ID and then some child<00:53:28.880> ID.<00:53:29.520> Uh<00:53:29.760> so<00:53:29.920> we<00:53:30.079> have<00:53:30.240> some<00:53:30.800> encoding<00:53:31.440> of" + }, + { + "start": 3211.75, + "duration": 0.0, + "text": "child ID. Uh so we have some encoding of" + }, + { + "start": 3211.76, + "duration": 0.0, + "text": "child ID. Uh so we have some encoding of the<00:53:32.079> walk<00:53:32.480> from<00:53:33.119> uh<00:53:33.359> the<00:53:33.599> walk<00:53:33.760> to<00:53:33.920> the<00:53:34.079> parent" + }, + { + "start": 3214.549, + "duration": 0.0, + "text": "the walk from uh the walk to the parent" + }, + { + "start": 3214.559, + "duration": 0.0, + "text": "the walk from uh the walk to the parent and<00:53:34.800> then<00:53:34.960> we<00:53:35.359> encode<00:53:35.760> the<00:53:35.920> additional<00:53:36.319> step" + }, + { + "start": 3216.549, + "duration": 0.0, + "text": "and then we encode the additional step" + }, + { + "start": 3216.559, + "duration": 0.0, + "text": "and then we encode the additional step that<00:53:36.720> we<00:53:36.880> take<00:53:37.440> at<00:53:37.760> this<00:53:38.000> particular<00:53:38.319> spot<00:53:38.640> by" + }, + { + "start": 3218.79, + "duration": 0.0, + "text": "that we take at this particular spot by" + }, + { + "start": 3218.8, + "duration": 0.0, + "text": "that we take at this particular spot by saying<00:53:39.119> here's<00:53:39.359> my<00:53:39.599> child<00:53:39.920> index<00:53:40.319> or<00:53:40.559> ID<00:53:40.800> or" + }, + { + "start": 3220.95, + "duration": 0.0, + "text": "saying here's my child index or ID or" + }, + { + "start": 3220.96, + "duration": 0.0, + "text": "saying here's my child index or ID or whatever." + }, + { + "start": 3224.559, + "duration": 0.0, + "text": "So<00:53:45.119> um<00:53:45.920> this<00:53:46.160> node<00:53:46.480> here<00:53:47.200> uh<00:53:47.359> the<00:53:47.760> the<00:53:48.640> yellow" + }, + { + "start": 3229.43, + "duration": 0.0, + "text": "So um this node here uh the the yellow" + }, + { + "start": 3229.44, + "duration": 0.0, + "text": "So um this node here uh the the yellow one<00:53:49.680> the<00:53:50.000> one<00:53:50.240> circled<00:53:50.559> in<00:53:50.720> yellow<00:53:51.280> the<00:53:51.520> way<00:53:51.599> we" + }, + { + "start": 3231.75, + "duration": 0.0, + "text": "one the one circled in yellow the way we" + }, + { + "start": 3231.76, + "duration": 0.0, + "text": "one the one circled in yellow the way we define<00:53:52.000> that<00:53:52.160> key<00:53:52.400> is<00:53:52.559> you<00:53:52.720> know<00:53:52.800> we<00:53:52.880> have<00:53:52.960> some" + }, + { + "start": 3233.109, + "duration": 0.0, + "text": "define that key is you know we have some" + }, + { + "start": 3233.119, + "duration": 0.0, + "text": "define that key is you know we have some encoding<00:53:53.440> of<00:53:53.599> the<00:53:53.680> walk<00:53:53.839> to<00:53:54.000> the<00:53:54.160> parent" + }, + { + "start": 3234.47, + "duration": 0.0, + "text": "encoding of the walk to the parent" + }, + { + "start": 3234.48, + "duration": 0.0, + "text": "encoding of the walk to the parent unique<00:53:54.880> child<00:53:55.200> ID<00:53:55.920> this<00:53:56.160> one<00:53:56.559> same<00:53:56.880> thing" + }, + { + "start": 3239.03, + "duration": 0.0, + "text": "unique child ID this one same thing" + }, + { + "start": 3239.04, + "duration": 0.0, + "text": "unique child ID this one same thing really<00:53:59.359> easy<00:53:59.599> way<00:53:59.680> to<00:53:59.839> do<00:54:00.000> that<00:54:00.400> get<00:54:00.559> a" + }, + { + "start": 3240.71, + "duration": 0.0, + "text": "really easy way to do that get a" + }, + { + "start": 3240.72, + "duration": 0.0, + "text": "really easy way to do that get a cumulative<00:54:01.200> hash<00:54:01.599> of<00:54:01.839> the<00:54:02.079> walk.<00:54:02.480> So" + }, + { + "start": 3243.03, + "duration": 0.0, + "text": "cumulative hash of the walk. So" + }, + { + "start": 3243.04, + "duration": 0.0, + "text": "cumulative hash of the walk. So basically<00:54:03.520> we<00:54:03.760> can<00:54:03.920> start<00:54:04.160> we<00:54:04.400> start<00:54:04.559> with" + }, + { + "start": 3244.71, + "duration": 0.0, + "text": "basically we can start we start with" + }, + { + "start": 3244.72, + "duration": 0.0, + "text": "basically we can start we start with some<00:54:04.880> default<00:54:05.280> hash<00:54:06.000> and<00:54:06.160> then<00:54:06.400> some<00:54:06.559> some<00:54:06.960> ID" + }, + { + "start": 3247.19, + "duration": 0.0, + "text": "some default hash and then some some ID" + }, + { + "start": 3247.2, + "duration": 0.0, + "text": "some default hash and then some some ID for<00:54:07.280> the<00:54:07.440> root<00:54:07.680> node<00:54:08.079> and<00:54:08.319> then<00:54:08.480> we<00:54:08.720> hash<00:54:09.040> that" + }, + { + "start": 3249.27, + "duration": 0.0, + "text": "for the root node and then we hash that" + }, + { + "start": 3249.28, + "duration": 0.0, + "text": "for the root node and then we hash that and<00:54:09.520> that's<00:54:09.680> an<00:54:09.839> encoding<00:54:10.240> of<00:54:10.400> the<00:54:10.559> walk<00:54:10.720> to" + }, + { + "start": 3250.87, + "duration": 0.0, + "text": "and that's an encoding of the walk to" + }, + { + "start": 3250.88, + "duration": 0.0, + "text": "and that's an encoding of the walk to the<00:54:11.040> parent<00:54:11.599> recursively.<00:54:12.240> Right?<00:54:12.480> So<00:54:12.960> for<00:54:13.200> so" + }, + { + "start": 3253.43, + "duration": 0.0, + "text": "the parent recursively. Right? So for so" + }, + { + "start": 3253.44, + "duration": 0.0, + "text": "the parent recursively. Right? So for so for<00:54:13.680> the<00:54:14.400> for<00:54:14.640> the<00:54:14.800> middle<00:54:14.960> one<00:54:15.119> there<00:54:15.359> we<00:54:15.520> hash" + }, + { + "start": 3255.829, + "duration": 0.0, + "text": "for the for the middle one there we hash" + }, + { + "start": 3255.839, + "duration": 0.0, + "text": "for the for the middle one there we hash the<00:54:16.000> top<00:54:16.160> one<00:54:16.559> we<00:54:16.800> get<00:54:16.880> some<00:54:17.119> ID.<00:54:17.839> Um<00:54:18.880> similarly" + }, + { + "start": 3259.829, + "duration": 0.0, + "text": "the top one we get some ID. Um similarly" + }, + { + "start": 3259.839, + "duration": 0.0, + "text": "the top one we get some ID. Um similarly oh<00:54:20.079> my<00:54:20.240> gosh<00:54:21.200> this<00:54:21.440> thing<00:54:21.760> sticks." + }, + { + "start": 3264.63, + "duration": 0.0, + "text": "oh my gosh this thing sticks." + }, + { + "start": 3264.64, + "duration": 0.0, + "text": "oh my gosh this thing sticks. Okay." + }, + { + "start": 3266.39, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 3266.4, + "duration": 0.0, + "text": "Okay. Okay.<00:54:26.880> All<00:54:26.880> right.<00:54:27.200> All<00:54:27.200> right.<00:54:27.520> All<00:54:27.520> right." + }, + { + "start": 3269.43, + "duration": 0.0, + "text": "Okay. All right. All right. All right." + }, + { + "start": 3269.44, + "duration": 0.0, + "text": "Okay. All right. All right. All right. That<00:54:29.760> one" + }, + { + "start": 3271.829, + "duration": 0.0, + "text": "That one" + }, + { + "start": 3271.839, + "duration": 0.0, + "text": "That one ignore<00:54:32.160> everything<00:54:32.480> you<00:54:32.640> just<00:54:32.880> saw.<00:54:33.920> Um<00:54:34.319> that" + }, + { + "start": 3274.549, + "duration": 0.0, + "text": "ignore everything you just saw. Um that" + }, + { + "start": 3274.559, + "duration": 0.0, + "text": "ignore everything you just saw. Um that one<00:54:34.800> you<00:54:34.880> know<00:54:34.960> you<00:54:35.119> hash<00:54:35.359> the<00:54:35.520> parent<00:54:35.920> and<00:54:36.160> so" + }, + { + "start": 3276.309, + "duration": 0.0, + "text": "one you know you hash the parent and so" + }, + { + "start": 3276.319, + "duration": 0.0, + "text": "one you know you hash the parent and so on.<00:54:36.559> Right." + }, + { + "start": 3277.829, + "duration": 0.0, + "text": "on. Right." + }, + { + "start": 3277.839, + "duration": 0.0, + "text": "on. Right. So<00:54:38.319> then<00:54:38.720> because<00:54:39.040> you<00:54:39.280> can<00:54:39.440> have<00:54:39.520> these<00:54:39.760> like" + }, + { + "start": 3279.91, + "duration": 0.0, + "text": "So then because you can have these like" + }, + { + "start": 3279.92, + "duration": 0.0, + "text": "So then because you can have these like sort<00:54:40.079> of<00:54:40.160> unique<00:54:40.480> keys,<00:54:41.119> it's<00:54:41.280> pretty<00:54:41.440> easy<00:54:41.599> at" + }, + { + "start": 3281.75, + "duration": 0.0, + "text": "sort of unique keys, it's pretty easy at" + }, + { + "start": 3281.76, + "duration": 0.0, + "text": "sort of unique keys, it's pretty easy at that<00:54:41.920> point<00:54:42.079> to<00:54:42.319> have<00:54:42.480> a<00:54:42.640> sparse<00:54:43.200> data" + }, + { + "start": 3283.51, + "duration": 0.0, + "text": "that point to have a sparse data" + }, + { + "start": 3283.52, + "duration": 0.0, + "text": "that point to have a sparse data structure<00:54:43.760> that's<00:54:44.079> like<00:54:44.480> look,<00:54:44.720> we're<00:54:44.880> only" + }, + { + "start": 3285.03, + "duration": 0.0, + "text": "structure that's like look, we're only" + }, + { + "start": 3285.04, + "duration": 0.0, + "text": "structure that's like look, we're only talking<00:54:45.280> about<00:54:45.359> the<00:54:45.599> hashes<00:54:45.920> that<00:54:46.160> have" + }, + { + "start": 3286.309, + "duration": 0.0, + "text": "talking about the hashes that have" + }, + { + "start": 3286.319, + "duration": 0.0, + "text": "talking about the hashes that have actually<00:54:46.559> the<00:54:46.800> hashes<00:54:47.040> and<00:54:47.359> ids<00:54:47.599> that<00:54:47.680> have" + }, + { + "start": 3287.91, + "duration": 0.0, + "text": "actually the hashes and ids that have" + }, + { + "start": 3287.92, + "duration": 0.0, + "text": "actually the hashes and ids that have actually<00:54:48.160> been<00:54:48.319> expanded.<00:54:49.280> Um<00:54:50.240> and<00:54:50.400> then<00:54:50.559> you" + }, + { + "start": 3290.79, + "duration": 0.0, + "text": "actually been expanded. Um and then you" + }, + { + "start": 3290.8, + "duration": 0.0, + "text": "actually been expanded. Um and then you can<00:54:50.960> actually<00:54:51.520> uh<00:54:51.920> you<00:54:52.079> know<00:54:52.319> look<00:54:52.480> it<00:54:52.640> up<00:54:52.800> and" + }, + { + "start": 3292.95, + "duration": 0.0, + "text": "can actually uh you know look it up and" + }, + { + "start": 3292.96, + "duration": 0.0, + "text": "can actually uh you know look it up and produce<00:54:53.119> the<00:54:53.280> block<00:54:53.520> tree,<00:54:53.839> right?<00:54:54.800> So<00:54:54.960> let's" + }, + { + "start": 3295.19, + "duration": 0.0, + "text": "produce the block tree, right? So let's" + }, + { + "start": 3295.2, + "duration": 0.0, + "text": "produce the block tree, right? So let's zoom<00:54:55.440> back<00:54:55.599> out.<00:54:56.480> Start<00:54:56.640> with<00:54:56.800> an<00:54:56.960> evaluation" + }, + { + "start": 3297.91, + "duration": 0.0, + "text": "zoom back out. Start with an evaluation" + }, + { + "start": 3297.92, + "duration": 0.0, + "text": "zoom back out. Start with an evaluation which<00:54:58.160> again<00:54:58.480> that's<00:54:58.640> produced<00:54:58.960> by<00:54:59.119> the" + }, + { + "start": 3299.27, + "duration": 0.0, + "text": "which again that's produced by the" + }, + { + "start": 3299.28, + "duration": 0.0, + "text": "which again that's produced by the compiler<00:54:59.680> by<00:54:59.839> the<00:55:00.000> debuggers<00:55:00.480> compiler." + }, + { + "start": 3302.069, + "duration": 0.0, + "text": "compiler by the debuggers compiler." + }, + { + "start": 3302.079, + "duration": 0.0, + "text": "compiler by the debuggers compiler. Um<00:55:03.359> using<00:55:03.680> the<00:55:03.920> expansion<00:55:04.400> state<00:55:04.720> you<00:55:04.880> can" + }, + { + "start": 3304.95, + "duration": 0.0, + "text": "Um using the expansion state you can" + }, + { + "start": 3304.96, + "duration": 0.0, + "text": "Um using the expansion state you can produce<00:55:05.200> a<00:55:05.440> block<00:55:05.680> tree." + }, + { + "start": 3308.47, + "duration": 0.0, + "text": "produce a block tree." + }, + { + "start": 3308.48, + "duration": 0.0, + "text": "produce a block tree. Um<00:55:09.200> a<00:55:09.440> block<00:55:09.760> tree<00:55:10.079> can<00:55:10.400> be<00:55:10.559> used<00:55:10.800> to<00:55:11.040> produce<00:55:11.280> a" + }, + { + "start": 3311.51, + "duration": 0.0, + "text": "Um a block tree can be used to produce a" + }, + { + "start": 3311.52, + "duration": 0.0, + "text": "Um a block tree can be used to produce a list<00:55:11.680> of<00:55:12.000> pairs.<00:55:12.400> You<00:55:12.559> can<00:55:12.640> think<00:55:12.800> of<00:55:12.880> it<00:55:13.440> uh" + }, + { + "start": 3313.589, + "duration": 0.0, + "text": "list of pairs. You can think of it uh" + }, + { + "start": 3313.599, + "duration": 0.0, + "text": "list of pairs. You can think of it uh you<00:55:13.839> know<00:55:14.079> each<00:55:14.319> pair<00:55:14.559> containing<00:55:14.960> you've<00:55:15.119> got" + }, + { + "start": 3315.27, + "duration": 0.0, + "text": "you know each pair containing you've got" + }, + { + "start": 3315.28, + "duration": 0.0, + "text": "you know each pair containing you've got some<00:55:15.520> block<00:55:15.760> and<00:55:15.920> then<00:55:16.079> some<00:55:16.319> range<00:55:16.640> within" + }, + { + "start": 3316.95, + "duration": 0.0, + "text": "some block and then some range within" + }, + { + "start": 3316.96, + "duration": 0.0, + "text": "some block and then some range within that<00:55:17.200> block." + }, + { + "start": 3318.79, + "duration": 0.0, + "text": "that block." + }, + { + "start": 3318.8, + "duration": 0.0, + "text": "that block. Um<00:55:19.280> so<00:55:19.440> that<00:55:19.680> would<00:55:19.839> be<00:55:19.920> like<00:55:20.240> you<00:55:20.319> know<00:55:20.400> the<00:55:20.640> W" + }, + { + "start": 3320.87, + "duration": 0.0, + "text": "Um so that would be like you know the W" + }, + { + "start": 3320.88, + "duration": 0.0, + "text": "Um so that would be like you know the W pre<00:55:22.079> and<00:55:22.240> so<00:55:22.480> on.<00:55:23.040> That<00:55:23.280> would<00:55:23.359> be<00:55:23.520> like<00:55:23.920> that" + }, + { + "start": 3324.23, + "duration": 0.0, + "text": "pre and so on. That would be like that" + }, + { + "start": 3324.24, + "duration": 0.0, + "text": "pre and so on. That would be like that step.<00:55:25.440> And<00:55:25.599> so<00:55:25.839> that<00:55:26.079> forms<00:55:26.480> like<00:55:26.640> the<00:55:26.880> linear" + }, + { + "start": 3327.109, + "duration": 0.0, + "text": "step. And so that forms like the linear" + }, + { + "start": 3327.119, + "duration": 0.0, + "text": "step. And so that forms like the linear sequence<00:55:27.440> of<00:55:27.520> blocks<00:55:27.839> right?<00:55:28.079> got<00:55:28.240> like<00:55:28.559> these" + }, + { + "start": 3328.95, + "duration": 0.0, + "text": "sequence of blocks right? got like these" + }, + { + "start": 3328.96, + "duration": 0.0, + "text": "sequence of blocks right? got like these rows<00:55:29.119> and<00:55:29.200> these<00:55:29.520> rows<00:55:29.599> and<00:55:29.760> these<00:55:30.000> rows<00:55:30.160> and" + }, + { + "start": 3330.23, + "duration": 0.0, + "text": "rows and these rows and these rows and" + }, + { + "start": 3330.24, + "duration": 0.0, + "text": "rows and these rows and these rows and these<00:55:30.559> rows<00:55:31.040> and<00:55:31.359> you're<00:55:31.680> not<00:55:31.839> doing<00:55:32.400> per<00:55:32.800> row" + }, + { + "start": 3332.87, + "duration": 0.0, + "text": "these rows and you're not doing per row" + }, + { + "start": 3332.88, + "duration": 0.0, + "text": "these rows and you're not doing per row work<00:55:33.119> anymore.<00:55:34.000> And<00:55:34.240> finally,<00:55:35.680> remember<00:55:36.400> that" + }, + { + "start": 3336.63, + "duration": 0.0, + "text": "work anymore. And finally, remember that" + }, + { + "start": 3336.64, + "duration": 0.0, + "text": "work anymore. And finally, remember that we<00:55:36.800> have<00:55:36.960> a<00:55:37.119> way<00:55:37.280> to<00:55:37.359> take<00:55:37.520> an<00:55:37.680> evaluation<00:55:38.400> and" + }, + { + "start": 3338.549, + "duration": 0.0, + "text": "we have a way to take an evaluation and" + }, + { + "start": 3338.559, + "duration": 0.0, + "text": "we have a way to take an evaluation and given<00:55:38.960> some<00:55:39.119> range<00:55:39.359> under<00:55:39.599> that<00:55:39.760> evaluation," + }, + { + "start": 3340.309, + "duration": 0.0, + "text": "given some range under that evaluation," + }, + { + "start": 3340.319, + "duration": 0.0, + "text": "given some range under that evaluation, we<00:55:40.480> can<00:55:40.640> expand<00:55:40.960> it<00:55:41.200> to<00:55:41.440> all<00:55:41.520> the<00:55:41.680> children" + }, + { + "start": 3342.069, + "duration": 0.0, + "text": "we can expand it to all the children" + }, + { + "start": 3342.079, + "duration": 0.0, + "text": "we can expand it to all the children evaluations." + }, + { + "start": 3343.91, + "duration": 0.0, + "text": "evaluations." + }, + { + "start": 3343.92, + "duration": 0.0, + "text": "evaluations. So" + }, + { + "start": 3346.549, + "duration": 0.0, + "text": "So" + }, + { + "start": 3346.559, + "duration": 0.0, + "text": "So with<00:55:46.800> that<00:55:46.960> list,<00:55:47.200> you<00:55:47.359> can<00:55:47.520> produce<00:55:47.680> a<00:55:47.839> final" + }, + { + "start": 3348.15, + "duration": 0.0, + "text": "with that list, you can produce a final" + }, + { + "start": 3348.16, + "duration": 0.0, + "text": "with that list, you can produce a final list<00:55:48.319> of<00:55:48.880> row<00:55:49.040> evaluations.<00:55:49.599> Right?<00:55:49.839> That's" + }, + { + "start": 3349.99, + "duration": 0.0, + "text": "list of row evaluations. Right? That's" + }, + { + "start": 3350.0, + "duration": 0.0, + "text": "list of row evaluations. Right? That's how<00:55:50.160> you<00:55:50.640> with<00:55:50.880> the<00:55:51.119> global<00:55:51.440> viewing<00:55:51.839> range" + }, + { + "start": 3352.15, + "duration": 0.0, + "text": "how you with the global viewing range" + }, + { + "start": 3352.16, + "duration": 0.0, + "text": "how you with the global viewing range you<00:55:52.319> can<00:55:52.480> you<00:55:52.720> can<00:55:52.799> use<00:55:53.040> that<00:55:53.280> together<00:55:53.599> with" + }, + { + "start": 3353.67, + "duration": 0.0, + "text": "you can you can use that together with" + }, + { + "start": 3353.68, + "duration": 0.0, + "text": "you can you can use that together with the<00:55:53.839> list.<00:55:54.079> This<00:55:54.240> is<00:55:54.319> the<00:55:54.480> windowing<00:55:54.880> step." + }, + { + "start": 3355.27, + "duration": 0.0, + "text": "the list. This is the windowing step." + }, + { + "start": 3355.28, + "duration": 0.0, + "text": "the list. This is the windowing step. you<00:55:55.440> get<00:55:55.520> the<00:55:55.760> list<00:55:55.839> of<00:55:56.000> actual<00:55:56.400> evaluations" + }, + { + "start": 3356.87, + "duration": 0.0, + "text": "you get the list of actual evaluations" + }, + { + "start": 3356.88, + "duration": 0.0, + "text": "you get the list of actual evaluations that<00:55:57.119> you<00:55:57.280> can<00:55:57.359> use<00:55:57.520> for<00:55:57.680> all<00:55:57.839> the<00:55:58.079> rows<00:55:58.480> that" + }, + { + "start": 3358.71, + "duration": 0.0, + "text": "that you can use for all the rows that" + }, + { + "start": 3358.72, + "duration": 0.0, + "text": "that you can use for all the rows that are<00:55:58.880> visibly<00:55:59.359> available<00:56:00.160> in<00:56:00.400> the<00:56:00.559> watch<00:56:00.880> tree." + }, + { + "start": 3363.109, + "duration": 0.0, + "text": "are visibly available in the watch tree." + }, + { + "start": 3363.119, + "duration": 0.0, + "text": "are visibly available in the watch tree. So<00:56:03.280> let's<00:56:03.520> take<00:56:03.599> a<00:56:03.760> step<00:56:03.920> back,<00:56:04.319> think<00:56:04.480> about" + }, + { + "start": 3364.63, + "duration": 0.0, + "text": "So let's take a step back, think about" + }, + { + "start": 3364.64, + "duration": 0.0, + "text": "So let's take a step back, think about what<00:56:04.799> this<00:56:05.040> actually<00:56:05.200> gets<00:56:05.440> us<00:56:06.799> in<00:56:07.040> terms<00:56:07.200> of" + }, + { + "start": 3367.349, + "duration": 0.0, + "text": "what this actually gets us in terms of" + }, + { + "start": 3367.359, + "duration": 0.0, + "text": "what this actually gets us in terms of like<00:56:07.599> our<00:56:07.839> overall<00:56:08.160> goal,<00:56:08.480> right?<00:56:09.040> Our<00:56:09.359> idea," + }, + { + "start": 3369.75, + "duration": 0.0, + "text": "like our overall goal, right? Our idea," + }, + { + "start": 3369.76, + "duration": 0.0, + "text": "like our overall goal, right? Our idea, we<00:56:09.920> want<00:56:10.079> to<00:56:10.160> accelerate<00:56:10.559> visualization." + }, + { + "start": 3371.19, + "duration": 0.0, + "text": "we want to accelerate visualization." + }, + { + "start": 3371.2, + "duration": 0.0, + "text": "we want to accelerate visualization. What<00:56:11.359> is<00:56:11.440> this?<00:56:11.680> What<00:56:11.839> does<00:56:12.079> all<00:56:12.319> that<00:56:13.040> crap" + }, + { + "start": 3373.43, + "duration": 0.0, + "text": "What is this? What does all that crap" + }, + { + "start": 3373.44, + "duration": 0.0, + "text": "What is this? What does all that crap actually<00:56:13.680> get<00:56:13.920> us?" + }, + { + "start": 3376.87, + "duration": 0.0, + "text": "actually get us?" + }, + { + "start": 3376.88, + "duration": 0.0, + "text": "actually get us? So<00:56:17.359> I've<00:56:17.680> covered<00:56:18.160> almost<00:56:18.480> all<00:56:18.640> the<00:56:18.799> steps" + }, + { + "start": 3379.67, + "duration": 0.0, + "text": "So I've covered almost all the steps" + }, + { + "start": 3379.68, + "duration": 0.0, + "text": "So I've covered almost all the steps besides<00:56:20.079> the<00:56:20.240> UI<00:56:20.960> part" + }, + { + "start": 3382.63, + "duration": 0.0, + "text": "besides the UI part" + }, + { + "start": 3382.64, + "duration": 0.0, + "text": "besides the UI part um<00:56:22.880> that<00:56:23.200> you<00:56:23.359> would<00:56:23.520> need<00:56:23.760> in<00:56:24.000> order<00:56:24.079> to<00:56:24.319> build" + }, + { + "start": 3384.549, + "duration": 0.0, + "text": "um that you would need in order to build" + }, + { + "start": 3384.559, + "duration": 0.0, + "text": "um that you would need in order to build like<00:56:25.040> this<00:56:25.440> kind<00:56:25.599> of<00:56:25.760> watch<00:56:26.079> window" + }, + { + "start": 3386.39, + "duration": 0.0, + "text": "like this kind of watch window" + }, + { + "start": 3386.4, + "duration": 0.0, + "text": "like this kind of watch window structure." + }, + { + "start": 3388.549, + "duration": 0.0, + "text": "structure." + }, + { + "start": 3388.559, + "duration": 0.0, + "text": "structure. Uh<00:56:28.799> so<00:56:28.960> this<00:56:29.119> is<00:56:29.200> like<00:56:29.280> a<00:56:29.440> fully<00:56:29.760> windowed<00:56:30.160> one." + }, + { + "start": 3390.309, + "duration": 0.0, + "text": "Uh so this is like a fully windowed one." + }, + { + "start": 3390.319, + "duration": 0.0, + "text": "Uh so this is like a fully windowed one. We<00:56:30.480> only<00:56:30.640> evaluate<00:56:31.119> what<00:56:31.280> we<00:56:31.359> need.<00:56:31.599> We<00:56:31.760> don't" + }, + { + "start": 3391.829, + "duration": 0.0, + "text": "We only evaluate what we need. We don't" + }, + { + "start": 3391.839, + "duration": 0.0, + "text": "We only evaluate what we need. We don't pull<00:56:32.000> in<00:56:32.240> memory<00:56:32.480> that's<00:56:32.720> not<00:56:32.880> visible.<00:56:33.359> None" + }, + { + "start": 3393.51, + "duration": 0.0, + "text": "pull in memory that's not visible. None" + }, + { + "start": 3393.52, + "duration": 0.0, + "text": "pull in memory that's not visible. None of<00:56:33.680> that<00:56:33.839> happens." + }, + { + "start": 3396.15, + "duration": 0.0, + "text": "of that happens." + }, + { + "start": 3396.16, + "duration": 0.0, + "text": "of that happens. Um<00:56:36.640> and<00:56:36.880> then<00:56:37.040> obviously<00:56:37.359> we<00:56:37.599> visualize" + }, + { + "start": 3397.99, + "duration": 0.0, + "text": "Um and then obviously we visualize" + }, + { + "start": 3398.0, + "duration": 0.0, + "text": "Um and then obviously we visualize everything<00:56:38.319> textually.<00:56:39.119> We've<00:56:39.280> got<00:56:39.359> a<00:56:39.520> strct." + }, + { + "start": 3399.91, + "duration": 0.0, + "text": "everything textually. We've got a strct." + }, + { + "start": 3399.92, + "duration": 0.0, + "text": "everything textually. We've got a strct. You've<00:56:40.079> got<00:56:40.640> members<00:56:41.040> of<00:56:41.280> the<00:56:41.520> strct.<00:56:42.000> Some<00:56:42.160> of" + }, + { + "start": 3402.23, + "duration": 0.0, + "text": "You've got members of the strct. Some of" + }, + { + "start": 3402.24, + "duration": 0.0, + "text": "You've got members of the strct. Some of them<00:56:42.400> are<00:56:42.480> integers.<00:56:42.960> Some<00:56:43.040> of<00:56:43.119> them<00:56:43.200> are" + }, + { + "start": 3403.349, + "duration": 0.0, + "text": "them are integers. Some of them are" + }, + { + "start": 3403.359, + "duration": 0.0, + "text": "them are integers. Some of them are strrus.<00:56:44.079> whenever<00:56:44.400> we<00:56:44.480> we<00:56:44.799> show<00:56:44.960> the<00:56:45.119> textual" + }, + { + "start": 3405.51, + "duration": 0.0, + "text": "strrus. whenever we we show the textual" + }, + { + "start": 3405.52, + "duration": 0.0, + "text": "strrus. whenever we we show the textual representation<00:56:46.720> and<00:56:46.960> that's<00:56:47.119> great.<00:56:47.359> We<00:56:47.599> can" + }, + { + "start": 3407.67, + "duration": 0.0, + "text": "representation and that's great. We can" + }, + { + "start": 3407.68, + "duration": 0.0, + "text": "representation and that's great. We can dig<00:56:47.839> into<00:56:48.000> anything<00:56:48.240> the<00:56:48.480> debugger<00:56:48.880> can" + }, + { + "start": 3409.03, + "duration": 0.0, + "text": "dig into anything the debugger can" + }, + { + "start": 3409.04, + "duration": 0.0, + "text": "dig into anything the debugger can evaluate<00:56:49.520> using<00:56:49.760> its<00:56:50.079> compiler<00:56:50.799> this<00:56:51.040> way." + }, + { + "start": 3411.349, + "duration": 0.0, + "text": "evaluate using its compiler this way." + }, + { + "start": 3411.359, + "duration": 0.0, + "text": "evaluate using its compiler this way. We've<00:56:51.599> done<00:56:51.760> sort<00:56:51.920> of<00:56:52.000> a<00:56:52.480> general" + }, + { + "start": 3413.19, + "duration": 0.0, + "text": "We've done sort of a general" + }, + { + "start": 3413.2, + "duration": 0.0, + "text": "We've done sort of a general textualization<00:56:54.000> case,<00:56:55.200> but<00:56:56.400> in<00:56:56.559> a<00:56:56.720> sense<00:56:57.599> all" + }, + { + "start": 3417.829, + "duration": 0.0, + "text": "textualization case, but in a sense all" + }, + { + "start": 3417.839, + "duration": 0.0, + "text": "textualization case, but in a sense all that<00:56:58.000> is<00:56:58.880> we've<00:56:59.200> kind<00:56:59.280> of<00:56:59.359> just<00:56:59.520> accelerated" + }, + { + "start": 3420.069, + "duration": 0.0, + "text": "that is we've kind of just accelerated" + }, + { + "start": 3420.079, + "duration": 0.0, + "text": "that is we've kind of just accelerated print<00:57:00.319> f<00:57:00.960> print<00:57:01.200> f<00:57:01.359> debugging." + }, + { + "start": 3423.109, + "duration": 0.0, + "text": "print f print f debugging." + }, + { + "start": 3423.119, + "duration": 0.0, + "text": "print f print f debugging. We've<00:57:03.359> kind<00:57:03.520> of<00:57:03.599> just<00:57:03.760> produced<00:57:04.160> a<00:57:04.480> typeaware" + }, + { + "start": 3425.43, + "duration": 0.0, + "text": "We've kind of just produced a typeaware" + }, + { + "start": 3425.44, + "duration": 0.0, + "text": "We've kind of just produced a typeaware version,<00:57:06.240> right?<00:57:06.480> So<00:57:06.559> in<00:57:06.880> C<00:57:07.440> it's<00:57:07.760> really" + }, + { + "start": 3428.069, + "duration": 0.0, + "text": "version, right? So in C it's really" + }, + { + "start": 3428.079, + "duration": 0.0, + "text": "version, right? So in C it's really stupid.<00:57:08.559> You<00:57:08.880> have<00:57:09.040> to<00:57:09.200> sort<00:57:09.359> of<00:57:09.520> just<00:57:09.680> say" + }, + { + "start": 3429.829, + "duration": 0.0, + "text": "stupid. You have to sort of just say" + }, + { + "start": 3429.839, + "duration": 0.0, + "text": "stupid. You have to sort of just say like<00:57:10.559> have<00:57:10.720> to<00:57:10.880> remember<00:57:11.040> the<00:57:11.200> type<00:57:11.359> info<00:57:11.760> and" + }, + { + "start": 3431.91, + "duration": 0.0, + "text": "like have to remember the type info and" + }, + { + "start": 3431.92, + "duration": 0.0, + "text": "like have to remember the type info and say<00:57:12.160> well<00:57:12.400> I'm<00:57:12.559> going<00:57:12.640> to<00:57:12.720> log<00:57:12.960> the<00:57:13.119> strct." + }, + { + "start": 3433.43, + "duration": 0.0, + "text": "say well I'm going to log the strct." + }, + { + "start": 3433.44, + "duration": 0.0, + "text": "say well I'm going to log the strct. I've<00:57:13.599> got<00:57:13.680> a<00:57:13.760> print<00:57:14.079> defaf<00:57:14.559> hitter<00:57:15.200> like<00:57:15.440> in" + }, + { + "start": 3435.589, + "duration": 0.0, + "text": "I've got a print defaf hitter like in" + }, + { + "start": 3435.599, + "duration": 0.0, + "text": "I've got a print defaf hitter like in this<00:57:15.680> case<00:57:15.839> I'm<00:57:16.000> at<00:57:16.160> my<00:57:16.319> hit<00:57:16.559> entity<00:57:16.880> code" + }, + { + "start": 3437.109, + "duration": 0.0, + "text": "this case I'm at my hit entity code" + }, + { + "start": 3437.119, + "duration": 0.0, + "text": "this case I'm at my hit entity code path.<00:57:17.359> I've<00:57:17.520> got<00:57:17.920> hitter<00:57:18.720> id.<00:57:18.880> I've<00:57:19.040> got<00:57:19.119> to" + }, + { + "start": 3439.27, + "duration": 0.0, + "text": "path. I've got hitter id. I've got to" + }, + { + "start": 3439.28, + "duration": 0.0, + "text": "path. I've got hitter id. I've got to log<00:57:19.440> that<00:57:19.680> hitter.parent.<00:57:20.480> I'm<00:57:20.640> just<00:57:20.799> like" + }, + { + "start": 3441.03, + "duration": 0.0, + "text": "log that hitter.parent. I'm just like" + }, + { + "start": 3441.04, + "duration": 0.0, + "text": "log that hitter.parent. I'm just like duplicating<00:57:21.440> the<00:57:21.599> type<00:57:21.839> info<00:57:22.160> at<00:57:22.319> this<00:57:22.480> point" + }, + { + "start": 3443.109, + "duration": 0.0, + "text": "duplicating the type info at this point" + }, + { + "start": 3443.119, + "duration": 0.0, + "text": "duplicating the type info at this point and<00:57:23.280> I've<00:57:23.440> just<00:57:23.599> got<00:57:23.680> to<00:57:23.839> remember<00:57:24.079> how<00:57:24.240> to<00:57:24.319> do" + }, + { + "start": 3444.39, + "duration": 0.0, + "text": "and I've just got to remember how to do" + }, + { + "start": 3444.4, + "duration": 0.0, + "text": "and I've just got to remember how to do that.<00:57:24.559> Or<00:57:24.720> maybe<00:57:24.880> I<00:57:25.040> just<00:57:25.200> narrow<00:57:25.520> down<00:57:25.680> to<00:57:25.760> the" + }, + { + "start": 3445.91, + "duration": 0.0, + "text": "that. Or maybe I just narrow down to the" + }, + { + "start": 3445.92, + "duration": 0.0, + "text": "that. Or maybe I just narrow down to the subset<00:57:26.240> that<00:57:26.400> I<00:57:26.559> want.<00:57:26.799> Whatever.<00:57:28.160> Um,<00:57:28.880> you" + }, + { + "start": 3448.95, + "duration": 0.0, + "text": "subset that I want. Whatever. Um, you" + }, + { + "start": 3448.96, + "duration": 0.0, + "text": "subset that I want. Whatever. Um, you know,<00:57:29.119> in<00:57:29.280> a<00:57:29.440> better<00:57:29.599> language,<00:57:30.000> maybe<00:57:30.160> it'd" + }, + { + "start": 3450.39, + "duration": 0.0, + "text": "know, in a better language, maybe it'd" + }, + { + "start": 3450.4, + "duration": 0.0, + "text": "know, in a better language, maybe it'd look<00:57:30.559> more<00:57:30.720> like<00:57:30.880> that.<00:57:31.280> You<00:57:31.440> know,<00:57:31.520> you've" + }, + { + "start": 3451.67, + "duration": 0.0, + "text": "look more like that. You know, you've" + }, + { + "start": 3451.68, + "duration": 0.0, + "text": "look more like that. You know, you've got<00:57:31.839> print<00:57:32.160> f<00:57:32.400> and<00:57:32.640> then<00:57:33.280> uh<00:57:33.520> hitter.<00:57:34.000> Maybe" + }, + { + "start": 3454.15, + "duration": 0.0, + "text": "got print f and then uh hitter. Maybe" + }, + { + "start": 3454.16, + "duration": 0.0, + "text": "got print f and then uh hitter. Maybe it's<00:57:34.319> not<00:57:34.480> even<00:57:34.720> f.<00:57:35.040> I<00:57:35.119> don't<00:57:35.280> know.<00:57:35.680> You<00:57:35.839> know," + }, + { + "start": 3456.15, + "duration": 0.0, + "text": "it's not even f. I don't know. You know," + }, + { + "start": 3456.16, + "duration": 0.0, + "text": "it's not even f. I don't know. You know, hitter<00:57:36.559> and<00:57:36.799> then<00:57:37.200> percent<00:57:37.599> and<00:57:37.760> then<00:57:37.920> you<00:57:38.000> can" + }, + { + "start": 3458.15, + "duration": 0.0, + "text": "hitter and then percent and then you can" + }, + { + "start": 3458.16, + "duration": 0.0, + "text": "hitter and then percent and then you can just<00:57:38.240> pass<00:57:38.480> the<00:57:38.640> strruct.<00:57:39.040> Maybe<00:57:39.200> it<00:57:39.359> should" + }, + { + "start": 3459.51, + "duration": 0.0, + "text": "just pass the strruct. Maybe it should" + }, + { + "start": 3459.52, + "duration": 0.0, + "text": "just pass the strruct. Maybe it should just<00:57:39.680> be<00:57:39.760> aware<00:57:40.000> of<00:57:40.079> the<00:57:40.240> type<00:57:40.480> info<00:57:41.520> uh" + }, + { + "start": 3461.67, + "duration": 0.0, + "text": "just be aware of the type info uh" + }, + { + "start": 3461.68, + "duration": 0.0, + "text": "just be aware of the type info uh somehow.<00:57:42.079> Obviously<00:57:42.480> not<00:57:42.640> the<00:57:42.799> true<00:57:43.280> uh<00:57:43.359> not" + }, + { + "start": 3463.589, + "duration": 0.0, + "text": "somehow. Obviously not the true uh not" + }, + { + "start": 3463.599, + "duration": 0.0, + "text": "somehow. Obviously not the true uh not not<00:57:43.760> the<00:57:43.920> case<00:57:44.079> in<00:57:44.319> C<00:57:44.559> but<00:57:45.760> point<00:57:46.079> being<00:57:46.720> the" + }, + { + "start": 3466.87, + "duration": 0.0, + "text": "not the case in C but point being the" + }, + { + "start": 3466.88, + "duration": 0.0, + "text": "not the case in C but point being the watch<00:57:47.200> window<00:57:47.680> effectively<00:57:48.160> provides<00:57:48.480> an" + }, + { + "start": 3468.71, + "duration": 0.0, + "text": "watch window effectively provides an" + }, + { + "start": 3468.72, + "duration": 0.0, + "text": "watch window effectively provides an accelerated<00:57:49.280> version<00:57:49.440> of<00:57:49.599> that.<00:57:50.240> Um<00:57:50.720> now<00:57:50.880> the" + }, + { + "start": 3471.03, + "duration": 0.0, + "text": "accelerated version of that. Um now the" + }, + { + "start": 3471.04, + "duration": 0.0, + "text": "accelerated version of that. Um now the watch<00:57:51.200> window<00:57:51.520> offers<00:57:51.839> some<00:57:52.079> pretty<00:57:52.240> big" + }, + { + "start": 3472.47, + "duration": 0.0, + "text": "watch window offers some pretty big" + }, + { + "start": 3472.48, + "duration": 0.0, + "text": "watch window offers some pretty big improvements<00:57:53.359> right<00:57:53.680> the<00:57:54.000> ability<00:57:54.240> to" + }, + { + "start": 3474.39, + "duration": 0.0, + "text": "improvements right the ability to" + }, + { + "start": 3474.4, + "duration": 0.0, + "text": "improvements right the ability to interact<00:57:54.720> with<00:57:54.880> the<00:57:55.040> data.<00:57:55.280> You<00:57:55.440> can<00:57:55.520> write<00:57:55.760> to" + }, + { + "start": 3475.91, + "duration": 0.0, + "text": "interact with the data. You can write to" + }, + { + "start": 3475.92, + "duration": 0.0, + "text": "interact with the data. You can write to the<00:57:56.079> data.<00:57:56.720> Um<00:57:57.359> you<00:57:57.599> can<00:57:58.000> dynamically<00:57:58.640> expand" + }, + { + "start": 3478.95, + "duration": 0.0, + "text": "the data. Um you can dynamically expand" + }, + { + "start": 3478.96, + "duration": 0.0, + "text": "the data. Um you can dynamically expand or<00:57:59.119> collapse<00:57:59.520> parts<00:57:59.760> of<00:57:59.839> the<00:58:00.079> data.<00:58:00.960> Um<00:58:01.440> it" + }, + { + "start": 3481.67, + "duration": 0.0, + "text": "or collapse parts of the data. Um it" + }, + { + "start": 3481.68, + "duration": 0.0, + "text": "or collapse parts of the data. Um it only<00:58:01.839> pays<00:58:02.079> the<00:58:02.240> cost<00:58:02.400> for<00:58:02.559> what<00:58:02.720> is<00:58:02.880> visible." + }, + { + "start": 3483.27, + "duration": 0.0, + "text": "only pays the cost for what is visible." + }, + { + "start": 3483.28, + "duration": 0.0, + "text": "only pays the cost for what is visible. You<00:58:03.440> don't<00:58:03.599> have<00:58:03.680> to<00:58:03.839> literally<00:58:04.160> log" + }, + { + "start": 3484.47, + "duration": 0.0, + "text": "You don't have to literally log" + }, + { + "start": 3484.48, + "duration": 0.0, + "text": "You don't have to literally log everything<00:58:04.799> and<00:58:05.040> then<00:58:05.359> hunt<00:58:05.599> through<00:58:05.839> it.<00:58:06.559> Um" + }, + { + "start": 3487.829, + "duration": 0.0, + "text": "everything and then hunt through it. Um" + }, + { + "start": 3487.839, + "duration": 0.0, + "text": "everything and then hunt through it. Um and<00:58:08.079> you<00:58:08.240> can<00:58:08.319> also<00:58:08.559> like<00:58:08.720> interactively<00:58:10.000> go" + }, + { + "start": 3490.15, + "duration": 0.0, + "text": "and you can also like interactively go" + }, + { + "start": 3490.16, + "duration": 0.0, + "text": "and you can also like interactively go to<00:58:10.319> other<00:58:10.559> parts.<00:58:10.720> So<00:58:10.799> you<00:58:10.960> can<00:58:11.040> evaluate<00:58:11.520> as" + }, + { + "start": 3491.75, + "duration": 0.0, + "text": "to other parts. So you can evaluate as" + }, + { + "start": 3491.76, + "duration": 0.0, + "text": "to other parts. So you can evaluate as you<00:58:11.920> need<00:58:12.400> instead<00:58:12.720> of<00:58:12.799> having<00:58:13.040> to<00:58:13.200> evaluate" + }, + { + "start": 3494.309, + "duration": 0.0, + "text": "you need instead of having to evaluate" + }, + { + "start": 3494.319, + "duration": 0.0, + "text": "you need instead of having to evaluate everything<00:58:14.799> and<00:58:15.119> print<00:58:15.359> it<00:58:15.520> and<00:58:15.760> log<00:58:16.000> it.<00:58:16.880> Um" + }, + { + "start": 3497.589, + "duration": 0.0, + "text": "everything and print it and log it. Um" + }, + { + "start": 3497.599, + "duration": 0.0, + "text": "everything and print it and log it. Um and<00:58:17.839> then<00:58:18.000> and<00:58:18.240> then<00:58:18.480> you<00:58:18.640> know<00:58:18.799> search" + }, + { + "start": 3499.03, + "duration": 0.0, + "text": "and then and then you know search" + }, + { + "start": 3499.04, + "duration": 0.0, + "text": "and then and then you know search through<00:58:19.200> the<00:58:19.359> sea<00:58:19.520> of<00:58:19.680> log<00:58:20.240> that<00:58:20.480> you<00:58:20.640> get.<00:58:21.680> Um" + }, + { + "start": 3502.95, + "duration": 0.0, + "text": "through the sea of log that you get. Um" + }, + { + "start": 3502.96, + "duration": 0.0, + "text": "through the sea of log that you get. Um so<00:58:24.079> eliminates<00:58:24.559> the<00:58:24.720> code<00:58:24.880> modification" + }, + { + "start": 3505.43, + "duration": 0.0, + "text": "so eliminates the code modification" + }, + { + "start": 3505.44, + "duration": 0.0, + "text": "so eliminates the code modification step,<00:58:25.839> eliminates<00:58:26.240> the<00:58:26.319> build,<00:58:26.640> eliminates" + }, + { + "start": 3507.03, + "duration": 0.0, + "text": "step, eliminates the build, eliminates" + }, + { + "start": 3507.04, + "duration": 0.0, + "text": "step, eliminates the build, eliminates the<00:58:27.200> run,<00:58:27.599> eliminates<00:58:28.000> the<00:58:28.160> recreate<00:58:28.559> state." + }, + { + "start": 3509.75, + "duration": 0.0, + "text": "the run, eliminates the recreate state." + }, + { + "start": 3509.76, + "duration": 0.0, + "text": "the run, eliminates the recreate state. So<00:58:30.960> but<00:58:32.400> we<00:58:32.720> already<00:58:33.040> know" + }, + { + "start": 3514.71, + "duration": 0.0, + "text": "So but we already know" + }, + { + "start": 3514.72, + "duration": 0.0, + "text": "So but we already know that<00:58:35.040> text<00:58:35.280> is<00:58:35.440> insufficient.<00:58:36.799> So," + }, + { + "start": 3518.549, + "duration": 0.0, + "text": "that text is insufficient. So," + }, + { + "start": 3518.559, + "duration": 0.0, + "text": "that text is insufficient. So, um,<00:58:39.520> how<00:58:39.680> can<00:58:39.839> we<00:58:39.920> push<00:58:40.160> it<00:58:40.240> further<00:58:41.200> to" + }, + { + "start": 3521.43, + "duration": 0.0, + "text": "um, how can we push it further to" + }, + { + "start": 3521.44, + "duration": 0.0, + "text": "um, how can we push it further to support,<00:58:42.079> uh,<00:58:42.240> non-extual<00:58:43.119> visualizers<00:58:43.680> as" + }, + { + "start": 3523.91, + "duration": 0.0, + "text": "support, uh, non-extual visualizers as" + }, + { + "start": 3523.92, + "duration": 0.0, + "text": "support, uh, non-extual visualizers as well?<00:58:45.280> No,<00:58:45.599> no,<00:58:45.839> no,<00:58:46.079> no,<00:58:46.480> no." + }, + { + "start": 3527.99, + "duration": 0.0, + "text": "well? No, no, no, no, no." + }, + { + "start": 3528.0, + "duration": 0.0, + "text": "well? No, no, no, no, no. I'm<00:58:48.240> really<00:58:48.480> bad<00:58:48.640> with<00:58:48.799> this<00:58:49.040> thing.<00:58:50.079> Um," + }, + { + "start": 3533.68, + "duration": 0.0, + "text": "okay.<00:58:54.720> So,<00:58:55.280> let's<00:58:55.599> consider<00:58:55.839> a<00:58:56.079> basic<00:58:56.319> case<00:58:56.720> of" + }, + { + "start": 3536.95, + "duration": 0.0, + "text": "okay. So, let's consider a basic case of" + }, + { + "start": 3536.96, + "duration": 0.0, + "text": "okay. So, let's consider a basic case of visualization,<00:58:57.920> right?<00:58:58.160> Instead<00:58:58.400> of<00:58:58.559> single" + }, + { + "start": 3538.789, + "duration": 0.0, + "text": "visualization, right? Instead of single" + }, + { + "start": 3538.799, + "duration": 0.0, + "text": "visualization, right? Instead of single line<00:58:59.040> text,<00:58:59.359> we've<00:58:59.520> got<00:58:59.680> multi-line<00:59:00.319> text." + }, + { + "start": 3541.51, + "duration": 0.0, + "text": "line text, we've got multi-line text." + }, + { + "start": 3541.52, + "duration": 0.0, + "text": "line text, we've got multi-line text. So,<00:59:01.680> in<00:59:01.839> this<00:59:02.079> in<00:59:02.319> this<00:59:02.559> case,<00:59:03.200> I've<00:59:03.440> got<00:59:03.599> some" + }, + { + "start": 3543.75, + "duration": 0.0, + "text": "So, in this in this case, I've got some" + }, + { + "start": 3543.76, + "duration": 0.0, + "text": "So, in this in this case, I've got some like<00:59:04.000> shader<00:59:04.319> blob.<00:59:04.559> I've<00:59:04.880> got<00:59:05.040> some<00:59:05.440> some" + }, + { + "start": 3545.91, + "duration": 0.0, + "text": "like shader blob. I've got some some" + }, + { + "start": 3545.92, + "duration": 0.0, + "text": "like shader blob. I've got some some shader<00:59:06.319> program<00:59:06.640> text<00:59:06.880> that<00:59:07.119> I'm<00:59:07.280> evaluating." + }, + { + "start": 3548.309, + "duration": 0.0, + "text": "shader program text that I'm evaluating." + }, + { + "start": 3548.319, + "duration": 0.0, + "text": "shader program text that I'm evaluating. Um,<00:59:09.200> and<00:59:09.440> our<00:59:09.680> watch<00:59:10.000> our<00:59:10.160> watch<00:59:10.400> window<00:59:10.720> kind" + }, + { + "start": 3550.789, + "duration": 0.0, + "text": "Um, and our watch our watch window kind" + }, + { + "start": 3550.799, + "duration": 0.0, + "text": "Um, and our watch our watch window kind of<00:59:10.880> just<00:59:11.040> like<00:59:11.280> shows<00:59:11.440> this.<00:59:11.680> You<00:59:11.839> like<00:59:12.000> get" + }, + { + "start": 3552.15, + "duration": 0.0, + "text": "of just like shows this. You like get" + }, + { + "start": 3552.16, + "duration": 0.0, + "text": "of just like shows this. You like get the<00:59:12.319> string.<00:59:12.559> You're<00:59:12.720> like,<00:59:12.880> here's<00:59:13.119> my" + }, + { + "start": 3553.27, + "duration": 0.0, + "text": "the string. You're like, here's my" + }, + { + "start": 3553.28, + "duration": 0.0, + "text": "the string. You're like, here's my pointer<00:59:13.520> to<00:59:13.680> the<00:59:13.760> string<00:59:14.000> data.<00:59:14.400> You<00:59:14.559> expand" + }, + { + "start": 3554.87, + "duration": 0.0, + "text": "pointer to the string data. You expand" + }, + { + "start": 3554.88, + "duration": 0.0, + "text": "pointer to the string data. You expand it<00:59:15.040> and<00:59:15.200> it's<00:59:15.359> like,<00:59:15.599> oh,<00:59:16.079> like<00:59:16.319> that's<00:59:17.520> like" + }, + { + "start": 3557.75, + "duration": 0.0, + "text": "it and it's like, oh, like that's like" + }, + { + "start": 3557.76, + "duration": 0.0, + "text": "it and it's like, oh, like that's like pretty<00:59:18.000> good.<00:59:18.400> Like<00:59:18.559> I<00:59:18.799> can<00:59:18.880> see<00:59:19.040> the" + }, + { + "start": 3559.27, + "duration": 0.0, + "text": "pretty good. Like I can see the" + }, + { + "start": 3559.28, + "duration": 0.0, + "text": "pretty good. Like I can see the characters<00:59:19.680> or<00:59:19.839> whatever<00:59:20.160> if<00:59:20.319> they're<00:59:20.480> asky." + }, + { + "start": 3560.95, + "duration": 0.0, + "text": "characters or whatever if they're asky." + }, + { + "start": 3560.96, + "duration": 0.0, + "text": "characters or whatever if they're asky. You<00:59:21.040> know,<00:59:21.119> it<00:59:21.280> doesn't<00:59:21.359> even<00:59:21.520> support<00:59:21.760> UTF8." + }, + { + "start": 3562.789, + "duration": 0.0, + "text": "You know, it doesn't even support UTF8." + }, + { + "start": 3562.799, + "duration": 0.0, + "text": "You know, it doesn't even support UTF8. I<00:59:23.040> don't<00:59:23.200> really<00:59:23.520> want<00:59:23.680> to<00:59:23.839> look<00:59:23.920> at<00:59:24.079> this<00:59:24.240> if" + }, + { + "start": 3564.39, + "duration": 0.0, + "text": "I don't really want to look at this if" + }, + { + "start": 3564.4, + "duration": 0.0, + "text": "I don't really want to look at this if I'm<00:59:24.559> like,<00:59:24.799> what's<00:59:25.119> this<00:59:25.280> string?<00:59:25.839> You<00:59:26.000> know," + }, + { + "start": 3566.15, + "duration": 0.0, + "text": "I'm like, what's this string? You know," + }, + { + "start": 3566.16, + "duration": 0.0, + "text": "I'm like, what's this string? You know, that's<00:59:26.400> bad." + }, + { + "start": 3568.069, + "duration": 0.0, + "text": "that's bad." + }, + { + "start": 3568.079, + "duration": 0.0, + "text": "that's bad. Now,<00:59:28.400> one<00:59:28.559> potential<00:59:29.200> al<00:59:29.200> alternative<00:59:29.760> is" + }, + { + "start": 3570.069, + "duration": 0.0, + "text": "Now, one potential al alternative is" + }, + { + "start": 3570.079, + "duration": 0.0, + "text": "Now, one potential al alternative is like<00:59:30.559> hex<00:59:30.799> editor,<00:59:31.200> right?<00:59:31.440> Memory<00:59:31.839> view<00:59:32.240> kind" + }, + { + "start": 3572.39, + "duration": 0.0, + "text": "like hex editor, right? Memory view kind" + }, + { + "start": 3572.4, + "duration": 0.0, + "text": "like hex editor, right? Memory view kind of<00:59:32.559> thing.<00:59:33.200> Um,<00:59:33.599> and<00:59:33.760> this<00:59:33.920> is<00:59:34.079> often<00:59:34.319> actually" + }, + { + "start": 3574.63, + "duration": 0.0, + "text": "of thing. Um, and this is often actually" + }, + { + "start": 3574.64, + "duration": 0.0, + "text": "of thing. Um, and this is often actually good<00:59:34.880> for<00:59:34.960> this.<00:59:35.200> Like<00:59:35.280> if<00:59:35.440> you're<00:59:35.520> writing<00:59:35.680> a" + }, + { + "start": 3575.829, + "duration": 0.0, + "text": "good for this. Like if you're writing a" + }, + { + "start": 3575.839, + "duration": 0.0, + "text": "good for this. Like if you're writing a parser<00:59:36.240> or<00:59:36.480> something,<00:59:36.720> you<00:59:36.880> can<00:59:37.040> like<00:59:37.839> look" + }, + { + "start": 3578.069, + "duration": 0.0, + "text": "parser or something, you can like look" + }, + { + "start": 3578.079, + "duration": 0.0, + "text": "parser or something, you can like look at<00:59:38.160> the<00:59:38.319> data<00:59:38.559> this<00:59:38.720> way.<00:59:38.960> You<00:59:39.040> can<00:59:39.200> you<00:59:39.440> can," + }, + { + "start": 3579.67, + "duration": 0.0, + "text": "at the data this way. You can you can," + }, + { + "start": 3579.68, + "duration": 0.0, + "text": "at the data this way. You can you can, you<00:59:39.839> know,<00:59:40.079> position<00:59:40.400> your<00:59:40.640> cursor<00:59:41.040> maybe<00:59:41.280> at" + }, + { + "start": 3581.589, + "duration": 0.0, + "text": "you know, position your cursor maybe at" + }, + { + "start": 3581.599, + "duration": 0.0, + "text": "you know, position your cursor maybe at where<00:59:42.000> the<00:59:42.160> the<00:59:42.480> parsing<00:59:42.880> iterator<00:59:43.280> is<00:59:43.520> or" + }, + { + "start": 3583.67, + "duration": 0.0, + "text": "where the the parsing iterator is or" + }, + { + "start": 3583.68, + "duration": 0.0, + "text": "where the the parsing iterator is or something.<00:59:43.920> So<00:59:44.079> you<00:59:44.240> can<00:59:44.400> see<00:59:44.559> like<00:59:44.799> how<00:59:45.040> it's" + }, + { + "start": 3585.27, + "duration": 0.0, + "text": "something. So you can see like how it's" + }, + { + "start": 3585.28, + "duration": 0.0, + "text": "something. So you can see like how it's treating<00:59:45.599> maybe<00:59:45.920> usually<00:59:46.319> invisible" + }, + { + "start": 3586.87, + "duration": 0.0, + "text": "treating maybe usually invisible" + }, + { + "start": 3586.88, + "duration": 0.0, + "text": "treating maybe usually invisible characters<00:59:47.280> like<00:59:47.440> new<00:59:47.680> lines<00:59:47.920> or<00:59:48.160> whatever." + }, + { + "start": 3588.95, + "duration": 0.0, + "text": "characters like new lines or whatever." + }, + { + "start": 3588.96, + "duration": 0.0, + "text": "characters like new lines or whatever. Um,<00:59:49.440> so<00:59:49.839> this<00:59:50.000> isn't<00:59:50.319> like" + }, + { + "start": 3592.95, + "duration": 0.0, + "text": "Um, so this isn't like" + }, + { + "start": 3592.96, + "duration": 0.0, + "text": "Um, so this isn't like uh<00:59:53.520> it's<00:59:53.839> not<00:59:54.079> useless<00:59:54.559> to<00:59:54.720> to<00:59:55.040> look<00:59:55.200> at<00:59:55.280> it" + }, + { + "start": 3595.43, + "duration": 0.0, + "text": "uh it's not useless to to look at it" + }, + { + "start": 3595.44, + "duration": 0.0, + "text": "uh it's not useless to to look at it this<00:59:55.680> way.<00:59:56.559> Um,<00:59:57.119> but<00:59:57.280> more<00:59:57.520> often<00:59:57.760> than<00:59:57.920> not," + }, + { + "start": 3598.15, + "duration": 0.0, + "text": "this way. Um, but more often than not," + }, + { + "start": 3598.16, + "duration": 0.0, + "text": "this way. Um, but more often than not, if<00:59:58.319> you're<00:59:58.559> working<00:59:58.799> with<00:59:59.119> textual<00:59:59.599> data," + }, + { + "start": 3600.23, + "duration": 0.0, + "text": "if you're working with textual data," + }, + { + "start": 3600.24, + "duration": 0.0, + "text": "if you're working with textual data, what<01:00:00.480> you'd<01:00:00.799> really<01:00:01.040> actually<01:00:01.359> prefer<01:00:02.400> is" + }, + { + "start": 3602.71, + "duration": 0.0, + "text": "what you'd really actually prefer is" + }, + { + "start": 3602.72, + "duration": 0.0, + "text": "what you'd really actually prefer is like<01:00:02.880> an<01:00:03.119> actual<01:00:03.520> visual,<01:00:03.920> like<01:00:04.160> just<01:00:04.400> show<01:00:04.559> me" + }, + { + "start": 3604.71, + "duration": 0.0, + "text": "like an actual visual, like just show me" + }, + { + "start": 3604.72, + "duration": 0.0, + "text": "like an actual visual, like just show me the<01:00:04.960> text.<01:00:05.440> You<01:00:05.520> know<01:00:05.599> what<01:00:05.680> I<01:00:05.839> mean?<01:00:06.640> Um,<01:00:07.359> you" + }, + { + "start": 3607.589, + "duration": 0.0, + "text": "the text. You know what I mean? Um, you" + }, + { + "start": 3607.599, + "duration": 0.0, + "text": "the text. You know what I mean? Um, you kind<01:00:07.680> of<01:00:07.760> want<01:00:07.920> to<01:00:08.000> just<01:00:08.160> treat<01:00:08.240> it<01:00:08.400> like<01:00:08.480> a" + }, + { + "start": 3608.63, + "duration": 0.0, + "text": "kind of want to just treat it like a" + }, + { + "start": 3608.64, + "duration": 0.0, + "text": "kind of want to just treat it like a text<01:00:08.880> file<01:00:09.280> like<01:00:09.440> that." + }, + { + "start": 3611.99, + "duration": 0.0, + "text": "text file like that." + }, + { + "start": 3612.0, + "duration": 0.0, + "text": "text file like that. So,<01:00:12.799> I<01:00:13.040> mean,<01:00:13.200> all<01:00:13.359> three<01:00:13.520> of<01:00:13.599> these" + }, + { + "start": 3613.829, + "duration": 0.0, + "text": "So, I mean, all three of these" + }, + { + "start": 3613.839, + "duration": 0.0, + "text": "So, I mean, all three of these visualizers<01:00:14.799> might<01:00:14.960> be<01:00:15.119> useful<01:00:15.359> at<01:00:15.520> different" + }, + { + "start": 3615.67, + "duration": 0.0, + "text": "visualizers might be useful at different" + }, + { + "start": 3615.68, + "duration": 0.0, + "text": "visualizers might be useful at different times.<01:00:16.160> One<01:00:16.319> on<01:00:16.480> the<01:00:16.640> left<01:00:16.960> kind<01:00:17.119> of<01:00:17.200> the<01:00:17.359> odd" + }, + { + "start": 3617.51, + "duration": 0.0, + "text": "times. One on the left kind of the odd" + }, + { + "start": 3617.52, + "duration": 0.0, + "text": "times. One on the left kind of the odd one<01:00:17.680> out<01:00:18.000> kind<01:00:18.160> of<01:00:18.240> sucks<01:00:19.040> usually.<01:00:19.839> Um,<01:00:20.240> not" + }, + { + "start": 3620.39, + "duration": 0.0, + "text": "one out kind of sucks usually. Um, not" + }, + { + "start": 3620.4, + "duration": 0.0, + "text": "one out kind of sucks usually. Um, not not<01:00:20.720> universally.<01:00:21.280> You<01:00:21.440> know,<01:00:21.599> maybe<01:00:21.839> you<01:00:21.920> can" + }, + { + "start": 3622.069, + "duration": 0.0, + "text": "not universally. You know, maybe you can" + }, + { + "start": 3622.079, + "duration": 0.0, + "text": "not universally. You know, maybe you can imagine<01:00:22.319> the<01:00:22.480> case,<01:00:22.640> but<01:00:22.880> point<01:00:23.119> is<01:00:23.839> all<01:00:24.079> three" + }, + { + "start": 3624.23, + "duration": 0.0, + "text": "imagine the case, but point is all three" + }, + { + "start": 3624.24, + "duration": 0.0, + "text": "imagine the case, but point is all three of<01:00:24.400> these<01:00:24.880> different<01:00:25.200> ways<01:00:25.440> of<01:00:25.680> looking<01:00:25.839> at" + }, + { + "start": 3626.069, + "duration": 0.0, + "text": "of these different ways of looking at" + }, + { + "start": 3626.079, + "duration": 0.0, + "text": "of these different ways of looking at the<01:00:26.240> same<01:00:26.480> data.<01:00:27.760> Um,<01:00:28.240> same<01:00:28.480> data,<01:00:29.040> same<01:00:29.280> type," + }, + { + "start": 3629.829, + "duration": 0.0, + "text": "the same data. Um, same data, same type," + }, + { + "start": 3629.839, + "duration": 0.0, + "text": "the same data. Um, same data, same type, same<01:00:30.160> format,<01:00:30.880> different<01:00:31.200> visualizations." + }, + { + "start": 3631.99, + "duration": 0.0, + "text": "same format, different visualizations." + }, + { + "start": 3632.0, + "duration": 0.0, + "text": "same format, different visualizations. And<01:00:32.240> importantly,<01:00:33.280> the<01:00:33.520> user's<01:00:33.920> got<01:00:34.000> to<01:00:34.160> be" + }, + { + "start": 3634.23, + "duration": 0.0, + "text": "And importantly, the user's got to be" + }, + { + "start": 3634.24, + "duration": 0.0, + "text": "And importantly, the user's got to be able<01:00:34.400> to<01:00:34.480> choose<01:00:35.119> like<01:00:35.440> as<01:00:35.599> the<01:00:35.760> debugger," + }, + { + "start": 3636.23, + "duration": 0.0, + "text": "able to choose like as the debugger," + }, + { + "start": 3636.24, + "duration": 0.0, + "text": "able to choose like as the debugger, we've<01:00:36.400> got<01:00:36.480> to<01:00:36.559> provide<01:00:36.720> the<01:00:36.960> the<01:00:37.280> ability<01:00:37.920> for" + }, + { + "start": 3638.15, + "duration": 0.0, + "text": "we've got to provide the the ability for" + }, + { + "start": 3638.16, + "duration": 0.0, + "text": "we've got to provide the the ability for the<01:00:38.319> user<01:00:38.640> to<01:00:38.880> pick<01:00:39.280> between<01:00:39.520> these<01:00:39.839> three" + }, + { + "start": 3640.069, + "duration": 0.0, + "text": "the user to pick between these three" + }, + { + "start": 3640.079, + "duration": 0.0, + "text": "the user to pick between these three things.<01:00:40.400> We<01:00:40.640> can't<01:00:40.960> enforce<01:00:41.359> it<01:00:41.520> on<01:00:41.760> them,<01:00:42.799> you" + }, + { + "start": 3642.95, + "duration": 0.0, + "text": "things. We can't enforce it on them, you" + }, + { + "start": 3642.96, + "duration": 0.0, + "text": "things. We can't enforce it on them, you know,<01:00:43.359> given<01:00:43.599> the<01:00:43.760> type<01:00:43.920> info<01:00:44.240> or<01:00:44.480> something." + }, + { + "start": 3646.47, + "duration": 0.0, + "text": "know, given the type info or something." + }, + { + "start": 3646.48, + "duration": 0.0, + "text": "know, given the type info or something. Um,<01:00:47.920> okay.<01:00:48.720> So,<01:00:50.000> so<01:00:50.160> far<01:00:50.319> I've<01:00:50.559> covered<01:00:50.720> these" + }, + { + "start": 3650.95, + "duration": 0.0, + "text": "Um, okay. So, so far I've covered these" + }, + { + "start": 3650.96, + "duration": 0.0, + "text": "Um, okay. So, so far I've covered these three<01:00:51.200> steps.<01:00:52.000> We've<01:00:52.240> got<01:00:52.319> the<01:00:52.480> compiler,<01:00:53.440> got" + }, + { + "start": 3653.589, + "duration": 0.0, + "text": "three steps. We've got the compiler, got" + }, + { + "start": 3653.599, + "duration": 0.0, + "text": "three steps. We've got the compiler, got the<01:00:53.839> interpreter,<01:00:54.640> uh,<01:00:54.720> and<01:00:54.960> then<01:00:55.040> we've<01:00:55.280> got" + }, + { + "start": 3655.43, + "duration": 0.0, + "text": "the interpreter, uh, and then we've got" + }, + { + "start": 3655.44, + "duration": 0.0, + "text": "the interpreter, uh, and then we've got the<01:00:55.760> or,<01:00:56.160> you<01:00:56.319> know,<01:00:56.400> or<01:00:56.640> a<01:00:56.799> virtual<01:00:57.119> machine" + }, + { + "start": 3657.349, + "duration": 0.0, + "text": "the or, you know, or a virtual machine" + }, + { + "start": 3657.359, + "duration": 0.0, + "text": "the or, you know, or a virtual machine or<01:00:57.680> CPU<01:00:58.079> or<01:00:58.319> whatever.<01:00:59.119> And<01:00:59.200> then<01:00:59.359> we've<01:00:59.520> got" + }, + { + "start": 3659.589, + "duration": 0.0, + "text": "or CPU or whatever. And then we've got" + }, + { + "start": 3659.599, + "duration": 0.0, + "text": "or CPU or whatever. And then we've got the<01:00:59.760> windowed<01:01:00.079> watch<01:01:00.400> tree<01:01:00.640> build<01:01:01.119> down<01:01:01.359> here." + }, + { + "start": 3663.589, + "duration": 0.0, + "text": "the windowed watch tree build down here." + }, + { + "start": 3663.599, + "duration": 0.0, + "text": "the windowed watch tree build down here. The<01:01:03.839> final<01:01:04.079> missing<01:01:04.480> piece<01:01:04.640> of<01:01:04.799> this<01:01:06.079> is" + }, + { + "start": 3666.71, + "duration": 0.0, + "text": "The final missing piece of this is" + }, + { + "start": 3666.72, + "duration": 0.0, + "text": "The final missing piece of this is you've<01:01:07.040> got<01:01:07.520> uh" + }, + { + "start": 3669.589, + "duration": 0.0, + "text": "you've got uh" + }, + { + "start": 3669.599, + "duration": 0.0, + "text": "you've got uh the<01:01:09.839> watch<01:01:10.079> tree<01:01:10.319> build<01:01:10.559> and<01:01:10.720> you've<01:01:10.880> got<01:01:10.960> to" + }, + { + "start": 3671.109, + "duration": 0.0, + "text": "the watch tree build and you've got to" + }, + { + "start": 3671.119, + "duration": 0.0, + "text": "the watch tree build and you've got to produce<01:01:11.359> some<01:01:11.599> UI<01:01:11.920> for<01:01:12.000> it,<01:01:12.160> right?<01:01:12.319> You've" + }, + { + "start": 3672.47, + "duration": 0.0, + "text": "produce some UI for it, right? You've" + }, + { + "start": 3672.48, + "duration": 0.0, + "text": "produce some UI for it, right? You've got<01:01:12.559> a<01:01:12.640> list<01:01:12.799> of<01:01:12.880> final<01:01:13.119> evaluations<01:01:13.680> you<01:01:13.839> get" + }, + { + "start": 3673.91, + "duration": 0.0, + "text": "got a list of final evaluations you get" + }, + { + "start": 3673.92, + "duration": 0.0, + "text": "got a list of final evaluations you get out<01:01:14.079> of<01:01:14.160> this,<01:01:14.480> got<01:01:14.640> to<01:01:14.799> produce<01:01:14.960> a<01:01:15.119> UI<01:01:15.359> for<01:01:15.520> it." + }, + { + "start": 3676.549, + "duration": 0.0, + "text": "out of this, got to produce a UI for it." + }, + { + "start": 3676.559, + "duration": 0.0, + "text": "out of this, got to produce a UI for it. Um," + }, + { + "start": 3679.27, + "duration": 0.0, + "text": "Um," + }, + { + "start": 3679.28, + "duration": 0.0, + "text": "Um, now<01:01:19.599> started<01:01:20.000> by<01:01:20.160> introducing<01:01:20.480> the<01:01:20.720> most" + }, + { + "start": 3680.87, + "duration": 0.0, + "text": "now started by introducing the most" + }, + { + "start": 3680.88, + "duration": 0.0, + "text": "now started by introducing the most basic<01:01:21.119> one.<01:01:21.680> You<01:01:21.920> produce<01:01:22.160> a<01:01:22.240> textual" + }, + { + "start": 3682.71, + "duration": 0.0, + "text": "basic one. You produce a textual" + }, + { + "start": 3682.72, + "duration": 0.0, + "text": "basic one. You produce a textual representation<01:01:23.359> for<01:01:23.599> each<01:01:23.760> valuation.<01:01:24.319> Put" + }, + { + "start": 3684.39, + "duration": 0.0, + "text": "representation for each valuation. Put" + }, + { + "start": 3684.4, + "duration": 0.0, + "text": "representation for each valuation. Put them<01:01:24.480> in<01:01:24.640> a<01:01:24.799> put<01:01:25.040> them<01:01:25.119> in<01:01:25.200> a<01:01:25.359> little<01:01:25.520> watch" + }, + { + "start": 3685.75, + "duration": 0.0, + "text": "them in a put them in a little watch" + }, + { + "start": 3685.76, + "duration": 0.0, + "text": "them in a put them in a little watch window<01:01:26.079> UI.<01:01:26.799> That's<01:01:27.040> fine.<01:01:27.599> Um,<01:01:28.000> the<01:01:28.160> UI<01:01:28.480> build" + }, + { + "start": 3688.71, + "duration": 0.0, + "text": "window UI. That's fine. Um, the UI build" + }, + { + "start": 3688.72, + "duration": 0.0, + "text": "window UI. That's fine. Um, the UI build for<01:01:28.880> that<01:01:29.040> is<01:01:29.200> not<01:01:29.440> like<01:01:30.079> conceptually" + }, + { + "start": 3690.71, + "duration": 0.0, + "text": "for that is not like conceptually" + }, + { + "start": 3690.72, + "duration": 0.0, + "text": "for that is not like conceptually difficult.<01:01:31.119> It's<01:01:31.440> like<01:01:32.000> an<01:01:32.240> Excel<01:01:33.119> cell<01:01:33.520> like" + }, + { + "start": 3693.75, + "duration": 0.0, + "text": "difficult. It's like an Excel cell like" + }, + { + "start": 3693.76, + "duration": 0.0, + "text": "difficult. It's like an Excel cell like it's<01:01:34.079> just<01:01:34.240> like<01:01:34.400> Excel<01:01:34.720> for<01:01:34.880> your<01:01:35.040> program" + }, + { + "start": 3695.349, + "duration": 0.0, + "text": "it's just like Excel for your program" + }, + { + "start": 3695.359, + "duration": 0.0, + "text": "it's just like Excel for your program data.<01:01:36.240> Um,<01:01:36.720> the<01:01:36.960> full<01:01:37.119> watchman<01:01:37.520> is<01:01:37.680> just<01:01:37.839> like" + }, + { + "start": 3697.91, + "duration": 0.0, + "text": "data. Um, the full watchman is just like" + }, + { + "start": 3697.92, + "duration": 0.0, + "text": "data. Um, the full watchman is just like a<01:01:38.160> table<01:01:38.480> of<01:01:38.720> those<01:01:38.880> cells.<01:01:39.520> Um," + }, + { + "start": 3701.19, + "duration": 0.0, + "text": "a table of those cells. Um," + }, + { + "start": 3701.2, + "duration": 0.0, + "text": "a table of those cells. Um, you<01:01:41.359> know,<01:01:41.839> first<01:01:42.319> first<01:01:42.640> cell<01:01:42.880> would<01:01:43.119> be<01:01:43.200> the" + }, + { + "start": 3703.51, + "duration": 0.0, + "text": "you know, first first cell would be the" + }, + { + "start": 3703.52, + "duration": 0.0, + "text": "you know, first first cell would be the string<01:01:43.839> representing<01:01:44.319> the<01:01:44.559> expression." + }, + { + "start": 3705.349, + "duration": 0.0, + "text": "string representing the expression." + }, + { + "start": 3705.359, + "duration": 0.0, + "text": "string representing the expression. Second<01:01:45.599> cell<01:01:45.839> would<01:01:46.000> be<01:01:46.079> the<01:01:46.160> string" + }, + { + "start": 3706.47, + "duration": 0.0, + "text": "Second cell would be the string" + }, + { + "start": 3706.48, + "duration": 0.0, + "text": "Second cell would be the string representing<01:01:47.119> the<01:01:47.280> the<01:01:47.760> value.<01:01:48.480> Third<01:01:48.720> would" + }, + { + "start": 3708.87, + "duration": 0.0, + "text": "representing the the value. Third would" + }, + { + "start": 3708.88, + "duration": 0.0, + "text": "representing the the value. Third would be<01:01:49.040> the<01:01:49.200> type<01:01:49.920> and<01:01:50.000> and<01:01:50.400> so<01:01:50.559> on." + }, + { + "start": 3712.71, + "duration": 0.0, + "text": "be the type and and so on." + }, + { + "start": 3712.72, + "duration": 0.0, + "text": "be the type and and so on. Um" + }, + { + "start": 3715.03, + "duration": 0.0, + "text": "Um" + }, + { + "start": 3715.04, + "duration": 0.0, + "text": "Um but<01:01:56.160> it's<01:01:56.480> at<01:01:56.640> this<01:01:56.799> stage<01:01:57.040> that<01:01:57.280> other" + }, + { + "start": 3717.589, + "duration": 0.0, + "text": "but it's at this stage that other" + }, + { + "start": 3717.599, + "duration": 0.0, + "text": "but it's at this stage that other visualizers<01:01:58.160> can<01:01:58.319> actually<01:01:58.559> slot<01:01:58.880> in.<01:01:59.280> Right?" + }, + { + "start": 3719.43, + "duration": 0.0, + "text": "visualizers can actually slot in. Right?" + }, + { + "start": 3719.44, + "duration": 0.0, + "text": "visualizers can actually slot in. Right? If<01:01:59.599> we<01:01:59.760> want<01:01:59.839> to<01:02:00.000> take<01:02:00.240> that<01:02:00.559> path<01:02:01.119> and" + }, + { + "start": 3721.43, + "duration": 0.0, + "text": "If we want to take that path and" + }, + { + "start": 3721.44, + "duration": 0.0, + "text": "If we want to take that path and override<01:02:01.839> it<01:02:02.000> to<01:02:02.160> do<01:02:02.319> something<01:02:02.559> else,<01:02:03.040> here's" + }, + { + "start": 3723.27, + "duration": 0.0, + "text": "override it to do something else, here's" + }, + { + "start": 3723.28, + "duration": 0.0, + "text": "override it to do something else, here's where<01:02:03.440> we<01:02:03.760> actually<01:02:04.000> do<01:02:04.160> that.<01:02:04.559> So<01:02:04.880> instead<01:02:06.079> of" + }, + { + "start": 3726.309, + "duration": 0.0, + "text": "where we actually do that. So instead of" + }, + { + "start": 3726.319, + "duration": 0.0, + "text": "where we actually do that. So instead of taking<01:02:06.720> our<01:02:07.040> evaluations," + }, + { + "start": 3728.71, + "duration": 0.0, + "text": "taking our evaluations," + }, + { + "start": 3728.72, + "duration": 0.0, + "text": "taking our evaluations, feeding<01:02:09.040> them<01:02:09.200> into<01:02:09.359> a<01:02:09.520> value<01:02:09.839> string<01:02:10.640> text" + }, + { + "start": 3730.95, + "duration": 0.0, + "text": "feeding them into a value string text" + }, + { + "start": 3730.96, + "duration": 0.0, + "text": "feeding them into a value string text generator," + }, + { + "start": 3733.27, + "duration": 0.0, + "text": "generator," + }, + { + "start": 3733.28, + "duration": 0.0, + "text": "generator, we<01:02:13.520> could<01:02:13.599> also<01:02:13.839> feed<01:02:14.079> it<01:02:14.480> into<01:02:14.720> a<01:02:14.880> bit<01:02:15.119> map" + }, + { + "start": 3735.27, + "duration": 0.0, + "text": "we could also feed it into a bit map" + }, + { + "start": 3735.28, + "duration": 0.0, + "text": "we could also feed it into a bit map visualizer.<01:02:16.720> Oh<01:02:17.040> no,<01:02:18.160> 3D<01:02:18.559> geometry" + }, + { + "start": 3738.95, + "duration": 0.0, + "text": "visualizer. Oh no, 3D geometry" + }, + { + "start": 3738.96, + "duration": 0.0, + "text": "visualizer. Oh no, 3D geometry visualizer,<01:02:19.680> disassembly<01:02:20.240> visualizer," + }, + { + "start": 3740.71, + "duration": 0.0, + "text": "visualizer, disassembly visualizer," + }, + { + "start": 3740.72, + "duration": 0.0, + "text": "visualizer, disassembly visualizer, pointer<01:02:20.960> graph<01:02:21.200> visualizer,<01:02:21.599> right?<01:02:21.839> Or" + }, + { + "start": 3742.23, + "duration": 0.0, + "text": "pointer graph visualizer, right? Or" + }, + { + "start": 3742.24, + "duration": 0.0, + "text": "pointer graph visualizer, right? Or anything<01:02:22.480> you<01:02:22.640> can<01:02:22.799> think<01:02:22.880> of.<01:02:23.119> This<01:02:23.200> is<01:02:23.359> where" + }, + { + "start": 3743.43, + "duration": 0.0, + "text": "anything you can think of. This is where" + }, + { + "start": 3743.44, + "duration": 0.0, + "text": "anything you can think of. This is where it<01:02:23.520> would<01:02:23.680> slot<01:02:23.920> in<01:02:24.160> here." + }, + { + "start": 3746.549, + "duration": 0.0, + "text": "it would slot in here." + }, + { + "start": 3746.559, + "duration": 0.0, + "text": "it would slot in here. Um,<01:02:27.839> so<01:02:28.000> the<01:02:28.160> way<01:02:28.240> I<01:02:28.400> think<01:02:28.559> about<01:02:28.720> this<01:02:29.040> is" + }, + { + "start": 3749.27, + "duration": 0.0, + "text": "Um, so the way I think about this is" + }, + { + "start": 3749.28, + "duration": 0.0, + "text": "Um, so the way I think about this is that<01:02:29.520> all<01:02:29.680> of<01:02:29.839> these<01:02:30.079> different<01:02:30.240> visualizers" + }, + { + "start": 3750.95, + "duration": 0.0, + "text": "that all of these different visualizers" + }, + { + "start": 3750.96, + "duration": 0.0, + "text": "that all of these different visualizers are<01:02:31.200> sort<01:02:31.359> of<01:02:31.440> just<01:02:31.599> different<01:02:31.920> like<01:02:32.079> lenses" + }, + { + "start": 3752.549, + "duration": 0.0, + "text": "are sort of just different like lenses" + }, + { + "start": 3752.559, + "duration": 0.0, + "text": "are sort of just different like lenses into<01:02:32.799> our<01:02:32.960> data,<01:02:33.520> right?<01:02:33.680> you<01:02:33.920> can<01:02:34.079> just<01:02:34.240> take" + }, + { + "start": 3754.39, + "duration": 0.0, + "text": "into our data, right? you can just take" + }, + { + "start": 3754.4, + "duration": 0.0, + "text": "into our data, right? you can just take an<01:02:34.559> evaluation<01:02:35.040> and<01:02:35.359> view<01:02:35.599> it<01:02:35.839> like<01:02:36.400> literally" + }, + { + "start": 3756.789, + "duration": 0.0, + "text": "an evaluation and view it like literally" + }, + { + "start": 3756.799, + "duration": 0.0, + "text": "an evaluation and view it like literally like<01:02:36.960> a<01:02:37.200> physical<01:02:37.599> lens,<01:02:38.000> right?<01:02:38.400> Um<01:02:38.720> it's" + }, + { + "start": 3759.03, + "duration": 0.0, + "text": "like a physical lens, right? Um it's" + }, + { + "start": 3759.04, + "duration": 0.0, + "text": "like a physical lens, right? Um it's changing<01:02:39.280> how<01:02:39.440> you're<01:02:39.680> looking<01:02:39.839> at<01:02:40.079> it.<01:02:40.960> So<01:02:41.599> 64" + }, + { + "start": 3761.91, + "duration": 0.0, + "text": "changing how you're looking at it. So 64" + }, + { + "start": 3761.92, + "duration": 0.0, + "text": "changing how you're looking at it. So 64 megabyte<01:02:42.400> buffer<01:02:42.720> can<01:02:42.799> be<01:02:42.960> viewed<01:02:43.200> in<01:02:43.440> many" + }, + { + "start": 3763.75, + "duration": 0.0, + "text": "megabyte buffer can be viewed in many" + }, + { + "start": 3763.76, + "duration": 0.0, + "text": "megabyte buffer can be viewed in many ways.<01:02:45.040> It<01:02:45.200> can<01:02:45.359> be<01:02:45.440> viewed<01:02:45.599> through<01:02:45.680> a<01:02:45.839> bit<01:02:46.079> map" + }, + { + "start": 3766.23, + "duration": 0.0, + "text": "ways. It can be viewed through a bit map" + }, + { + "start": 3766.24, + "duration": 0.0, + "text": "ways. It can be viewed through a bit map lens," + }, + { + "start": 3767.99, + "duration": 0.0, + "text": "lens," + }, + { + "start": 3768.0, + "duration": 0.0, + "text": "lens, a<01:02:48.160> hex<01:02:48.400> editor<01:02:48.799> lens.<01:02:49.760> No,<01:02:50.240> please<01:02:50.559> stop<01:02:50.799> doing" + }, + { + "start": 3771.03, + "duration": 0.0, + "text": "a hex editor lens. No, please stop doing" + }, + { + "start": 3771.04, + "duration": 0.0, + "text": "a hex editor lens. No, please stop doing that<01:02:51.599> dude." + }, + { + "start": 3773.19, + "duration": 0.0, + "text": "that dude." + }, + { + "start": 3773.2, + "duration": 0.0, + "text": "that dude. Uh<01:02:53.520> or<01:02:53.680> a<01:02:53.839> text<01:02:54.000> editor<01:02:54.400> lens<01:02:54.880> or<01:02:55.200> you<01:02:55.280> know" + }, + { + "start": 3775.51, + "duration": 0.0, + "text": "Uh or a text editor lens or you know" + }, + { + "start": 3775.52, + "duration": 0.0, + "text": "Uh or a text editor lens or you know many<01:02:55.839> other<01:02:56.000> possible<01:02:56.400> things." + }, + { + "start": 3777.91, + "duration": 0.0, + "text": "many other possible things." + }, + { + "start": 3777.92, + "duration": 0.0, + "text": "many other possible things. Now<01:02:58.559> a<01:02:58.799> complication<01:02:59.359> arises" + }, + { + "start": 3781.75, + "duration": 0.0, + "text": "Now a complication arises" + }, + { + "start": 3781.76, + "duration": 0.0, + "text": "Now a complication arises which<01:03:02.000> is<01:03:02.079> that<01:03:02.319> not<01:03:02.480> all<01:03:02.640> the<01:03:02.799> information<01:03:03.119> to" + }, + { + "start": 3783.349, + "duration": 0.0, + "text": "which is that not all the information to" + }, + { + "start": 3783.359, + "duration": 0.0, + "text": "which is that not all the information to actually<01:03:03.520> produce<01:03:03.760> a<01:03:03.920> visualization<01:03:04.559> is" + }, + { + "start": 3784.789, + "duration": 0.0, + "text": "actually produce a visualization is" + }, + { + "start": 3784.799, + "duration": 0.0, + "text": "actually produce a visualization is present<01:03:05.200> inside<01:03:05.520> of<01:03:05.599> the<01:03:05.760> evaluation.<01:03:06.319> Right?" + }, + { + "start": 3786.63, + "duration": 0.0, + "text": "present inside of the evaluation. Right?" + }, + { + "start": 3786.64, + "duration": 0.0, + "text": "present inside of the evaluation. Right? If<01:03:06.799> I<01:03:06.880> want<01:03:07.040> to<01:03:07.119> visualize<01:03:07.440> a<01:03:07.520> bit<01:03:07.760> map<01:03:08.480> what" + }, + { + "start": 3788.71, + "duration": 0.0, + "text": "If I want to visualize a bit map what" + }, + { + "start": 3788.72, + "duration": 0.0, + "text": "If I want to visualize a bit map what dimensions<01:03:09.119> am<01:03:09.280> I<01:03:09.440> talking<01:03:09.599> about?<01:03:09.760> Like<01:03:10.000> what" + }, + { + "start": 3790.23, + "duration": 0.0, + "text": "dimensions am I talking about? Like what" + }, + { + "start": 3790.24, + "duration": 0.0, + "text": "dimensions am I talking about? Like what what<01:03:10.480> are<01:03:10.559> the<01:03:10.640> dimensions<01:03:10.960> of<01:03:11.040> the<01:03:11.119> bit<01:03:11.359> map?" + }, + { + "start": 3791.67, + "duration": 0.0, + "text": "what are the dimensions of the bit map?" + }, + { + "start": 3791.68, + "duration": 0.0, + "text": "what are the dimensions of the bit map? What<01:03:11.760> format<01:03:12.160> is<01:03:12.319> the<01:03:12.480> data<01:03:12.640> encoded<01:03:13.119> in?<01:03:13.599> Um" + }, + { + "start": 3793.829, + "duration": 0.0, + "text": "What format is the data encoded in? Um" + }, + { + "start": 3793.839, + "duration": 0.0, + "text": "What format is the data encoded in? Um if<01:03:14.079> I'm<01:03:14.319> looking<01:03:14.480> at<01:03:14.640> geometry<01:03:15.280> is<01:03:15.440> this<01:03:15.760> like" + }, + { + "start": 3796.63, + "duration": 0.0, + "text": "if I'm looking at geometry is this like" + }, + { + "start": 3796.64, + "duration": 0.0, + "text": "if I'm looking at geometry is this like vertices<01:03:17.280> or<01:03:17.599> indices<01:03:18.000> or<01:03:18.240> what<01:03:18.319> is<01:03:18.480> it?<01:03:18.720> What" + }, + { + "start": 3798.87, + "duration": 0.0, + "text": "vertices or indices or what is it? What" + }, + { + "start": 3798.88, + "duration": 0.0, + "text": "vertices or indices or what is it? What topology<01:03:19.440> is<01:03:19.599> the<01:03:19.839> geometry?<01:03:20.559> What's<01:03:20.720> the" + }, + { + "start": 3800.87, + "duration": 0.0, + "text": "topology is the geometry? What's the" + }, + { + "start": 3800.88, + "duration": 0.0, + "text": "topology is the geometry? What's the vertex<01:03:21.359> format?<01:03:21.760> Like<01:03:22.000> how<01:03:22.160> are<01:03:22.240> these<01:03:22.480> things" + }, + { + "start": 3802.87, + "duration": 0.0, + "text": "vertex format? Like how are these things" + }, + { + "start": 3802.88, + "duration": 0.0, + "text": "vertex format? Like how are these things laid<01:03:23.119> out<01:03:23.680> actually?<01:03:24.160> How's<01:03:24.400> the<01:03:24.559> different" + }, + { + "start": 3804.789, + "duration": 0.0, + "text": "laid out actually? How's the different" + }, + { + "start": 3804.799, + "duration": 0.0, + "text": "laid out actually? How's the different information<01:03:25.119> laid<01:03:25.440> out<01:03:25.760> with<01:03:26.079> disassembly?" + }, + { + "start": 3807.029, + "duration": 0.0, + "text": "information laid out with disassembly?" + }, + { + "start": 3807.039, + "duration": 0.0, + "text": "information laid out with disassembly? uh<01:03:27.200> what<01:03:27.359> architecture,<01:03:28.000> what<01:03:28.160> syntax,<01:03:28.720> how" + }, + { + "start": 3808.87, + "duration": 0.0, + "text": "uh what architecture, what syntax, how" + }, + { + "start": 3808.88, + "duration": 0.0, + "text": "uh what architecture, what syntax, how many<01:03:28.960> bytes<01:03:29.359> do<01:03:29.599> I<01:03:29.680> want<01:03:29.760> to<01:03:29.920> pull<01:03:30.079> down<01:03:30.559> and" + }, + { + "start": 3810.789, + "duration": 0.0, + "text": "many bytes do I want to pull down and" + }, + { + "start": 3810.799, + "duration": 0.0, + "text": "many bytes do I want to pull down and actually<01:03:31.039> visualize?<01:03:32.480> Um<01:03:33.680> and<01:03:33.920> so<01:03:34.079> note<01:03:34.319> that" + }, + { + "start": 3814.47, + "duration": 0.0, + "text": "actually visualize? Um and so note that" + }, + { + "start": 3814.48, + "duration": 0.0, + "text": "actually visualize? Um and so note that all<01:03:34.640> of<01:03:34.720> these<01:03:34.960> questions<01:03:35.280> are<01:03:35.440> like<01:03:35.599> highly" + }, + { + "start": 3815.99, + "duration": 0.0, + "text": "all of these questions are like highly" + }, + { + "start": 3816.0, + "duration": 0.0, + "text": "all of these questions are like highly specific.<01:03:36.400> They're<01:03:36.640> parameterizations<01:03:37.599> to" + }, + { + "start": 3817.829, + "duration": 0.0, + "text": "specific. They're parameterizations to" + }, + { + "start": 3817.839, + "duration": 0.0, + "text": "specific. They're parameterizations to the<01:03:38.000> visualizer.<01:03:39.359> Um" + }, + { + "start": 3821.67, + "duration": 0.0, + "text": "the visualizer. Um" + }, + { + "start": 3821.68, + "duration": 0.0, + "text": "the visualizer. Um uh<01:03:41.839> they're<01:03:42.000> also<01:03:42.240> the<01:03:42.400> kinds<01:03:42.559> of<01:03:42.640> things<01:03:42.799> that" + }, + { + "start": 3822.95, + "duration": 0.0, + "text": "uh they're also the kinds of things that" + }, + { + "start": 3822.96, + "duration": 0.0, + "text": "uh they're also the kinds of things that a<01:03:43.200> user<01:03:43.599> probably<01:03:44.079> wants<01:03:44.319> to<01:03:44.480> explicitly" + }, + { + "start": 3825.19, + "duration": 0.0, + "text": "a user probably wants to explicitly" + }, + { + "start": 3825.2, + "duration": 0.0, + "text": "a user probably wants to explicitly express." + }, + { + "start": 3829.92, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 3831.51, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 3831.52, + "duration": 0.0, + "text": "Okay. Um<01:03:52.319> so<01:03:52.880> to<01:03:53.200> solve<01:03:53.359> this<01:03:53.599> problem<01:03:54.240> we<01:03:54.480> need<01:03:54.559> to" + }, + { + "start": 3834.71, + "duration": 0.0, + "text": "Um so to solve this problem we need to" + }, + { + "start": 3834.72, + "duration": 0.0, + "text": "Um so to solve this problem we need to have<01:03:54.880> some<01:03:55.119> way<01:03:55.359> of<01:03:56.079> obtaining<01:03:56.480> from<01:03:56.720> the<01:03:56.880> user" + }, + { + "start": 3837.349, + "duration": 0.0, + "text": "have some way of obtaining from the user" + }, + { + "start": 3837.359, + "duration": 0.0, + "text": "have some way of obtaining from the user a<01:03:57.599> choice<01:03:57.839> of<01:03:58.000> visualizer<01:03:58.880> and<01:03:59.119> a<01:03:59.280> choice<01:03:59.440> of" + }, + { + "start": 3839.51, + "duration": 0.0, + "text": "a choice of visualizer and a choice of" + }, + { + "start": 3839.52, + "duration": 0.0, + "text": "a choice of visualizer and a choice of all<01:03:59.680> that<01:03:59.839> visualizer's<01:04:00.559> options<01:04:01.680> um<01:04:01.839> for" + }, + { + "start": 3842.069, + "duration": 0.0, + "text": "all that visualizer's options um for" + }, + { + "start": 3842.079, + "duration": 0.0, + "text": "all that visualizer's options um for some<01:04:02.240> evaluation.<01:04:03.119> So<01:04:03.359> if<01:04:03.520> I've<01:04:03.760> got<01:04:03.839> this" + }, + { + "start": 3844.069, + "duration": 0.0, + "text": "some evaluation. So if I've got this" + }, + { + "start": 3844.079, + "duration": 0.0, + "text": "some evaluation. So if I've got this buffer<01:04:04.640> evaluation" + }, + { + "start": 3846.23, + "duration": 0.0, + "text": "buffer evaluation" + }, + { + "start": 3846.24, + "duration": 0.0, + "text": "buffer evaluation and<01:04:06.400> it's<01:04:06.640> array<01:04:06.880> of<01:04:07.039> 64<01:04:07.440> million<01:04:07.760> u8s<01:04:08.640> I<01:04:09.039> need" + }, + { + "start": 3849.19, + "duration": 0.0, + "text": "and it's array of 64 million u8s I need" + }, + { + "start": 3849.2, + "duration": 0.0, + "text": "and it's array of 64 million u8s I need to<01:04:09.359> somehow<01:04:09.760> tag<01:04:10.079> it.<01:04:10.319> I<01:04:10.480> need<01:04:10.640> to<01:04:10.720> somehow" + }, + { + "start": 3851.109, + "duration": 0.0, + "text": "to somehow tag it. I need to somehow" + }, + { + "start": 3851.119, + "duration": 0.0, + "text": "to somehow tag it. I need to somehow like<01:04:11.440> take<01:04:11.680> that<01:04:12.079> evaluation<01:04:12.559> to<01:04:12.720> just<01:04:12.799> like" + }, + { + "start": 3852.95, + "duration": 0.0, + "text": "like take that evaluation to just like" + }, + { + "start": 3852.96, + "duration": 0.0, + "text": "like take that evaluation to just like tack<01:04:13.280> some<01:04:13.440> information<01:04:13.760> on<01:04:13.920> that's<01:04:14.160> like<01:04:14.400> by" + }, + { + "start": 3854.549, + "duration": 0.0, + "text": "tack some information on that's like by" + }, + { + "start": 3854.559, + "duration": 0.0, + "text": "tack some information on that's like by the<01:04:14.640> way<01:04:15.119> I<01:04:15.280> want<01:04:15.359> to<01:04:15.440> look<01:04:15.520> at<01:04:15.680> this<01:04:15.760> as<01:04:15.920> a<01:04:16.000> bit" + }, + { + "start": 3856.23, + "duration": 0.0, + "text": "the way I want to look at this as a bit" + }, + { + "start": 3856.24, + "duration": 0.0, + "text": "the way I want to look at this as a bit map<01:04:17.359> by24<01:04:18.079> RGBA88<01:04:19.119> or<01:04:19.359> something." + }, + { + "start": 3861.67, + "duration": 0.0, + "text": "map by24 RGBA88 or something." + }, + { + "start": 3861.68, + "duration": 0.0, + "text": "map by24 RGBA88 or something. Lucky<01:04:22.000> for<01:04:22.160> us<01:04:22.559> there's<01:04:22.799> already<01:04:22.960> a<01:04:23.200> way<01:04:23.359> to" + }, + { + "start": 3863.51, + "duration": 0.0, + "text": "Lucky for us there's already a way to" + }, + { + "start": 3863.52, + "duration": 0.0, + "text": "Lucky for us there's already a way to tag<01:04:23.760> an<01:04:23.920> evaluation<01:04:25.039> and<01:04:25.280> that's<01:04:25.440> with<01:04:25.599> type" + }, + { + "start": 3865.829, + "duration": 0.0, + "text": "tag an evaluation and that's with type" + }, + { + "start": 3865.839, + "duration": 0.0, + "text": "tag an evaluation and that's with type info." + }, + { + "start": 3867.99, + "duration": 0.0, + "text": "info." + }, + { + "start": 3868.0, + "duration": 0.0, + "text": "info. So<01:04:28.480> we<01:04:28.720> can<01:04:28.799> use<01:04:29.039> type<01:04:29.359> info<01:04:29.920> to<01:04:30.240> express<01:04:30.640> all" + }, + { + "start": 3870.87, + "duration": 0.0, + "text": "So we can use type info to express all" + }, + { + "start": 3870.88, + "duration": 0.0, + "text": "So we can use type info to express all of<01:04:30.960> these<01:04:31.200> visualizer<01:04:31.920> decisions.<01:04:32.880> Um<01:04:33.680> so<01:04:34.799> we" + }, + { + "start": 3875.029, + "duration": 0.0, + "text": "of these visualizer decisions. Um so we" + }, + { + "start": 3875.039, + "duration": 0.0, + "text": "of these visualizer decisions. Um so we already<01:04:35.280> have<01:04:35.440> paths<01:04:35.760> that<01:04:35.920> rely<01:04:36.160> on<01:04:36.319> type" + }, + { + "start": 3876.549, + "duration": 0.0, + "text": "already have paths that rely on type" + }, + { + "start": 3876.559, + "duration": 0.0, + "text": "already have paths that rely on type info,<01:04:36.960> right?<01:04:37.119> Remember<01:04:37.440> when<01:04:37.599> I<01:04:37.760> turned<01:04:37.920> it" + }, + { + "start": 3878.069, + "duration": 0.0, + "text": "info, right? Remember when I turned it" + }, + { + "start": 3878.079, + "duration": 0.0, + "text": "info, right? Remember when I turned it into<01:04:38.240> a<01:04:38.400> string,<01:04:38.799> I<01:04:38.960> had<01:04:39.119> to<01:04:39.280> like<01:04:39.440> look<01:04:39.520> at<01:04:39.599> the" + }, + { + "start": 3879.75, + "duration": 0.0, + "text": "into a string, I had to like look at the" + }, + { + "start": 3879.76, + "duration": 0.0, + "text": "into a string, I had to like look at the type<01:04:40.000> info<01:04:40.559> and<01:04:40.880> see<01:04:41.119> like<01:04:41.359> what<01:04:41.599> case<01:04:41.839> I" + }, + { + "start": 3881.99, + "duration": 0.0, + "text": "type info and see like what case I" + }, + { + "start": 3882.0, + "duration": 0.0, + "text": "type info and see like what case I wanted<01:04:42.160> to<01:04:42.400> actually<01:04:42.640> do.<01:04:43.680> Not<01:04:44.000> really<01:04:44.160> that" + }, + { + "start": 3884.39, + "duration": 0.0, + "text": "wanted to actually do. Not really that" + }, + { + "start": 3884.4, + "duration": 0.0, + "text": "wanted to actually do. Not really that much<01:04:44.559> different,<01:04:44.799> right?<01:04:45.039> I<01:04:45.200> can<01:04:45.359> just<01:04:45.680> say" + }, + { + "start": 3885.91, + "duration": 0.0, + "text": "much different, right? I can just say" + }, + { + "start": 3885.92, + "duration": 0.0, + "text": "much different, right? I can just say like<01:04:46.160> the<01:04:46.319> type<01:04:46.480> is<01:04:46.640> going<01:04:46.720> to<01:04:46.799> somehow" + }, + { + "start": 3887.19, + "duration": 0.0, + "text": "like the type is going to somehow" + }, + { + "start": 3887.2, + "duration": 0.0, + "text": "like the type is going to somehow express<01:04:47.520> this<01:04:47.920> and<01:04:48.079> then<01:04:48.240> we<01:04:48.400> can<01:04:48.480> choose" + }, + { + "start": 3888.789, + "duration": 0.0, + "text": "express this and then we can choose" + }, + { + "start": 3888.799, + "duration": 0.0, + "text": "express this and then we can choose visualizers<01:04:49.440> based<01:04:49.680> on<01:04:49.839> that.<01:04:51.200> So<01:04:52.319> how<01:04:52.480> do<01:04:52.640> we" + }, + { + "start": 3892.71, + "duration": 0.0, + "text": "visualizers based on that. So how do we" + }, + { + "start": 3892.72, + "duration": 0.0, + "text": "visualizers based on that. So how do we extend<01:04:52.960> the<01:04:53.039> type<01:04:53.280> info<01:04:53.599> to<01:04:53.760> do<01:04:53.920> that?<01:04:54.640> Um<01:04:55.039> so" + }, + { + "start": 3895.27, + "duration": 0.0, + "text": "extend the type info to do that? Um so" + }, + { + "start": 3895.28, + "duration": 0.0, + "text": "extend the type info to do that? Um so the<01:04:55.599> buffer<01:04:56.000> type<01:04:56.240> you<01:04:56.400> can<01:04:56.480> imagine<01:04:56.960> buffer" + }, + { + "start": 3897.43, + "duration": 0.0, + "text": "the buffer type you can imagine buffer" + }, + { + "start": 3897.44, + "duration": 0.0, + "text": "the buffer type you can imagine buffer could<01:04:57.599> be<01:04:57.680> like<01:04:57.760> a<01:04:57.920> local<01:04:58.160> variable<01:04:58.559> or<01:04:58.799> or" + }, + { + "start": 3899.109, + "duration": 0.0, + "text": "could be like a local variable or or" + }, + { + "start": 3899.119, + "duration": 0.0, + "text": "could be like a local variable or or probably<01:04:59.280> not<01:04:59.599> 64<01:04:59.920> megabytes<01:05:00.720> global" + }, + { + "start": 3901.029, + "duration": 0.0, + "text": "probably not 64 megabytes global" + }, + { + "start": 3901.039, + "duration": 0.0, + "text": "probably not 64 megabytes global variable.<01:05:01.839> uh<01:05:01.920> its<01:05:02.240> type<01:05:02.400> is<01:05:02.559> a<01:05:02.799> you<01:05:02.960> know<01:05:03.119> 64" + }, + { + "start": 3903.51, + "duration": 0.0, + "text": "variable. uh its type is a you know 64" + }, + { + "start": 3903.52, + "duration": 0.0, + "text": "variable. uh its type is a you know 64 megabyte<01:05:04.000> array<01:05:04.559> of<01:05:04.720> U8s." + }, + { + "start": 3908.24, + "duration": 0.0, + "text": "So<01:05:08.480> all<01:05:08.640> we<01:05:08.799> have<01:05:08.880> to<01:05:08.960> do<01:05:09.119> is<01:05:09.280> extend<01:05:09.599> our" + }, + { + "start": 3909.829, + "duration": 0.0, + "text": "So all we have to do is extend our" + }, + { + "start": 3909.839, + "duration": 0.0, + "text": "So all we have to do is extend our visual<01:05:10.240> uh<01:05:10.319> our<01:05:10.559> evaluation<01:05:11.200> language<01:05:12.240> to<01:05:12.559> be" + }, + { + "start": 3912.71, + "duration": 0.0, + "text": "visual uh our evaluation language to be" + }, + { + "start": 3912.72, + "duration": 0.0, + "text": "visual uh our evaluation language to be able<01:05:12.880> to<01:05:13.200> extend<01:05:13.520> that<01:05:13.680> type<01:05:14.000> information." + }, + { + "start": 3914.71, + "duration": 0.0, + "text": "able to extend that type information." + }, + { + "start": 3914.72, + "duration": 0.0, + "text": "able to extend that type information. Conceptually<01:05:15.359> it's<01:05:15.520> almost<01:05:15.760> like<01:05:15.920> just<01:05:16.079> a<01:05:16.799> uh" + }, + { + "start": 3916.87, + "duration": 0.0, + "text": "Conceptually it's almost like just a uh" + }, + { + "start": 3916.88, + "duration": 0.0, + "text": "Conceptually it's almost like just a uh it's<01:05:17.119> actually<01:05:17.359> not<01:05:17.599> just<01:05:17.760> a<01:05:17.920> cast.<01:05:18.240> It's<01:05:18.480> sort" + }, + { + "start": 3918.549, + "duration": 0.0, + "text": "it's actually not just a cast. It's sort" + }, + { + "start": 3918.559, + "duration": 0.0, + "text": "it's actually not just a cast. It's sort of<01:05:18.640> like<01:05:18.799> a<01:05:19.440> it's<01:05:20.000> it's<01:05:20.240> sort<01:05:20.400> of<01:05:20.799> appending<01:05:21.200> on" + }, + { + "start": 3921.349, + "duration": 0.0, + "text": "of like a it's it's sort of appending on" + }, + { + "start": 3921.359, + "duration": 0.0, + "text": "of like a it's it's sort of appending on to<01:05:21.440> the<01:05:21.599> type<01:05:21.839> operators<01:05:22.240> if<01:05:22.400> that<01:05:22.559> makes" + }, + { + "start": 3922.71, + "duration": 0.0, + "text": "to the type operators if that makes" + }, + { + "start": 3922.72, + "duration": 0.0, + "text": "to the type operators if that makes sense.<01:05:23.280> I<01:05:23.520> guess<01:05:23.599> it<01:05:23.760> is<01:05:23.920> sort<01:05:24.000> of<01:05:24.079> a<01:05:24.240> kind<01:05:24.400> of" + }, + { + "start": 3924.47, + "duration": 0.0, + "text": "sense. I guess it is sort of a kind of" + }, + { + "start": 3924.48, + "duration": 0.0, + "text": "sense. I guess it is sort of a kind of cast.<01:05:24.960> take<01:05:25.440> take<01:05:25.680> the<01:05:26.000> 64<01:05:26.400> megabyte<01:05:27.039> array<01:05:27.440> of" + }, + { + "start": 3927.589, + "duration": 0.0, + "text": "cast. take take the 64 megabyte array of" + }, + { + "start": 3927.599, + "duration": 0.0, + "text": "cast. take take the 64 megabyte array of U8s<01:05:28.160> and<01:05:28.240> then<01:05:28.319> you<01:05:28.480> sort<01:05:28.640> of<01:05:28.720> cast<01:05:29.039> it<01:05:29.200> to" + }, + { + "start": 3930.15, + "duration": 0.0, + "text": "U8s and then you sort of cast it to" + }, + { + "start": 3930.16, + "duration": 0.0, + "text": "U8s and then you sort of cast it to bitmap<01:05:30.960> type<01:05:32.000> special<01:05:32.400> type<01:05:32.799> which<01:05:33.119> points<01:05:33.520> to" + }, + { + "start": 3934.39, + "duration": 0.0, + "text": "bitmap type special type which points to" + }, + { + "start": 3934.4, + "duration": 0.0, + "text": "bitmap type special type which points to that<01:05:34.640> type<01:05:35.119> right" + }, + { + "start": 3937.029, + "duration": 0.0, + "text": "that type right" + }, + { + "start": 3937.039, + "duration": 0.0, + "text": "that type right um<01:05:37.760> so<01:05:38.240> like<01:05:38.480> if<01:05:38.720> we<01:05:38.880> look<01:05:38.960> at<01:05:39.119> this<01:05:39.280> expression" + }, + { + "start": 3939.589, + "duration": 0.0, + "text": "um so like if we look at this expression" + }, + { + "start": 3939.599, + "duration": 0.0, + "text": "um so like if we look at this expression down<01:05:39.839> here<01:05:40.079> you've<01:05:40.319> got<01:05:40.480> like<01:05:40.640> this<01:05:40.880> bit<01:05:41.200> map" + }, + { + "start": 3941.43, + "duration": 0.0, + "text": "down here you've got like this bit map" + }, + { + "start": 3941.44, + "duration": 0.0, + "text": "down here you've got like this bit map call<01:05:41.839> it's<01:05:42.000> like<01:05:42.240> looks<01:05:42.400> like<01:05:42.480> a<01:05:42.640> function" + }, + { + "start": 3942.95, + "duration": 0.0, + "text": "call it's like looks like a function" + }, + { + "start": 3942.96, + "duration": 0.0, + "text": "call it's like looks like a function call<01:05:43.760> you<01:05:43.920> know<01:05:44.079> bit<01:05:44.400> map<01:05:44.640> and<01:05:44.799> then<01:05:44.960> you've" + }, + { + "start": 3945.109, + "duration": 0.0, + "text": "call you know bit map and then you've" + }, + { + "start": 3945.119, + "duration": 0.0, + "text": "call you know bit map and then you've got<01:05:45.280> some<01:05:45.440> buffer<01:05:46.000> and<01:05:46.160> then<01:05:46.319> the" + }, + { + "start": 3946.47, + "duration": 0.0, + "text": "got some buffer and then the" + }, + { + "start": 3946.48, + "duration": 0.0, + "text": "got some buffer and then the parameterizations<01:05:47.200> of<01:05:47.359> the<01:05:47.440> bitmap" + }, + { + "start": 3947.91, + "duration": 0.0, + "text": "parameterizations of the bitmap" + }, + { + "start": 3947.92, + "duration": 0.0, + "text": "parameterizations of the bitmap visualizer<01:05:48.960> that's<01:05:49.200> just<01:05:49.359> a<01:05:49.520> type<01:05:49.760> now<01:05:50.240> or" + }, + { + "start": 3950.39, + "duration": 0.0, + "text": "visualizer that's just a type now or" + }, + { + "start": 3950.4, + "duration": 0.0, + "text": "visualizer that's just a type now or that<01:05:50.640> that<01:05:51.039> implies<01:05:51.520> that<01:05:51.680> the<01:05:51.839> type<01:05:52.160> turns" + }, + { + "start": 3952.39, + "duration": 0.0, + "text": "that that implies that the type turns" + }, + { + "start": 3952.4, + "duration": 0.0, + "text": "that that implies that the type turns into<01:05:52.640> this" + }, + { + "start": 3958.319, + "duration": 0.0, + "text": "So<01:05:58.559> in<01:05:58.720> one<01:05:58.960> step<01:06:00.000> we've<01:06:00.559> uh<01:06:00.640> allowed<01:06:00.880> our" + }, + { + "start": 3961.109, + "duration": 0.0, + "text": "So in one step we've uh allowed our" + }, + { + "start": 3961.119, + "duration": 0.0, + "text": "So in one step we've uh allowed our expression<01:06:01.440> language<01:06:01.760> to<01:06:02.640> express<01:06:02.720> express" + }, + { + "start": 3963.109, + "duration": 0.0, + "text": "expression language to express express" + }, + { + "start": 3963.119, + "duration": 0.0, + "text": "expression language to express express both<01:06:03.359> a<01:06:03.599> choice<01:06:03.760> of<01:06:03.920> visualizer<01:06:04.799> and<01:06:05.039> any<01:06:05.280> set" + }, + { + "start": 3965.43, + "duration": 0.0, + "text": "both a choice of visualizer and any set" + }, + { + "start": 3965.44, + "duration": 0.0, + "text": "both a choice of visualizer and any set of<01:06:05.599> arguments<01:06:05.920> to<01:06:06.079> that<01:06:06.240> visualizer.<01:06:06.960> So<01:06:07.119> our" + }, + { + "start": 3967.27, + "duration": 0.0, + "text": "of arguments to that visualizer. So our" + }, + { + "start": 3967.28, + "duration": 0.0, + "text": "of arguments to that visualizer. So our UI<01:06:07.680> build<01:06:08.160> by<01:06:08.400> looking<01:06:08.640> at<01:06:08.720> the<01:06:08.880> type" + }, + { + "start": 3969.19, + "duration": 0.0, + "text": "UI build by looking at the type" + }, + { + "start": 3969.2, + "duration": 0.0, + "text": "UI build by looking at the type information<01:06:10.160> can<01:06:10.400> then<01:06:10.559> decide" + }, + { + "start": 3970.95, + "duration": 0.0, + "text": "information can then decide" + }, + { + "start": 3970.96, + "duration": 0.0, + "text": "information can then decide appropriately<01:06:11.359> on<01:06:11.520> the<01:06:11.680> visualizer<01:06:12.160> path" + }, + { + "start": 3972.789, + "duration": 0.0, + "text": "appropriately on the visualizer path" + }, + { + "start": 3972.799, + "duration": 0.0, + "text": "appropriately on the visualizer path like<01:06:13.280> do<01:06:13.440> I<01:06:13.599> have<01:06:13.680> a<01:06:13.839> visualizer<01:06:14.319> type" + }, + { + "start": 3974.549, + "duration": 0.0, + "text": "like do I have a visualizer type" + }, + { + "start": 3974.559, + "duration": 0.0, + "text": "like do I have a visualizer type operator<01:06:14.880> or<01:06:15.039> do<01:06:15.200> I<01:06:15.359> not?" + }, + { + "start": 3977.91, + "duration": 0.0, + "text": "operator or do I not?" + }, + { + "start": 3977.92, + "duration": 0.0, + "text": "operator or do I not? Um," + }, + { + "start": 3979.75, + "duration": 0.0, + "text": "Um," + }, + { + "start": 3979.76, + "duration": 0.0, + "text": "Um, so<01:06:20.000> our<01:06:20.240> visualizers<01:06:20.799> fill<01:06:21.039> this<01:06:21.200> part<01:06:21.440> out," + }, + { + "start": 3981.829, + "duration": 0.0, + "text": "so our visualizers fill this part out," + }, + { + "start": 3981.839, + "duration": 0.0, + "text": "so our visualizers fill this part out, right?<01:06:22.000> We've<01:06:22.240> got<01:06:22.319> some<01:06:22.559> evaluation.<01:06:23.440> We" + }, + { + "start": 3983.589, + "duration": 0.0, + "text": "right? We've got some evaluation. We" + }, + { + "start": 3983.599, + "duration": 0.0, + "text": "right? We've got some evaluation. We produce<01:06:23.839> a<01:06:24.000> UI." + }, + { + "start": 3985.589, + "duration": 0.0, + "text": "produce a UI." + }, + { + "start": 3985.599, + "duration": 0.0, + "text": "produce a UI. Pretty<01:06:25.839> pretty<01:06:26.160> straightforward<01:06:26.960> hopefully." + }, + { + "start": 3987.99, + "duration": 0.0, + "text": "Pretty pretty straightforward hopefully." + }, + { + "start": 3988.0, + "duration": 0.0, + "text": "Pretty pretty straightforward hopefully. Um," + }, + { + "start": 3989.91, + "duration": 0.0, + "text": "Um," + }, + { + "start": 3989.92, + "duration": 0.0, + "text": "Um, and<01:06:30.079> recall<01:06:30.400> that<01:06:30.720> an<01:06:30.880> evaluation<01:06:31.359> implies<01:06:32.000> an" + }, + { + "start": 3992.23, + "duration": 0.0, + "text": "and recall that an evaluation implies an" + }, + { + "start": 3992.24, + "duration": 0.0, + "text": "and recall that an evaluation implies an abstract<01:06:32.640> syntax<01:06:32.960> tree,<01:06:33.119> an<01:06:33.280> intermediate" + }, + { + "start": 3993.67, + "duration": 0.0, + "text": "abstract syntax tree, an intermediate" + }, + { + "start": 3993.68, + "duration": 0.0, + "text": "abstract syntax tree, an intermediate representation,<01:06:34.480> a<01:06:34.720> type,<01:06:35.200> and<01:06:35.440> a<01:06:35.599> value." + }, + { + "start": 3997.51, + "duration": 0.0, + "text": "representation, a type, and a value." + }, + { + "start": 3997.52, + "duration": 0.0, + "text": "representation, a type, and a value. And<01:06:37.680> the<01:06:37.839> type<01:06:38.400> implies<01:06:38.799> all<01:06:38.960> the<01:06:39.119> opt<01:06:39.599> uh<01:06:39.680> all" + }, + { + "start": 3999.829, + "duration": 0.0, + "text": "And the type implies all the opt uh all" + }, + { + "start": 3999.839, + "duration": 0.0, + "text": "And the type implies all the opt uh all the<01:06:40.000> options<01:06:40.319> for<01:06:40.480> the<01:06:40.640> visualizers." + }, + { + "start": 4003.68, + "duration": 0.0, + "text": "Um," + }, + { + "start": 4005.43, + "duration": 0.0, + "text": "Um," + }, + { + "start": 4005.44, + "duration": 0.0, + "text": "Um, so<01:06:45.680> now,<01:06:46.000> okay,<01:06:46.480> let's<01:06:46.720> back<01:06:46.960> up." + }, + { + "start": 4008.87, + "duration": 0.0, + "text": "so now, okay, let's back up." + }, + { + "start": 4008.88, + "duration": 0.0, + "text": "so now, okay, let's back up. got<01:06:49.119> these<01:06:49.359> lenses.<01:06:49.920> We<01:06:50.160> can<01:06:50.240> extend<01:06:50.559> type" + }, + { + "start": 4010.87, + "duration": 0.0, + "text": "got these lenses. We can extend type" + }, + { + "start": 4010.88, + "duration": 0.0, + "text": "got these lenses. We can extend type information<01:06:51.280> to<01:06:51.520> include<01:06:52.400> arbitrary" + }, + { + "start": 4012.87, + "duration": 0.0, + "text": "information to include arbitrary" + }, + { + "start": 4012.88, + "duration": 0.0, + "text": "information to include arbitrary visualiz<01:06:53.599> uh<01:06:53.760> visualizer" + }, + { + "start": 4014.309, + "duration": 0.0, + "text": "visualiz uh visualizer" + }, + { + "start": 4014.319, + "duration": 0.0, + "text": "visualiz uh visualizer parameterizations.<01:06:55.760> Uh<01:06:56.240> let's<01:06:56.559> take<01:06:56.720> them<01:06:56.880> a" + }, + { + "start": 4017.109, + "duration": 0.0, + "text": "parameterizations. Uh let's take them a" + }, + { + "start": 4017.119, + "duration": 0.0, + "text": "parameterizations. Uh let's take them a little<01:06:57.200> bit<01:06:57.359> further." + }, + { + "start": 4019.43, + "duration": 0.0, + "text": "little bit further." + }, + { + "start": 4019.44, + "duration": 0.0, + "text": "little bit further. Uh<01:06:59.680> so<01:06:59.839> let's<01:07:00.000> imagine<01:07:00.319> types<01:07:00.720> like<01:07:00.880> this." + }, + { + "start": 4021.349, + "duration": 0.0, + "text": "Uh so let's imagine types like this." + }, + { + "start": 4021.359, + "duration": 0.0, + "text": "Uh so let's imagine types like this. You've<01:07:01.680> got<01:07:02.079> you<01:07:02.240> know<01:07:02.480> f<01:07:02.720> this<01:07:02.880> is<01:07:03.039> very" + }, + { + "start": 4023.27, + "duration": 0.0, + "text": "You've got you know f this is very" + }, + { + "start": 4023.28, + "duration": 0.0, + "text": "You've got you know f this is very common<01:07:03.520> in<01:07:03.760> C<01:07:04.079> code<01:07:04.319> bases<01:07:04.799> because<01:07:05.039> we<01:07:05.359> don't" + }, + { + "start": 4025.67, + "duration": 0.0, + "text": "common in C code bases because we don't" + }, + { + "start": 4025.68, + "duration": 0.0, + "text": "common in C code bases because we don't have<01:07:05.920> nice<01:07:06.160> things<01:07:06.319> in<01:07:06.559> C.<01:07:07.039> You've<01:07:07.200> got" + }, + { + "start": 4027.349, + "duration": 0.0, + "text": "have nice things in C. You've got" + }, + { + "start": 4027.359, + "duration": 0.0, + "text": "have nice things in C. You've got strruct<01:07:07.760> fu<01:07:08.000> slice.<01:07:08.720> You<01:07:08.880> got<01:07:08.960> a<01:07:09.119> pointer<01:07:09.440> and" + }, + { + "start": 4029.589, + "duration": 0.0, + "text": "strruct fu slice. You got a pointer and" + }, + { + "start": 4029.599, + "duration": 0.0, + "text": "strruct fu slice. You got a pointer and some<01:07:09.839> count.<01:07:10.480> or<01:07:10.720> if<01:07:10.880> I've<01:07:11.039> got<01:07:11.119> a<01:07:11.359> list<01:07:11.599> like" + }, + { + "start": 4031.91, + "duration": 0.0, + "text": "some count. or if I've got a list like" + }, + { + "start": 4031.92, + "duration": 0.0, + "text": "some count. or if I've got a list like strruct<01:07:12.240> fu<01:07:12.559> node<01:07:13.280> pointer<01:07:13.680> to<01:07:13.839> the<01:07:14.000> next<01:07:14.079> node" + }, + { + "start": 4034.309, + "duration": 0.0, + "text": "strruct fu node pointer to the next node" + }, + { + "start": 4034.319, + "duration": 0.0, + "text": "strruct fu node pointer to the next node and<01:07:14.480> then<01:07:14.559> and<01:07:14.799> then<01:07:14.880> a<01:07:15.119> member<01:07:15.359> with<01:07:15.520> the" + }, + { + "start": 4035.67, + "duration": 0.0, + "text": "and then and then a member with the" + }, + { + "start": 4035.68, + "duration": 0.0, + "text": "and then and then a member with the actual<01:07:16.000> data.<01:07:17.280> Um<01:07:18.720> so<01:07:18.880> given<01:07:19.200> the<01:07:19.359> given<01:07:19.680> the" + }, + { + "start": 4039.91, + "duration": 0.0, + "text": "actual data. Um so given the given the" + }, + { + "start": 4039.92, + "duration": 0.0, + "text": "actual data. Um so given the given the current<01:07:20.160> sort<01:07:20.319> of<01:07:20.400> type<01:07:20.640> info<01:07:21.039> visualization" + }, + { + "start": 4041.51, + "duration": 0.0, + "text": "current sort of type info visualization" + }, + { + "start": 4041.52, + "duration": 0.0, + "text": "current sort of type info visualization rules<01:07:22.079> you<01:07:22.240> put<01:07:22.400> that<01:07:22.480> into<01:07:22.640> the<01:07:22.799> watch<01:07:23.039> window" + }, + { + "start": 4043.349, + "duration": 0.0, + "text": "rules you put that into the watch window" + }, + { + "start": 4043.359, + "duration": 0.0, + "text": "rules you put that into the watch window you're<01:07:23.440> like<01:07:23.599> great<01:07:23.839> I'm<01:07:24.079> going<01:07:24.160> to<01:07:24.240> visualize" + }, + { + "start": 4044.63, + "duration": 0.0, + "text": "you're like great I'm going to visualize" + }, + { + "start": 4044.64, + "duration": 0.0, + "text": "you're like great I'm going to visualize my<01:07:24.880> dynamic<01:07:25.280> array<01:07:25.599> today<01:07:26.160> you<01:07:26.319> expand<01:07:26.640> it<01:07:26.960> and" + }, + { + "start": 4047.109, + "duration": 0.0, + "text": "my dynamic array today you expand it and" + }, + { + "start": 4047.119, + "duration": 0.0, + "text": "my dynamic array today you expand it and you've<01:07:27.280> got<01:07:27.440> two<01:07:27.599> members<01:07:27.920> it's<01:07:28.079> like<01:07:28.240> v<01:07:28.480> and" + }, + { + "start": 4048.63, + "duration": 0.0, + "text": "you've got two members it's like v and" + }, + { + "start": 4048.64, + "duration": 0.0, + "text": "you've got two members it's like v and count<01:07:28.960> and<01:07:29.200> then<01:07:29.280> you<01:07:29.520> expand<01:07:29.839> v<01:07:30.079> and<01:07:30.240> it's" + }, + { + "start": 4050.39, + "duration": 0.0, + "text": "count and then you expand v and it's" + }, + { + "start": 4050.4, + "duration": 0.0, + "text": "count and then you expand v and it's like<01:07:30.640> one<01:07:31.200> thing<01:07:31.520> and<01:07:31.680> you're<01:07:31.920> like<01:07:32.319> what<01:07:32.640> what" + }, + { + "start": 4052.71, + "duration": 0.0, + "text": "like one thing and you're like what what" + }, + { + "start": 4052.72, + "duration": 0.0, + "text": "like one thing and you're like what what what<01:07:33.200> is<01:07:33.359> that?<01:07:33.680> Same<01:07:33.920> thing<01:07:34.079> with<01:07:34.160> the<01:07:34.319> link" + }, + { + "start": 4054.549, + "duration": 0.0, + "text": "what is that? Same thing with the link" + }, + { + "start": 4054.559, + "duration": 0.0, + "text": "what is that? Same thing with the link list.<01:07:34.799> you<01:07:35.119> like<01:07:35.440> put<01:07:35.680> in<01:07:35.839> the<01:07:36.000> first<01:07:36.319> the<01:07:36.559> head" + }, + { + "start": 4056.71, + "duration": 0.0, + "text": "list. you like put in the first the head" + }, + { + "start": 4056.72, + "duration": 0.0, + "text": "list. you like put in the first the head of<01:07:36.799> the<01:07:36.960> link<01:07:37.200> list,<01:07:37.839> you<01:07:38.000> expand<01:07:38.319> it<01:07:38.720> and<01:07:38.960> then" + }, + { + "start": 4059.029, + "duration": 0.0, + "text": "of the link list, you expand it and then" + }, + { + "start": 4059.039, + "duration": 0.0, + "text": "of the link list, you expand it and then you<01:07:39.200> can<01:07:39.280> actually<01:07:39.599> recursively<01:07:40.240> expand<01:07:40.480> it." + }, + { + "start": 4060.789, + "duration": 0.0, + "text": "you can actually recursively expand it." + }, + { + "start": 4060.799, + "duration": 0.0, + "text": "you can actually recursively expand it. But<01:07:40.960> like<01:07:41.200> in<01:07:41.440> your<01:07:41.680> head<01:07:41.920> a<01:07:42.160> list<01:07:42.400> is<01:07:42.640> flat<01:07:43.280> and" + }, + { + "start": 4063.43, + "duration": 0.0, + "text": "But like in your head a list is flat and" + }, + { + "start": 4063.44, + "duration": 0.0, + "text": "But like in your head a list is flat and then<01:07:43.760> everyone's<01:07:44.559> everyone's<01:07:45.039> like<01:07:45.280> who's" + }, + { + "start": 4065.51, + "duration": 0.0, + "text": "then everyone's everyone's like who's" + }, + { + "start": 4065.52, + "duration": 0.0, + "text": "then everyone's everyone's like who's used<01:07:45.760> debuggers<01:07:46.480> knows<01:07:46.799> like<01:07:46.960> to<01:07:47.119> visualize<01:07:47.359> a" + }, + { + "start": 4067.51, + "duration": 0.0, + "text": "used debuggers knows like to visualize a" + }, + { + "start": 4067.52, + "duration": 0.0, + "text": "used debuggers knows like to visualize a linked<01:07:47.760> list<01:07:47.920> you've<01:07:48.160> got<01:07:48.240> to<01:07:48.319> like<01:07:48.640> expand<01:07:48.960> in" + }, + { + "start": 4069.27, + "duration": 0.0, + "text": "linked list you've got to like expand in" + }, + { + "start": 4069.28, + "duration": 0.0, + "text": "linked list you've got to like expand in and<01:07:49.359> expand<01:07:49.599> in<01:07:49.839> and<01:07:50.000> expand<01:07:50.240> in<01:07:50.799> like<01:07:51.839> what<01:07:52.000> am" + }, + { + "start": 4072.15, + "duration": 0.0, + "text": "and expand in and expand in like what am" + }, + { + "start": 4072.16, + "duration": 0.0, + "text": "and expand in and expand in like what am I<01:07:52.319> even<01:07:52.480> looking<01:07:52.640> at<01:07:52.880> at<01:07:53.039> some<01:07:53.200> point,<01:07:53.440> right?" + }, + { + "start": 4073.67, + "duration": 0.0, + "text": "I even looking at at some point, right?" + }, + { + "start": 4073.68, + "duration": 0.0, + "text": "I even looking at at some point, right? It<01:07:53.839> gets<01:07:54.240> really<01:07:54.559> ridiculous." + }, + { + "start": 4077.19, + "duration": 0.0, + "text": "It gets really ridiculous." + }, + { + "start": 4077.2, + "duration": 0.0, + "text": "It gets really ridiculous. Um" + }, + { + "start": 4081.28, + "duration": 0.0, + "text": "so<01:08:01.599> taking<01:08:01.839> a<01:08:02.000> look<01:08:02.079> at<01:08:02.160> the<01:08:02.319> visualization" + }, + { + "start": 4082.87, + "duration": 0.0, + "text": "so taking a look at the visualization" + }, + { + "start": 4082.88, + "duration": 0.0, + "text": "so taking a look at the visualization pipeline<01:08:03.680> we<01:08:03.920> know<01:08:04.000> that<01:08:04.160> our<01:08:04.400> lenses<01:08:05.039> those" + }, + { + "start": 4085.27, + "duration": 0.0, + "text": "pipeline we know that our lenses those" + }, + { + "start": 4085.28, + "duration": 0.0, + "text": "pipeline we know that our lenses those lens<01:08:05.680> type<01:08:05.920> operator<01:08:06.400> things<01:08:07.440> they<01:08:07.839> override" + }, + { + "start": 4088.47, + "duration": 0.0, + "text": "lens type operator things they override" + }, + { + "start": 4088.48, + "duration": 0.0, + "text": "lens type operator things they override this<01:08:08.720> part<01:08:09.119> like<01:08:09.280> the<01:08:09.440> the<01:08:09.839> arrow<01:08:10.240> here<01:08:10.480> which" + }, + { + "start": 4090.71, + "duration": 0.0, + "text": "this part like the the arrow here which" + }, + { + "start": 4090.72, + "duration": 0.0, + "text": "this part like the the arrow here which is<01:08:10.880> like<01:08:11.839> turns<01:08:12.160> a<01:08:12.319> list<01:08:12.400> of<01:08:12.559> evaluations<01:08:13.119> into" + }, + { + "start": 4093.349, + "duration": 0.0, + "text": "is like turns a list of evaluations into" + }, + { + "start": 4093.359, + "duration": 0.0, + "text": "is like turns a list of evaluations into a<01:08:13.520> list<01:08:13.680> of<01:08:13.760> UIs<01:08:14.240> right<01:08:14.400> because<01:08:14.559> we<01:08:14.640> can<01:08:14.720> take" + }, + { + "start": 4094.87, + "duration": 0.0, + "text": "a list of UIs right because we can take" + }, + { + "start": 4094.88, + "duration": 0.0, + "text": "a list of UIs right because we can take an<01:08:14.960> eval<01:08:15.359> produce<01:08:15.599> a<01:08:15.680> UI<01:08:16.000> which<01:08:16.159> means<01:08:16.640> got<01:08:16.799> a" + }, + { + "start": 4096.95, + "duration": 0.0, + "text": "an eval produce a UI which means got a" + }, + { + "start": 4096.96, + "duration": 0.0, + "text": "an eval produce a UI which means got a list<01:08:17.040> of<01:08:17.199> evaluations<01:08:17.920> we<01:08:18.080> can<01:08:18.159> produce<01:08:18.400> a" + }, + { + "start": 4098.55, + "duration": 0.0, + "text": "list of evaluations we can produce a" + }, + { + "start": 4098.56, + "duration": 0.0, + "text": "list of evaluations we can produce a list<01:08:18.640> of<01:08:18.719> UIs<01:08:19.359> we<01:08:19.520> can<01:08:19.679> override<01:08:20.080> that<01:08:20.400> using" + }, + { + "start": 4100.63, + "duration": 0.0, + "text": "list of UIs we can override that using" + }, + { + "start": 4100.64, + "duration": 0.0, + "text": "list of UIs we can override that using that<01:08:20.880> type<01:08:21.120> info" + }, + { + "start": 4103.99, + "duration": 0.0, + "text": "that type info" + }, + { + "start": 4104.0, + "duration": 0.0, + "text": "that type info same<01:08:24.319> pattern<01:08:25.040> we<01:08:25.279> can<01:08:25.440> also<01:08:26.080> override<01:08:26.640> this" + }, + { + "start": 4106.95, + "duration": 0.0, + "text": "same pattern we can also override this" + }, + { + "start": 4106.96, + "duration": 0.0, + "text": "same pattern we can also override this right<01:08:27.199> we<01:08:27.359> can<01:08:27.440> just<01:08:27.600> say<01:08:27.759> like<01:08:28.080> hey<01:08:28.319> we're" + }, + { + "start": 4108.47, + "duration": 0.0, + "text": "right we can just say like hey we're" + }, + { + "start": 4108.48, + "duration": 0.0, + "text": "right we can just say like hey we're going<01:08:28.560> to<01:08:28.640> change<01:08:28.799> the<01:08:28.960> way<01:08:29.040> we're<01:08:29.199> going<01:08:29.279> to" + }, + { + "start": 4109.349, + "duration": 0.0, + "text": "going to change the way we're going to" + }, + { + "start": 4109.359, + "duration": 0.0, + "text": "going to change the way we're going to build<01:08:29.440> this<01:08:29.600> block<01:08:29.920> tree<01:08:30.480> we're<01:08:30.640> actually" + }, + { + "start": 4110.87, + "duration": 0.0, + "text": "build this block tree we're actually" + }, + { + "start": 4110.88, + "duration": 0.0, + "text": "build this block tree we're actually going<01:08:30.960> to<01:08:31.040> say<01:08:31.199> like<01:08:31.359> the<01:08:31.520> type<01:08:31.759> info<01:08:32.080> can<01:08:32.319> now" + }, + { + "start": 4112.63, + "duration": 0.0, + "text": "going to say like the type info can now" + }, + { + "start": 4112.64, + "duration": 0.0, + "text": "going to say like the type info can now have<01:08:32.799> some<01:08:33.120> say<01:08:33.759> in<01:08:34.000> that<01:08:34.239> stage<01:08:34.560> as<01:08:34.799> well" + }, + { + "start": 4117.749, + "duration": 0.0, + "text": "have some say in that stage as well" + }, + { + "start": 4117.759, + "duration": 0.0, + "text": "have some say in that stage as well um<01:08:38.799> so<01:08:38.960> instead<01:08:39.199> of<01:08:39.359> visualizing<01:08:39.839> these<01:08:40.159> two" + }, + { + "start": 4120.47, + "duration": 0.0, + "text": "um so instead of visualizing these two" + }, + { + "start": 4120.48, + "duration": 0.0, + "text": "um so instead of visualizing these two particular<01:08:40.960> structures<01:08:41.359> like<01:08:41.600> this<01:08:42.799> we<01:08:43.040> can" + }, + { + "start": 4123.11, + "duration": 0.0, + "text": "particular structures like this we can" + }, + { + "start": 4123.12, + "duration": 0.0, + "text": "particular structures like this we can now<01:08:43.359> actually<01:08:43.600> introduce<01:08:43.920> some<01:08:44.080> lens<01:08:44.400> types" + }, + { + "start": 4124.87, + "duration": 0.0, + "text": "now actually introduce some lens types" + }, + { + "start": 4124.88, + "duration": 0.0, + "text": "now actually introduce some lens types which<01:08:45.120> have<01:08:45.520> custom<01:08:46.000> rules<01:08:46.400> for<01:08:46.640> buil<01:08:46.880> for<01:08:47.040> how" + }, + { + "start": 4127.189, + "duration": 0.0, + "text": "which have custom rules for buil for how" + }, + { + "start": 4127.199, + "duration": 0.0, + "text": "which have custom rules for buil for how to<01:08:47.359> build<01:08:48.080> uh<01:08:48.159> the<01:08:48.319> block<01:08:48.560> tree<01:08:48.799> here<01:08:49.120> so<01:08:49.359> for" + }, + { + "start": 4129.51, + "duration": 0.0, + "text": "to build uh the block tree here so for" + }, + { + "start": 4129.52, + "duration": 0.0, + "text": "to build uh the block tree here so for the<01:08:49.679> left<01:08:50.319> you<01:08:50.400> know<01:08:50.560> let's<01:08:50.719> say<01:08:50.880> I<01:08:51.040> use<01:08:51.199> the" + }, + { + "start": 4131.349, + "duration": 0.0, + "text": "the left you know let's say I use the" + }, + { + "start": 4131.359, + "duration": 0.0, + "text": "the left you know let's say I use the array<01:08:51.679> slice<01:08:51.920> and<01:08:52.080> I'm<01:08:52.239> like<01:08:52.560> you<01:08:52.719> got<01:08:52.880> an" + }, + { + "start": 4133.11, + "duration": 0.0, + "text": "array slice and I'm like you got an" + }, + { + "start": 4133.12, + "duration": 0.0, + "text": "array slice and I'm like you got an array<01:08:53.839> here's<01:08:54.080> the<01:08:54.239> pointer<01:08:54.640> here's<01:08:54.799> the" + }, + { + "start": 4134.95, + "duration": 0.0, + "text": "array here's the pointer here's the" + }, + { + "start": 4134.96, + "duration": 0.0, + "text": "array here's the pointer here's the count<01:08:56.000> give<01:08:56.159> Give<01:08:56.239> me<01:08:56.400> the<01:08:56.560> block<01:08:56.719> of<01:08:56.799> all<01:08:56.960> the" + }, + { + "start": 4137.11, + "duration": 0.0, + "text": "count give Give me the block of all the" + }, + { + "start": 4137.12, + "duration": 0.0, + "text": "count give Give me the block of all the elements.<01:08:57.839> On<01:08:58.080> the<01:08:58.239> right,<01:08:58.880> I've<01:08:59.120> got<01:08:59.359> here's" + }, + { + "start": 4139.59, + "duration": 0.0, + "text": "elements. On the right, I've got here's" + }, + { + "start": 4139.6, + "duration": 0.0, + "text": "elements. On the right, I've got here's the<01:08:59.679> head<01:08:59.920> pointer<01:09:00.239> and<01:09:00.400> here's<01:09:00.640> the<01:09:00.799> name<01:09:00.880> of" + }, + { + "start": 4140.95, + "duration": 0.0, + "text": "the head pointer and here's the name of" + }, + { + "start": 4140.96, + "duration": 0.0, + "text": "the head pointer and here's the name of the<01:09:01.120> member<01:09:01.359> I<01:09:01.520> want<01:09:01.600> you<01:09:01.759> to<01:09:01.839> follow<01:09:02.159> to<01:09:02.319> find" + }, + { + "start": 4142.47, + "duration": 0.0, + "text": "the member I want you to follow to find" + }, + { + "start": 4142.48, + "duration": 0.0, + "text": "the member I want you to follow to find all<01:09:02.640> the<01:09:03.199> list<01:09:03.520> elements.<01:09:04.319> Give<01:09:04.480> me<01:09:04.640> the<01:09:04.719> list" + }, + { + "start": 4144.87, + "duration": 0.0, + "text": "all the list elements. Give me the list" + }, + { + "start": 4144.88, + "duration": 0.0, + "text": "all the list elements. Give me the list of<01:09:05.040> elements.<01:09:05.440> And<01:09:05.520> we<01:09:05.679> can<01:09:05.759> just<01:09:05.920> do<01:09:06.000> that" + }, + { + "start": 4146.229, + "duration": 0.0, + "text": "of elements. And we can just do that" + }, + { + "start": 4146.239, + "duration": 0.0, + "text": "of elements. And we can just do that with<01:09:06.400> the<01:09:06.560> type<01:09:06.799> info." + }, + { + "start": 4150.64, + "duration": 0.0, + "text": "No,<01:09:11.839> I'm<01:09:12.159> so<01:09:12.319> bad<01:09:12.560> with<01:09:12.719> this.<01:09:14.159> Okay,<01:09:15.279> so<01:09:16.319> I've" + }, + { + "start": 4156.55, + "duration": 0.0, + "text": "No, I'm so bad with this. Okay, so I've" + }, + { + "start": 4156.56, + "duration": 0.0, + "text": "No, I'm so bad with this. Okay, so I've walked<01:09:16.880> through<01:09:17.679> uh<01:09:18.080> this<01:09:18.319> whole" + }, + { + "start": 4158.95, + "duration": 0.0, + "text": "walked through uh this whole" + }, + { + "start": 4158.96, + "duration": 0.0, + "text": "walked through uh this whole visualization<01:09:19.600> pipeline.<01:09:20.400> Um,<01:09:21.679> it<01:09:21.920> allows<01:09:22.159> us" + }, + { + "start": 4162.55, + "duration": 0.0, + "text": "visualization pipeline. Um, it allows us" + }, + { + "start": 4162.56, + "duration": 0.0, + "text": "visualization pipeline. Um, it allows us to<01:09:23.040> just<01:09:23.279> visualize<01:09:23.839> in<01:09:24.080> the<01:09:24.239> ways<01:09:24.400> that<01:09:24.560> I've" + }, + { + "start": 4164.87, + "duration": 0.0, + "text": "to just visualize in the ways that I've" + }, + { + "start": 4164.88, + "duration": 0.0, + "text": "to just visualize in the ways that I've showed<01:09:26.000> uh<01:09:26.400> anything<01:09:26.640> the<01:09:26.880> debugger<01:09:27.279> can" + }, + { + "start": 4167.43, + "duration": 0.0, + "text": "showed uh anything the debugger can" + }, + { + "start": 4167.44, + "duration": 0.0, + "text": "showed uh anything the debugger can evaluate.<01:09:28.159> And<01:09:28.319> so,<01:09:28.560> so<01:09:28.880> far,<01:09:29.520> anything<01:09:29.839> the" + }, + { + "start": 4170.07, + "duration": 0.0, + "text": "evaluate. And so, so far, anything the" + }, + { + "start": 4170.08, + "duration": 0.0, + "text": "evaluate. And so, so far, anything the debugger<01:09:30.400> can<01:09:30.560> evaluate<01:09:31.279> has<01:09:31.520> just<01:09:31.679> included" + }, + { + "start": 4172.149, + "duration": 0.0, + "text": "debugger can evaluate has just included" + }, + { + "start": 4172.159, + "duration": 0.0, + "text": "debugger can evaluate has just included like<01:09:32.719> expressions<01:09:33.199> relating<01:09:33.520> to<01:09:33.679> your" + }, + { + "start": 4173.829, + "duration": 0.0, + "text": "like expressions relating to your" + }, + { + "start": 4173.839, + "duration": 0.0, + "text": "like expressions relating to your program<01:09:34.560> like<01:09:34.880> in<01:09:35.359> like<01:09:35.520> a<01:09:35.679> debuggy<01:09:36.239> address" + }, + { + "start": 4176.55, + "duration": 0.0, + "text": "program like in like a debuggy address" + }, + { + "start": 4176.56, + "duration": 0.0, + "text": "program like in like a debuggy address space<01:09:37.600> or<01:09:38.000> you<01:09:38.159> know<01:09:38.640> something<01:09:38.880> in<01:09:39.120> a<01:09:39.199> thread" + }, + { + "start": 4179.43, + "duration": 0.0, + "text": "space or you know something in a thread" + }, + { + "start": 4179.44, + "duration": 0.0, + "text": "space or you know something in a thread register<01:09:39.759> inside<01:09:40.080> of<01:09:40.159> a<01:09:40.239> debuggy<01:09:41.040> so<01:09:41.279> on." + }, + { + "start": 4183.11, + "duration": 0.0, + "text": "register inside of a debuggy so on." + }, + { + "start": 4183.12, + "duration": 0.0, + "text": "register inside of a debuggy so on. But<01:09:43.600> let's<01:09:43.920> consider<01:09:44.239> all<01:09:44.400> of<01:09:44.560> the<01:09:44.719> scenarios" + }, + { + "start": 4185.669, + "duration": 0.0, + "text": "But let's consider all of the scenarios" + }, + { + "start": 4185.679, + "duration": 0.0, + "text": "But let's consider all of the scenarios where<01:09:46.080> we<01:09:46.319> have<01:09:46.480> some<01:09:46.719> data<01:09:47.279> from<01:09:47.520> anywhere" + }, + { + "start": 4188.07, + "duration": 0.0, + "text": "where we have some data from anywhere" + }, + { + "start": 4188.08, + "duration": 0.0, + "text": "where we have some data from anywhere that<01:09:48.319> we're<01:09:48.560> looking<01:09:48.719> at<01:09:48.880> and<01:09:49.040> we<01:09:49.199> want<01:09:49.359> to" + }, + { + "start": 4189.829, + "duration": 0.0, + "text": "that we're looking at and we want to" + }, + { + "start": 4189.839, + "duration": 0.0, + "text": "that we're looking at and we want to understand" + }, + { + "start": 4191.91, + "duration": 0.0, + "text": "understand" + }, + { + "start": 4191.92, + "duration": 0.0, + "text": "understand you<01:09:52.159> know<01:09:53.120> a<01:09:53.359> significant<01:09:53.839> subset<01:09:54.320> is<01:09:54.560> what<01:09:54.719> I" + }, + { + "start": 4194.79, + "duration": 0.0, + "text": "you know a significant subset is what I" + }, + { + "start": 4194.8, + "duration": 0.0, + "text": "you know a significant subset is what I just<01:09:54.960> said<01:09:55.120> it's<01:09:55.360> like<01:09:55.440> somewhere<01:09:55.679> in<01:09:55.840> the" + }, + { + "start": 4195.91, + "duration": 0.0, + "text": "just said it's like somewhere in the" + }, + { + "start": 4195.92, + "duration": 0.0, + "text": "just said it's like somewhere in the debuggy<01:09:56.400> debugging<01:09:56.880> memory<01:09:57.280> you<01:09:57.440> know" + }, + { + "start": 4197.669, + "duration": 0.0, + "text": "debuggy debugging memory you know" + }, + { + "start": 4197.679, + "duration": 0.0, + "text": "debuggy debugging memory you know debugging<01:09:58.159> registers<01:09:58.640> whatever<01:09:59.760> um<01:10:01.040> like<01:10:01.199> I" + }, + { + "start": 4201.35, + "duration": 0.0, + "text": "debugging registers whatever um like I" + }, + { + "start": 4201.36, + "duration": 0.0, + "text": "debugging registers whatever um like I said<01:10:01.920> walked<01:10:02.320> through<01:10:02.640> a<01:10:02.880> pipeline<01:10:03.280> for" + }, + { + "start": 4203.51, + "duration": 0.0, + "text": "said walked through a pipeline for" + }, + { + "start": 4203.52, + "duration": 0.0, + "text": "said walked through a pipeline for visualizing<01:10:04.080> stuff<01:10:04.239> from<01:10:04.400> that<01:10:04.880> but<01:10:05.120> let's" + }, + { + "start": 4205.35, + "duration": 0.0, + "text": "visualizing stuff from that but let's" + }, + { + "start": 4205.36, + "duration": 0.0, + "text": "visualizing stuff from that but let's appreciate<01:10:05.840> something<01:10:06.159> here<01:10:06.719> which<01:10:06.960> is<01:10:07.040> that" + }, + { + "start": 4207.43, + "duration": 0.0, + "text": "appreciate something here which is that" + }, + { + "start": 4207.44, + "duration": 0.0, + "text": "appreciate something here which is that this<01:10:07.920> is<01:10:08.080> a<01:10:08.320> subset<01:10:09.120> and<01:10:09.520> like<01:10:09.760> an<01:10:10.239> very<01:10:10.640> large" + }, + { + "start": 4210.95, + "duration": 0.0, + "text": "this is a subset and like an very large" + }, + { + "start": 4210.96, + "duration": 0.0, + "text": "this is a subset and like an very large number<01:10:11.199> of<01:10:11.360> cases<01:10:11.760> actually<01:10:12.400> it's<01:10:12.640> also<01:10:12.800> also" + }, + { + "start": 4213.51, + "duration": 0.0, + "text": "number of cases actually it's also also" + }, + { + "start": 4213.52, + "duration": 0.0, + "text": "number of cases actually it's also also common<01:10:13.760> to<01:10:13.920> look<01:10:14.000> at<01:10:14.239> memory<01:10:14.560> from<01:10:14.719> other" + }, + { + "start": 4214.95, + "duration": 0.0, + "text": "common to look at memory from other" + }, + { + "start": 4214.96, + "duration": 0.0, + "text": "common to look at memory from other sources<01:10:15.360> like<01:10:15.600> the<01:10:15.840> file<01:10:16.080> system,<01:10:16.880> right?<01:10:18.320> And" + }, + { + "start": 4218.87, + "duration": 0.0, + "text": "sources like the file system, right? And" + }, + { + "start": 4218.88, + "duration": 0.0, + "text": "sources like the file system, right? And turns<01:10:19.120> out<01:10:19.360> people<01:10:19.520> have<01:10:19.679> built<01:10:19.840> an<01:10:20.000> enormous" + }, + { + "start": 4220.39, + "duration": 0.0, + "text": "turns out people have built an enormous" + }, + { + "start": 4220.4, + "duration": 0.0, + "text": "turns out people have built an enormous number<01:10:20.560> of<01:10:20.719> tools<01:10:20.960> to<01:10:21.120> work<01:10:21.199> on<01:10:21.440> data<01:10:22.000> from<01:10:22.239> a" + }, + { + "start": 4222.39, + "duration": 0.0, + "text": "number of tools to work on data from a" + }, + { + "start": 4222.4, + "duration": 0.0, + "text": "number of tools to work on data from a file<01:10:22.640> system<01:10:23.600> like<01:10:24.239> IMEX" + }, + { + "start": 4225.75, + "duration": 0.0, + "text": "file system like IMEX" + }, + { + "start": 4225.76, + "duration": 0.0, + "text": "file system like IMEX looks<01:10:26.000> like<01:10:26.239> maybe<01:10:26.480> a<01:10:26.640> little<01:10:26.800> familiar.<01:10:27.679> Um" + }, + { + "start": 4229.51, + "duration": 0.0, + "text": "looks like maybe a little familiar. Um" + }, + { + "start": 4229.52, + "duration": 0.0, + "text": "looks like maybe a little familiar. Um 10x<01:10:30.640> views,<01:10:31.120> you<01:10:31.199> know,<01:10:31.360> source<01:10:31.679> code" + }, + { + "start": 4233.189, + "duration": 0.0, + "text": "10x views, you know, source code" + }, + { + "start": 4233.199, + "duration": 0.0, + "text": "10x views, you know, source code and<01:10:33.520> editing<01:10:33.920> source<01:10:34.239> code<01:10:34.719> obviously.<01:10:35.520> Um" + }, + { + "start": 4236.149, + "duration": 0.0, + "text": "and editing source code obviously. Um" + }, + { + "start": 4236.159, + "duration": 0.0, + "text": "and editing source code obviously. Um beyond<01:10:36.560> compare,<01:10:37.120> you<01:10:37.199> know,<01:10:37.360> take<01:10:37.600> two" + }, + { + "start": 4237.83, + "duration": 0.0, + "text": "beyond compare, you know, take two" + }, + { + "start": 4237.84, + "duration": 0.0, + "text": "beyond compare, you know, take two textual<01:10:38.239> buffers,<01:10:38.880> compare<01:10:39.120> them,<01:10:39.440> show<01:10:39.520> me" + }, + { + "start": 4239.669, + "duration": 0.0, + "text": "textual buffers, compare them, show me" + }, + { + "start": 4239.679, + "duration": 0.0, + "text": "textual buffers, compare them, show me how<01:10:39.840> they're<01:10:40.000> different." + }, + { + "start": 4242.149, + "duration": 0.0, + "text": "how they're different." + }, + { + "start": 4242.159, + "duration": 0.0, + "text": "how they're different. And<01:10:42.400> so<01:10:42.560> there's<01:10:42.880> sort<01:10:43.040> of<01:10:43.120> this<01:10:43.360> like" + }, + { + "start": 4244.95, + "duration": 0.0, + "text": "And so there's sort of this like" + }, + { + "start": 4244.96, + "duration": 0.0, + "text": "And so there's sort of this like unfortunate<01:10:45.520> problem<01:10:45.840> emerging,<01:10:46.320> right?" + }, + { + "start": 4246.47, + "duration": 0.0, + "text": "unfortunate problem emerging, right?" + }, + { + "start": 4246.48, + "duration": 0.0, + "text": "unfortunate problem emerging, right? We've<01:10:46.640> got<01:10:46.800> these<01:10:47.040> two<01:10:47.280> worlds<01:10:48.000> where<01:10:48.239> it's" + }, + { + "start": 4248.39, + "duration": 0.0, + "text": "We've got these two worlds where it's" + }, + { + "start": 4248.4, + "duration": 0.0, + "text": "We've got these two worlds where it's like<01:10:49.040> our<01:10:49.280> debug<01:10:49.920> world<01:10:50.239> where<01:10:50.560> you<01:10:50.719> know<01:10:50.800> we" + }, + { + "start": 4250.95, + "duration": 0.0, + "text": "like our debug world where you know we" + }, + { + "start": 4250.96, + "duration": 0.0, + "text": "like our debug world where you know we build<01:10:51.120> all<01:10:51.199> these<01:10:51.360> cool<01:10:51.520> debugger" + }, + { + "start": 4251.91, + "duration": 0.0, + "text": "build all these cool debugger" + }, + { + "start": 4251.92, + "duration": 0.0, + "text": "build all these cool debugger visualizers.<01:10:52.400> We've<01:10:52.480> got<01:10:52.560> a<01:10:52.640> hex<01:10:52.880> grid,<01:10:53.120> we've" + }, + { + "start": 4253.27, + "duration": 0.0, + "text": "visualizers. We've got a hex grid, we've" + }, + { + "start": 4253.28, + "duration": 0.0, + "text": "visualizers. We've got a hex grid, we've got<01:10:53.360> text,<01:10:53.600> we've<01:10:53.760> got<01:10:53.840> a<01:10:53.920> bit<01:10:54.159> map.<01:10:54.560> And<01:10:54.640> then" + }, + { + "start": 4254.79, + "duration": 0.0, + "text": "got text, we've got a bit map. And then" + }, + { + "start": 4254.8, + "duration": 0.0, + "text": "got text, we've got a bit map. And then it's<01:10:54.960> like<01:10:55.199> wait<01:10:55.679> on<01:10:55.920> the<01:10:56.080> file<01:10:56.400> world<01:10:56.640> I've" + }, + { + "start": 4256.87, + "duration": 0.0, + "text": "it's like wait on the file world I've" + }, + { + "start": 4256.88, + "duration": 0.0, + "text": "it's like wait on the file world I've also<01:10:57.040> got<01:10:57.120> a<01:10:57.280> hex<01:10:57.520> grid<01:10:57.760> and<01:10:58.080> which<01:10:58.320> is<01:10:58.560> would" + }, + { + "start": 4258.709, + "duration": 0.0, + "text": "also got a hex grid and which is would" + }, + { + "start": 4258.719, + "duration": 0.0, + "text": "also got a hex grid and which is would be<01:10:58.880> something<01:10:59.120> like<01:10:59.280> IMX.<01:11:00.000> I've<01:11:00.239> also<01:11:00.400> got<01:11:00.480> a" + }, + { + "start": 4260.63, + "duration": 0.0, + "text": "be something like IMX. I've also got a" + }, + { + "start": 4260.64, + "duration": 0.0, + "text": "be something like IMX. I've also got a text<01:11:00.880> viewer<01:11:01.360> editor<01:11:01.760> and<01:11:01.920> I've<01:11:02.159> also<01:11:02.320> got<01:11:02.400> a" + }, + { + "start": 4262.47, + "duration": 0.0, + "text": "text viewer editor and I've also got a" + }, + { + "start": 4262.48, + "duration": 0.0, + "text": "text viewer editor and I've also got a bit<01:11:02.719> map<01:11:02.880> viewer.<01:11:03.280> So<01:11:03.520> like<01:11:03.679> what's<01:11:03.920> what's" + }, + { + "start": 4265.669, + "duration": 0.0, + "text": "bit map viewer. So like what's what's" + }, + { + "start": 4265.679, + "duration": 0.0, + "text": "bit map viewer. So like what's what's kind<01:11:05.920> of<01:11:06.000> sucks,<01:11:06.400> right?<01:11:07.199> Um" + }, + { + "start": 4268.79, + "duration": 0.0, + "text": "kind of sucks, right? Um" + }, + { + "start": 4268.8, + "duration": 0.0, + "text": "kind of sucks, right? Um because<01:11:09.440> each<01:11:09.760> visualizer<01:11:10.320> is<01:11:10.400> sort<01:11:10.480> of<01:11:10.560> like" + }, + { + "start": 4270.79, + "duration": 0.0, + "text": "because each visualizer is sort of like" + }, + { + "start": 4270.8, + "duration": 0.0, + "text": "because each visualizer is sort of like coupled<01:11:11.199> to<01:11:11.360> like<01:11:11.600> where<01:11:11.840> the<01:11:12.000> data<01:11:12.159> is<01:11:12.320> coming" + }, + { + "start": 4272.55, + "duration": 0.0, + "text": "coupled to like where the data is coming" + }, + { + "start": 4272.56, + "duration": 0.0, + "text": "coupled to like where the data is coming from.<01:11:13.120> Like<01:11:13.440> these<01:11:13.760> only<01:11:14.000> apply<01:11:14.239> to<01:11:14.480> like" + }, + { + "start": 4274.63, + "duration": 0.0, + "text": "from. Like these only apply to like" + }, + { + "start": 4274.64, + "duration": 0.0, + "text": "from. Like these only apply to like reading<01:11:15.040> process<01:11:15.360> memory.<01:11:16.080> These<01:11:16.400> only<01:11:16.560> apply" + }, + { + "start": 4276.79, + "duration": 0.0, + "text": "reading process memory. These only apply" + }, + { + "start": 4276.8, + "duration": 0.0, + "text": "reading process memory. These only apply to<01:11:17.040> files." + }, + { + "start": 4280.32, + "duration": 0.0, + "text": "And<01:11:20.560> because<01:11:21.360> like" + }, + { + "start": 4283.189, + "duration": 0.0, + "text": "And because like" + }, + { + "start": 4283.199, + "duration": 0.0, + "text": "And because like the<01:11:23.520> one<01:11:23.679> on<01:11:23.840> the<01:11:24.000> right<01:11:24.159> is<01:11:24.400> more<01:11:24.640> common," + }, + { + "start": 4285.11, + "duration": 0.0, + "text": "the one on the right is more common," + }, + { + "start": 4285.12, + "duration": 0.0, + "text": "the one on the right is more common, right?<01:11:25.440> Like<01:11:25.600> it's<01:11:26.000> everyone's<01:11:26.480> built<01:11:26.719> tools" + }, + { + "start": 4286.95, + "duration": 0.0, + "text": "right? Like it's everyone's built tools" + }, + { + "start": 4286.96, + "duration": 0.0, + "text": "right? Like it's everyone's built tools for<01:11:27.199> this<01:11:27.360> side<01:11:28.159> and<01:11:28.640> you<01:11:28.880> know<01:11:30.159> comparatively" + }, + { + "start": 4290.709, + "duration": 0.0, + "text": "for this side and you know comparatively" + }, + { + "start": 4290.719, + "duration": 0.0, + "text": "for this side and you know comparatively few<01:11:30.960> people<01:11:31.040> have<01:11:31.280> built<01:11:31.440> tools<01:11:31.679> for<01:11:31.760> the<01:11:31.920> left" + }, + { + "start": 4292.149, + "duration": 0.0, + "text": "few people have built tools for the left" + }, + { + "start": 4292.159, + "duration": 0.0, + "text": "few people have built tools for the left side.<01:11:33.040> It's<01:11:33.280> sort<01:11:33.440> of<01:11:33.600> like<01:11:34.239> it's<01:11:34.480> just<01:11:34.640> more" + }, + { + "start": 4294.87, + "duration": 0.0, + "text": "side. It's sort of like it's just more" + }, + { + "start": 4294.88, + "duration": 0.0, + "text": "side. It's sort of like it's just more worth<01:11:35.040> it<01:11:35.120> to<01:11:35.280> build<01:11:35.440> tools<01:11:35.679> for<01:11:35.840> the<01:11:36.000> right" + }, + { + "start": 4296.149, + "duration": 0.0, + "text": "worth it to build tools for the right" + }, + { + "start": 4296.159, + "duration": 0.0, + "text": "worth it to build tools for the right side.<01:11:36.800> And<01:11:37.040> so<01:11:37.280> like<01:11:37.440> the<01:11:37.600> debuggy" + }, + { + "start": 4298.149, + "duration": 0.0, + "text": "side. And so like the debuggy" + }, + { + "start": 4298.159, + "duration": 0.0, + "text": "side. And so like the debuggy visualization<01:11:38.800> stuff<01:11:39.040> kind<01:11:39.280> of<01:11:39.360> suffers<01:11:39.920> a" + }, + { + "start": 4300.229, + "duration": 0.0, + "text": "visualization stuff kind of suffers a" + }, + { + "start": 4300.239, + "duration": 0.0, + "text": "visualization stuff kind of suffers a lot.<01:11:40.800> Um<01:11:41.040> it's<01:11:41.280> just<01:11:41.600> more<01:11:41.840> worthwhile<01:11:42.239> to<01:11:42.400> do" + }, + { + "start": 4302.47, + "duration": 0.0, + "text": "lot. Um it's just more worthwhile to do" + }, + { + "start": 4302.48, + "duration": 0.0, + "text": "lot. Um it's just more worthwhile to do an<01:11:42.640> investment<01:11:42.960> on<01:11:43.120> the<01:11:43.199> right<01:11:43.360> side<01:11:43.520> than<01:11:43.679> the" + }, + { + "start": 4303.83, + "duration": 0.0, + "text": "an investment on the right side than the" + }, + { + "start": 4303.84, + "duration": 0.0, + "text": "an investment on the right side than the left<01:11:44.080> side." + }, + { + "start": 4305.75, + "duration": 0.0, + "text": "left side." + }, + { + "start": 4305.76, + "duration": 0.0, + "text": "left side. Um<01:11:46.400> just<01:11:46.640> get<01:11:46.800> way<01:11:46.960> more<01:11:47.120> bang<01:11:47.360> for<01:11:47.520> buck<01:11:47.760> that" + }, + { + "start": 4307.91, + "duration": 0.0, + "text": "Um just get way more bang for buck that" + }, + { + "start": 4307.92, + "duration": 0.0, + "text": "Um just get way more bang for buck that way.<01:11:48.320> What's<01:11:48.560> worse<01:11:48.880> is<01:11:49.120> if<01:11:49.360> we<01:11:49.520> consider<01:11:49.840> the" + }, + { + "start": 4309.99, + "duration": 0.0, + "text": "way. What's worse is if we consider the" + }, + { + "start": 4310.0, + "duration": 0.0, + "text": "way. What's worse is if we consider the needs<01:11:50.159> of<01:11:50.320> an<01:11:50.480> actual<01:11:50.719> debugger<01:11:51.120> UI,<01:11:51.679> we<01:11:51.840> have" + }, + { + "start": 4311.91, + "duration": 0.0, + "text": "needs of an actual debugger UI, we have" + }, + { + "start": 4311.92, + "duration": 0.0, + "text": "needs of an actual debugger UI, we have to<01:11:52.080> do<01:11:52.159> the<01:11:52.320> file<01:11:52.560> system<01:11:52.800> part<01:11:53.040> two.<01:11:53.520> Like<01:11:53.679> we" + }, + { + "start": 4313.91, + "duration": 0.0, + "text": "to do the file system part two. Like we" + }, + { + "start": 4313.92, + "duration": 0.0, + "text": "to do the file system part two. Like we have<01:11:54.000> to<01:11:54.159> look<01:11:54.239> at<01:11:54.400> a<01:11:54.560> source<01:11:54.800> file<01:11:55.040> on<01:11:55.199> disk." + }, + { + "start": 4315.75, + "duration": 0.0, + "text": "have to look at a source file on disk." + }, + { + "start": 4315.76, + "duration": 0.0, + "text": "have to look at a source file on disk. We<01:11:55.920> have<01:11:56.000> to<01:11:56.080> pull<01:11:56.239> it<01:11:56.320> down<01:11:56.480> as<01:11:56.640> text.<01:11:56.960> We<01:11:57.040> have" + }, + { + "start": 4317.11, + "duration": 0.0, + "text": "We have to pull it down as text. We have" + }, + { + "start": 4317.12, + "duration": 0.0, + "text": "We have to pull it down as text. We have to<01:11:57.199> visualize<01:11:57.520> it<01:11:57.679> as<01:11:57.920> text." + }, + { + "start": 4320.07, + "duration": 0.0, + "text": "to visualize it as text." + }, + { + "start": 4320.08, + "duration": 0.0, + "text": "to visualize it as text. So<01:12:00.239> for<01:12:00.480> me<01:12:00.719> like<01:12:00.880> this<01:12:01.040> was<01:12:01.199> just<01:12:01.360> like<01:12:01.600> too" + }, + { + "start": 4321.83, + "duration": 0.0, + "text": "So for me like this was just like too" + }, + { + "start": 4321.84, + "duration": 0.0, + "text": "So for me like this was just like too much.<01:12:02.080> I'm<01:12:02.400> like<01:12:02.960> when<01:12:03.199> I<01:12:03.280> first<01:12:03.920> built<01:12:04.159> the" + }, + { + "start": 4324.31, + "duration": 0.0, + "text": "much. I'm like when I first built the" + }, + { + "start": 4324.32, + "duration": 0.0, + "text": "much. I'm like when I first built the visualizer<01:12:04.800> system<01:12:04.960> in<01:12:05.120> the<01:12:05.199> RAD<01:12:05.440> debugger,<01:12:06.159> I" + }, + { + "start": 4326.39, + "duration": 0.0, + "text": "visualizer system in the RAD debugger, I" + }, + { + "start": 4326.4, + "duration": 0.0, + "text": "visualizer system in the RAD debugger, I like<01:12:06.800> was<01:12:06.960> starting<01:12:07.280> to<01:12:07.520> have<01:12:07.920> like<01:12:08.320> here's" + }, + { + "start": 4328.63, + "duration": 0.0, + "text": "like was starting to have like here's" + }, + { + "start": 4328.64, + "duration": 0.0, + "text": "like was starting to have like here's how<01:12:08.800> you<01:12:09.040> like<01:12:09.280> here's<01:12:09.440> the<01:12:09.679> source<01:12:10.000> viewer" + }, + { + "start": 4330.63, + "duration": 0.0, + "text": "how you like here's the source viewer" + }, + { + "start": 4330.64, + "duration": 0.0, + "text": "how you like here's the source viewer and<01:12:10.880> here's<01:12:11.120> the<01:12:11.280> debuggy<01:12:11.920> process<01:12:12.960> memory" + }, + { + "start": 4333.43, + "duration": 0.0, + "text": "and here's the debuggy process memory" + }, + { + "start": 4333.44, + "duration": 0.0, + "text": "and here's the debuggy process memory text<01:12:13.760> viewer<01:12:14.400> and<01:12:14.640> they're<01:12:14.880> bifurcated<01:12:15.520> in" + }, + { + "start": 4335.669, + "duration": 0.0, + "text": "text viewer and they're bifurcated in" + }, + { + "start": 4335.679, + "duration": 0.0, + "text": "text viewer and they're bifurcated in this<01:12:15.840> uncomfortable<01:12:16.480> way<01:12:17.120> and<01:12:17.280> I<01:12:17.520> was<01:12:17.600> like" + }, + { + "start": 4337.83, + "duration": 0.0, + "text": "this uncomfortable way and I was like" + }, + { + "start": 4337.84, + "duration": 0.0, + "text": "this uncomfortable way and I was like there's<01:12:18.080> too<01:12:18.320> much<01:12:18.640> like<01:12:18.880> these<01:12:19.120> things" + }, + { + "start": 4339.35, + "duration": 0.0, + "text": "there's too much like these things" + }, + { + "start": 4339.36, + "duration": 0.0, + "text": "there's too much like these things should<01:12:19.520> be<01:12:19.600> the<01:12:19.760> same.<01:12:19.920> Like<01:12:20.080> I<01:12:20.239> had<01:12:20.400> a<01:12:20.560> feeling" + }, + { + "start": 4340.79, + "duration": 0.0, + "text": "should be the same. Like I had a feeling" + }, + { + "start": 4340.8, + "duration": 0.0, + "text": "should be the same. Like I had a feeling that<01:12:20.960> these<01:12:21.199> should<01:12:21.440> collapse." + }, + { + "start": 4343.51, + "duration": 0.0, + "text": "that these should collapse." + }, + { + "start": 4343.52, + "duration": 0.0, + "text": "that these should collapse. Um<01:12:24.719> why<01:12:24.880> do<01:12:25.040> I<01:12:25.120> feel<01:12:25.280> that<01:12:25.440> way?<01:12:25.679> Because<01:12:25.840> past" + }, + { + "start": 4346.149, + "duration": 0.0, + "text": "Um why do I feel that way? Because past" + }, + { + "start": 4346.159, + "duration": 0.0, + "text": "Um why do I feel that way? Because past the<01:12:26.400> point<01:12:26.560> of<01:12:26.719> actually<01:12:27.040> reading<01:12:27.360> the<01:12:27.520> data" + }, + { + "start": 4347.91, + "duration": 0.0, + "text": "the point of actually reading the data" + }, + { + "start": 4347.92, + "duration": 0.0, + "text": "the point of actually reading the data it's<01:12:28.159> like<01:12:28.239> the<01:12:28.480> same<01:12:28.560> thing,<01:12:28.800> right?<01:12:29.120> Same" + }, + { + "start": 4349.35, + "duration": 0.0, + "text": "it's like the same thing, right? Same" + }, + { + "start": 4349.36, + "duration": 0.0, + "text": "it's like the same thing, right? Same problem." + }, + { + "start": 4353.04, + "duration": 0.0, + "text": "Um<01:12:33.840> but<01:12:34.480> remember<01:12:34.800> I<01:12:35.040> said" + }, + { + "start": 4356.79, + "duration": 0.0, + "text": "Um but remember I said" + }, + { + "start": 4356.8, + "duration": 0.0, + "text": "Um but remember I said uh<01:12:37.040> our<01:12:37.199> visualizers<01:12:37.760> in<01:12:37.920> the<01:12:38.000> debugger<01:12:38.560> can" + }, + { + "start": 4358.79, + "duration": 0.0, + "text": "uh our visualizers in the debugger can" + }, + { + "start": 4358.8, + "duration": 0.0, + "text": "uh our visualizers in the debugger can apply<01:12:38.960> to<01:12:39.120> anything<01:12:39.360> the<01:12:39.520> debugger<01:12:39.920> can<01:12:40.480> uh" + }, + { + "start": 4360.709, + "duration": 0.0, + "text": "apply to anything the debugger can uh" + }, + { + "start": 4360.719, + "duration": 0.0, + "text": "apply to anything the debugger can uh can<01:12:41.199> evaluate.<01:12:42.640> So<01:12:42.960> what<01:12:43.199> can<01:12:43.600> the<01:12:43.840> debugger" + }, + { + "start": 4364.149, + "duration": 0.0, + "text": "can evaluate. So what can the debugger" + }, + { + "start": 4364.159, + "duration": 0.0, + "text": "can evaluate. So what can the debugger evaluate?" + }, + { + "start": 4366.63, + "duration": 0.0, + "text": "evaluate?" + }, + { + "start": 4366.64, + "duration": 0.0, + "text": "evaluate? So<01:12:47.440> so<01:12:47.679> far<01:12:47.920> a<01:12:48.159> debugger<01:12:48.480> evaluation<01:12:48.880> can" + }, + { + "start": 4369.03, + "duration": 0.0, + "text": "So so far a debugger evaluation can" + }, + { + "start": 4369.04, + "duration": 0.0, + "text": "So so far a debugger evaluation can produce<01:12:49.360> like<01:12:49.600> you<01:12:49.679> know<01:12:49.840> like<01:12:50.000> an<01:12:50.239> address<01:12:50.640> or" + }, + { + "start": 4371.03, + "duration": 0.0, + "text": "produce like you know like an address or" + }, + { + "start": 4371.04, + "duration": 0.0, + "text": "produce like you know like an address or a<01:12:51.360> register<01:12:51.760> or<01:12:52.000> a<01:12:52.239> value<01:12:53.679> um<01:12:54.159> or<01:12:54.320> register" + }, + { + "start": 4374.709, + "duration": 0.0, + "text": "a register or a value um or register" + }, + { + "start": 4374.719, + "duration": 0.0, + "text": "a register or a value um or register location<01:12:55.040> I<01:12:55.199> should<01:12:55.360> say<01:12:55.600> or<01:12:56.159> uh<01:12:56.239> or<01:12:56.880> like<01:12:57.120> a" + }, + { + "start": 4377.27, + "duration": 0.0, + "text": "location I should say or uh or like a" + }, + { + "start": 4377.28, + "duration": 0.0, + "text": "location I should say or uh or like a constant<01:12:57.679> value<01:12:57.920> of<01:12:58.159> something." + }, + { + "start": 4380.31, + "duration": 0.0, + "text": "constant value of something." + }, + { + "start": 4380.32, + "duration": 0.0, + "text": "constant value of something. But<01:13:00.480> if<01:13:00.640> we<01:13:00.800> extend<01:13:01.040> the<01:13:01.199> notion<01:13:01.760> of<01:13:02.000> an" + }, + { + "start": 4382.149, + "duration": 0.0, + "text": "But if we extend the notion of an" + }, + { + "start": 4382.159, + "duration": 0.0, + "text": "But if we extend the notion of an evaluation<01:13:03.360> to<01:13:03.679> also<01:13:04.000> include<01:13:04.239> a<01:13:04.400> notion<01:13:04.640> of" + }, + { + "start": 4384.87, + "duration": 0.0, + "text": "evaluation to also include a notion of" + }, + { + "start": 4384.88, + "duration": 0.0, + "text": "evaluation to also include a notion of which<01:13:05.520> space,<01:13:05.920> which<01:13:06.239> universe<01:13:06.640> that" + }, + { + "start": 4386.87, + "duration": 0.0, + "text": "which space, which universe that" + }, + { + "start": 4386.88, + "duration": 0.0, + "text": "which space, which universe that evaluation<01:13:07.440> is<01:13:07.600> within,<01:13:08.480> then<01:13:08.719> we<01:13:08.880> can" + }, + { + "start": 4389.03, + "duration": 0.0, + "text": "evaluation is within, then we can" + }, + { + "start": 4389.04, + "duration": 0.0, + "text": "evaluation is within, then we can broaden<01:13:09.360> the<01:13:09.520> applicability,<01:13:10.080> right?<01:13:10.239> We've" + }, + { + "start": 4390.47, + "duration": 0.0, + "text": "broaden the applicability, right? We've" + }, + { + "start": 4390.48, + "duration": 0.0, + "text": "broaden the applicability, right? We've sort<01:13:10.560> of<01:13:10.719> parameterize<01:13:11.199> this<01:13:11.440> thing<01:13:11.600> a<01:13:11.760> little" + }, + { + "start": 4391.83, + "duration": 0.0, + "text": "sort of parameterize this thing a little" + }, + { + "start": 4391.84, + "duration": 0.0, + "text": "sort of parameterize this thing a little bit<01:13:12.000> more<01:13:12.239> to<01:13:12.480> say<01:13:13.040> a<01:13:13.360> little<01:13:13.440> bit<01:13:13.600> more<01:13:13.840> about" + }, + { + "start": 4393.99, + "duration": 0.0, + "text": "bit more to say a little bit more about" + }, + { + "start": 4394.0, + "duration": 0.0, + "text": "bit more to say a little bit more about where<01:13:14.239> it<01:13:14.400> is<01:13:14.480> and<01:13:14.640> and<01:13:14.880> where<01:13:15.040> it's<01:13:15.280> coming" + }, + { + "start": 4395.43, + "duration": 0.0, + "text": "where it is and and where it's coming" + }, + { + "start": 4395.44, + "duration": 0.0, + "text": "where it is and and where it's coming from.<01:13:16.560> So<01:13:16.719> a<01:13:16.960> space<01:13:17.840> can<01:13:18.080> be<01:13:18.159> used<01:13:18.320> to<01:13:18.480> choose" + }, + { + "start": 4398.63, + "duration": 0.0, + "text": "from. So a space can be used to choose" + }, + { + "start": 4398.64, + "duration": 0.0, + "text": "from. So a space can be used to choose between<01:13:18.880> a<01:13:19.040> debug<01:13:19.679> obviously," + }, + { + "start": 4401.669, + "duration": 0.0, + "text": "between a debug obviously," + }, + { + "start": 4401.679, + "duration": 0.0, + "text": "between a debug obviously, but<01:13:21.920> it<01:13:22.159> can<01:13:22.239> also<01:13:22.719> pick<01:13:23.040> between,<01:13:23.840> let's<01:13:24.000> say," + }, + { + "start": 4404.149, + "duration": 0.0, + "text": "but it can also pick between, let's say," + }, + { + "start": 4404.159, + "duration": 0.0, + "text": "but it can also pick between, let's say, another<01:13:24.400> debuggy.<01:13:24.960> Let's<01:13:25.040> say<01:13:25.120> your<01:13:25.280> debugger" + }, + { + "start": 4405.51, + "duration": 0.0, + "text": "another debuggy. Let's say your debugger" + }, + { + "start": 4405.52, + "duration": 0.0, + "text": "another debuggy. Let's say your debugger is<01:13:25.679> not<01:13:25.760> just<01:13:25.920> attached<01:13:26.239> to<01:13:26.400> one<01:13:26.560> process,<01:13:26.960> but" + }, + { + "start": 4407.189, + "duration": 0.0, + "text": "is not just attached to one process, but" + }, + { + "start": 4407.199, + "duration": 0.0, + "text": "is not just attached to one process, but multiple<01:13:27.520> processes.<01:13:28.320> which<01:13:28.560> one<01:13:28.719> are<01:13:28.880> you" + }, + { + "start": 4408.95, + "duration": 0.0, + "text": "multiple processes. which one are you" + }, + { + "start": 4408.96, + "duration": 0.0, + "text": "multiple processes. which one are you evaluating<01:13:29.440> in<01:13:29.840> a<01:13:30.000> space<01:13:30.320> can<01:13:30.480> tell<01:13:30.640> you<01:13:30.800> that" + }, + { + "start": 4411.669, + "duration": 0.0, + "text": "evaluating in a space can tell you that" + }, + { + "start": 4411.679, + "duration": 0.0, + "text": "evaluating in a space can tell you that but<01:13:33.040> you<01:13:33.280> could<01:13:33.440> also<01:13:33.679> say<01:13:34.159> the<01:13:34.480> space<01:13:34.719> is<01:13:34.880> a" + }, + { + "start": 4415.03, + "duration": 0.0, + "text": "but you could also say the space is a" + }, + { + "start": 4415.04, + "duration": 0.0, + "text": "but you could also say the space is a file<01:13:35.440> or<01:13:35.600> the<01:13:35.760> space<01:13:35.920> is<01:13:36.080> just<01:13:36.239> some<01:13:36.400> file<01:13:36.640> on" + }, + { + "start": 4416.79, + "duration": 0.0, + "text": "file or the space is just some file on" + }, + { + "start": 4416.8, + "duration": 0.0, + "text": "file or the space is just some file on disk<01:13:37.280> at<01:13:37.520> some<01:13:37.760> path<01:13:38.320> or<01:13:38.640> it's<01:13:39.040> something<01:13:39.280> in" + }, + { + "start": 4419.43, + "duration": 0.0, + "text": "disk at some path or it's something in" + }, + { + "start": 4419.44, + "duration": 0.0, + "text": "disk at some path or it's something in the<01:13:39.600> debugger<01:13:40.000> itself.<01:13:41.199> So<01:13:41.360> if<01:13:41.520> we<01:13:41.679> expand" + }, + { + "start": 4422.07, + "duration": 0.0, + "text": "the debugger itself. So if we expand" + }, + { + "start": 4422.08, + "duration": 0.0, + "text": "the debugger itself. So if we expand that<01:13:43.360> then<01:13:43.600> these<01:13:43.920> different<01:13:44.239> worlds<01:13:44.880> simply" + }, + { + "start": 4425.27, + "duration": 0.0, + "text": "that then these different worlds simply" + }, + { + "start": 4425.28, + "duration": 0.0, + "text": "that then these different worlds simply become<01:13:45.600> different<01:13:46.000> spaces<01:13:46.880> within<01:13:47.199> which<01:13:47.440> the" + }, + { + "start": 4427.59, + "duration": 0.0, + "text": "become different spaces within which the" + }, + { + "start": 4427.6, + "duration": 0.0, + "text": "become different spaces within which the debugger<01:13:48.000> can<01:13:48.159> evaluate." + }, + { + "start": 4429.669, + "duration": 0.0, + "text": "debugger can evaluate." + }, + { + "start": 4429.679, + "duration": 0.0, + "text": "debugger can evaluate. So<01:13:49.920> remember<01:13:50.159> that<01:13:50.320> source<01:13:50.640> view<01:13:50.880> in<01:13:51.040> the<01:13:51.120> RAD" + }, + { + "start": 4431.35, + "duration": 0.0, + "text": "So remember that source view in the RAD" + }, + { + "start": 4431.36, + "duration": 0.0, + "text": "So remember that source view in the RAD debugger<01:13:52.640> that's<01:13:52.880> just<01:13:53.040> the<01:13:53.199> text<01:13:53.440> visualizer" + }, + { + "start": 4433.91, + "duration": 0.0, + "text": "debugger that's just the text visualizer" + }, + { + "start": 4433.92, + "duration": 0.0, + "text": "debugger that's just the text visualizer applied<01:13:54.239> to<01:13:54.320> a<01:13:54.480> file<01:13:54.719> path" + }, + { + "start": 4437.03, + "duration": 0.0, + "text": "applied to a file path" + }, + { + "start": 4437.04, + "duration": 0.0, + "text": "applied to a file path output<01:13:57.440> tab" + }, + { + "start": 4439.03, + "duration": 0.0, + "text": "output tab" + }, + { + "start": 4439.04, + "duration": 0.0, + "text": "output tab just<01:13:59.199> the<01:13:59.360> text<01:13:59.600> visualizer<01:14:00.320> evaluating<01:14:00.800> the" + }, + { + "start": 4440.95, + "duration": 0.0, + "text": "just the text visualizer evaluating the" + }, + { + "start": 4440.96, + "duration": 0.0, + "text": "just the text visualizer evaluating the output<01:14:01.199> log<01:14:01.520> within<01:14:01.760> the<01:14:01.840> debugger<01:14:02.320> space." + }, + { + "start": 4443.99, + "duration": 0.0, + "text": "output log within the debugger space." + }, + { + "start": 4444.0, + "duration": 0.0, + "text": "output log within the debugger space. What<01:14:04.159> happens<01:14:04.400> if<01:14:04.480> you<01:14:04.640> open<01:14:04.800> a<01:14:04.960> binary<01:14:05.280> file?" + }, + { + "start": 4445.91, + "duration": 0.0, + "text": "What happens if you open a binary file?" + }, + { + "start": 4445.92, + "duration": 0.0, + "text": "What happens if you open a binary file? It's<01:14:06.159> just<01:14:06.239> a<01:14:06.400> hex<01:14:06.719> viewer<01:14:07.520> because<01:14:07.760> the" + }, + { + "start": 4447.91, + "duration": 0.0, + "text": "It's just a hex viewer because the" + }, + { + "start": 4447.92, + "duration": 0.0, + "text": "It's just a hex viewer because the debugger<01:14:08.320> has<01:14:08.400> a<01:14:08.560> way<01:14:08.640> of<01:14:08.719> viewing<01:14:08.960> memory" + }, + { + "start": 4449.27, + "duration": 0.0, + "text": "debugger has a way of viewing memory" + }, + { + "start": 4449.28, + "duration": 0.0, + "text": "debugger has a way of viewing memory from<01:14:09.520> any<01:14:09.760> space<01:14:09.920> with<01:14:10.080> a<01:14:10.239> hex<01:14:10.480> grid.<01:14:10.880> So" + }, + { + "start": 4451.03, + "duration": 0.0, + "text": "from any space with a hex grid. So" + }, + { + "start": 4451.04, + "duration": 0.0, + "text": "from any space with a hex grid. So that's<01:14:11.280> that's<01:14:11.600> how<01:14:11.760> that<01:14:12.080> actually<01:14:12.640> works" + }, + { + "start": 4452.95, + "duration": 0.0, + "text": "that's that's how that actually works" + }, + { + "start": 4452.96, + "duration": 0.0, + "text": "that's that's how that actually works and<01:14:13.120> it<01:14:13.280> doesn't<01:14:13.440> stop<01:14:13.600> with<01:14:13.760> the<01:14:13.920> visualizer" + }, + { + "start": 4454.95, + "duration": 0.0, + "text": "and it doesn't stop with the visualizer" + }, + { + "start": 4454.96, + "duration": 0.0, + "text": "and it doesn't stop with the visualizer uh<01:14:15.199> sort<01:14:15.360> of<01:14:15.520> endpoints." + }, + { + "start": 4457.51, + "duration": 0.0, + "text": "uh sort of endpoints." + }, + { + "start": 4457.52, + "duration": 0.0, + "text": "uh sort of endpoints. Um,<01:14:18.159> you<01:14:18.400> might<01:14:18.560> also<01:14:18.880> remember<01:14:19.440> like<01:14:19.600> when<01:14:19.760> I" + }, + { + "start": 4459.91, + "duration": 0.0, + "text": "Um, you might also remember like when I" + }, + { + "start": 4459.92, + "duration": 0.0, + "text": "Um, you might also remember like when I added<01:14:20.159> a<01:14:20.320> condition<01:14:20.560> to<01:14:20.719> a<01:14:20.880> breakpoint,<01:14:21.199> I" + }, + { + "start": 4461.35, + "duration": 0.0, + "text": "added a condition to a breakpoint, I" + }, + { + "start": 4461.36, + "duration": 0.0, + "text": "added a condition to a breakpoint, I rightcicked<01:14:21.760> on<01:14:21.840> the<01:14:21.920> breakpoint.<01:14:22.320> This<01:14:22.480> UI" + }, + { + "start": 4462.709, + "duration": 0.0, + "text": "rightcicked on the breakpoint. This UI" + }, + { + "start": 4462.719, + "duration": 0.0, + "text": "rightcicked on the breakpoint. This UI pops<01:14:22.960> up.<01:14:23.280> Kind<01:14:23.440> of<01:14:23.520> looks<01:14:23.679> like<01:14:23.760> a<01:14:23.920> watch" + }, + { + "start": 4464.149, + "duration": 0.0, + "text": "pops up. Kind of looks like a watch" + }, + { + "start": 4464.159, + "duration": 0.0, + "text": "pops up. Kind of looks like a watch window,<01:14:24.560> doesn't<01:14:24.719> it?" + }, + { + "start": 4467.189, + "duration": 0.0, + "text": "window, doesn't it?" + }, + { + "start": 4467.199, + "duration": 0.0, + "text": "window, doesn't it? You<01:14:27.360> may<01:14:27.520> think<01:14:27.679> it<01:14:27.920> looks<01:14:28.080> like<01:14:28.239> one" + }, + { + "start": 4469.75, + "duration": 0.0, + "text": "You may think it looks like one" + }, + { + "start": 4469.76, + "duration": 0.0, + "text": "You may think it looks like one maybe.<01:14:31.199> Um,<01:14:31.520> and<01:14:31.679> that's<01:14:31.920> because<01:14:32.080> it<01:14:32.159> is." + }, + { + "start": 4472.31, + "duration": 0.0, + "text": "maybe. Um, and that's because it is." + }, + { + "start": 4472.32, + "duration": 0.0, + "text": "maybe. Um, and that's because it is. It's<01:14:32.480> an<01:14:32.640> actual<01:14:32.800> watch<01:14:33.040> window<01:14:33.280> evaluating" + }, + { + "start": 4473.75, + "duration": 0.0, + "text": "It's an actual watch window evaluating" + }, + { + "start": 4473.76, + "duration": 0.0, + "text": "It's an actual watch window evaluating the<01:14:33.920> break<01:14:34.159> point<01:14:34.400> within<01:14:34.640> the<01:14:34.800> debugger" + }, + { + "start": 4475.27, + "duration": 0.0, + "text": "the break point within the debugger" + }, + { + "start": 4475.28, + "duration": 0.0, + "text": "the break point within the debugger address<01:14:35.840> or<01:14:36.640> not<01:14:36.880> address<01:14:37.120> space,<01:14:37.360> debugger" + }, + { + "start": 4477.83, + "duration": 0.0, + "text": "address or not address space, debugger" + }, + { + "start": 4477.84, + "duration": 0.0, + "text": "address or not address space, debugger space.<01:14:38.320> Uh," + }, + { + "start": 4480.47, + "duration": 0.0, + "text": "space. Uh," + }, + { + "start": 4480.48, + "duration": 0.0, + "text": "space. Uh, and<01:14:40.640> it<01:14:40.880> doesn't<01:14:41.040> stop<01:14:41.199> with<01:14:41.360> breakpoints." + }, + { + "start": 4481.91, + "duration": 0.0, + "text": "and it doesn't stop with breakpoints." + }, + { + "start": 4481.92, + "duration": 0.0, + "text": "and it doesn't stop with breakpoints. All<01:14:42.159> configuration<01:14:42.640> data<01:14:42.960> works<01:14:43.120> this<01:14:43.440> If<01:14:43.600> I" + }, + { + "start": 4483.669, + "duration": 0.0, + "text": "All configuration data works this If I" + }, + { + "start": 4483.679, + "duration": 0.0, + "text": "All configuration data works this If I evaluate<01:14:44.320> a<01:14:44.640> target<01:14:45.040> like<01:14:45.280> all<01:14:45.360> the<01:14:45.840> all<01:14:46.000> the" + }, + { + "start": 4486.149, + "duration": 0.0, + "text": "evaluate a target like all the all the" + }, + { + "start": 4486.159, + "duration": 0.0, + "text": "evaluate a target like all the all the options<01:14:46.400> for<01:14:46.560> launching<01:14:46.800> an<01:14:47.040> executable<01:14:48.000> um" + }, + { + "start": 4488.07, + "duration": 0.0, + "text": "options for launching an executable um" + }, + { + "start": 4488.08, + "duration": 0.0, + "text": "options for launching an executable um that's<01:14:48.320> just<01:14:48.480> evaluating<01:14:48.960> the<01:14:49.120> target<01:14:50.480> looks" + }, + { + "start": 4490.709, + "duration": 0.0, + "text": "that's just evaluating the target looks" + }, + { + "start": 4490.719, + "duration": 0.0, + "text": "that's just evaluating the target looks like<01:14:50.800> a<01:14:50.960> watch<01:14:51.199> window<01:14:51.760> because<01:14:52.000> there's<01:14:52.320> one." + }, + { + "start": 4493.35, + "duration": 0.0, + "text": "like a watch window because there's one." + }, + { + "start": 4493.36, + "duration": 0.0, + "text": "like a watch window because there's one. Here's<01:14:53.600> the<01:14:53.760> list<01:14:53.920> of<01:14:54.080> threads<01:14:54.880> in<01:14:55.120> the<01:14:55.199> RAD" + }, + { + "start": 4495.43, + "duration": 0.0, + "text": "Here's the list of threads in the RAD" + }, + { + "start": 4495.44, + "duration": 0.0, + "text": "Here's the list of threads in the RAD debugger." + }, + { + "start": 4497.27, + "duration": 0.0, + "text": "debugger." + }, + { + "start": 4497.28, + "duration": 0.0, + "text": "debugger. Need<01:14:57.520> I<01:14:57.679> say<01:14:57.840> more?<01:14:58.159> It's<01:14:58.320> a<01:14:58.400> watch<01:14:58.640> window." + }, + { + "start": 4501.59, + "duration": 0.0, + "text": "Need I say more? It's a watch window." + }, + { + "start": 4501.6, + "duration": 0.0, + "text": "Need I say more? It's a watch window. Tab<01:15:01.920> rightclick<01:15:02.400> menu.<01:15:03.120> Yes,<01:15:03.600> I<01:15:03.840> I<01:15:04.080> know<01:15:04.320> it's" + }, + { + "start": 4504.55, + "duration": 0.0, + "text": "Tab rightclick menu. Yes, I I know it's" + }, + { + "start": 4504.56, + "duration": 0.0, + "text": "Tab rightclick menu. Yes, I I know it's a<01:15:04.719> watch<01:15:04.960> window." + }, + { + "start": 4506.79, + "duration": 0.0, + "text": "a watch window." + }, + { + "start": 4506.8, + "duration": 0.0, + "text": "a watch window. File<01:15:07.120> tree<01:15:07.360> view.<01:15:08.480> Guess<01:15:08.719> what?" + }, + { + "start": 4510.229, + "duration": 0.0, + "text": "File tree view. Guess what?" + }, + { + "start": 4510.239, + "duration": 0.0, + "text": "File tree view. Guess what? >> Watch<01:15:10.640> window.<01:15:11.280> Just<01:15:11.600> evaluating<01:15:12.080> folders." + }, + { + "start": 4513.27, + "duration": 0.0, + "text": ">> Watch window. Just evaluating folders." + }, + { + "start": 4513.28, + "duration": 0.0, + "text": ">> Watch window. Just evaluating folders. Everything's<01:15:13.600> a<01:15:13.760> watch<01:15:14.000> window." + }, + { + "start": 4515.59, + "duration": 0.0, + "text": "Everything's a watch window." + }, + { + "start": 4515.6, + "duration": 0.0, + "text": "Everything's a watch window. Everything's<01:15:15.920> a<01:15:16.080> watch<01:15:16.239> window." + }, + { + "start": 4521.04, + "duration": 0.0, + "text": "Now,<01:15:21.840> to<01:15:22.000> build<01:15:22.239> visualizations<01:15:22.800> for<01:15:22.960> the" + }, + { + "start": 4523.11, + "duration": 0.0, + "text": "Now, to build visualizations for the" + }, + { + "start": 4523.12, + "duration": 0.0, + "text": "Now, to build visualizations for the system,<01:15:23.679> a<01:15:23.920> visualization<01:15:24.480> engine<01:15:24.719> needs" + }, + { + "start": 4525.03, + "duration": 0.0, + "text": "system, a visualization engine needs" + }, + { + "start": 4525.04, + "duration": 0.0, + "text": "system, a visualization engine needs visualizers<01:15:25.840> that<01:15:26.080> are<01:15:26.159> sort<01:15:26.320> of<01:15:26.480> agnostic<01:15:27.040> to" + }, + { + "start": 4527.27, + "duration": 0.0, + "text": "visualizers that are sort of agnostic to" + }, + { + "start": 4527.28, + "duration": 0.0, + "text": "visualizers that are sort of agnostic to the<01:15:27.679> uh<01:15:27.840> source<01:15:28.080> of<01:15:28.239> the<01:15:28.400> underlying<01:15:28.880> data." + }, + { + "start": 4529.83, + "duration": 0.0, + "text": "the uh source of the underlying data." + }, + { + "start": 4529.84, + "duration": 0.0, + "text": "the uh source of the underlying data. Um,<01:15:30.480> so<01:15:30.719> in<01:15:30.880> other<01:15:30.960> words,<01:15:31.120> they<01:15:31.280> need<01:15:31.360> to<01:15:31.520> be" + }, + { + "start": 4531.59, + "duration": 0.0, + "text": "Um, so in other words, they need to be" + }, + { + "start": 4531.6, + "duration": 0.0, + "text": "Um, so in other words, they need to be based<01:15:31.760> around<01:15:32.000> like<01:15:32.159> some<01:15:32.400> contents.<01:15:33.040> Like" + }, + { + "start": 4533.27, + "duration": 0.0, + "text": "based around like some contents. Like" + }, + { + "start": 4533.28, + "duration": 0.0, + "text": "based around like some contents. Like you<01:15:33.440> want<01:15:33.600> to<01:15:33.760> talk<01:15:33.920> about<01:15:34.080> the<01:15:34.239> contents<01:15:34.640> of" + }, + { + "start": 4534.79, + "duration": 0.0, + "text": "you want to talk about the contents of" + }, + { + "start": 4534.8, + "duration": 0.0, + "text": "you want to talk about the contents of something,<01:15:35.760> not<01:15:36.000> like<01:15:36.640> um<01:15:37.760> the<01:15:38.000> path<01:15:38.239> to<01:15:38.480> that" + }, + { + "start": 4538.63, + "duration": 0.0, + "text": "something, not like um the path to that" + }, + { + "start": 4538.64, + "duration": 0.0, + "text": "something, not like um the path to that data<01:15:38.880> because<01:15:39.120> that<01:15:39.280> couples<01:15:39.600> it<01:15:39.760> sort<01:15:39.920> of<01:15:40.000> to" + }, + { + "start": 4540.149, + "duration": 0.0, + "text": "data because that couples it sort of to" + }, + { + "start": 4540.159, + "duration": 0.0, + "text": "data because that couples it sort of to the<01:15:40.320> file<01:15:40.640> to<01:15:40.719> the<01:15:40.880> file<01:15:41.120> system,<01:15:41.520> right?" + }, + { + "start": 4543.03, + "duration": 0.0, + "text": "the file to the file system, right?" + }, + { + "start": 4543.04, + "duration": 0.0, + "text": "the file to the file system, right? Um,<01:15:43.679> so<01:15:43.920> let's<01:15:44.080> imagine<01:15:44.400> a<01:15:44.560> filebased<01:15:45.840> viewing" + }, + { + "start": 4546.229, + "duration": 0.0, + "text": "Um, so let's imagine a filebased viewing" + }, + { + "start": 4546.239, + "duration": 0.0, + "text": "Um, so let's imagine a filebased viewing program.<01:15:46.880> In<01:15:47.040> that<01:15:47.199> case,<01:15:47.360> the<01:15:47.600> user<01:15:47.840> is<01:15:48.000> like," + }, + { + "start": 4548.229, + "duration": 0.0, + "text": "program. In that case, the user is like," + }, + { + "start": 4548.239, + "duration": 0.0, + "text": "program. In that case, the user is like, I'm<01:15:48.480> going<01:15:48.560> to<01:15:48.640> view<01:15:48.800> this<01:15:49.040> path<01:15:49.440> and<01:15:49.600> the" + }, + { + "start": 4549.75, + "duration": 0.0, + "text": "I'm going to view this path and the" + }, + { + "start": 4549.76, + "duration": 0.0, + "text": "I'm going to view this path and the program<01:15:50.080> produces<01:15:50.400> a<01:15:50.560> UI.<01:15:51.199> If<01:15:51.360> the<01:15:51.520> code<01:15:51.679> is" + }, + { + "start": 4551.83, + "duration": 0.0, + "text": "program produces a UI. If the code is" + }, + { + "start": 4551.84, + "duration": 0.0, + "text": "program produces a UI. If the code is written<01:15:52.080> exactly<01:15:52.480> like<01:15:52.719> this,<01:15:53.120> then<01:15:53.360> the<01:15:53.520> UI" + }, + { + "start": 4553.83, + "duration": 0.0, + "text": "written exactly like this, then the UI" + }, + { + "start": 4553.84, + "duration": 0.0, + "text": "written exactly like this, then the UI path<01:15:54.080> is<01:15:54.480> just<01:15:54.800> completely<01:15:55.280> wound<01:15:55.600> together" + }, + { + "start": 4555.83, + "duration": 0.0, + "text": "path is just completely wound together" + }, + { + "start": 4555.84, + "duration": 0.0, + "text": "path is just completely wound together with<01:15:56.000> the<01:15:56.159> idea<01:15:56.560> of<01:15:56.800> pulling<01:15:57.120> the<01:15:57.280> data<01:15:57.440> from" + }, + { + "start": 4557.51, + "duration": 0.0, + "text": "with the idea of pulling the data from" + }, + { + "start": 4557.52, + "duration": 0.0, + "text": "with the idea of pulling the data from the<01:15:57.679> file<01:15:57.920> system.<01:15:58.400> Now,<01:15:58.640> a<01:15:58.800> contentbased" + }, + { + "start": 4559.43, + "duration": 0.0, + "text": "the file system. Now, a contentbased" + }, + { + "start": 4559.44, + "duration": 0.0, + "text": "the file system. Now, a contentbased viewing<01:15:59.840> program<01:16:00.640> produces<01:16:01.040> a<01:16:01.199> UI" + }, + { + "start": 4562.79, + "duration": 0.0, + "text": "viewing program produces a UI" + }, + { + "start": 4562.8, + "duration": 0.0, + "text": "viewing program produces a UI given<01:16:03.120> some<01:16:03.280> blob<01:16:03.600> of<01:16:03.760> data<01:16:04.640> whether<01:16:04.880> it's" + }, + { + "start": 4565.11, + "duration": 0.0, + "text": "given some blob of data whether it's" + }, + { + "start": 4565.12, + "duration": 0.0, + "text": "given some blob of data whether it's read<01:16:05.280> from<01:16:05.360> the<01:16:05.520> file<01:16:05.760> system<01:16:06.000> or<01:16:06.239> from" + }, + { + "start": 4566.47, + "duration": 0.0, + "text": "read from the file system or from" + }, + { + "start": 4566.48, + "duration": 0.0, + "text": "read from the file system or from somewhere<01:16:06.800> else.<01:16:07.600> So<01:16:07.760> the<01:16:08.000> input<01:16:08.320> is<01:16:08.480> the<01:16:08.719> data" + }, + { + "start": 4569.03, + "duration": 0.0, + "text": "somewhere else. So the input is the data" + }, + { + "start": 4569.04, + "duration": 0.0, + "text": "somewhere else. So the input is the data instead<01:16:09.360> of<01:16:09.440> the<01:16:09.679> path<01:16:09.920> to<01:16:10.080> the<01:16:10.239> data<01:16:11.120> since" + }, + { + "start": 4571.35, + "duration": 0.0, + "text": "instead of the path to the data since" + }, + { + "start": 4571.36, + "duration": 0.0, + "text": "instead of the path to the data since the<01:16:11.600> path<01:16:11.840> is<01:16:12.080> coupled<01:16:12.400> to<01:16:12.480> the<01:16:12.640> file<01:16:12.880> system." + }, + { + "start": 4573.99, + "duration": 0.0, + "text": "the path is coupled to the file system." + }, + { + "start": 4574.0, + "duration": 0.0, + "text": "the path is coupled to the file system. Now<01:16:14.239> we<01:16:14.480> know<01:16:14.640> that<01:16:14.880> in<01:16:15.040> the<01:16:15.120> debugger<01:16:15.840> the" + }, + { + "start": 4576.229, + "duration": 0.0, + "text": "Now we know that in the debugger the" + }, + { + "start": 4576.239, + "duration": 0.0, + "text": "Now we know that in the debugger the user<01:16:16.640> can<01:16:16.800> refer<01:16:17.120> to<01:16:17.520> content<01:16:18.400> using<01:16:18.719> an" + }, + { + "start": 4578.87, + "duration": 0.0, + "text": "user can refer to content using an" + }, + { + "start": 4578.88, + "duration": 0.0, + "text": "user can refer to content using an evaluation." + }, + { + "start": 4581.75, + "duration": 0.0, + "text": "evaluation." + }, + { + "start": 4581.76, + "duration": 0.0, + "text": "evaluation. So<01:16:22.000> let's<01:16:22.159> evaluate<01:16:22.800> uh<01:16:22.960> let's<01:16:23.199> let's<01:16:23.600> um" + }, + { + "start": 4584.07, + "duration": 0.0, + "text": "So let's evaluate uh let's let's um" + }, + { + "start": 4584.08, + "duration": 0.0, + "text": "So let's evaluate uh let's let's um imagine<01:16:24.400> what<01:16:24.560> we<01:16:24.719> need<01:16:24.880> in<01:16:25.040> order<01:16:25.199> to<01:16:25.440> build<01:16:25.920> a" + }, + { + "start": 4586.149, + "duration": 0.0, + "text": "imagine what we need in order to build a" + }, + { + "start": 4586.159, + "duration": 0.0, + "text": "imagine what we need in order to build a bit<01:16:26.400> map<01:16:26.640> viewer.<01:16:27.760> The<01:16:27.920> user<01:16:28.159> specifies<01:16:28.640> some" + }, + { + "start": 4588.79, + "duration": 0.0, + "text": "bit map viewer. The user specifies some" + }, + { + "start": 4588.8, + "duration": 0.0, + "text": "bit map viewer. The user specifies some evaluation,<01:16:29.679> some<01:16:29.920> visualizer<01:16:30.400> parameters" + }, + { + "start": 4591.11, + "duration": 0.0, + "text": "evaluation, some visualizer parameters" + }, + { + "start": 4591.12, + "duration": 0.0, + "text": "evaluation, some visualizer parameters and<01:16:31.280> we<01:16:31.520> need<01:16:31.600> to<01:16:31.760> map<01:16:32.000> that<01:16:32.719> uh<01:16:33.040> to<01:16:33.360> some<01:16:33.600> data" + }, + { + "start": 4593.75, + "duration": 0.0, + "text": "and we need to map that uh to some data" + }, + { + "start": 4593.76, + "duration": 0.0, + "text": "and we need to map that uh to some data and<01:16:34.000> present<01:16:34.239> that<01:16:34.400> as<01:16:34.560> a<01:16:34.719> texture<01:16:35.040> somehow." + }, + { + "start": 4595.99, + "duration": 0.0, + "text": "and present that as a texture somehow." + }, + { + "start": 4596.0, + "duration": 0.0, + "text": "and present that as a texture somehow. that<01:16:36.239> might<01:16:36.480> require<01:16:36.880> like" + }, + { + "start": 4599.03, + "duration": 0.0, + "text": "that might require like" + }, + { + "start": 4599.04, + "duration": 0.0, + "text": "that might require like uploading<01:16:39.520> the<01:16:39.760> data<01:16:39.920> to<01:16:40.080> the<01:16:40.239> GPU<01:16:40.719> and" + }, + { + "start": 4601.03, + "duration": 0.0, + "text": "uploading the data to the GPU and" + }, + { + "start": 4601.04, + "duration": 0.0, + "text": "uploading the data to the GPU and obtaining<01:16:41.360> a<01:16:41.520> handle<01:16:41.840> to<01:16:41.920> a<01:16:42.080> texture<01:16:42.800> and<01:16:42.960> then" + }, + { + "start": 4603.11, + "duration": 0.0, + "text": "obtaining a handle to a texture and then" + }, + { + "start": 4603.12, + "duration": 0.0, + "text": "obtaining a handle to a texture and then we<01:16:43.280> render<01:16:43.679> with<01:16:43.840> that<01:16:44.080> texture." + }, + { + "start": 4605.59, + "duration": 0.0, + "text": "we render with that texture." + }, + { + "start": 4605.6, + "duration": 0.0, + "text": "we render with that texture. Now<01:16:45.840> to<01:16:46.000> do<01:16:46.080> that<01:16:46.239> we<01:16:46.400> might<01:16:46.560> need<01:16:46.640> to<01:16:46.800> do" + }, + { + "start": 4607.35, + "duration": 0.0, + "text": "Now to do that we might need to do" + }, + { + "start": 4607.36, + "duration": 0.0, + "text": "Now to do that we might need to do something<01:16:47.600> like<01:16:47.760> these<01:16:48.080> steps<01:16:48.480> like<01:16:48.640> given" + }, + { + "start": 4608.95, + "duration": 0.0, + "text": "something like these steps like given" + }, + { + "start": 4608.96, + "duration": 0.0, + "text": "something like these steps like given some<01:16:49.120> evaluation<01:16:49.600> you<01:16:49.840> extract<01:16:50.159> base<01:16:50.480> address" + }, + { + "start": 4611.189, + "duration": 0.0, + "text": "some evaluation you extract base address" + }, + { + "start": 4611.199, + "duration": 0.0, + "text": "some evaluation you extract base address and<01:16:51.360> a<01:16:51.600> space<01:16:52.719> you<01:16:52.880> extract<01:16:53.280> some<01:16:53.440> memory<01:16:53.840> size" + }, + { + "start": 4615.189, + "duration": 0.0, + "text": "and a space you extract some memory size" + }, + { + "start": 4615.199, + "duration": 0.0, + "text": "and a space you extract some memory size which<01:16:55.360> you<01:16:55.520> would<01:16:55.600> get<01:16:55.760> from<01:16:55.920> the<01:16:56.080> visualizer" + }, + { + "start": 4617.189, + "duration": 0.0, + "text": "which you would get from the visualizer" + }, + { + "start": 4617.199, + "duration": 0.0, + "text": "which you would get from the visualizer things<01:16:57.600> because<01:16:58.000> specify<01:16:58.400> the<01:16:58.560> dimensions" + }, + { + "start": 4618.87, + "duration": 0.0, + "text": "things because specify the dimensions" + }, + { + "start": 4618.88, + "duration": 0.0, + "text": "things because specify the dimensions the<01:16:59.040> format<01:16:59.280> you<01:16:59.440> can<01:16:59.520> infer<01:16:59.840> the<01:17:00.000> memory<01:17:00.239> size" + }, + { + "start": 4621.189, + "duration": 0.0, + "text": "the format you can infer the memory size" + }, + { + "start": 4621.199, + "duration": 0.0, + "text": "the format you can infer the memory size you<01:17:01.440> need<01:17:01.520> to<01:17:01.679> read<01:17:01.840> the<01:17:02.000> memory<01:17:02.239> from<01:17:02.320> the" + }, + { + "start": 4622.47, + "duration": 0.0, + "text": "you need to read the memory from the" + }, + { + "start": 4622.48, + "duration": 0.0, + "text": "you need to read the memory from the space<01:17:02.719> and<01:17:02.960> you<01:17:03.040> need<01:17:03.199> to<01:17:03.280> upload<01:17:03.600> the<01:17:03.840> memory" + }, + { + "start": 4624.07, + "duration": 0.0, + "text": "space and you need to upload the memory" + }, + { + "start": 4624.08, + "duration": 0.0, + "text": "space and you need to upload the memory to<01:17:04.159> the<01:17:04.320> GPU<01:17:04.719> storage<01:17:05.120> right" + }, + { + "start": 4627.189, + "duration": 0.0, + "text": "to the GPU storage right" + }, + { + "start": 4627.199, + "duration": 0.0, + "text": "to the GPU storage right now<01:17:08.560> the<01:17:08.800> naive<01:17:09.120> implementation<01:17:09.520> of<01:17:09.679> this" + }, + { + "start": 4629.83, + "duration": 0.0, + "text": "now the naive implementation of this" + }, + { + "start": 4629.84, + "duration": 0.0, + "text": "now the naive implementation of this would<01:17:10.000> just<01:17:10.239> put<01:17:10.400> this<01:17:10.560> straight<01:17:10.800> up<01:17:11.440> into<01:17:11.760> the" + }, + { + "start": 4631.91, + "duration": 0.0, + "text": "would just put this straight up into the" + }, + { + "start": 4631.92, + "duration": 0.0, + "text": "would just put this straight up into the into<01:17:12.159> the<01:17:12.320> UI<01:17:12.640> build<01:17:13.120> right<01:17:14.480> the<01:17:14.640> UI<01:17:14.880> is<01:17:15.040> just" + }, + { + "start": 4635.27, + "duration": 0.0, + "text": "into the UI build right the UI is just" + }, + { + "start": 4635.28, + "duration": 0.0, + "text": "into the UI build right the UI is just going<01:17:15.520> along.<01:17:15.760> It's<01:17:15.920> like<01:17:16.080> building<01:17:16.239> buttons" + }, + { + "start": 4636.55, + "duration": 0.0, + "text": "going along. It's like building buttons" + }, + { + "start": 4636.56, + "duration": 0.0, + "text": "going along. It's like building buttons and<01:17:16.719> stuff<01:17:16.800> and<01:17:16.960> it's<01:17:17.199> like<01:17:17.520> need<01:17:17.679> to<01:17:17.760> build<01:17:17.840> a" + }, + { + "start": 4637.91, + "duration": 0.0, + "text": "and stuff and it's like need to build a" + }, + { + "start": 4637.92, + "duration": 0.0, + "text": "and stuff and it's like need to build a bit<01:17:18.159> map<01:17:18.400> viewer.<01:17:18.880> Let's<01:17:19.199> like<01:17:19.360> get<01:17:19.600> the<01:17:19.679> base" + }, + { + "start": 4639.99, + "duration": 0.0, + "text": "bit map viewer. Let's like get the base" + }, + { + "start": 4640.0, + "duration": 0.0, + "text": "bit map viewer. Let's like get the base address,<01:17:20.400> the<01:17:20.640> space,<01:17:21.120> get<01:17:21.360> how<01:17:21.520> many<01:17:21.679> bytes<01:17:21.920> I" + }, + { + "start": 4642.07, + "duration": 0.0, + "text": "address, the space, get how many bytes I" + }, + { + "start": 4642.08, + "duration": 0.0, + "text": "address, the space, get how many bytes I need<01:17:22.159> to<01:17:22.239> read,<01:17:22.480> read<01:17:22.719> all<01:17:22.800> the<01:17:22.960> memory<01:17:23.199> and" + }, + { + "start": 4643.35, + "duration": 0.0, + "text": "need to read, read all the memory and" + }, + { + "start": 4643.36, + "duration": 0.0, + "text": "need to read, read all the memory and then<01:17:23.520> upload<01:17:23.840> it<01:17:23.920> and<01:17:24.080> then<01:17:24.239> get<01:17:24.400> a<01:17:24.560> texture" + }, + { + "start": 4644.87, + "duration": 0.0, + "text": "then upload it and then get a texture" + }, + { + "start": 4644.88, + "duration": 0.0, + "text": "then upload it and then get a texture handle.<01:17:26.080> Um,<01:17:26.960> so<01:17:27.120> that's<01:17:27.360> the<01:17:27.520> naive" + }, + { + "start": 4647.83, + "duration": 0.0, + "text": "handle. Um, so that's the naive" + }, + { + "start": 4647.84, + "duration": 0.0, + "text": "handle. Um, so that's the naive implementation.<01:17:28.320> You<01:17:28.400> just<01:17:28.560> do<01:17:28.640> that<01:17:28.800> all<01:17:28.960> on" + }, + { + "start": 4649.03, + "duration": 0.0, + "text": "implementation. You just do that all on" + }, + { + "start": 4649.04, + "duration": 0.0, + "text": "implementation. You just do that all on the<01:17:29.120> UI<01:17:29.440> thread.<01:17:30.320> Um,<01:17:31.040> you<01:17:31.280> run<01:17:31.440> into<01:17:31.600> a" + }, + { + "start": 4651.75, + "duration": 0.0, + "text": "the UI thread. Um, you run into a" + }, + { + "start": 4651.76, + "duration": 0.0, + "text": "the UI thread. Um, you run into a problem<01:17:31.920> with<01:17:32.080> that<01:17:32.800> unsurprisingly,<01:17:33.920> which" + }, + { + "start": 4654.07, + "duration": 0.0, + "text": "problem with that unsurprisingly, which" + }, + { + "start": 4654.08, + "duration": 0.0, + "text": "problem with that unsurprisingly, which is<01:17:34.239> that<01:17:34.400> the<01:17:34.560> size<01:17:34.719> of<01:17:34.800> this<01:17:35.040> data<01:17:35.199> is" + }, + { + "start": 4655.35, + "duration": 0.0, + "text": "is that the size of this data is" + }, + { + "start": 4655.36, + "duration": 0.0, + "text": "is that the size of this data is unbounded." + }, + { + "start": 4657.43, + "duration": 0.0, + "text": "unbounded." + }, + { + "start": 4657.44, + "duration": 0.0, + "text": "unbounded. You<01:17:37.600> have<01:17:37.760> very<01:17:38.000> few<01:17:38.239> constraints<01:17:38.640> about<01:17:38.880> how" + }, + { + "start": 4659.11, + "duration": 0.0, + "text": "You have very few constraints about how" + }, + { + "start": 4659.12, + "duration": 0.0, + "text": "You have very few constraints about how large<01:17:39.440> this<01:17:39.679> can<01:17:39.840> actually<01:17:40.080> be.<01:17:41.199> um<01:17:42.400> which" + }, + { + "start": 4662.709, + "duration": 0.0, + "text": "large this can actually be. um which" + }, + { + "start": 4662.719, + "duration": 0.0, + "text": "large this can actually be. um which also<01:17:42.960> means" + }, + { + "start": 4664.709, + "duration": 0.0, + "text": "also means" + }, + { + "start": 4664.719, + "duration": 0.0, + "text": "also means that<01:17:45.040> is<01:17:45.199> unbounded.<01:17:46.159> These<01:17:46.480> two<01:17:46.640> things<01:17:46.719> are" + }, + { + "start": 4666.87, + "duration": 0.0, + "text": "that is unbounded. These two things are" + }, + { + "start": 4666.88, + "duration": 0.0, + "text": "that is unbounded. These two things are unbounded.<01:17:47.760> So<01:17:48.320> remember<01:17:48.719> like<01:17:49.120> everything" + }, + { + "start": 4669.51, + "duration": 0.0, + "text": "unbounded. So remember like everything" + }, + { + "start": 4669.52, + "duration": 0.0, + "text": "unbounded. So remember like everything up<01:17:49.679> until<01:17:49.920> this<01:17:50.159> point<01:17:50.480> I've<01:17:50.719> been<01:17:50.880> like" + }, + { + "start": 4671.03, + "duration": 0.0, + "text": "up until this point I've been like" + }, + { + "start": 4671.04, + "duration": 0.0, + "text": "up until this point I've been like talking<01:17:51.280> about<01:17:51.360> how<01:17:51.520> to<01:17:51.679> window<01:17:51.920> a<01:17:52.159> watch" + }, + { + "start": 4672.39, + "duration": 0.0, + "text": "talking about how to window a watch" + }, + { + "start": 4672.4, + "duration": 0.0, + "text": "talking about how to window a watch tree.<01:17:52.640> I've<01:17:52.880> talked<01:17:53.040> about<01:17:53.440> how<01:17:53.679> to<01:17:53.760> like" + }, + { + "start": 4673.99, + "duration": 0.0, + "text": "tree. I've talked about how to like" + }, + { + "start": 4674.0, + "duration": 0.0, + "text": "tree. I've talked about how to like scope<01:17:54.320> down<01:17:54.480> what<01:17:54.640> the<01:17:54.800> debugger<01:17:55.120> is<01:17:55.199> looking" + }, + { + "start": 4675.35, + "duration": 0.0, + "text": "scope down what the debugger is looking" + }, + { + "start": 4675.36, + "duration": 0.0, + "text": "scope down what the debugger is looking at<01:17:55.520> because<01:17:55.679> otherwise<01:17:55.920> our<01:17:56.159> debugger<01:17:56.480> UI<01:17:56.719> is" + }, + { + "start": 4676.79, + "duration": 0.0, + "text": "at because otherwise our debugger UI is" + }, + { + "start": 4676.8, + "duration": 0.0, + "text": "at because otherwise our debugger UI is going<01:17:56.880> to<01:17:57.040> be<01:17:57.280> going<01:17:57.440> to<01:17:57.520> have<01:17:57.679> way<01:17:57.920> too<01:17:58.080> much" + }, + { + "start": 4678.229, + "duration": 0.0, + "text": "going to be going to have way too much" + }, + { + "start": 4678.239, + "duration": 0.0, + "text": "going to be going to have way too much stuff<01:17:58.400> to<01:17:58.560> do.<01:17:58.960> You've<01:17:59.280> got<01:17:59.440> just<01:18:00.080> so<01:18:00.320> much" + }, + { + "start": 4680.39, + "duration": 0.0, + "text": "stuff to do. You've got just so much" + }, + { + "start": 4680.4, + "duration": 0.0, + "text": "stuff to do. You've got just so much memory<01:18:00.719> to<01:18:00.880> read,<01:18:01.120> so<01:18:01.280> much<01:18:01.440> stuff<01:18:01.600> to<01:18:01.760> build." + }, + { + "start": 4682.55, + "duration": 0.0, + "text": "memory to read, so much stuff to build." + }, + { + "start": 4682.56, + "duration": 0.0, + "text": "memory to read, so much stuff to build. All<01:18:03.120> like<01:18:03.679> half<01:18:04.000> this<01:18:04.159> talk<01:18:04.480> has<01:18:04.719> really<01:18:04.880> been" + }, + { + "start": 4685.03, + "duration": 0.0, + "text": "All like half this talk has really been" + }, + { + "start": 4685.04, + "duration": 0.0, + "text": "All like half this talk has really been about<01:18:05.520> how<01:18:05.679> do<01:18:05.760> I<01:18:06.000> scope<01:18:06.320> this<01:18:06.560> down?<01:18:07.199> How<01:18:07.360> do<01:18:07.440> I" + }, + { + "start": 4687.59, + "duration": 0.0, + "text": "about how do I scope this down? How do I" + }, + { + "start": 4687.6, + "duration": 0.0, + "text": "about how do I scope this down? How do I not<01:18:07.840> do<01:18:07.920> all<01:18:08.159> that<01:18:08.320> work?<01:18:09.199> And<01:18:09.360> I've<01:18:09.600> just<01:18:09.760> like" + }, + { + "start": 4689.99, + "duration": 0.0, + "text": "not do all that work? And I've just like" + }, + { + "start": 4690.0, + "duration": 0.0, + "text": "not do all that work? And I've just like completely<01:18:10.400> eliminated<01:18:10.880> all<01:18:11.120> that<01:18:11.199> with<01:18:11.360> this" + }, + { + "start": 4691.59, + "duration": 0.0, + "text": "completely eliminated all that with this" + }, + { + "start": 4691.6, + "duration": 0.0, + "text": "completely eliminated all that with this step,<01:18:12.719> right?" + }, + { + "start": 4694.95, + "duration": 0.0, + "text": "step, right?" + }, + { + "start": 4694.96, + "duration": 0.0, + "text": "step, right? Furthermore,<01:18:15.679> this<01:18:15.840> isn't<01:18:16.080> a<01:18:16.239> windowed" + }, + { + "start": 4696.709, + "duration": 0.0, + "text": "Furthermore, this isn't a windowed" + }, + { + "start": 4696.719, + "duration": 0.0, + "text": "Furthermore, this isn't a windowed problem.<01:18:17.120> Like<01:18:17.280> you<01:18:17.440> can't<01:18:17.600> really<01:18:17.840> window" + }, + { + "start": 4698.229, + "duration": 0.0, + "text": "problem. Like you can't really window" + }, + { + "start": 4698.239, + "duration": 0.0, + "text": "problem. Like you can't really window this<01:18:18.400> part.<01:18:19.600> Um,<01:18:20.719> doesn't<01:18:20.960> really<01:18:21.120> fit<01:18:21.280> the" + }, + { + "start": 4701.43, + "duration": 0.0, + "text": "this part. Um, doesn't really fit the" + }, + { + "start": 4701.44, + "duration": 0.0, + "text": "this part. Um, doesn't really fit the pattern.<01:18:22.400> Uh,<01:18:23.040> other<01:18:23.360> visualizers,<01:18:24.000> similar" + }, + { + "start": 4704.39, + "duration": 0.0, + "text": "pattern. Uh, other visualizers, similar" + }, + { + "start": 4704.4, + "duration": 0.0, + "text": "pattern. Uh, other visualizers, similar problem.<01:18:24.880> To<01:18:25.040> visualize<01:18:25.440> text,<01:18:26.080> pull<01:18:26.239> it<01:18:26.400> all" + }, + { + "start": 4706.55, + "duration": 0.0, + "text": "problem. To visualize text, pull it all" + }, + { + "start": 4706.56, + "duration": 0.0, + "text": "problem. To visualize text, pull it all down.<01:18:27.120> Disassembly,<01:18:27.760> pull<01:18:27.840> it<01:18:27.920> all<01:18:28.080> down." + }, + { + "start": 4708.229, + "duration": 0.0, + "text": "down. Disassembly, pull it all down." + }, + { + "start": 4708.239, + "duration": 0.0, + "text": "down. Disassembly, pull it all down. Geometry,<01:18:28.800> pull<01:18:28.960> it<01:18:29.040> all<01:18:29.280> down.<01:18:30.080> Um,<01:18:31.040> pointer" + }, + { + "start": 4711.59, + "duration": 0.0, + "text": "Geometry, pull it all down. Um, pointer" + }, + { + "start": 4711.6, + "duration": 0.0, + "text": "Geometry, pull it all down. Um, pointer visualizer,<01:18:32.320> you<01:18:32.480> got<01:18:32.640> to<01:18:32.719> like<01:18:32.960> walk<01:18:33.199> the" + }, + { + "start": 4713.35, + "duration": 0.0, + "text": "visualizer, you got to like walk the" + }, + { + "start": 4713.36, + "duration": 0.0, + "text": "visualizer, you got to like walk the pointer<01:18:33.760> graph<01:18:34.000> and<01:18:34.159> build<01:18:34.320> it<01:18:34.560> up.<01:18:35.760> And<01:18:35.920> so" + }, + { + "start": 4716.07, + "duration": 0.0, + "text": "pointer graph and build it up. And so" + }, + { + "start": 4716.08, + "duration": 0.0, + "text": "pointer graph and build it up. And so you<01:18:36.239> need<01:18:36.400> this<01:18:36.560> like<01:18:36.800> large<01:18:37.120> data" + }, + { + "start": 4717.43, + "duration": 0.0, + "text": "you need this like large data" + }, + { + "start": 4717.44, + "duration": 0.0, + "text": "you need this like large data preparation<01:18:38.000> pass<01:18:38.800> before<01:18:39.120> you<01:18:39.360> actually<01:18:39.520> go" + }, + { + "start": 4719.669, + "duration": 0.0, + "text": "preparation pass before you actually go" + }, + { + "start": 4719.679, + "duration": 0.0, + "text": "preparation pass before you actually go and<01:18:39.920> build<01:18:40.080> the<01:18:40.239> visualizer<01:18:40.800> UI.<01:18:41.600> Um<01:18:43.040> so" + }, + { + "start": 4723.43, + "duration": 0.0, + "text": "and build the visualizer UI. Um so" + }, + { + "start": 4723.44, + "duration": 0.0, + "text": "and build the visualizer UI. Um so putting<01:18:43.679> this<01:18:43.920> non-winded<01:18:44.560> stuff<01:18:44.719> in<01:18:44.880> the<01:18:45.040> UI" + }, + { + "start": 4725.35, + "duration": 0.0, + "text": "putting this non-winded stuff in the UI" + }, + { + "start": 4725.36, + "duration": 0.0, + "text": "putting this non-winded stuff in the UI build<01:18:45.520> just<01:18:45.760> compromises<01:18:46.239> everything.<01:18:46.560> It" + }, + { + "start": 4726.709, + "duration": 0.0, + "text": "build just compromises everything. It" + }, + { + "start": 4726.719, + "duration": 0.0, + "text": "build just compromises everything. It just<01:18:46.880> ruins<01:18:47.199> everything<01:18:47.520> else.<01:18:48.080> If<01:18:48.320> you<01:18:48.400> do" + }, + { + "start": 4728.47, + "duration": 0.0, + "text": "just ruins everything else. If you do" + }, + { + "start": 4728.48, + "duration": 0.0, + "text": "just ruins everything else. If you do this<01:18:48.719> it's<01:18:48.960> like<01:18:49.600> nothing<01:18:49.920> was<01:18:50.159> gained." + }, + { + "start": 4733.03, + "duration": 0.0, + "text": "this it's like nothing was gained." + }, + { + "start": 4733.04, + "duration": 0.0, + "text": "this it's like nothing was gained. So<01:18:53.280> instead" + }, + { + "start": 4735.99, + "duration": 0.0, + "text": "So instead" + }, + { + "start": 4736.0, + "duration": 0.0, + "text": "So instead the<01:18:56.239> evaluation<01:18:56.800> and<01:18:56.960> UI<01:18:57.360> paths<01:18:58.239> use<01:18:58.719> light" + }, + { + "start": 4739.11, + "duration": 0.0, + "text": "the evaluation and UI paths use light" + }, + { + "start": 4739.12, + "duration": 0.0, + "text": "the evaluation and UI paths use light keys<01:18:59.520> to<01:18:59.679> the<01:18:59.840> data.<01:19:00.159> So<01:19:00.320> they<01:19:00.560> say<01:19:01.120> I've<01:19:01.440> got" + }, + { + "start": 4741.59, + "duration": 0.0, + "text": "keys to the data. So they say I've got" + }, + { + "start": 4741.6, + "duration": 0.0, + "text": "keys to the data. So they say I've got some<01:19:01.840> light<01:19:02.159> key<01:19:02.400> which<01:19:02.640> can<01:19:03.120> which<01:19:03.360> can<01:19:03.520> be" + }, + { + "start": 4743.669, + "duration": 0.0, + "text": "some light key which can which can be" + }, + { + "start": 4743.679, + "duration": 0.0, + "text": "some light key which can which can be used<01:19:03.840> to<01:19:04.000> get<01:19:04.159> to<01:19:04.320> the<01:19:04.480> data" + }, + { + "start": 4746.55, + "duration": 0.0, + "text": "used to get to the data" + }, + { + "start": 4746.56, + "duration": 0.0, + "text": "used to get to the data which<01:19:06.800> this<01:19:06.960> is<01:19:07.120> what<01:19:07.360> a<01:19:07.840> like<01:19:08.560> when<01:19:08.719> you<01:19:08.880> use<01:19:09.040> a" + }, + { + "start": 4749.51, + "duration": 0.0, + "text": "which this is what a like when you use a" + }, + { + "start": 4749.52, + "duration": 0.0, + "text": "which this is what a like when you use a file<01:19:09.840> system<01:19:10.080> based<01:19:10.400> program<01:19:10.880> this<01:19:10.960> is<01:19:11.040> what" + }, + { + "start": 4751.189, + "duration": 0.0, + "text": "file system based program this is what" + }, + { + "start": 4751.199, + "duration": 0.0, + "text": "file system based program this is what the<01:19:11.360> path<01:19:11.520> is<01:19:11.760> right<01:19:11.840> you've<01:19:12.080> got<01:19:12.159> some<01:19:12.320> light" + }, + { + "start": 4752.63, + "duration": 0.0, + "text": "the path is right you've got some light" + }, + { + "start": 4752.64, + "duration": 0.0, + "text": "the path is right you've got some light key<01:19:13.040> it's<01:19:13.360> much<01:19:13.520> lighter<01:19:13.840> than<01:19:13.920> the<01:19:14.080> data" + }, + { + "start": 4754.31, + "duration": 0.0, + "text": "key it's much lighter than the data" + }, + { + "start": 4754.32, + "duration": 0.0, + "text": "key it's much lighter than the data which<01:19:14.480> you<01:19:14.719> can<01:19:14.880> use<01:19:15.040> to<01:19:15.280> get<01:19:15.440> to<01:19:15.600> the<01:19:15.760> data<01:19:16.800> and" + }, + { + "start": 4756.95, + "duration": 0.0, + "text": "which you can use to get to the data and" + }, + { + "start": 4756.96, + "duration": 0.0, + "text": "which you can use to get to the data and then<01:19:17.280> the<01:19:17.600> UI<01:19:17.920> thread<01:19:18.159> wants<01:19:18.400> to<01:19:18.480> sort<01:19:18.640> of<01:19:18.800> use" + }, + { + "start": 4758.95, + "duration": 0.0, + "text": "then the UI thread wants to sort of use" + }, + { + "start": 4758.96, + "duration": 0.0, + "text": "then the UI thread wants to sort of use that<01:19:19.199> key<01:19:19.760> and<01:19:19.920> sort<01:19:20.080> of<01:19:20.159> like<01:19:20.480> tell<01:19:20.800> some" + }, + { + "start": 4761.03, + "duration": 0.0, + "text": "that key and sort of like tell some" + }, + { + "start": 4761.04, + "duration": 0.0, + "text": "that key and sort of like tell some system<01:19:21.360> it's<01:19:21.520> like<01:19:21.760> look<01:19:21.920> I've<01:19:22.159> got<01:19:22.480> got<01:19:22.719> this" + }, + { + "start": 4762.87, + "duration": 0.0, + "text": "system it's like look I've got got this" + }, + { + "start": 4762.88, + "duration": 0.0, + "text": "system it's like look I've got got this key<01:19:23.199> give<01:19:23.280> me<01:19:23.440> the<01:19:23.920> go<01:19:24.159> and<01:19:24.320> read<01:19:24.560> and<01:19:24.800> prepare" + }, + { + "start": 4765.11, + "duration": 0.0, + "text": "key give me the go and read and prepare" + }, + { + "start": 4765.12, + "duration": 0.0, + "text": "key give me the go and read and prepare this<01:19:25.280> data<01:19:25.520> for<01:19:25.679> my<01:19:25.840> visualizer<01:19:27.040> and<01:19:27.199> then" + }, + { + "start": 4767.43, + "duration": 0.0, + "text": "this data for my visualizer and then" + }, + { + "start": 4767.44, + "duration": 0.0, + "text": "this data for my visualizer and then when<01:19:27.679> it's<01:19:27.840> ready<01:19:28.080> I'll<01:19:28.320> build<01:19:28.480> the<01:19:28.640> UI<01:19:28.880> with" + }, + { + "start": 4769.03, + "duration": 0.0, + "text": "when it's ready I'll build the UI with" + }, + { + "start": 4769.04, + "duration": 0.0, + "text": "when it's ready I'll build the UI with it<01:19:29.440> Right?" + }, + { + "start": 4771.27, + "duration": 0.0, + "text": "it Right?" + }, + { + "start": 4771.28, + "duration": 0.0, + "text": "it Right? So<01:19:31.840> even<01:19:32.080> if<01:19:32.239> some<01:19:32.400> data<01:19:32.640> preparation<01:19:33.120> task" + }, + { + "start": 4773.59, + "duration": 0.0, + "text": "So even if some data preparation task" + }, + { + "start": 4773.6, + "duration": 0.0, + "text": "So even if some data preparation task takes<01:19:33.920> like<01:19:34.960> n<01:19:35.280> frames<01:19:35.679> to<01:19:35.840> actually<01:19:36.080> execute," + }, + { + "start": 4776.79, + "duration": 0.0, + "text": "takes like n frames to actually execute," + }, + { + "start": 4776.8, + "duration": 0.0, + "text": "takes like n frames to actually execute, the<01:19:36.960> debugger's<01:19:37.440> UI<01:19:37.760> can<01:19:38.000> continue<01:19:38.320> just" + }, + { + "start": 4778.47, + "duration": 0.0, + "text": "the debugger's UI can continue just" + }, + { + "start": 4778.48, + "duration": 0.0, + "text": "the debugger's UI can continue just going<01:19:38.719> along<01:19:39.040> smoothly." + }, + { + "start": 4781.75, + "duration": 0.0, + "text": "going along smoothly." + }, + { + "start": 4781.76, + "duration": 0.0, + "text": "going along smoothly. Very<01:19:42.000> simple<01:19:42.239> way<01:19:42.400> to<01:19:42.640> produce<01:19:42.880> a<01:19:43.040> light<01:19:43.280> key" + }, + { + "start": 4783.83, + "duration": 0.0, + "text": "Very simple way to produce a light key" + }, + { + "start": 4783.84, + "duration": 0.0, + "text": "Very simple way to produce a light key which<01:19:44.159> refers<01:19:44.560> to<01:19:44.800> some<01:19:45.040> data<01:19:45.280> uniquely" + }, + { + "start": 4787.11, + "duration": 0.0, + "text": "which refers to some data uniquely" + }, + { + "start": 4787.12, + "duration": 0.0, + "text": "which refers to some data uniquely is<01:19:47.280> to<01:19:47.440> take<01:19:47.600> a<01:19:47.760> hash<01:19:47.920> of<01:19:48.080> the<01:19:48.239> data.<01:19:48.880> So" + }, + { + "start": 4789.59, + "duration": 0.0, + "text": "is to take a hash of the data. So" + }, + { + "start": 4789.6, + "duration": 0.0, + "text": "is to take a hash of the data. So instead<01:19:49.920> of<01:19:50.080> reading<01:19:50.719> uh<01:19:50.880> all<01:19:51.040> the<01:19:51.280> data<01:19:51.520> for" + }, + { + "start": 4791.669, + "duration": 0.0, + "text": "instead of reading uh all the data for" + }, + { + "start": 4791.679, + "duration": 0.0, + "text": "instead of reading uh all the data for some<01:19:51.840> evaluation<01:19:52.400> every<01:19:52.640> frame,<01:19:54.000> you<01:19:54.159> map<01:19:54.400> it" + }, + { + "start": 4794.47, + "duration": 0.0, + "text": "some evaluation every frame, you map it" + }, + { + "start": 4794.48, + "duration": 0.0, + "text": "some evaluation every frame, you map it to<01:19:54.640> some<01:19:54.800> hash<01:19:55.120> of<01:19:55.280> the<01:19:55.440> data<01:19:56.239> which<01:19:56.400> can<01:19:56.640> serve" + }, + { + "start": 4796.79, + "duration": 0.0, + "text": "to some hash of the data which can serve" + }, + { + "start": 4796.8, + "duration": 0.0, + "text": "to some hash of the data which can serve as<01:19:56.880> the<01:19:57.040> unique<01:19:57.280> key<01:19:57.440> to<01:19:57.600> some<01:19:57.840> content.<01:19:59.120> So" + }, + { + "start": 4799.27, + "duration": 0.0, + "text": "as the unique key to some content. So" + }, + { + "start": 4799.28, + "duration": 0.0, + "text": "as the unique key to some content. So our<01:19:59.440> background<01:19:59.840> data<01:20:00.080> preparation<01:20:00.480> threads" + }, + { + "start": 4800.79, + "duration": 0.0, + "text": "our background data preparation threads" + }, + { + "start": 4800.8, + "duration": 0.0, + "text": "our background data preparation threads can<01:20:00.960> use<01:20:01.120> that<01:20:01.280> hash<01:20:01.920> to<01:20:02.159> obtain<01:20:02.480> the<01:20:02.719> data<01:20:02.960> and" + }, + { + "start": 4803.189, + "duration": 0.0, + "text": "can use that hash to obtain the data and" + }, + { + "start": 4803.199, + "duration": 0.0, + "text": "can use that hash to obtain the data and then<01:20:03.440> process<01:20:03.760> it<01:20:04.400> and<01:20:04.560> so<01:20:04.719> on." + }, + { + "start": 4809.199, + "duration": 0.0, + "text": "So<01:20:09.360> the<01:20:09.520> first<01:20:09.679> thing<01:20:09.840> we<01:20:10.000> need<01:20:10.159> to<01:20:10.320> do<01:20:10.960> uh<01:20:11.199> we" + }, + { + "start": 4811.51, + "duration": 0.0, + "text": "So the first thing we need to do uh we" + }, + { + "start": 4811.52, + "duration": 0.0, + "text": "So the first thing we need to do uh we need<01:20:11.679> to<01:20:11.840> do<01:20:12.080> that<01:20:12.640> is<01:20:12.719> just<01:20:12.960> a<01:20:13.120> cache<01:20:13.760> from<01:20:14.239> a" + }, + { + "start": 4814.31, + "duration": 0.0, + "text": "need to do that is just a cache from a" + }, + { + "start": 4814.32, + "duration": 0.0, + "text": "need to do that is just a cache from a hash<01:20:14.560> to<01:20:14.640> a<01:20:14.800> data<01:20:14.960> right<01:20:15.120> we've<01:20:15.280> got<01:20:15.360> some<01:20:15.600> data" + }, + { + "start": 4815.83, + "duration": 0.0, + "text": "hash to a data right we've got some data" + }, + { + "start": 4815.84, + "duration": 0.0, + "text": "hash to a data right we've got some data structure<01:20:16.400> in<01:20:16.640> our<01:20:16.800> program<01:20:17.040> which<01:20:17.280> says<01:20:17.679> hey" + }, + { + "start": 4817.91, + "duration": 0.0, + "text": "structure in our program which says hey" + }, + { + "start": 4817.92, + "duration": 0.0, + "text": "structure in our program which says hey look<01:20:18.080> you've<01:20:18.239> got<01:20:18.320> a<01:20:18.480> hash<01:20:18.800> here's<01:20:19.040> how<01:20:19.120> you" + }, + { + "start": 4819.189, + "duration": 0.0, + "text": "look you've got a hash here's how you" + }, + { + "start": 4819.199, + "duration": 0.0, + "text": "look you've got a hash here's how you get<01:20:19.360> the<01:20:19.440> data<01:20:19.600> for<01:20:19.760> the<01:20:19.920> hash<01:20:20.719> done." + }, + { + "start": 4823.03, + "duration": 0.0, + "text": "get the data for the hash done." + }, + { + "start": 4823.04, + "duration": 0.0, + "text": "get the data for the hash done. This<01:20:23.280> has<01:20:23.440> the<01:20:23.600> added<01:20:23.840> advantage<01:20:24.159> of<01:20:24.320> like" + }, + { + "start": 4824.55, + "duration": 0.0, + "text": "This has the added advantage of like" + }, + { + "start": 4824.56, + "duration": 0.0, + "text": "This has the added advantage of like this<01:20:24.719> is<01:20:24.880> dduplicating<01:20:25.600> everything,<01:20:25.920> right?" + }, + { + "start": 4826.07, + "duration": 0.0, + "text": "this is dduplicating everything, right?" + }, + { + "start": 4826.08, + "duration": 0.0, + "text": "this is dduplicating everything, right? If<01:20:26.239> you<01:20:26.320> hash<01:20:26.560> the<01:20:26.719> same<01:20:26.800> data<01:20:27.120> twice,<01:20:27.840> you<01:20:28.000> can" + }, + { + "start": 4828.31, + "duration": 0.0, + "text": "If you hash the same data twice, you can" + }, + { + "start": 4828.32, + "duration": 0.0, + "text": "If you hash the same data twice, you can trivially<01:20:28.800> see<01:20:28.960> that<01:20:29.120> when<01:20:29.280> you<01:20:29.440> implement" + }, + { + "start": 4829.669, + "duration": 0.0, + "text": "trivially see that when you implement" + }, + { + "start": 4829.679, + "duration": 0.0, + "text": "trivially see that when you implement this<01:20:29.840> data<01:20:30.080> structure.<01:20:30.400> It's<01:20:30.480> like,<01:20:30.640> oh," + }, + { + "start": 4830.79, + "duration": 0.0, + "text": "this data structure. It's like, oh," + }, + { + "start": 4830.8, + "duration": 0.0, + "text": "this data structure. It's like, oh, these<01:20:31.040> are<01:20:31.120> the<01:20:31.280> same<01:20:31.360> thing.<01:20:31.920> Um,<01:20:32.239> so<01:20:32.480> just," + }, + { + "start": 4832.87, + "duration": 0.0, + "text": "these are the same thing. Um, so just," + }, + { + "start": 4832.88, + "duration": 0.0, + "text": "these are the same thing. Um, so just, you<01:20:32.960> know,<01:20:33.120> don't<01:20:33.440> actually<01:20:33.679> store<01:20:33.920> it<01:20:34.080> twice." + }, + { + "start": 4835.669, + "duration": 0.0, + "text": "you know, don't actually store it twice." + }, + { + "start": 4835.679, + "duration": 0.0, + "text": "you know, don't actually store it twice. Um,<01:20:36.320> then<01:20:36.560> you<01:20:36.719> can<01:20:36.800> build<01:20:36.880> a<01:20:37.120> number<01:20:37.199> of<01:20:37.360> other" + }, + { + "start": 4837.51, + "duration": 0.0, + "text": "Um, then you can build a number of other" + }, + { + "start": 4837.52, + "duration": 0.0, + "text": "Um, then you can build a number of other caches<01:20:37.920> which<01:20:38.080> also<01:20:38.400> store<01:20:38.640> the<01:20:38.960> processed" + }, + { + "start": 4839.51, + "duration": 0.0, + "text": "caches which also store the processed" + }, + { + "start": 4839.52, + "duration": 0.0, + "text": "caches which also store the processed sort<01:20:39.679> of<01:20:39.840> data<01:20:40.239> representations." + }, + { + "start": 4841.75, + "duration": 0.0, + "text": "sort of data representations." + }, + { + "start": 4841.76, + "duration": 0.0, + "text": "sort of data representations. So<01:20:41.920> you<01:20:42.080> might<01:20:42.159> have<01:20:42.239> a<01:20:42.400> cache<01:20:42.719> which<01:20:43.120> uh<01:20:43.280> maps" + }, + { + "start": 4843.59, + "duration": 0.0, + "text": "So you might have a cache which uh maps" + }, + { + "start": 4843.6, + "duration": 0.0, + "text": "So you might have a cache which uh maps a<01:20:43.760> hash<01:20:44.000> and<01:20:44.080> a<01:20:44.239> parameters<01:20:44.560> to<01:20:44.719> a<01:20:44.880> texture" + }, + { + "start": 4845.99, + "duration": 0.0, + "text": "a hash and a parameters to a texture" + }, + { + "start": 4846.0, + "duration": 0.0, + "text": "a hash and a parameters to a texture hash<01:20:46.239> and<01:20:46.400> parameters<01:20:46.960> to<01:20:47.520> a<01:20:47.760> text<01:20:48.159> and<01:20:48.320> like<01:20:48.480> a" + }, + { + "start": 4848.63, + "duration": 0.0, + "text": "hash and parameters to a text and like a" + }, + { + "start": 4848.64, + "duration": 0.0, + "text": "hash and parameters to a text and like a parse<01:20:48.880> of<01:20:49.040> that<01:20:49.199> text<01:20:49.520> like<01:20:49.920> or<01:20:50.480> uh<01:20:50.640> sorry<01:20:51.040> not" + }, + { + "start": 4851.189, + "duration": 0.0, + "text": "parse of that text like or uh sorry not" + }, + { + "start": 4851.199, + "duration": 0.0, + "text": "parse of that text like or uh sorry not not<01:20:51.280> not<01:20:51.679> the<01:20:51.760> text<01:20:52.000> the<01:20:52.159> text<01:20:52.400> just<01:20:52.560> the<01:20:52.719> data" + }, + { + "start": 4852.87, + "duration": 0.0, + "text": "not not the text the text just the data" + }, + { + "start": 4852.88, + "duration": 0.0, + "text": "not not the text the text just the data but<01:20:53.040> the<01:20:53.280> the<01:20:53.520> the<01:20:54.000> textual<01:20:54.480> lex<01:20:54.719> and<01:20:54.960> parse<01:20:55.199> of" + }, + { + "start": 4855.35, + "duration": 0.0, + "text": "but the the the textual lex and parse of" + }, + { + "start": 4855.36, + "duration": 0.0, + "text": "but the the the textual lex and parse of the<01:20:55.440> data<01:20:56.000> got<01:20:56.239> some<01:20:56.400> cache<01:20:56.719> for<01:20:56.880> that" + }, + { + "start": 4860.4, + "duration": 0.0, + "text": "hash<01:21:00.800> parameters<01:21:01.120> to<01:21:01.280> some<01:21:01.360> vertex<01:21:01.679> and<01:21:01.840> index" + }, + { + "start": 4862.149, + "duration": 0.0, + "text": "hash parameters to some vertex and index" + }, + { + "start": 4862.159, + "duration": 0.0, + "text": "hash parameters to some vertex and index buffer" + }, + { + "start": 4864.39, + "duration": 0.0, + "text": "buffer" + }, + { + "start": 4864.4, + "duration": 0.0, + "text": "buffer and<01:21:04.640> then<01:21:04.800> our<01:21:04.960> UI<01:21:05.360> thread<01:21:06.080> when<01:21:06.239> it's" + }, + { + "start": 4866.47, + "duration": 0.0, + "text": "and then our UI thread when it's" + }, + { + "start": 4866.48, + "duration": 0.0, + "text": "and then our UI thread when it's building<01:21:06.719> a<01:21:06.880> UI<01:21:07.280> for<01:21:07.440> a<01:21:07.600> visualizer<01:21:08.320> can<01:21:08.560> just" + }, + { + "start": 4868.709, + "duration": 0.0, + "text": "building a UI for a visualizer can just" + }, + { + "start": 4868.719, + "duration": 0.0, + "text": "building a UI for a visualizer can just read<01:21:08.960> from<01:21:09.120> these<01:21:09.360> caches<01:21:09.760> without<01:21:10.080> doing<01:21:10.239> the" + }, + { + "start": 4870.47, + "duration": 0.0, + "text": "read from these caches without doing the" + }, + { + "start": 4870.48, + "duration": 0.0, + "text": "read from these caches without doing the data<01:21:10.719> processing<01:21:11.120> itself.<01:21:11.280> itself." + }, + { + "start": 4872.79, + "duration": 0.0, + "text": "data processing itself. itself." + }, + { + "start": 4872.8, + "duration": 0.0, + "text": "data processing itself. itself. So,<01:21:13.360> um,<01:21:13.520> when<01:21:13.679> you're<01:21:13.840> building<01:21:13.920> a<01:21:14.080> bit<01:21:14.320> map" + }, + { + "start": 4874.55, + "duration": 0.0, + "text": "So, um, when you're building a bit map" + }, + { + "start": 4874.56, + "duration": 0.0, + "text": "So, um, when you're building a bit map viewer,<01:21:14.960> you<01:21:15.199> just<01:21:16.239> read<01:21:16.560> you<01:21:16.800> just<01:21:16.960> read<01:21:17.120> from" + }, + { + "start": 4877.27, + "duration": 0.0, + "text": "viewer, you just read you just read from" + }, + { + "start": 4877.28, + "duration": 0.0, + "text": "viewer, you just read you just read from that<01:21:17.520> cache." + }, + { + "start": 4879.99, + "duration": 0.0, + "text": "that cache." + }, + { + "start": 4880.0, + "duration": 0.0, + "text": "that cache. When<01:21:20.159> you<01:21:20.239> build<01:21:20.400> a<01:21:20.560> text<01:21:20.800> viewer,<01:21:21.520> read<01:21:21.760> from" + }, + { + "start": 4881.83, + "duration": 0.0, + "text": "When you build a text viewer, read from" + }, + { + "start": 4881.84, + "duration": 0.0, + "text": "When you build a text viewer, read from the<01:21:22.000> text<01:21:22.239> cache.<01:21:23.120> When<01:21:23.360> you're<01:21:23.440> building<01:21:23.600> a" + }, + { + "start": 4883.75, + "duration": 0.0, + "text": "the text cache. When you're building a" + }, + { + "start": 4883.76, + "duration": 0.0, + "text": "the text cache. When you're building a memory<01:21:24.080> viewer,<01:21:24.640> there's<01:21:24.880> there's<01:21:25.120> no" + }, + { + "start": 4885.27, + "duration": 0.0, + "text": "memory viewer, there's there's no" + }, + { + "start": 4885.28, + "duration": 0.0, + "text": "memory viewer, there's there's no special<01:21:25.520> cache.<01:21:25.840> You<01:21:25.920> need<01:21:26.159> just<01:21:26.320> get<01:21:26.480> the" + }, + { + "start": 4886.63, + "duration": 0.0, + "text": "special cache. You need just get the" + }, + { + "start": 4886.64, + "duration": 0.0, + "text": "special cache. You need just get the data<01:21:26.880> from<01:21:27.120> the<01:21:27.280> from<01:21:27.440> the<01:21:27.600> hash<01:21:27.840> to<01:21:28.000> data" + }, + { + "start": 4888.31, + "duration": 0.0, + "text": "data from the from the hash to data" + }, + { + "start": 4888.32, + "duration": 0.0, + "text": "data from the from the hash to data cache.<01:21:28.960> And<01:21:29.120> then<01:21:29.520> when<01:21:29.840> you're<01:21:30.080> doing<01:21:30.400> a" + }, + { + "start": 4890.87, + "duration": 0.0, + "text": "cache. And then when you're doing a" + }, + { + "start": 4890.88, + "duration": 0.0, + "text": "cache. And then when you're doing a geometry<01:21:31.440> visualizer," + }, + { + "start": 4893.03, + "duration": 0.0, + "text": "geometry visualizer," + }, + { + "start": 4893.04, + "duration": 0.0, + "text": "geometry visualizer, unsurprisingly," + }, + { + "start": 4894.709, + "duration": 0.0, + "text": "unsurprisingly," + }, + { + "start": 4894.719, + "duration": 0.0, + "text": "unsurprisingly, everyone<01:21:35.040> can<01:21:35.280> tell,<01:21:35.760> you<01:21:36.000> just<01:21:36.159> read<01:21:36.400> from" + }, + { + "start": 4896.47, + "duration": 0.0, + "text": "everyone can tell, you just read from" + }, + { + "start": 4896.48, + "duration": 0.0, + "text": "everyone can tell, you just read from that<01:21:36.719> cache,<01:21:37.040> right?" + }, + { + "start": 4898.709, + "duration": 0.0, + "text": "that cache, right?" + }, + { + "start": 4898.719, + "duration": 0.0, + "text": "that cache, right? And<01:21:38.880> again,<01:21:39.120> instead<01:21:39.360> of<01:21:39.520> the<01:21:39.679> UI<01:21:40.000> thread" + }, + { + "start": 4900.31, + "duration": 0.0, + "text": "And again, instead of the UI thread" + }, + { + "start": 4900.32, + "duration": 0.0, + "text": "And again, instead of the UI thread doing<01:21:40.480> that<01:21:40.719> work,<01:21:41.199> you've<01:21:41.440> got<01:21:41.520> these" + }, + { + "start": 4901.669, + "duration": 0.0, + "text": "doing that work, you've got these" + }, + { + "start": 4901.679, + "duration": 0.0, + "text": "doing that work, you've got these background<01:21:42.080> work<01:21:42.239> threads<01:21:42.560> that<01:21:42.719> are<01:21:42.800> that" + }, + { + "start": 4903.03, + "duration": 0.0, + "text": "background work threads that are that" + }, + { + "start": 4903.04, + "duration": 0.0, + "text": "background work threads that are that are<01:21:43.120> filling<01:21:43.440> those<01:21:43.600> caches<01:21:44.080> as<01:21:44.320> needed.<01:21:45.600> So" + }, + { + "start": 4905.669, + "duration": 0.0, + "text": "are filling those caches as needed. So" + }, + { + "start": 4905.679, + "duration": 0.0, + "text": "are filling those caches as needed. So the<01:21:45.840> UI<01:21:46.159> thread<01:21:46.400> can<01:21:46.719> request<01:21:47.199> some<01:21:47.440> hash." + }, + { + "start": 4907.75, + "duration": 0.0, + "text": "the UI thread can request some hash." + }, + { + "start": 4907.76, + "duration": 0.0, + "text": "the UI thread can request some hash. It's<01:21:47.920> like,<01:21:48.400> look,<01:21:48.640> I've<01:21:48.800> got<01:21:48.880> this<01:21:49.040> hash<01:21:49.280> from" + }, + { + "start": 4909.43, + "duration": 0.0, + "text": "It's like, look, I've got this hash from" + }, + { + "start": 4909.44, + "duration": 0.0, + "text": "It's like, look, I've got this hash from an<01:21:49.600> evaluation.<01:21:50.400> It<01:21:50.560> has<01:21:50.719> these<01:21:50.960> visualizer" + }, + { + "start": 4911.51, + "duration": 0.0, + "text": "an evaluation. It has these visualizer" + }, + { + "start": 4911.52, + "duration": 0.0, + "text": "an evaluation. It has these visualizer parameters.<01:21:52.960> Please<01:21:53.280> give<01:21:53.360> me<01:21:53.520> the<01:21:53.920> thing." + }, + { + "start": 4914.149, + "duration": 0.0, + "text": "parameters. Please give me the thing." + }, + { + "start": 4914.159, + "duration": 0.0, + "text": "parameters. Please give me the thing. And<01:21:54.320> then<01:21:54.480> the<01:21:54.639> cache<01:21:54.960> can<01:21:55.120> say,<01:21:55.600> hey<01:21:55.840> buddy," + }, + { + "start": 4916.07, + "duration": 0.0, + "text": "And then the cache can say, hey buddy," + }, + { + "start": 4916.08, + "duration": 0.0, + "text": "And then the cache can say, hey buddy, don't<01:21:56.239> have<01:21:56.320> it<01:21:56.480> yet.<01:21:56.880> UI<01:21:57.280> can<01:21:57.520> say<01:21:57.679> like,<01:21:58.639> no" + }, + { + "start": 4918.87, + "duration": 0.0, + "text": "don't have it yet. UI can say like, no" + }, + { + "start": 4918.88, + "duration": 0.0, + "text": "don't have it yet. UI can say like, no problem,<01:21:59.280> bro.<01:22:00.080> I'll<01:22:00.320> just,<01:22:00.639> you<01:22:00.719> know,<01:22:00.960> go" + }, + { + "start": 4921.11, + "duration": 0.0, + "text": "problem, bro. I'll just, you know, go" + }, + { + "start": 4921.12, + "duration": 0.0, + "text": "problem, bro. I'll just, you know, go and<01:22:01.760> draw<01:22:01.920> an<01:22:02.159> empty<01:22:02.400> screen<01:22:02.639> or<01:22:02.880> whatever<01:22:03.280> or" + }, + { + "start": 4923.51, + "duration": 0.0, + "text": "and draw an empty screen or whatever or" + }, + { + "start": 4923.52, + "duration": 0.0, + "text": "and draw an empty screen or whatever or an<01:22:03.679> empty<01:22:03.920> visualizer<01:22:04.400> in<01:22:04.639> that<01:22:04.800> case.<01:22:05.920> Um" + }, + { + "start": 4927.51, + "duration": 0.0, + "text": "an empty visualizer in that case. Um" + }, + { + "start": 4927.52, + "duration": 0.0, + "text": "an empty visualizer in that case. Um point<01:22:07.679> is<01:22:07.920> it<01:22:08.159> can<01:22:08.400> continue<01:22:08.719> along<01:22:09.040> smoothly," + }, + { + "start": 4929.43, + "duration": 0.0, + "text": "point is it can continue along smoothly," + }, + { + "start": 4929.44, + "duration": 0.0, + "text": "point is it can continue along smoothly, right?<01:22:09.600> The<01:22:09.679> UI<01:22:09.920> is<01:22:10.080> not<01:22:10.159> blocked,<01:22:10.480> the<01:22:10.639> user" + }, + { + "start": 4930.87, + "duration": 0.0, + "text": "right? The UI is not blocked, the user" + }, + { + "start": 4930.88, + "duration": 0.0, + "text": "right? The UI is not blocked, the user is<01:22:11.040> not<01:22:11.199> blocked,<01:22:11.840> which<01:22:12.080> is<01:22:12.560> priority." + }, + { + "start": 4934.629, + "duration": 0.0, + "text": "is not blocked, which is priority." + }, + { + "start": 4934.639, + "duration": 0.0, + "text": "is not blocked, which is priority. So<01:22:14.880> taking<01:22:15.120> a<01:22:15.280> step<01:22:15.440> back,<01:22:16.639> let's<01:22:16.880> think<01:22:17.040> about" + }, + { + "start": 4937.189, + "duration": 0.0, + "text": "So taking a step back, let's think about" + }, + { + "start": 4937.199, + "duration": 0.0, + "text": "So taking a step back, let's think about some<01:22:17.360> pseudo<01:22:17.760> code<01:22:17.920> we<01:22:18.159> might<01:22:18.400> write<01:22:18.639> to<01:22:18.880> build" + }, + { + "start": 4938.95, + "duration": 0.0, + "text": "some pseudo code we might write to build" + }, + { + "start": 4938.96, + "duration": 0.0, + "text": "some pseudo code we might write to build a<01:22:19.120> bit<01:22:19.360> map<01:22:19.520> viewer.<01:22:20.880> You<01:22:21.199> get<01:22:21.440> some" + }, + { + "start": 4941.59, + "duration": 0.0, + "text": "a bit map viewer. You get some" + }, + { + "start": 4941.6, + "duration": 0.0, + "text": "a bit map viewer. You get some evaluation.<01:22:22.239> It's<01:22:22.400> like<01:22:22.560> passed<01:22:22.800> into<01:22:23.040> the" + }, + { + "start": 4943.11, + "duration": 0.0, + "text": "evaluation. It's like passed into the" + }, + { + "start": 4943.12, + "duration": 0.0, + "text": "evaluation. It's like passed into the bitmap<01:22:23.520> viewer,<01:22:23.760> right?<01:22:24.080> Again,<01:22:24.400> this<01:22:24.560> is" + }, + { + "start": 4944.629, + "duration": 0.0, + "text": "bitmap viewer, right? Again, this is" + }, + { + "start": 4944.639, + "duration": 0.0, + "text": "bitmap viewer, right? Again, this is implementing<01:22:25.280> eval<01:22:25.679> to<01:22:25.840> UI.<01:22:26.320> That<01:22:26.560> arrow<01:22:27.120> get" + }, + { + "start": 4947.27, + "duration": 0.0, + "text": "implementing eval to UI. That arrow get" + }, + { + "start": 4947.28, + "duration": 0.0, + "text": "implementing eval to UI. That arrow get the<01:22:27.440> eval,<01:22:28.000> get<01:22:28.159> an<01:22:28.320> address,<01:22:28.639> get<01:22:28.719> a<01:22:28.880> width." + }, + { + "start": 4949.189, + "duration": 0.0, + "text": "the eval, get an address, get a width." + }, + { + "start": 4949.199, + "duration": 0.0, + "text": "the eval, get an address, get a width. Again,<01:22:29.360> these<01:22:29.600> are<01:22:29.679> all<01:22:29.840> implied<01:22:30.159> by<01:22:30.239> the<01:22:30.400> type" + }, + { + "start": 4950.55, + "duration": 0.0, + "text": "Again, these are all implied by the type" + }, + { + "start": 4950.56, + "duration": 0.0, + "text": "Again, these are all implied by the type info.<01:22:30.800> So<01:22:30.960> we<01:22:31.040> get<01:22:31.199> an<01:22:31.360> address,<01:22:31.600> width," + }, + { + "start": 4951.91, + "duration": 0.0, + "text": "info. So we get an address, width," + }, + { + "start": 4951.92, + "duration": 0.0, + "text": "info. So we get an address, width, height,<01:22:32.239> format,<01:22:32.719> size,<01:22:33.520> hash<01:22:34.400> from<01:22:34.639> some" + }, + { + "start": 4954.87, + "duration": 0.0, + "text": "height, format, size, hash from some" + }, + { + "start": 4954.88, + "duration": 0.0, + "text": "height, format, size, hash from some space<01:22:35.280> and<01:22:35.440> some<01:22:35.600> range." + }, + { + "start": 4957.669, + "duration": 0.0, + "text": "space and some range." + }, + { + "start": 4957.679, + "duration": 0.0, + "text": "space and some range. We<01:22:37.840> can<01:22:37.920> get<01:22:38.080> a<01:22:38.239> texture<01:22:38.560> from<01:22:38.719> some<01:22:38.880> hash<01:22:39.120> in" + }, + { + "start": 4959.35, + "duration": 0.0, + "text": "We can get a texture from some hash in" + }, + { + "start": 4959.36, + "duration": 0.0, + "text": "We can get a texture from some hash in those<01:22:39.520> parameters.<01:22:40.159> Then<01:22:40.320> we<01:22:40.480> can<01:22:40.560> draw<01:22:40.719> the" + }, + { + "start": 4960.87, + "duration": 0.0, + "text": "those parameters. Then we can draw the" + }, + { + "start": 4960.88, + "duration": 0.0, + "text": "those parameters. Then we can draw the texture.<01:22:41.600> Right?<01:22:42.400> Pretty<01:22:42.639> pretty<01:22:43.040> like" + }, + { + "start": 4963.189, + "duration": 0.0, + "text": "texture. Right? Pretty pretty like" + }, + { + "start": 4963.199, + "duration": 0.0, + "text": "texture. Right? Pretty pretty like pseudo<01:22:43.520> code<01:22:43.760> high<01:22:44.000> level,<01:22:44.159> but<01:22:44.719> hopefully" + }, + { + "start": 4965.03, + "duration": 0.0, + "text": "pseudo code high level, but hopefully" + }, + { + "start": 4965.04, + "duration": 0.0, + "text": "pseudo code high level, but hopefully that<01:22:45.199> sketches<01:22:45.600> it<01:22:45.760> out<01:22:45.920> pretty<01:22:46.159> well." + }, + { + "start": 4971.36, + "duration": 0.0, + "text": "Still<01:22:51.600> nervous<01:22:51.840> to<01:22:52.000> press<01:22:52.239> it.<01:22:53.040> Um" + }, + { + "start": 4975.35, + "duration": 0.0, + "text": "Still nervous to press it. Um" + }, + { + "start": 4975.36, + "duration": 0.0, + "text": "Still nervous to press it. Um now<01:22:55.520> the<01:22:55.679> last<01:22:55.760> thing<01:22:55.920> I'd<01:22:56.080> like<01:22:56.159> to<01:22:56.239> cover<01:22:56.400> is" + }, + { + "start": 4976.629, + "duration": 0.0, + "text": "now the last thing I'd like to cover is" + }, + { + "start": 4976.639, + "duration": 0.0, + "text": "now the last thing I'd like to cover is one<01:22:56.880> problem<01:22:57.679> we've<01:22:58.000> introduced<01:22:58.400> by" + }, + { + "start": 4978.55, + "duration": 0.0, + "text": "one problem we've introduced by" + }, + { + "start": 4978.56, + "duration": 0.0, + "text": "one problem we've introduced by switching<01:22:58.880> to<01:22:59.040> content<01:22:59.840> based<01:23:00.080> visualizers" + }, + { + "start": 4980.87, + "duration": 0.0, + "text": "switching to content based visualizers" + }, + { + "start": 4980.88, + "duration": 0.0, + "text": "switching to content based visualizers and<01:23:01.120> that<01:23:01.280> has<01:23:01.360> to<01:23:01.520> do<01:23:01.600> with<01:23:01.760> how<01:23:02.159> like<01:23:02.400> you" + }, + { + "start": 4982.55, + "duration": 0.0, + "text": "and that has to do with how like you" + }, + { + "start": 4982.56, + "duration": 0.0, + "text": "and that has to do with how like you have<01:23:02.639> a<01:23:02.800> hash<01:23:03.280> the<01:23:03.440> hash<01:23:03.679> can<01:23:03.920> change<01:23:04.159> across" + }, + { + "start": 4984.55, + "duration": 0.0, + "text": "have a hash the hash can change across" + }, + { + "start": 4984.56, + "duration": 0.0, + "text": "have a hash the hash can change across time<01:23:04.800> because<01:23:05.280> you<01:23:05.360> know<01:23:05.520> a<01:23:05.679> program<01:23:05.920> is" + }, + { + "start": 4986.149, + "duration": 0.0, + "text": "time because you know a program is" + }, + { + "start": 4986.159, + "duration": 0.0, + "text": "time because you know a program is mutating<01:23:06.719> some<01:23:06.960> some<01:23:07.280> data<01:23:07.920> so<01:23:08.080> you<01:23:08.239> get<01:23:08.400> a" + }, + { + "start": 4988.55, + "duration": 0.0, + "text": "mutating some some data so you get a" + }, + { + "start": 4988.56, + "duration": 0.0, + "text": "mutating some some data so you get a different<01:23:08.639> hash<01:23:08.960> when<01:23:09.120> you<01:23:09.199> actually<01:23:09.360> hash" + }, + { + "start": 4989.669, + "duration": 0.0, + "text": "different hash when you actually hash" + }, + { + "start": 4989.679, + "duration": 0.0, + "text": "different hash when you actually hash that<01:23:09.840> data.<01:23:10.560> So<01:23:10.880> you<01:23:11.040> know<01:23:11.120> if<01:23:11.280> you<01:23:11.440> step<01:23:12.080> like" + }, + { + "start": 4992.47, + "duration": 0.0, + "text": "that data. So you know if you step like" + }, + { + "start": 4992.48, + "duration": 0.0, + "text": "that data. So you know if you step like the<01:23:12.719> hash<01:23:13.040> of<01:23:13.440> many<01:23:13.760> things<01:23:14.000> will<01:23:14.239> change." + }, + { + "start": 4996.229, + "duration": 0.0, + "text": "the hash of many things will change." + }, + { + "start": 4996.239, + "duration": 0.0, + "text": "the hash of many things will change. So<01:23:17.120> imagine<01:23:17.520> this<01:23:17.760> scenario.<01:23:18.159> You<01:23:18.239> know," + }, + { + "start": 4998.39, + "duration": 0.0, + "text": "So imagine this scenario. You know," + }, + { + "start": 4998.4, + "duration": 0.0, + "text": "So imagine this scenario. You know, we've<01:23:18.560> got<01:23:18.639> some<01:23:18.880> visualizer.<01:23:19.360> It's<01:23:19.440> got<01:23:19.520> an" + }, + { + "start": 4999.669, + "duration": 0.0, + "text": "we've got some visualizer. It's got an" + }, + { + "start": 4999.679, + "duration": 0.0, + "text": "we've got some visualizer. It's got an eval<01:23:20.080> to<01:23:20.159> a<01:23:20.320> hash.<01:23:20.880> Get<01:23:21.120> some<01:23:21.280> hash<01:23:22.000> which<01:23:22.159> maps" + }, + { + "start": 5002.39, + "duration": 0.0, + "text": "eval to a hash. Get some hash which maps" + }, + { + "start": 5002.4, + "duration": 0.0, + "text": "eval to a hash. Get some hash which maps to<01:23:22.560> some<01:23:22.719> visualizer<01:23:23.199> data.<01:23:23.920> At<01:23:24.239> time<01:23:24.560> zero," + }, + { + "start": 5005.11, + "duration": 0.0, + "text": "to some visualizer data. At time zero," + }, + { + "start": 5005.12, + "duration": 0.0, + "text": "to some visualizer data. At time zero, like<01:23:25.280> we<01:23:25.520> were<01:23:25.760> building<01:23:26.000> the<01:23:26.159> UI<01:23:26.400> at<01:23:26.560> time" + }, + { + "start": 5006.79, + "duration": 0.0, + "text": "like we were building the UI at time" + }, + { + "start": 5006.8, + "duration": 0.0, + "text": "like we were building the UI at time zero.<01:23:27.600> A<01:23:27.760> and<01:23:27.920> B<01:23:28.080> both<01:23:28.400> pass.<01:23:28.800> We<01:23:28.960> get<01:23:29.040> an<01:23:29.199> eval" + }, + { + "start": 5009.51, + "duration": 0.0, + "text": "zero. A and B both pass. We get an eval" + }, + { + "start": 5009.52, + "duration": 0.0, + "text": "zero. A and B both pass. We get an eval and<01:23:29.600> a<01:23:29.679> hash.<01:23:29.920> We<01:23:30.000> get<01:23:30.080> a<01:23:30.159> hash<01:23:30.320> and<01:23:30.400> a" + }, + { + "start": 5010.55, + "duration": 0.0, + "text": "and a hash. We get a hash and a" + }, + { + "start": 5010.56, + "duration": 0.0, + "text": "and a hash. We get a hash and a visualizer<01:23:30.960> data.<01:23:31.600> All<01:23:31.760> good.<01:23:32.000> We<01:23:32.159> build<01:23:32.320> the" + }, + { + "start": 5012.47, + "duration": 0.0, + "text": "visualizer data. All good. We build the" + }, + { + "start": 5012.48, + "duration": 0.0, + "text": "visualizer data. All good. We build the visualizer.<01:23:33.840> At<01:23:34.159> t1,<01:23:35.040> we<01:23:35.199> get<01:23:35.360> a<01:23:35.520> new<01:23:35.679> hash," + }, + { + "start": 5016.709, + "duration": 0.0, + "text": "visualizer. At t1, we get a new hash," + }, + { + "start": 5016.719, + "duration": 0.0, + "text": "visualizer. At t1, we get a new hash, but<01:23:37.120> b<01:23:37.280> is<01:23:37.440> still<01:23:37.679> preparing,<01:23:38.800> which<01:23:39.120> means<01:23:39.280> we" + }, + { + "start": 5019.43, + "duration": 0.0, + "text": "but b is still preparing, which means we" + }, + { + "start": 5019.44, + "duration": 0.0, + "text": "but b is still preparing, which means we do<01:23:39.679> not<01:23:39.840> visualize<01:23:40.400> successfully.<01:23:41.840> And<01:23:42.000> at" + }, + { + "start": 5022.229, + "duration": 0.0, + "text": "do not visualize successfully. And at" + }, + { + "start": 5022.239, + "duration": 0.0, + "text": "do not visualize successfully. And at time<01:23:42.480> two,<01:23:42.800> B<01:23:43.120> has<01:23:43.360> actually<01:23:43.679> completed<01:23:44.159> again" + }, + { + "start": 5024.55, + "duration": 0.0, + "text": "time two, B has actually completed again" + }, + { + "start": 5024.56, + "duration": 0.0, + "text": "time two, B has actually completed again with<01:23:44.880> the<01:23:45.040> new<01:23:45.199> hash.<01:23:45.520> And<01:23:45.679> we<01:23:45.840> can<01:23:46.000> continue" + }, + { + "start": 5026.39, + "duration": 0.0, + "text": "with the new hash. And we can continue" + }, + { + "start": 5026.4, + "duration": 0.0, + "text": "with the new hash. And we can continue building<01:23:47.120> the<01:23:47.360> the<01:23:47.679> UI." + }, + { + "start": 5029.189, + "duration": 0.0, + "text": "building the the UI." + }, + { + "start": 5029.199, + "duration": 0.0, + "text": "building the the UI. And<01:23:49.920> what<01:23:50.159> this<01:23:50.400> manifests<01:23:50.960> as<01:23:51.280> as<01:23:52.080> maybe" + }, + { + "start": 5032.31, + "duration": 0.0, + "text": "And what this manifests as as maybe" + }, + { + "start": 5032.32, + "duration": 0.0, + "text": "And what this manifests as as maybe unsurprisingly<01:23:53.040> is<01:23:53.280> at<01:23:53.520> time<01:23:53.679> zero<01:23:54.000> you<01:23:54.159> get<01:23:54.239> a" + }, + { + "start": 5034.39, + "duration": 0.0, + "text": "unsurprisingly is at time zero you get a" + }, + { + "start": 5034.4, + "duration": 0.0, + "text": "unsurprisingly is at time zero you get a picture.<01:23:54.719> At<01:23:54.880> time<01:23:55.040> one<01:23:55.280> you<01:23:55.440> don't.<01:23:55.920> At<01:23:56.159> time" + }, + { + "start": 5036.709, + "duration": 0.0, + "text": "picture. At time one you don't. At time" + }, + { + "start": 5036.719, + "duration": 0.0, + "text": "picture. At time one you don't. At time two<01:23:57.440> you<01:23:57.679> get<01:23:57.840> a<01:23:58.000> picture.<01:23:58.719> It's<01:23:58.960> flickering." + }, + { + "start": 5039.51, + "duration": 0.0, + "text": "two you get a picture. It's flickering." + }, + { + "start": 5039.52, + "duration": 0.0, + "text": "two you get a picture. It's flickering. It<01:23:59.679> gets<01:23:59.920> harder<01:24:00.159> to<01:24:00.320> track<01:24:00.639> how<01:24:00.880> data<01:24:01.120> is" + }, + { + "start": 5041.27, + "duration": 0.0, + "text": "It gets harder to track how data is" + }, + { + "start": 5041.28, + "duration": 0.0, + "text": "It gets harder to track how data is changing<01:24:01.600> across<01:24:02.000> time<01:24:02.800> because<01:24:03.120> you've<01:24:03.360> lost" + }, + { + "start": 5043.59, + "duration": 0.0, + "text": "changing across time because you've lost" + }, + { + "start": 5043.6, + "duration": 0.0, + "text": "changing across time because you've lost that<01:24:03.760> sort<01:24:03.920> of<01:24:04.000> what<01:24:04.239> the<01:24:04.400> file<01:24:04.560> path<01:24:04.880> was" + }, + { + "start": 5045.03, + "duration": 0.0, + "text": "that sort of what the file path was" + }, + { + "start": 5045.04, + "duration": 0.0, + "text": "that sort of what the file path was providing<01:24:05.280> was<01:24:05.520> sort<01:24:05.679> of<01:24:05.679> the<01:24:06.000> identity.<01:24:06.400> It's" + }, + { + "start": 5046.55, + "duration": 0.0, + "text": "providing was sort of the identity. It's" + }, + { + "start": 5046.56, + "duration": 0.0, + "text": "providing was sort of the identity. It's sort<01:24:06.719> of<01:24:06.800> this<01:24:07.040> key<01:24:07.600> that<01:24:07.920> refers.<01:24:08.400> It's<01:24:08.639> like" + }, + { + "start": 5048.79, + "duration": 0.0, + "text": "sort of this key that refers. It's like" + }, + { + "start": 5048.8, + "duration": 0.0, + "text": "sort of this key that refers. It's like the<01:24:09.040> name<01:24:09.280> of<01:24:09.360> the<01:24:09.600> thing<01:24:10.080> but<01:24:10.320> not<01:24:10.480> the" + }, + { + "start": 5050.629, + "duration": 0.0, + "text": "the name of the thing but not the" + }, + { + "start": 5050.639, + "duration": 0.0, + "text": "the name of the thing but not the content<01:24:10.880> of<01:24:11.040> the<01:24:11.120> thing.<01:24:11.360> It<01:24:11.520> can<01:24:11.600> refer<01:24:11.840> to" + }, + { + "start": 5051.99, + "duration": 0.0, + "text": "content of the thing. It can refer to" + }, + { + "start": 5052.0, + "duration": 0.0, + "text": "content of the thing. It can refer to the<01:24:12.159> same<01:24:12.320> thing<01:24:12.480> across<01:24:12.880> time.<01:24:13.600> We<01:24:13.920> lost<01:24:14.159> that" + }, + { + "start": 5054.39, + "duration": 0.0, + "text": "the same thing across time. We lost that" + }, + { + "start": 5054.4, + "duration": 0.0, + "text": "the same thing across time. We lost that when<01:24:14.560> we<01:24:14.719> moved<01:24:14.960> to<01:24:16.239> to<01:24:16.560> content<01:24:17.440> based" + }, + { + "start": 5057.75, + "duration": 0.0, + "text": "when we moved to to content based" + }, + { + "start": 5057.76, + "duration": 0.0, + "text": "when we moved to to content based visualizers.<01:24:18.400> So<01:24:18.560> how<01:24:18.639> do<01:24:18.719> we<01:24:18.880> get<01:24:18.960> it<01:24:19.120> back?" + }, + { + "start": 5061.59, + "duration": 0.0, + "text": "visualizers. So how do we get it back?" + }, + { + "start": 5061.6, + "duration": 0.0, + "text": "visualizers. So how do we get it back? Um<01:24:22.719> and<01:24:23.040> really<01:24:24.080> maybe<01:24:24.400> not<01:24:24.639> surprising<01:24:25.600> we" + }, + { + "start": 5065.83, + "duration": 0.0, + "text": "Um and really maybe not surprising we" + }, + { + "start": 5065.84, + "duration": 0.0, + "text": "Um and really maybe not surprising we really<01:24:26.000> want<01:24:26.159> to<01:24:26.320> map<01:24:26.639> to<01:24:27.120> some<01:24:27.440> key<01:24:27.760> which<01:24:28.000> can" + }, + { + "start": 5068.149, + "duration": 0.0, + "text": "really want to map to some key which can" + }, + { + "start": 5068.159, + "duration": 0.0, + "text": "really want to map to some key which can get<01:24:28.320> us<01:24:28.480> to<01:24:28.639> a<01:24:28.880> list<01:24:29.120> of<01:24:29.280> hashes<01:24:30.080> like<01:24:30.239> a" + }, + { + "start": 5070.47, + "duration": 0.0, + "text": "get us to a list of hashes like a" + }, + { + "start": 5070.48, + "duration": 0.0, + "text": "get us to a list of hashes like a history<01:24:30.719> of<01:24:30.880> hashes<01:24:31.360> if<01:24:31.520> you<01:24:31.600> will." + }, + { + "start": 5072.79, + "duration": 0.0, + "text": "history of hashes if you will." + }, + { + "start": 5072.8, + "duration": 0.0, + "text": "history of hashes if you will. And<01:24:32.960> at<01:24:33.199> that<01:24:33.440> point,<01:24:34.000> once<01:24:34.239> we<01:24:34.400> have<01:24:34.560> that," + }, + { + "start": 5075.11, + "duration": 0.0, + "text": "And at that point, once we have that," + }, + { + "start": 5075.12, + "duration": 0.0, + "text": "And at that point, once we have that, once<01:24:35.360> we<01:24:35.520> have<01:24:35.600> some<01:24:35.920> unique<01:24:36.400> identity<01:24:36.719> which" + }, + { + "start": 5076.87, + "duration": 0.0, + "text": "once we have some unique identity which" + }, + { + "start": 5076.88, + "duration": 0.0, + "text": "once we have some unique identity which can<01:24:37.040> refer<01:24:37.280> to<01:24:37.360> a<01:24:37.520> history<01:24:37.760> of<01:24:37.920> hashes<01:24:38.320> across" + }, + { + "start": 5078.629, + "duration": 0.0, + "text": "can refer to a history of hashes across" + }, + { + "start": 5078.639, + "duration": 0.0, + "text": "can refer to a history of hashes across time,<01:24:39.199> we're<01:24:39.360> at<01:24:39.520> time<01:24:39.760> one,<01:24:40.480> we<01:24:40.719> know<01:24:40.960> B" + }, + { + "start": 5081.189, + "duration": 0.0, + "text": "time, we're at time one, we know B" + }, + { + "start": 5081.199, + "duration": 0.0, + "text": "time, we're at time one, we know B fails,<01:24:41.679> we<01:24:41.920> just<01:24:42.080> roll<01:24:42.320> back,<01:24:42.639> just<01:24:43.040> okay," + }, + { + "start": 5083.35, + "duration": 0.0, + "text": "fails, we just roll back, just okay," + }, + { + "start": 5083.36, + "duration": 0.0, + "text": "fails, we just roll back, just okay, grab<01:24:43.600> the<01:24:43.760> previous<01:24:44.080> results,<01:24:44.719> keep<01:24:44.960> building" + }, + { + "start": 5085.189, + "duration": 0.0, + "text": "grab the previous results, keep building" + }, + { + "start": 5085.199, + "duration": 0.0, + "text": "grab the previous results, keep building the<01:24:45.360> stale<01:24:45.679> results<01:24:45.920> so<01:24:46.080> that<01:24:46.239> the<01:24:46.400> user<01:24:46.639> is" + }, + { + "start": 5086.79, + "duration": 0.0, + "text": "the stale results so that the user is" + }, + { + "start": 5086.8, + "duration": 0.0, + "text": "the stale results so that the user is not<01:24:46.960> like<01:24:47.360> seeing<01:24:47.600> stuff<01:24:47.840> flash<01:24:48.080> in<01:24:48.239> their" + }, + { + "start": 5088.31, + "duration": 0.0, + "text": "not like seeing stuff flash in their" + }, + { + "start": 5088.32, + "duration": 0.0, + "text": "not like seeing stuff flash in their face<01:24:48.480> when<01:24:48.639> they're<01:24:48.800> trying<01:24:48.880> to<01:24:48.960> see<01:24:49.040> how" + }, + { + "start": 5089.27, + "duration": 0.0, + "text": "face when they're trying to see how" + }, + { + "start": 5089.28, + "duration": 0.0, + "text": "face when they're trying to see how something<01:24:49.440> is<01:24:49.679> changing,<01:24:50.159> right?" + }, + { + "start": 5093.52, + "duration": 0.0, + "text": "Furthermore,<01:24:54.560> this<01:24:54.880> step<01:24:55.280> is<01:24:55.520> the<01:24:55.679> first<01:24:55.920> step" + }, + { + "start": 5096.229, + "duration": 0.0, + "text": "Furthermore, this step is the first step" + }, + { + "start": 5096.239, + "duration": 0.0, + "text": "Furthermore, this step is the first step to<01:24:56.400> solving<01:24:56.639> a<01:24:56.880> different<01:24:57.040> problem." + }, + { + "start": 5101.44, + "duration": 0.0, + "text": "So<01:25:01.920> while<01:25:02.159> this<01:25:02.320> kind<01:25:02.400> of<01:25:02.480> debugger" + }, + { + "start": 5102.87, + "duration": 0.0, + "text": "So while this kind of debugger" + }, + { + "start": 5102.88, + "duration": 0.0, + "text": "So while this kind of debugger visualization<01:25:03.440> engine<01:25:03.840> can<01:25:04.080> be<01:25:04.400> pretty<01:25:04.800> good" + }, + { + "start": 5105.03, + "duration": 0.0, + "text": "visualization engine can be pretty good" + }, + { + "start": 5105.04, + "duration": 0.0, + "text": "visualization engine can be pretty good at<01:25:06.000> like<01:25:06.239> looking<01:25:06.480> at<01:25:06.719> things<01:25:06.880> quickly<01:25:07.679> and" + }, + { + "start": 5107.99, + "duration": 0.0, + "text": "at like looking at things quickly and" + }, + { + "start": 5108.0, + "duration": 0.0, + "text": "at like looking at things quickly and interactively<01:25:08.719> and<01:25:08.880> and<01:25:08.960> and<01:25:09.840> seeing<01:25:10.320> data<01:25:10.639> at" + }, + { + "start": 5110.87, + "duration": 0.0, + "text": "interactively and and and seeing data at" + }, + { + "start": 5110.88, + "duration": 0.0, + "text": "interactively and and and seeing data at certain<01:25:11.199> points<01:25:11.520> in<01:25:11.760> time<01:25:12.880> and<01:25:13.040> still<01:25:13.280> lacking" + }, + { + "start": 5113.91, + "duration": 0.0, + "text": "certain points in time and still lacking" + }, + { + "start": 5113.92, + "duration": 0.0, + "text": "certain points in time and still lacking something<01:25:14.239> that<01:25:14.480> logging<01:25:14.960> provides<01:25:15.600> which<01:25:15.840> a" + }, + { + "start": 5115.99, + "duration": 0.0, + "text": "something that logging provides which a" + }, + { + "start": 5116.0, + "duration": 0.0, + "text": "something that logging provides which a log<01:25:16.320> kind<01:25:16.560> of<01:25:16.639> covers<01:25:16.960> a<01:25:17.199> whole<01:25:17.679> range<01:25:17.920> of" + }, + { + "start": 5118.149, + "duration": 0.0, + "text": "log kind of covers a whole range of" + }, + { + "start": 5118.159, + "duration": 0.0, + "text": "log kind of covers a whole range of time.<01:25:19.040> This<01:25:19.440> visualizer<01:25:20.080> kind<01:25:20.320> of<01:25:20.639> po<01:25:21.120> uh<01:25:21.600> sort" + }, + { + "start": 5121.75, + "duration": 0.0, + "text": "time. This visualizer kind of po uh sort" + }, + { + "start": 5121.76, + "duration": 0.0, + "text": "time. This visualizer kind of po uh sort of<01:25:21.840> like<01:25:22.000> pokes<01:25:22.400> into<01:25:22.719> points<01:25:22.960> of<01:25:23.120> time" + }, + { + "start": 5124.629, + "duration": 0.0, + "text": "of like pokes into points of time" + }, + { + "start": 5124.639, + "duration": 0.0, + "text": "of like pokes into points of time and<01:25:24.960> shows<01:25:25.360> state<01:25:26.159> at<01:25:26.400> those<01:25:26.639> moments." + }, + { + "start": 5133.04, + "duration": 0.0, + "text": "So<01:25:33.679> by<01:25:33.920> mapping<01:25:34.239> an<01:25:34.400> evaluation<01:25:34.800> to<01:25:34.960> a<01:25:35.120> history" + }, + { + "start": 5135.27, + "duration": 0.0, + "text": "So by mapping an evaluation to a history" + }, + { + "start": 5135.28, + "duration": 0.0, + "text": "So by mapping an evaluation to a history of<01:25:35.440> hashes<01:25:36.560> um<01:25:36.800> rather<01:25:37.040> than<01:25:37.280> just<01:25:37.440> a<01:25:37.679> single" + }, + { + "start": 5137.99, + "duration": 0.0, + "text": "of hashes um rather than just a single" + }, + { + "start": 5138.0, + "duration": 0.0, + "text": "of hashes um rather than just a single like<01:25:38.239> most<01:25:38.560> recent<01:25:38.880> hash<01:25:39.920> um<01:25:40.719> we've<01:25:41.040> actually" + }, + { + "start": 5141.27, + "duration": 0.0, + "text": "like most recent hash um we've actually" + }, + { + "start": 5141.28, + "duration": 0.0, + "text": "like most recent hash um we've actually introduced<01:25:41.760> some<01:25:42.000> of<01:25:42.080> the<01:25:42.239> machinery<01:25:42.719> we<01:25:42.880> need" + }, + { + "start": 5143.189, + "duration": 0.0, + "text": "introduced some of the machinery we need" + }, + { + "start": 5143.199, + "duration": 0.0, + "text": "introduced some of the machinery we need to<01:25:43.440> start<01:25:43.679> rewinding<01:25:44.080> the<01:25:44.320> clock." + }, + { + "start": 5146.47, + "duration": 0.0, + "text": "to start rewinding the clock." + }, + { + "start": 5146.48, + "duration": 0.0, + "text": "to start rewinding the clock. So<01:25:46.719> this<01:25:46.880> way<01:25:47.040> we<01:25:47.199> can<01:25:47.360> see<01:25:47.679> like<01:25:47.920> an<01:25:48.159> entire" + }, + { + "start": 5148.79, + "duration": 0.0, + "text": "So this way we can see like an entire" + }, + { + "start": 5148.8, + "duration": 0.0, + "text": "So this way we can see like an entire entire<01:25:49.280> history<01:25:49.600> of<01:25:49.760> changes<01:25:51.040> um<01:25:51.440> to<01:25:51.679> some" + }, + { + "start": 5151.83, + "duration": 0.0, + "text": "entire history of changes um to some" + }, + { + "start": 5151.84, + "duration": 0.0, + "text": "entire history of changes um to some evaluation<01:25:52.960> that<01:25:53.199> sounds<01:25:53.440> an<01:25:53.600> awful<01:25:53.920> lot" + }, + { + "start": 5155.59, + "duration": 0.0, + "text": "evaluation that sounds an awful lot" + }, + { + "start": 5155.6, + "duration": 0.0, + "text": "evaluation that sounds an awful lot like<01:25:55.840> a<01:25:56.080> dynamic<01:25:56.560> logging<01:25:56.960> system." + }, + { + "start": 5158.55, + "duration": 0.0, + "text": "like a dynamic logging system." + }, + { + "start": 5158.56, + "duration": 0.0, + "text": "like a dynamic logging system. But<01:25:59.199> um<01:25:59.679> at<01:25:59.920> this<01:26:00.080> point<01:26:01.120> we've<01:26:01.440> reached<01:26:01.679> the" + }, + { + "start": 5161.83, + "duration": 0.0, + "text": "But um at this point we've reached the" + }, + { + "start": 5161.84, + "duration": 0.0, + "text": "But um at this point we've reached the boundaries<01:26:02.159> of<01:26:02.320> all<01:26:02.400> the<01:26:02.480> work<01:26:02.639> I've" + }, + { + "start": 5162.87, + "duration": 0.0, + "text": "boundaries of all the work I've" + }, + { + "start": 5162.88, + "duration": 0.0, + "text": "boundaries of all the work I've completed<01:26:04.000> uh<01:26:04.239> on<01:26:04.719> this<01:26:05.040> problem<01:26:05.360> and<01:26:05.760> kind<01:26:05.920> of" + }, + { + "start": 5165.99, + "duration": 0.0, + "text": "completed uh on this problem and kind of" + }, + { + "start": 5166.0, + "duration": 0.0, + "text": "completed uh on this problem and kind of what<01:26:06.159> I<01:26:06.320> was<01:26:06.480> able<01:26:06.560> to<01:26:06.719> fit<01:26:07.600> uh<01:26:07.840> into<01:26:08.159> like<01:26:08.400> this" + }, + { + "start": 5168.629, + "duration": 0.0, + "text": "what I was able to fit uh into like this" + }, + { + "start": 5168.639, + "duration": 0.0, + "text": "what I was able to fit uh into like this level<01:26:08.880> of<01:26:09.040> detail<01:26:09.360> and<01:26:09.679> and<01:26:09.840> this<01:26:10.080> time<01:26:11.520> uh<01:26:11.920> I" + }, + { + "start": 5172.149, + "duration": 0.0, + "text": "level of detail and and this time uh I" + }, + { + "start": 5172.159, + "duration": 0.0, + "text": "level of detail and and this time uh I realized<01:26:12.480> that<01:26:12.639> that<01:26:12.800> was<01:26:12.960> like<01:26:13.360> probably<01:26:13.679> a" + }, + { + "start": 5173.91, + "duration": 0.0, + "text": "realized that that was like probably a" + }, + { + "start": 5173.92, + "duration": 0.0, + "text": "realized that that was like probably a lot<01:26:14.000> of<01:26:14.159> information.<01:26:15.360> Uh" + }, + { + "start": 5177.03, + "duration": 0.0, + "text": "lot of information. Uh" + }, + { + "start": 5177.04, + "duration": 0.0, + "text": "lot of information. Uh uh<01:26:17.199> but<01:26:17.600> you<01:26:17.840> know<01:26:18.000> we've<01:26:18.320> walked<01:26:18.639> through<01:26:18.800> all" + }, + { + "start": 5179.03, + "duration": 0.0, + "text": "uh but you know we've walked through all" + }, + { + "start": 5179.04, + "duration": 0.0, + "text": "uh but you know we've walked through all the<01:26:19.199> building<01:26:19.440> blocks<01:26:19.679> of<01:26:19.840> a<01:26:20.000> general<01:26:20.320> purpose" + }, + { + "start": 5181.11, + "duration": 0.0, + "text": "the building blocks of a general purpose" + }, + { + "start": 5181.12, + "duration": 0.0, + "text": "the building blocks of a general purpose real-time<01:26:21.600> debugger<01:26:22.080> data<01:26:22.320> visualization" + }, + { + "start": 5182.87, + "duration": 0.0, + "text": "real-time debugger data visualization" + }, + { + "start": 5182.88, + "duration": 0.0, + "text": "real-time debugger data visualization engine.<01:26:23.280> So<01:26:23.520> from<01:26:24.000> process<01:26:24.400> control<01:26:25.199> to" + }, + { + "start": 5185.59, + "duration": 0.0, + "text": "engine. So from process control to" + }, + { + "start": 5185.6, + "duration": 0.0, + "text": "engine. So from process control to expression<01:26:26.000> compilation<01:26:26.480> and<01:26:26.639> evaluation<01:26:27.520> to" + }, + { + "start": 5187.83, + "duration": 0.0, + "text": "expression compilation and evaluation to" + }, + { + "start": 5187.84, + "duration": 0.0, + "text": "expression compilation and evaluation to debug<01:26:28.239> information<01:26:28.639> to<01:26:28.960> windowed<01:26:29.280> watch" + }, + { + "start": 5189.51, + "duration": 0.0, + "text": "debug information to windowed watch" + }, + { + "start": 5189.52, + "duration": 0.0, + "text": "debug information to windowed watch trees<01:26:29.920> all<01:26:30.080> the<01:26:30.159> way<01:26:30.320> to<01:26:30.880> visualization" + }, + { + "start": 5191.51, + "duration": 0.0, + "text": "trees all the way to visualization" + }, + { + "start": 5191.52, + "duration": 0.0, + "text": "trees all the way to visualization systems.<01:26:32.800> Now<01:26:33.600> there's<01:26:33.920> tons<01:26:34.080> of<01:26:34.239> problems<01:26:34.960> in" + }, + { + "start": 5195.189, + "duration": 0.0, + "text": "systems. Now there's tons of problems in" + }, + { + "start": 5195.199, + "duration": 0.0, + "text": "systems. Now there's tons of problems in this<01:26:35.440> space<01:26:35.679> that<01:26:35.920> I<01:26:36.080> have<01:26:36.320> not<01:26:36.639> like<01:26:37.199> explored" + }, + { + "start": 5198.07, + "duration": 0.0, + "text": "this space that I have not like explored" + }, + { + "start": 5198.08, + "duration": 0.0, + "text": "this space that I have not like explored and<01:26:38.320> so<01:26:38.480> there's<01:26:38.719> always<01:26:39.040> much<01:26:39.280> more<01:26:39.440> to<01:26:39.600> do." + }, + { + "start": 5199.83, + "duration": 0.0, + "text": "and so there's always much more to do." + }, + { + "start": 5199.84, + "duration": 0.0, + "text": "and so there's always much more to do. There's<01:26:40.080> always<01:26:40.239> so<01:26:40.400> much<01:26:40.560> stuff<01:26:40.639> to<01:26:40.800> do<01:26:40.880> in" + }, + { + "start": 5201.03, + "duration": 0.0, + "text": "There's always so much stuff to do in" + }, + { + "start": 5201.04, + "duration": 0.0, + "text": "There's always so much stuff to do in this<01:26:41.199> space.<01:26:42.239> Um<01:26:43.600> and<01:26:43.840> there's<01:26:44.000> a<01:26:44.159> lot<01:26:44.239> of<01:26:44.400> like" + }, + { + "start": 5204.629, + "duration": 0.0, + "text": "this space. Um and there's a lot of like" + }, + { + "start": 5204.639, + "duration": 0.0, + "text": "this space. Um and there's a lot of like implementation<01:26:45.280> details<01:26:45.600> that<01:26:45.840> are" + }, + { + "start": 5205.99, + "duration": 0.0, + "text": "implementation details that are" + }, + { + "start": 5206.0, + "duration": 0.0, + "text": "implementation details that are interesting<01:26:46.400> that<01:26:46.960> you<01:26:47.040> know<01:26:47.280> obviously" + }, + { + "start": 5207.91, + "duration": 0.0, + "text": "interesting that you know obviously" + }, + { + "start": 5207.92, + "duration": 0.0, + "text": "interesting that you know obviously there<01:26:48.320> I<01:26:48.480> need<01:26:48.639> a<01:26:48.800> higher<01:26:48.960> level<01:26:49.120> of<01:26:49.280> detail" + }, + { + "start": 5209.59, + "duration": 0.0, + "text": "there I need a higher level of detail" + }, + { + "start": 5209.6, + "duration": 0.0, + "text": "there I need a higher level of detail than<01:26:49.760> what<01:26:49.840> I<01:26:50.000> could<01:26:50.159> get<01:26:50.239> into<01:26:50.880> just<01:26:51.040> to<01:26:51.199> cover" + }, + { + "start": 5211.43, + "duration": 0.0, + "text": "than what I could get into just to cover" + }, + { + "start": 5211.44, + "duration": 0.0, + "text": "than what I could get into just to cover all<01:26:51.679> this.<01:26:52.800> But<01:26:52.960> I'm<01:26:53.120> happy<01:26:53.280> to<01:26:53.360> expand<01:26:53.600> on" + }, + { + "start": 5213.669, + "duration": 0.0, + "text": "all this. But I'm happy to expand on" + }, + { + "start": 5213.679, + "duration": 0.0, + "text": "all this. But I'm happy to expand on them<01:26:53.840> if<01:26:54.000> anyone<01:26:54.320> has<01:26:54.480> questions." + }, + { + "start": 5216.229, + "duration": 0.0, + "text": "them if anyone has questions." + }, + { + "start": 5216.239, + "duration": 0.0, + "text": "them if anyone has questions. So" + }, + { + "start": 5217.75, + "duration": 0.0, + "text": "So" + }, + { + "start": 5217.76, + "duration": 0.0, + "text": "So all<01:26:57.840> right,<01:26:58.719> one<01:26:58.960> thing<01:26:59.040> I<01:26:59.199> hope<01:26:59.360> to<01:26:59.520> get" + }, + { + "start": 5219.59, + "duration": 0.0, + "text": "all right, one thing I hope to get" + }, + { + "start": 5219.6, + "duration": 0.0, + "text": "all right, one thing I hope to get across<01:27:00.000> is<01:27:00.239> not<01:27:00.480> only<01:27:00.639> like<01:27:00.880> how<01:27:01.040> all<01:27:01.199> this<01:27:01.760> how" + }, + { + "start": 5221.99, + "duration": 0.0, + "text": "across is not only like how all this how" + }, + { + "start": 5222.0, + "duration": 0.0, + "text": "across is not only like how all this how this<01:27:02.239> kind<01:27:02.400> of<01:27:02.560> system<01:27:02.880> works,<01:27:03.520> but<01:27:03.760> why<01:27:04.159> it<01:27:04.639> uh" + }, + { + "start": 5224.87, + "duration": 0.0, + "text": "this kind of system works, but why it uh" + }, + { + "start": 5224.88, + "duration": 0.0, + "text": "this kind of system works, but why it uh matters<01:27:05.120> and<01:27:05.360> why<01:27:05.520> it's<01:27:05.679> an<01:27:05.840> exciting<01:27:06.159> and" + }, + { + "start": 5226.39, + "duration": 0.0, + "text": "matters and why it's an exciting and" + }, + { + "start": 5226.4, + "duration": 0.0, + "text": "matters and why it's an exciting and sort<01:27:06.560> of<01:27:06.639> fruitful<01:27:07.040> area<01:27:07.280> of<01:27:07.440> development." + }, + { + "start": 5229.189, + "duration": 0.0, + "text": "sort of fruitful area of development." + }, + { + "start": 5229.199, + "duration": 0.0, + "text": "sort of fruitful area of development. Computers<01:27:10.159> very<01:27:10.400> opaque.<01:27:11.679> I<01:27:12.000> know<01:27:12.159> we<01:27:12.320> have" + }, + { + "start": 5232.47, + "duration": 0.0, + "text": "Computers very opaque. I know we have" + }, + { + "start": 5232.48, + "duration": 0.0, + "text": "Computers very opaque. I know we have all<01:27:12.639> looked<01:27:12.880> like<01:27:13.040> this<01:27:13.360> at<01:27:13.600> some<01:27:13.760> point.<01:27:14.480> Um" + }, + { + "start": 5234.87, + "duration": 0.0, + "text": "all looked like this at some point. Um" + }, + { + "start": 5234.88, + "duration": 0.0, + "text": "all looked like this at some point. Um in<01:27:15.040> order<01:27:15.199> to<01:27:15.280> do<01:27:15.440> a<01:27:15.600> good<01:27:15.760> job<01:27:16.000> at<01:27:16.239> producing" + }, + { + "start": 5236.629, + "duration": 0.0, + "text": "in order to do a good job at producing" + }, + { + "start": 5236.639, + "duration": 0.0, + "text": "in order to do a good job at producing good<01:27:16.960> software,<01:27:17.920> we've<01:27:18.159> got<01:27:18.239> to<01:27:18.400> have<01:27:18.480> a" + }, + { + "start": 5238.709, + "duration": 0.0, + "text": "good software, we've got to have a" + }, + { + "start": 5238.719, + "duration": 0.0, + "text": "good software, we've got to have a strong<01:27:18.960> understanding<01:27:19.360> of<01:27:19.520> what<01:27:19.679> we're" + }, + { + "start": 5239.83, + "duration": 0.0, + "text": "strong understanding of what we're" + }, + { + "start": 5239.84, + "duration": 0.0, + "text": "strong understanding of what we're doing.<01:27:20.159> We<01:27:20.239> have<01:27:20.320> to<01:27:20.480> have<01:27:20.560> a<01:27:20.639> strong" + }, + { + "start": 5240.87, + "duration": 0.0, + "text": "doing. We have to have a strong" + }, + { + "start": 5240.88, + "duration": 0.0, + "text": "doing. We have to have a strong understanding<01:27:21.199> of<01:27:21.360> how<01:27:21.520> our<01:27:21.760> data<01:27:22.000> is" + }, + { + "start": 5242.149, + "duration": 0.0, + "text": "understanding of how our data is" + }, + { + "start": 5242.159, + "duration": 0.0, + "text": "understanding of how our data is changing<01:27:22.560> across<01:27:22.960> time<01:27:23.840> and<01:27:24.159> and<01:27:25.280> we<01:27:25.520> do<01:27:25.679> that" + }, + { + "start": 5245.91, + "duration": 0.0, + "text": "changing across time and and we do that" + }, + { + "start": 5245.92, + "duration": 0.0, + "text": "changing across time and and we do that better<01:27:26.159> with<01:27:26.400> visualizations.<01:27:27.199> So,<01:27:28.320> um<01:27:29.040> just" + }, + { + "start": 5249.27, + "duration": 0.0, + "text": "better with visualizations. So, um just" + }, + { + "start": 5249.28, + "duration": 0.0, + "text": "better with visualizations. So, um just like<01:27:29.440> to<01:27:29.600> say<01:27:29.760> I'm<01:27:29.920> I'm,<01:27:30.560> you<01:27:30.639> know,<01:27:30.800> I've<01:27:30.960> been" + }, + { + "start": 5251.11, + "duration": 0.0, + "text": "like to say I'm I'm, you know, I've been" + }, + { + "start": 5251.12, + "duration": 0.0, + "text": "like to say I'm I'm, you know, I've been working<01:27:31.199> on<01:27:31.360> this<01:27:31.440> problem<01:27:31.679> for<01:27:31.760> a<01:27:31.920> few<01:27:32.080> years." + }, + { + "start": 5252.55, + "duration": 0.0, + "text": "working on this problem for a few years." + }, + { + "start": 5252.56, + "duration": 0.0, + "text": "working on this problem for a few years. Uh<01:27:32.880> really<01:27:33.120> proud<01:27:33.360> of<01:27:33.840> the<01:27:34.159> progress<01:27:34.480> I've" + }, + { + "start": 5254.709, + "duration": 0.0, + "text": "Uh really proud of the progress I've" + }, + { + "start": 5254.719, + "duration": 0.0, + "text": "Uh really proud of the progress I've made,<01:27:34.960> but<01:27:35.679> um<01:27:35.920> really<01:27:36.239> happy<01:27:36.400> that<01:27:36.560> I<01:27:36.719> was" + }, + { + "start": 5256.79, + "duration": 0.0, + "text": "made, but um really happy that I was" + }, + { + "start": 5256.8, + "duration": 0.0, + "text": "made, but um really happy that I was able<01:27:36.960> to<01:27:37.040> come<01:27:37.199> and<01:27:37.360> share<01:27:37.840> it<01:27:38.080> with<01:27:38.320> everyone" + }, + { + "start": 5259.03, + "duration": 0.0, + "text": "able to come and share it with everyone" + }, + { + "start": 5259.04, + "duration": 0.0, + "text": "able to come and share it with everyone uh<01:27:39.280> here<01:27:39.440> and<01:27:39.679> then<01:27:40.000> online.<01:27:41.120> Um<01:27:41.520> and<01:27:41.679> I<01:27:41.920> hope" + }, + { + "start": 5261.99, + "duration": 0.0, + "text": "uh here and then online. Um and I hope" + }, + { + "start": 5262.0, + "duration": 0.0, + "text": "uh here and then online. Um and I hope it<01:27:42.159> was<01:27:42.320> interesting,<01:27:42.719> informative<01:27:43.679> uh<01:27:43.920> and" + }, + { + "start": 5264.07, + "duration": 0.0, + "text": "it was interesting, informative uh and" + }, + { + "start": 5264.08, + "duration": 0.0, + "text": "it was interesting, informative uh and helpful.<01:27:44.639> And<01:27:44.880> again,<01:27:45.199> thank<01:27:45.280> you<01:27:45.440> to<01:27:45.600> Sam," + }, + { + "start": 5266.07, + "duration": 0.0, + "text": "helpful. And again, thank you to Sam," + }, + { + "start": 5266.08, + "duration": 0.0, + "text": "helpful. And again, thank you to Sam, Sander,<01:27:46.400> and<01:27:46.560> Charlie<01:27:47.120> uh<01:27:47.280> for<01:27:47.440> the" + }, + { + "start": 5267.59, + "duration": 0.0, + "text": "Sander, and Charlie uh for the" + }, + { + "start": 5267.6, + "duration": 0.0, + "text": "Sander, and Charlie uh for the opportunity." + }, + { + "start": 5269.35, + "duration": 0.0, + "text": "opportunity." + }, + { + "start": 5269.36, + "duration": 0.0, + "text": "opportunity. And<01:27:50.000> Casey's<01:27:50.480> gone<01:27:50.800> now,<01:27:51.040> but<01:27:51.280> like<01:27:51.600> and<01:27:51.760> I" + }, + { + "start": 5271.91, + "duration": 0.0, + "text": "And Casey's gone now, but like and I" + }, + { + "start": 5271.92, + "duration": 0.0, + "text": "And Casey's gone now, but like and I know<01:27:52.080> we've<01:27:52.320> like<01:27:52.560> piled<01:27:52.960> tons<01:27:53.280> of<01:27:53.440> thank<01:27:53.600> yous" + }, + { + "start": 5273.83, + "duration": 0.0, + "text": "know we've like piled tons of thank yous" + }, + { + "start": 5273.84, + "duration": 0.0, + "text": "know we've like piled tons of thank yous onto<01:27:54.159> him,<01:27:54.400> but<01:27:55.040> uh<01:27:55.199> you<01:27:55.360> know,<01:27:55.440> I've<01:27:55.679> wanted" + }, + { + "start": 5275.83, + "duration": 0.0, + "text": "onto him, but uh you know, I've wanted" + }, + { + "start": 5275.84, + "duration": 0.0, + "text": "onto him, but uh you know, I've wanted to<01:27:56.000> put<01:27:56.159> one<01:27:56.320> more<01:27:56.480> in<01:27:56.639> my<01:27:56.800> talk.<01:27:57.600> Um<01:27:58.560> a<01:27:58.719> lot<01:27:58.880> of" + }, + { + "start": 5278.95, + "duration": 0.0, + "text": "to put one more in my talk. Um a lot of" + }, + { + "start": 5278.96, + "duration": 0.0, + "text": "to put one more in my talk. Um a lot of my<01:27:59.120> work<01:27:59.280> on<01:27:59.440> this<01:27:59.600> problem<01:27:59.920> required<01:28:00.400> like" + }, + { + "start": 5280.709, + "duration": 0.0, + "text": "my work on this problem required like" + }, + { + "start": 5280.719, + "duration": 0.0, + "text": "my work on this problem required like lots<01:28:01.040> of<01:28:01.120> insights<01:28:01.920> and<01:28:02.320> lots<01:28:02.560> of<01:28:02.719> like" + }, + { + "start": 5282.95, + "duration": 0.0, + "text": "lots of insights and lots of like" + }, + { + "start": 5282.96, + "duration": 0.0, + "text": "lots of insights and lots of like everything<01:28:03.280> down<01:28:03.440> to<01:28:03.679> like<01:28:04.159> programming" + }, + { + "start": 5284.629, + "duration": 0.0, + "text": "everything down to like programming" + }, + { + "start": 5284.639, + "duration": 0.0, + "text": "everything down to like programming techniques,<01:28:05.440> but<01:28:05.760> but<01:28:06.800> up<01:28:06.960> to<01:28:07.199> and<01:28:07.360> including" + }, + { + "start": 5287.83, + "duration": 0.0, + "text": "techniques, but but up to and including" + }, + { + "start": 5287.84, + "duration": 0.0, + "text": "techniques, but but up to and including stuff<01:28:08.000> within<01:28:08.400> this<01:28:08.560> problem<01:28:08.800> that<01:28:08.960> I<01:28:09.120> covered" + }, + { + "start": 5289.35, + "duration": 0.0, + "text": "stuff within this problem that I covered" + }, + { + "start": 5289.36, + "duration": 0.0, + "text": "stuff within this problem that I covered today.<01:28:09.920> And<01:28:10.080> a<01:28:10.320> lot<01:28:10.400> of<01:28:10.480> that<01:28:10.719> came<01:28:10.880> from" + }, + { + "start": 5291.11, + "duration": 0.0, + "text": "today. And a lot of that came from" + }, + { + "start": 5291.12, + "duration": 0.0, + "text": "today. And a lot of that came from insights<01:28:11.520> that<01:28:11.920> Casey<01:28:12.400> shared<01:28:13.120> years<01:28:13.360> ago," + }, + { + "start": 5293.99, + "duration": 0.0, + "text": "insights that Casey shared years ago," + }, + { + "start": 5294.0, + "duration": 0.0, + "text": "insights that Casey shared years ago, not<01:28:14.239> even<01:28:14.400> with<01:28:14.560> me,<01:28:14.719> but<01:28:14.880> with<01:28:15.120> people<01:28:15.280> like" + }, + { + "start": 5295.51, + "duration": 0.0, + "text": "not even with me, but with people like" + }, + { + "start": 5295.52, + "duration": 0.0, + "text": "not even with me, but with people like 10<01:28:15.760> years<01:28:15.920> ago.<01:28:16.159> And<01:28:16.320> he<01:28:16.480> told<01:28:16.639> me<01:28:16.719> about<01:28:16.880> it." + }, + { + "start": 5297.03, + "duration": 0.0, + "text": "10 years ago. And he told me about it." + }, + { + "start": 5297.04, + "duration": 0.0, + "text": "10 years ago. And he told me about it. I'm<01:28:17.280> like,<01:28:17.679> \"Wow,<01:28:18.159> that<01:28:18.400> needs<01:28:18.639> to<01:28:18.800> be" + }, + { + "start": 5298.87, + "duration": 0.0, + "text": "I'm like, \"Wow, that needs to be" + }, + { + "start": 5298.88, + "duration": 0.0, + "text": "I'm like, \"Wow, that needs to be implemented.\"<01:28:19.280> Like,<01:28:19.360> \"That's<01:28:19.600> a<01:28:19.760> really" + }, + { + "start": 5299.91, + "duration": 0.0, + "text": "implemented.\" Like, \"That's a really" + }, + { + "start": 5299.92, + "duration": 0.0, + "text": "implemented.\" Like, \"That's a really good<01:28:20.080> idea.\"<01:28:20.400> So<01:28:20.960> Casey<01:28:21.440> is<01:28:21.679> like,<01:28:22.400> you<01:28:22.560> know," + }, + { + "start": 5302.709, + "duration": 0.0, + "text": "good idea.\" So Casey is like, you know," + }, + { + "start": 5302.719, + "duration": 0.0, + "text": "good idea.\" So Casey is like, you know, none<01:28:22.880> of<01:28:22.960> this<01:28:23.040> would<01:28:23.199> have<01:28:23.360> happened<01:28:23.600> without" + }, + { + "start": 5303.83, + "duration": 0.0, + "text": "none of this would have happened without" + }, + { + "start": 5303.84, + "duration": 0.0, + "text": "none of this would have happened without him.<01:28:24.159> I<01:28:24.400> wouldn't<01:28:24.560> have<01:28:24.639> my<01:28:24.880> job.<01:28:25.040> I<01:28:25.280> wouldn't" + }, + { + "start": 5305.35, + "duration": 0.0, + "text": "him. I wouldn't have my job. I wouldn't" + }, + { + "start": 5305.36, + "duration": 0.0, + "text": "him. I wouldn't have my job. I wouldn't be<01:28:25.600> none<01:28:25.760> of<01:28:25.840> us<01:28:26.000> would<01:28:26.159> be<01:28:26.320> here.<01:28:26.719> I<01:28:26.960> wouldn't" + }, + { + "start": 5307.11, + "duration": 0.0, + "text": "be none of us would be here. I wouldn't" + }, + { + "start": 5307.12, + "duration": 0.0, + "text": "be none of us would be here. I wouldn't know<01:28:27.280> how<01:28:27.360> to<01:28:27.440> do<01:28:27.520> it.<01:28:27.679> I<01:28:27.920> wouldn't<01:28:28.080> know<01:28:28.159> how" + }, + { + "start": 5308.31, + "duration": 0.0, + "text": "know how to do it. I wouldn't know how" + }, + { + "start": 5308.32, + "duration": 0.0, + "text": "know how to do it. I wouldn't know how to<01:28:28.400> work<01:28:28.560> on<01:28:28.719> this<01:28:28.960> problem<01:28:29.520> were<01:28:29.760> it<01:28:29.920> not<01:28:30.080> for" + }, + { + "start": 5310.47, + "duration": 0.0, + "text": "to work on this problem were it not for" + }, + { + "start": 5310.48, + "duration": 0.0, + "text": "to work on this problem were it not for for<01:28:30.880> everything<01:28:31.280> he<01:28:31.520> did.<01:28:32.800> And<01:28:33.280> uh<01:28:34.719> so<01:28:34.960> yeah,<01:28:35.360> I" + }, + { + "start": 5315.59, + "duration": 0.0, + "text": "for everything he did. And uh so yeah, I" + }, + { + "start": 5315.6, + "duration": 0.0, + "text": "for everything he did. And uh so yeah, I mean,<01:28:36.480> tons<01:28:36.719> of<01:28:36.880> props<01:28:37.040> to<01:28:37.199> Casey,<01:28:37.600> obviously." + }, + { + "start": 5318.31, + "duration": 0.0, + "text": "mean, tons of props to Casey, obviously." + }, + { + "start": 5318.32, + "duration": 0.0, + "text": "mean, tons of props to Casey, obviously. Um<01:28:39.280> but<01:28:40.239> finally,<01:28:41.120> thank<01:28:41.280> you<01:28:41.600> all<01:28:41.920> for" + }, + { + "start": 5322.31, + "duration": 0.0, + "text": "Um but finally, thank you all for" + }, + { + "start": 5322.32, + "duration": 0.0, + "text": "Um but finally, thank you all for listening.<01:28:43.040> Thanks<01:28:43.280> for<01:28:43.520> bearing<01:28:43.840> with<01:28:44.000> me" + }, + { + "start": 5324.149, + "duration": 0.0, + "text": "listening. Thanks for bearing with me" + }, + { + "start": 5324.159, + "duration": 0.0, + "text": "listening. Thanks for bearing with me through<01:28:44.400> all<01:28:44.560> that<01:28:44.800> stuff.<01:28:45.520> Um,<01:28:46.000> and<01:28:46.239> thanks" + }, + { + "start": 5326.47, + "duration": 0.0, + "text": "through all that stuff. Um, and thanks" + }, + { + "start": 5326.48, + "duration": 0.0, + "text": "through all that stuff. Um, and thanks to<01:28:46.639> everyone<01:28:46.960> online<01:28:47.360> for<01:28:47.679> for<01:28:48.080> your<01:28:48.239> time<01:28:48.400> and" + }, + { + "start": 5328.629, + "duration": 0.0, + "text": "to everyone online for for your time and" + }, + { + "start": 5328.639, + "duration": 0.0, + "text": "to everyone online for for your time and attention.<01:28:49.440> And<01:28:49.600> that's<01:28:49.760> all<01:28:49.920> I've<01:28:50.159> got." + }, + { + "start": 5330.95, + "duration": 0.0, + "text": "attention. And that's all I've got." + }, + { + "start": 5330.96, + "duration": 0.0, + "text": "attention. And that's all I've got. Thank<01:28:51.120> you." + }, + { + "start": 5341.52, + "duration": 0.0, + "text": "All<01:29:01.600> right." + }, + { + "start": 5343.35, + "duration": 0.0, + "text": "All right." + }, + { + "start": 5343.36, + "duration": 0.0, + "text": "All right. Hi<01:29:03.679> guys." + }, + { + "start": 5345.75, + "duration": 0.0, + "text": "Hi guys." + }, + { + "start": 5345.76, + "duration": 0.0, + "text": "Hi guys. I'm<01:29:06.000> Raphael.<01:29:06.880> Um,<01:29:07.360> sorry<01:29:07.679> my<01:29:08.000> voice<01:29:08.239> has" + }, + { + "start": 5348.709, + "duration": 0.0, + "text": "I'm Raphael. Um, sorry my voice has" + }, + { + "start": 5348.719, + "duration": 0.0, + "text": "I'm Raphael. Um, sorry my voice has given<01:29:08.960> up<01:29:09.120> on<01:29:09.360> day<01:29:09.520> one<01:29:09.760> and<01:29:10.000> I'm<01:29:10.560> just<01:29:10.880> hanging" + }, + { + "start": 5351.189, + "duration": 0.0, + "text": "given up on day one and I'm just hanging" + }, + { + "start": 5351.199, + "duration": 0.0, + "text": "given up on day one and I'm just hanging on<01:29:11.360> by<01:29:11.600> a<01:29:11.760> silver<01:29:12.080> thread,<01:29:12.239> but<01:29:12.400> I<01:29:12.560> hope<01:29:12.639> we<01:29:12.800> can" + }, + { + "start": 5352.87, + "duration": 0.0, + "text": "on by a silver thread, but I hope we can" + }, + { + "start": 5352.88, + "duration": 0.0, + "text": "on by a silver thread, but I hope we can still<01:29:13.199> make<01:29:13.360> this.<01:29:14.080> Uh,<01:29:14.560> great<01:29:14.800> talk.<01:29:15.280> Uh," + }, + { + "start": 5355.99, + "duration": 0.0, + "text": "still make this. Uh, great talk. Uh," + }, + { + "start": 5356.0, + "duration": 0.0, + "text": "still make this. Uh, great talk. Uh, great<01:29:16.239> work.<01:29:16.800> I<01:29:17.520> I<01:29:17.920> love<01:29:18.080> the<01:29:18.239> RAD<01:29:18.560> debugger." + }, + { + "start": 5359.11, + "duration": 0.0, + "text": "great work. I I love the RAD debugger." + }, + { + "start": 5359.12, + "duration": 0.0, + "text": "great work. I I love the RAD debugger. Like<01:29:19.440> the<01:29:19.679> times<01:29:20.000> I've<01:29:20.239> used<01:29:20.400> it,<01:29:20.639> I've<01:29:20.880> been" + }, + { + "start": 5360.95, + "duration": 0.0, + "text": "Like the times I've used it, I've been" + }, + { + "start": 5360.96, + "duration": 0.0, + "text": "Like the times I've used it, I've been blown<01:29:21.360> away<01:29:21.600> by<01:29:21.920> the<01:29:22.159> power<01:29:22.400> it<01:29:22.639> has.<01:29:22.960> Like<01:29:23.199> I" + }, + { + "start": 5363.43, + "duration": 0.0, + "text": "blown away by the power it has. Like I" + }, + { + "start": 5363.44, + "duration": 0.0, + "text": "blown away by the power it has. Like I think<01:29:23.600> you<01:29:23.840> sold<01:29:24.080> yourself<01:29:24.560> short<01:29:24.880> in<01:29:25.120> the" + }, + { + "start": 5365.27, + "duration": 0.0, + "text": "think you sold yourself short in the" + }, + { + "start": 5365.28, + "duration": 0.0, + "text": "think you sold yourself short in the talk<01:29:25.520> by<01:29:25.760> not<01:29:26.000> just<01:29:26.560> demoing<01:29:27.040> all<01:29:27.280> the<01:29:27.440> cool" + }, + { + "start": 5367.75, + "duration": 0.0, + "text": "talk by not just demoing all the cool" + }, + { + "start": 5367.76, + "duration": 0.0, + "text": "talk by not just demoing all the cool stuff<01:29:28.080> that<01:29:28.560> the<01:29:28.880> system<01:29:29.199> like<01:29:29.440> you<01:29:29.679> talk" + }, + { + "start": 5369.83, + "duration": 0.0, + "text": "stuff that the system like you talk" + }, + { + "start": 5369.84, + "duration": 0.0, + "text": "stuff that the system like you talk about<01:29:29.920> the<01:29:30.159> system,<01:29:30.400> but<01:29:30.719> like<01:29:31.360> the<01:29:31.600> amount<01:29:31.840> of" + }, + { + "start": 5371.91, + "duration": 0.0, + "text": "about the system, but like the amount of" + }, + { + "start": 5371.92, + "duration": 0.0, + "text": "about the system, but like the amount of power<01:29:32.159> it<01:29:32.320> gives<01:29:32.400> you<01:29:32.560> is<01:29:32.719> amazing.<01:29:32.880> I<01:29:33.120> want<01:29:33.199> to" + }, + { + "start": 5373.35, + "duration": 0.0, + "text": "power it gives you is amazing. I want to" + }, + { + "start": 5373.36, + "duration": 0.0, + "text": "power it gives you is amazing. I want to dive<01:29:33.520> into<01:29:33.679> that.<01:29:34.000> But<01:29:34.080> like<01:29:34.320> first<01:29:34.960> after<01:29:35.280> all" + }, + { + "start": 5375.43, + "duration": 0.0, + "text": "dive into that. But like first after all" + }, + { + "start": 5375.44, + "duration": 0.0, + "text": "dive into that. But like first after all the<01:29:35.920> praise<01:29:36.320> you've<01:29:36.639> gotten<01:29:36.960> for<01:29:37.360> the<01:29:37.520> red" + }, + { + "start": 5377.83, + "duration": 0.0, + "text": "the praise you've gotten for the red" + }, + { + "start": 5377.84, + "duration": 0.0, + "text": "the praise you've gotten for the red debugger<01:29:38.320> and<01:29:38.560> your<01:29:38.880> skills<01:29:39.360> over<01:29:39.600> the<01:29:39.760> past" + }, + { + "start": 5379.91, + "duration": 0.0, + "text": "debugger and your skills over the past" + }, + { + "start": 5379.92, + "duration": 0.0, + "text": "debugger and your skills over the past few<01:29:40.080> days<01:29:40.320> and<01:29:40.880> before<01:29:41.199> that<01:29:41.920> it<01:29:42.159> was<01:29:42.400> very" + }, + { + "start": 5382.709, + "duration": 0.0, + "text": "few days and before that it was very" + }, + { + "start": 5382.719, + "duration": 0.0, + "text": "few days and before that it was very refreshing<01:29:43.120> to<01:29:43.360> see<01:29:43.440> you<01:29:43.679> finally<01:29:44.080> fail<01:29:44.400> at<01:29:44.560> a" + }, + { + "start": 5384.709, + "duration": 0.0, + "text": "refreshing to see you finally fail at a" + }, + { + "start": 5384.719, + "duration": 0.0, + "text": "refreshing to see you finally fail at a technical<01:29:45.120> task<01:29:45.440> which<01:29:45.679> is<01:29:45.840> like<01:29:46.000> wrestling" + }, + { + "start": 5386.39, + "duration": 0.0, + "text": "technical task which is like wrestling" + }, + { + "start": 5386.4, + "duration": 0.0, + "text": "technical task which is like wrestling with<01:29:46.480> a<01:29:46.639> shitty<01:29:46.960> clipper.<01:29:47.679> Uh<01:29:48.000> so<01:29:48.159> that<01:29:48.400> was" + }, + { + "start": 5388.629, + "duration": 0.0, + "text": "with a shitty clipper. Uh so that was" + }, + { + "start": 5388.639, + "duration": 0.0, + "text": "with a shitty clipper. Uh so that was really<01:29:48.960> good." + }, + { + "start": 5389.669, + "duration": 0.0, + "text": "really good." + }, + { + "start": 5389.679, + "duration": 0.0, + "text": "really good. >> I<01:29:49.920> don't<01:29:50.000> know<01:29:50.239> how<01:29:50.400> I<01:29:50.560> don't<01:29:50.639> know<01:29:50.719> what's" + }, + { + "start": 5390.95, + "duration": 0.0, + "text": ">> I don't know how I don't know what's" + }, + { + "start": 5390.96, + "duration": 0.0, + "text": ">> I don't know how I don't know what's happening.<01:29:51.199> It's<01:29:51.360> like<01:29:51.520> buffering<01:29:51.840> them<01:29:52.000> up" + }, + { + "start": 5392.149, + "duration": 0.0, + "text": "happening. It's like buffering them up" + }, + { + "start": 5392.159, + "duration": 0.0, + "text": "happening. It's like buffering them up or<01:29:52.320> something,<01:29:53.040> you<01:29:53.120> know." + }, + { + "start": 5393.43, + "duration": 0.0, + "text": "or something, you know." + }, + { + "start": 5393.44, + "duration": 0.0, + "text": "or something, you know. >> Yeah.<01:29:53.679> No,<01:29:54.080> like<01:29:54.480> awesome.<01:29:54.880> Um<01:29:55.199> I'm<01:29:55.520> hugely" + }, + { + "start": 5395.91, + "duration": 0.0, + "text": ">> Yeah. No, like awesome. Um I'm hugely" + }, + { + "start": 5395.92, + "duration": 0.0, + "text": ">> Yeah. No, like awesome. Um I'm hugely impressed<01:29:56.320> with<01:29:56.639> what<01:29:56.880> you<01:29:57.040> did<01:29:57.120> with<01:29:57.280> Ready" + }, + { + "start": 5397.59, + "duration": 0.0, + "text": "impressed with what you did with Ready" + }, + { + "start": 5397.6, + "duration": 0.0, + "text": "impressed with what you did with Ready Bugger.<01:29:58.000> Thanks,<01:29:58.159> man.<01:29:58.320> Um,<01:29:58.800> and<01:29:59.040> since<01:29:59.280> we" + }, + { + "start": 5399.51, + "duration": 0.0, + "text": "Bugger. Thanks, man. Um, and since we" + }, + { + "start": 5399.52, + "duration": 0.0, + "text": "Bugger. Thanks, man. Um, and since we know<01:29:59.679> from<01:30:00.000> old<01:30:00.320> Twitter<01:30:00.639> that<01:30:00.880> you<01:30:01.040> need" + }, + { + "start": 5401.27, + "duration": 0.0, + "text": "know from old Twitter that you need" + }, + { + "start": 5401.28, + "duration": 0.0, + "text": "know from old Twitter that you need about<01:30:01.520> a<01:30:01.600> thousand<01:30:02.000> developers<01:30:02.560> to<01:30:02.800> do<01:30:02.960> like" + }, + { + "start": 5403.75, + "duration": 0.0, + "text": "about a thousand developers to do like" + }, + { + "start": 5403.76, + "duration": 0.0, + "text": "about a thousand developers to do like 140<01:30:04.080> character<01:30:04.400> text<01:30:04.719> posts," + }, + { + "start": 5405.189, + "duration": 0.0, + "text": "140 character text posts," + }, + { + "start": 5405.199, + "duration": 0.0, + "text": "140 character text posts, >> right?" + }, + { + "start": 5405.75, + "duration": 0.0, + "text": ">> right?" + }, + { + "start": 5405.76, + "duration": 0.0, + "text": ">> right? >> Uh,<01:30:06.480> how<01:30:06.800> many<01:30:07.040> tens<01:30:07.360> of<01:30:07.600> thousands<01:30:08.080> of" + }, + { + "start": 5408.229, + "duration": 0.0, + "text": ">> Uh, how many tens of thousands of" + }, + { + "start": 5408.239, + "duration": 0.0, + "text": ">> Uh, how many tens of thousands of developers<01:30:08.719> are<01:30:08.880> working<01:30:09.040> on<01:30:09.199> the<01:30:09.360> right" + }, + { + "start": 5409.51, + "duration": 0.0, + "text": "developers are working on the right" + }, + { + "start": 5409.52, + "duration": 0.0, + "text": "developers are working on the right debugger<01:30:10.000> right<01:30:10.159> now?" + }, + { + "start": 5410.39, + "duration": 0.0, + "text": "debugger right now?" + }, + { + "start": 5410.4, + "duration": 0.0, + "text": "debugger right now? >> Right.<01:30:10.719> So,<01:30:11.440> um,<01:30:12.320> you<01:30:12.560> know,<01:30:13.280> we<01:30:13.600> really" + }, + { + "start": 5413.83, + "duration": 0.0, + "text": ">> Right. So, um, you know, we really" + }, + { + "start": 5413.84, + "duration": 0.0, + "text": ">> Right. So, um, you know, we really couldn't<01:30:14.159> do<01:30:14.239> it<01:30:14.400> without<01:30:14.719> at<01:30:14.800> least<01:30:15.199> three<01:30:15.360> or" + }, + { + "start": 5415.59, + "duration": 0.0, + "text": "couldn't do it without at least three or" + }, + { + "start": 5415.6, + "duration": 0.0, + "text": "couldn't do it without at least three or four,<01:30:16.400> but<01:30:16.960> uh,<01:30:17.120> no,<01:30:17.360> I'm<01:30:17.440> just<01:30:17.600> kidding.<01:30:17.840> It's" + }, + { + "start": 5417.99, + "duration": 0.0, + "text": "four, but uh, no, I'm just kidding. It's" + }, + { + "start": 5418.0, + "duration": 0.0, + "text": "four, but uh, no, I'm just kidding. It's just,<01:30:18.239> so<01:30:18.480> currently<01:30:18.800> it's<01:30:19.040> just<01:30:19.199> me<01:30:19.440> and" + }, + { + "start": 5419.669, + "duration": 0.0, + "text": "just, so currently it's just me and" + }, + { + "start": 5419.679, + "duration": 0.0, + "text": "just, so currently it's just me and then,<01:30:20.239> uh,<01:30:20.400> there's<01:30:20.639> another<01:30:20.880> developer<01:30:21.199> on" + }, + { + "start": 5421.35, + "duration": 0.0, + "text": "then, uh, there's another developer on" + }, + { + "start": 5421.36, + "duration": 0.0, + "text": "then, uh, there's another developer on the<01:30:21.440> team,<01:30:21.679> Nikita<01:30:22.159> Smith,<01:30:22.480> who<01:30:22.719> who's<01:30:23.120> not" + }, + { + "start": 5423.27, + "duration": 0.0, + "text": "the team, Nikita Smith, who who's not" + }, + { + "start": 5423.28, + "duration": 0.0, + "text": "the team, Nikita Smith, who who's not here.<01:30:23.920> Um,<01:30:24.400> he<01:30:24.719> works<01:30:24.960> primarily<01:30:25.280> on<01:30:25.440> the<01:30:25.520> RAD" + }, + { + "start": 5425.83, + "duration": 0.0, + "text": "here. Um, he works primarily on the RAD" + }, + { + "start": 5425.84, + "duration": 0.0, + "text": "here. Um, he works primarily on the RAD linker.<01:30:26.639> uh<01:30:26.960> but<01:30:27.520> you<01:30:27.679> know<01:30:28.159> for<01:30:28.400> which<01:30:28.800> is<01:30:28.960> a" + }, + { + "start": 5429.11, + "duration": 0.0, + "text": "linker. uh but you know for which is a" + }, + { + "start": 5429.12, + "duration": 0.0, + "text": "linker. uh but you know for which is a part<01:30:29.280> of<01:30:29.360> the<01:30:29.520> project<01:30:29.920> for<01:30:30.239> a<01:30:30.480> number<01:30:30.560> of" + }, + { + "start": 5430.709, + "duration": 0.0, + "text": "part of the project for a number of" + }, + { + "start": 5430.719, + "duration": 0.0, + "text": "part of the project for a number of reasons<01:30:31.120> but<01:30:31.440> there's<01:30:31.679> a<01:30:31.840> lot<01:30:31.920> of<01:30:32.080> overlap" + }, + { + "start": 5432.629, + "duration": 0.0, + "text": "reasons but there's a lot of overlap" + }, + { + "start": 5432.639, + "duration": 0.0, + "text": "reasons but there's a lot of overlap between<01:30:33.040> like<01:30:33.440> those<01:30:33.760> problems<01:30:34.000> like<01:30:34.159> a" + }, + { + "start": 5434.31, + "duration": 0.0, + "text": "between like those problems like a" + }, + { + "start": 5434.32, + "duration": 0.0, + "text": "between like those problems like a linker<01:30:34.639> has<01:30:34.800> to<01:30:34.880> produce<01:30:35.120> debug<01:30:35.520> info" + }, + { + "start": 5435.99, + "duration": 0.0, + "text": "linker has to produce debug info" + }, + { + "start": 5436.0, + "duration": 0.0, + "text": "linker has to produce debug info debuggers<01:30:36.480> have<01:30:36.560> to<01:30:36.719> read<01:30:36.880> it<01:30:37.199> there's<01:30:37.360> a<01:30:37.520> lot" + }, + { + "start": 5437.59, + "duration": 0.0, + "text": "debuggers have to read it there's a lot" + }, + { + "start": 5437.6, + "duration": 0.0, + "text": "debuggers have to read it there's a lot of<01:30:37.679> shared<01:30:38.159> we<01:30:38.400> both<01:30:38.639> have<01:30:38.800> to<01:30:38.880> parse<01:30:39.199> certain" + }, + { + "start": 5439.43, + "duration": 0.0, + "text": "of shared we both have to parse certain" + }, + { + "start": 5439.44, + "duration": 0.0, + "text": "of shared we both have to parse certain formats<01:30:40.159> stuff<01:30:40.400> like<01:30:40.480> that<01:30:40.639> so<01:30:40.880> there's<01:30:41.120> a<01:30:41.280> lot" + }, + { + "start": 5441.35, + "duration": 0.0, + "text": "formats stuff like that so there's a lot" + }, + { + "start": 5441.36, + "duration": 0.0, + "text": "formats stuff like that so there's a lot of<01:30:41.679> um<01:30:42.080> overlap<01:30:42.560> and<01:30:42.800> so<01:30:43.760> um<01:30:44.159> Nick<01:30:44.400> kind<01:30:44.560> of" + }, + { + "start": 5444.629, + "duration": 0.0, + "text": "of um overlap and so um Nick kind of" + }, + { + "start": 5444.639, + "duration": 0.0, + "text": "of um overlap and so um Nick kind of works<01:30:44.800> on<01:30:44.880> those<01:30:45.040> parts<01:30:45.199> of<01:30:45.280> the<01:30:45.360> problem<01:30:45.679> he's" + }, + { + "start": 5445.83, + "duration": 0.0, + "text": "works on those parts of the problem he's" + }, + { + "start": 5445.84, + "duration": 0.0, + "text": "works on those parts of the problem he's really<01:30:46.000> good<01:30:46.080> at<01:30:46.239> like<01:30:46.560> how<01:30:46.719> do<01:30:46.880> you<01:30:46.960> unwind<01:30:47.520> on" + }, + { + "start": 5447.83, + "duration": 0.0, + "text": "really good at like how do you unwind on" + }, + { + "start": 5447.84, + "duration": 0.0, + "text": "really good at like how do you unwind on Windows<01:30:48.560> x6<01:30:49.120> like<01:30:49.440> how<01:30:49.600> do<01:30:49.760> you<01:30:49.840> unwind<01:30:50.400> you" + }, + { + "start": 5450.629, + "duration": 0.0, + "text": "Windows x6 like how do you unwind you" + }, + { + "start": 5450.639, + "duration": 0.0, + "text": "Windows x6 like how do you unwind you using<01:30:51.040> PE<01:30:51.520> unwind<01:30:51.920> info<01:30:52.239> on<01:30:52.400> Windows<01:30:52.639> x64<01:30:53.360> or" + }, + { + "start": 5453.51, + "duration": 0.0, + "text": "using PE unwind info on Windows x64 or" + }, + { + "start": 5453.52, + "duration": 0.0, + "text": "using PE unwind info on Windows x64 or whatever<01:30:53.760> it's<01:30:53.920> like<01:30:54.400> he's<01:30:54.639> really<01:30:54.800> good<01:30:54.880> at" + }, + { + "start": 5455.03, + "duration": 0.0, + "text": "whatever it's like he's really good at" + }, + { + "start": 5455.04, + "duration": 0.0, + "text": "whatever it's like he's really good at that<01:30:55.280> kind<01:30:55.360> of<01:30:55.440> thing<01:30:55.760> Um<01:30:56.000> I've<01:30:56.239> focused" + }, + { + "start": 5456.55, + "duration": 0.0, + "text": "that kind of thing Um I've focused" + }, + { + "start": 5456.56, + "duration": 0.0, + "text": "that kind of thing Um I've focused primarily<01:30:56.960> on<01:30:57.040> the<01:30:57.199> debugger<01:30:57.600> itself.<01:30:58.239> Um<01:30:58.800> the" + }, + { + "start": 5459.11, + "duration": 0.0, + "text": "primarily on the debugger itself. Um the" + }, + { + "start": 5459.12, + "duration": 0.0, + "text": "primarily on the debugger itself. Um the process<01:30:59.520> control<01:30:59.840> stuff,<01:31:00.320> the<01:31:00.960> the<01:31:01.600> UI" + }, + { + "start": 5462.07, + "duration": 0.0, + "text": "process control stuff, the the UI" + }, + { + "start": 5462.08, + "duration": 0.0, + "text": "process control stuff, the the UI obviously<01:31:02.480> the<01:31:02.719> visualization<01:31:03.199> engine,<01:31:03.600> the" + }, + { + "start": 5463.75, + "duration": 0.0, + "text": "obviously the visualization engine, the" + }, + { + "start": 5463.76, + "duration": 0.0, + "text": "obviously the visualization engine, the evaluation<01:31:04.320> engine,<01:31:04.719> like<01:31:04.880> stuff<01:31:05.120> like<01:31:05.280> that." + }, + { + "start": 5465.59, + "duration": 0.0, + "text": "evaluation engine, like stuff like that." + }, + { + "start": 5465.6, + "duration": 0.0, + "text": "evaluation engine, like stuff like that. So<01:31:06.480> us<01:31:06.800> two,<01:31:07.120> those<01:31:07.280> are<01:31:07.440> what<01:31:07.600> we<01:31:07.760> do." + }, + { + "start": 5468.79, + "duration": 0.0, + "text": "So us two, those are what we do." + }, + { + "start": 5468.8, + "duration": 0.0, + "text": "So us two, those are what we do. >> All right.<01:31:09.679> Um<01:31:10.159> and<01:31:10.400> yeah,<01:31:10.719> for<01:31:11.120> in<01:31:11.280> case" + }, + { + "start": 5471.59, + "duration": 0.0, + "text": ">> All right. Um and yeah, for in case" + }, + { + "start": 5471.6, + "duration": 0.0, + "text": ">> All right. Um and yeah, for in case people<01:31:11.760> haven't<01:31:12.000> heard<01:31:12.159> it,<01:31:12.400> like<01:31:13.040> uh<01:31:13.199> Casey" + }, + { + "start": 5473.669, + "duration": 0.0, + "text": "people haven't heard it, like uh Casey" + }, + { + "start": 5473.679, + "duration": 0.0, + "text": "people haven't heard it, like uh Casey yesterday<01:31:14.159> called<01:31:14.400> him<01:31:14.639> the<01:31:14.960> best<01:31:15.360> systems" + }, + { + "start": 5476.07, + "duration": 0.0, + "text": "yesterday called him the best systems" + }, + { + "start": 5476.08, + "duration": 0.0, + "text": "yesterday called him the best systems architect.<01:31:16.800> He<01:31:17.040> knows" + }, + { + "start": 5478.07, + "duration": 0.0, + "text": "architect. He knows" + }, + { + "start": 5478.08, + "duration": 0.0, + "text": "architect. He knows >> that's" + }, + { + "start": 5478.55, + "duration": 0.0, + "text": ">> that's" + }, + { + "start": 5478.56, + "duration": 0.0, + "text": ">> that's >> I<01:31:18.719> think<01:31:18.800> he<01:31:19.199> said<01:31:19.440> one<01:31:19.600> of<01:31:20.000> maybe" + }, + { + "start": 5480.55, + "duration": 0.0, + "text": ">> I think he said one of maybe" + }, + { + "start": 5480.56, + "duration": 0.0, + "text": ">> I think he said one of maybe >> maybe<01:31:20.800> he<01:31:20.960> said<01:31:21.199> one<01:31:21.360> of<01:31:21.600> but<01:31:21.760> if<01:31:21.840> he<01:31:21.920> said<01:31:22.080> it" + }, + { + "start": 5482.229, + "duration": 0.0, + "text": ">> maybe he said one of but if he said it" + }, + { + "start": 5482.239, + "duration": 0.0, + "text": ">> maybe he said one of but if he said it said<01:31:22.400> it<01:31:22.560> quietly<01:31:23.040> like<01:31:23.280> I<01:31:23.440> heard<01:31:23.679> best" + }, + { + "start": 5483.91, + "duration": 0.0, + "text": "said it quietly like I heard best" + }, + { + "start": 5483.92, + "duration": 0.0, + "text": "said it quietly like I heard best systems<01:31:24.800> architecture" + }, + { + "start": 5485.43, + "duration": 0.0, + "text": "systems architecture" + }, + { + "start": 5485.44, + "duration": 0.0, + "text": "systems architecture >> very<01:31:25.679> very<01:31:26.000> high<01:31:26.159> praise<01:31:27.040> um<01:31:27.440> yeah" + }, + { + "start": 5487.75, + "duration": 0.0, + "text": ">> very very high praise um yeah" + }, + { + "start": 5487.76, + "duration": 0.0, + "text": ">> very very high praise um yeah >> and<01:31:27.920> you're<01:31:28.080> like<01:31:28.239> you're<01:31:28.560> super<01:31:28.880> young<01:31:30.000> um" + }, + { + "start": 5491.03, + "duration": 0.0, + "text": ">> and you're like you're super young um" + }, + { + "start": 5491.04, + "duration": 0.0, + "text": ">> and you're like you're super young um how<01:31:31.280> do<01:31:31.440> you<01:31:31.679> how<01:31:31.920> did<01:31:32.080> you<01:31:32.239> get<01:31:32.480> so<01:31:32.719> good<01:31:32.960> so" + }, + { + "start": 5493.189, + "duration": 0.0, + "text": "how do you how did you get so good so" + }, + { + "start": 5493.199, + "duration": 0.0, + "text": "how do you how did you get so good so fast<01:31:33.600> like<01:31:33.920> it<01:31:34.239> seems<01:31:34.480> like<01:31:34.719> even<01:31:35.040> Casey<01:31:35.520> said" + }, + { + "start": 5495.75, + "duration": 0.0, + "text": "fast like it seems like even Casey said" + }, + { + "start": 5495.76, + "duration": 0.0, + "text": "fast like it seems like even Casey said yesterday<01:31:36.239> like<01:31:36.480> he<01:31:36.800> had<01:31:36.960> his<01:31:37.920> oop<01:31:38.880> oops<01:31:39.679> uh" + }, + { + "start": 5499.91, + "duration": 0.0, + "text": "yesterday like he had his oop oops uh" + }, + { + "start": 5499.92, + "duration": 0.0, + "text": "yesterday like he had his oop oops uh phase<01:31:40.239> where<01:31:40.480> he<01:31:40.639> did<01:31:40.880> heavily" + }, + { + "start": 5501.35, + "duration": 0.0, + "text": "phase where he did heavily" + }, + { + "start": 5501.36, + "duration": 0.0, + "text": "phase where he did heavily object-oriented<01:31:42.159> programming<01:31:42.480> and<01:31:42.719> did<01:31:42.880> all" + }, + { + "start": 5503.03, + "duration": 0.0, + "text": "object-oriented programming and did all" + }, + { + "start": 5503.04, + "duration": 0.0, + "text": "object-oriented programming and did all the<01:31:43.199> pitfalls<01:31:43.920> and<01:31:44.239> I<01:31:44.560> certainly<01:31:44.880> had<01:31:45.120> that" + }, + { + "start": 5505.35, + "duration": 0.0, + "text": "the pitfalls and I certainly had that" + }, + { + "start": 5505.36, + "duration": 0.0, + "text": "the pitfalls and I certainly had that time<01:31:45.520> where<01:31:45.679> I<01:31:45.840> had<01:31:46.239> to<01:31:46.800> unlearn<01:31:47.360> like<01:31:47.920> do<01:31:48.159> all" + }, + { + "start": 5508.31, + "duration": 0.0, + "text": "time where I had to unlearn like do all" + }, + { + "start": 5508.32, + "duration": 0.0, + "text": "time where I had to unlearn like do all the<01:31:48.480> damage<01:31:48.800> that<01:31:48.960> you<01:31:49.120> do<01:31:49.280> with<01:31:49.440> that<01:31:49.600> and" + }, + { + "start": 5509.83, + "duration": 0.0, + "text": "the damage that you do with that and" + }, + { + "start": 5509.84, + "duration": 0.0, + "text": "the damage that you do with that and then<01:31:50.000> see<01:31:50.239> that<01:31:50.560> and<01:31:50.719> unlearn<01:31:51.199> it<01:31:51.440> and<01:31:51.760> just" + }, + { + "start": 5512.07, + "duration": 0.0, + "text": "then see that and unlearn it and just" + }, + { + "start": 5512.08, + "duration": 0.0, + "text": "then see that and unlearn it and just come<01:31:52.239> back<01:31:52.400> to<01:31:52.639> the<01:31:52.719> root<01:31:53.040> like<01:31:53.360> did<01:31:53.600> you<01:31:53.760> skip" + }, + { + "start": 5513.91, + "duration": 0.0, + "text": "come back to the root like did you skip" + }, + { + "start": 5513.92, + "duration": 0.0, + "text": "come back to the root like did you skip that<01:31:54.159> phase<01:31:54.400> or<01:31:54.560> did<01:31:54.719> you<01:31:54.880> pass<01:31:55.120> through<01:31:55.360> it" + }, + { + "start": 5515.51, + "duration": 0.0, + "text": "that phase or did you pass through it" + }, + { + "start": 5515.52, + "duration": 0.0, + "text": "that phase or did you pass through it quickly<01:31:55.840> or<01:31:56.159> how<01:31:56.320> do<01:31:56.480> you<01:31:57.040> how<01:31:57.280> do<01:31:57.360> you<01:31:57.520> get<01:31:57.679> to" + }, + { + "start": 5517.83, + "duration": 0.0, + "text": "quickly or how do you how do you get to" + }, + { + "start": 5517.84, + "duration": 0.0, + "text": "quickly or how do you how do you get to your<01:31:58.000> skill<01:31:58.239> level<01:31:58.400> at<01:31:58.639> your<01:31:58.880> age<01:31:59.120> like<01:31:59.360> what" + }, + { + "start": 5519.51, + "duration": 0.0, + "text": "your skill level at your age like what" + }, + { + "start": 5519.52, + "duration": 0.0, + "text": "your skill level at your age like what happened?" + }, + { + "start": 5520.47, + "duration": 0.0, + "text": "happened?" + }, + { + "start": 5520.48, + "duration": 0.0, + "text": "happened? >> So<01:32:01.040> uh<01:32:01.520> I<01:32:01.760> mean<01:32:01.920> one<01:32:02.080> of<01:32:02.159> the<01:32:02.320> reasons<01:32:02.480> I<01:32:02.639> I<01:32:02.880> got" + }, + { + "start": 5522.95, + "duration": 0.0, + "text": ">> So uh I mean one of the reasons I I got" + }, + { + "start": 5522.96, + "duration": 0.0, + "text": ">> So uh I mean one of the reasons I I got a<01:32:03.120> pretty<01:32:03.280> good<01:32:03.440> head<01:32:03.679> start<01:32:03.840> on<01:32:04.080> everyone<01:32:04.400> I" + }, + { + "start": 5524.55, + "duration": 0.0, + "text": "a pretty good head start on everyone I" + }, + { + "start": 5524.56, + "duration": 0.0, + "text": "a pretty good head start on everyone I start<01:32:04.719> I<01:32:05.040> started<01:32:05.520> programming<01:32:06.000> when<01:32:06.159> I<01:32:06.239> was" + }, + { + "start": 5526.31, + "duration": 0.0, + "text": "start I started programming when I was" + }, + { + "start": 5526.32, + "duration": 0.0, + "text": "start I started programming when I was like<01:32:06.480> six<01:32:06.880> and<01:32:07.040> it<01:32:07.280> wasn't<01:32:07.600> my<01:32:07.840> own<01:32:08.080> doing<01:32:08.560> it" + }, + { + "start": 5528.709, + "duration": 0.0, + "text": "like six and it wasn't my own doing it" + }, + { + "start": 5528.719, + "duration": 0.0, + "text": "like six and it wasn't my own doing it was<01:32:08.800> my<01:32:09.040> older<01:32:09.360> brother<01:32:09.600> who<01:32:09.840> showed<01:32:10.159> me<01:32:10.320> it" + }, + { + "start": 5530.55, + "duration": 0.0, + "text": "was my older brother who showed me it" + }, + { + "start": 5530.56, + "duration": 0.0, + "text": "was my older brother who showed me it and<01:32:10.719> I<01:32:10.880> was<01:32:10.960> like<01:32:11.199> fascinated<01:32:11.679> by<01:32:11.920> it.<01:32:12.480> Um,<01:32:12.960> I" + }, + { + "start": 5533.189, + "duration": 0.0, + "text": "and I was like fascinated by it. Um, I" + }, + { + "start": 5533.199, + "duration": 0.0, + "text": "and I was like fascinated by it. Um, I did<01:32:13.360> have<01:32:13.520> that<01:32:13.679> phase,<01:32:14.080> although<01:32:14.400> I<01:32:14.639> was<01:32:14.719> too" + }, + { + "start": 5535.03, + "duration": 0.0, + "text": "did have that phase, although I was too" + }, + { + "start": 5535.04, + "duration": 0.0, + "text": "did have that phase, although I was too lazy<01:32:15.440> to<01:32:15.679> actually<01:32:16.000> go<01:32:16.159> and<01:32:16.400> do<01:32:16.560> all<01:32:16.719> the" + }, + { + "start": 5536.87, + "duration": 0.0, + "text": "lazy to actually go and do all the" + }, + { + "start": 5536.88, + "duration": 0.0, + "text": "lazy to actually go and do all the complicated<01:32:17.600> oop<01:32:17.840> like<01:32:18.080> template<01:32:18.639> stuff<01:32:18.800> that" + }, + { + "start": 5539.11, + "duration": 0.0, + "text": "complicated oop like template stuff that" + }, + { + "start": 5539.12, + "duration": 0.0, + "text": "complicated oop like template stuff that Casey<01:32:19.600> actually<01:32:19.840> did.<01:32:20.159> So,<01:32:20.560> he<01:32:20.880> actually<01:32:21.199> try" + }, + { + "start": 5541.43, + "duration": 0.0, + "text": "Casey actually did. So, he actually try" + }, + { + "start": 5541.44, + "duration": 0.0, + "text": "Casey actually did. So, he actually try he<01:32:21.679> tried<01:32:21.920> much<01:32:22.080> harder<01:32:22.320> and<01:32:22.480> like<01:32:22.639> went<01:32:22.800> much" + }, + { + "start": 5543.03, + "duration": 0.0, + "text": "he tried much harder and like went much" + }, + { + "start": 5543.04, + "duration": 0.0, + "text": "he tried much harder and like went much further<01:32:23.199> in<01:32:23.360> that<01:32:23.520> direction<01:32:23.760> than<01:32:24.080> than<01:32:24.400> I" + }, + { + "start": 5544.629, + "duration": 0.0, + "text": "further in that direction than than I" + }, + { + "start": 5544.639, + "duration": 0.0, + "text": "further in that direction than than I ever<01:32:24.880> remember<01:32:25.199> myself<01:32:25.600> doing.<01:32:26.159> I<01:32:26.400> definitely" + }, + { + "start": 5546.79, + "duration": 0.0, + "text": "ever remember myself doing. I definitely" + }, + { + "start": 5546.8, + "duration": 0.0, + "text": "ever remember myself doing. I definitely had<01:32:27.040> it<01:32:27.280> though.<01:32:27.840> Um,<01:32:28.320> because<01:32:28.560> it's<01:32:28.719> what" + }, + { + "start": 5548.87, + "duration": 0.0, + "text": "had it though. Um, because it's what" + }, + { + "start": 5548.88, + "duration": 0.0, + "text": "had it though. Um, because it's what people<01:32:29.120> tell<01:32:29.199> you<01:32:29.360> to<01:32:29.520> do,<01:32:29.760> right?<01:32:30.000> like<01:32:30.159> you" + }, + { + "start": 5550.31, + "duration": 0.0, + "text": "people tell you to do, right? like you" + }, + { + "start": 5550.32, + "duration": 0.0, + "text": "people tell you to do, right? like you go<01:32:30.400> and<01:32:30.560> read<01:32:30.719> tutorials<01:32:31.120> and<01:32:31.360> every<01:32:31.679> code<01:32:31.920> is" + }, + { + "start": 5552.07, + "duration": 0.0, + "text": "go and read tutorials and every code is" + }, + { + "start": 5552.08, + "duration": 0.0, + "text": "go and read tutorials and every code is structured<01:32:32.400> in<01:32:32.560> a<01:32:32.719> particular<01:32:33.120> way<01:32:33.440> and<01:32:33.600> so" + }, + { + "start": 5553.75, + "duration": 0.0, + "text": "structured in a particular way and so" + }, + { + "start": 5553.76, + "duration": 0.0, + "text": "structured in a particular way and so you<01:32:33.920> just<01:32:34.080> kind<01:32:34.239> of<01:32:34.320> copy<01:32:34.639> it<01:32:35.520> and<01:32:36.239> um<01:32:36.960> and<01:32:37.440> so<01:32:37.760> I" + }, + { + "start": 5557.99, + "duration": 0.0, + "text": "you just kind of copy it and um and so I" + }, + { + "start": 5558.0, + "duration": 0.0, + "text": "you just kind of copy it and um and so I had<01:32:38.159> it<01:32:38.320> and<01:32:38.560> I<01:32:38.719> didn't<01:32:38.880> really<01:32:39.040> know<01:32:39.199> why<01:32:39.440> it" + }, + { + "start": 5559.59, + "duration": 0.0, + "text": "had it and I didn't really know why it" + }, + { + "start": 5559.6, + "duration": 0.0, + "text": "had it and I didn't really know why it was<01:32:39.760> happening<01:32:40.560> and<01:32:40.800> I<01:32:41.040> just<01:32:41.440> figured<01:32:41.840> it's" + }, + { + "start": 5562.149, + "duration": 0.0, + "text": "was happening and I just figured it's" + }, + { + "start": 5562.159, + "duration": 0.0, + "text": "was happening and I just figured it's like<01:32:42.320> it's<01:32:42.719> important<01:32:43.360> at<01:32:43.600> some<01:32:43.840> point" + }, + { + "start": 5564.07, + "duration": 0.0, + "text": "like it's important at some point" + }, + { + "start": 5564.08, + "duration": 0.0, + "text": "like it's important at some point someday<01:32:44.639> to<01:32:44.880> someone<01:32:45.120> that<01:32:45.360> I<01:32:45.520> put<01:32:45.840> like" + }, + { + "start": 5566.07, + "duration": 0.0, + "text": "someday to someone that I put like" + }, + { + "start": 5566.08, + "duration": 0.0, + "text": "someday to someone that I put like everything<01:32:46.320> behind<01:32:46.560> a<01:32:46.719> getter<01:32:46.880> instead<01:32:47.280> or" + }, + { + "start": 5567.43, + "duration": 0.0, + "text": "everything behind a getter instead or" + }, + { + "start": 5567.44, + "duration": 0.0, + "text": "everything behind a getter instead or whatever.<01:32:47.600> It's<01:32:47.679> like<01:32:47.840> oh<01:32:48.000> this<01:32:48.080> will<01:32:48.159> be<01:32:48.320> this" + }, + { + "start": 5568.47, + "duration": 0.0, + "text": "whatever. It's like oh this will be this" + }, + { + "start": 5568.48, + "duration": 0.0, + "text": "whatever. It's like oh this will be this will<01:32:48.560> be<01:32:48.719> useful<01:32:48.960> someday.<01:32:49.679> Never<01:32:49.920> was" + }, + { + "start": 5570.07, + "duration": 0.0, + "text": "will be useful someday. Never was" + }, + { + "start": 5570.08, + "duration": 0.0, + "text": "will be useful someday. Never was useful.<01:32:50.719> Um<01:32:51.120> but<01:32:51.440> it's<01:32:51.920> uh<01:32:52.080> I<01:32:52.320> just<01:32:52.480> started" + }, + { + "start": 5572.79, + "duration": 0.0, + "text": "useful. Um but it's uh I just started" + }, + { + "start": 5572.8, + "duration": 0.0, + "text": "useful. Um but it's uh I just started doing<01:32:52.960> it<01:32:53.520> but<01:32:53.760> I<01:32:53.920> didn't<01:32:54.159> go<01:32:54.400> nuts<01:32:54.719> with<01:32:55.040> like" + }, + { + "start": 5575.27, + "duration": 0.0, + "text": "doing it but I didn't go nuts with like" + }, + { + "start": 5575.28, + "duration": 0.0, + "text": "doing it but I didn't go nuts with like the<01:32:55.520> crazy<01:32:55.840> abstraction<01:32:56.560> template<01:32:56.960> stuff.<01:32:57.120> I" + }, + { + "start": 5577.27, + "duration": 0.0, + "text": "the crazy abstraction template stuff. I" + }, + { + "start": 5577.28, + "duration": 0.0, + "text": "the crazy abstraction template stuff. I did<01:32:57.440> a<01:32:57.600> little<01:32:57.679> bit<01:32:57.760> of<01:32:57.840> that,<01:32:58.000> but<01:32:58.320> not<01:32:58.639> not<01:32:59.280> um" + }, + { + "start": 5579.43, + "duration": 0.0, + "text": "did a little bit of that, but not not um" + }, + { + "start": 5579.44, + "duration": 0.0, + "text": "did a little bit of that, but not not um I<01:32:59.679> didn't<01:32:59.840> go<01:33:00.159> far<01:33:00.400> down<01:33:00.560> that<01:33:00.800> rabbit<01:33:01.040> hole." + }, + { + "start": 5581.35, + "duration": 0.0, + "text": "I didn't go far down that rabbit hole." + }, + { + "start": 5581.36, + "duration": 0.0, + "text": "I didn't go far down that rabbit hole. The<01:33:01.520> way<01:33:01.600> I<01:33:01.760> got<01:33:01.920> out<01:33:02.000> of<01:33:02.080> it<01:33:02.239> is<01:33:02.400> just<01:33:02.560> Handmade" + }, + { + "start": 5582.95, + "duration": 0.0, + "text": "The way I got out of it is just Handmade" + }, + { + "start": 5582.96, + "duration": 0.0, + "text": "The way I got out of it is just Handmade Hero.<01:33:03.280> Like<01:33:03.440> I<01:33:03.600> I<01:33:04.000> was<01:33:04.159> I<01:33:04.400> was<01:33:04.480> spending<01:33:04.719> a<01:33:04.880> lot" + }, + { + "start": 5584.95, + "duration": 0.0, + "text": "Hero. Like I I was I was spending a lot" + }, + { + "start": 5584.96, + "duration": 0.0, + "text": "Hero. Like I I was I was spending a lot of<01:33:05.040> time<01:33:05.199> building<01:33:05.520> games<01:33:05.760> and<01:33:06.000> engines<01:33:07.440> and" + }, + { + "start": 5588.39, + "duration": 0.0, + "text": "of time building games and engines and" + }, + { + "start": 5588.4, + "duration": 0.0, + "text": "of time building games and engines and um<01:33:08.639> I<01:33:08.880> would<01:33:09.040> build<01:33:09.199> them<01:33:09.360> in<01:33:09.600> sort<01:33:09.760> of<01:33:09.840> this" + }, + { + "start": 5590.07, + "duration": 0.0, + "text": "um I would build them in sort of this" + }, + { + "start": 5590.08, + "duration": 0.0, + "text": "um I would build them in sort of this like<01:33:10.400> you<01:33:10.480> know<01:33:10.560> what<01:33:10.719> you<01:33:10.880> might<01:33:11.040> imagine" + }, + { + "start": 5591.35, + "duration": 0.0, + "text": "like you know what you might imagine" + }, + { + "start": 5591.36, + "duration": 0.0, + "text": "like you know what you might imagine finding<01:33:11.600> on<01:33:11.760> like<01:33:11.920> gamedev<01:33:12.400> forums<01:33:12.880> in<01:33:13.280> the" + }, + { + "start": 5593.43, + "duration": 0.0, + "text": "finding on like gamedev forums in the" + }, + { + "start": 5593.44, + "duration": 0.0, + "text": "finding on like gamedev forums in the early<01:33:13.840> 2000s<01:33:14.960> um<01:33:15.199> sort<01:33:15.360> of<01:33:15.440> like<01:33:15.600> C++<01:33:16.239> 03<01:33:17.040> you" + }, + { + "start": 5597.189, + "duration": 0.0, + "text": "early 2000s um sort of like C++ 03 you" + }, + { + "start": 5597.199, + "duration": 0.0, + "text": "early 2000s um sort of like C++ 03 you know<01:33:17.440> early<01:33:18.159> before<01:33:18.560> C++<01:33:19.120> 11<01:33:19.440> like<01:33:19.600> that<01:33:19.840> style" + }, + { + "start": 5599.99, + "duration": 0.0, + "text": "know early before C++ 11 like that style" + }, + { + "start": 5600.0, + "duration": 0.0, + "text": "know early before C++ 11 like that style of<01:33:20.239> code<01:33:20.400> where<01:33:20.639> it's<01:33:20.800> like<01:33:21.199> object-oriented" + }, + { + "start": 5602.07, + "duration": 0.0, + "text": "of code where it's like object-oriented" + }, + { + "start": 5602.08, + "duration": 0.0, + "text": "of code where it's like object-oriented crap<01:33:22.400> mixed<01:33:22.719> with<01:33:23.120> C<01:33:23.440> basically.<01:33:24.400> And<01:33:24.719> so<01:33:24.880> I" + }, + { + "start": 5605.11, + "duration": 0.0, + "text": "crap mixed with C basically. And so I" + }, + { + "start": 5605.12, + "duration": 0.0, + "text": "crap mixed with C basically. And so I didn't<01:33:25.360> go<01:33:26.239> crazy.<01:33:26.639> Like<01:33:26.800> I<01:33:26.960> was<01:33:27.040> doing<01:33:27.199> a<01:33:27.360> lot" + }, + { + "start": 5607.43, + "duration": 0.0, + "text": "didn't go crazy. Like I was doing a lot" + }, + { + "start": 5607.44, + "duration": 0.0, + "text": "didn't go crazy. Like I was doing a lot of<01:33:27.600> that.<01:33:28.159> Um,<01:33:28.320> and<01:33:28.480> I<01:33:28.719> thought<01:33:28.800> that<01:33:29.120> I" + }, + { + "start": 5609.43, + "duration": 0.0, + "text": "of that. Um, and I thought that I" + }, + { + "start": 5609.44, + "duration": 0.0, + "text": "of that. Um, and I thought that I believed<01:33:29.679> in<01:33:29.840> a<01:33:30.000> lot<01:33:30.080> of<01:33:30.159> things<01:33:30.239> that<01:33:30.400> were" + }, + { + "start": 5610.55, + "duration": 0.0, + "text": "believed in a lot of things that were" + }, + { + "start": 5610.56, + "duration": 0.0, + "text": "believed in a lot of things that were kind<01:33:30.639> of<01:33:30.719> leading<01:33:30.960> me<01:33:31.120> astray,<01:33:31.520> but<01:33:31.679> I<01:33:31.840> didn't" + }, + { + "start": 5611.99, + "duration": 0.0, + "text": "kind of leading me astray, but I didn't" + }, + { + "start": 5612.0, + "duration": 0.0, + "text": "kind of leading me astray, but I didn't actually<01:33:32.320> try<01:33:32.480> that<01:33:32.639> hard<01:33:32.800> on<01:33:33.040> them<01:33:33.199> because<01:33:33.360> I" + }, + { + "start": 5613.51, + "duration": 0.0, + "text": "actually try that hard on them because I" + }, + { + "start": 5613.52, + "duration": 0.0, + "text": "actually try that hard on them because I was<01:33:33.600> too<01:33:33.760> lazy<01:33:34.239> because<01:33:34.480> it's<01:33:34.639> just<01:33:34.719> a<01:33:34.880> ton<01:33:34.960> of" + }, + { + "start": 5615.03, + "duration": 0.0, + "text": "was too lazy because it's just a ton of" + }, + { + "start": 5615.04, + "duration": 0.0, + "text": "was too lazy because it's just a ton of typing.<01:33:35.360> Like<01:33:35.520> Casey<01:33:35.840> was<01:33:36.000> like<01:33:36.400> when<01:33:36.639> Casey" + }, + { + "start": 5617.03, + "duration": 0.0, + "text": "typing. Like Casey was like when Casey" + }, + { + "start": 5617.04, + "duration": 0.0, + "text": "typing. Like Casey was like when Casey was<01:33:37.120> talking<01:33:37.280> about<01:33:37.360> it,<01:33:37.600> he's<01:33:37.760> like<01:33:38.400> he<01:33:38.639> just" + }, + { + "start": 5618.87, + "duration": 0.0, + "text": "was talking about it, he's like he just" + }, + { + "start": 5618.88, + "duration": 0.0, + "text": "was talking about it, he's like he just buckled<01:33:39.280> down<01:33:39.440> and<01:33:39.679> started<01:33:39.920> writing<01:33:40.320> all" + }, + { + "start": 5620.629, + "duration": 0.0, + "text": "buckled down and started writing all" + }, + { + "start": 5620.639, + "duration": 0.0, + "text": "buckled down and started writing all this<01:33:40.960> crazy<01:33:41.360> stuff<01:33:41.600> and<01:33:41.760> I'm<01:33:42.000> like,<01:33:42.239> I<01:33:42.480> just" + }, + { + "start": 5622.629, + "duration": 0.0, + "text": "this crazy stuff and I'm like, I just" + }, + { + "start": 5622.639, + "duration": 0.0, + "text": "this crazy stuff and I'm like, I just don't<01:33:42.960> want<01:33:43.120> to<01:33:43.280> do<01:33:43.360> that.<01:33:43.600> So<01:33:43.760> I<01:33:43.920> kind<01:33:44.080> of<01:33:44.239> I" + }, + { + "start": 5624.47, + "duration": 0.0, + "text": "don't want to do that. So I kind of I" + }, + { + "start": 5624.48, + "duration": 0.0, + "text": "don't want to do that. So I kind of I kind<01:33:44.719> of<01:33:44.880> stayed<01:33:45.120> more<01:33:45.360> constrained<01:33:45.840> and<01:33:46.080> and" + }, + { + "start": 5626.87, + "duration": 0.0, + "text": "kind of stayed more constrained and and" + }, + { + "start": 5626.88, + "duration": 0.0, + "text": "kind of stayed more constrained and and um<01:33:47.440> just<01:33:47.679> tried<01:33:47.840> to<01:33:48.000> build<01:33:48.159> games<01:33:48.400> that<01:33:48.560> way." + }, + { + "start": 5628.709, + "duration": 0.0, + "text": "um just tried to build games that way." + }, + { + "start": 5628.719, + "duration": 0.0, + "text": "um just tried to build games that way. And<01:33:48.880> then<01:33:49.040> when<01:33:49.120> I<01:33:49.280> saw<01:33:49.440> Handmade<01:33:49.760> Hero,<01:33:50.080> I'm" + }, + { + "start": 5630.229, + "duration": 0.0, + "text": "And then when I saw Handmade Hero, I'm" + }, + { + "start": 5630.239, + "duration": 0.0, + "text": "And then when I saw Handmade Hero, I'm like,<01:33:50.880> oh,<01:33:51.120> like<01:33:51.360> none<01:33:51.520> of<01:33:51.600> that<01:33:51.760> was<01:33:51.920> needed." + }, + { + "start": 5632.229, + "duration": 0.0, + "text": "like, oh, like none of that was needed." + }, + { + "start": 5632.239, + "duration": 0.0, + "text": "like, oh, like none of that was needed. Like<01:33:52.400> I<01:33:52.560> didn't<01:33:52.639> have<01:33:52.800> to<01:33:52.880> even<01:33:53.120> go<01:33:53.440> I<01:33:53.679> didn't" + }, + { + "start": 5633.83, + "duration": 0.0, + "text": "Like I didn't have to even go I didn't" + }, + { + "start": 5633.84, + "duration": 0.0, + "text": "Like I didn't have to even go I didn't even<01:33:54.000> even<01:33:54.239> have<01:33:54.400> to<01:33:54.480> like<01:33:54.639> open<01:33:54.800> the<01:33:55.040> door<01:33:55.120> to" + }, + { + "start": 5635.35, + "duration": 0.0, + "text": "even even have to like open the door to" + }, + { + "start": 5635.36, + "duration": 0.0, + "text": "even even have to like open the door to that<01:33:55.520> hallway.<01:33:56.239> I<01:33:56.480> can<01:33:56.560> just<01:33:57.120> you<01:33:57.280> know" + }, + { + "start": 5637.59, + "duration": 0.0, + "text": "that hallway. I can just you know" + }, + { + "start": 5637.6, + "duration": 0.0, + "text": "that hallway. I can just you know actually<01:33:58.000> not<01:33:58.239> get<01:33:58.400> sidetracked." + }, + { + "start": 5638.87, + "duration": 0.0, + "text": "actually not get sidetracked." + }, + { + "start": 5638.88, + "duration": 0.0, + "text": "actually not get sidetracked. >> So<01:33:59.120> maybe<01:33:59.280> a<01:33:59.520> bit<01:33:59.600> of<01:33:59.760> laziness<01:34:00.320> saved." + }, + { + "start": 5640.79, + "duration": 0.0, + "text": ">> So maybe a bit of laziness saved." + }, + { + "start": 5640.8, + "duration": 0.0, + "text": ">> So maybe a bit of laziness saved. >> Yes.<01:34:01.120> Okay." + }, + { + "start": 5641.83, + "duration": 0.0, + "text": ">> Yes. Okay." + }, + { + "start": 5641.84, + "duration": 0.0, + "text": ">> Yes. Okay. >> Yes.<01:34:02.080> It's<01:34:02.239> it's<01:34:02.639> my<01:34:02.800> laziness<01:34:03.280> saved<01:34:03.520> me<01:34:03.679> I" + }, + { + "start": 5643.83, + "duration": 0.0, + "text": ">> Yes. It's it's my laziness saved me I" + }, + { + "start": 5643.84, + "duration": 0.0, + "text": ">> Yes. It's it's my laziness saved me I think<01:34:04.000> to<01:34:04.159> some<01:34:04.320> degree.<01:34:04.480> I<01:34:04.639> want<01:34:04.719> to<01:34:04.880> go<01:34:05.120> go" + }, + { + "start": 5645.43, + "duration": 0.0, + "text": "think to some degree. I want to go go" + }, + { + "start": 5645.44, + "duration": 0.0, + "text": "think to some degree. I want to go go get<01:34:05.679> more<01:34:05.840> into<01:34:06.080> the<01:34:06.239> red<01:34:06.400> debugger<01:34:06.880> details," + }, + { + "start": 5647.189, + "duration": 0.0, + "text": "get more into the red debugger details," + }, + { + "start": 5647.199, + "duration": 0.0, + "text": "get more into the red debugger details, but<01:34:07.440> first<01:34:07.760> like<01:34:08.080> the<01:34:08.320> channel<01:34:08.800> I<01:34:09.040> saw<01:34:09.280> that" + }, + { + "start": 5649.59, + "duration": 0.0, + "text": "but first like the channel I saw that" + }, + { + "start": 5649.6, + "duration": 0.0, + "text": "but first like the channel I saw that like<01:34:10.159> you<01:34:10.400> described<01:34:10.960> your<01:34:11.520> like<01:34:12.000> kind<01:34:12.239> of<01:34:12.320> the" + }, + { + "start": 5652.629, + "duration": 0.0, + "text": "like you described your like kind of the" + }, + { + "start": 5652.639, + "duration": 0.0, + "text": "like you described your like kind of the building<01:34:13.120> generic<01:34:13.679> building<01:34:13.920> blocks<01:34:14.320> you<01:34:14.560> you" + }, + { + "start": 5654.87, + "duration": 0.0, + "text": "building generic building blocks you you" + }, + { + "start": 5654.88, + "duration": 0.0, + "text": "building generic building blocks you you assembled<01:34:15.440> to<01:34:15.840> visualize<01:34:16.400> data<01:34:16.719> in<01:34:16.960> the" + }, + { + "start": 5657.11, + "duration": 0.0, + "text": "assembled to visualize data in the" + }, + { + "start": 5657.12, + "duration": 0.0, + "text": "assembled to visualize data in the debugger<01:34:17.840> and<01:34:18.239> it<01:34:18.560> seems<01:34:18.800> like<01:34:18.960> when<01:34:19.120> I<01:34:19.360> just" + }, + { + "start": 5659.51, + "duration": 0.0, + "text": "debugger and it seems like when I just" + }, + { + "start": 5659.52, + "duration": 0.0, + "text": "debugger and it seems like when I just watch<01:34:20.000> like<01:34:20.239> the<01:34:20.480> things<01:34:20.639> you<01:34:20.880> didn't<01:34:21.040> show" + }, + { + "start": 5661.35, + "duration": 0.0, + "text": "watch like the things you didn't show" + }, + { + "start": 5661.36, + "duration": 0.0, + "text": "watch like the things you didn't show like<01:34:21.520> all<01:34:21.679> the<01:34:21.840> things<01:34:22.000> you<01:34:22.159> you<01:34:22.480> demoed<01:34:22.880> on" + }, + { + "start": 5663.03, + "duration": 0.0, + "text": "like all the things you you demoed on" + }, + { + "start": 5663.04, + "duration": 0.0, + "text": "like all the things you you demoed on Twitter<01:34:23.520> etc<01:34:23.920> of<01:34:24.000> of<01:34:24.159> the<01:34:24.400> power<01:34:24.639> that<01:34:24.960> gives" + }, + { + "start": 5665.11, + "duration": 0.0, + "text": "Twitter etc of of the power that gives" + }, + { + "start": 5665.12, + "duration": 0.0, + "text": "Twitter etc of of the power that gives you<01:34:25.679> it<01:34:25.840> seems<01:34:26.080> like<01:34:26.239> you<01:34:26.639> discovered<01:34:27.360> the" + }, + { + "start": 5667.669, + "duration": 0.0, + "text": "you it seems like you discovered the" + }, + { + "start": 5667.679, + "duration": 0.0, + "text": "you it seems like you discovered the right<01:34:28.400> building<01:34:28.719> blocks<01:34:29.040> that<01:34:29.280> give<01:34:29.440> you" + }, + { + "start": 5670.149, + "duration": 0.0, + "text": "right building blocks that give you" + }, + { + "start": 5670.159, + "duration": 0.0, + "text": "right building blocks that give you enormous<01:34:30.800> expressiveness<01:34:31.760> with<01:34:32.239> very" + }, + { + "start": 5673.99, + "duration": 0.0, + "text": "enormous expressiveness with very" + }, + { + "start": 5674.0, + "duration": 0.0, + "text": "enormous expressiveness with very small<01:34:34.400> set<01:34:34.639> of<01:34:34.960> like<01:34:36.000> it<01:34:36.080> it<01:34:36.239> seems<01:34:36.480> like<01:34:36.639> a" + }, + { + "start": 5676.79, + "duration": 0.0, + "text": "small set of like it it seems like a" + }, + { + "start": 5676.8, + "duration": 0.0, + "text": "small set of like it it seems like a small<01:34:37.040> set<01:34:37.199> of<01:34:38.239> Lego<01:34:38.639> blocks<01:34:38.960> let's<01:34:39.120> say<01:34:39.280> to" + }, + { + "start": 5679.43, + "duration": 0.0, + "text": "small set of Lego blocks let's say to" + }, + { + "start": 5679.44, + "duration": 0.0, + "text": "small set of Lego blocks let's say to assemble<01:34:39.760> it.<01:34:40.239> Um,<01:34:40.880> how<01:34:41.040> do<01:34:41.120> you<01:34:41.280> do<01:34:41.360> that" + }, + { + "start": 5681.59, + "duration": 0.0, + "text": "assemble it. Um, how do you do that" + }, + { + "start": 5681.6, + "duration": 0.0, + "text": "assemble it. Um, how do you do that without<01:34:41.920> like<01:34:42.159> how<01:34:42.320> did<01:34:42.400> you<01:34:42.480> arrive<01:34:42.719> at<01:34:42.960> that" + }, + { + "start": 5684.07, + "duration": 0.0, + "text": "without like how did you arrive at that" + }, + { + "start": 5684.08, + "duration": 0.0, + "text": "without like how did you arrive at that with<01:34:44.400> because<01:34:45.360> a<01:34:45.600> counter<01:34:45.840> example<01:34:46.080> I<01:34:46.239> would" + }, + { + "start": 5686.31, + "duration": 0.0, + "text": "with because a counter example I would" + }, + { + "start": 5686.32, + "duration": 0.0, + "text": "with because a counter example I would give<01:34:46.480> of<01:34:46.639> people<01:34:46.880> trying<01:34:47.120> that<01:34:47.360> is<01:34:47.600> like<01:34:48.400> at" + }, + { + "start": 5688.629, + "duration": 0.0, + "text": "give of people trying that is like at" + }, + { + "start": 5688.639, + "duration": 0.0, + "text": "give of people trying that is like at some<01:34:48.880> point<01:34:49.040> I<01:34:49.199> think<01:34:49.360> the<01:34:49.520> office<01:34:49.920> suite" + }, + { + "start": 5690.31, + "duration": 0.0, + "text": "some point I think the office suite" + }, + { + "start": 5690.32, + "duration": 0.0, + "text": "some point I think the office suite decided<01:34:50.719> that<01:34:51.199> every<01:34:51.520> window<01:34:52.000> every<01:34:52.239> UI" + }, + { + "start": 5692.55, + "duration": 0.0, + "text": "decided that every window every UI" + }, + { + "start": 5692.56, + "duration": 0.0, + "text": "decided that every window every UI element<01:34:52.880> should<01:34:53.120> be<01:34:53.199> a<01:34:53.360> dragable<01:34:53.920> window" + }, + { + "start": 5694.629, + "duration": 0.0, + "text": "element should be a dragable window" + }, + { + "start": 5694.639, + "duration": 0.0, + "text": "element should be a dragable window >> and<01:34:54.880> of<01:34:55.040> course<01:34:55.199> everything<01:34:55.520> that<01:34:55.760> a<01:34:56.000> window" + }, + { + "start": 5696.229, + "duration": 0.0, + "text": ">> and of course everything that a window" + }, + { + "start": 5696.239, + "duration": 0.0, + "text": ">> and of course everything that a window that's<01:34:56.480> floating<01:34:56.880> should<01:34:57.120> be<01:34:57.280> closable<01:34:58.239> and" + }, + { + "start": 5698.55, + "duration": 0.0, + "text": "that's floating should be closable and" + }, + { + "start": 5698.56, + "duration": 0.0, + "text": "that's floating should be closable and so<01:34:59.280> they<01:34:59.600> came<01:34:59.840> to<01:35:00.000> this<01:35:00.400> great<01:35:00.800> state<01:35:01.120> where" + }, + { + "start": 5701.43, + "duration": 0.0, + "text": "so they came to this great state where" + }, + { + "start": 5701.44, + "duration": 0.0, + "text": "so they came to this great state where people<01:35:01.760> could<01:35:02.000> just<01:35:02.400> close<01:35:02.719> their<01:35:03.040> menu<01:35:03.440> bar" + }, + { + "start": 5703.75, + "duration": 0.0, + "text": "people could just close their menu bar" + }, + { + "start": 5703.76, + "duration": 0.0, + "text": "people could just close their menu bar and<01:35:04.080> be<01:35:04.320> completely<01:35:04.880> host<01:35:05.520> unless<01:35:05.920> unless" + }, + { + "start": 5706.229, + "duration": 0.0, + "text": "and be completely host unless unless" + }, + { + "start": 5706.239, + "duration": 0.0, + "text": "and be completely host unless unless they<01:35:06.480> Google<01:35:06.719> how<01:35:06.880> to<01:35:07.040> restore<01:35:07.280> that<01:35:08.000> um<01:35:08.480> and" + }, + { + "start": 5708.629, + "duration": 0.0, + "text": "they Google how to restore that um and" + }, + { + "start": 5708.639, + "duration": 0.0, + "text": "they Google how to restore that um and like<01:35:08.880> they<01:35:09.120> tried<01:35:09.280> to<01:35:09.440> be<01:35:09.520> very<01:35:09.760> generic<01:35:10.320> have" + }, + { + "start": 5710.55, + "duration": 0.0, + "text": "like they tried to be very generic have" + }, + { + "start": 5710.56, + "duration": 0.0, + "text": "like they tried to be very generic have building<01:35:10.800> blocks<01:35:11.040> of<01:35:11.199> like<01:35:11.360> everything's<01:35:11.760> a" + }, + { + "start": 5711.91, + "duration": 0.0, + "text": "building blocks of like everything's a" + }, + { + "start": 5711.92, + "duration": 0.0, + "text": "building blocks of like everything's a dragable<01:35:12.400> window<01:35:12.560> and<01:35:12.800> we're<01:35:12.880> going<01:35:12.960> to<01:35:13.040> get<01:35:13.120> a" + }, + { + "start": 5713.27, + "duration": 0.0, + "text": "dragable window and we're going to get a" + }, + { + "start": 5713.28, + "duration": 0.0, + "text": "dragable window and we're going to get a great<01:35:13.440> power<01:35:13.600> of<01:35:13.760> that<01:35:13.920> and<01:35:14.719> result<01:35:15.040> we<01:35:15.199> all" + }, + { + "start": 5715.35, + "duration": 0.0, + "text": "great power of that and result we all" + }, + { + "start": 5715.36, + "duration": 0.0, + "text": "great power of that and result we all suffered.<01:35:15.920> Um," + }, + { + "start": 5716.709, + "duration": 0.0, + "text": "suffered. Um," + }, + { + "start": 5716.719, + "duration": 0.0, + "text": "suffered. Um, >> how<01:35:16.880> did<01:35:17.040> you<01:35:17.199> get<01:35:17.360> to<01:35:17.520> this<01:35:17.840> set<01:35:18.000> of<01:35:18.159> building" + }, + { + "start": 5718.39, + "duration": 0.0, + "text": ">> how did you get to this set of building" + }, + { + "start": 5718.4, + "duration": 0.0, + "text": ">> how did you get to this set of building blocks?<01:35:18.719> Was<01:35:18.880> it<01:35:18.960> like<01:35:19.679> do<01:35:19.920> you<01:35:20.159> have<01:35:20.320> to" + }, + { + "start": 5720.47, + "duration": 0.0, + "text": "blocks? Was it like do you have to" + }, + { + "start": 5720.48, + "duration": 0.0, + "text": "blocks? Was it like do you have to iterate<01:35:20.800> on<01:35:20.960> that?<01:35:21.199> Was<01:35:21.360> it<01:35:21.520> trial<01:35:21.760> and<01:35:22.000> error?" + }, + { + "start": 5722.149, + "duration": 0.0, + "text": "iterate on that? Was it trial and error?" + }, + { + "start": 5722.159, + "duration": 0.0, + "text": "iterate on that? Was it trial and error? Was<01:35:22.400> it<01:35:22.639> undo<01:35:23.120> redo<01:35:23.760> dozens<01:35:24.080> of<01:35:24.239> times<01:35:24.400> or<01:35:24.639> are" + }, + { + "start": 5724.709, + "duration": 0.0, + "text": "Was it undo redo dozens of times or are" + }, + { + "start": 5724.719, + "duration": 0.0, + "text": "Was it undo redo dozens of times or are you<01:35:24.880> like<01:35:25.199> n<01:35:25.520> like<01:35:25.760> Neo<01:35:26.080> and<01:35:26.320> just<01:35:26.719> see<01:35:26.960> the" + }, + { + "start": 5728.47, + "duration": 0.0, + "text": "you like n like Neo and just see the" + }, + { + "start": 5728.48, + "duration": 0.0, + "text": "you like n like Neo and just see the I<01:35:28.639> I'm<01:35:28.880> definitely<01:35:29.120> not<01:35:29.360> Neo.<01:35:30.480> I<01:35:30.639> think<01:35:30.960> so.<01:35:31.360> I" + }, + { + "start": 5731.59, + "duration": 0.0, + "text": "I I'm definitely not Neo. I think so. I" + }, + { + "start": 5731.6, + "duration": 0.0, + "text": "I I'm definitely not Neo. I think so. I think<01:35:31.920> um<01:35:32.560> I<01:35:32.880> think<01:35:33.040> that<01:35:33.520> where<01:35:33.920> people<01:35:34.719> where" + }, + { + "start": 5735.03, + "duration": 0.0, + "text": "think um I think that where people where" + }, + { + "start": 5735.04, + "duration": 0.0, + "text": "think um I think that where people where I've<01:35:35.280> screwed<01:35:35.520> up<01:35:35.679> in<01:35:35.920> the<01:35:36.000> past<01:35:36.239> and<01:35:36.480> where<01:35:36.800> I" + }, + { + "start": 5737.11, + "duration": 0.0, + "text": "I've screwed up in the past and where I" + }, + { + "start": 5737.12, + "duration": 0.0, + "text": "I've screwed up in the past and where I think<01:35:37.440> a<01:35:37.679> lot<01:35:37.760> of<01:35:37.920> those<01:35:38.159> designs<01:35:38.560> are<01:35:38.719> screwed" + }, + { + "start": 5739.03, + "duration": 0.0, + "text": "think a lot of those designs are screwed" + }, + { + "start": 5739.04, + "duration": 0.0, + "text": "think a lot of those designs are screwed up<01:35:39.360> is<01:35:39.600> when<01:35:39.760> they<01:35:39.920> try<01:35:40.080> to<01:35:40.159> abstract<01:35:40.639> over" + }, + { + "start": 5740.95, + "duration": 0.0, + "text": "up is when they try to abstract over" + }, + { + "start": 5740.96, + "duration": 0.0, + "text": "up is when they try to abstract over like<01:35:41.199> they<01:35:41.360> have<01:35:41.520> like<01:35:41.679> one<01:35:42.080> interface<01:35:42.880> but" + }, + { + "start": 5743.11, + "duration": 0.0, + "text": "like they have like one interface but" + }, + { + "start": 5743.12, + "duration": 0.0, + "text": "like they have like one interface but that<01:35:43.280> interface<01:35:43.679> actually<01:35:43.920> implies<01:35:44.320> many" + }, + { + "start": 5744.629, + "duration": 0.0, + "text": "that interface actually implies many" + }, + { + "start": 5744.639, + "duration": 0.0, + "text": "that interface actually implies many concrete<01:35:45.120> realities.<01:35:45.600> And<01:35:45.760> I<01:35:45.920> think<01:35:46.080> people<01:35:46.639> I" + }, + { + "start": 5746.95, + "duration": 0.0, + "text": "concrete realities. And I think people I" + }, + { + "start": 5746.96, + "duration": 0.0, + "text": "concrete realities. And I think people I think<01:35:47.040> people<01:35:47.360> lie<01:35:47.600> to<01:35:47.679> themselves<01:35:48.080> a<01:35:48.239> little" + }, + { + "start": 5748.31, + "duration": 0.0, + "text": "think people lie to themselves a little" + }, + { + "start": 5748.32, + "duration": 0.0, + "text": "think people lie to themselves a little bit<01:35:48.480> about<01:35:48.800> how<01:35:49.360> little<01:35:50.000> concret<01:35:50.560> they<01:35:50.800> they" + }, + { + "start": 5751.03, + "duration": 0.0, + "text": "bit about how little concret they they" + }, + { + "start": 5751.04, + "duration": 0.0, + "text": "bit about how little concret they they lie<01:35:51.199> to<01:35:51.360> themselves<01:35:51.679> about<01:35:51.840> how<01:35:52.080> many" + }, + { + "start": 5752.39, + "duration": 0.0, + "text": "lie to themselves about how many" + }, + { + "start": 5752.4, + "duration": 0.0, + "text": "lie to themselves about how many concrete<01:35:52.880> details<01:35:53.280> actually<01:35:53.520> float<01:35:53.840> up<01:35:53.920> and" + }, + { + "start": 5754.149, + "duration": 0.0, + "text": "concrete details actually float up and" + }, + { + "start": 5754.159, + "duration": 0.0, + "text": "concrete details actually float up and are<01:35:54.320> needed<01:35:54.560> in<01:35:54.719> the<01:35:54.880> abstraction.<01:35:55.840> And<01:35:56.080> so," + }, + { + "start": 5756.79, + "duration": 0.0, + "text": "are needed in the abstraction. And so," + }, + { + "start": 5756.8, + "duration": 0.0, + "text": "are needed in the abstraction. And so, um,<01:35:57.120> those<01:35:57.360> abstractions<01:35:57.920> get<01:35:58.080> pretty" + }, + { + "start": 5758.31, + "duration": 0.0, + "text": "um, those abstractions get pretty" + }, + { + "start": 5758.32, + "duration": 0.0, + "text": "um, those abstractions get pretty brittle<01:35:58.719> and<01:35:58.960> leaky<01:35:59.520> and,<01:36:00.159> um,<01:36:00.719> and<01:36:00.960> so<01:36:02.159> I" + }, + { + "start": 5762.39, + "duration": 0.0, + "text": "brittle and leaky and, um, and so I" + }, + { + "start": 5762.4, + "duration": 0.0, + "text": "brittle and leaky and, um, and so I think<01:36:02.480> it's<01:36:02.800> that<01:36:03.120> root<01:36:03.440> problem<01:36:03.760> where<01:36:03.920> it's" + }, + { + "start": 5764.07, + "duration": 0.0, + "text": "think it's that root problem where it's" + }, + { + "start": 5764.08, + "duration": 0.0, + "text": "think it's that root problem where it's like<01:36:04.239> you've<01:36:04.480> got<01:36:04.639> one<01:36:04.880> thing<01:36:05.120> you<01:36:05.360> want<01:36:05.440> to" + }, + { + "start": 5765.59, + "duration": 0.0, + "text": "like you've got one thing you want to" + }, + { + "start": 5765.6, + "duration": 0.0, + "text": "like you've got one thing you want to treat<01:36:05.760> as<01:36:06.000> one<01:36:06.159> thing,<01:36:06.560> but<01:36:06.800> it's<01:36:07.040> secretly" + }, + { + "start": 5767.51, + "duration": 0.0, + "text": "treat as one thing, but it's secretly" + }, + { + "start": 5767.52, + "duration": 0.0, + "text": "treat as one thing, but it's secretly multiple<01:36:07.920> things<01:36:08.320> and<01:36:08.639> you<01:36:08.880> don't<01:36:09.040> want<01:36:09.199> to" + }, + { + "start": 5769.35, + "duration": 0.0, + "text": "multiple things and you don't want to" + }, + { + "start": 5769.36, + "duration": 0.0, + "text": "multiple things and you don't want to pretend<01:36:09.600> that<01:36:09.760> it's<01:36:10.000> multiple<01:36:10.320> things.<01:36:10.560> Now," + }, + { + "start": 5771.03, + "duration": 0.0, + "text": "pretend that it's multiple things. Now," + }, + { + "start": 5771.04, + "duration": 0.0, + "text": "pretend that it's multiple things. Now, the<01:36:11.280> way<01:36:11.360> that<01:36:11.520> I<01:36:11.760> tend<01:36:12.000> to<01:36:12.159> think<01:36:12.239> about<01:36:12.400> it<01:36:12.560> is" + }, + { + "start": 5772.79, + "duration": 0.0, + "text": "the way that I tend to think about it is" + }, + { + "start": 5772.8, + "duration": 0.0, + "text": "the way that I tend to think about it is like<01:36:12.960> I'm<01:36:13.199> always<01:36:13.520> trying<01:36:13.760> to<01:36:14.000> take<01:36:14.239> a<01:36:14.560> path" + }, + { + "start": 5774.95, + "duration": 0.0, + "text": "like I'm always trying to take a path" + }, + { + "start": 5774.96, + "duration": 0.0, + "text": "like I'm always trying to take a path that's<01:36:15.280> doing<01:36:15.520> some<01:36:15.760> work.<01:36:16.000> So,<01:36:16.239> in<01:36:16.400> the<01:36:16.480> case" + }, + { + "start": 5776.55, + "duration": 0.0, + "text": "that's doing some work. So, in the case" + }, + { + "start": 5776.56, + "duration": 0.0, + "text": "that's doing some work. So, in the case of<01:36:16.719> the<01:36:16.800> visual<01:36:17.199> uh,<01:36:17.280> the<01:36:17.440> evaluation<01:36:18.159> system," + }, + { + "start": 5779.669, + "duration": 0.0, + "text": "of the visual uh, the evaluation system," + }, + { + "start": 5779.679, + "duration": 0.0, + "text": "of the visual uh, the evaluation system, I<01:36:19.920> started<01:36:20.239> with<01:36:20.400> just<01:36:20.560> the<01:36:20.800> debug" + }, + { + "start": 5781.43, + "duration": 0.0, + "text": "I started with just the debug" + }, + { + "start": 5781.44, + "duration": 0.0, + "text": "I started with just the debug evaluation.<01:36:22.000> So<01:36:22.159> I<01:36:22.320> started<01:36:22.480> with<01:36:22.639> like<01:36:22.960> look," + }, + { + "start": 5783.11, + "duration": 0.0, + "text": "evaluation. So I started with like look," + }, + { + "start": 5783.12, + "duration": 0.0, + "text": "evaluation. So I started with like look, I've<01:36:23.280> got<01:36:23.360> an<01:36:23.520> address<01:36:23.760> space.<01:36:24.000> I've<01:36:24.159> got<01:36:24.239> a" + }, + { + "start": 5784.47, + "duration": 0.0, + "text": "I've got an address space. I've got a" + }, + { + "start": 5784.48, + "duration": 0.0, + "text": "I've got an address space. I've got a selected<01:36:24.880> thread<01:36:25.199> that's<01:36:25.440> inside<01:36:25.679> of<01:36:25.760> a" + }, + { + "start": 5786.47, + "duration": 0.0, + "text": "selected thread that's inside of a" + }, + { + "start": 5786.48, + "duration": 0.0, + "text": "selected thread that's inside of a debug.<01:36:27.199> I<01:36:27.440> can<01:36:27.520> evaluate<01:36:28.000> things<01:36:28.159> inside<01:36:28.480> of" + }, + { + "start": 5788.629, + "duration": 0.0, + "text": "debug. I can evaluate things inside of" + }, + { + "start": 5788.639, + "duration": 0.0, + "text": "debug. I can evaluate things inside of that.<01:36:29.440> Um,<01:36:30.639> and<01:36:31.120> what<01:36:31.440> I<01:36:31.600> I<01:36:32.080> at<01:36:32.239> some<01:36:32.480> point<01:36:32.719> I" + }, + { + "start": 5793.11, + "duration": 0.0, + "text": "that. Um, and what I I at some point I" + }, + { + "start": 5793.12, + "duration": 0.0, + "text": "that. Um, and what I I at some point I thought<01:36:33.679> hard<01:36:33.920> about<01:36:34.080> it<01:36:34.239> and<01:36:34.400> I<01:36:34.639> noticed<01:36:34.880> that" + }, + { + "start": 5795.11, + "duration": 0.0, + "text": "thought hard about it and I noticed that" + }, + { + "start": 5795.12, + "duration": 0.0, + "text": "thought hard about it and I noticed that like<01:36:35.360> this<01:36:35.600> file<01:36:35.920> system<01:36:36.719> split<01:36:37.120> was<01:36:37.360> going<01:36:37.440> to" + }, + { + "start": 5797.51, + "duration": 0.0, + "text": "like this file system split was going to" + }, + { + "start": 5797.52, + "duration": 0.0, + "text": "like this file system split was going to be<01:36:37.600> a<01:36:37.840> problem.<01:36:38.800> Um," + }, + { + "start": 5800.31, + "duration": 0.0, + "text": "be a problem. Um," + }, + { + "start": 5800.32, + "duration": 0.0, + "text": "be a problem. Um, and<01:36:40.560> so<01:36:40.719> I<01:36:40.960> needed<01:36:41.199> to<01:36:41.360> find<01:36:41.520> a<01:36:41.679> way<01:36:41.840> to<01:36:42.000> take" + }, + { + "start": 5802.229, + "duration": 0.0, + "text": "and so I needed to find a way to take" + }, + { + "start": 5802.239, + "duration": 0.0, + "text": "and so I needed to find a way to take the<01:36:42.480> existing<01:36:42.800> code<01:36:43.120> path<01:36:43.840> and<01:36:44.239> like<01:36:44.560> kind<01:36:44.800> of" + }, + { + "start": 5804.87, + "duration": 0.0, + "text": "the existing code path and like kind of" + }, + { + "start": 5804.88, + "duration": 0.0, + "text": "the existing code path and like kind of just<01:36:45.040> widen<01:36:45.440> it.<01:36:45.600> Like<01:36:45.760> you<01:36:45.920> want<01:36:46.000> to<01:36:46.080> just<01:36:46.239> say" + }, + { + "start": 5806.47, + "duration": 0.0, + "text": "just widen it. Like you want to just say" + }, + { + "start": 5806.48, + "duration": 0.0, + "text": "just widen it. Like you want to just say this<01:36:46.719> is<01:36:47.040> expressing<01:36:47.600> more<01:36:48.320> than<01:36:48.719> what<01:36:48.960> it<01:36:49.119> was" + }, + { + "start": 5809.35, + "duration": 0.0, + "text": "this is expressing more than what it was" + }, + { + "start": 5809.36, + "duration": 0.0, + "text": "this is expressing more than what it was before.<01:36:49.840> So<01:36:50.000> it's<01:36:50.239> actually<01:36:50.400> the<01:36:50.560> same" + }, + { + "start": 5810.79, + "duration": 0.0, + "text": "before. So it's actually the same" + }, + { + "start": 5810.8, + "duration": 0.0, + "text": "before. So it's actually the same concrete<01:36:51.199> code<01:36:51.440> path.<01:36:51.920> It's<01:36:52.080> not<01:36:52.159> an" + }, + { + "start": 5812.31, + "duration": 0.0, + "text": "concrete code path. It's not an" + }, + { + "start": 5812.32, + "duration": 0.0, + "text": "concrete code path. It's not an abstraction<01:36:52.719> over<01:36:52.960> many<01:36:53.199> things.<01:36:53.440> It's<01:36:53.600> just" + }, + { + "start": 5813.75, + "duration": 0.0, + "text": "abstraction over many things. It's just" + }, + { + "start": 5813.76, + "duration": 0.0, + "text": "abstraction over many things. It's just one<01:36:54.000> thing<01:36:54.400> which<01:36:54.719> contains<01:36:55.040> more" + }, + { + "start": 5815.27, + "duration": 0.0, + "text": "one thing which contains more" + }, + { + "start": 5815.28, + "duration": 0.0, + "text": "one thing which contains more information.<01:36:56.159> And<01:36:56.719> once<01:36:56.960> you<01:36:57.199> get<01:36:57.280> to<01:36:57.440> that" + }, + { + "start": 5817.59, + "duration": 0.0, + "text": "information. And once you get to that" + }, + { + "start": 5817.6, + "duration": 0.0, + "text": "information. And once you get to that point,<01:36:57.840> it's<01:36:58.000> like,<01:36:58.400> you<01:36:58.480> know,<01:36:58.639> you<01:36:58.719> could" + }, + { + "start": 5818.87, + "duration": 0.0, + "text": "point, it's like, you know, you could" + }, + { + "start": 5818.88, + "duration": 0.0, + "text": "point, it's like, you know, you could make<01:36:58.960> the<01:36:59.199> argument<01:36:59.440> it's<01:36:59.600> like,<01:36:59.760> well,<01:37:00.000> now" + }, + { + "start": 5820.149, + "duration": 0.0, + "text": "make the argument it's like, well, now" + }, + { + "start": 5820.159, + "duration": 0.0, + "text": "make the argument it's like, well, now the<01:37:00.320> space<01:37:00.480> is<01:37:00.719> being<01:37:00.960> specified<01:37:01.600> when<01:37:02.080> it" + }, + { + "start": 5822.229, + "duration": 0.0, + "text": "the space is being specified when it" + }, + { + "start": 5822.239, + "duration": 0.0, + "text": "the space is being specified when it doesn't<01:37:02.480> need<01:37:02.560> to<01:37:02.639> be<01:37:02.880> or<01:37:03.199> it's<01:37:03.360> like<01:37:03.840> it's" + }, + { + "start": 5824.07, + "duration": 0.0, + "text": "doesn't need to be or it's like it's" + }, + { + "start": 5824.08, + "duration": 0.0, + "text": "doesn't need to be or it's like it's like<01:37:04.800> just<01:37:05.119> store<01:37:05.440> the<01:37:05.679> space,<01:37:06.000> dude.<01:37:06.320> Like" + }, + { + "start": 5826.47, + "duration": 0.0, + "text": "like just store the space, dude. Like" + }, + { + "start": 5826.48, + "duration": 0.0, + "text": "like just store the space, dude. Like it's<01:37:06.719> not<01:37:06.800> that<01:37:06.960> much<01:37:07.199> data.<01:37:07.520> It's<01:37:07.760> it's<01:37:07.920> it's" + }, + { + "start": 5828.149, + "duration": 0.0, + "text": "it's not that much data. It's it's it's" + }, + { + "start": 5828.159, + "duration": 0.0, + "text": "it's not that much data. It's it's it's it's<01:37:08.719> tiny.<01:37:09.119> You're<01:37:09.280> making<01:37:09.440> it<01:37:09.600> more" + }, + { + "start": 5829.75, + "duration": 0.0, + "text": "it's tiny. You're making it more" + }, + { + "start": 5829.76, + "duration": 0.0, + "text": "it's tiny. You're making it more flexible,<01:37:10.159> basically.<01:37:10.560> So<01:37:10.639> I<01:37:10.880> so<01:37:11.040> I<01:37:11.199> try<01:37:11.360> to" + }, + { + "start": 5831.99, + "duration": 0.0, + "text": "flexible, basically. So I so I try to" + }, + { + "start": 5832.0, + "duration": 0.0, + "text": "flexible, basically. So I so I try to take<01:37:12.239> that<01:37:12.400> approach<01:37:12.639> where<01:37:12.800> it's<01:37:13.040> like<01:37:13.360> start" + }, + { + "start": 5833.669, + "duration": 0.0, + "text": "take that approach where it's like start" + }, + { + "start": 5833.679, + "duration": 0.0, + "text": "take that approach where it's like start with<01:37:14.320> start<01:37:14.560> by<01:37:14.880> laying<01:37:15.040> out<01:37:15.119> my<01:37:15.360> constraints" + }, + { + "start": 5835.75, + "duration": 0.0, + "text": "with start by laying out my constraints" + }, + { + "start": 5835.76, + "duration": 0.0, + "text": "with start by laying out my constraints as<01:37:15.920> many<01:37:16.080> as<01:37:16.239> I<01:37:16.400> know<01:37:17.040> build<01:37:17.199> a<01:37:17.360> path<01:37:17.600> which" + }, + { + "start": 5837.83, + "duration": 0.0, + "text": "as many as I know build a path which" + }, + { + "start": 5837.84, + "duration": 0.0, + "text": "as many as I know build a path which supports<01:37:18.239> those<01:37:18.719> and<01:37:18.960> then<01:37:19.119> try<01:37:19.280> to<01:37:19.440> fit<01:37:19.679> more" + }, + { + "start": 5839.83, + "duration": 0.0, + "text": "supports those and then try to fit more" + }, + { + "start": 5839.84, + "duration": 0.0, + "text": "supports those and then try to fit more constraints<01:37:20.320> into<01:37:20.480> it<01:37:20.639> and<01:37:20.880> sort<01:37:21.040> of<01:37:21.199> widen" + }, + { + "start": 5841.51, + "duration": 0.0, + "text": "constraints into it and sort of widen" + }, + { + "start": 5841.52, + "duration": 0.0, + "text": "constraints into it and sort of widen the<01:37:21.679> possibility<01:37:22.159> space<01:37:22.480> as<01:37:22.639> as<01:37:23.040> possible." + }, + { + "start": 5843.35, + "duration": 0.0, + "text": "the possibility space as as possible." + }, + { + "start": 5843.36, + "duration": 0.0, + "text": "the possibility space as as possible. It's<01:37:23.520> super<01:37:23.920> super<01:37:24.239> abstract.<01:37:24.719> It's<01:37:24.880> really" + }, + { + "start": 5845.03, + "duration": 0.0, + "text": "It's super super abstract. It's really" + }, + { + "start": 5845.04, + "duration": 0.0, + "text": "It's super super abstract. It's really hard<01:37:25.119> to<01:37:25.280> describe<01:37:25.600> how<01:37:25.679> I<01:37:25.840> think<01:37:25.920> about<01:37:26.080> it" + }, + { + "start": 5846.149, + "duration": 0.0, + "text": "hard to describe how I think about it" + }, + { + "start": 5846.159, + "duration": 0.0, + "text": "hard to describe how I think about it but<01:37:26.400> hopefully<01:37:26.719> that's<01:37:27.119> some<01:37:27.360> some<01:37:27.679> degree<01:37:27.920> of" + }, + { + "start": 5848.07, + "duration": 0.0, + "text": "but hopefully that's some some degree of" + }, + { + "start": 5848.08, + "duration": 0.0, + "text": "but hopefully that's some some degree of insight<01:37:28.480> into<01:37:28.719> it." + }, + { + "start": 5849.109, + "duration": 0.0, + "text": "insight into it." + }, + { + "start": 5849.119, + "duration": 0.0, + "text": "insight into it. >> So<01:37:29.440> uh<01:37:29.760> can<01:37:29.920> you<01:37:30.080> rephrase<01:37:30.400> that<01:37:30.639> as<01:37:30.800> kind<01:37:30.960> of" + }, + { + "start": 5851.03, + "duration": 0.0, + "text": ">> So uh can you rephrase that as kind of" + }, + { + "start": 5851.04, + "duration": 0.0, + "text": ">> So uh can you rephrase that as kind of like<01:37:31.920> fat<01:37:32.320> strcts<01:37:32.719> instead<01:37:33.119> of<01:37:33.679> right" + }, + { + "start": 5854.229, + "duration": 0.0, + "text": "like fat strcts instead of right" + }, + { + "start": 5854.239, + "duration": 0.0, + "text": "like fat strcts instead of right >> uh<01:37:34.719> domain<01:37:35.199> model<01:37:35.840> statically<01:37:36.880> whatever<01:37:37.199> the" + }, + { + "start": 5857.35, + "duration": 0.0, + "text": ">> uh domain model statically whatever the" + }, + { + "start": 5857.36, + "duration": 0.0, + "text": ">> uh domain model statically whatever the thing<01:37:37.440> was<01:37:37.679> that<01:37:37.920> I<01:37:38.159> can't<01:37:38.320> remember.<01:37:38.880> Yeah," + }, + { + "start": 5859.35, + "duration": 0.0, + "text": "thing was that I can't remember. Yeah," + }, + { + "start": 5859.36, + "duration": 0.0, + "text": "thing was that I can't remember. Yeah, we're<01:37:39.600> team<01:37:39.760> Plex<01:37:40.159> basically.<01:37:40.639> So<01:37:40.880> that's" + }, + { + "start": 5861.109, + "duration": 0.0, + "text": "we're team Plex basically. So that's" + }, + { + "start": 5861.119, + "duration": 0.0, + "text": "we're team Plex basically. So that's Plex.<01:37:41.600> It's<01:37:41.840> Plex<01:37:42.159> programming.<01:37:42.560> Yeah." + }, + { + "start": 5862.79, + "duration": 0.0, + "text": "Plex. It's Plex programming. Yeah." + }, + { + "start": 5862.8, + "duration": 0.0, + "text": "Plex. It's Plex programming. Yeah. >> For<01:37:42.880> people<01:37:43.119> who<01:37:43.280> don't<01:37:43.360> know<01:37:43.440> what<01:37:43.679> Plex<01:37:44.000> is," + }, + { + "start": 5864.31, + "duration": 0.0, + "text": ">> For people who don't know what Plex is," + }, + { + "start": 5864.32, + "duration": 0.0, + "text": ">> For people who don't know what Plex is, watch<01:37:44.560> yesterday's<01:37:45.040> stream.<01:37:45.520> Uh<01:37:45.840> you<01:37:46.000> should" + }, + { + "start": 5866.229, + "duration": 0.0, + "text": "watch yesterday's stream. Uh you should" + }, + { + "start": 5866.239, + "duration": 0.0, + "text": "watch yesterday's stream. Uh you should watch<01:37:46.320> it<01:37:46.480> anyways.<01:37:46.880> It's<01:37:47.119> good.<01:37:47.760> Um<01:37:48.800> right." + }, + { + "start": 5869.109, + "duration": 0.0, + "text": "watch it anyways. It's good. Um right." + }, + { + "start": 5869.119, + "duration": 0.0, + "text": "watch it anyways. It's good. Um right. Yeah,<01:37:49.280> because<01:37:49.520> I<01:37:49.760> struggled<01:37:50.159> like<01:37:50.480> when<01:37:50.719> I" + }, + { + "start": 5870.95, + "duration": 0.0, + "text": "Yeah, because I struggled like when I" + }, + { + "start": 5870.96, + "duration": 0.0, + "text": "Yeah, because I struggled like when I design<01:37:51.360> systems,<01:37:51.920> I<01:37:52.159> don't<01:37:52.239> have<01:37:52.400> your<01:37:52.719> skill" + }, + { + "start": 5873.03, + "duration": 0.0, + "text": "design systems, I don't have your skill" + }, + { + "start": 5873.04, + "duration": 0.0, + "text": "design systems, I don't have your skill like<01:37:53.280> often<01:37:53.679> like<01:37:54.159> the<01:37:54.400> building<01:37:54.719> blocks" + }, + { + "start": 5875.109, + "duration": 0.0, + "text": "like often like the building blocks" + }, + { + "start": 5875.119, + "duration": 0.0, + "text": "like often like the building blocks don't<01:37:55.280> quite<01:37:55.600> fit<01:37:55.840> and<01:37:56.080> they<01:37:56.480> give<01:37:56.639> me<01:37:56.880> more" + }, + { + "start": 5877.109, + "duration": 0.0, + "text": "don't quite fit and they give me more" + }, + { + "start": 5877.119, + "duration": 0.0, + "text": "don't quite fit and they give me more complexity<01:37:57.760> with<01:37:58.480> that<01:37:58.800> much<01:37:58.960> power<01:37:59.199> and<01:37:59.360> it" + }, + { + "start": 5879.59, + "duration": 0.0, + "text": "complexity with that much power and it" + }, + { + "start": 5879.6, + "duration": 0.0, + "text": "complexity with that much power and it seems<01:37:59.760> like<01:38:00.159> I<01:38:00.400> want<01:38:00.560> to<01:38:01.040> like<01:38:01.360> I<01:38:01.600> would<01:38:01.679> like" + }, + { + "start": 5881.75, + "duration": 0.0, + "text": "seems like I want to like I would like" + }, + { + "start": 5881.76, + "duration": 0.0, + "text": "seems like I want to like I would like to<01:38:01.920> hit<01:38:02.080> that<01:38:02.239> sweet<01:38:02.400> spot.<01:38:02.639> I<01:38:02.800> see<01:38:02.960> that.<01:38:03.520> Um" + }, + { + "start": 5884.47, + "duration": 0.0, + "text": "to hit that sweet spot. I see that. Um" + }, + { + "start": 5884.48, + "duration": 0.0, + "text": "to hit that sweet spot. I see that. Um well<01:38:04.800> let's<01:38:05.040> get<01:38:05.199> more<01:38:05.440> into<01:38:05.679> before<01:38:05.920> I<01:38:06.080> open" + }, + { + "start": 5886.31, + "duration": 0.0, + "text": "well let's get more into before I open" + }, + { + "start": 5886.32, + "duration": 0.0, + "text": "well let's get more into before I open to<01:38:06.560> the<01:38:06.880> like<01:38:07.600> to<01:38:07.840> the<01:38:08.000> audience.<01:38:08.880> Um<01:38:09.119> I<01:38:09.280> have<01:38:09.360> a" + }, + { + "start": 5889.51, + "duration": 0.0, + "text": "to the like to the audience. Um I have a" + }, + { + "start": 5889.52, + "duration": 0.0, + "text": "to the like to the audience. Um I have a few<01:38:09.679> more<01:38:09.760> questions<01:38:10.000> about<01:38:10.159> the<01:38:10.320> debugger" + }, + { + "start": 5890.629, + "duration": 0.0, + "text": "few more questions about the debugger" + }, + { + "start": 5890.639, + "duration": 0.0, + "text": "few more questions about the debugger itself.<01:38:10.960> We<01:38:11.119> did<01:38:11.280> you<01:38:11.440> didn't<01:38:11.679> talk<01:38:11.840> about<01:38:11.920> the" + }, + { + "start": 5892.149, + "duration": 0.0, + "text": "itself. We did you didn't talk about the" + }, + { + "start": 5892.159, + "duration": 0.0, + "text": "itself. We did you didn't talk about the red<01:38:12.480> debugger<01:38:13.199> details<01:38:13.920> very<01:38:14.239> much<01:38:14.480> like" + }, + { + "start": 5895.27, + "duration": 0.0, + "text": "red debugger details very much like" + }, + { + "start": 5895.28, + "duration": 0.0, + "text": "red debugger details very much like >> very<01:38:15.600> much<01:38:15.760> but<01:38:16.159> you<01:38:16.400> have<01:38:16.560> your<01:38:16.800> own<01:38:17.360> debug" + }, + { + "start": 5897.83, + "duration": 0.0, + "text": ">> very much but you have your own debug" + }, + { + "start": 5897.84, + "duration": 0.0, + "text": ">> very much but you have your own debug info<01:38:18.320> format." + }, + { + "start": 5899.03, + "duration": 0.0, + "text": "info format." + }, + { + "start": 5899.04, + "duration": 0.0, + "text": "info format. >> Yes." + }, + { + "start": 5899.51, + "duration": 0.0, + "text": ">> Yes." + }, + { + "start": 5899.52, + "duration": 0.0, + "text": ">> Yes. >> And<01:38:19.920> you<01:38:20.159> convert<01:38:20.639> from<01:38:21.520> uh<01:38:21.760> code<01:38:22.000> view<01:38:22.239> which" + }, + { + "start": 5902.39, + "duration": 0.0, + "text": ">> And you convert from uh code view which" + }, + { + "start": 5902.4, + "duration": 0.0, + "text": ">> And you convert from uh code view which is<01:38:22.480> the<01:38:22.639> Microsoft<01:38:23.119> format<01:38:23.520> that's<01:38:23.760> stored<01:38:23.920> in" + }, + { + "start": 5904.07, + "duration": 0.0, + "text": "is the Microsoft format that's stored in" + }, + { + "start": 5904.08, + "duration": 0.0, + "text": "is the Microsoft format that's stored in PDB<01:38:25.040> um<01:38:25.280> to<01:38:25.520> that." + }, + { + "start": 5906.149, + "duration": 0.0, + "text": "PDB um to that." + }, + { + "start": 5906.159, + "duration": 0.0, + "text": "PDB um to that. >> Mhm.<01:38:26.800> What<01:38:27.280> prompted<01:38:27.760> that<01:38:28.239> and<01:38:28.719> like<01:38:28.960> how<01:38:29.199> did" + }, + { + "start": 5909.35, + "duration": 0.0, + "text": ">> Mhm. What prompted that and like how did" + }, + { + "start": 5909.36, + "duration": 0.0, + "text": ">> Mhm. What prompted that and like how did you<01:38:29.520> design<01:38:29.760> that<01:38:30.000> dra<01:38:30.320> debug<01:38:30.560> info<01:38:30.960> format" + }, + { + "start": 5911.27, + "duration": 0.0, + "text": "you design that dra debug info format" + }, + { + "start": 5911.28, + "duration": 0.0, + "text": "you design that dra debug info format like<01:38:31.440> how<01:38:31.520> is<01:38:31.679> it<01:38:31.840> different<01:38:32.000> from<01:38:32.320> the<01:38:32.480> war" + }, + { + "start": 5912.629, + "duration": 0.0, + "text": "like how is it different from the war" + }, + { + "start": 5912.639, + "duration": 0.0, + "text": "like how is it different from the war for<01:38:32.800> code<01:38:33.280> that's<01:38:33.520> very<01:38:33.840> like<01:38:34.320> into<01:38:35.280> I<01:38:35.440> I<01:38:35.840> wrote" + }, + { + "start": 5915.99, + "duration": 0.0, + "text": "for code that's very like into I I wrote" + }, + { + "start": 5916.0, + "duration": 0.0, + "text": "for code that's very like into I I wrote a<01:38:36.159> debugger<01:38:36.560> myself<01:38:36.880> I<01:38:37.040> generate<01:38:37.360> debug<01:38:37.679> info" + }, + { + "start": 5917.91, + "duration": 0.0, + "text": "a debugger myself I generate debug info" + }, + { + "start": 5917.92, + "duration": 0.0, + "text": "a debugger myself I generate debug info as<01:38:38.080> part<01:38:38.239> of<01:38:38.320> the<01:38:38.480> J<01:38:38.719> compilers<01:38:39.040> that<01:38:39.280> this<01:38:39.440> is" + }, + { + "start": 5919.51, + "duration": 0.0, + "text": "as part of the J compilers that this is" + }, + { + "start": 5919.52, + "duration": 0.0, + "text": "as part of the J compilers that this is like<01:38:39.760> my<01:38:40.320> this<01:38:40.560> is<01:38:40.960> my<01:38:41.199> what<01:38:41.520> interests<01:38:41.760> me<01:38:41.920> I'm" + }, + { + "start": 5922.07, + "duration": 0.0, + "text": "like my this is my what interests me I'm" + }, + { + "start": 5922.08, + "duration": 0.0, + "text": "like my this is my what interests me I'm sorry<01:38:42.159> if<01:38:42.320> it's<01:38:42.480> not<01:38:42.560> for<01:38:42.719> everyone<01:38:43.040> but<01:38:43.360> like" + }, + { + "start": 5923.75, + "duration": 0.0, + "text": "sorry if it's not for everyone but like" + }, + { + "start": 5923.76, + "duration": 0.0, + "text": "sorry if it's not for everyone but like how<01:38:44.000> did<01:38:44.159> you<01:38:44.960> uh<01:38:46.000> what<01:38:46.239> what<01:38:46.560> went<01:38:46.719> into" + }, + { + "start": 5926.95, + "duration": 0.0, + "text": "how did you uh what what went into" + }, + { + "start": 5926.96, + "duration": 0.0, + "text": "how did you uh what what went into designing<01:38:47.360> the<01:38:47.440> right<01:38:47.679> debugging<01:38:48.080> for<01:38:48.239> format" + }, + { + "start": 5928.47, + "duration": 0.0, + "text": "designing the right debugging for format" + }, + { + "start": 5928.48, + "duration": 0.0, + "text": "designing the right debugging for format and<01:38:48.719> why<01:38:48.800> is<01:38:48.960> it<01:38:49.119> better<01:38:49.440> than<01:38:49.679> PDB<01:38:50.159> like<01:38:50.400> why" + }, + { + "start": 5930.55, + "duration": 0.0, + "text": "and why is it better than PDB like why" + }, + { + "start": 5930.56, + "duration": 0.0, + "text": "and why is it better than PDB like why why<01:38:50.639> is<01:38:50.800> it<01:38:50.960> worth<01:38:51.119> transforming" + }, + { + "start": 5931.99, + "duration": 0.0, + "text": "why is it worth transforming" + }, + { + "start": 5932.0, + "duration": 0.0, + "text": "why is it worth transforming >> yeah<01:38:52.239> so<01:38:52.800> um<01:38:53.600> the<01:38:53.840> the<01:38:54.239> reason<01:38:54.400> why<01:38:55.440> uh<01:38:55.840> So<01:38:56.239> the" + }, + { + "start": 5936.55, + "duration": 0.0, + "text": ">> yeah so um the the reason why uh So the" + }, + { + "start": 5936.56, + "duration": 0.0, + "text": ">> yeah so um the the reason why uh So the reason<01:38:56.719> why<01:38:56.960> that<01:38:57.199> whole<01:38:57.440> that<01:38:57.760> whole<01:38:58.000> thing" + }, + { + "start": 5938.229, + "duration": 0.0, + "text": "reason why that whole that whole thing" + }, + { + "start": 5938.239, + "duration": 0.0, + "text": "reason why that whole that whole thing started<01:38:59.040> when<01:38:59.280> I<01:38:59.440> originally<01:38:59.840> joined<01:39:00.159> the" + }, + { + "start": 5940.39, + "duration": 0.0, + "text": "started when I originally joined the" + }, + { + "start": 5940.4, + "duration": 0.0, + "text": "started when I originally joined the project<01:39:01.040> we<01:39:01.360> the<01:39:01.679> team<01:39:02.080> was<01:39:02.400> working<01:39:02.719> on<01:39:03.840> uh" + }, + { + "start": 5943.99, + "duration": 0.0, + "text": "project we the team was working on uh" + }, + { + "start": 5944.0, + "duration": 0.0, + "text": "project we the team was working on uh debug<01:39:04.320> info<01:39:04.719> parsing.<01:39:05.119> Now<01:39:05.360> if<01:39:05.520> you<01:39:05.600> want<01:39:05.760> to" + }, + { + "start": 5946.07, + "duration": 0.0, + "text": "debug info parsing. Now if you want to" + }, + { + "start": 5946.08, + "duration": 0.0, + "text": "debug info parsing. Now if you want to support<01:39:06.480> a<01:39:06.719> debugger<01:39:07.199> that's<01:39:07.520> like<01:39:07.679> a<01:39:07.920> un<01:39:08.400> it's" + }, + { + "start": 5948.629, + "duration": 0.0, + "text": "support a debugger that's like a un it's" + }, + { + "start": 5948.639, + "duration": 0.0, + "text": "support a debugger that's like a un it's like<01:39:08.800> a<01:39:08.960> uniform<01:39:09.360> debugger<01:39:10.000> that<01:39:10.320> works<01:39:10.560> on" + }, + { + "start": 5950.95, + "duration": 0.0, + "text": "like a uniform debugger that works on" + }, + { + "start": 5950.96, + "duration": 0.0, + "text": "like a uniform debugger that works on both<01:39:11.199> Windows<01:39:11.520> and<01:39:11.679> Linux<01:39:12.000> like<01:39:12.159> the<01:39:12.320> original" + }, + { + "start": 5952.709, + "duration": 0.0, + "text": "both Windows and Linux like the original" + }, + { + "start": 5952.719, + "duration": 0.0, + "text": "both Windows and Linux like the original ambition<01:39:13.119> of<01:39:13.199> the<01:39:13.360> project<01:39:13.600> was<01:39:13.840> Linux<01:39:14.719> uh<01:39:14.880> was" + }, + { + "start": 5955.03, + "duration": 0.0, + "text": "ambition of the project was Linux uh was" + }, + { + "start": 5955.04, + "duration": 0.0, + "text": "ambition of the project was Linux uh was a<01:39:15.119> Linux<01:39:15.440> debugger<01:39:15.840> good<01:39:16.000> Linux<01:39:16.239> debugger." + }, + { + "start": 5956.709, + "duration": 0.0, + "text": "a Linux debugger good Linux debugger." + }, + { + "start": 5956.719, + "duration": 0.0, + "text": "a Linux debugger good Linux debugger. So,<01:39:17.119> so<01:39:17.600> we<01:39:17.840> know<01:39:18.000> we<01:39:18.320> wanted<01:39:18.560> to<01:39:18.719> abstract" + }, + { + "start": 5959.35, + "duration": 0.0, + "text": "So, so we know we wanted to abstract" + }, + { + "start": 5959.36, + "duration": 0.0, + "text": "So, so we know we wanted to abstract over<01:39:19.760> those<01:39:20.000> two<01:39:20.239> possibilities<01:39:20.960> and<01:39:21.600> you" + }, + { + "start": 5961.75, + "duration": 0.0, + "text": "over those two possibilities and you" + }, + { + "start": 5961.76, + "duration": 0.0, + "text": "over those two possibilities and you know<01:39:22.000> you<01:39:22.239> kind<01:39:22.400> of<01:39:22.480> should<01:39:22.800> because<01:39:22.960> there's" + }, + { + "start": 5963.99, + "duration": 0.0, + "text": "know you kind of should because there's" + }, + { + "start": 5964.0, + "duration": 0.0, + "text": "know you kind of should because there's it's<01:39:24.239> just<01:39:24.400> two<01:39:24.639> different<01:39:24.960> ways<01:39:25.199> of<01:39:25.360> exposing" + }, + { + "start": 5965.75, + "duration": 0.0, + "text": "it's just two different ways of exposing" + }, + { + "start": 5965.76, + "duration": 0.0, + "text": "it's just two different ways of exposing the<01:39:25.920> same<01:39:26.080> information<01:39:26.400> from<01:39:26.639> the<01:39:26.800> underlying" + }, + { + "start": 5967.35, + "duration": 0.0, + "text": "the same information from the underlying" + }, + { + "start": 5967.36, + "duration": 0.0, + "text": "the same information from the underlying system<01:39:27.600> in<01:39:27.840> a<01:39:27.920> sense.<01:39:28.159> So<01:39:28.239> it's<01:39:28.400> like<01:39:28.480> you" + }, + { + "start": 5968.709, + "duration": 0.0, + "text": "system in a sense. So it's like you" + }, + { + "start": 5968.719, + "duration": 0.0, + "text": "system in a sense. So it's like you should<01:39:28.800> be<01:39:28.960> able<01:39:29.040> to.<01:39:29.360> So<01:39:29.679> so<01:39:29.920> we<01:39:30.159> started<01:39:30.800> and" + }, + { + "start": 5971.109, + "duration": 0.0, + "text": "should be able to. So so we started and" + }, + { + "start": 5971.119, + "duration": 0.0, + "text": "should be able to. So so we started and of<01:39:31.199> course<01:39:31.360> on<01:39:31.520> Windows<01:39:31.840> and<01:39:32.000> Linux<01:39:32.239> they<01:39:32.400> use" + }, + { + "start": 5972.55, + "duration": 0.0, + "text": "of course on Windows and Linux they use" + }, + { + "start": 5972.56, + "duration": 0.0, + "text": "of course on Windows and Linux they use two<01:39:32.719> different<01:39:32.880> tool<01:39:33.199> chains.<01:39:33.760> They<01:39:33.840> use<01:39:34.080> two" + }, + { + "start": 5974.229, + "duration": 0.0, + "text": "two different tool chains. They use two" + }, + { + "start": 5974.239, + "duration": 0.0, + "text": "two different tool chains. They use two different<01:39:34.400> debug<01:39:34.800> info<01:39:35.040> formats.<01:39:35.679> On<01:39:35.840> Linux" + }, + { + "start": 5976.07, + "duration": 0.0, + "text": "different debug info formats. On Linux" + }, + { + "start": 5976.08, + "duration": 0.0, + "text": "different debug info formats. On Linux you<01:39:36.239> have<01:39:36.320> dwarf.<01:39:36.719> Windows<01:39:36.960> you<01:39:37.119> have<01:39:37.199> PTB.<01:39:37.920> We" + }, + { + "start": 5978.07, + "duration": 0.0, + "text": "you have dwarf. Windows you have PTB. We" + }, + { + "start": 5978.08, + "duration": 0.0, + "text": "you have dwarf. Windows you have PTB. We were<01:39:38.159> building<01:39:38.400> an<01:39:38.560> abstract<01:39:39.280> uh<01:39:39.440> parsing" + }, + { + "start": 5979.83, + "duration": 0.0, + "text": "were building an abstract uh parsing" + }, + { + "start": 5979.84, + "duration": 0.0, + "text": "were building an abstract uh parsing library<01:39:40.239> for<01:39:40.480> it.<01:39:41.040> You<01:39:41.199> can<01:39:41.360> still<01:39:41.520> find<01:39:41.679> this" + }, + { + "start": 5981.83, + "duration": 0.0, + "text": "library for it. You can still find this" + }, + { + "start": 5981.84, + "duration": 0.0, + "text": "library for it. You can still find this code<01:39:42.080> online,<01:39:42.480> but<01:39:42.800> it's<01:39:43.199> uh<01:39:44.159> uh<01:39:44.400> it's<01:39:45.040> it" + }, + { + "start": 5985.43, + "duration": 0.0, + "text": "code online, but it's uh uh it's it" + }, + { + "start": 5985.44, + "duration": 0.0, + "text": "code online, but it's uh uh it's it basically<01:39:45.840> presents<01:39:46.239> an<01:39:46.480> interface<01:39:46.960> and<01:39:47.199> it" + }, + { + "start": 5987.27, + "duration": 0.0, + "text": "basically presents an interface and it" + }, + { + "start": 5987.28, + "duration": 0.0, + "text": "basically presents an interface and it go<01:39:47.440> it<01:39:47.600> does<01:39:47.760> that<01:39:47.920> abstraction<01:39:48.320> thing<01:39:48.560> I" + }, + { + "start": 5988.79, + "duration": 0.0, + "text": "go it does that abstraction thing I" + }, + { + "start": 5988.8, + "duration": 0.0, + "text": "go it does that abstraction thing I talked<01:39:48.960> about<01:39:49.119> where<01:39:49.360> it's<01:39:49.520> like<01:39:49.679> you<01:39:49.840> have" + }, + { + "start": 5989.99, + "duration": 0.0, + "text": "talked about where it's like you have" + }, + { + "start": 5990.0, + "duration": 0.0, + "text": "talked about where it's like you have one<01:39:50.239> interface<01:39:50.800> and<01:39:51.040> it<01:39:51.360> applies<01:39:51.679> to<01:39:51.840> two" + }, + { + "start": 5992.07, + "duration": 0.0, + "text": "one interface and it applies to two" + }, + { + "start": 5992.08, + "duration": 0.0, + "text": "one interface and it applies to two concrete<01:39:52.480> realities.<01:39:53.040> So<01:39:53.199> you've<01:39:53.520> got<01:39:53.679> a<01:39:53.920> PTB" + }, + { + "start": 5994.39, + "duration": 0.0, + "text": "concrete realities. So you've got a PTB" + }, + { + "start": 5994.4, + "duration": 0.0, + "text": "concrete realities. So you've got a PTB parser<01:39:54.719> as<01:39:54.880> one<01:39:55.040> backend<01:39:55.360> and<01:39:55.520> you've<01:39:55.679> got<01:39:55.760> a" + }, + { + "start": 5995.91, + "duration": 0.0, + "text": "parser as one backend and you've got a" + }, + { + "start": 5995.92, + "duration": 0.0, + "text": "parser as one backend and you've got a dwarf<01:39:56.320> parser<01:39:56.719> as<01:39:56.960> the<01:39:57.119> other<01:39:57.280> backend" + }, + { + "start": 5997.99, + "duration": 0.0, + "text": "dwarf parser as the other backend" + }, + { + "start": 5998.0, + "duration": 0.0, + "text": "dwarf parser as the other backend presented<01:39:58.480> through<01:39:58.639> the<01:39:58.800> same<01:39:58.960> interface." + }, + { + "start": 5999.91, + "duration": 0.0, + "text": "presented through the same interface." + }, + { + "start": 5999.92, + "duration": 0.0, + "text": "presented through the same interface. The<01:40:00.080> problem<01:40:00.320> is<01:40:00.480> is<01:40:00.639> that<01:40:00.880> when<01:40:01.040> you're" + }, + { + "start": 6001.189, + "duration": 0.0, + "text": "The problem is is that when you're" + }, + { + "start": 6001.199, + "duration": 0.0, + "text": "The problem is is that when you're actually<01:40:01.440> like<01:40:01.760> wanting<01:40:02.000> to<01:40:02.239> use<01:40:02.480> debug<01:40:02.880> info," + }, + { + "start": 6003.35, + "duration": 0.0, + "text": "actually like wanting to use debug info," + }, + { + "start": 6003.36, + "duration": 0.0, + "text": "actually like wanting to use debug info, there's<01:40:03.600> a<01:40:03.760> lot<01:40:03.840> of<01:40:03.920> incremental<01:40:04.560> things<01:40:04.800> you" + }, + { + "start": 6004.95, + "duration": 0.0, + "text": "there's a lot of incremental things you" + }, + { + "start": 6004.96, + "duration": 0.0, + "text": "there's a lot of incremental things you want<01:40:05.040> to<01:40:05.119> do.<01:40:05.360> You<01:40:05.520> want<01:40:05.600> to<01:40:05.679> be<01:40:05.760> able<01:40:05.920> to<01:40:06.000> say" + }, + { + "start": 6006.149, + "duration": 0.0, + "text": "want to do. You want to be able to say" + }, + { + "start": 6006.159, + "duration": 0.0, + "text": "want to do. You want to be able to say like,<01:40:06.800> well,<01:40:06.960> I<01:40:07.199> don't<01:40:07.280> want<01:40:07.360> to<01:40:07.520> parse<01:40:07.840> like" + }, + { + "start": 6008.149, + "duration": 0.0, + "text": "like, well, I don't want to parse like" + }, + { + "start": 6008.159, + "duration": 0.0, + "text": "like, well, I don't want to parse like all<01:40:08.400> the<01:40:08.639> types<01:40:09.280> if<01:40:09.520> I'm<01:40:09.679> just<01:40:09.920> trying<01:40:10.080> to<01:40:10.239> take" + }, + { + "start": 6010.39, + "duration": 0.0, + "text": "all the types if I'm just trying to take" + }, + { + "start": 6010.4, + "duration": 0.0, + "text": "all the types if I'm just trying to take an<01:40:10.639> address<01:40:10.880> and<01:40:11.119> turn<01:40:11.280> it<01:40:11.440> into<01:40:11.600> a<01:40:11.760> symbol." + }, + { + "start": 6012.07, + "duration": 0.0, + "text": "an address and turn it into a symbol." + }, + { + "start": 6012.08, + "duration": 0.0, + "text": "an address and turn it into a symbol. Like,<01:40:12.239> there's<01:40:12.400> so<01:40:12.560> much<01:40:12.719> information<01:40:13.040> in" + }, + { + "start": 6013.189, + "duration": 0.0, + "text": "Like, there's so much information in" + }, + { + "start": 6013.199, + "duration": 0.0, + "text": "Like, there's so much information in there<01:40:13.280> that<01:40:13.600> really<01:40:13.760> what<01:40:13.920> you<01:40:14.080> want<01:40:14.239> is<01:40:14.400> like" + }, + { + "start": 6014.55, + "duration": 0.0, + "text": "there that really what you want is like" + }, + { + "start": 6014.56, + "duration": 0.0, + "text": "there that really what you want is like incremental<01:40:15.119> parsing<01:40:15.440> or<01:40:15.600> incremental" + }, + { + "start": 6016.07, + "duration": 0.0, + "text": "incremental parsing or incremental" + }, + { + "start": 6016.08, + "duration": 0.0, + "text": "incremental parsing or incremental lookups.<01:40:17.040> Um,<01:40:18.159> it's<01:40:18.480> kind<01:40:18.560> of<01:40:18.639> rare<01:40:18.880> that<01:40:19.119> you" + }, + { + "start": 6019.27, + "duration": 0.0, + "text": "lookups. Um, it's kind of rare that you" + }, + { + "start": 6019.28, + "duration": 0.0, + "text": "lookups. Um, it's kind of rare that you want<01:40:19.440> just<01:40:19.679> to<01:40:19.840> parse<01:40:20.239> literally<01:40:20.639> everything" + }, + { + "start": 6021.51, + "duration": 0.0, + "text": "want just to parse literally everything" + }, + { + "start": 6021.52, + "duration": 0.0, + "text": "want just to parse literally everything um<01:40:21.679> right<01:40:21.920> away.<01:40:22.719> And<01:40:23.040> so<01:40:24.239> long<01:40:24.480> story<01:40:24.800> short," + }, + { + "start": 6025.43, + "duration": 0.0, + "text": "um right away. And so long story short," + }, + { + "start": 6025.44, + "duration": 0.0, + "text": "um right away. And so long story short, because<01:40:25.760> Dwarf<01:40:26.080> and<01:40:26.239> PDB<01:40:26.639> are<01:40:26.880> different<01:40:27.040> in" + }, + { + "start": 6027.189, + "duration": 0.0, + "text": "because Dwarf and PDB are different in" + }, + { + "start": 6027.199, + "duration": 0.0, + "text": "because Dwarf and PDB are different in how<01:40:27.360> they<01:40:27.520> arrange<01:40:27.840> that<01:40:28.080> data,<01:40:28.480> it<01:40:28.639> gets<01:40:28.800> like" + }, + { + "start": 6029.03, + "duration": 0.0, + "text": "how they arrange that data, it gets like" + }, + { + "start": 6029.04, + "duration": 0.0, + "text": "how they arrange that data, it gets like very<01:40:29.360> complicated<01:40:29.760> very<01:40:30.080> quickly<01:40:30.320> to<01:40:30.560> build" + }, + { + "start": 6030.87, + "duration": 0.0, + "text": "very complicated very quickly to build" + }, + { + "start": 6030.88, + "duration": 0.0, + "text": "very complicated very quickly to build an<01:40:31.199> abstract<01:40:31.679> API<01:40:32.400> that<01:40:32.719> presents<01:40:33.040> these" + }, + { + "start": 6033.27, + "duration": 0.0, + "text": "an abstract API that presents these" + }, + { + "start": 6033.28, + "duration": 0.0, + "text": "an abstract API that presents these incremental<01:40:33.760> paths<01:40:34.159> that<01:40:34.480> don't<01:40:34.639> have<01:40:34.880> really" + }, + { + "start": 6035.109, + "duration": 0.0, + "text": "incremental paths that don't have really" + }, + { + "start": 6035.119, + "duration": 0.0, + "text": "incremental paths that don't have really weird<01:40:35.679> details<01:40:36.159> like<01:40:36.719> oh<01:40:37.040> in<01:40:37.280> PDB<01:40:37.920> it's<01:40:38.159> really" + }, + { + "start": 6038.31, + "duration": 0.0, + "text": "weird details like oh in PDB it's really" + }, + { + "start": 6038.32, + "duration": 0.0, + "text": "weird details like oh in PDB it's really fast<01:40:38.560> to<01:40:38.719> do<01:40:38.880> this<01:40:39.119> particular<01:40:39.520> thing.<01:40:40.000> In" + }, + { + "start": 6040.229, + "duration": 0.0, + "text": "fast to do this particular thing. In" + }, + { + "start": 6040.239, + "duration": 0.0, + "text": "fast to do this particular thing. In dwarf<01:40:40.639> you<01:40:40.800> need<01:40:40.880> to<01:40:40.960> do<01:40:41.040> a<01:40:41.280> parse<01:40:41.600> all<01:40:41.840> of<01:40:42.000> that" + }, + { + "start": 6042.229, + "duration": 0.0, + "text": "dwarf you need to do a parse all of that" + }, + { + "start": 6042.239, + "duration": 0.0, + "text": "dwarf you need to do a parse all of that particular<01:40:42.639> section<01:40:42.960> before<01:40:43.199> you<01:40:43.360> can<01:40:43.440> do" + }, + { + "start": 6043.51, + "duration": 0.0, + "text": "particular section before you can do" + }, + { + "start": 6043.52, + "duration": 0.0, + "text": "particular section before you can do this.<01:40:43.760> And<01:40:43.840> so<01:40:44.000> it's<01:40:44.159> like<01:40:44.560> it's<01:40:44.800> just<01:40:44.960> like<01:40:45.119> a" + }, + { + "start": 6045.35, + "duration": 0.0, + "text": "this. And so it's like it's just like a" + }, + { + "start": 6045.36, + "duration": 0.0, + "text": "this. And so it's like it's just like a nightmare<01:40:45.840> when<01:40:46.080> you're<01:40:46.239> actually<01:40:46.400> writing" + }, + { + "start": 6046.709, + "duration": 0.0, + "text": "nightmare when you're actually writing" + }, + { + "start": 6046.719, + "duration": 0.0, + "text": "nightmare when you're actually writing stuff<01:40:46.880> on<01:40:47.119> top<01:40:47.440> because<01:40:47.679> it's<01:40:47.920> like<01:40:48.080> every<01:40:48.239> API" + }, + { + "start": 6048.709, + "duration": 0.0, + "text": "stuff on top because it's like every API" + }, + { + "start": 6048.719, + "duration": 0.0, + "text": "stuff on top because it's like every API now<01:40:48.960> has<01:40:49.119> two<01:40:49.360> potential<01:40:49.760> guarantees.<01:40:50.400> It's" + }, + { + "start": 6050.629, + "duration": 0.0, + "text": "now has two potential guarantees. It's" + }, + { + "start": 6050.639, + "duration": 0.0, + "text": "now has two potential guarantees. It's like<01:40:50.960> okay<01:40:51.199> when<01:40:51.360> I<01:40:51.520> parse<01:40:52.159> when<01:40:52.400> I<01:40:52.560> want<01:40:52.639> to<01:40:52.719> do" + }, + { + "start": 6052.87, + "duration": 0.0, + "text": "like okay when I parse when I want to do" + }, + { + "start": 6052.88, + "duration": 0.0, + "text": "like okay when I parse when I want to do this<01:40:53.119> particular<01:40:53.520> incremental<01:40:54.000> parse<01:40:54.400> it" + }, + { + "start": 6054.55, + "duration": 0.0, + "text": "this particular incremental parse it" + }, + { + "start": 6054.56, + "duration": 0.0, + "text": "this particular incremental parse it might<01:40:54.719> be<01:40:54.800> fast<01:40:55.040> it<01:40:55.199> might<01:40:55.360> be<01:40:55.440> slow<01:40:55.920> depending" + }, + { + "start": 6056.229, + "duration": 0.0, + "text": "might be fast it might be slow depending" + }, + { + "start": 6056.239, + "duration": 0.0, + "text": "might be fast it might be slow depending on<01:40:56.400> what<01:40:56.560> I'm<01:40:56.719> actually<01:40:56.960> using<01:40:57.199> and<01:40:57.360> so<01:40:57.520> I<01:40:57.760> have" + }, + { + "start": 6057.91, + "duration": 0.0, + "text": "on what I'm actually using and so I have" + }, + { + "start": 6057.92, + "duration": 0.0, + "text": "on what I'm actually using and so I have no<01:40:58.159> I<01:40:58.320> have<01:40:58.400> very<01:40:58.639> limited<01:40:59.040> information<01:40:59.440> about" + }, + { + "start": 6059.669, + "duration": 0.0, + "text": "no I have very limited information about" + }, + { + "start": 6059.679, + "duration": 0.0, + "text": "no I have very limited information about what's<01:41:00.000> actually<01:41:00.239> going<01:41:00.320> to<01:41:00.480> happen<01:41:01.119> and<01:41:01.280> so" + }, + { + "start": 6061.43, + "duration": 0.0, + "text": "what's actually going to happen and so" + }, + { + "start": 6061.44, + "duration": 0.0, + "text": "what's actually going to happen and so what's<01:41:01.760> much<01:41:02.000> better<01:41:03.040> is<01:41:03.280> to<01:41:03.440> just<01:41:03.920> have" + }, + { + "start": 6064.79, + "duration": 0.0, + "text": "what's much better is to just have" + }, + { + "start": 6064.8, + "duration": 0.0, + "text": "what's much better is to just have basically<01:41:05.199> you<01:41:05.360> do<01:41:05.520> the<01:41:05.679> parse<01:41:06.000> all<01:41:06.480> in<01:41:06.719> as" + }, + { + "start": 6066.95, + "duration": 0.0, + "text": "basically you do the parse all in as" + }, + { + "start": 6066.96, + "duration": 0.0, + "text": "basically you do the parse all in as fast<01:41:07.119> a<01:41:07.360> way<01:41:07.440> as<01:41:07.679> possible<01:41:08.400> and<01:41:08.719> then<01:41:09.360> um<01:41:09.840> and" + }, + { + "start": 6069.99, + "duration": 0.0, + "text": "fast a way as possible and then um and" + }, + { + "start": 6070.0, + "duration": 0.0, + "text": "fast a way as possible and then um and then<01:41:10.239> just<01:41:10.400> use<01:41:10.639> the<01:41:10.800> the<01:41:11.119> full<01:41:11.360> parsed" + }, + { + "start": 6071.83, + "duration": 0.0, + "text": "then just use the the full parsed" + }, + { + "start": 6071.84, + "duration": 0.0, + "text": "then just use the the full parsed structure.<01:41:12.880> Um<01:41:14.239> but<01:41:14.719> uh<01:41:14.880> at<01:41:15.119> that<01:41:15.440> point<01:41:15.840> like" + }, + { + "start": 6076.07, + "duration": 0.0, + "text": "structure. Um but uh at that point like" + }, + { + "start": 6076.08, + "duration": 0.0, + "text": "structure. Um but uh at that point like it<01:41:16.320> really<01:41:16.480> just<01:41:16.719> made<01:41:16.880> sense<01:41:17.119> to<01:41:17.280> go<01:41:17.440> the<01:41:17.679> full" + }, + { + "start": 6077.83, + "duration": 0.0, + "text": "it really just made sense to go the full" + }, + { + "start": 6077.84, + "duration": 0.0, + "text": "it really just made sense to go the full way<01:41:18.000> to<01:41:18.159> the<01:41:18.239> format.<01:41:18.639> Like<01:41:18.800> at<01:41:18.960> that<01:41:19.040> point" + }, + { + "start": 6079.189, + "duration": 0.0, + "text": "way to the format. Like at that point" + }, + { + "start": 6079.199, + "duration": 0.0, + "text": "way to the format. Like at that point you<01:41:19.360> you've<01:41:19.679> already<01:41:19.840> doing<01:41:20.000> this<01:41:20.159> parcel," + }, + { + "start": 6080.709, + "duration": 0.0, + "text": "you you've already doing this parcel," + }, + { + "start": 6080.719, + "duration": 0.0, + "text": "you you've already doing this parcel, you<01:41:20.800> have<01:41:20.960> internal<01:41:21.280> structures<01:41:21.679> for<01:41:21.920> it." + }, + { + "start": 6082.709, + "duration": 0.0, + "text": "you have internal structures for it." + }, + { + "start": 6082.719, + "duration": 0.0, + "text": "you have internal structures for it. What<01:41:22.960> would<01:41:23.119> be<01:41:23.280> even<01:41:23.440> better<01:41:23.679> if<01:41:24.239> is<01:41:24.400> if<01:41:24.639> like" + }, + { + "start": 6084.87, + "duration": 0.0, + "text": "What would be even better if is if like" + }, + { + "start": 6084.88, + "duration": 0.0, + "text": "What would be even better if is if like you<01:41:25.119> could<01:41:25.199> actually<01:41:25.440> just<01:41:25.840> um<01:41:26.320> you<01:41:26.480> know" + }, + { + "start": 6087.51, + "duration": 0.0, + "text": "you could actually just um you know" + }, + { + "start": 6087.52, + "duration": 0.0, + "text": "you could actually just um you know serialize<01:41:28.000> this<01:41:28.239> to<01:41:28.400> disk,<01:41:28.800> have<01:41:28.960> it<01:41:29.119> be<01:41:29.199> a" + }, + { + "start": 6089.43, + "duration": 0.0, + "text": "serialize this to disk, have it be a" + }, + { + "start": 6089.44, + "duration": 0.0, + "text": "serialize this to disk, have it be a much<01:41:29.600> simpler<01:41:29.840> debug<01:41:30.239> info<01:41:30.480> format<01:41:30.960> that<01:41:31.119> you" + }, + { + "start": 6091.27, + "duration": 0.0, + "text": "much simpler debug info format that you" + }, + { + "start": 6091.28, + "duration": 0.0, + "text": "much simpler debug info format that you can<01:41:31.360> use<01:41:31.600> everywhere<01:41:32.159> because<01:41:32.400> it's<01:41:32.560> not<01:41:32.639> just" + }, + { + "start": 6092.79, + "duration": 0.0, + "text": "can use everywhere because it's not just" + }, + { + "start": 6092.8, + "duration": 0.0, + "text": "can use everywhere because it's not just the<01:41:32.960> debugger<01:41:33.280> that<01:41:33.360> has<01:41:33.440> to<01:41:33.520> use<01:41:33.679> debug<01:41:34.000> info." + }, + { + "start": 6094.31, + "duration": 0.0, + "text": "the debugger that has to use debug info." + }, + { + "start": 6094.32, + "duration": 0.0, + "text": "the debugger that has to use debug info. There's<01:41:34.560> tons<01:41:34.800> of<01:41:35.119> tons<01:41:35.440> of<01:41:35.600> tools<01:41:35.840> that<01:41:36.000> need" + }, + { + "start": 6096.149, + "duration": 0.0, + "text": "There's tons of tons of tools that need" + }, + { + "start": 6096.159, + "duration": 0.0, + "text": "There's tons of tons of tools that need to<01:41:36.239> use<01:41:36.400> debug<01:41:36.719> info.<01:41:37.280> And<01:41:37.440> so<01:41:37.679> we<01:41:37.920> were<01:41:38.080> like" + }, + { + "start": 6098.629, + "duration": 0.0, + "text": "to use debug info. And so we were like" + }, + { + "start": 6098.639, + "duration": 0.0, + "text": "to use debug info. And so we were like we<01:41:38.800> we<01:41:39.119> just<01:41:39.360> don't<01:41:39.520> want<01:41:39.600> to<01:41:39.679> work<01:41:39.840> on<01:41:40.000> PDB" + }, + { + "start": 6100.39, + "duration": 0.0, + "text": "we we just don't want to work on PDB" + }, + { + "start": 6100.4, + "duration": 0.0, + "text": "we we just don't want to work on PDB dwarf<01:41:40.800> actually.<01:41:41.119> Like<01:41:41.280> it's<01:41:41.520> actually" + }, + { + "start": 6101.669, + "duration": 0.0, + "text": "dwarf actually. Like it's actually" + }, + { + "start": 6101.679, + "duration": 0.0, + "text": "dwarf actually. Like it's actually terrible.<01:41:42.159> So,<01:41:42.960> um,<01:41:43.440> so<01:41:43.679> we<01:41:44.000> just<01:41:44.159> built<01:41:44.480> this" + }, + { + "start": 6104.709, + "duration": 0.0, + "text": "terrible. So, um, so we just built this" + }, + { + "start": 6104.719, + "duration": 0.0, + "text": "terrible. So, um, so we just built this one<01:41:45.440> and,<01:41:46.159> uh,<01:41:46.480> in<01:41:46.719> terms<01:41:46.880> of<01:41:47.040> like<01:41:47.199> how<01:41:47.520> you" + }, + { + "start": 6107.75, + "duration": 0.0, + "text": "one and, uh, in terms of like how you" + }, + { + "start": 6107.76, + "duration": 0.0, + "text": "one and, uh, in terms of like how you design<01:41:48.080> it,<01:41:48.960> like<01:41:49.199> I<01:41:49.520> could<01:41:49.679> give<01:41:49.760> my<01:41:50.000> thoughts" + }, + { + "start": 6110.149, + "duration": 0.0, + "text": "design it, like I could give my thoughts" + }, + { + "start": 6110.159, + "duration": 0.0, + "text": "design it, like I could give my thoughts on<01:41:50.320> that,<01:41:50.560> but<01:41:50.880> the<01:41:51.119> person<01:41:51.360> responsible<01:41:51.840> for" + }, + { + "start": 6111.99, + "duration": 0.0, + "text": "on that, but the person responsible for" + }, + { + "start": 6112.0, + "duration": 0.0, + "text": "on that, but the person responsible for the<01:41:52.239> original<01:41:52.880> design<01:41:53.199> of<01:41:53.440> the<01:41:53.600> format<01:41:53.920> is" + }, + { + "start": 6114.07, + "duration": 0.0, + "text": "the original design of the format is" + }, + { + "start": 6114.08, + "duration": 0.0, + "text": "the original design of the format is Alan<01:41:54.400> Webster,<01:41:54.880> who<01:41:55.040> made<01:41:55.199> Forkoder.<01:41:56.320> So,<01:41:56.560> he" + }, + { + "start": 6117.35, + "duration": 0.0, + "text": "Alan Webster, who made Forkoder. So, he" + }, + { + "start": 6117.36, + "duration": 0.0, + "text": "Alan Webster, who made Forkoder. So, he uh,<01:41:58.159> he<01:41:58.400> has<01:41:58.560> since<01:41:58.880> he's<01:41:59.119> not<01:41:59.199> on<01:41:59.360> the<01:41:59.520> project" + }, + { + "start": 6119.83, + "duration": 0.0, + "text": "uh, he has since he's not on the project" + }, + { + "start": 6119.84, + "duration": 0.0, + "text": "uh, he has since he's not on the project anymore,<01:42:00.239> but<01:42:00.480> that<01:42:00.719> was<01:42:00.880> like<01:42:01.040> his<01:42:01.280> last<01:42:01.440> big" + }, + { + "start": 6121.75, + "duration": 0.0, + "text": "anymore, but that was like his last big" + }, + { + "start": 6121.76, + "duration": 0.0, + "text": "anymore, but that was like his last big contribution<01:42:02.239> to<01:42:02.400> it.<01:42:02.880> He<01:42:03.040> did<01:42:03.280> an<01:42:03.520> excellent" + }, + { + "start": 6123.83, + "duration": 0.0, + "text": "contribution to it. He did an excellent" + }, + { + "start": 6123.84, + "duration": 0.0, + "text": "contribution to it. He did an excellent job<01:42:04.080> on<01:42:04.239> it.<01:42:04.719> And<01:42:04.880> it's<01:42:05.360> um,<01:42:06.400> I<01:42:06.639> mean,<01:42:06.800> it's" + }, + { + "start": 6127.109, + "duration": 0.0, + "text": "job on it. And it's um, I mean, it's" + }, + { + "start": 6127.119, + "duration": 0.0, + "text": "job on it. And it's um, I mean, it's kind<01:42:07.280> of<01:42:07.360> like<01:42:08.000> it's<01:42:08.239> kind<01:42:08.320> of<01:42:08.400> like<01:42:08.560> how<01:42:08.719> you" + }, + { + "start": 6128.87, + "duration": 0.0, + "text": "kind of like it's kind of like how you" + }, + { + "start": 6128.88, + "duration": 0.0, + "text": "kind of like it's kind of like how you do<01:42:09.040> anything.<01:42:09.440> It's<01:42:09.840> um<01:42:10.880> it's<01:42:11.199> sort<01:42:11.360> of<01:42:11.440> like" + }, + { + "start": 6131.59, + "duration": 0.0, + "text": "do anything. It's um it's sort of like" + }, + { + "start": 6131.6, + "duration": 0.0, + "text": "do anything. It's um it's sort of like what<01:42:11.760> Casey<01:42:12.159> was<01:42:12.320> talking<01:42:12.560> about<01:42:13.360> like<01:42:13.679> get" + }, + { + "start": 6133.83, + "duration": 0.0, + "text": "what Casey was talking about like get" + }, + { + "start": 6133.84, + "duration": 0.0, + "text": "what Casey was talking about like get rid<01:42:14.000> of<01:42:14.080> the<01:42:14.239> idea<01:42:14.400> that<01:42:14.560> you<01:42:14.719> don't<01:42:14.880> need" + }, + { + "start": 6134.95, + "duration": 0.0, + "text": "rid of the idea that you don't need" + }, + { + "start": 6134.96, + "duration": 0.0, + "text": "rid of the idea that you don't need someone<01:42:15.360> omnisient<01:42:15.840> about<01:42:16.080> things.<01:42:16.400> It's" + }, + { + "start": 6136.55, + "duration": 0.0, + "text": "someone omnisient about things. It's" + }, + { + "start": 6136.56, + "duration": 0.0, + "text": "someone omnisient about things. It's like<01:42:16.719> no<01:42:16.880> just<01:42:17.040> like<01:42:17.280> store<01:42:17.600> the<01:42:17.760> data<01:42:18.000> with" + }, + { + "start": 6138.149, + "duration": 0.0, + "text": "like no just like store the data with" + }, + { + "start": 6138.159, + "duration": 0.0, + "text": "like no just like store the data with all<01:42:18.239> the<01:42:18.400> context<01:42:18.800> that<01:42:19.040> you<01:42:19.199> have.<01:42:19.760> And<01:42:19.920> so" + }, + { + "start": 6140.31, + "duration": 0.0, + "text": "all the context that you have. And so" + }, + { + "start": 6140.32, + "duration": 0.0, + "text": "all the context that you have. And so the<01:42:20.880> rad<01:42:21.119> debug<01:42:21.440> info<01:42:21.679> format<01:42:22.000> is<01:42:22.159> like<01:42:22.320> very" + }, + { + "start": 6142.47, + "duration": 0.0, + "text": "the rad debug info format is like very" + }, + { + "start": 6142.48, + "duration": 0.0, + "text": "the rad debug info format is like very simple.<01:42:22.719> It's<01:42:22.960> like<01:42:23.280> look,<01:42:23.520> we've<01:42:23.679> got<01:42:23.760> these" + }, + { + "start": 6143.99, + "duration": 0.0, + "text": "simple. It's like look, we've got these" + }, + { + "start": 6144.0, + "duration": 0.0, + "text": "simple. It's like look, we've got these flat<01:42:24.239> data<01:42:24.480> tables<01:42:24.800> and<01:42:25.040> they<01:42:25.199> point<01:42:25.520> they" + }, + { + "start": 6145.75, + "duration": 0.0, + "text": "flat data tables and they point they" + }, + { + "start": 6145.76, + "duration": 0.0, + "text": "flat data tables and they point they index<01:42:26.080> into<01:42:26.320> each<01:42:26.560> other<01:42:27.119> and<01:42:27.360> it's<01:42:27.600> just<01:42:27.760> like" + }, + { + "start": 6148.07, + "duration": 0.0, + "text": "index into each other and it's just like" + }, + { + "start": 6148.08, + "duration": 0.0, + "text": "index into each other and it's just like that<01:42:28.320> the<01:42:28.560> information<01:42:28.960> you<01:42:29.199> want<01:42:29.440> laid<01:42:29.760> out" + }, + { + "start": 6149.83, + "duration": 0.0, + "text": "that the information you want laid out" + }, + { + "start": 6149.84, + "duration": 0.0, + "text": "that the information you want laid out in<01:42:30.080> a<01:42:30.239> really<01:42:30.400> simple<01:42:30.639> way<01:42:31.360> and<01:42:31.600> it's<01:42:31.920> just<01:42:32.159> and" + }, + { + "start": 6152.39, + "duration": 0.0, + "text": "in a really simple way and it's just and" + }, + { + "start": 6152.4, + "duration": 0.0, + "text": "in a really simple way and it's just and that<01:42:32.560> makes<01:42:32.719> it<01:42:32.880> very<01:42:33.040> simple<01:42:33.280> to<01:42:33.440> do<01:42:33.600> things" + }, + { + "start": 6153.75, + "duration": 0.0, + "text": "that makes it very simple to do things" + }, + { + "start": 6153.76, + "duration": 0.0, + "text": "that makes it very simple to do things like<01:42:34.000> incremental<01:42:34.480> lookups<01:42:34.880> and<01:42:35.119> like<01:42:35.280> to<01:42:35.520> use" + }, + { + "start": 6155.669, + "duration": 0.0, + "text": "like incremental lookups and like to use" + }, + { + "start": 6155.679, + "duration": 0.0, + "text": "like incremental lookups and like to use it<01:42:35.840> much<01:42:36.080> more<01:42:36.480> quickly<01:42:37.440> um<01:42:37.600> with<01:42:37.840> all<01:42:38.000> the" + }, + { + "start": 6158.149, + "duration": 0.0, + "text": "it much more quickly um with all the" + }, + { + "start": 6158.159, + "duration": 0.0, + "text": "it much more quickly um with all the guarantees<01:42:38.639> you<01:42:38.880> want<01:42:39.119> like<01:42:39.280> from<01:42:39.440> the" + }, + { + "start": 6159.59, + "duration": 0.0, + "text": "guarantees you want like from the" + }, + { + "start": 6159.6, + "duration": 0.0, + "text": "guarantees you want like from the debugger's<01:42:40.080> point<01:42:40.159> of<01:42:40.320> view<01:42:40.480> for<01:42:40.639> example.<01:42:41.040> So" + }, + { + "start": 6161.51, + "duration": 0.0, + "text": "debugger's point of view for example. So" + }, + { + "start": 6161.52, + "duration": 0.0, + "text": "debugger's point of view for example. So instead<01:42:41.840> of<01:42:42.000> having<01:42:42.159> to<01:42:42.480> poke<01:42:42.719> into<01:42:42.960> two" + }, + { + "start": 6163.189, + "duration": 0.0, + "text": "instead of having to poke into two" + }, + { + "start": 6163.199, + "duration": 0.0, + "text": "instead of having to poke into two different<01:42:43.360> backends<01:42:43.840> basically.<01:42:44.239> So<01:42:44.960> um<01:42:45.199> I" + }, + { + "start": 6165.35, + "duration": 0.0, + "text": "different backends basically. So um I" + }, + { + "start": 6165.36, + "duration": 0.0, + "text": "different backends basically. So um I may<01:42:45.520> have<01:42:45.679> missed<01:42:45.920> part<01:42:46.080> of<01:42:46.159> the<01:42:46.320> question<01:42:46.400> in" + }, + { + "start": 6166.629, + "duration": 0.0, + "text": "may have missed part of the question in" + }, + { + "start": 6166.639, + "duration": 0.0, + "text": "may have missed part of the question in that<01:42:46.719> but<01:42:46.960> hopefully<01:42:47.199> that<01:42:47.679> yeah" + }, + { + "start": 6168.31, + "duration": 0.0, + "text": "that but hopefully that yeah" + }, + { + "start": 6168.32, + "duration": 0.0, + "text": "that but hopefully that yeah >> I'll<01:42:48.560> do<01:42:48.639> the<01:42:48.800> follow-up<01:42:49.199> later<01:42:49.520> because<01:42:50.000> it" + }, + { + "start": 6170.07, + "duration": 0.0, + "text": ">> I'll do the follow-up later because it" + }, + { + "start": 6170.08, + "duration": 0.0, + "text": ">> I'll do the follow-up later because it might<01:42:50.320> be<01:42:50.400> very<01:42:50.719> specific.<01:42:51.440> Um<01:42:52.880> the<01:42:53.119> rad" + }, + { + "start": 6173.43, + "duration": 0.0, + "text": "might be very specific. Um the rad" + }, + { + "start": 6173.44, + "duration": 0.0, + "text": "might be very specific. Um the rad bugger<01:42:53.760> is<01:42:53.920> written<01:42:54.320> is<01:42:54.480> it<01:42:54.800> written<01:42:54.960> in<01:42:55.199> C<01:42:55.440> or" + }, + { + "start": 6175.75, + "duration": 0.0, + "text": "bugger is written is it written in C or" + }, + { + "start": 6175.76, + "duration": 0.0, + "text": "bugger is written is it written in C or C++<01:42:56.560> or<01:42:56.960> like" + }, + { + "start": 6177.35, + "duration": 0.0, + "text": "C++ or like" + }, + { + "start": 6177.36, + "duration": 0.0, + "text": "C++ or like >> oh<01:42:57.600> it's<01:42:57.760> just<01:42:57.920> C.<01:42:58.239> Yeah." + }, + { + "start": 6178.47, + "duration": 0.0, + "text": ">> oh it's just C. Yeah." + }, + { + "start": 6178.48, + "duration": 0.0, + "text": ">> oh it's just C. Yeah. >> Okay.<01:42:58.639> So<01:42:58.800> bare<01:42:59.119> C.<01:42:59.520> Why<01:42:59.760> bare<01:43:00.080> C<01:43:00.239> and<01:43:00.480> not<01:43:00.639> like" + }, + { + "start": 6180.87, + "duration": 0.0, + "text": ">> Okay. So bare C. Why bare C and not like" + }, + { + "start": 6180.88, + "duration": 0.0, + "text": ">> Okay. So bare C. Why bare C and not like like<01:43:01.360> often<01:43:01.840> like<01:43:02.320> I<01:43:02.719> many<01:43:03.040> people<01:43:03.280> actually" + }, + { + "start": 6183.51, + "duration": 0.0, + "text": "like often like I many people actually" + }, + { + "start": 6183.52, + "duration": 0.0, + "text": "like often like I many people actually in<01:43:03.679> the<01:43:03.840> talks<01:43:04.159> right<01:43:04.400> now<01:43:04.639> picked<01:43:04.960> bare<01:43:05.360> C.<01:43:06.000> Um" + }, + { + "start": 6186.79, + "duration": 0.0, + "text": "in the talks right now picked bare C. Um" + }, + { + "start": 6186.8, + "duration": 0.0, + "text": "in the talks right now picked bare C. Um >> I<01:43:07.119> thought<01:43:07.280> the<01:43:07.520> common<01:43:07.840> way<01:43:08.080> was<01:43:08.320> like<01:43:08.560> to<01:43:08.800> use" + }, + { + "start": 6189.03, + "duration": 0.0, + "text": ">> I thought the common way was like to use" + }, + { + "start": 6189.04, + "duration": 0.0, + "text": ">> I thought the common way was like to use C++<01:43:09.760> but<01:43:10.239> almost<01:43:10.719> nothing<01:43:11.040> of<01:43:11.199> C++<01:43:11.840> even<01:43:12.000> as" + }, + { + "start": 6192.149, + "duration": 0.0, + "text": "C++ but almost nothing of C++ even as" + }, + { + "start": 6192.159, + "duration": 0.0, + "text": "C++ but almost nothing of C++ even as Casey<01:43:12.560> usually<01:43:12.800> does<01:43:12.960> it.<01:43:13.199> Y<01:43:13.440> like<01:43:13.600> what" + }, + { + "start": 6193.83, + "duration": 0.0, + "text": "Casey usually does it. Y like what" + }, + { + "start": 6193.84, + "duration": 0.0, + "text": "Casey usually does it. Y like what prompted<01:43:14.239> you<01:43:14.400> to<01:43:14.560> do<01:43:14.800> nahh<01:43:15.440> just<01:43:15.679> pure<01:43:16.080> C.<01:43:16.320> So" + }, + { + "start": 6196.87, + "duration": 0.0, + "text": "prompted you to do nahh just pure C. So" + }, + { + "start": 6196.88, + "duration": 0.0, + "text": "prompted you to do nahh just pure C. So I<01:43:17.119> think<01:43:17.280> like<01:43:18.000> I<01:43:18.239> so<01:43:18.400> I<01:43:18.560> don't<01:43:18.719> tend<01:43:18.880> to<01:43:18.960> do" + }, + { + "start": 6199.109, + "duration": 0.0, + "text": "I think like I so I don't tend to do" + }, + { + "start": 6199.119, + "duration": 0.0, + "text": "I think like I so I don't tend to do very<01:43:19.360> math<01:43:19.600> heavy<01:43:19.920> code.<01:43:20.320> So<01:43:20.480> I<01:43:21.280> um" + }, + { + "start": 6201.43, + "duration": 0.0, + "text": "very math heavy code. So I um" + }, + { + "start": 6201.44, + "duration": 0.0, + "text": "very math heavy code. So I um unsurprisingly<01:43:22.080> I<01:43:22.239> mean<01:43:22.400> there's<01:43:22.560> not<01:43:22.639> a<01:43:22.719> lot" + }, + { + "start": 6202.87, + "duration": 0.0, + "text": "unsurprisingly I mean there's not a lot" + }, + { + "start": 6202.88, + "duration": 0.0, + "text": "unsurprisingly I mean there's not a lot of<01:43:22.960> like<01:43:23.199> linear<01:43:23.520> algebra<01:43:23.840> in<01:43:24.000> a<01:43:24.159> debugger" + }, + { + "start": 6204.629, + "duration": 0.0, + "text": "of like linear algebra in a debugger" + }, + { + "start": 6204.639, + "duration": 0.0, + "text": "of like linear algebra in a debugger basically.<01:43:25.040> So<01:43:25.199> it's<01:43:25.440> like<01:43:25.760> I<01:43:26.000> benefit<01:43:26.400> less" + }, + { + "start": 6206.629, + "duration": 0.0, + "text": "basically. So it's like I benefit less" + }, + { + "start": 6206.639, + "duration": 0.0, + "text": "basically. So it's like I benefit less from<01:43:26.800> a<01:43:27.040> lot<01:43:27.119> of<01:43:27.199> things<01:43:27.360> that<01:43:27.600> people<01:43:27.760> who" + }, + { + "start": 6207.99, + "duration": 0.0, + "text": "from a lot of things that people who" + }, + { + "start": 6208.0, + "duration": 0.0, + "text": "from a lot of things that people who need<01:43:28.480> C++<01:43:29.280> do<01:43:29.760> which<01:43:30.000> it<01:43:30.159> would<01:43:30.320> be<01:43:30.480> something" + }, + { + "start": 6210.629, + "duration": 0.0, + "text": "need C++ do which it would be something" + }, + { + "start": 6210.639, + "duration": 0.0, + "text": "need C++ do which it would be something like<01:43:30.880> operator<01:43:31.280> overloading<01:43:31.920> like<01:43:32.080> that" + }, + { + "start": 6212.31, + "duration": 0.0, + "text": "like operator overloading like that" + }, + { + "start": 6212.32, + "duration": 0.0, + "text": "like operator overloading like that becomes<01:43:32.639> pretty<01:43:32.800> important<01:43:33.040> if<01:43:33.199> you're" + }, + { + "start": 6213.27, + "duration": 0.0, + "text": "becomes pretty important if you're" + }, + { + "start": 6213.28, + "duration": 0.0, + "text": "becomes pretty important if you're writing<01:43:33.520> lots<01:43:33.760> and<01:43:33.920> lots<01:43:34.159> of<01:43:34.320> math<01:43:35.040> code.<01:43:35.840> Um" + }, + { + "start": 6216.629, + "duration": 0.0, + "text": "writing lots and lots of math code. Um" + }, + { + "start": 6216.639, + "duration": 0.0, + "text": "writing lots and lots of math code. Um for<01:43:36.880> me<01:43:37.360> it's<01:43:37.679> like<01:43:38.000> I'm<01:43:38.320> not<01:43:38.480> writing<01:43:38.719> that" + }, + { + "start": 6218.95, + "duration": 0.0, + "text": "for me it's like I'm not writing that" + }, + { + "start": 6218.96, + "duration": 0.0, + "text": "for me it's like I'm not writing that much<01:43:39.119> code.<01:43:39.679> Um<01:43:39.920> I<01:43:40.080> could<01:43:40.239> build<01:43:40.480> kind<01:43:40.639> of<01:43:40.719> the" + }, + { + "start": 6220.87, + "duration": 0.0, + "text": "much code. Um I could build kind of the" + }, + { + "start": 6220.88, + "duration": 0.0, + "text": "much code. Um I could build kind of the abstractions<01:43:41.440> I<01:43:41.679> wanted<01:43:42.080> inside<01:43:42.480> of<01:43:42.639> C.<01:43:43.360> um<01:43:43.600> I" + }, + { + "start": 6223.75, + "duration": 0.0, + "text": "abstractions I wanted inside of C. um I" + }, + { + "start": 6223.76, + "duration": 0.0, + "text": "abstractions I wanted inside of C. um I could<01:43:43.920> build<01:43:44.080> the<01:43:44.239> tools<01:43:44.480> I<01:43:44.639> needed<01:43:45.360> and<01:43:45.920> one" + }, + { + "start": 6226.07, + "duration": 0.0, + "text": "could build the tools I needed and one" + }, + { + "start": 6226.08, + "duration": 0.0, + "text": "could build the tools I needed and one of<01:43:46.159> the<01:43:46.400> most<01:43:46.560> important<01:43:46.960> things<01:43:47.520> was<01:43:47.760> that<01:43:48.080> C" + }, + { + "start": 6228.31, + "duration": 0.0, + "text": "of the most important things was that C" + }, + { + "start": 6228.32, + "duration": 0.0, + "text": "of the most important things was that C compiles<01:43:48.880> like<01:43:49.040> 40%<01:43:49.520> faster.<01:43:50.000> Like<01:43:50.159> if<01:43:50.400> you" + }, + { + "start": 6230.47, + "duration": 0.0, + "text": "compiles like 40% faster. Like if you" + }, + { + "start": 6230.48, + "duration": 0.0, + "text": "compiles like 40% faster. Like if you just<01:43:50.639> have<01:43:51.119> because<01:43:51.280> the<01:43:51.600> and<01:43:52.239> to<01:43:52.560> explain<01:43:52.800> how" + }, + { + "start": 6232.95, + "duration": 0.0, + "text": "just have because the and to explain how" + }, + { + "start": 6232.96, + "duration": 0.0, + "text": "just have because the and to explain how I<01:43:53.119> know<01:43:53.280> that<01:43:54.000> the<01:43:54.239> codebase<01:43:54.719> used<01:43:54.880> to<01:43:55.040> be<01:43:55.119> C++" + }, + { + "start": 6235.83, + "duration": 0.0, + "text": "I know that the codebase used to be C++" + }, + { + "start": 6235.84, + "duration": 0.0, + "text": "I know that the codebase used to be C++ it<01:43:56.080> was<01:43:56.320> Casey<01:43:56.639> style<01:43:56.960> C++<01:43:57.440> where<01:43:57.600> it's<01:43:57.840> like" + }, + { + "start": 6238.229, + "duration": 0.0, + "text": "it was Casey style C++ where it's like" + }, + { + "start": 6238.239, + "duration": 0.0, + "text": "it was Casey style C++ where it's like you've<01:43:58.560> got<01:43:58.719> C++<01:43:59.280> it's<01:43:59.520> mostly<01:43:59.840> C<01:44:00.080> but<01:44:00.320> then" + }, + { + "start": 6240.47, + "duration": 0.0, + "text": "you've got C++ it's mostly C but then" + }, + { + "start": 6240.48, + "duration": 0.0, + "text": "you've got C++ it's mostly C but then there's<01:44:00.639> a<01:44:00.800> couple<01:44:01.040> of<01:44:01.280> things<01:44:01.440> that<01:44:01.679> you<01:44:01.840> use" + }, + { + "start": 6241.99, + "duration": 0.0, + "text": "there's a couple of things that you use" + }, + { + "start": 6242.0, + "duration": 0.0, + "text": "there's a couple of things that you use in<01:44:02.239> there<01:44:03.360> and<01:44:04.080> uh<01:44:04.800> at<01:44:05.040> some<01:44:05.280> point<01:44:05.679> like<01:44:06.480> um" + }, + { + "start": 6247.59, + "duration": 0.0, + "text": "in there and uh at some point like um" + }, + { + "start": 6247.6, + "duration": 0.0, + "text": "in there and uh at some point like um when<01:44:07.840> I<01:44:08.000> had<01:44:08.239> like<01:44:08.400> more<01:44:08.639> control<01:44:08.880> over<01:44:09.040> the" + }, + { + "start": 6249.27, + "duration": 0.0, + "text": "when I had like more control over the" + }, + { + "start": 6249.28, + "duration": 0.0, + "text": "when I had like more control over the project<01:44:09.679> I<01:44:09.840> was<01:44:10.000> like<01:44:11.040> build<01:44:11.280> times<01:44:11.600> are" + }, + { + "start": 6251.75, + "duration": 0.0, + "text": "project I was like build times are" + }, + { + "start": 6251.76, + "duration": 0.0, + "text": "project I was like build times are important<01:44:11.920> to<01:44:12.080> me<01:44:12.639> for<01:44:13.040> the<01:44:13.199> reasons<01:44:13.520> I<01:44:13.760> open" + }, + { + "start": 6253.91, + "duration": 0.0, + "text": "important to me for the reasons I open" + }, + { + "start": 6253.92, + "duration": 0.0, + "text": "important to me for the reasons I open the<01:44:14.080> talk<01:44:14.239> with.<01:44:14.560> And<01:44:14.639> so<01:44:14.800> I'm<01:44:14.960> like<01:44:15.280> I'm<01:44:15.440> just" + }, + { + "start": 6255.59, + "duration": 0.0, + "text": "the talk with. And so I'm like I'm just" + }, + { + "start": 6255.6, + "duration": 0.0, + "text": "the talk with. And so I'm like I'm just going<01:44:15.760> to<01:44:15.840> like<01:44:16.560> turn<01:44:16.800> this<01:44:16.960> to<01:44:17.119> C<01:44:17.360> because<01:44:17.520> I'm" + }, + { + "start": 6257.669, + "duration": 0.0, + "text": "going to like turn this to C because I'm" + }, + { + "start": 6257.679, + "duration": 0.0, + "text": "going to like turn this to C because I'm pretty<01:44:17.760> sure<01:44:17.920> that'll<01:44:18.239> compile<01:44:18.560> faster.<01:44:19.040> And" + }, + { + "start": 6259.109, + "duration": 0.0, + "text": "pretty sure that'll compile faster. And" + }, + { + "start": 6259.119, + "duration": 0.0, + "text": "pretty sure that'll compile faster. And it<01:44:19.280> did.<01:44:19.520> It's<01:44:19.760> about<01:44:19.840> 40%<01:44:20.320> faster<01:44:20.639> at<01:44:20.719> least" + }, + { + "start": 6261.03, + "duration": 0.0, + "text": "it did. It's about 40% faster at least" + }, + { + "start": 6261.04, + "duration": 0.0, + "text": "it did. It's about 40% faster at least on<01:44:21.440> you<01:44:21.520> know<01:44:21.679> my<01:44:22.000> machines<01:44:22.800> uh<01:44:22.880> with<01:44:23.040> with<01:44:23.600> you" + }, + { + "start": 6263.669, + "duration": 0.0, + "text": "on you know my machines uh with with you" + }, + { + "start": 6263.679, + "duration": 0.0, + "text": "on you know my machines uh with with you know<01:44:23.920> whatever<01:44:24.320> version<01:44:24.560> of<01:44:24.719> MSVC<01:44:25.360> I'm<01:44:25.600> using" + }, + { + "start": 6266.39, + "duration": 0.0, + "text": "know whatever version of MSVC I'm using" + }, + { + "start": 6266.4, + "duration": 0.0, + "text": "know whatever version of MSVC I'm using with<01:44:26.639> clang<01:44:26.960> it's<01:44:27.199> similar<01:44:27.520> and<01:44:27.679> then<01:44:28.560> um<01:44:29.040> and" + }, + { + "start": 6269.27, + "duration": 0.0, + "text": "with clang it's similar and then um and" + }, + { + "start": 6269.28, + "duration": 0.0, + "text": "with clang it's similar and then um and there's<01:44:29.440> a<01:44:29.679> couple<01:44:29.760> of<01:44:29.920> things<01:44:30.080> in<01:44:30.320> C<01:44:30.560> that<01:44:30.800> are" + }, + { + "start": 6270.95, + "duration": 0.0, + "text": "there's a couple of things in C that are" + }, + { + "start": 6270.96, + "duration": 0.0, + "text": "there's a couple of things in C that are actually<01:44:31.199> better<01:44:31.600> like<01:44:32.320> um<01:44:32.560> Vaslav<01:44:33.360> yesterday" + }, + { + "start": 6273.669, + "duration": 0.0, + "text": "actually better like um Vaslav yesterday" + }, + { + "start": 6273.679, + "duration": 0.0, + "text": "actually better like um Vaslav yesterday mentioned<01:44:34.239> designated<01:44:34.800> initializers<01:44:35.840> C++" + }, + { + "start": 6276.47, + "duration": 0.0, + "text": "mentioned designated initializers C++" + }, + { + "start": 6276.48, + "duration": 0.0, + "text": "mentioned designated initializers C++ does<01:44:36.639> have<01:44:36.800> them<01:44:37.040> but<01:44:37.199> they're<01:44:37.679> pretty<01:44:38.159> bad" + }, + { + "start": 6278.629, + "duration": 0.0, + "text": "does have them but they're pretty bad" + }, + { + "start": 6278.639, + "duration": 0.0, + "text": "does have them but they're pretty bad like<01:44:38.800> they're<01:44:39.040> not<01:44:39.840> um<01:44:40.480> I<01:44:40.800> maybe<01:44:41.040> they're" + }, + { + "start": 6281.189, + "duration": 0.0, + "text": "like they're not um I maybe they're" + }, + { + "start": 6281.199, + "duration": 0.0, + "text": "like they're not um I maybe they're fixing<01:44:41.440> this<01:44:42.000> some<01:44:42.560> somebody<01:44:43.040> can<01:44:43.119> tell<01:44:43.280> me" + }, + { + "start": 6283.43, + "duration": 0.0, + "text": "fixing this some somebody can tell me" + }, + { + "start": 6283.44, + "duration": 0.0, + "text": "fixing this some somebody can tell me but<01:44:43.679> but<01:44:44.080> maybe<01:44:44.239> they're<01:44:44.480> fixing<01:44:44.639> this<01:44:44.800> but" + }, + { + "start": 6284.95, + "duration": 0.0, + "text": "but but maybe they're fixing this but" + }, + { + "start": 6284.96, + "duration": 0.0, + "text": "but but maybe they're fixing this but they<01:44:45.119> they<01:44:45.280> have<01:44:45.360> a<01:44:45.520> very<01:44:45.679> specific<01:44:46.000> like" + }, + { + "start": 6286.31, + "duration": 0.0, + "text": "they they have a very specific like" + }, + { + "start": 6286.32, + "duration": 0.0, + "text": "they they have a very specific like ordering<01:44:46.800> requirement<01:44:47.280> on<01:44:47.600> like<01:44:47.840> the<01:44:48.080> the<01:44:48.560> way" + }, + { + "start": 6289.03, + "duration": 0.0, + "text": "ordering requirement on like the the way" + }, + { + "start": 6289.04, + "duration": 0.0, + "text": "ordering requirement on like the the way you<01:44:49.280> specify<01:44:49.679> the<01:44:49.840> the<01:44:50.239> initializers<01:44:50.880> because" + }, + { + "start": 6291.109, + "duration": 0.0, + "text": "you specify the the initializers because" + }, + { + "start": 6291.119, + "duration": 0.0, + "text": "you specify the the initializers because of<01:44:51.280> like<01:44:51.440> constructor<01:44:52.239> uh<01:44:52.400> execution" + }, + { + "start": 6292.79, + "duration": 0.0, + "text": "of like constructor uh execution" + }, + { + "start": 6292.8, + "duration": 0.0, + "text": "of like constructor uh execution ordering<01:44:53.119> or<01:44:53.360> whatever<01:44:53.840> even<01:44:54.000> if<01:44:54.159> it's<01:44:54.400> even" + }, + { + "start": 6294.55, + "duration": 0.0, + "text": "ordering or whatever even if it's even" + }, + { + "start": 6294.56, + "duration": 0.0, + "text": "ordering or whatever even if it's even if<01:44:54.639> there<01:44:54.800> are<01:44:54.960> no<01:44:55.119> constructors<01:44:55.520> which<01:44:55.679> I<01:44:55.760> I" + }, + { + "start": 6295.99, + "duration": 0.0, + "text": "if there are no constructors which I I" + }, + { + "start": 6296.0, + "duration": 0.0, + "text": "if there are no constructors which I I don't<01:44:56.080> understand<01:44:56.320> that<01:44:56.560> part<01:44:56.719> maybe<01:44:56.880> that's" + }, + { + "start": 6297.03, + "duration": 0.0, + "text": "don't understand that part maybe that's" + }, + { + "start": 6297.04, + "duration": 0.0, + "text": "don't understand that part maybe that's what<01:44:57.119> they're<01:44:57.280> fixing<01:44:57.600> but<01:44:57.760> point<01:44:58.000> being<01:44:59.360> um" + }, + { + "start": 6300.55, + "duration": 0.0, + "text": "what they're fixing but point being um" + }, + { + "start": 6300.56, + "duration": 0.0, + "text": "what they're fixing but point being um point<01:45:00.880> being<01:45:01.360> uh<01:45:01.520> in<01:45:01.760> C<01:45:02.000> you<01:45:02.239> just<01:45:02.320> have<01:45:02.480> what" + }, + { + "start": 6302.629, + "duration": 0.0, + "text": "point being uh in C you just have what" + }, + { + "start": 6302.639, + "duration": 0.0, + "text": "point being uh in C you just have what you<01:45:02.880> actually<01:45:03.040> want<01:45:03.280> which<01:45:03.440> is<01:45:03.520> to<01:45:03.679> say<01:45:03.840> like" + }, + { + "start": 6304.07, + "duration": 0.0, + "text": "you actually want which is to say like" + }, + { + "start": 6304.08, + "duration": 0.0, + "text": "you actually want which is to say like this<01:45:04.239> member<01:45:04.560> this<01:45:04.719> member<01:45:04.960> this<01:45:05.119> member<01:45:05.360> in" + }, + { + "start": 6305.59, + "duration": 0.0, + "text": "this member this member this member in" + }, + { + "start": 6305.6, + "duration": 0.0, + "text": "this member this member this member in any<01:45:05.760> order<01:45:06.159> I<01:45:06.320> don't<01:45:06.400> care<01:45:06.800> like<01:45:07.040> just<01:45:07.280> let<01:45:07.440> me" + }, + { + "start": 6307.59, + "duration": 0.0, + "text": "any order I don't care like just let me" + }, + { + "start": 6307.6, + "duration": 0.0, + "text": "any order I don't care like just let me fill<01:45:07.840> them<01:45:08.000> out<01:45:08.639> um<01:45:08.880> so<01:45:09.199> there's<01:45:09.360> a<01:45:09.520> couple<01:45:09.679> of" + }, + { + "start": 6309.75, + "duration": 0.0, + "text": "fill them out um so there's a couple of" + }, + { + "start": 6309.76, + "duration": 0.0, + "text": "fill them out um so there's a couple of features<01:45:10.000> like<01:45:10.159> that<01:45:10.239> that<01:45:10.480> I<01:45:10.639> like<01:45:10.880> a<01:45:11.119> little" + }, + { + "start": 6311.27, + "duration": 0.0, + "text": "features like that that I like a little" + }, + { + "start": 6311.28, + "duration": 0.0, + "text": "features like that that I like a little bit<01:45:11.360> more<01:45:12.400> it's<01:45:12.719> mostly<01:45:13.040> just<01:45:13.360> like<01:45:13.679> compile" + }, + { + "start": 6314.149, + "duration": 0.0, + "text": "bit more it's mostly just like compile" + }, + { + "start": 6314.159, + "duration": 0.0, + "text": "bit more it's mostly just like compile time<01:45:14.719> also<01:45:15.199> I<01:45:15.440> just<01:45:15.679> like<01:45:16.159> aesthetically<01:45:16.880> I" + }, + { + "start": 6317.189, + "duration": 0.0, + "text": "time also I just like aesthetically I" + }, + { + "start": 6317.199, + "duration": 0.0, + "text": "time also I just like aesthetically I suppose<01:45:17.520> prefer<01:45:17.840> the<01:45:18.000> idea<01:45:18.239> of<01:45:18.480> relying<01:45:18.880> on<01:45:19.040> a" + }, + { + "start": 6319.189, + "duration": 0.0, + "text": "suppose prefer the idea of relying on a" + }, + { + "start": 6319.199, + "duration": 0.0, + "text": "suppose prefer the idea of relying on a smaller<01:45:19.440> tool<01:45:19.760> chain<01:45:20.239> to<01:45:20.400> build<01:45:20.639> everything" + }, + { + "start": 6321.109, + "duration": 0.0, + "text": "smaller tool chain to build everything" + }, + { + "start": 6321.119, + "duration": 0.0, + "text": "smaller tool chain to build everything because<01:45:21.280> then<01:45:21.440> it's<01:45:21.600> like<01:45:21.760> someday<01:45:22.159> you<01:45:22.320> know" + }, + { + "start": 6322.47, + "duration": 0.0, + "text": "because then it's like someday you know" + }, + { + "start": 6322.48, + "duration": 0.0, + "text": "because then it's like someday you know like<01:45:22.880> if<01:45:23.119> there<01:45:23.280> is<01:45:23.360> a<01:45:23.520> C<01:45:23.760> compiler<01:45:24.320> that<01:45:24.560> comes" + }, + { + "start": 6324.79, + "duration": 0.0, + "text": "like if there is a C compiler that comes" + }, + { + "start": 6324.8, + "duration": 0.0, + "text": "like if there is a C compiler that comes out<01:45:25.119> it's<01:45:25.280> like<01:45:25.440> the<01:45:25.600> debugger<01:45:26.080> can<01:45:26.239> be<01:45:26.400> built" + }, + { + "start": 6326.629, + "duration": 0.0, + "text": "out it's like the debugger can be built" + }, + { + "start": 6326.639, + "duration": 0.0, + "text": "out it's like the debugger can be built with<01:45:26.800> it<01:45:27.119> whereas<01:45:27.440> if<01:45:27.600> I<01:45:27.760> need<01:45:28.080> some<01:45:28.400> subset<01:45:28.719> of" + }, + { + "start": 6328.79, + "duration": 0.0, + "text": "with it whereas if I need some subset of" + }, + { + "start": 6328.8, + "duration": 0.0, + "text": "with it whereas if I need some subset of a<01:45:28.880> C++<01:45:29.360> compiler<01:45:29.760> that<01:45:30.000> happens<01:45:30.239> to<01:45:30.400> be<01:45:30.480> a" + }, + { + "start": 6330.629, + "duration": 0.0, + "text": "a C++ compiler that happens to be a" + }, + { + "start": 6330.639, + "duration": 0.0, + "text": "a C++ compiler that happens to be a different<01:45:30.800> subset<01:45:31.360> than<01:45:31.600> what<01:45:31.840> everyone<01:45:32.159> else" + }, + { + "start": 6332.39, + "duration": 0.0, + "text": "different subset than what everyone else" + }, + { + "start": 6332.4, + "duration": 0.0, + "text": "different subset than what everyone else needs<01:45:33.040> it's<01:45:33.280> like<01:45:33.520> no<01:45:33.760> you're<01:45:33.920> good<01:45:34.560> um<01:45:35.360> you" + }, + { + "start": 6335.51, + "duration": 0.0, + "text": "needs it's like no you're good um you" + }, + { + "start": 6335.52, + "duration": 0.0, + "text": "needs it's like no you're good um you know<01:45:35.679> then<01:45:35.840> it's<01:45:36.080> like<01:45:36.400> that<01:45:36.639> thing<01:45:36.800> is<01:45:36.960> never" + }, + { + "start": 6337.109, + "duration": 0.0, + "text": "know then it's like that thing is never" + }, + { + "start": 6337.119, + "duration": 0.0, + "text": "know then it's like that thing is never going<01:45:37.199> to<01:45:37.280> happen<01:45:37.520> like<01:45:37.679> C++<01:45:38.159> compilers<01:45:38.560> are" + }, + { + "start": 6338.87, + "duration": 0.0, + "text": "going to happen like C++ compilers are" + }, + { + "start": 6338.88, + "duration": 0.0, + "text": "going to happen like C++ compilers are it's<01:45:39.199> way<01:45:39.360> harder<01:45:39.679> problem<01:45:39.840> than<01:45:40.000> a<01:45:40.080> C" + }, + { + "start": 6340.31, + "duration": 0.0, + "text": "it's way harder problem than a C" + }, + { + "start": 6340.32, + "duration": 0.0, + "text": "it's way harder problem than a C compiler<01:45:40.719> so<01:45:40.880> it's<01:45:41.040> like<01:45:41.600> I<01:45:41.840> kind<01:45:42.000> of<01:45:42.080> just" + }, + { + "start": 6342.31, + "duration": 0.0, + "text": "compiler so it's like I kind of just" + }, + { + "start": 6342.32, + "duration": 0.0, + "text": "compiler so it's like I kind of just liked<01:45:42.560> that<01:45:42.880> option<01:45:43.280> better<01:45:43.840> um<01:45:44.000> seemed<01:45:44.320> like" + }, + { + "start": 6344.39, + "duration": 0.0, + "text": "liked that option better um seemed like" + }, + { + "start": 6344.4, + "duration": 0.0, + "text": "liked that option better um seemed like a<01:45:44.639> good<01:45:44.800> investment" + }, + { + "start": 6345.91, + "duration": 0.0, + "text": "a good investment" + }, + { + "start": 6345.92, + "duration": 0.0, + "text": "a good investment >> and<01:45:46.159> since<01:45:46.320> you<01:45:46.560> mentioned<01:45:46.880> build<01:45:47.199> speed<01:45:47.679> like" + }, + { + "start": 6347.83, + "duration": 0.0, + "text": ">> and since you mentioned build speed like" + }, + { + "start": 6347.84, + "duration": 0.0, + "text": ">> and since you mentioned build speed like ready<01:45:48.080> debugger<01:45:48.400> compiles<01:45:49.199> really<01:45:49.520> fast<01:45:50.800> even" + }, + { + "start": 6351.03, + "duration": 0.0, + "text": "ready debugger compiles really fast even" + }, + { + "start": 6351.04, + "duration": 0.0, + "text": "ready debugger compiles really fast even though<01:45:51.760> like<01:45:52.080> you<01:45:52.239> have<01:45:52.400> a<01:45:52.639> as<01:45:52.960> far<01:45:53.119> as<01:45:53.199> I<01:45:53.360> know" + }, + { + "start": 6353.51, + "duration": 0.0, + "text": "though like you have a as far as I know" + }, + { + "start": 6353.52, + "duration": 0.0, + "text": "though like you have a as far as I know you<01:45:53.679> haven't<01:45:53.840> mentioned<01:45:54.000> that<01:45:54.159> in<01:45:54.320> that<01:45:54.480> talk" + }, + { + "start": 6354.709, + "duration": 0.0, + "text": "you haven't mentioned that in that talk" + }, + { + "start": 6354.719, + "duration": 0.0, + "text": "you haven't mentioned that in that talk but<01:45:54.960> you<01:45:55.119> have<01:45:55.199> a<01:45:55.360> pre-processing<01:45:56.000> step<01:45:56.239> where" + }, + { + "start": 6356.39, + "duration": 0.0, + "text": "but you have a pre-processing step where" + }, + { + "start": 6356.4, + "duration": 0.0, + "text": "but you have a pre-processing step where you<01:45:56.560> do<01:45:56.719> code<01:45:56.960> generation<01:45:57.440> even<01:45:57.840> yes<01:45:58.159> like" + }, + { + "start": 6359.109, + "duration": 0.0, + "text": "you do code generation even yes like" + }, + { + "start": 6359.119, + "duration": 0.0, + "text": "you do code generation even yes like >> do<01:45:59.280> you<01:45:59.440> want<01:45:59.520> to<01:45:59.679> get<01:46:00.239> a<01:46:00.480> bit<01:46:00.719> into<01:46:01.040> that<01:46:01.600> like" + }, + { + "start": 6361.99, + "duration": 0.0, + "text": ">> do you want to get a bit into that like" + }, + { + "start": 6362.0, + "duration": 0.0, + "text": ">> do you want to get a bit into that like what<01:46:02.239> kind<01:46:02.400> of<01:46:02.480> you<01:46:02.719> do<01:46:02.800> some<01:46:02.960> kind<01:46:03.040> of<01:46:03.199> meta" + }, + { + "start": 6363.51, + "duration": 0.0, + "text": "what kind of you do some kind of meta" + }, + { + "start": 6363.52, + "duration": 0.0, + "text": "what kind of you do some kind of meta programming<01:46:04.080> as<01:46:04.320> I<01:46:04.480> understand<01:46:04.880> even<01:46:05.040> in<01:46:05.280> C" + }, + { + "start": 6365.83, + "duration": 0.0, + "text": "programming as I understand even in C" + }, + { + "start": 6365.84, + "duration": 0.0, + "text": "programming as I understand even in C with<01:46:06.000> your<01:46:06.239> simple<01:46:06.480> build<01:46:06.800> system<01:46:07.199> like<01:46:07.520> want" + }, + { + "start": 6367.669, + "duration": 0.0, + "text": "with your simple build system like want" + }, + { + "start": 6367.679, + "duration": 0.0, + "text": "with your simple build system like want to<01:46:07.840> elaborate<01:46:08.159> on<01:46:08.320> that<01:46:08.480> a<01:46:08.639> bit<01:46:08.800> or<01:46:08.960> have<01:46:09.119> you" + }, + { + "start": 6369.35, + "duration": 0.0, + "text": "to elaborate on that a bit or have you" + }, + { + "start": 6369.36, + "duration": 0.0, + "text": "to elaborate on that a bit or have you like<01:46:09.520> is<01:46:09.760> there<01:46:09.840> a<01:46:10.000> source<01:46:10.159> you<01:46:10.239> want<01:46:10.320> to<01:46:10.400> point" + }, + { + "start": 6370.55, + "duration": 0.0, + "text": "like is there a source you want to point" + }, + { + "start": 6370.56, + "duration": 0.0, + "text": "like is there a source you want to point to<01:46:10.719> instead" + }, + { + "start": 6371.43, + "duration": 0.0, + "text": "to instead" + }, + { + "start": 6371.44, + "duration": 0.0, + "text": "to instead >> um<01:46:11.679> I<01:46:11.840> can<01:46:12.000> cover<01:46:12.159> it<01:46:12.400> pretty<01:46:12.639> quick<01:46:12.800> I<01:46:12.960> mean" + }, + { + "start": 6373.03, + "duration": 0.0, + "text": ">> um I can cover it pretty quick I mean" + }, + { + "start": 6373.04, + "duration": 0.0, + "text": ">> um I can cover it pretty quick I mean it's<01:46:13.280> just<01:46:13.440> like<01:46:14.080> you<01:46:14.239> know<01:46:14.320> to<01:46:14.480> do<01:46:14.639> compile" + }, + { + "start": 6374.95, + "duration": 0.0, + "text": "it's just like you know to do compile" + }, + { + "start": 6374.96, + "duration": 0.0, + "text": "it's just like you know to do compile time<01:46:15.199> execution<01:46:15.679> and<01:46:15.840> see<01:46:16.639> uh<01:46:16.800> you<01:46:16.960> don't<01:46:17.040> need" + }, + { + "start": 6377.109, + "duration": 0.0, + "text": "time execution and see uh you don't need" + }, + { + "start": 6377.119, + "duration": 0.0, + "text": "time execution and see uh you don't need the<01:46:17.280> compiler<01:46:17.679> to<01:46:17.760> do<01:46:17.840> it<01:46:18.000> for<01:46:18.080> for<01:46:18.239> you.<01:46:18.400> You" + }, + { + "start": 6378.629, + "duration": 0.0, + "text": "the compiler to do it for for you. You" + }, + { + "start": 6378.639, + "duration": 0.0, + "text": "the compiler to do it for for you. You just<01:46:18.800> build<01:46:18.960> a<01:46:19.119> program,<01:46:19.440> run<01:46:19.600> the<01:46:19.760> program," + }, + { + "start": 6379.99, + "duration": 0.0, + "text": "just build a program, run the program," + }, + { + "start": 6380.0, + "duration": 0.0, + "text": "just build a program, run the program, and<01:46:20.159> then<01:46:20.239> you<01:46:20.320> build<01:46:20.480> your<01:46:20.639> main<01:46:20.880> program<01:46:21.199> and" + }, + { + "start": 6381.43, + "duration": 0.0, + "text": "and then you build your main program and" + }, + { + "start": 6381.44, + "duration": 0.0, + "text": "and then you build your main program and then<01:46:21.840> arbitrary<01:46:22.320> compile<01:46:22.719> time<01:46:23.040> execution" + }, + { + "start": 6383.51, + "duration": 0.0, + "text": "then arbitrary compile time execution" + }, + { + "start": 6383.52, + "duration": 0.0, + "text": "then arbitrary compile time execution goes<01:46:23.760> there.<01:46:24.639> And<01:46:25.040> uh<01:46:25.600> and<01:46:25.920> yeah,<01:46:26.159> so<01:46:26.400> I<01:46:26.639> mean" + }, + { + "start": 6386.95, + "duration": 0.0, + "text": "goes there. And uh and yeah, so I mean" + }, + { + "start": 6386.96, + "duration": 0.0, + "text": "goes there. And uh and yeah, so I mean building<01:46:27.280> C<01:46:27.440> is<01:46:27.600> really<01:46:27.760> fast.<01:46:28.000> So<01:46:28.159> building" + }, + { + "start": 6388.39, + "duration": 0.0, + "text": "building C is really fast. So building" + }, + { + "start": 6388.4, + "duration": 0.0, + "text": "building C is really fast. So building the<01:46:28.560> meta<01:46:28.880> program,<01:46:29.119> I<01:46:29.280> do<01:46:29.360> it<01:46:29.520> every<01:46:29.679> time<01:46:29.920> I" + }, + { + "start": 6390.149, + "duration": 0.0, + "text": "the meta program, I do it every time I" + }, + { + "start": 6390.159, + "duration": 0.0, + "text": "the meta program, I do it every time I build<01:46:30.320> the<01:46:30.400> meta<01:46:30.719> program,<01:46:30.960> I<01:46:31.119> run<01:46:31.280> it.<01:46:32.000> Um<01:46:32.719> and" + }, + { + "start": 6393.59, + "duration": 0.0, + "text": "build the meta program, I run it. Um and" + }, + { + "start": 6393.6, + "duration": 0.0, + "text": "build the meta program, I run it. Um and uh" + }, + { + "start": 6395.27, + "duration": 0.0, + "text": "uh" + }, + { + "start": 6395.28, + "duration": 0.0, + "text": "uh uh<01:46:35.520> and<01:46:35.760> so<01:46:36.000> that's<01:46:36.320> basically<01:46:36.639> how<01:46:36.880> that" + }, + { + "start": 6397.109, + "duration": 0.0, + "text": "uh and so that's basically how that" + }, + { + "start": 6397.119, + "duration": 0.0, + "text": "uh and so that's basically how that works.<01:46:37.520> Um<01:46:38.080> what<01:46:38.320> was<01:46:38.400> the<01:46:38.560> other<01:46:38.639> part<01:46:38.800> of<01:46:38.880> the" + }, + { + "start": 6399.03, + "duration": 0.0, + "text": "works. Um what was the other part of the" + }, + { + "start": 6399.04, + "duration": 0.0, + "text": "works. Um what was the other part of the question?<01:46:39.360> I<01:46:39.760> think<01:46:40.159> was<01:46:40.400> that<01:46:40.560> just<01:46:40.639> it?" + }, + { + "start": 6400.87, + "duration": 0.0, + "text": "question? I think was that just it?" + }, + { + "start": 6400.88, + "duration": 0.0, + "text": "question? I think was that just it? >> Yeah.<01:46:41.199> What<01:46:41.280> do<01:46:41.360> you<01:46:41.440> use<01:46:41.520> it<01:46:41.679> for?<01:46:41.840> Like<01:46:42.000> what" + }, + { + "start": 6402.149, + "duration": 0.0, + "text": ">> Yeah. What do you use it for? Like what" + }, + { + "start": 6402.159, + "duration": 0.0, + "text": ">> Yeah. What do you use it for? Like what what what<01:46:42.800> do<01:46:42.880> you<01:46:42.960> do<01:46:43.040> with<01:46:43.199> a<01:46:43.280> meta<01:46:43.600> program" + }, + { + "start": 6403.83, + "duration": 0.0, + "text": "what what do you do with a meta program" + }, + { + "start": 6403.84, + "duration": 0.0, + "text": "what what do you do with a meta program and<01:46:43.920> the<01:46:44.000> code<01:46:44.239> generation?<01:46:44.560> Like<01:46:44.719> what<01:46:44.800> do" + }, + { + "start": 6404.87, + "duration": 0.0, + "text": "and the code generation? Like what do" + }, + { + "start": 6404.88, + "duration": 0.0, + "text": "and the code generation? Like what do you<01:46:44.960> use<01:46:45.040> it<01:46:45.199> for?<01:46:45.440> Where<01:46:45.600> is<01:46:45.679> it<01:46:45.840> useful?" + }, + { + "start": 6406.39, + "duration": 0.0, + "text": "you use it for? Where is it useful?" + }, + { + "start": 6406.4, + "duration": 0.0, + "text": "you use it for? Where is it useful? >> Yeah.<01:46:46.639> So<01:46:47.040> I<01:46:47.280> tend<01:46:47.520> to<01:46:47.679> in<01:46:47.840> the<01:46:48.000> debugger" + }, + { + "start": 6408.629, + "duration": 0.0, + "text": ">> Yeah. So I tend to in the debugger" + }, + { + "start": 6408.639, + "duration": 0.0, + "text": ">> Yeah. So I tend to in the debugger there's<01:46:48.880> like<01:46:49.040> it's<01:46:49.360> mostly<01:46:49.600> a<01:46:49.760> data" + }, + { + "start": 6409.99, + "duration": 0.0, + "text": "there's like it's mostly a data" + }, + { + "start": 6410.0, + "duration": 0.0, + "text": "there's like it's mostly a data management<01:46:50.400> problem<01:46:50.719> like<01:46:51.679> um<01:46:51.840> there's<01:46:52.159> a<01:46:52.400> lot" + }, + { + "start": 6412.55, + "duration": 0.0, + "text": "management problem like um there's a lot" + }, + { + "start": 6412.56, + "duration": 0.0, + "text": "management problem like um there's a lot of<01:46:52.800> like<01:46:53.679> just<01:46:54.000> giant<01:46:54.560> things<01:46:54.719> that<01:46:55.040> you" + }, + { + "start": 6415.27, + "duration": 0.0, + "text": "of like just giant things that you" + }, + { + "start": 6415.28, + "duration": 0.0, + "text": "of like just giant things that you really<01:46:55.440> want<01:46:55.600> to<01:46:55.679> be<01:46:55.840> Excel<01:46:56.239> tables<01:46:56.880> that<01:46:57.119> are" + }, + { + "start": 6417.27, + "duration": 0.0, + "text": "really want to be Excel tables that are" + }, + { + "start": 6417.28, + "duration": 0.0, + "text": "really want to be Excel tables that are like<01:46:57.440> just<01:46:57.679> like<01:46:57.840> here's<01:46:58.080> the<01:46:58.239> information" + }, + { + "start": 6418.55, + "duration": 0.0, + "text": "like just like here's the information" + }, + { + "start": 6418.56, + "duration": 0.0, + "text": "like just like here's the information like<01:46:58.719> here's<01:46:58.880> all<01:46:59.040> the<01:46:59.119> UI<01:46:59.520> commands<01:46:59.840> and" + }, + { + "start": 6420.07, + "duration": 0.0, + "text": "like here's all the UI commands and" + }, + { + "start": 6420.08, + "duration": 0.0, + "text": "like here's all the UI commands and here's<01:47:00.320> like<01:47:00.880> how<01:47:01.840> here's<01:47:02.080> what<01:47:02.239> they<01:47:02.480> do<01:47:02.639> if" + }, + { + "start": 6422.87, + "duration": 0.0, + "text": "here's like how here's what they do if" + }, + { + "start": 6422.88, + "duration": 0.0, + "text": "here's like how here's what they do if like<01:47:03.040> if<01:47:03.199> you<01:47:03.280> trigger<01:47:03.520> them<01:47:03.600> with<01:47:03.760> a<01:47:03.920> hotkey" + }, + { + "start": 6424.31, + "duration": 0.0, + "text": "like if you trigger them with a hotkey" + }, + { + "start": 6424.32, + "duration": 0.0, + "text": "like if you trigger them with a hotkey and<01:47:04.560> the<01:47:04.800> command<01:47:05.040> needs<01:47:05.199> a<01:47:05.360> little<01:47:05.440> bit<01:47:05.600> more" + }, + { + "start": 6425.75, + "duration": 0.0, + "text": "and the command needs a little bit more" + }, + { + "start": 6425.76, + "duration": 0.0, + "text": "and the command needs a little bit more information<01:47:06.080> to<01:47:06.320> execute.<01:47:07.199> Here's<01:47:07.440> what<01:47:07.600> the" + }, + { + "start": 6427.83, + "duration": 0.0, + "text": "information to execute. Here's what the" + }, + { + "start": 6427.84, + "duration": 0.0, + "text": "information to execute. Here's what the query<01:47:08.159> information<01:47:08.480> looks<01:47:08.719> like<01:47:08.800> for<01:47:08.960> that." + }, + { + "start": 6429.189, + "duration": 0.0, + "text": "query information looks like for that." + }, + { + "start": 6429.199, + "duration": 0.0, + "text": "query information looks like for that. Here's<01:47:09.360> the<01:47:09.520> name,<01:47:09.760> here's<01:47:09.920> the<01:47:10.080> description," + }, + { + "start": 6430.47, + "duration": 0.0, + "text": "Here's the name, here's the description," + }, + { + "start": 6430.48, + "duration": 0.0, + "text": "Here's the name, here's the description, here's<01:47:10.719> the<01:47:10.880> icon,<01:47:11.199> like<01:47:11.440> all<01:47:11.600> that<01:47:11.760> stuff." + }, + { + "start": 6432.39, + "duration": 0.0, + "text": "here's the icon, like all that stuff." + }, + { + "start": 6432.4, + "duration": 0.0, + "text": "here's the icon, like all that stuff. there's<01:47:12.639> like<01:47:12.880> tons<01:47:13.199> of<01:47:13.360> like<01:47:13.679> tables<01:47:14.000> of<01:47:14.159> all" + }, + { + "start": 6434.31, + "duration": 0.0, + "text": "there's like tons of like tables of all" + }, + { + "start": 6434.32, + "duration": 0.0, + "text": "there's like tons of like tables of all that<01:47:14.480> information<01:47:15.040> and<01:47:15.679> oftentimes<01:47:16.320> you<01:47:16.480> want" + }, + { + "start": 6436.629, + "duration": 0.0, + "text": "that information and oftentimes you want" + }, + { + "start": 6436.639, + "duration": 0.0, + "text": "that information and oftentimes you want to<01:47:16.960> use<01:47:17.280> that<01:47:17.520> to<01:47:17.760> produce<01:47:18.080> like<01:47:19.440> a<01:47:19.760> variety<01:47:20.159> of" + }, + { + "start": 6440.47, + "duration": 0.0, + "text": "to use that to produce like a variety of" + }, + { + "start": 6440.48, + "duration": 0.0, + "text": "to use that to produce like a variety of C<01:47:20.960> constructs.<01:47:21.600> So<01:47:21.760> it's<01:47:21.920> not<01:47:22.080> just<01:47:22.159> like<01:47:22.320> I" + }, + { + "start": 6442.47, + "duration": 0.0, + "text": "C constructs. So it's not just like I" + }, + { + "start": 6442.48, + "duration": 0.0, + "text": "C constructs. So it's not just like I want<01:47:22.560> a<01:47:22.639> strruct<01:47:22.960> for<01:47:23.040> this.<01:47:23.280> It's<01:47:23.440> like<01:47:23.760> okay" + }, + { + "start": 6443.99, + "duration": 0.0, + "text": "want a strruct for this. It's like okay" + }, + { + "start": 6444.0, + "duration": 0.0, + "text": "want a strruct for this. It's like okay I<01:47:24.159> want<01:47:24.239> a<01:47:24.400> strct<01:47:24.639> and<01:47:24.800> a<01:47:25.040> table<01:47:25.199> of<01:47:25.360> the" + }, + { + "start": 6445.59, + "duration": 0.0, + "text": "I want a strct and a table of the" + }, + { + "start": 6445.6, + "duration": 0.0, + "text": "I want a strct and a table of the offsets<01:47:26.000> of<01:47:26.159> the<01:47:26.320> members<01:47:26.719> and<01:47:27.040> like<01:47:27.520> a<01:47:27.760> table" + }, + { + "start": 6447.91, + "duration": 0.0, + "text": "offsets of the members and like a table" + }, + { + "start": 6447.92, + "duration": 0.0, + "text": "offsets of the members and like a table of<01:47:28.239> all<01:47:28.400> the<01:47:28.480> types<01:47:28.800> and<01:47:29.040> like<01:47:29.520> um<01:47:30.639> you<01:47:30.800> know" + }, + { + "start": 6450.95, + "duration": 0.0, + "text": "of all the types and like um you know" + }, + { + "start": 6450.96, + "duration": 0.0, + "text": "of all the types and like um you know things<01:47:31.199> like<01:47:31.280> that.<01:47:31.600> Now,<01:47:31.760> you<01:47:31.920> can<01:47:32.000> do<01:47:32.080> that" + }, + { + "start": 6452.229, + "duration": 0.0, + "text": "things like that. Now, you can do that" + }, + { + "start": 6452.239, + "duration": 0.0, + "text": "things like that. Now, you can do that with<01:47:32.400> X<01:47:32.639> macros<01:47:33.840> um<01:47:34.159> to<01:47:34.400> some<01:47:34.639> degree,<01:47:35.119> but<01:47:35.440> I" + }, + { + "start": 6455.75, + "duration": 0.0, + "text": "with X macros um to some degree, but I" + }, + { + "start": 6455.76, + "duration": 0.0, + "text": "with X macros um to some degree, but I kind<01:47:35.920> of<01:47:36.159> don't<01:47:36.480> like<01:47:36.960> that<01:47:37.360> because<01:47:37.600> it's" + }, + { + "start": 6457.91, + "duration": 0.0, + "text": "kind of don't like that because it's" + }, + { + "start": 6457.92, + "duration": 0.0, + "text": "kind of don't like that because it's pretty<01:47:38.080> opaque<01:47:38.639> to<01:47:38.800> simple<01:47:39.199> tooling.<01:47:39.760> Like<01:47:40.239> my" + }, + { + "start": 6460.55, + "duration": 0.0, + "text": "pretty opaque to simple tooling. Like my" + }, + { + "start": 6460.56, + "duration": 0.0, + "text": "pretty opaque to simple tooling. Like my editor<01:47:40.880> doesn't<01:47:41.040> know<01:47:41.199> how<01:47:41.280> to<01:47:41.600> understand<01:47:42.159> X" + }, + { + "start": 6462.39, + "duration": 0.0, + "text": "editor doesn't know how to understand X" + }, + { + "start": 6462.4, + "duration": 0.0, + "text": "editor doesn't know how to understand X macros<01:47:42.880> and<01:47:43.040> all<01:47:43.199> that,<01:47:43.360> and<01:47:43.520> I'm<01:47:43.679> not<01:47:43.840> going" + }, + { + "start": 6463.83, + "duration": 0.0, + "text": "macros and all that, and I'm not going" + }, + { + "start": 6463.84, + "duration": 0.0, + "text": "macros and all that, and I'm not going to<01:47:43.920> use<01:47:44.159> an<01:47:44.480> editor<01:47:44.880> that<01:47:45.119> can<01:47:45.360> because<01:47:45.840> all<01:47:46.000> of" + }, + { + "start": 6466.07, + "duration": 0.0, + "text": "to use an editor that can because all of" + }, + { + "start": 6466.08, + "duration": 0.0, + "text": "to use an editor that can because all of them<01:47:46.239> are<01:47:46.400> really<01:47:46.639> slow.<01:47:47.199> And<01:47:47.360> so,<01:47:47.520> it's<01:47:47.760> like" + }, + { + "start": 6468.229, + "duration": 0.0, + "text": "them are really slow. And so, it's like" + }, + { + "start": 6468.239, + "duration": 0.0, + "text": "them are really slow. And so, it's like I'd<01:47:48.480> rather<01:47:48.719> just<01:47:48.960> have<01:47:49.679> um<01:47:50.480> I'd<01:47:50.800> rather<01:47:50.960> just" + }, + { + "start": 6471.189, + "duration": 0.0, + "text": "I'd rather just have um I'd rather just" + }, + { + "start": 6471.199, + "duration": 0.0, + "text": "I'd rather just have um I'd rather just produce<01:47:51.440> the<01:47:51.600> C<01:47:51.840> code<01:47:52.000> I<01:47:52.239> want.<01:47:52.560> Now,<01:47:52.800> in<01:47:53.040> other" + }, + { + "start": 6473.27, + "duration": 0.0, + "text": "produce the C code I want. Now, in other" + }, + { + "start": 6473.28, + "duration": 0.0, + "text": "produce the C code I want. Now, in other projects<01:47:53.600> in<01:47:53.679> in<01:47:53.920> the<01:47:54.000> RAD<01:47:54.239> debugger,<01:47:54.639> I<01:47:54.800> don't" + }, + { + "start": 6475.109, + "duration": 0.0, + "text": "projects in in the RAD debugger, I don't" + }, + { + "start": 6475.119, + "duration": 0.0, + "text": "projects in in the RAD debugger, I don't actually<01:47:55.360> do<01:47:55.520> this,<01:47:55.679> but<01:47:55.920> in<01:47:56.080> other<01:47:56.320> projects," + }, + { + "start": 6476.629, + "duration": 0.0, + "text": "actually do this, but in other projects," + }, + { + "start": 6476.639, + "duration": 0.0, + "text": "actually do this, but in other projects, I<01:47:56.880> do<01:47:57.040> like<01:47:57.920> more<01:47:58.159> complicated<01:47:58.639> meta" + }, + { + "start": 6478.95, + "duration": 0.0, + "text": "I do like more complicated meta" + }, + { + "start": 6478.96, + "duration": 0.0, + "text": "I do like more complicated meta programming<01:47:59.280> where<01:47:59.520> it's<01:47:59.679> like<01:48:00.080> I'm<01:48:00.320> going<01:48:00.400> to" + }, + { + "start": 6480.47, + "duration": 0.0, + "text": "programming where it's like I'm going to" + }, + { + "start": 6480.48, + "duration": 0.0, + "text": "programming where it's like I'm going to find<01:48:00.880> like<01:48:01.199> tweak<01:48:01.520> variables<01:48:02.000> that<01:48:02.159> are" + }, + { + "start": 6482.31, + "duration": 0.0, + "text": "find like tweak variables that are" + }, + { + "start": 6482.32, + "duration": 0.0, + "text": "find like tweak variables that are scattered<01:48:02.719> throughout<01:48:02.960> the<01:48:03.040> codebase.<01:48:03.520> I'm" + }, + { + "start": 6483.669, + "duration": 0.0, + "text": "scattered throughout the codebase. I'm" + }, + { + "start": 6483.679, + "duration": 0.0, + "text": "scattered throughout the codebase. I'm going<01:48:03.760> to<01:48:03.840> find<01:48:04.080> all<01:48:04.239> of<01:48:04.320> them<01:48:04.480> and<01:48:04.639> build<01:48:04.800> a" + }, + { + "start": 6485.03, + "duration": 0.0, + "text": "going to find all of them and build a" + }, + { + "start": 6485.04, + "duration": 0.0, + "text": "going to find all of them and build a data<01:48:05.280> table<01:48:05.679> so<01:48:05.840> that<01:48:06.080> like<01:48:06.239> I<01:48:06.400> can<01:48:06.480> build<01:48:06.639> a<01:48:06.800> UI" + }, + { + "start": 6487.03, + "duration": 0.0, + "text": "data table so that like I can build a UI" + }, + { + "start": 6487.04, + "duration": 0.0, + "text": "data table so that like I can build a UI in<01:48:07.199> my<01:48:07.360> game,<01:48:07.679> for<01:48:07.760> example,<01:48:08.080> that's<01:48:08.400> like" + }, + { + "start": 6488.709, + "duration": 0.0, + "text": "in my game, for example, that's like" + }, + { + "start": 6488.719, + "duration": 0.0, + "text": "in my game, for example, that's like here's<01:48:09.040> all<01:48:09.119> the<01:48:09.199> tweak<01:48:09.520> variables<01:48:09.840> in<01:48:10.080> the" + }, + { + "start": 6490.229, + "duration": 0.0, + "text": "here's all the tweak variables in the" + }, + { + "start": 6490.239, + "duration": 0.0, + "text": "here's all the tweak variables in the system<01:48:10.560> and<01:48:10.800> you<01:48:10.880> can<01:48:11.040> just<01:48:11.119> toggle<01:48:11.520> them" + }, + { + "start": 6491.669, + "duration": 0.0, + "text": "system and you can just toggle them" + }, + { + "start": 6491.679, + "duration": 0.0, + "text": "system and you can just toggle them dynamically.<01:48:12.239> Even<01:48:12.400> though<01:48:12.800> the<01:48:13.119> only<01:48:13.280> thing" + }, + { + "start": 6493.35, + "duration": 0.0, + "text": "dynamically. Even though the only thing" + }, + { + "start": 6493.36, + "duration": 0.0, + "text": "dynamically. Even though the only thing I<01:48:13.520> had<01:48:13.679> to<01:48:13.760> do<01:48:13.840> to<01:48:14.000> actually<01:48:14.239> add<01:48:14.400> that<01:48:14.560> was<01:48:14.800> say" + }, + { + "start": 6495.189, + "duration": 0.0, + "text": "I had to do to actually add that was say" + }, + { + "start": 6495.199, + "duration": 0.0, + "text": "I had to do to actually add that was say tweak<01:48:15.600> and<01:48:15.840> then<01:48:16.000> like<01:48:16.239> some<01:48:16.480> value<01:48:16.719> and<01:48:16.880> then" + }, + { + "start": 6497.03, + "duration": 0.0, + "text": "tweak and then like some value and then" + }, + { + "start": 6497.04, + "duration": 0.0, + "text": "tweak and then like some value and then it's<01:48:17.280> like<01:48:17.520> there<01:48:17.760> you<01:48:17.920> go." + }, + { + "start": 6499.35, + "duration": 0.0, + "text": "it's like there you go." + }, + { + "start": 6499.36, + "duration": 0.0, + "text": "it's like there you go. So<01:48:19.840> this<01:48:20.080> is<01:48:20.400> partially<01:48:20.800> how<01:48:21.040> you<01:48:21.280> avoid<01:48:21.600> like" + }, + { + "start": 6501.83, + "duration": 0.0, + "text": "So this is partially how you avoid like" + }, + { + "start": 6501.84, + "duration": 0.0, + "text": "So this is partially how you avoid like one<01:48:22.000> of<01:48:22.080> the<01:48:22.320> drawbacks<01:48:22.719> of<01:48:23.040> using<01:48:23.440> C<01:48:23.679> and" + }, + { + "start": 6503.91, + "duration": 0.0, + "text": "one of the drawbacks of using C and" + }, + { + "start": 6503.92, + "duration": 0.0, + "text": "one of the drawbacks of using C and having<01:48:24.159> to<01:48:24.239> do<01:48:24.320> a<01:48:24.480> lot<01:48:24.639> of<01:48:24.880> macros<01:48:25.360> to<01:48:25.600> work" + }, + { + "start": 6505.75, + "duration": 0.0, + "text": "having to do a lot of macros to work" + }, + { + "start": 6505.76, + "duration": 0.0, + "text": "having to do a lot of macros to work around<01:48:26.000> it<01:48:26.159> is<01:48:26.320> like<01:48:27.280> as<01:48:27.520> we're<01:48:27.679> on<01:48:27.840> the<01:48:28.000> topic" + }, + { + "start": 6508.149, + "duration": 0.0, + "text": "around it is like as we're on the topic" + }, + { + "start": 6508.159, + "duration": 0.0, + "text": "around it is like as we're on the topic of<01:48:28.239> debugger<01:48:28.800> as<01:48:28.960> anyone<01:48:29.280> knows<01:48:29.440> who's<01:48:29.679> done" + }, + { + "start": 6509.75, + "duration": 0.0, + "text": "of debugger as anyone knows who's done" + }, + { + "start": 6509.76, + "duration": 0.0, + "text": "of debugger as anyone knows who's done that<01:48:30.000> debugging<01:48:30.560> macros<01:48:30.960> is<01:48:31.199> a<01:48:31.360> nightmare" + }, + { + "start": 6512.149, + "duration": 0.0, + "text": "that debugging macros is a nightmare" + }, + { + "start": 6512.159, + "duration": 0.0, + "text": "that debugging macros is a nightmare >> because<01:48:32.400> you<01:48:32.719> basically<01:48:33.040> don't<01:48:33.199> get<01:48:33.360> a<01:48:33.440> debug" + }, + { + "start": 6513.75, + "duration": 0.0, + "text": ">> because you basically don't get a debug" + }, + { + "start": 6513.76, + "duration": 0.0, + "text": ">> because you basically don't get a debug information<01:48:34.000> you<01:48:34.239> can't<01:48:34.320> properly<01:48:34.639> step<01:48:35.280> etc" + }, + { + "start": 6515.669, + "duration": 0.0, + "text": "information you can't properly step etc" + }, + { + "start": 6515.679, + "duration": 0.0, + "text": "information you can't properly step etc etc." + }, + { + "start": 6516.55, + "duration": 0.0, + "text": "etc." + }, + { + "start": 6516.56, + "duration": 0.0, + "text": "etc. >> So<01:48:36.880> you<01:48:37.119> also<01:48:37.440> avoid<01:48:37.679> that<01:48:38.159> by<01:48:38.320> generating" + }, + { + "start": 6518.709, + "duration": 0.0, + "text": ">> So you also avoid that by generating" + }, + { + "start": 6518.719, + "duration": 0.0, + "text": ">> So you also avoid that by generating code<01:48:38.880> instead<01:48:39.119> of<01:48:39.360> relying<01:48:39.600> on<01:48:39.760> macros<01:48:40.159> you" + }, + { + "start": 6520.31, + "duration": 0.0, + "text": "code instead of relying on macros you" + }, + { + "start": 6520.32, + "duration": 0.0, + "text": "code instead of relying on macros you kind<01:48:40.480> of<01:48:40.560> avoid<01:48:40.880> that<01:48:41.040> step<01:48:41.280> and<01:48:41.440> have<01:48:41.600> code" + }, + { + "start": 6521.75, + "duration": 0.0, + "text": "kind of avoid that step and have code" + }, + { + "start": 6521.76, + "duration": 0.0, + "text": "kind of avoid that step and have code that<01:48:41.920> you<01:48:42.080> can<01:48:42.159> step<01:48:42.400> through.<01:48:42.560> Is<01:48:42.719> that<01:48:42.880> a" + }, + { + "start": 6524.55, + "duration": 0.0, + "text": "that you can step through. Is that a" + }, + { + "start": 6524.56, + "duration": 0.0, + "text": "that you can step through. Is that a >> um<01:48:44.800> yeah<01:48:45.040> that's<01:48:45.199> one<01:48:45.440> benefit<01:48:45.760> for<01:48:46.000> sure.<01:48:46.480> Um" + }, + { + "start": 6526.95, + "duration": 0.0, + "text": ">> um yeah that's one benefit for sure. Um" + }, + { + "start": 6526.96, + "duration": 0.0, + "text": ">> um yeah that's one benefit for sure. Um it's<01:48:47.600> uh<01:48:48.239> that's<01:48:48.480> partly<01:48:48.800> a<01:48:48.880> debug<01:48:49.199> info" + }, + { + "start": 6529.51, + "duration": 0.0, + "text": "it's uh that's partly a debug info" + }, + { + "start": 6529.52, + "duration": 0.0, + "text": "it's uh that's partly a debug info problem.<01:48:49.760> Like<01:48:49.920> you<01:48:50.080> could<01:48:50.159> imagine<01:48:50.400> debug" + }, + { + "start": 6530.709, + "duration": 0.0, + "text": "problem. Like you could imagine debug" + }, + { + "start": 6530.719, + "duration": 0.0, + "text": "problem. Like you could imagine debug info<01:48:51.040> being<01:48:51.199> slightly<01:48:51.520> in<01:48:51.679> fact<01:48:51.760> I<01:48:51.920> think" + }, + { + "start": 6531.99, + "duration": 0.0, + "text": "info being slightly in fact I think" + }, + { + "start": 6532.0, + "duration": 0.0, + "text": "info being slightly in fact I think dwarf<01:48:52.400> is<01:48:52.880> like<01:48:53.119> dwarf<01:48:53.440> tool<01:48:53.679> chains<01:48:53.920> tend<01:48:54.159> to" + }, + { + "start": 6534.229, + "duration": 0.0, + "text": "dwarf is like dwarf tool chains tend to" + }, + { + "start": 6534.239, + "duration": 0.0, + "text": "dwarf is like dwarf tool chains tend to be<01:48:54.320> more<01:48:54.560> useful<01:48:54.880> I<01:48:55.119> think.<01:48:55.280> I<01:48:55.440> mean<01:48:55.600> I<01:48:56.000> you" + }, + { + "start": 6536.229, + "duration": 0.0, + "text": "be more useful I think. I mean I you" + }, + { + "start": 6536.239, + "duration": 0.0, + "text": "be more useful I think. I mean I you tell<01:48:56.400> me<01:48:56.639> but<01:48:57.199> I'm<01:48:57.360> pretty<01:48:57.679> sure<01:48:57.920> dwarf" + }, + { + "start": 6538.87, + "duration": 0.0, + "text": "tell me but I'm pretty sure dwarf" + }, + { + "start": 6538.88, + "duration": 0.0, + "text": "tell me but I'm pretty sure dwarf >> dwarf<01:48:59.280> is<01:48:59.440> complicated<01:48:59.760> because<01:48:59.920> it's<01:49:00.080> like" + }, + { + "start": 6540.229, + "duration": 0.0, + "text": ">> dwarf is complicated because it's like" + }, + { + "start": 6540.239, + "duration": 0.0, + "text": ">> dwarf is complicated because it's like of<01:49:00.400> course<01:49:00.560> it<01:49:00.719> can<01:49:00.960> express<01:49:01.280> anything<01:49:01.520> but" + }, + { + "start": 6541.75, + "duration": 0.0, + "text": "of course it can express anything but" + }, + { + "start": 6541.76, + "duration": 0.0, + "text": "of course it can express anything but what<01:49:01.920> compilers<01:49:02.320> generates<01:49:02.719> another" + }, + { + "start": 6542.95, + "duration": 0.0, + "text": "what compilers generates another" + }, + { + "start": 6542.96, + "duration": 0.0, + "text": "what compilers generates another question.<01:49:03.280> Right.<01:49:03.600> Exactly.<01:49:04.000> So<01:49:04.719> um<01:49:04.960> so<01:49:05.440> but" + }, + { + "start": 6545.669, + "duration": 0.0, + "text": "question. Right. Exactly. So um so but" + }, + { + "start": 6545.679, + "duration": 0.0, + "text": "question. Right. Exactly. So um so but yeah<01:49:05.840> it's<01:49:06.000> it's<01:49:06.560> definitely<01:49:06.960> partly<01:49:07.360> that." + }, + { + "start": 6547.669, + "duration": 0.0, + "text": "yeah it's it's definitely partly that." + }, + { + "start": 6547.679, + "duration": 0.0, + "text": "yeah it's it's definitely partly that. Um,<01:49:08.080> I<01:49:08.239> don't<01:49:08.400> tend<01:49:08.560> to<01:49:08.719> do<01:49:09.040> like<01:49:09.199> I<01:49:09.360> don't<01:49:09.520> use" + }, + { + "start": 6549.669, + "duration": 0.0, + "text": "Um, I don't tend to do like I don't use" + }, + { + "start": 6549.679, + "duration": 0.0, + "text": "Um, I don't tend to do like I don't use any<01:49:09.920> like<01:49:10.159> generics<01:49:10.639> or<01:49:10.880> anything<01:49:11.119> like<01:49:11.360> I<01:49:11.520> do" + }, + { + "start": 6551.59, + "duration": 0.0, + "text": "any like generics or anything like I do" + }, + { + "start": 6551.6, + "duration": 0.0, + "text": "any like generics or anything like I do use<01:49:11.840> like<01:49:12.080> the<01:49:12.560> the<01:49:12.960> like<01:49:13.199> list<01:49:13.440> macros<01:49:13.840> that" + }, + { + "start": 6553.99, + "duration": 0.0, + "text": "use like the the like list macros that" + }, + { + "start": 6554.0, + "duration": 0.0, + "text": "use like the the like list macros that Vosov<01:49:14.639> showed<01:49:14.880> like<01:49:15.040> I<01:49:15.199> have<01:49:15.440> equivalents" + }, + { + "start": 6555.99, + "duration": 0.0, + "text": "Vosov showed like I have equivalents" + }, + { + "start": 6556.0, + "duration": 0.0, + "text": "Vosov showed like I have equivalents basically<01:49:16.320> in<01:49:16.560> this<01:49:16.719> codebase<01:49:17.199> and" + }, + { + "start": 6558.07, + "duration": 0.0, + "text": "basically in this codebase and" + }, + { + "start": 6558.08, + "duration": 0.0, + "text": "basically in this codebase and >> stealing<01:49:18.400> them<01:49:18.560> from<01:49:18.800> you<01:49:19.040> I<01:49:19.199> think<01:49:19.440> if" + }, + { + "start": 6561.83, + "duration": 0.0, + "text": ">> stealing them from you I think if" + }, + { + "start": 6561.84, + "duration": 0.0, + "text": ">> stealing them from you I think if >> can<01:49:22.000> we<01:49:22.159> confirm" + }, + { + "start": 6563.43, + "duration": 0.0, + "text": ">> can we confirm" + }, + { + "start": 6563.44, + "duration": 0.0, + "text": ">> can we confirm >> yeah<01:49:24.400> you<01:49:24.800> your<01:49:24.880> your<01:49:25.119> code<01:49:25.280> seems<01:49:25.520> to<01:49:25.600> be<01:49:25.760> kind" + }, + { + "start": 6565.83, + "duration": 0.0, + "text": ">> yeah you your your code seems to be kind" + }, + { + "start": 6565.84, + "duration": 0.0, + "text": ">> yeah you your your code seems to be kind of<01:49:25.920> the<01:49:26.159> new<01:49:26.320> standard<01:49:26.639> library<01:49:26.960> for<01:49:27.280> C" + }, + { + "start": 6567.51, + "duration": 0.0, + "text": "of the new standard library for C" + }, + { + "start": 6567.52, + "duration": 0.0, + "text": "of the new standard library for C because<01:49:27.760> I<01:49:28.000> had<01:49:28.080> it<01:49:28.239> from<01:49:28.400> a<01:49:28.560> couple<01:49:28.719> people" + }, + { + "start": 6568.79, + "duration": 0.0, + "text": "because I had it from a couple people" + }, + { + "start": 6568.8, + "duration": 0.0, + "text": "because I had it from a couple people that<01:49:29.119> they<01:49:29.280> just<01:49:29.440> steal<01:49:29.679> stuff<01:49:29.920> from" + }, + { + "start": 6570.229, + "duration": 0.0, + "text": "that they just steal stuff from" + }, + { + "start": 6570.239, + "duration": 0.0, + "text": "that they just steal stuff from >> I<01:49:30.400> mean<01:49:30.639> that's<01:49:30.880> fine<01:49:31.199> man<01:49:31.440> like<01:49:31.600> C's<01:49:31.920> standard" + }, + { + "start": 6572.229, + "duration": 0.0, + "text": ">> I mean that's fine man like C's standard" + }, + { + "start": 6572.239, + "duration": 0.0, + "text": ">> I mean that's fine man like C's standard library<01:49:32.480> is<01:49:32.719> pretty<01:49:32.880> bad<01:49:33.119> so<01:49:33.360> it's<01:49:33.440> it's<01:49:33.840> good" + }, + { + "start": 6573.99, + "duration": 0.0, + "text": "library is pretty bad so it's it's good" + }, + { + "start": 6574.0, + "duration": 0.0, + "text": "library is pretty bad so it's it's good to<01:49:34.159> have<01:49:34.400> like<01:49:34.639> people<01:49:35.360> just<01:49:35.679> demonstrate" + }, + { + "start": 6576.229, + "duration": 0.0, + "text": "to have like people just demonstrate" + }, + { + "start": 6576.239, + "duration": 0.0, + "text": "to have like people just demonstrate it's<01:49:36.480> like<01:49:36.719> you<01:49:37.040> didn't<01:49:37.280> you<01:49:37.520> didn't<01:49:37.679> have<01:49:37.760> to" + }, + { + "start": 6577.91, + "duration": 0.0, + "text": "it's like you didn't you didn't have to" + }, + { + "start": 6577.92, + "duration": 0.0, + "text": "it's like you didn't you didn't have to stop<01:49:38.080> with<01:49:38.239> a<01:49:38.400> standard<01:49:38.639> library<01:49:38.960> like<01:49:39.119> you" + }, + { + "start": 6579.27, + "duration": 0.0, + "text": "stop with a standard library like you" + }, + { + "start": 6579.28, + "duration": 0.0, + "text": "stop with a standard library like you can<01:49:39.440> actually<01:49:39.600> build<01:49:39.760> a<01:49:39.920> good<01:49:40.080> code<01:49:40.320> base" + }, + { + "start": 6580.709, + "duration": 0.0, + "text": "can actually build a good code base" + }, + { + "start": 6580.719, + "duration": 0.0, + "text": "can actually build a good code base obviously<01:49:41.199> there's<01:49:41.360> some<01:49:41.520> runway" + }, + { + "start": 6582.31, + "duration": 0.0, + "text": "obviously there's some runway" + }, + { + "start": 6582.32, + "duration": 0.0, + "text": "obviously there's some runway >> like<01:49:42.480> Shan<01:49:42.719> Barrett<01:49:42.960> has<01:49:43.119> been<01:49:43.199> a<01:49:43.360> prime" + }, + { + "start": 6583.59, + "duration": 0.0, + "text": ">> like Shan Barrett has been a prime" + }, + { + "start": 6583.6, + "duration": 0.0, + "text": ">> like Shan Barrett has been a prime example<01:49:43.840> of<01:49:44.000> that<01:49:44.239> like<01:49:44.560> here" + }, + { + "start": 6584.87, + "duration": 0.0, + "text": "example of that like here" + }, + { + "start": 6584.88, + "duration": 0.0, + "text": "example of that like here >> yeah<01:49:45.520> definitely<01:49:46.159> yeah<01:49:46.639> so" + }, + { + "start": 6588.31, + "duration": 0.0, + "text": ">> yeah definitely yeah so" + }, + { + "start": 6588.32, + "duration": 0.0, + "text": ">> yeah definitely yeah so >> uh<01:49:48.400> I<01:49:48.639> guess<01:49:48.800> my<01:49:49.040> final<01:49:49.280> question<01:49:49.520> before<01:49:49.760> I" + }, + { + "start": 6589.91, + "duration": 0.0, + "text": ">> uh I guess my final question before I" + }, + { + "start": 6589.92, + "duration": 0.0, + "text": ">> uh I guess my final question before I open<01:49:50.159> up<01:49:50.320> is<01:49:50.639> like<01:49:51.600> uh<01:49:52.080> Gingerbill<01:49:52.719> was<01:49:53.280> kind" + }, + { + "start": 6593.51, + "duration": 0.0, + "text": "open up is like uh Gingerbill was kind" + }, + { + "start": 6593.52, + "duration": 0.0, + "text": "open up is like uh Gingerbill was kind enough<01:49:53.840> to<01:49:54.159> announce<01:49:54.639> the<01:49:54.880> macros<01:49:55.360> and<01:49:55.520> Linux" + }, + { + "start": 6595.75, + "duration": 0.0, + "text": "enough to announce the macros and Linux" + }, + { + "start": 6595.76, + "duration": 0.0, + "text": "enough to announce the macros and Linux version<01:49:55.920> of<01:49:56.080> the<01:49:56.159> red<01:49:56.400> debugger<01:49:56.880> yesterday" + }, + { + "start": 6597.91, + "duration": 0.0, + "text": "version of the red debugger yesterday" + }, + { + "start": 6597.92, + "duration": 0.0, + "text": "version of the red debugger yesterday are<01:49:58.159> there<01:49:58.320> any<01:49:58.480> announcement<01:49:58.960> you<01:49:59.119> want<01:49:59.199> to" + }, + { + "start": 6599.27, + "duration": 0.0, + "text": "are there any announcement you want to" + }, + { + "start": 6599.28, + "duration": 0.0, + "text": "are there any announcement you want to add<01:49:59.440> to<01:49:59.600> that" + }, + { + "start": 6601.03, + "duration": 0.0, + "text": "add to that" + }, + { + "start": 6601.04, + "duration": 0.0, + "text": "add to that >> um<01:50:01.760> yeah<01:50:02.000> so<01:50:02.159> I<01:50:02.400> should<01:50:02.560> clarify<01:50:03.600> like<01:50:04.080> we're" + }, + { + "start": 6604.31, + "duration": 0.0, + "text": ">> um yeah so I should clarify like we're" + }, + { + "start": 6604.32, + "duration": 0.0, + "text": ">> um yeah so I should clarify like we're not<01:50:04.480> like<01:50:04.639> we<01:50:04.880> haven't<01:50:05.199> announced<01:50:05.920> a<01:50:06.480> a<01:50:06.639> Mac" + }, + { + "start": 6606.95, + "duration": 0.0, + "text": "not like we haven't announced a a Mac" + }, + { + "start": 6606.96, + "duration": 0.0, + "text": "not like we haven't announced a a Mac port<01:50:07.199> or<01:50:07.440> anything.<01:50:07.679> Obviously<01:50:08.080> like" + }, + { + "start": 6609.109, + "duration": 0.0, + "text": "port or anything. Obviously like" + }, + { + "start": 6609.119, + "duration": 0.0, + "text": "port or anything. Obviously like >> uh<01:50:09.280> it's<01:50:09.760> it's<01:50:10.000> done<01:50:10.239> actually." + }, + { + "start": 6610.709, + "duration": 0.0, + "text": ">> uh it's it's done actually." + }, + { + "start": 6610.719, + "duration": 0.0, + "text": ">> uh it's it's done actually. >> Question<01:50:10.800> is<01:50:10.960> when<01:50:11.119> do<01:50:11.199> you<01:50:11.280> ship<01:50:11.520> it?<01:50:11.679> Like<01:50:12.239> it" + }, + { + "start": 6612.55, + "duration": 0.0, + "text": ">> Question is when do you ship it? Like it" + }, + { + "start": 6612.56, + "duration": 0.0, + "text": ">> Question is when do you ship it? Like it has<01:50:12.719> been<01:50:12.880> announced." + }, + { + "start": 6614.55, + "duration": 0.0, + "text": "has been announced." + }, + { + "start": 6614.56, + "duration": 0.0, + "text": "has been announced. >> Yeah.<01:50:14.800> I<01:50:14.960> mean<01:50:15.040> obviously<01:50:15.360> we're<01:50:15.600> focused<01:50:15.840> on" + }, + { + "start": 6615.91, + "duration": 0.0, + "text": ">> Yeah. I mean obviously we're focused on" + }, + { + "start": 6615.92, + "duration": 0.0, + "text": ">> Yeah. I mean obviously we're focused on the<01:50:16.080> Linux<01:50:16.400> port<01:50:16.960> um<01:50:17.360> next.<01:50:17.920> So<01:50:18.320> obviously<01:50:18.719> a" + }, + { + "start": 6618.95, + "duration": 0.0, + "text": "the Linux port um next. So obviously a" + }, + { + "start": 6618.96, + "duration": 0.0, + "text": "the Linux port um next. So obviously a big<01:50:19.440> early<01:50:19.760> stage<01:50:20.080> of<01:50:20.239> like<01:50:20.480> so<01:50:20.639> the<01:50:20.800> debugger" + }, + { + "start": 6621.03, + "duration": 0.0, + "text": "big early stage of like so the debugger" + }, + { + "start": 6621.04, + "duration": 0.0, + "text": "big early stage of like so the debugger is<01:50:21.119> an<01:50:21.280> open<01:50:21.440> alpha.<01:50:21.840> I<01:50:22.000> never<01:50:22.159> mentioned<01:50:22.320> that" + }, + { + "start": 6622.55, + "duration": 0.0, + "text": "is an open alpha. I never mentioned that" + }, + { + "start": 6622.56, + "duration": 0.0, + "text": "is an open alpha. I never mentioned that but<01:50:22.719> that's<01:50:22.880> what<01:50:23.040> it's<01:50:23.280> in.<01:50:23.840> Um<01:50:24.239> so<01:50:24.480> people" + }, + { + "start": 6624.709, + "duration": 0.0, + "text": "but that's what it's in. Um so people" + }, + { + "start": 6624.719, + "duration": 0.0, + "text": "but that's what it's in. Um so people can<01:50:24.880> use<01:50:25.040> it<01:50:25.199> and<01:50:25.840> a<01:50:26.159> large<01:50:26.400> portion<01:50:26.719> of<01:50:26.880> work" + }, + { + "start": 6627.109, + "duration": 0.0, + "text": "can use it and a large portion of work" + }, + { + "start": 6627.119, + "duration": 0.0, + "text": "can use it and a large portion of work is<01:50:27.280> just<01:50:27.440> like<01:50:28.239> making<01:50:28.480> sure<01:50:28.639> it<01:50:28.800> works<01:50:28.960> on" + }, + { + "start": 6629.109, + "duration": 0.0, + "text": "is just like making sure it works on" + }, + { + "start": 6629.119, + "duration": 0.0, + "text": "is just like making sure it works on large<01:50:29.280> code<01:50:29.520> bases<01:50:30.000> getting<01:50:30.159> it<01:50:30.400> more<01:50:30.560> stable" + }, + { + "start": 6631.03, + "duration": 0.0, + "text": "large code bases getting it more stable" + }, + { + "start": 6631.04, + "duration": 0.0, + "text": "large code bases getting it more stable like<01:50:31.199> adding<01:50:31.600> adding<01:50:31.920> the<01:50:32.080> features<01:50:32.320> that" + }, + { + "start": 6632.47, + "duration": 0.0, + "text": "like adding adding the features that" + }, + { + "start": 6632.48, + "duration": 0.0, + "text": "like adding adding the features that people<01:50:32.719> need<01:50:32.960> like<01:50:33.119> stuff<01:50:33.280> like<01:50:33.440> that.<01:50:34.000> Then" + }, + { + "start": 6634.149, + "duration": 0.0, + "text": "people need like stuff like that. Then" + }, + { + "start": 6634.159, + "duration": 0.0, + "text": "people need like stuff like that. Then the<01:50:34.400> next<01:50:34.560> phase<01:50:34.800> is<01:50:34.960> really<01:50:35.119> the<01:50:35.360> Linux<01:50:35.600> port." + }, + { + "start": 6635.83, + "duration": 0.0, + "text": "the next phase is really the Linux port." + }, + { + "start": 6635.84, + "duration": 0.0, + "text": "the next phase is really the Linux port. So,<01:50:36.000> we're<01:50:36.159> actually<01:50:36.320> going<01:50:36.480> to<01:50:36.560> do<01:50:36.719> the<01:50:36.880> first" + }, + { + "start": 6637.109, + "duration": 0.0, + "text": "So, we're actually going to do the first" + }, + { + "start": 6637.119, + "duration": 0.0, + "text": "So, we're actually going to do the first porting<01:50:37.520> step<01:50:37.760> will<01:50:37.920> be<01:50:38.080> x64<01:50:38.719> Linux<01:50:39.600> and<01:50:39.760> then" + }, + { + "start": 6639.91, + "duration": 0.0, + "text": "porting step will be x64 Linux and then" + }, + { + "start": 6639.92, + "duration": 0.0, + "text": "porting step will be x64 Linux and then we'll<01:50:40.560> um<01:50:40.800> we'll<01:50:41.119> keep<01:50:41.280> going<01:50:41.440> in<01:50:41.600> other" + }, + { + "start": 6641.83, + "duration": 0.0, + "text": "we'll um we'll keep going in other" + }, + { + "start": 6641.84, + "duration": 0.0, + "text": "we'll um we'll keep going in other directions<01:50:42.080> like<01:50:42.320> we'll<01:50:42.480> be<01:50:42.560> able<01:50:42.639> to<01:50:42.800> support" + }, + { + "start": 6643.03, + "duration": 0.0, + "text": "directions like we'll be able to support" + }, + { + "start": 6643.04, + "duration": 0.0, + "text": "directions like we'll be able to support ARM<01:50:43.440> and<01:50:43.679> like<01:50:43.840> things<01:50:44.080> like<01:50:44.239> that.<01:50:44.880> So,<01:50:45.520> um" + }, + { + "start": 6645.83, + "duration": 0.0, + "text": "ARM and like things like that. So, um" + }, + { + "start": 6645.84, + "duration": 0.0, + "text": "ARM and like things like that. So, um that's<01:50:46.159> sort<01:50:46.320> of<01:50:46.400> the<01:50:46.639> direction.<01:50:47.520> Uh<01:50:48.239> but" + }, + { + "start": 6648.55, + "duration": 0.0, + "text": "that's sort of the direction. Uh but" + }, + { + "start": 6648.56, + "duration": 0.0, + "text": "that's sort of the direction. Uh but like<01:50:48.880> we're<01:50:49.119> not<01:50:49.280> going<01:50:49.360> to<01:50:49.520> be<01:50:49.600> working<01:50:49.760> on" + }, + { + "start": 6649.99, + "duration": 0.0, + "text": "like we're not going to be working on" + }, + { + "start": 6650.0, + "duration": 0.0, + "text": "like we're not going to be working on Mac<01:50:50.480> and<01:50:50.719> like<01:50:51.360> before<01:50:51.760> any<01:50:51.920> of<01:50:52.080> that.<01:50:52.400> So,<01:50:52.719> so" + }, + { + "start": 6653.75, + "duration": 0.0, + "text": "Mac and like before any of that. So, so" + }, + { + "start": 6653.76, + "duration": 0.0, + "text": "Mac and like before any of that. So, so while<01:50:54.480> maybe<01:50:54.719> he<01:50:54.960> was<01:50:55.040> wishful<01:50:55.679> maybe<01:50:55.840> he<01:50:56.000> was" + }, + { + "start": 6656.07, + "duration": 0.0, + "text": "while maybe he was wishful maybe he was" + }, + { + "start": 6656.08, + "duration": 0.0, + "text": "while maybe he was wishful maybe he was just<01:50:56.239> expressing<01:50:56.560> wishful<01:50:56.960> thinking.<01:50:57.520> Um<01:50:57.920> and" + }, + { + "start": 6658.229, + "duration": 0.0, + "text": "just expressing wishful thinking. Um and" + }, + { + "start": 6658.239, + "duration": 0.0, + "text": "just expressing wishful thinking. Um and you<01:50:58.400> know<01:50:58.639> once<01:50:58.880> you've<01:50:59.040> done<01:50:59.199> the<01:50:59.360> Linux<01:50:59.679> port" + }, + { + "start": 6659.99, + "duration": 0.0, + "text": "you know once you've done the Linux port" + }, + { + "start": 6660.0, + "duration": 0.0, + "text": "you know once you've done the Linux port I<01:51:00.239> my<01:51:00.560> intuition<01:51:00.960> is<01:51:01.199> like<01:51:01.360> you're<01:51:01.600> not<01:51:01.679> that" + }, + { + "start": 6661.91, + "duration": 0.0, + "text": "I my intuition is like you're not that" + }, + { + "start": 6661.92, + "duration": 0.0, + "text": "I my intuition is like you're not that far<01:51:02.080> from<01:51:02.239> a<01:51:02.400> Mac<01:51:02.639> port.<01:51:02.800> So<01:51:02.960> I<01:51:03.119> don't<01:51:03.199> think" + }, + { + "start": 6663.27, + "duration": 0.0, + "text": "far from a Mac port. So I don't think" + }, + { + "start": 6663.28, + "duration": 0.0, + "text": "far from a Mac port. So I don't think it'll<01:51:03.600> be<01:51:03.760> like<01:51:04.000> impossible<01:51:04.560> but<01:51:04.800> it's<01:51:05.199> but" + }, + { + "start": 6665.43, + "duration": 0.0, + "text": "it'll be like impossible but it's but" + }, + { + "start": 6665.44, + "duration": 0.0, + "text": "it'll be like impossible but it's but yeah<01:51:05.600> it's<01:51:05.760> just<01:51:05.920> like<01:51:06.159> we<01:51:06.400> haven't<01:51:06.639> like<01:51:06.880> said" + }, + { + "start": 6667.03, + "duration": 0.0, + "text": "yeah it's just like we haven't like said" + }, + { + "start": 6667.04, + "duration": 0.0, + "text": "yeah it's just like we haven't like said that" + }, + { + "start": 6668.39, + "duration": 0.0, + "text": "that" + }, + { + "start": 6668.4, + "duration": 0.0, + "text": "that >> switch<01:51:08.800> and<01:51:08.960> iOS<01:51:09.280> when" + }, + { + "start": 6669.99, + "duration": 0.0, + "text": ">> switch and iOS when" + }, + { + "start": 6670.0, + "duration": 0.0, + "text": ">> switch and iOS when >> Yeah.<01:51:10.239> Yeah.<01:51:10.639> Exactly.<01:51:11.360> So" + }, + { + "start": 6672.87, + "duration": 0.0, + "text": ">> Yeah. Yeah. Exactly. So" + }, + { + "start": 6672.88, + "duration": 0.0, + "text": ">> Yeah. Yeah. Exactly. So >> all<01:51:12.960> right.<01:51:13.520> Um<01:51:14.480> any<01:51:14.800> qu<01:51:15.119> Yeah,<01:51:15.440> please." + }, + { + "start": 6675.91, + "duration": 0.0, + "text": ">> all right. Um any qu Yeah, please." + }, + { + "start": 6675.92, + "duration": 0.0, + "text": ">> all right. Um any qu Yeah, please. >> So<01:51:16.159> you<01:51:16.400> mentioned<01:51:16.800> uh<01:51:16.880> the<01:51:17.040> idea<01:51:17.280> of<01:51:17.360> a<01:51:17.520> black" + }, + { + "start": 6677.669, + "duration": 0.0, + "text": ">> So you mentioned uh the idea of a black" + }, + { + "start": 6677.679, + "duration": 0.0, + "text": ">> So you mentioned uh the idea of a black box<01:51:17.920> at<01:51:18.159> the<01:51:18.320> beginning<01:51:18.400> of<01:51:18.480> the<01:51:18.639> talk<01:51:18.880> and<01:51:19.280> uh" + }, + { + "start": 6679.35, + "duration": 0.0, + "text": "box at the beginning of the talk and uh" + }, + { + "start": 6679.36, + "duration": 0.0, + "text": "box at the beginning of the talk and uh I<01:51:19.600> feel<01:51:19.760> like<01:51:20.239> uh<01:51:20.400> this<01:51:20.639> talk<01:51:20.800> goes<01:51:21.040> a<01:51:21.119> long<01:51:21.280> way" + }, + { + "start": 6681.35, + "duration": 0.0, + "text": "I feel like uh this talk goes a long way" + }, + { + "start": 6681.36, + "duration": 0.0, + "text": "I feel like uh this talk goes a long way to<01:51:21.600> kind<01:51:21.760> of<01:51:21.840> demystifying<01:51:22.480> some<01:51:22.560> of<01:51:22.639> the" + }, + { + "start": 6682.87, + "duration": 0.0, + "text": "to kind of demystifying some of the" + }, + { + "start": 6682.88, + "duration": 0.0, + "text": "to kind of demystifying some of the inner<01:51:23.119> workings<01:51:23.360> of<01:51:23.440> a<01:51:23.600> debugger<01:51:24.000> which<01:51:24.320> is" + }, + { + "start": 6684.47, + "duration": 0.0, + "text": "inner workings of a debugger which is" + }, + { + "start": 6684.48, + "duration": 0.0, + "text": "inner workings of a debugger which is very<01:51:24.639> helpful<01:51:24.880> but<01:51:25.040> I<01:51:25.199> kind<01:51:25.280> of<01:51:25.360> wonder<01:51:25.520> if" + }, + { + "start": 6685.669, + "duration": 0.0, + "text": "very helpful but I kind of wonder if" + }, + { + "start": 6685.679, + "duration": 0.0, + "text": "very helpful but I kind of wonder if there's<01:51:25.920> ways<01:51:26.159> to<01:51:26.800> expose<01:51:27.199> some<01:51:27.360> of<01:51:27.440> that<01:51:27.600> to<01:51:27.760> a" + }, + { + "start": 6687.99, + "duration": 0.0, + "text": "there's ways to expose some of that to a" + }, + { + "start": 6688.0, + "duration": 0.0, + "text": "there's ways to expose some of that to a user.<01:51:28.639> Uh,<01:51:28.880> one<01:51:29.040> of<01:51:29.119> the<01:51:29.280> experiences<01:51:29.600> that<01:51:29.840> I" + }, + { + "start": 6690.07, + "duration": 0.0, + "text": "user. Uh, one of the experiences that I" + }, + { + "start": 6690.08, + "duration": 0.0, + "text": "user. Uh, one of the experiences that I often<01:51:30.400> have<01:51:30.480> with<01:51:30.639> the<01:51:30.800> debugger<01:51:31.199> is<01:51:31.360> I<01:51:31.520> will" + }, + { + "start": 6691.669, + "duration": 0.0, + "text": "often have with the debugger is I will" + }, + { + "start": 6691.679, + "duration": 0.0, + "text": "often have with the debugger is I will point<01:51:31.840> it<01:51:32.000> at<01:51:32.159> executable.<01:51:32.719> I<01:51:32.880> will<01:51:33.040> start<01:51:33.119> it" + }, + { + "start": 6693.27, + "duration": 0.0, + "text": "point it at executable. I will start it" + }, + { + "start": 6693.28, + "duration": 0.0, + "text": "point it at executable. I will start it up<01:51:33.360> and<01:51:33.520> I<01:51:33.600> say<01:51:33.760> I<01:51:33.840> want<01:51:33.920> to<01:51:34.000> hit<01:51:34.080> this<01:51:34.239> break" + }, + { + "start": 6694.39, + "duration": 0.0, + "text": "up and I say I want to hit this break" + }, + { + "start": 6694.4, + "duration": 0.0, + "text": "up and I say I want to hit this break point.<01:51:34.639> It's<01:51:34.719> like<01:51:34.880> I<01:51:35.040> don't<01:51:35.119> know<01:51:35.199> what<01:51:35.360> that" + }, + { + "start": 6695.51, + "duration": 0.0, + "text": "point. It's like I don't know what that" + }, + { + "start": 6695.52, + "duration": 0.0, + "text": "point. It's like I don't know what that means.<01:51:35.760> It's<01:51:35.920> like<01:51:36.080> I<01:51:36.239> don't<01:51:36.320> know<01:51:36.480> what<01:51:36.639> file" + }, + { + "start": 6697.03, + "duration": 0.0, + "text": "means. It's like I don't know what file" + }, + { + "start": 6697.04, + "duration": 0.0, + "text": "means. It's like I don't know what file that<01:51:37.199> refers<01:51:37.360> to<01:51:37.520> or<01:51:37.840> I<01:51:37.920> don't<01:51:38.000> know<01:51:38.159> what<01:51:38.320> like" + }, + { + "start": 6698.47, + "duration": 0.0, + "text": "that refers to or I don't know what like" + }, + { + "start": 6698.48, + "duration": 0.0, + "text": "that refers to or I don't know what like actual<01:51:38.800> instruction<01:51:39.119> that<01:51:39.360> refers<01:51:39.599> to.<01:51:40.159> And" + }, + { + "start": 6700.229, + "duration": 0.0, + "text": "actual instruction that refers to. And" + }, + { + "start": 6700.239, + "duration": 0.0, + "text": "actual instruction that refers to. And so<01:51:40.480> there's<01:51:40.639> all<01:51:40.719> this<01:51:40.880> inner<01:51:41.199> working<01:51:41.440> behind" + }, + { + "start": 6701.669, + "duration": 0.0, + "text": "so there's all this inner working behind" + }, + { + "start": 6701.679, + "duration": 0.0, + "text": "so there's all this inner working behind it<01:51:41.760> to<01:51:41.920> get<01:51:42.080> that<01:51:42.239> debug<01:51:42.560> info<01:51:42.880> to<01:51:43.040> find<01:51:43.119> it" + }, + { + "start": 6703.27, + "duration": 0.0, + "text": "it to get that debug info to find it" + }, + { + "start": 6703.28, + "duration": 0.0, + "text": "it to get that debug info to find it automatically<01:51:43.760> to<01:51:43.920> parse<01:51:44.159> it.<01:51:44.400> It's" + }, + { + "start": 6704.629, + "duration": 0.0, + "text": "automatically to parse it. It's" + }, + { + "start": 6704.639, + "duration": 0.0, + "text": "automatically to parse it. It's potentially,<01:51:45.199> you<01:51:45.280> know,<01:51:45.520> trying<01:51:45.679> to<01:51:45.840> match" + }, + { + "start": 6706.07, + "duration": 0.0, + "text": "potentially, you know, trying to match" + }, + { + "start": 6706.08, + "duration": 0.0, + "text": "potentially, you know, trying to match file<01:51:46.400> paths.<01:51:46.639> I<01:51:46.880> might<01:51:46.960> have<01:51:47.119> like<01:51:47.280> forward" + }, + { + "start": 6707.51, + "duration": 0.0, + "text": "file paths. I might have like forward" + }, + { + "start": 6707.52, + "duration": 0.0, + "text": "file paths. I might have like forward slashes,<01:51:47.920> backslashes,<01:51:48.560> whatever.<01:51:48.960> There's" + }, + { + "start": 6709.109, + "duration": 0.0, + "text": "slashes, backslashes, whatever. There's" + }, + { + "start": 6709.119, + "duration": 0.0, + "text": "slashes, backslashes, whatever. There's like<01:51:49.280> all<01:51:49.440> of<01:51:49.520> this<01:51:49.679> inner<01:51:50.000> tooling<01:51:50.639> that<01:51:50.880> can" + }, + { + "start": 6711.03, + "duration": 0.0, + "text": "like all of this inner tooling that can" + }, + { + "start": 6711.04, + "duration": 0.0, + "text": "like all of this inner tooling that can go<01:51:51.280> wrong<01:51:51.920> and<01:51:52.239> it<01:51:52.480> kind<01:51:52.560> of<01:51:52.639> gets" + }, + { + "start": 6713.189, + "duration": 0.0, + "text": "go wrong and it kind of gets" + }, + { + "start": 6713.199, + "duration": 0.0, + "text": "go wrong and it kind of gets encapsulated<01:51:53.679> in<01:51:53.840> this<01:51:54.000> black<01:51:54.239> box<01:51:54.639> that" + }, + { + "start": 6714.87, + "duration": 0.0, + "text": "encapsulated in this black box that" + }, + { + "start": 6714.88, + "duration": 0.0, + "text": "encapsulated in this black box that feels<01:51:55.119> like<01:51:55.360> magic,<01:51:55.760> right?<01:51:56.000> it's<01:51:56.159> like,<01:51:56.320> oh," + }, + { + "start": 6716.55, + "duration": 0.0, + "text": "feels like magic, right? it's like, oh," + }, + { + "start": 6716.56, + "duration": 0.0, + "text": "feels like magic, right? it's like, oh, you<01:51:56.639> know,<01:51:56.800> I<01:51:56.960> don't<01:51:57.040> I<01:51:57.199> don't<01:51:57.280> want<01:51:57.360> to<01:51:57.440> I" + }, + { + "start": 6717.589, + "duration": 0.0, + "text": "you know, I don't I don't want to I" + }, + { + "start": 6717.599, + "duration": 0.0, + "text": "you know, I don't I don't want to I don't<01:51:57.679> know<01:51:57.840> anything<01:51:58.080> about<01:51:58.239> that<01:51:58.480> as<01:51:58.639> a" + }, + { + "start": 6718.79, + "duration": 0.0, + "text": "don't know anything about that as a" + }, + { + "start": 6718.8, + "duration": 0.0, + "text": "don't know anything about that as a user.<01:51:59.199> So,<01:51:59.599> is<01:51:59.760> there<01:51:59.840> anything<01:52:00.080> you<01:52:00.239> could<01:52:00.320> do" + }, + { + "start": 6720.39, + "duration": 0.0, + "text": "user. So, is there anything you could do" + }, + { + "start": 6720.4, + "duration": 0.0, + "text": "user. So, is there anything you could do to<01:52:00.560> make<01:52:00.719> that<01:52:00.880> better,<01:52:01.119> do<01:52:01.199> you<01:52:01.280> think?" + }, + { + "start": 6722.229, + "duration": 0.0, + "text": "to make that better, do you think?" + }, + { + "start": 6722.239, + "duration": 0.0, + "text": "to make that better, do you think? >> Um,<01:52:02.719> yeah.<01:52:02.960> I<01:52:03.199> think<01:52:03.360> I<01:52:03.599> think<01:52:03.679> a<01:52:03.920> lot<01:52:04.000> of<01:52:04.080> that" + }, + { + "start": 6724.31, + "duration": 0.0, + "text": ">> Um, yeah. I think I think a lot of that" + }, + { + "start": 6724.32, + "duration": 0.0, + "text": ">> Um, yeah. I think I think a lot of that is<01:52:04.480> just<01:52:04.639> like<01:52:04.719> a<01:52:04.880> UI<01:52:05.199> design<01:52:05.520> problem<01:52:05.760> and" + }, + { + "start": 6725.99, + "duration": 0.0, + "text": "is just like a UI design problem and" + }, + { + "start": 6726.0, + "duration": 0.0, + "text": "is just like a UI design problem and like<01:52:06.080> a<01:52:06.239> visualization<01:52:06.800> problem.<01:52:07.119> So<01:52:07.280> it's" + }, + { + "start": 6727.51, + "duration": 0.0, + "text": "like a visualization problem. So it's" + }, + { + "start": 6727.52, + "duration": 0.0, + "text": "like a visualization problem. So it's like<01:52:07.679> one<01:52:07.920> thing<01:52:08.080> that<01:52:08.239> we<01:52:08.400> do<01:52:08.480> in<01:52:08.639> the" + }, + { + "start": 6728.709, + "duration": 0.0, + "text": "like one thing that we do in the" + }, + { + "start": 6728.719, + "duration": 0.0, + "text": "like one thing that we do in the debugger<01:52:09.119> which<01:52:10.159> like<01:52:10.320> I<01:52:10.560> don't<01:52:10.719> think" + }, + { + "start": 6730.79, + "duration": 0.0, + "text": "debugger which like I don't think" + }, + { + "start": 6730.8, + "duration": 0.0, + "text": "debugger which like I don't think anybody<01:52:11.199> does<01:52:11.520> but<01:52:11.840> like<01:52:12.320> what<01:52:12.480> tends<01:52:12.719> to" + }, + { + "start": 6732.87, + "duration": 0.0, + "text": "anybody does but like what tends to" + }, + { + "start": 6732.88, + "duration": 0.0, + "text": "anybody does but like what tends to happen<01:52:13.040> if<01:52:13.199> you<01:52:13.360> put<01:52:14.239> like<01:52:14.480> in<01:52:14.639> Visual<01:52:14.960> Studio" + }, + { + "start": 6735.189, + "duration": 0.0, + "text": "happen if you put like in Visual Studio" + }, + { + "start": 6735.199, + "duration": 0.0, + "text": "happen if you put like in Visual Studio if<01:52:15.360> you<01:52:15.440> put<01:52:15.599> a<01:52:15.679> breakpoint<01:52:16.080> on<01:52:16.239> a<01:52:16.400> line<01:52:17.840> if" + }, + { + "start": 6738.31, + "duration": 0.0, + "text": "if you put a breakpoint on a line if" + }, + { + "start": 6738.32, + "duration": 0.0, + "text": "if you put a breakpoint on a line if there's<01:52:18.639> no<01:52:18.880> line<01:52:19.119> info<01:52:19.440> like<01:52:19.599> that<01:52:19.760> you're" + }, + { + "start": 6739.91, + "duration": 0.0, + "text": "there's no line info like that you're" + }, + { + "start": 6739.92, + "duration": 0.0, + "text": "there's no line info like that you're not<01:52:20.080> running<01:52:20.239> a<01:52:20.480> program<01:52:20.639> or<01:52:20.960> something<01:52:22.239> um<01:52:23.040> uh" + }, + { + "start": 6743.43, + "duration": 0.0, + "text": "not running a program or something um uh" + }, + { + "start": 6743.44, + "duration": 0.0, + "text": "not running a program or something um uh it'll<01:52:23.840> like<01:52:24.159> just<01:52:24.560> go<01:52:24.719> to<01:52:24.880> the<01:52:24.960> line<01:52:25.199> like" + }, + { + "start": 6745.43, + "duration": 0.0, + "text": "it'll like just go to the line like" + }, + { + "start": 6745.44, + "duration": 0.0, + "text": "it'll like just go to the line like there<01:52:25.520> will<01:52:25.679> be<01:52:25.760> a<01:52:25.840> breakpoint<01:52:26.480> shows<01:52:26.719> up<01:52:26.880> on" + }, + { + "start": 6746.95, + "duration": 0.0, + "text": "there will be a breakpoint shows up on" + }, + { + "start": 6746.96, + "duration": 0.0, + "text": "there will be a breakpoint shows up on the<01:52:27.119> line<01:52:27.440> done.<01:52:28.639> Then<01:52:28.880> you<01:52:29.119> like<01:52:29.840> run<01:52:30.080> the" + }, + { + "start": 6750.31, + "duration": 0.0, + "text": "the line done. Then you like run the" + }, + { + "start": 6750.32, + "duration": 0.0, + "text": "the line done. Then you like run the program<01:52:30.560> and<01:52:30.800> you'll<01:52:31.040> notice<01:52:31.280> your" + }, + { + "start": 6751.43, + "duration": 0.0, + "text": "program and you'll notice your" + }, + { + "start": 6751.44, + "duration": 0.0, + "text": "program and you'll notice your breakpoints<01:52:32.000> like<01:52:33.119> like<01:52:33.360> it<01:52:33.599> snaps<01:52:34.000> or" + }, + { + "start": 6754.149, + "duration": 0.0, + "text": "breakpoints like like it snaps or" + }, + { + "start": 6754.159, + "duration": 0.0, + "text": "breakpoints like like it snaps or whatever.<01:52:34.800> And<01:52:35.599> the<01:52:35.840> reason<01:52:36.000> why<01:52:36.159> is<01:52:36.400> because" + }, + { + "start": 6756.55, + "duration": 0.0, + "text": "whatever. And the reason why is because" + }, + { + "start": 6756.56, + "duration": 0.0, + "text": "whatever. And the reason why is because like<01:52:36.960> not<01:52:37.199> every<01:52:37.440> line<01:52:37.840> has<01:52:38.400> source<01:52:38.719> code<01:52:39.199> uh" + }, + { + "start": 6759.27, + "duration": 0.0, + "text": "like not every line has source code uh" + }, + { + "start": 6759.28, + "duration": 0.0, + "text": "like not every line has source code uh or<01:52:39.679> or<01:52:39.679> or<01:52:39.840> sorry<01:52:40.159> not<01:52:40.320> every<01:52:40.480> source<01:52:40.800> code" + }, + { + "start": 6760.95, + "duration": 0.0, + "text": "or or or sorry not every source code" + }, + { + "start": 6760.96, + "duration": 0.0, + "text": "or or or sorry not every source code line<01:52:41.199> has<01:52:41.440> actual<01:52:41.840> code<01:52:42.080> which<01:52:42.400> which<01:52:42.560> would" + }, + { + "start": 6762.709, + "duration": 0.0, + "text": "line has actual code which which would" + }, + { + "start": 6762.719, + "duration": 0.0, + "text": "line has actual code which which would be<01:52:42.880> machine<01:52:43.199> code<01:52:43.440> instructions.<01:52:44.480> Um<01:52:45.440> and<01:52:45.679> so" + }, + { + "start": 6766.149, + "duration": 0.0, + "text": "be machine code instructions. Um and so" + }, + { + "start": 6766.159, + "duration": 0.0, + "text": "be machine code instructions. Um and so like<01:52:46.639> stuff<01:52:46.960> like<01:52:47.119> that<01:52:47.440> can<01:52:47.599> be<01:52:47.920> like<01:52:48.320> it's" + }, + { + "start": 6768.629, + "duration": 0.0, + "text": "like stuff like that can be like it's" + }, + { + "start": 6768.639, + "duration": 0.0, + "text": "like stuff like that can be like it's really<01:52:49.280> kind<01:52:49.520> of<01:52:49.679> interesting<01:52:50.000> how<01:52:50.239> it's<01:52:50.480> like" + }, + { + "start": 6770.709, + "duration": 0.0, + "text": "really kind of interesting how it's like" + }, + { + "start": 6770.719, + "duration": 0.0, + "text": "really kind of interesting how it's like been<01:52:50.960> accepted<01:52:51.280> that<01:52:51.520> it's<01:52:51.760> like<01:52:52.480> that's<01:52:52.800> just" + }, + { + "start": 6773.03, + "duration": 0.0, + "text": "been accepted that it's like that's just" + }, + { + "start": 6773.04, + "duration": 0.0, + "text": "been accepted that it's like that's just a<01:52:53.360> way<01:52:53.440> that<01:52:53.679> it<01:52:53.840> works<01:52:54.000> and<01:52:54.239> everyone's<01:52:54.560> like" + }, + { + "start": 6774.709, + "duration": 0.0, + "text": "a way that it works and everyone's like" + }, + { + "start": 6774.719, + "duration": 0.0, + "text": "a way that it works and everyone's like oh<01:52:54.960> if<01:52:55.119> it<01:52:55.280> snaps<01:52:55.679> that<01:52:55.840> means<01:52:56.000> it<01:52:56.159> found<01:52:56.320> the" + }, + { + "start": 6776.47, + "duration": 0.0, + "text": "oh if it snaps that means it found the" + }, + { + "start": 6776.48, + "duration": 0.0, + "text": "oh if it snaps that means it found the line<01:52:56.639> info.<01:52:57.040> It's<01:52:57.199> like<01:52:57.360> what<01:52:57.599> like<01:52:57.760> what<01:52:57.920> does" + }, + { + "start": 6777.99, + "duration": 0.0, + "text": "line info. It's like what like what does" + }, + { + "start": 6778.0, + "duration": 0.0, + "text": "line info. It's like what like what does that<01:52:58.159> mean?<01:52:58.400> So<01:52:58.800> I<01:52:59.040> think<01:52:59.199> like<01:52:59.679> um<01:53:00.159> in<01:53:00.400> the<01:53:00.560> RAD" + }, + { + "start": 6780.87, + "duration": 0.0, + "text": "that mean? So I think like um in the RAD" + }, + { + "start": 6780.88, + "duration": 0.0, + "text": "that mean? So I think like um in the RAD debugger<01:53:01.360> I<01:53:01.520> mean<01:53:01.679> obviously<01:53:01.920> it's<01:53:02.159> early<01:53:02.400> so" + }, + { + "start": 6782.55, + "duration": 0.0, + "text": "debugger I mean obviously it's early so" + }, + { + "start": 6782.56, + "duration": 0.0, + "text": "debugger I mean obviously it's early so a<01:53:02.719> lot<01:53:02.800> of<01:53:02.880> it's<01:53:03.119> not<01:53:03.280> like<01:53:03.599> done<01:53:03.760> or" + }, + { + "start": 6784.07, + "duration": 0.0, + "text": "a lot of it's not like done or" + }, + { + "start": 6784.08, + "duration": 0.0, + "text": "a lot of it's not like done or documented<01:53:04.560> or<01:53:04.719> whatever<01:53:04.960> but<01:53:05.199> I've<01:53:05.520> tried<01:53:05.679> to" + }, + { + "start": 6785.83, + "duration": 0.0, + "text": "documented or whatever but I've tried to" + }, + { + "start": 6785.84, + "duration": 0.0, + "text": "documented or whatever but I've tried to visualize<01:53:07.040> a<01:53:07.360> lot<01:53:07.520> more<01:53:08.000> information<01:53:08.400> about" + }, + { + "start": 6788.55, + "duration": 0.0, + "text": "visualize a lot more information about" + }, + { + "start": 6788.56, + "duration": 0.0, + "text": "visualize a lot more information about what<01:53:08.719> the<01:53:08.880> debugger<01:53:09.360> knows<01:53:09.599> about<01:53:10.239> than<01:53:10.400> what" + }, + { + "start": 6790.629, + "duration": 0.0, + "text": "what the debugger knows about than what" + }, + { + "start": 6790.639, + "duration": 0.0, + "text": "what the debugger knows about than what other<01:53:10.800> debuggers<01:53:11.280> tend<01:53:11.360> to<01:53:11.520> do.<01:53:11.679> So<01:53:11.920> I've" + }, + { + "start": 6792.229, + "duration": 0.0, + "text": "other debuggers tend to do. So I've" + }, + { + "start": 6792.239, + "duration": 0.0, + "text": "other debuggers tend to do. So I've explicitly<01:53:12.800> visualize<01:53:13.199> you<01:53:13.440> probably<01:53:13.920> a<01:53:14.080> lot" + }, + { + "start": 6794.149, + "duration": 0.0, + "text": "explicitly visualize you probably a lot" + }, + { + "start": 6794.159, + "duration": 0.0, + "text": "explicitly visualize you probably a lot of<01:53:14.239> people<01:53:14.400> ask<01:53:14.560> about<01:53:14.719> the<01:53:14.880> colored<01:53:15.199> gutters" + }, + { + "start": 6795.589, + "duration": 0.0, + "text": "of people ask about the colored gutters" + }, + { + "start": 6795.599, + "duration": 0.0, + "text": "of people ask about the colored gutters on<01:53:15.760> the<01:53:15.920> side<01:53:16.000> of<01:53:16.080> the<01:53:16.239> source<01:53:16.480> view.<01:53:16.880> That's" + }, + { + "start": 6797.03, + "duration": 0.0, + "text": "on the side of the source view. That's" + }, + { + "start": 6797.04, + "duration": 0.0, + "text": "on the side of the source view. That's the<01:53:17.280> line<01:53:17.520> info.<01:53:18.639> Also<01:53:18.960> what<01:53:19.199> happens<01:53:19.440> is<01:53:19.679> like" + }, + { + "start": 6799.83, + "duration": 0.0, + "text": "the line info. Also what happens is like" + }, + { + "start": 6799.84, + "duration": 0.0, + "text": "the line info. Also what happens is like I<01:53:20.000> don't<01:53:20.159> reposition<01:53:20.639> breakpoints.<01:53:21.760> I<01:53:22.000> will" + }, + { + "start": 6802.149, + "duration": 0.0, + "text": "I don't reposition breakpoints. I will" + }, + { + "start": 6802.159, + "duration": 0.0, + "text": "I don't reposition breakpoints. I will if<01:53:22.320> you<01:53:22.480> put<01:53:22.560> a<01:53:22.639> breakpoint<01:53:22.960> on<01:53:23.119> a<01:53:23.280> line<01:53:23.440> I'll" + }, + { + "start": 6803.75, + "duration": 0.0, + "text": "if you put a breakpoint on a line I'll" + }, + { + "start": 6803.76, + "duration": 0.0, + "text": "if you put a breakpoint on a line I'll draw<01:53:24.000> and<01:53:24.159> it<01:53:24.400> and<01:53:24.639> there's<01:53:24.880> no<01:53:25.360> code<01:53:25.599> on<01:53:25.760> that" + }, + { + "start": 6805.91, + "duration": 0.0, + "text": "draw and it and there's no code on that" + }, + { + "start": 6805.92, + "duration": 0.0, + "text": "draw and it and there's no code on that line<01:53:26.159> but<01:53:26.320> there<01:53:26.480> is<01:53:26.639> some<01:53:26.800> code<01:53:27.040> on<01:53:27.280> some" + }, + { + "start": 6807.589, + "duration": 0.0, + "text": "line but there is some code on some" + }, + { + "start": 6807.599, + "duration": 0.0, + "text": "line but there is some code on some subsequent<01:53:28.159> line<01:53:29.199> general<01:53:29.599> rule<01:53:30.080> would<01:53:30.320> be" + }, + { + "start": 6810.47, + "duration": 0.0, + "text": "subsequent line general rule would be" + }, + { + "start": 6810.48, + "duration": 0.0, + "text": "subsequent line general rule would be like<01:53:30.800> okay<01:53:31.040> let's<01:53:31.280> make<01:53:31.440> the<01:53:31.679> code<01:53:31.920> hit<01:53:32.159> the" + }, + { + "start": 6812.39, + "duration": 0.0, + "text": "like okay let's make the code hit the" + }, + { + "start": 6812.4, + "duration": 0.0, + "text": "like okay let's make the code hit the next<01:53:32.960> line<01:53:33.199> with<01:53:33.520> code<01:53:34.159> um<01:53:34.320> I<01:53:34.480> just<01:53:34.639> visualize" + }, + { + "start": 6815.03, + "duration": 0.0, + "text": "next line with code um I just visualize" + }, + { + "start": 6815.04, + "duration": 0.0, + "text": "next line with code um I just visualize that<01:53:35.280> in<01:53:35.440> the<01:53:35.599> UI<01:53:35.920> directly<01:53:36.960> um<01:53:37.199> and<01:53:37.360> so<01:53:37.440> I" + }, + { + "start": 6817.589, + "duration": 0.0, + "text": "that in the UI directly um and so I" + }, + { + "start": 6817.599, + "duration": 0.0, + "text": "that in the UI directly um and so I think<01:53:37.679> it's<01:53:37.840> a<01:53:38.000> visualization<01:53:38.560> problem<01:53:38.960> and<01:53:39.119> a" + }, + { + "start": 6819.27, + "duration": 0.0, + "text": "think it's a visualization problem and a" + }, + { + "start": 6819.28, + "duration": 0.0, + "text": "think it's a visualization problem and a UI<01:53:39.679> problem<01:53:40.080> you're<01:53:40.320> right<01:53:40.480> that<01:53:40.639> a<01:53:40.800> lot<01:53:40.880> of" + }, + { + "start": 6820.95, + "duration": 0.0, + "text": "UI problem you're right that a lot of" + }, + { + "start": 6820.96, + "duration": 0.0, + "text": "UI problem you're right that a lot of stuff<01:53:41.119> can<01:53:41.280> go<01:53:41.440> wrong" + }, + { + "start": 6823.03, + "duration": 0.0, + "text": "stuff can go wrong" + }, + { + "start": 6823.04, + "duration": 0.0, + "text": "stuff can go wrong a<01:53:43.280> lot<01:53:43.360> of<01:53:43.520> that<01:53:44.239> is<01:53:44.639> not<01:53:44.880> necessary<01:53:45.599> I<01:53:45.760> think" + }, + { + "start": 6825.91, + "duration": 0.0, + "text": "a lot of that is not necessary I think" + }, + { + "start": 6825.92, + "duration": 0.0, + "text": "a lot of that is not necessary I think like<01:53:46.080> the<01:53:46.320> file<01:53:46.560> paths<01:53:47.119> good<01:53:47.360> example<01:53:47.840> it's" + }, + { + "start": 6828.07, + "duration": 0.0, + "text": "like the file paths good example it's" + }, + { + "start": 6828.08, + "duration": 0.0, + "text": "like the file paths good example it's like<01:53:48.560> there's<01:53:48.880> and<01:53:49.199> you<01:53:49.360> know<01:53:49.679> not<01:53:49.920> to<01:53:50.080> blame" + }, + { + "start": 6830.229, + "duration": 0.0, + "text": "like there's and you know not to blame" + }, + { + "start": 6830.239, + "duration": 0.0, + "text": "like there's and you know not to blame anyone<01:53:50.560> because<01:53:50.719> I've<01:53:50.880> had<01:53:50.960> bugs<01:53:51.199> where<01:53:51.280> I" + }, + { + "start": 6831.51, + "duration": 0.0, + "text": "anyone because I've had bugs where I" + }, + { + "start": 6831.52, + "duration": 0.0, + "text": "anyone because I've had bugs where I don't<01:53:51.679> treat<01:53:51.920> paths<01:53:52.239> correctly,<01:53:52.560> but<01:53:52.800> it's" + }, + { + "start": 6832.95, + "duration": 0.0, + "text": "don't treat paths correctly, but it's" + }, + { + "start": 6832.96, + "duration": 0.0, + "text": "don't treat paths correctly, but it's like,<01:53:53.360> you<01:53:53.520> know,<01:53:54.320> back<01:53:54.480> slash<01:53:55.040> slash<01:53:56.400> look," + }, + { + "start": 6836.709, + "duration": 0.0, + "text": "like, you know, back slash slash look," + }, + { + "start": 6836.719, + "duration": 0.0, + "text": "like, you know, back slash slash look, you<01:53:56.880> can<01:53:57.040> figure<01:53:57.119> it<01:53:57.280> out.<01:53:57.440> Like<01:53:57.599> the<01:53:57.760> debugger" + }, + { + "start": 6838.07, + "duration": 0.0, + "text": "you can figure it out. Like the debugger" + }, + { + "start": 6838.08, + "duration": 0.0, + "text": "you can figure it out. Like the debugger should<01:53:58.159> be<01:53:58.239> able<01:53:58.400> to<01:53:58.480> figure<01:53:58.560> it<01:53:58.639> out.<01:53:58.880> You" + }, + { + "start": 6838.95, + "duration": 0.0, + "text": "should be able to figure it out. You" + }, + { + "start": 6838.96, + "duration": 0.0, + "text": "should be able to figure it out. You know<01:53:59.040> what<01:53:59.199> I<01:53:59.280> mean?<01:53:59.440> Not<01:53:59.599> not<01:53:59.840> the<01:54:00.000> user.<01:54:00.239> The" + }, + { + "start": 6840.39, + "duration": 0.0, + "text": "know what I mean? Not not the user. The" + }, + { + "start": 6840.4, + "duration": 0.0, + "text": "know what I mean? Not not the user. The user<01:54:00.719> shouldn't<01:54:00.960> have<01:54:01.040> to<01:54:01.119> care,<01:54:01.280> but<01:54:01.440> the" + }, + { + "start": 6841.589, + "duration": 0.0, + "text": "user shouldn't have to care, but the" + }, + { + "start": 6841.599, + "duration": 0.0, + "text": "user shouldn't have to care, but the debugger<01:54:01.920> should<01:54:02.080> be<01:54:02.159> able<01:54:02.239> to<01:54:02.320> figure<01:54:02.480> it" + }, + { + "start": 6842.629, + "duration": 0.0, + "text": "debugger should be able to figure it" + }, + { + "start": 6842.639, + "duration": 0.0, + "text": "debugger should be able to figure it out.<01:54:03.199> So,<01:54:04.080> I<01:54:04.320> guess<01:54:04.400> that's<01:54:04.560> what<01:54:04.719> I<01:54:04.880> would" + }, + { + "start": 6844.95, + "duration": 0.0, + "text": "out. So, I guess that's what I would" + }, + { + "start": 6844.96, + "duration": 0.0, + "text": "out. So, I guess that's what I would say.<01:54:05.199> Like<01:54:05.360> there's<01:54:05.520> a<01:54:05.679> lot<01:54:05.760> of<01:54:05.840> room<01:54:06.000> for" + }, + { + "start": 6846.149, + "duration": 0.0, + "text": "say. Like there's a lot of room for" + }, + { + "start": 6846.159, + "duration": 0.0, + "text": "say. Like there's a lot of room for visual.<01:54:06.560> Another<01:54:06.880> another<01:54:07.280> spot<01:54:07.520> of" + }, + { + "start": 6847.669, + "duration": 0.0, + "text": "visual. Another another spot of" + }, + { + "start": 6847.679, + "duration": 0.0, + "text": "visual. Another another spot of visualization,<01:54:08.239> for<01:54:08.239> example,<01:54:08.639> would<01:54:08.880> be" + }, + { + "start": 6849.03, + "duration": 0.0, + "text": "visualization, for example, would be" + }, + { + "start": 6849.04, + "duration": 0.0, + "text": "visualization, for example, would be like" + }, + { + "start": 6850.55, + "duration": 0.0, + "text": "like" + }, + { + "start": 6850.56, + "duration": 0.0, + "text": "like other<01:54:10.800> debuggers<01:54:11.280> don't<01:54:11.360> tend<01:54:11.520> to<01:54:11.679> show<01:54:11.840> where" + }, + { + "start": 6852.07, + "duration": 0.0, + "text": "other debuggers don't tend to show where" + }, + { + "start": 6852.08, + "duration": 0.0, + "text": "other debuggers don't tend to show where other<01:54:12.320> threads<01:54:12.719> are.<01:54:13.119> Like<01:54:13.920> it's<01:54:14.159> just<01:54:14.320> where" + }, + { + "start": 6854.47, + "duration": 0.0, + "text": "other threads are. Like it's just where" + }, + { + "start": 6854.48, + "duration": 0.0, + "text": "other threads are. Like it's just where the<01:54:14.639> selected<01:54:14.960> thread<01:54:15.199> is<01:54:15.520> for<01:54:15.760> some<01:54:15.920> reason." + }, + { + "start": 6856.149, + "duration": 0.0, + "text": "the selected thread is for some reason." + }, + { + "start": 6856.159, + "duration": 0.0, + "text": "the selected thread is for some reason. like<01:54:17.040> um<01:54:17.280> I<01:54:17.599> just<01:54:17.760> try<01:54:17.920> to<01:54:18.080> show<01:54:19.040> all<01:54:19.280> the" + }, + { + "start": 6859.43, + "duration": 0.0, + "text": "like um I just try to show all the" + }, + { + "start": 6859.44, + "duration": 0.0, + "text": "like um I just try to show all the threads<01:54:19.679> that<01:54:19.920> are<01:54:20.000> in<01:54:20.560> active<01:54:20.960> view.<01:54:21.440> So<01:54:21.760> I" + }, + { + "start": 6861.99, + "duration": 0.0, + "text": "threads that are in active view. So I" + }, + { + "start": 6862.0, + "duration": 0.0, + "text": "threads that are in active view. So I don't<01:54:22.080> know<01:54:22.239> there's<01:54:22.480> lots<01:54:22.639> of<01:54:22.800> opportunities" + }, + { + "start": 6863.109, + "duration": 0.0, + "text": "don't know there's lots of opportunities" + }, + { + "start": 6863.119, + "duration": 0.0, + "text": "don't know there's lots of opportunities for<01:54:23.360> visualizations<01:54:23.920> and<01:54:24.159> to<01:54:24.320> just<01:54:24.480> improve" + }, + { + "start": 6864.79, + "duration": 0.0, + "text": "for visualizations and to just improve" + }, + { + "start": 6864.8, + "duration": 0.0, + "text": "for visualizations and to just improve it<01:54:25.119> basically.<01:54:26.400> Um<01:54:27.440> yeah<01:54:27.760> I<01:54:27.920> think<01:54:28.080> that's<01:54:28.239> the" + }, + { + "start": 6868.47, + "duration": 0.0, + "text": "it basically. Um yeah I think that's the" + }, + { + "start": 6868.48, + "duration": 0.0, + "text": "it basically. Um yeah I think that's the direction<01:54:28.719> that<01:54:28.960> you<01:54:29.119> have<01:54:29.199> to<01:54:29.280> go<01:54:29.440> for<01:54:29.679> that." + }, + { + "start": 6870.07, + "duration": 0.0, + "text": "direction that you have to go for that." + }, + { + "start": 6870.08, + "duration": 0.0, + "text": "direction that you have to go for that. So" + }, + { + "start": 6873.84, + "duration": 0.0, + "text": ">> so<01:54:34.080> many<01:54:34.239> questions<01:54:34.960> uh" + }, + { + "start": 6876.55, + "duration": 0.0, + "text": ">> so many questions uh" + }, + { + "start": 6876.56, + "duration": 0.0, + "text": ">> so many questions uh what<01:54:36.880> kind<01:54:37.199> of" + }, + { + "start": 6878.87, + "duration": 0.0, + "text": "what kind of" + }, + { + "start": 6878.88, + "duration": 0.0, + "text": "what kind of cash<01:54:39.280> eviction<01:54:39.760> strategy<01:54:40.239> are<01:54:40.480> you<01:54:40.639> using<01:54:40.880> for" + }, + { + "start": 6881.109, + "duration": 0.0, + "text": "cash eviction strategy are you using for" + }, + { + "start": 6881.119, + "duration": 0.0, + "text": "cash eviction strategy are you using for the<01:54:41.679> hash<01:54:42.080> to<01:54:42.639> data<01:54:43.199> cache?<01:54:43.520> Are<01:54:43.679> you<01:54:43.760> using" + }, + { + "start": 6883.99, + "duration": 0.0, + "text": "the hash to data cache? Are you using" + }, + { + "start": 6884.0, + "duration": 0.0, + "text": "the hash to data cache? Are you using like<01:54:44.159> the<01:54:44.320> least<01:54:44.560> recently<01:54:45.040> used<01:54:45.920> Um<01:54:46.639> so<01:54:47.760> uh" + }, + { + "start": 6890.8, + "duration": 0.0, + "text": "basically<01:54:51.280> there's<01:54:51.679> like<01:54:51.920> there's<01:54:52.159> a<01:54:52.320> few" + }, + { + "start": 6892.47, + "duration": 0.0, + "text": "basically there's like there's a few" + }, + { + "start": 6892.48, + "duration": 0.0, + "text": "basically there's like there's a few different<01:54:52.880> sorts<01:54:53.199> of<01:54:53.520> reference<01:54:53.920> counters<01:54:54.320> in" + }, + { + "start": 6894.47, + "duration": 0.0, + "text": "different sorts of reference counters in" + }, + { + "start": 6894.48, + "duration": 0.0, + "text": "different sorts of reference counters in the<01:54:54.639> system.<01:54:55.520> One<01:54:55.679> is<01:54:55.920> if<01:54:56.159> like<01:54:56.480> that<01:54:56.719> keying" + }, + { + "start": 6897.109, + "duration": 0.0, + "text": "the system. One is if like that keying" + }, + { + "start": 6897.119, + "duration": 0.0, + "text": "the system. One is if like that keying mechanism<01:54:57.520> that<01:54:57.760> I<01:54:57.920> spoke<01:54:58.000> about<01:54:58.159> where<01:54:58.320> it's" + }, + { + "start": 6898.47, + "duration": 0.0, + "text": "mechanism that I spoke about where it's" + }, + { + "start": 6898.48, + "duration": 0.0, + "text": "mechanism that I spoke about where it's like<01:54:58.560> you've<01:54:58.719> got<01:54:58.800> a<01:54:58.880> key<01:54:59.040> it<01:54:59.199> refers<01:54:59.360> to<01:54:59.520> a" + }, + { + "start": 6899.669, + "duration": 0.0, + "text": "like you've got a key it refers to a" + }, + { + "start": 6899.679, + "duration": 0.0, + "text": "like you've got a key it refers to a history<01:54:59.840> of<01:55:00.000> hashes.<01:55:01.040> Every<01:55:01.360> key<01:55:01.599> that's" + }, + { + "start": 6901.99, + "duration": 0.0, + "text": "history of hashes. Every key that's" + }, + { + "start": 6902.0, + "duration": 0.0, + "text": "history of hashes. Every key that's touching<01:55:02.480> a<01:55:02.800> hash<01:55:03.679> um<01:55:03.920> that's<01:55:04.239> like<01:55:04.960> that" + }, + { + "start": 6905.27, + "duration": 0.0, + "text": "touching a hash um that's like that" + }, + { + "start": 6905.28, + "duration": 0.0, + "text": "touching a hash um that's like that implies<01:55:05.679> a<01:55:05.840> reference<01:55:06.159> count.<01:55:06.880> And<01:55:07.119> so<01:55:07.280> if<01:55:07.520> the" + }, + { + "start": 6907.669, + "duration": 0.0, + "text": "implies a reference count. And so if the" + }, + { + "start": 6907.679, + "duration": 0.0, + "text": "implies a reference count. And so if the reference<01:55:08.000> count<01:55:08.080> is<01:55:08.239> ever<01:55:08.480> non<01:55:08.639> zero<01:55:09.119> that" + }, + { + "start": 6909.35, + "duration": 0.0, + "text": "reference count is ever non zero that" + }, + { + "start": 6909.36, + "duration": 0.0, + "text": "reference count is ever non zero that hash<01:55:09.599> is<01:55:09.760> going<01:55:09.840> to<01:55:10.000> stay<01:55:10.159> there.<01:55:10.800> Um<01:55:11.360> now<01:55:11.920> you" + }, + { + "start": 6912.149, + "duration": 0.0, + "text": "hash is going to stay there. Um now you" + }, + { + "start": 6912.159, + "duration": 0.0, + "text": "hash is going to stay there. Um now you you<01:55:13.040> it<01:55:13.280> only<01:55:13.440> does<01:55:13.599> that<01:55:13.760> to<01:55:13.920> some<01:55:14.159> extent.<01:55:14.480> So" + }, + { + "start": 6914.629, + "duration": 0.0, + "text": "you it only does that to some extent. So" + }, + { + "start": 6914.639, + "duration": 0.0, + "text": "you it only does that to some extent. So it'll<01:55:14.960> start<01:55:15.119> throwing<01:55:15.360> away<01:55:15.599> things<01:55:15.840> that" + }, + { + "start": 6915.99, + "duration": 0.0, + "text": "it'll start throwing away things that" + }, + { + "start": 6916.0, + "duration": 0.0, + "text": "it'll start throwing away things that are<01:55:16.080> old<01:55:16.320> in<01:55:16.560> history,<01:55:17.280> but<01:55:17.520> it'll<01:55:17.840> generally" + }, + { + "start": 6918.47, + "duration": 0.0, + "text": "are old in history, but it'll generally" + }, + { + "start": 6918.48, + "duration": 0.0, + "text": "are old in history, but it'll generally it'll<01:55:18.880> keep<01:55:19.119> like<01:55:19.360> the<01:55:19.599> two<01:55:19.840> most<01:55:20.000> recent" + }, + { + "start": 6920.31, + "duration": 0.0, + "text": "it'll keep like the two most recent" + }, + { + "start": 6920.32, + "duration": 0.0, + "text": "it'll keep like the two most recent states<01:55:20.560> at<01:55:20.719> the<01:55:20.800> very<01:55:21.040> least.<01:55:21.760> Um,<01:55:22.239> but<01:55:22.480> once" + }, + { + "start": 6922.709, + "duration": 0.0, + "text": "states at the very least. Um, but once" + }, + { + "start": 6922.719, + "duration": 0.0, + "text": "states at the very least. Um, but once you<01:55:22.880> know<01:55:23.040> that<01:55:23.280> and<01:55:23.440> then<01:55:23.520> the<01:55:23.679> other<01:55:23.840> the" + }, + { + "start": 6923.99, + "duration": 0.0, + "text": "you know that and then the other the" + }, + { + "start": 6924.0, + "duration": 0.0, + "text": "you know that and then the other the other<01:55:24.159> ref<01:55:24.400> count<01:55:24.639> that's<01:55:24.800> in<01:55:24.880> the<01:55:24.960> system<01:55:25.119> is" + }, + { + "start": 6925.35, + "duration": 0.0, + "text": "other ref count that's in the system is" + }, + { + "start": 6925.36, + "duration": 0.0, + "text": "other ref count that's in the system is if<01:55:25.520> someone's<01:55:25.840> accessing<01:55:26.159> the<01:55:26.320> data,<01:55:26.639> right?" + }, + { + "start": 6926.95, + "duration": 0.0, + "text": "if someone's accessing the data, right?" + }, + { + "start": 6926.96, + "duration": 0.0, + "text": "if someone's accessing the data, right? So<01:55:27.119> it's<01:55:27.360> like<01:55:27.520> if<01:55:27.760> I've<01:55:29.040> I<01:55:29.280> didn't<01:55:29.440> get<01:55:29.520> into" + }, + { + "start": 6929.669, + "duration": 0.0, + "text": "So it's like if I've I didn't get into" + }, + { + "start": 6929.679, + "duration": 0.0, + "text": "So it's like if I've I didn't get into the<01:55:29.840> code<01:55:30.080> really,<01:55:30.320> but<01:55:30.800> like<01:55:31.040> if<01:55:31.280> I've<01:55:31.440> got" + }, + { + "start": 6931.75, + "duration": 0.0, + "text": "the code really, but like if I've got" + }, + { + "start": 6931.76, + "duration": 0.0, + "text": "the code really, but like if I've got there's<01:55:32.000> a<01:55:32.159> construct<01:55:32.480> called<01:55:32.639> a<01:55:32.880> scope<01:55:34.000> um<01:55:34.239> to" + }, + { + "start": 6934.55, + "duration": 0.0, + "text": "there's a construct called a scope um to" + }, + { + "start": 6934.56, + "duration": 0.0, + "text": "there's a construct called a scope um to access<01:55:34.800> these<01:55:35.040> caches<01:55:35.440> of<01:55:35.599> like<01:55:35.760> large<01:55:36.080> data." + }, + { + "start": 6936.709, + "duration": 0.0, + "text": "access these caches of like large data." + }, + { + "start": 6936.719, + "duration": 0.0, + "text": "access these caches of like large data. And<01:55:36.880> so<01:55:37.119> you<01:55:37.599> the<01:55:37.840> API<01:55:38.239> construct<01:55:38.560> is" + }, + { + "start": 6938.709, + "duration": 0.0, + "text": "And so you the API construct is" + }, + { + "start": 6938.719, + "duration": 0.0, + "text": "And so you the API construct is basically<01:55:38.960> you<01:55:39.199> obtain<01:55:39.440> a<01:55:39.679> scope,<01:55:40.400> you<01:55:41.280> grab" + }, + { + "start": 6941.51, + "duration": 0.0, + "text": "basically you obtain a scope, you grab" + }, + { + "start": 6941.52, + "duration": 0.0, + "text": "basically you obtain a scope, you grab the<01:55:41.760> data,<01:55:42.400> and<01:55:42.560> then<01:55:42.719> you<01:55:42.880> close<01:55:43.119> the<01:55:43.280> scope." + }, + { + "start": 6943.589, + "duration": 0.0, + "text": "the data, and then you close the scope." + }, + { + "start": 6943.599, + "duration": 0.0, + "text": "the data, and then you close the scope. And<01:55:43.760> then<01:55:44.000> while<01:55:44.239> this<01:55:44.480> scope<01:55:44.800> is<01:55:44.960> open,<01:55:45.360> you" + }, + { + "start": 6945.589, + "duration": 0.0, + "text": "And then while this scope is open, you" + }, + { + "start": 6945.599, + "duration": 0.0, + "text": "And then while this scope is open, you you're<01:55:45.920> able<01:55:46.080> to<01:55:46.239> talk<01:55:46.480> about<01:55:46.639> that<01:55:46.800> data." + }, + { + "start": 6947.03, + "duration": 0.0, + "text": "you're able to talk about that data." + }, + { + "start": 6947.04, + "duration": 0.0, + "text": "you're able to talk about that data. You're<01:55:47.280> able<01:55:47.360> to<01:55:47.520> read<01:55:47.679> it.<01:55:48.639> Um<01:55:49.920> and<01:55:50.480> if<01:55:50.719> that's" + }, + { + "start": 6950.95, + "duration": 0.0, + "text": "You're able to read it. Um and if that's" + }, + { + "start": 6950.96, + "duration": 0.0, + "text": "You're able to read it. Um and if that's happening,<01:55:51.280> obviously<01:55:51.520> you<01:55:51.679> can't<01:55:51.760> evict<01:55:52.080> it." + }, + { + "start": 6952.31, + "duration": 0.0, + "text": "happening, obviously you can't evict it." + }, + { + "start": 6952.32, + "duration": 0.0, + "text": "happening, obviously you can't evict it. So<01:55:52.639> there's<01:55:53.040> two<01:55:53.199> ref<01:55:53.440> counts<01:55:53.760> like<01:55:53.840> that" + }, + { + "start": 6954.07, + "duration": 0.0, + "text": "So there's two ref counts like that" + }, + { + "start": 6954.08, + "duration": 0.0, + "text": "So there's two ref counts like that where<01:55:54.320> it's<01:55:54.560> like<01:55:54.960> if<01:55:55.199> a<01:55:55.360> key<01:55:55.520> is<01:55:55.679> referring<01:55:55.920> to" + }, + { + "start": 6956.07, + "duration": 0.0, + "text": "where it's like if a key is referring to" + }, + { + "start": 6956.08, + "duration": 0.0, + "text": "where it's like if a key is referring to this,<01:55:56.480> you<01:55:56.639> keep<01:55:56.800> it<01:55:56.960> around.<01:55:57.840> If<01:55:58.159> a<01:55:58.960> um<01:56:00.320> if<01:56:00.560> a" + }, + { + "start": 6960.709, + "duration": 0.0, + "text": "this, you keep it around. If a um if a" + }, + { + "start": 6960.719, + "duration": 0.0, + "text": "this, you keep it around. If a um if a scope<01:56:01.119> is<01:56:01.440> opening<01:56:01.840> it,<01:56:02.159> you<01:56:02.400> keep<01:56:02.480> it<01:56:02.639> around." + }, + { + "start": 6963.669, + "duration": 0.0, + "text": "scope is opening it, you keep it around." + }, + { + "start": 6963.679, + "duration": 0.0, + "text": "scope is opening it, you keep it around. If<01:56:04.560> neither<01:56:04.880> of<01:56:05.040> those<01:56:05.199> things<01:56:05.360> are<01:56:05.520> true," + }, + { + "start": 6965.83, + "duration": 0.0, + "text": "If neither of those things are true," + }, + { + "start": 6965.84, + "duration": 0.0, + "text": "If neither of those things are true, then<01:56:06.080> it's<01:56:06.400> kind<01:56:06.560> of<01:56:06.639> just<01:56:06.719> a<01:56:06.960> heristic<01:56:07.360> of" + }, + { + "start": 6967.51, + "duration": 0.0, + "text": "then it's kind of just a heristic of" + }, + { + "start": 6967.52, + "duration": 0.0, + "text": "then it's kind of just a heristic of like,<01:56:08.080> well,<01:56:09.040> you<01:56:09.199> know,<01:56:09.440> it's<01:56:09.760> not<01:56:09.920> false" + }, + { + "start": 6970.229, + "duration": 0.0, + "text": "like, well, you know, it's not false" + }, + { + "start": 6970.239, + "duration": 0.0, + "text": "like, well, you know, it's not false that<01:56:10.480> this<01:56:10.719> hash<01:56:11.119> maps<01:56:11.440> to<01:56:11.599> this<01:56:11.760> data.<01:56:12.000> Like" + }, + { + "start": 6972.149, + "duration": 0.0, + "text": "that this hash maps to this data. Like" + }, + { + "start": 6972.159, + "duration": 0.0, + "text": "that this hash maps to this data. Like we<01:56:12.320> could<01:56:12.480> keep<01:56:12.560> it<01:56:12.719> around<01:56:12.960> forever.<01:56:14.080> Um<01:56:15.040> but," + }, + { + "start": 6975.35, + "duration": 0.0, + "text": "we could keep it around forever. Um but," + }, + { + "start": 6975.36, + "duration": 0.0, + "text": "we could keep it around forever. Um but, you<01:56:15.520> know,<01:56:15.599> it's<01:56:15.760> kind<01:56:15.840> of<01:56:15.920> a<01:56:16.080> heristic<01:56:16.400> of" + }, + { + "start": 6976.55, + "duration": 0.0, + "text": "you know, it's kind of a heristic of" + }, + { + "start": 6976.56, + "duration": 0.0, + "text": "you know, it's kind of a heristic of like,<01:56:16.800> well,<01:56:17.040> you<01:56:17.119> know,<01:56:17.280> do<01:56:17.440> you<01:56:17.520> want<01:56:17.599> to" + }, + { + "start": 6977.669, + "duration": 0.0, + "text": "like, well, you know, do you want to" + }, + { + "start": 6977.679, + "duration": 0.0, + "text": "like, well, you know, do you want to throw<01:56:17.840> it<01:56:18.000> away?<01:56:18.320> like<01:56:18.639> and<01:56:18.880> you<01:56:19.040> can<01:56:19.199> throw<01:56:19.360> it" + }, + { + "start": 6979.51, + "duration": 0.0, + "text": "throw it away? like and you can throw it" + }, + { + "start": 6979.52, + "duration": 0.0, + "text": "throw it away? like and you can throw it away<01:56:19.760> like<01:56:20.159> if<01:56:20.400> it's<01:56:20.560> not<01:56:20.719> accessed<01:56:21.119> in<01:56:21.280> 10" + }, + { + "start": 6981.51, + "duration": 0.0, + "text": "away like if it's not accessed in 10" + }, + { + "start": 6981.52, + "duration": 0.0, + "text": "away like if it's not accessed in 10 seconds<01:56:22.159> like<01:56:22.320> there<01:56:22.480> are<01:56:22.639> some<01:56:22.960> caches<01:56:23.360> like" + }, + { + "start": 6983.43, + "duration": 0.0, + "text": "seconds like there are some caches like" + }, + { + "start": 6983.44, + "duration": 0.0, + "text": "seconds like there are some caches like that<01:56:23.599> like<01:56:23.760> texture<01:56:24.080> handles<01:56:24.480> I'm<01:56:24.639> like<01:56:25.040> if" + }, + { + "start": 6985.27, + "duration": 0.0, + "text": "that like texture handles I'm like if" + }, + { + "start": 6985.28, + "duration": 0.0, + "text": "that like texture handles I'm like if nobody's<01:56:25.679> accessed<01:56:25.920> it<01:56:26.000> in<01:56:26.159> 10<01:56:26.320> seconds<01:56:26.560> or" + }, + { + "start": 6986.709, + "duration": 0.0, + "text": "nobody's accessed it in 10 seconds or" + }, + { + "start": 6986.719, + "duration": 0.0, + "text": "nobody's accessed it in 10 seconds or whatever<01:56:26.960> I'll<01:56:27.119> just<01:56:27.199> throw<01:56:27.360> it<01:56:27.440> away" + }, + { + "start": 6988.149, + "duration": 0.0, + "text": "whatever I'll just throw it away" + }, + { + "start": 6988.159, + "duration": 0.0, + "text": "whatever I'll just throw it away basically<01:56:28.560> and<01:56:28.800> I<01:56:28.960> just<01:56:29.199> it's<01:56:29.440> not<01:56:29.599> least" + }, + { + "start": 6989.83, + "duration": 0.0, + "text": "basically and I just it's not least" + }, + { + "start": 6989.84, + "duration": 0.0, + "text": "basically and I just it's not least recently<01:56:30.239> used<01:56:30.560> basically<01:56:30.880> because<01:56:31.040> I'm<01:56:31.199> just" + }, + { + "start": 6991.35, + "duration": 0.0, + "text": "recently used basically because I'm just" + }, + { + "start": 6991.36, + "duration": 0.0, + "text": "recently used basically because I'm just like<01:56:31.679> I<01:56:31.840> mean<01:56:31.920> I<01:56:32.159> could<01:56:32.239> do<01:56:32.400> it<01:56:32.480> that<01:56:32.639> way<01:56:32.800> but" + }, + { + "start": 6992.95, + "duration": 0.0, + "text": "like I mean I could do it that way but" + }, + { + "start": 6992.96, + "duration": 0.0, + "text": "like I mean I could do it that way but I'm<01:56:33.199> kind<01:56:33.280> of<01:56:33.440> like<01:56:34.320> really<01:56:34.639> brute<01:56:34.880> forcy" + }, + { + "start": 6995.27, + "duration": 0.0, + "text": "I'm kind of like really brute forcy" + }, + { + "start": 6995.28, + "duration": 0.0, + "text": "I'm kind of like really brute forcy about<01:56:35.440> it<01:56:35.599> and<01:56:35.840> it<01:56:36.000> just<01:56:36.159> doesn't<01:56:36.400> matter." + }, + { + "start": 6996.709, + "duration": 0.0, + "text": "about it and it just doesn't matter." + }, + { + "start": 6996.719, + "duration": 0.0, + "text": "about it and it just doesn't matter. It's<01:56:36.960> just<01:56:37.119> like<01:56:37.599> look<01:56:37.920> man<01:56:38.560> loop<01:56:38.880> over<01:56:39.040> the" + }, + { + "start": 6999.189, + "duration": 0.0, + "text": "It's just like look man loop over the" + }, + { + "start": 6999.199, + "duration": 0.0, + "text": "It's just like look man loop over the textures<01:56:39.599> and<01:56:39.840> throw<01:56:40.080> away<01:56:40.239> the<01:56:40.400> ones<01:56:40.639> that" + }, + { + "start": 7001.03, + "duration": 0.0, + "text": "textures and throw away the ones that" + }, + { + "start": 7001.04, + "duration": 0.0, + "text": "textures and throw away the ones that you<01:56:41.199> know<01:56:41.280> what<01:56:41.360> I<01:56:41.520> mean<01:56:41.760> like<01:56:42.080> that's<01:56:42.320> kind" + }, + { + "start": 7002.55, + "duration": 0.0, + "text": "you know what I mean like that's kind" + }, + { + "start": 7002.56, + "duration": 0.0, + "text": "you know what I mean like that's kind that's<01:56:42.800> kind<01:56:42.880> of<01:56:42.960> how<01:56:43.199> that<01:56:43.520> works." + }, + { + "start": 7004.47, + "duration": 0.0, + "text": "that's kind of how that works." + }, + { + "start": 7004.48, + "duration": 0.0, + "text": "that's kind of how that works. >> Yep.<01:56:45.040> Have<01:56:45.280> you<01:56:45.520> run<01:56:45.679> into<01:56:45.920> issues<01:56:46.320> where<01:56:46.560> like" + }, + { + "start": 7006.95, + "duration": 0.0, + "text": ">> Yep. Have you run into issues where like" + }, + { + "start": 7006.96, + "duration": 0.0, + "text": ">> Yep. Have you run into issues where like because<01:56:47.280> because<01:56:47.760> all<01:56:47.920> the<01:56:48.080> visualizations" + }, + { + "start": 7008.709, + "duration": 0.0, + "text": "because because all the visualizations" + }, + { + "start": 7008.719, + "duration": 0.0, + "text": "because because all the visualizations you<01:56:48.960> have<01:56:49.040> and<01:56:49.520> they<01:56:49.840> like<01:56:50.080> is<01:56:50.239> it<01:56:50.320> like<01:56:50.560> oh<01:56:50.719> my" + }, + { + "start": 7010.87, + "duration": 0.0, + "text": "you have and they like is it like oh my" + }, + { + "start": 7010.88, + "duration": 0.0, + "text": "you have and they like is it like oh my god<01:56:51.199> like<01:56:51.360> how<01:56:51.599> much<01:56:51.760> memory<01:56:52.159> does<01:56:52.320> it<01:56:52.480> like<01:56:52.639> is" + }, + { + "start": 7012.709, + "duration": 0.0, + "text": "god like how much memory does it like is" + }, + { + "start": 7012.719, + "duration": 0.0, + "text": "god like how much memory does it like is there<01:56:52.800> is<01:56:53.040> there<01:56:53.199> like<01:56:53.440> are<01:56:53.599> you<01:56:53.760> forced<01:56:54.159> to<01:56:54.320> be" + }, + { + "start": 7014.55, + "duration": 0.0, + "text": "there is there like are you forced to be" + }, + { + "start": 7014.56, + "duration": 0.0, + "text": "there is there like are you forced to be aggressively<01:56:55.119> evicting<01:56:55.679> stuff<01:56:55.920> to<01:56:56.239> kind<01:56:56.400> of" + }, + { + "start": 7016.47, + "duration": 0.0, + "text": "aggressively evicting stuff to kind of" + }, + { + "start": 7016.48, + "duration": 0.0, + "text": "aggressively evicting stuff to kind of not<01:56:56.719> blow<01:56:56.880> up<01:56:57.119> everything<01:56:57.360> or<01:56:57.599> is<01:56:57.760> it<01:56:57.920> pretty" + }, + { + "start": 7018.07, + "duration": 0.0, + "text": "not blow up everything or is it pretty" + }, + { + "start": 7018.08, + "duration": 0.0, + "text": "not blow up everything or is it pretty chill<01:56:58.320> like<01:56:58.480> I<01:56:58.800> have<01:56:58.960> no<01:56:59.119> feeling<01:56:59.360> for<01:56:59.520> the" + }, + { + "start": 7019.75, + "duration": 0.0, + "text": "chill like I have no feeling for the" + }, + { + "start": 7019.76, + "duration": 0.0, + "text": "chill like I have no feeling for the amount<01:56:59.920> of<01:57:00.080> data?" + }, + { + "start": 7020.55, + "duration": 0.0, + "text": "amount of data?" + }, + { + "start": 7020.56, + "duration": 0.0, + "text": "amount of data? >> Um" + }, + { + "start": 7022.47, + "duration": 0.0, + "text": ">> Um" + }, + { + "start": 7022.48, + "duration": 0.0, + "text": ">> Um really<01:57:02.719> depends<01:57:02.880> on<01:57:03.040> what<01:57:03.199> you're" + }, + { + "start": 7023.27, + "duration": 0.0, + "text": "really depends on what you're" + }, + { + "start": 7023.28, + "duration": 0.0, + "text": "really depends on what you're visualizing.<01:57:03.840> So<01:57:04.080> like<01:57:04.800> early<01:57:05.119> when<01:57:05.280> I" + }, + { + "start": 7025.43, + "duration": 0.0, + "text": "visualizing. So like early when I" + }, + { + "start": 7025.44, + "duration": 0.0, + "text": "visualizing. So like early when I prototyped<01:57:05.920> the<01:57:06.080> bitmap<01:57:06.560> viewer," + }, + { + "start": 7028.07, + "duration": 0.0, + "text": "prototyped the bitmap viewer," + }, + { + "start": 7028.08, + "duration": 0.0, + "text": "prototyped the bitmap viewer, I<01:57:08.239> had<01:57:08.400> like<01:57:08.560> a<01:57:08.719> video<01:57:08.960> playback<01:57:09.440> like<01:57:09.599> I<01:57:09.840> was" + }, + { + "start": 7030.07, + "duration": 0.0, + "text": "I had like a video playback like I was" + }, + { + "start": 7030.08, + "duration": 0.0, + "text": "I had like a video playback like I was using<01:57:10.320> a<01:57:10.560> I<01:57:10.719> was<01:57:10.800> going<01:57:10.960> through<01:57:11.040> a<01:57:11.199> [ __ ]" + }, + { + "start": 7031.51, + "duration": 0.0, + "text": "using a I was going through a [ __ ]" + }, + { + "start": 7031.52, + "duration": 0.0, + "text": "using a I was going through a [ __ ] program<01:57:12.480> uh<01:57:12.639> sample<01:57:13.679> that<01:57:13.920> like<01:57:14.080> plays<01:57:14.320> back<01:57:14.480> a" + }, + { + "start": 7034.709, + "duration": 0.0, + "text": "program uh sample that like plays back a" + }, + { + "start": 7034.719, + "duration": 0.0, + "text": "program uh sample that like plays back a video" + }, + { + "start": 7036.95, + "duration": 0.0, + "text": "video" + }, + { + "start": 7036.96, + "duration": 0.0, + "text": "video and<01:57:17.199> on<01:57:17.440> each<01:57:17.599> frame<01:57:17.760> of<01:57:17.840> the<01:57:18.000> video<01:57:18.159> I<01:57:18.320> would" + }, + { + "start": 7038.39, + "duration": 0.0, + "text": "and on each frame of the video I would" + }, + { + "start": 7038.4, + "duration": 0.0, + "text": "and on each frame of the video I would visualize<01:57:18.719> a<01:57:18.800> new<01:57:18.960> bit<01:57:19.199> map.<01:57:19.440> So<01:57:19.599> I<01:57:19.760> could<01:57:19.920> hold" + }, + { + "start": 7040.07, + "duration": 0.0, + "text": "visualize a new bit map. So I could hold" + }, + { + "start": 7040.08, + "duration": 0.0, + "text": "visualize a new bit map. So I could hold F5<01:57:20.480> and<01:57:20.719> watch<01:57:20.880> the<01:57:21.040> video<01:57:21.280> in<01:57:21.440> the<01:57:21.599> watch" + }, + { + "start": 7041.83, + "duration": 0.0, + "text": "F5 and watch the video in the watch" + }, + { + "start": 7041.84, + "duration": 0.0, + "text": "F5 and watch the video in the watch window." + }, + { + "start": 7043.35, + "duration": 0.0, + "text": "window." + }, + { + "start": 7043.36, + "duration": 0.0, + "text": "window. Um<01:57:23.840> which<01:57:24.000> was<01:57:24.239> pretty<01:57:24.400> cool.<01:57:24.960> But<01:57:25.199> you<01:57:25.280> know" + }, + { + "start": 7045.35, + "duration": 0.0, + "text": "Um which was pretty cool. But you know" + }, + { + "start": 7045.36, + "duration": 0.0, + "text": "Um which was pretty cool. But you know if<01:57:25.599> you<01:57:25.679> don't<01:57:25.760> have<01:57:25.840> a<01:57:25.920> good<01:57:26.080> eviction" + }, + { + "start": 7046.47, + "duration": 0.0, + "text": "if you don't have a good eviction" + }, + { + "start": 7046.48, + "duration": 0.0, + "text": "if you don't have a good eviction strategy<01:57:26.880> you<01:57:27.119> like<01:57:27.360> look<01:57:27.520> at<01:57:27.760> you<01:57:28.000> open<01:57:28.159> up" + }, + { + "start": 7048.31, + "duration": 0.0, + "text": "strategy you like look at you open up" + }, + { + "start": 7048.32, + "duration": 0.0, + "text": "strategy you like look at you open up task<01:57:28.639> manager<01:57:28.880> or<01:57:29.040> whatever<01:57:29.440> you<01:57:29.520> go<01:57:29.760> look<01:57:29.840> at" + }, + { + "start": 7049.91, + "duration": 0.0, + "text": "task manager or whatever you go look at" + }, + { + "start": 7049.92, + "duration": 0.0, + "text": "task manager or whatever you go look at it<01:57:30.080> and<01:57:30.159> it's<01:57:30.320> like<01:57:31.520> Yep.<01:57:32.080> Exactly.<01:57:32.560> So<01:57:33.040> it's" + }, + { + "start": 7053.669, + "duration": 0.0, + "text": "it and it's like Yep. Exactly. So it's" + }, + { + "start": 7053.679, + "duration": 0.0, + "text": "it and it's like Yep. Exactly. So it's so<01:57:34.320> um<01:57:34.639> over<01:57:35.040> time<01:57:35.440> it<01:57:35.679> can<01:57:35.840> grow<01:57:36.159> pretty" + }, + { + "start": 7056.47, + "duration": 0.0, + "text": "so um over time it can grow pretty" + }, + { + "start": 7056.48, + "duration": 0.0, + "text": "so um over time it can grow pretty substantially.<01:57:37.599> Um<01:57:38.000> so<01:57:38.239> I<01:57:38.480> tend<01:57:38.719> to<01:57:39.599> a<01:57:39.760> victim" + }, + { + "start": 7060.229, + "duration": 0.0, + "text": "substantially. Um so I tend to a victim" + }, + { + "start": 7060.239, + "duration": 0.0, + "text": "substantially. Um so I tend to a victim like<01:57:40.480> like<01:57:40.719> I<01:57:40.880> said<01:57:41.040> it's<01:57:41.280> like<01:57:41.520> different" + }, + { + "start": 7061.83, + "duration": 0.0, + "text": "like like I said it's like different" + }, + { + "start": 7061.84, + "duration": 0.0, + "text": "like like I said it's like different heristics.<01:57:42.239> I<01:57:42.400> don't<01:57:42.480> remember<01:57:42.719> exactly<01:57:42.960> what" + }, + { + "start": 7063.109, + "duration": 0.0, + "text": "heristics. I don't remember exactly what" + }, + { + "start": 7063.119, + "duration": 0.0, + "text": "heristics. I don't remember exactly what the<01:57:43.280> numbers<01:57:43.440> are<01:57:43.599> but<01:57:43.840> I'm<01:57:44.000> like<01:57:44.480> if<01:57:44.719> nobody's" + }, + { + "start": 7065.109, + "duration": 0.0, + "text": "the numbers are but I'm like if nobody's" + }, + { + "start": 7065.119, + "duration": 0.0, + "text": "the numbers are but I'm like if nobody's touching<01:57:45.360> this<01:57:45.520> in<01:57:45.760> a<01:57:45.840> long<01:57:46.000> time<01:57:46.239> throw<01:57:46.400> it" + }, + { + "start": 7066.55, + "duration": 0.0, + "text": "touching this in a long time throw it" + }, + { + "start": 7066.56, + "duration": 0.0, + "text": "touching this in a long time throw it away.<01:57:47.280> Um<01:57:47.840> and<01:57:48.080> that<01:57:48.320> tends<01:57:48.639> to<01:57:48.880> just<01:57:49.360> kind<01:57:49.599> of" + }, + { + "start": 7069.75, + "duration": 0.0, + "text": "away. Um and that tends to just kind of" + }, + { + "start": 7069.76, + "duration": 0.0, + "text": "away. Um and that tends to just kind of like<01:57:50.159> soften<01:57:50.560> that<01:57:50.800> problem<01:57:51.199> basically." + }, + { + "start": 7074.48, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7075.51, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7075.52, + "duration": 0.0, + "text": ">> Yeah. >> Talking<01:57:55.760> about<01:57:56.000> visualization.<01:57:56.639> Have<01:57:56.800> you" + }, + { + "start": 7076.95, + "duration": 0.0, + "text": ">> Talking about visualization. Have you" + }, + { + "start": 7076.96, + "duration": 0.0, + "text": ">> Talking about visualization. Have you considered<01:57:57.360> also<01:57:57.599> visualizing<01:57:58.239> things" + }, + { + "start": 7078.47, + "duration": 0.0, + "text": "considered also visualizing things" + }, + { + "start": 7078.48, + "duration": 0.0, + "text": "considered also visualizing things dynamically<01:57:59.119> over<01:57:59.360> time<01:57:59.599> like<01:57:59.840> how<01:58:00.000> the" + }, + { + "start": 7080.229, + "duration": 0.0, + "text": "dynamically over time like how the" + }, + { + "start": 7080.239, + "duration": 0.0, + "text": "dynamically over time like how the changes<01:58:00.560> of<01:58:00.800> things<01:58:01.280> have<01:58:01.520> also<01:58:02.880> um<01:58:03.119> like<01:58:03.920> bit" + }, + { + "start": 7085.03, + "duration": 0.0, + "text": "changes of things have also um like bit" + }, + { + "start": 7085.04, + "duration": 0.0, + "text": "changes of things have also um like bit I<01:58:05.280> realize<01:58:05.599> I'm<01:58:05.920> saying<01:58:07.119> I'm<01:58:07.440> wondering<01:58:07.760> like" + }, + { + "start": 7087.99, + "duration": 0.0, + "text": "I realize I'm saying I'm wondering like" + }, + { + "start": 7088.0, + "duration": 0.0, + "text": "I realize I'm saying I'm wondering like for<01:58:08.080> example<01:58:08.400> for<01:58:08.639> bit<01:58:08.880> maps<01:58:09.280> like<01:58:09.679> uh<01:58:09.840> you<01:58:10.080> can" + }, + { + "start": 7090.229, + "duration": 0.0, + "text": "for example for bit maps like uh you can" + }, + { + "start": 7090.239, + "duration": 0.0, + "text": "for example for bit maps like uh you can highlight<01:58:10.880> like<01:58:11.119> as<01:58:11.280> in<01:58:11.440> render<01:58:11.760> doc<01:58:12.000> okay" + }, + { + "start": 7092.229, + "duration": 0.0, + "text": "highlight like as in render doc okay" + }, + { + "start": 7092.239, + "duration": 0.0, + "text": "highlight like as in render doc okay here's<01:58:12.480> where<01:58:12.639> the<01:58:12.800> change<01:58:13.119> happened<01:58:14.159> from" + }, + { + "start": 7094.39, + "duration": 0.0, + "text": "here's where the change happened from" + }, + { + "start": 7094.4, + "duration": 0.0, + "text": "here's where the change happened from the<01:58:14.560> last<01:58:14.719> time<01:58:15.040> you<01:58:15.199> looked<01:58:15.440> at<01:58:15.520> this<01:58:15.760> thing." + }, + { + "start": 7096.39, + "duration": 0.0, + "text": "the last time you looked at this thing." + }, + { + "start": 7096.4, + "duration": 0.0, + "text": "the last time you looked at this thing. >> Yeah.<01:58:16.800> Yeah.<01:58:17.119> So<01:58:17.760> um<01:58:18.159> with<01:58:18.400> bit<01:58:18.639> so<01:58:18.800> I<01:58:18.960> haven't" + }, + { + "start": 7099.109, + "duration": 0.0, + "text": ">> Yeah. Yeah. So um with bit so I haven't" + }, + { + "start": 7099.119, + "duration": 0.0, + "text": ">> Yeah. Yeah. So um with bit so I haven't done<01:58:19.199> it<01:58:19.360> in<01:58:19.520> every<01:58:19.679> visualizer.<01:58:20.080> So<01:58:20.239> a<01:58:20.400> lot<01:58:20.480> of" + }, + { + "start": 7100.55, + "duration": 0.0, + "text": "done it in every visualizer. So a lot of" + }, + { + "start": 7100.56, + "duration": 0.0, + "text": "done it in every visualizer. So a lot of what<01:58:20.639> I<01:58:20.800> talked<01:58:20.960> about<01:58:21.119> today<01:58:21.280> was<01:58:21.440> like<01:58:21.520> the" + }, + { + "start": 7101.669, + "duration": 0.0, + "text": "what I talked about today was like the" + }, + { + "start": 7101.679, + "duration": 0.0, + "text": "what I talked about today was like the visualizer<01:58:22.159> architecture<01:58:22.880> like<01:58:23.040> sort<01:58:23.199> of" + }, + { + "start": 7103.27, + "duration": 0.0, + "text": "visualizer architecture like sort of" + }, + { + "start": 7103.28, + "duration": 0.0, + "text": "visualizer architecture like sort of like<01:58:23.840> how<01:58:24.080> the<01:58:24.239> building<01:58:24.560> blocks<01:58:24.800> are<01:58:24.960> all" + }, + { + "start": 7105.109, + "duration": 0.0, + "text": "like how the building blocks are all" + }, + { + "start": 7105.119, + "duration": 0.0, + "text": "like how the building blocks are all arranged<01:58:26.000> but<01:58:26.239> I<01:58:26.400> haven't<01:58:26.719> actually<01:58:27.040> like" + }, + { + "start": 7107.91, + "duration": 0.0, + "text": "arranged but I haven't actually like" + }, + { + "start": 7107.92, + "duration": 0.0, + "text": "arranged but I haven't actually like most<01:58:28.159> of<01:58:28.239> my<01:58:28.400> work<01:58:28.560> has<01:58:28.719> been<01:58:28.800> on<01:58:28.960> that<01:58:29.040> part<01:58:29.199> of" + }, + { + "start": 7109.27, + "duration": 0.0, + "text": "most of my work has been on that part of" + }, + { + "start": 7109.28, + "duration": 0.0, + "text": "most of my work has been on that part of the<01:58:29.360> problem<01:58:29.520> to<01:58:29.679> make<01:58:29.760> sure<01:58:29.920> that's<01:58:30.159> solid" + }, + { + "start": 7110.39, + "duration": 0.0, + "text": "the problem to make sure that's solid" + }, + { + "start": 7110.4, + "duration": 0.0, + "text": "the problem to make sure that's solid before<01:58:30.639> I<01:58:30.800> go<01:58:30.880> and<01:58:31.119> build<01:58:31.360> like<01:58:32.080> fanciest" + }, + { + "start": 7112.55, + "duration": 0.0, + "text": "before I go and build like fanciest" + }, + { + "start": 7112.56, + "duration": 0.0, + "text": "before I go and build like fanciest bitmap<01:58:32.960> visualizer<01:58:33.440> known<01:58:33.760> to<01:58:33.840> man<01:58:34.239> sort<01:58:34.480> of" + }, + { + "start": 7114.55, + "duration": 0.0, + "text": "bitmap visualizer known to man sort of" + }, + { + "start": 7114.56, + "duration": 0.0, + "text": "bitmap visualizer known to man sort of thing<01:58:34.880> which<01:58:35.119> like<01:58:35.360> if<01:58:35.679> you<01:58:35.840> know<01:58:36.480> but<01:58:36.960> um<01:58:37.280> so<01:58:37.520> I" + }, + { + "start": 7117.75, + "duration": 0.0, + "text": "thing which like if you know but um so I" + }, + { + "start": 7117.76, + "duration": 0.0, + "text": "thing which like if you know but um so I don't<01:58:37.920> I<01:58:38.159> I<01:58:38.480> don't<01:58:38.560> have<01:58:38.719> that<01:58:38.960> particular" + }, + { + "start": 7119.35, + "duration": 0.0, + "text": "don't I I don't have that particular" + }, + { + "start": 7119.36, + "duration": 0.0, + "text": "don't I I don't have that particular feature<01:58:39.520> in<01:58:39.679> the<01:58:39.760> bitmap<01:58:40.159> visualizer<01:58:40.639> but<01:58:41.040> um" + }, + { + "start": 7121.589, + "duration": 0.0, + "text": "feature in the bitmap visualizer but um" + }, + { + "start": 7121.599, + "duration": 0.0, + "text": "feature in the bitmap visualizer but um but<01:58:41.840> like<01:58:42.000> the<01:58:42.159> memory<01:58:42.480> viewer<01:58:42.880> I<01:58:43.040> do<01:58:43.360> like<01:58:43.520> is" + }, + { + "start": 7123.75, + "duration": 0.0, + "text": "but like the memory viewer I do like is" + }, + { + "start": 7123.76, + "duration": 0.0, + "text": "but like the memory viewer I do like is an<01:58:43.920> example<01:58:44.080> where<01:58:44.239> I<01:58:44.320> do<01:58:44.480> have<01:58:44.560> that<01:58:44.719> feature" + }, + { + "start": 7124.87, + "duration": 0.0, + "text": "an example where I do have that feature" + }, + { + "start": 7124.88, + "duration": 0.0, + "text": "an example where I do have that feature where<01:58:45.119> it's<01:58:45.199> like<01:58:45.360> you<01:58:45.520> show<01:58:45.679> the<01:58:45.840> changes<01:58:46.159> as" + }, + { + "start": 7126.39, + "duration": 0.0, + "text": "where it's like you show the changes as" + }, + { + "start": 7126.4, + "duration": 0.0, + "text": "where it's like you show the changes as they<01:58:46.639> happen.<01:58:47.520> Um,<01:58:48.400> now<01:58:48.800> obviously<01:58:49.119> what<01:58:49.360> you" + }, + { + "start": 7129.589, + "duration": 0.0, + "text": "they happen. Um, now obviously what you" + }, + { + "start": 7129.599, + "duration": 0.0, + "text": "they happen. Um, now obviously what you want<01:58:49.920> is<01:58:50.560> uh<01:58:50.960> kind<01:58:51.119> of<01:58:51.199> what<01:58:51.360> I<01:58:51.679> alluded<01:58:52.080> to<01:58:52.239> at" + }, + { + "start": 7132.39, + "duration": 0.0, + "text": "want is uh kind of what I alluded to at" + }, + { + "start": 7132.4, + "duration": 0.0, + "text": "want is uh kind of what I alluded to at the<01:58:52.480> end<01:58:52.560> of<01:58:52.639> the<01:58:52.800> talk<01:58:52.960> where<01:58:53.119> it's<01:58:53.280> like<01:58:53.440> you" + }, + { + "start": 7133.589, + "duration": 0.0, + "text": "the end of the talk where it's like you" + }, + { + "start": 7133.599, + "duration": 0.0, + "text": "the end of the talk where it's like you really<01:58:53.679> want<01:58:53.760> a<01:58:53.920> scrub<01:58:54.239> like<01:58:54.480> you<01:58:54.560> want<01:58:54.639> a" + }, + { + "start": 7134.79, + "duration": 0.0, + "text": "really want a scrub like you want a" + }, + { + "start": 7134.8, + "duration": 0.0, + "text": "really want a scrub like you want a timeline<01:58:55.440> like<01:58:55.760> white<01:58:56.000> box<01:58:56.320> where<01:58:56.560> you<01:58:56.639> want" + }, + { + "start": 7136.87, + "duration": 0.0, + "text": "timeline like white box where you want" + }, + { + "start": 7136.88, + "duration": 0.0, + "text": "timeline like white box where you want like<01:58:57.360> you<01:58:57.599> want<01:58:58.480> you<01:58:58.719> want<01:58:58.800> a<01:58:59.040> timeline<01:58:59.440> where" + }, + { + "start": 7139.669, + "duration": 0.0, + "text": "like you want you want a timeline where" + }, + { + "start": 7139.679, + "duration": 0.0, + "text": "like you want you want a timeline where it's<01:58:59.920> like<01:59:00.320> look<01:59:00.639> I've<01:59:00.880> got<01:59:01.040> this<01:59:01.280> whole" + }, + { + "start": 7141.51, + "duration": 0.0, + "text": "it's like look I've got this whole" + }, + { + "start": 7141.52, + "duration": 0.0, + "text": "it's like look I've got this whole history<01:59:01.840> of<01:59:02.080> those<01:59:02.239> hashes<01:59:03.199> where<01:59:03.840> um<01:59:04.000> it's" + }, + { + "start": 7144.31, + "duration": 0.0, + "text": "history of those hashes where um it's" + }, + { + "start": 7144.32, + "duration": 0.0, + "text": "history of those hashes where um it's like<01:59:05.040> there's<01:59:05.440> more<01:59:05.679> information<01:59:06.000> you<01:59:06.159> need" + }, + { + "start": 7146.31, + "duration": 0.0, + "text": "like there's more information you need" + }, + { + "start": 7146.32, + "duration": 0.0, + "text": "like there's more information you need but<01:59:06.480> it's<01:59:06.639> like<01:59:06.800> you've<01:59:06.960> got<01:59:07.119> this<01:59:07.440> history<01:59:07.760> of" + }, + { + "start": 7147.99, + "duration": 0.0, + "text": "but it's like you've got this history of" + }, + { + "start": 7148.0, + "duration": 0.0, + "text": "but it's like you've got this history of data<01:59:08.480> transforms<01:59:09.199> applying<01:59:09.599> to<01:59:09.760> this<01:59:10.719> and" + }, + { + "start": 7151.03, + "duration": 0.0, + "text": "data transforms applying to this and" + }, + { + "start": 7151.04, + "duration": 0.0, + "text": "data transforms applying to this and really<01:59:11.280> what<01:59:11.440> you<01:59:11.599> want<01:59:11.679> to<01:59:11.760> do<01:59:11.840> is<01:59:12.080> just<01:59:12.239> like" + }, + { + "start": 7152.95, + "duration": 0.0, + "text": "really what you want to do is just like" + }, + { + "start": 7152.96, + "duration": 0.0, + "text": "really what you want to do is just like rewind<01:59:13.440> to<01:59:13.599> those<01:59:13.840> states<01:59:14.080> and<01:59:14.400> see<01:59:14.480> like<01:59:14.719> what" + }, + { + "start": 7154.87, + "duration": 0.0, + "text": "rewind to those states and see like what" + }, + { + "start": 7154.88, + "duration": 0.0, + "text": "rewind to those states and see like what the<01:59:15.040> data<01:59:15.199> was<01:59:15.440> actually<01:59:15.599> like<01:59:15.840> then.<01:59:17.040> Um" + }, + { + "start": 7158.629, + "duration": 0.0, + "text": "the data was actually like then. Um" + }, + { + "start": 7158.639, + "duration": 0.0, + "text": "the data was actually like then. Um uh<01:59:18.880> and<01:59:19.199> you<01:59:19.440> know<01:59:20.719> I<01:59:21.040> haven't<01:59:21.199> done<01:59:21.360> that<01:59:21.599> yet" + }, + { + "start": 7161.83, + "duration": 0.0, + "text": "uh and you know I haven't done that yet" + }, + { + "start": 7161.84, + "duration": 0.0, + "text": "uh and you know I haven't done that yet because<01:59:22.080> it's<01:59:22.320> like<01:59:22.639> subtle<01:59:22.960> with<01:59:23.199> how<01:59:23.360> you" + }, + { + "start": 7163.51, + "duration": 0.0, + "text": "because it's like subtle with how you" + }, + { + "start": 7163.52, + "duration": 0.0, + "text": "because it's like subtle with how you want<01:59:23.599> to<01:59:23.679> do<01:59:23.760> that.<01:59:24.000> Like<01:59:24.159> how<01:59:24.320> is<01:59:24.400> that" + }, + { + "start": 7164.55, + "duration": 0.0, + "text": "want to do that. Like how is that" + }, + { + "start": 7164.56, + "duration": 0.0, + "text": "want to do that. Like how is that related<01:59:24.800> to<01:59:24.960> time<01:59:25.199> travel<01:59:25.520> debugging?<01:59:26.000> How<01:59:26.080> is" + }, + { + "start": 7166.229, + "duration": 0.0, + "text": "related to time travel debugging? How is" + }, + { + "start": 7166.239, + "duration": 0.0, + "text": "related to time travel debugging? How is it<01:59:26.400> like<01:59:26.560> there's<01:59:26.719> a<01:59:26.800> lot<01:59:26.880> of<01:59:26.960> questions<01:59:27.199> that" + }, + { + "start": 7167.43, + "duration": 0.0, + "text": "it like there's a lot of questions that" + }, + { + "start": 7167.44, + "duration": 0.0, + "text": "it like there's a lot of questions that I<01:59:27.679> would<01:59:27.760> have<01:59:27.840> to<01:59:28.000> answer<01:59:28.159> to<01:59:28.400> actually<01:59:28.639> like" + }, + { + "start": 7169.51, + "duration": 0.0, + "text": "I would have to answer to actually like" + }, + { + "start": 7169.52, + "duration": 0.0, + "text": "I would have to answer to actually like tell<01:59:29.679> you<01:59:29.840> how<01:59:30.000> that<01:59:30.239> system<01:59:30.480> works<01:59:30.719> fully." + }, + { + "start": 7171.109, + "duration": 0.0, + "text": "tell you how that system works fully." + }, + { + "start": 7171.119, + "duration": 0.0, + "text": "tell you how that system works fully. But<01:59:31.280> like<01:59:31.760> but<01:59:32.000> yes<01:59:32.239> that<01:59:32.719> to<01:59:32.960> answer<01:59:33.119> your" + }, + { + "start": 7173.27, + "duration": 0.0, + "text": "But like but yes that to answer your" + }, + { + "start": 7173.28, + "duration": 0.0, + "text": "But like but yes that to answer your question<01:59:33.599> like<01:59:33.920> I've<01:59:34.159> done<01:59:34.320> it<01:59:34.400> I've<01:59:34.639> done" + }, + { + "start": 7174.709, + "duration": 0.0, + "text": "question like I've done it I've done" + }, + { + "start": 7174.719, + "duration": 0.0, + "text": "question like I've done it I've done like<01:59:34.880> in<01:59:34.960> the<01:59:35.040> watch<01:59:35.199> window<01:59:35.520> memory<01:59:35.760> view<01:59:36.000> I" + }, + { + "start": 7176.149, + "duration": 0.0, + "text": "like in the watch window memory view I" + }, + { + "start": 7176.159, + "duration": 0.0, + "text": "like in the watch window memory view I show<01:59:36.320> as<01:59:36.560> things<01:59:36.880> change.<01:59:37.440> Um<01:59:37.760> I<01:59:37.920> don't<01:59:38.080> have" + }, + { + "start": 7178.149, + "duration": 0.0, + "text": "show as things change. Um I don't have" + }, + { + "start": 7178.159, + "duration": 0.0, + "text": "show as things change. Um I don't have like<01:59:38.400> the<01:59:38.639> super<01:59:38.880> fancy<01:59:39.119> timeline<01:59:39.520> scrubber" + }, + { + "start": 7180.149, + "duration": 0.0, + "text": "like the super fancy timeline scrubber" + }, + { + "start": 7180.159, + "duration": 0.0, + "text": "like the super fancy timeline scrubber yet<01:59:40.719> but<01:59:41.119> it's<01:59:41.520> like<01:59:42.159> that's<01:59:42.560> kind<01:59:42.719> of<01:59:43.119> um<01:59:43.679> but" + }, + { + "start": 7183.91, + "duration": 0.0, + "text": "yet but it's like that's kind of um but" + }, + { + "start": 7183.92, + "duration": 0.0, + "text": "yet but it's like that's kind of um but yeah<01:59:44.159> for<01:59:44.320> sure<01:59:44.560> you<01:59:44.800> definitely<01:59:45.040> want<01:59:45.199> that." + }, + { + "start": 7186.229, + "duration": 0.0, + "text": "yeah for sure you definitely want that." + }, + { + "start": 7186.239, + "duration": 0.0, + "text": "yeah for sure you definitely want that. Yeah,<01:59:46.400> for<01:59:46.719> people<01:59:46.880> at<01:59:47.119> home<01:59:47.440> like<01:59:48.080> Andrew" + }, + { + "start": 7188.55, + "duration": 0.0, + "text": "Yeah, for people at home like Andrew" + }, + { + "start": 7188.56, + "duration": 0.0, + "text": "Yeah, for people at home like Andrew from<01:59:48.800> White<01:59:49.119> Box<01:59:49.440> is<01:59:49.679> here<01:59:49.840> as<01:59:50.000> well<01:59:50.159> and<01:59:50.400> yes," + }, + { + "start": 7190.79, + "duration": 0.0, + "text": "from White Box is here as well and yes," + }, + { + "start": 7190.8, + "duration": 0.0, + "text": "from White Box is here as well and yes, pe<01:59:51.119> some<01:59:51.440> people<01:59:51.679> have<01:59:51.920> been<01:59:52.080> aggressively" + }, + { + "start": 7192.709, + "duration": 0.0, + "text": "pe some people have been aggressively" + }, + { + "start": 7192.719, + "duration": 0.0, + "text": "pe some people have been aggressively pitching<01:59:53.199> like<01:59:53.360> a<01:59:53.679> debugger<01:59:54.159> cinematic" + }, + { + "start": 7194.709, + "duration": 0.0, + "text": "pitching like a debugger cinematic" + }, + { + "start": 7194.719, + "duration": 0.0, + "text": "pitching like a debugger cinematic universe<01:59:55.520> where<01:59:55.840> like<01:59:56.400> White<01:59:56.639> Box<01:59:57.040> FL" + }, + { + "start": 7197.83, + "duration": 0.0, + "text": "universe where like White Box FL" + }, + { + "start": 7197.84, + "duration": 0.0, + "text": "universe where like White Box FL debuggers" + }, + { + "start": 7198.39, + "duration": 0.0, + "text": "debuggers" + }, + { + "start": 7198.4, + "duration": 0.0, + "text": "debuggers >> the<01:59:58.560> Avengers." + }, + { + "start": 7199.109, + "duration": 0.0, + "text": ">> the Avengers." + }, + { + "start": 7199.119, + "duration": 0.0, + "text": ">> the Avengers. >> Yeah.<01:59:59.520> The<01:59:59.760> super<02:00:00.000> team<02:00:00.320> of<02:00:00.639> like<02:00:01.199> debug" + }, + { + "start": 7201.589, + "duration": 0.0, + "text": ">> Yeah. The super team of like debug" + }, + { + "start": 7201.599, + "duration": 0.0, + "text": ">> Yeah. The super team of like debug Avengers.<02:00:02.239> Yeah." + }, + { + "start": 7204.07, + "duration": 0.0, + "text": "Avengers. Yeah." + }, + { + "start": 7204.08, + "duration": 0.0, + "text": "Avengers. Yeah. >> Um<02:00:04.800> when<02:00:05.040> you<02:00:05.199> get<02:00:05.280> the<02:00:05.679> information<02:00:06.239> from<02:00:06.639> the" + }, + { + "start": 7206.87, + "duration": 0.0, + "text": ">> Um when you get the information from the" + }, + { + "start": 7206.88, + "duration": 0.0, + "text": ">> Um when you get the information from the operating<02:00:07.280> system<02:00:07.599> about<02:00:07.920> the<02:00:08.080> debugger<02:00:09.199> um" + }, + { + "start": 7209.35, + "duration": 0.0, + "text": "operating system about the debugger um" + }, + { + "start": 7209.36, + "duration": 0.0, + "text": "operating system about the debugger um the<02:00:09.599> memory,<02:00:10.080> do<02:00:10.159> you<02:00:10.320> get<02:00:10.560> memory<02:00:11.040> ranges?<02:00:11.679> Do" + }, + { + "start": 7211.83, + "duration": 0.0, + "text": "the memory, do you get memory ranges? Do" + }, + { + "start": 7211.84, + "duration": 0.0, + "text": "the memory, do you get memory ranges? Do you<02:00:11.920> get<02:00:12.159> allocation?<02:00:12.880> Do<02:00:13.040> you<02:00:13.119> get" + }, + { + "start": 7213.35, + "duration": 0.0, + "text": "you get allocation? Do you get" + }, + { + "start": 7213.36, + "duration": 0.0, + "text": "you get allocation? Do you get individual<02:00:13.920> pages?<02:00:14.880> If<02:00:15.040> there's<02:00:15.760> ations<02:00:16.000> that" + }, + { + "start": 7216.149, + "duration": 0.0, + "text": "individual pages? If there's ations that" + }, + { + "start": 7216.159, + "duration": 0.0, + "text": "individual pages? If there's ations that have<02:00:16.239> been<02:00:16.400> made<02:00:16.639> that<02:00:16.960> haven't<02:00:17.440> been<02:00:17.760> given" + }, + { + "start": 7218.149, + "duration": 0.0, + "text": "have been made that haven't been given" + }, + { + "start": 7218.159, + "duration": 0.0, + "text": "have been made that haven't been given pages<02:00:18.639> yet.<02:00:19.119> Is<02:00:19.360> that<02:00:19.840> information<02:00:20.320> you<02:00:20.560> can" + }, + { + "start": 7220.709, + "duration": 0.0, + "text": "pages yet. Is that information you can" + }, + { + "start": 7220.719, + "duration": 0.0, + "text": "pages yet. Is that information you can access?" + }, + { + "start": 7222.47, + "duration": 0.0, + "text": "access?" + }, + { + "start": 7222.48, + "duration": 0.0, + "text": "access? >> Um,<02:00:23.199> so<02:00:24.239> you<02:00:24.560> can<02:00:24.719> obtain<02:00:25.119> information<02:00:25.520> like" + }, + { + "start": 7225.75, + "duration": 0.0, + "text": ">> Um, so you can obtain information like" + }, + { + "start": 7225.76, + "duration": 0.0, + "text": ">> Um, so you can obtain information like that,<02:00:26.000> but<02:00:26.239> the<02:00:26.560> so<02:00:26.800> the<02:00:27.040> debug<02:00:27.440> events<02:00:27.840> don't" + }, + { + "start": 7228.07, + "duration": 0.0, + "text": "that, but the so the debug events don't" + }, + { + "start": 7228.08, + "duration": 0.0, + "text": "that, but the so the debug events don't actually<02:00:28.320> contain<02:00:28.639> that<02:00:28.880> information.<02:00:29.679> You" + }, + { + "start": 7229.91, + "duration": 0.0, + "text": "actually contain that information. You" + }, + { + "start": 7229.92, + "duration": 0.0, + "text": "actually contain that information. You don't<02:00:30.080> get<02:00:30.639> um<02:00:30.800> the<02:00:31.040> debug<02:00:31.440> events<02:00:32.080> don't" + }, + { + "start": 7232.31, + "duration": 0.0, + "text": "don't get um the debug events don't" + }, + { + "start": 7232.32, + "duration": 0.0, + "text": "don't get um the debug events don't report<02:00:32.639> anything<02:00:33.040> at<02:00:33.040> least<02:00:33.280> on<02:00:33.520> Windows.<02:00:34.159> Uh" + }, + { + "start": 7234.55, + "duration": 0.0, + "text": "report anything at least on Windows. Uh" + }, + { + "start": 7234.56, + "duration": 0.0, + "text": "report anything at least on Windows. Uh you<02:00:34.719> don't<02:00:34.880> get<02:00:35.040> information<02:00:35.360> about<02:00:35.599> like" + }, + { + "start": 7235.83, + "duration": 0.0, + "text": "you don't get information about like" + }, + { + "start": 7235.84, + "duration": 0.0, + "text": "you don't get information about like this<02:00:36.080> range<02:00:36.320> was<02:00:36.560> reserved<02:00:37.119> for<02:00:37.199> example.<02:00:38.159> Um" + }, + { + "start": 7238.95, + "duration": 0.0, + "text": "this range was reserved for example. Um" + }, + { + "start": 7238.96, + "duration": 0.0, + "text": "this range was reserved for example. Um what<02:00:39.199> tends<02:00:39.440> to<02:00:39.599> happen<02:00:40.159> like<02:00:40.480> all<02:00:40.639> the<02:00:40.880> stuff" + }, + { + "start": 7240.95, + "duration": 0.0, + "text": "what tends to happen like all the stuff" + }, + { + "start": 7240.96, + "duration": 0.0, + "text": "what tends to happen like all the stuff that<02:00:41.199> the<02:00:41.520> debugger<02:00:42.000> currently<02:00:42.320> uses<02:00:42.639> is<02:00:42.880> like" + }, + { + "start": 7243.109, + "duration": 0.0, + "text": "that the debugger currently uses is like" + }, + { + "start": 7243.119, + "duration": 0.0, + "text": "that the debugger currently uses is like read<02:00:43.440> process<02:00:43.760> memory<02:00:44.159> like<02:00:44.320> it<02:00:44.480> calls<02:00:44.719> just" + }, + { + "start": 7244.87, + "duration": 0.0, + "text": "read process memory like it calls just" + }, + { + "start": 7244.88, + "duration": 0.0, + "text": "read process memory like it calls just that<02:00:45.040> API.<02:00:45.440> So<02:00:45.520> it<02:00:45.679> can<02:00:45.760> read<02:00:45.920> any<02:00:46.159> range<02:00:46.719> and" + }, + { + "start": 7246.87, + "duration": 0.0, + "text": "that API. So it can read any range and" + }, + { + "start": 7246.88, + "duration": 0.0, + "text": "that API. So it can read any range and if<02:00:47.040> it<02:00:47.280> and<02:00:47.679> it<02:00:48.000> can<02:00:48.239> infer<02:00:48.719> from<02:00:49.040> how<02:00:49.199> that<02:00:49.440> API" + }, + { + "start": 7249.83, + "duration": 0.0, + "text": "if it and it can infer from how that API" + }, + { + "start": 7249.84, + "duration": 0.0, + "text": "if it and it can infer from how that API returns<02:00:50.239> like<02:00:50.639> whether<02:00:50.960> it<02:00:51.119> failed<02:00:51.440> for<02:00:51.599> some" + }, + { + "start": 7251.91, + "duration": 0.0, + "text": "returns like whether it failed for some" + }, + { + "start": 7251.92, + "duration": 0.0, + "text": "returns like whether it failed for some for<02:00:52.239> some<02:00:52.400> pages.<02:00:52.880> So<02:00:53.040> it<02:00:53.199> can<02:00:53.280> infer<02:00:53.679> stuff" + }, + { + "start": 7253.91, + "duration": 0.0, + "text": "for some pages. So it can infer stuff" + }, + { + "start": 7253.92, + "duration": 0.0, + "text": "for some pages. So it can infer stuff like<02:00:54.080> that.<02:00:54.719> Now<02:00:55.440> even<02:00:55.679> if<02:00:55.840> there's<02:00:56.080> no<02:00:56.320> way<02:00:56.719> to" + }, + { + "start": 7256.95, + "duration": 0.0, + "text": "like that. Now even if there's no way to" + }, + { + "start": 7256.96, + "duration": 0.0, + "text": "like that. Now even if there's no way to actually<02:00:57.280> know<02:00:57.840> like<02:00:58.080> if<02:00:59.280> and<02:00:59.599> I<02:00:59.840> haven't<02:01:00.080> used" + }, + { + "start": 7260.31, + "duration": 0.0, + "text": "actually know like if and I haven't used" + }, + { + "start": 7260.32, + "duration": 0.0, + "text": "actually know like if and I haven't used it<02:01:00.480> so<02:01:00.639> I<02:01:00.800> don't<02:01:00.960> fully<02:01:01.280> know<02:01:01.360> but<02:01:01.599> I'm<02:01:01.679> pretty" + }, + { + "start": 7261.75, + "duration": 0.0, + "text": "it so I don't fully know but I'm pretty" + }, + { + "start": 7261.76, + "duration": 0.0, + "text": "it so I don't fully know but I'm pretty sure<02:01:01.920> there's<02:01:02.080> Windows<02:01:02.400> APIs<02:01:02.800> to<02:01:02.960> like" + }, + { + "start": 7263.27, + "duration": 0.0, + "text": "sure there's Windows APIs to like" + }, + { + "start": 7263.28, + "duration": 0.0, + "text": "sure there's Windows APIs to like actually<02:01:03.760> get<02:01:04.000> more<02:01:04.239> information<02:01:04.560> about<02:01:04.719> the" + }, + { + "start": 7264.87, + "duration": 0.0, + "text": "actually get more information about the" + }, + { + "start": 7264.88, + "duration": 0.0, + "text": "actually get more information about the page<02:01:05.199> table<02:01:05.520> basically.<02:01:06.320> But<02:01:06.560> even<02:01:06.800> if<02:01:06.960> you" + }, + { + "start": 7267.109, + "duration": 0.0, + "text": "page table basically. But even if you" + }, + { + "start": 7267.119, + "duration": 0.0, + "text": "page table basically. But even if you didn't<02:01:07.360> have<02:01:07.520> that,<02:01:07.840> what<02:01:08.000> the<02:01:08.080> debugger" + }, + { + "start": 7268.47, + "duration": 0.0, + "text": "didn't have that, what the debugger" + }, + { + "start": 7268.48, + "duration": 0.0, + "text": "didn't have that, what the debugger could<02:01:08.639> do<02:01:08.800> is<02:01:09.040> actually<02:01:09.199> just<02:01:09.440> hook<02:01:09.679> all<02:01:09.840> those" + }, + { + "start": 7269.99, + "duration": 0.0, + "text": "could do is actually just hook all those" + }, + { + "start": 7270.0, + "duration": 0.0, + "text": "could do is actually just hook all those APIs<02:01:10.560> and<02:01:10.800> build<02:01:11.040> it<02:01:11.199> up<02:01:11.360> for<02:01:11.520> itself.<02:01:11.920> So<02:01:12.000> if" + }, + { + "start": 7272.229, + "duration": 0.0, + "text": "APIs and build it up for itself. So if" + }, + { + "start": 7272.239, + "duration": 0.0, + "text": "APIs and build it up for itself. So if like<02:01:12.480> you<02:01:12.719> put<02:01:12.800> a<02:01:13.040> int3<02:01:14.000> in<02:01:14.239> virtual<02:01:14.560> alloc<02:01:15.280> for" + }, + { + "start": 7275.43, + "duration": 0.0, + "text": "like you put a int3 in virtual alloc for" + }, + { + "start": 7275.44, + "duration": 0.0, + "text": "like you put a int3 in virtual alloc for example<02:01:15.920> and<02:01:16.159> then<02:01:16.320> decode<02:01:16.719> the<02:01:16.960> arguments," + }, + { + "start": 7277.51, + "duration": 0.0, + "text": "example and then decode the arguments," + }, + { + "start": 7277.52, + "duration": 0.0, + "text": "example and then decode the arguments, you<02:01:17.679> could<02:01:17.760> start<02:01:17.920> actually<02:01:18.159> building<02:01:18.400> up" + }, + { + "start": 7278.55, + "duration": 0.0, + "text": "you could start actually building up" + }, + { + "start": 7278.56, + "duration": 0.0, + "text": "you could start actually building up like<02:01:18.800> oh<02:01:19.040> here's<02:01:19.360> who's<02:01:19.760> actually<02:01:20.000> reserved" + }, + { + "start": 7280.31, + "duration": 0.0, + "text": "like oh here's who's actually reserved" + }, + { + "start": 7280.32, + "duration": 0.0, + "text": "like oh here's who's actually reserved or<02:01:20.560> committed<02:01:20.880> what.<02:01:21.599> Um<02:01:22.560> that's<02:01:22.880> more" + }, + { + "start": 7283.109, + "duration": 0.0, + "text": "or committed what. Um that's more" + }, + { + "start": 7283.119, + "duration": 0.0, + "text": "or committed what. Um that's more complicated.<02:01:23.599> I'm<02:01:23.760> sure<02:01:23.920> there's<02:01:24.560> probably" + }, + { + "start": 7285.03, + "duration": 0.0, + "text": "complicated. I'm sure there's probably" + }, + { + "start": 7285.04, + "duration": 0.0, + "text": "complicated. I'm sure there's probably some<02:01:25.599> APIs<02:01:26.080> to<02:01:26.239> actually<02:01:26.400> just<02:01:26.560> visualize<02:01:26.880> it" + }, + { + "start": 7287.35, + "duration": 0.0, + "text": "some APIs to actually just visualize it" + }, + { + "start": 7287.36, + "duration": 0.0, + "text": "some APIs to actually just visualize it get<02:01:27.520> that<02:01:27.679> information<02:01:28.000> directly.<02:01:28.960> But<02:01:29.360> um" + }, + { + "start": 7290.149, + "duration": 0.0, + "text": "get that information directly. But um" + }, + { + "start": 7290.159, + "duration": 0.0, + "text": "get that information directly. But um but<02:01:30.320> yeah,<02:01:30.560> that's<02:01:30.800> that's<02:01:31.199> kind<02:01:31.440> of<02:01:31.520> the" + }, + { + "start": 7291.75, + "duration": 0.0, + "text": "but yeah, that's that's kind of the" + }, + { + "start": 7291.76, + "duration": 0.0, + "text": "but yeah, that's that's kind of the degree<02:01:32.000> of<02:01:32.159> my<02:01:32.320> understanding<02:01:32.639> about<02:01:32.800> it.<02:01:33.040> But" + }, + { + "start": 7293.189, + "duration": 0.0, + "text": "degree of my understanding about it. But" + }, + { + "start": 7293.199, + "duration": 0.0, + "text": "degree of my understanding about it. But yeah,<02:01:33.360> we<02:01:33.520> don't<02:01:33.679> we<02:01:33.840> don't<02:01:33.920> get<02:01:34.000> that<02:01:34.159> as<02:01:34.400> like" + }, + { + "start": 7294.47, + "duration": 0.0, + "text": "yeah, we don't we don't get that as like" + }, + { + "start": 7294.48, + "duration": 0.0, + "text": "yeah, we don't we don't get that as like a<02:01:34.639> mainline<02:01:35.119> thing<02:01:35.360> when<02:01:35.679> you<02:01:35.840> just<02:01:36.159> hook<02:01:36.400> on" + }, + { + "start": 7296.629, + "duration": 0.0, + "text": "a mainline thing when you just hook on" + }, + { + "start": 7296.639, + "duration": 0.0, + "text": "a mainline thing when you just hook on as<02:01:36.800> a<02:01:36.960> debugger.<02:01:37.520> But<02:01:38.080> um<02:01:38.480> but<02:01:38.719> yeah." + }, + { + "start": 7301.03, + "duration": 0.0, + "text": "as a debugger. But um but yeah." + }, + { + "start": 7301.04, + "duration": 0.0, + "text": "as a debugger. But um but yeah. >> Yep." + }, + { + "start": 7302.47, + "duration": 0.0, + "text": ">> Yep." + }, + { + "start": 7302.48, + "duration": 0.0, + "text": ">> Yep. >> All right.<02:01:42.880> Uh" + }, + { + "start": 7304.95, + "duration": 0.0, + "text": ">> All right. Uh" + }, + { + "start": 7304.96, + "duration": 0.0, + "text": ">> All right. Uh >> so<02:01:45.360> one<02:01:45.599> of<02:01:45.760> those<02:01:46.480> pain<02:01:46.960> frustration<02:01:47.440> points" + }, + { + "start": 7307.75, + "duration": 0.0, + "text": ">> so one of those pain frustration points" + }, + { + "start": 7307.76, + "duration": 0.0, + "text": ">> so one of those pain frustration points with<02:01:47.920> debuggers<02:01:48.560> and<02:01:48.719> and<02:01:49.119> specifically<02:01:49.599> like" + }, + { + "start": 7309.99, + "duration": 0.0, + "text": "with debuggers and and specifically like" + }, + { + "start": 7310.0, + "duration": 0.0, + "text": "with debuggers and and specifically like if<02:01:50.320> you're<02:01:50.480> talking<02:01:50.719> about<02:01:50.960> big<02:01:51.280> projects" + }, + { + "start": 7311.51, + "duration": 0.0, + "text": "if you're talking about big projects" + }, + { + "start": 7311.52, + "duration": 0.0, + "text": "if you're talking about big projects like<02:01:51.760> Unreal<02:01:52.159> and<02:01:52.400> it<02:01:52.560> kind<02:01:52.639> of<02:01:52.800> becomes<02:01:53.520> like" + }, + { + "start": 7313.91, + "duration": 0.0, + "text": "like Unreal and it kind of becomes like" + }, + { + "start": 7313.92, + "duration": 0.0, + "text": "like Unreal and it kind of becomes like logging" + }, + { + "start": 7315.109, + "duration": 0.0, + "text": "logging" + }, + { + "start": 7315.119, + "duration": 0.0, + "text": "logging >> is<02:01:55.440> that<02:01:55.599> you<02:01:55.840> run<02:01:56.000> across<02:01:56.320> that<02:01:56.560> issue<02:01:56.880> that" + }, + { + "start": 7317.27, + "duration": 0.0, + "text": ">> is that you run across that issue that" + }, + { + "start": 7317.28, + "duration": 0.0, + "text": ">> is that you run across that issue that your<02:01:57.599> engine<02:01:57.840> is<02:01:58.080> optimized.<02:01:58.639> So<02:01:58.719> you<02:01:58.880> don't" + }, + { + "start": 7319.03, + "duration": 0.0, + "text": "your engine is optimized. So you don't" + }, + { + "start": 7319.04, + "duration": 0.0, + "text": "your engine is optimized. So you don't have<02:01:59.280> information" + }, + { + "start": 7320.149, + "duration": 0.0, + "text": "have information" + }, + { + "start": 7320.159, + "duration": 0.0, + "text": "have information >> and<02:02:00.320> then<02:02:00.480> your<02:02:00.719> game<02:02:00.880> is<02:02:01.040> not<02:02:01.280> optimized<02:02:01.920> and" + }, + { + "start": 7322.47, + "duration": 0.0, + "text": ">> and then your game is not optimized and" + }, + { + "start": 7322.48, + "duration": 0.0, + "text": ">> and then your game is not optimized and something<02:02:02.719> happens<02:02:03.040> that<02:02:03.280> is<02:02:03.440> very<02:02:03.599> hard<02:02:03.760> to" + }, + { + "start": 7323.91, + "duration": 0.0, + "text": "something happens that is very hard to" + }, + { + "start": 7323.92, + "duration": 0.0, + "text": "something happens that is very hard to track<02:02:04.239> to<02:02:04.320> to<02:02:04.560> replicate<02:02:05.040> whatever<02:02:05.280> whatever" + }, + { + "start": 7325.83, + "duration": 0.0, + "text": "track to to replicate whatever whatever" + }, + { + "start": 7325.84, + "duration": 0.0, + "text": "track to to replicate whatever whatever then<02:02:06.000> you<02:02:06.159> get<02:02:06.239> to<02:02:06.400> that<02:02:06.560> point<02:02:06.639> that<02:02:06.800> you<02:02:06.960> need" + }, + { + "start": 7327.03, + "duration": 0.0, + "text": "then you get to that point that you need" + }, + { + "start": 7327.04, + "duration": 0.0, + "text": "then you get to that point that you need to<02:02:07.119> inspect<02:02:07.520> stuff<02:02:07.679> it's<02:02:07.840> like<02:02:08.080> oh<02:02:08.320> there's" + }, + { + "start": 7328.55, + "duration": 0.0, + "text": "to inspect stuff it's like oh there's" + }, + { + "start": 7328.56, + "duration": 0.0, + "text": "to inspect stuff it's like oh there's nothing<02:02:08.800> here" + }, + { + "start": 7329.51, + "duration": 0.0, + "text": "nothing here" + }, + { + "start": 7329.52, + "duration": 0.0, + "text": "nothing here >> oh<02:02:09.920> also<02:02:10.239> nothing<02:02:10.560> here<02:02:10.960> and<02:02:11.119> you<02:02:11.280> just<02:02:11.440> go<02:02:11.520> to" + }, + { + "start": 7331.669, + "duration": 0.0, + "text": ">> oh also nothing here and you just go to" + }, + { + "start": 7331.679, + "duration": 0.0, + "text": ">> oh also nothing here and you just go to a<02:02:11.840> point<02:02:11.920> it's<02:02:12.159> like<02:02:12.400> okay<02:02:13.040> now<02:02:13.199> I<02:02:13.360> have<02:02:13.520> to<02:02:13.679> go" + }, + { + "start": 7333.91, + "duration": 0.0, + "text": "a point it's like okay now I have to go" + }, + { + "start": 7333.92, + "duration": 0.0, + "text": "a point it's like okay now I have to go back<02:02:14.880> make<02:02:15.119> things<02:02:15.440> not<02:02:15.679> be<02:02:15.840> optimized<02:02:16.480> maybe" + }, + { + "start": 7336.629, + "duration": 0.0, + "text": "back make things not be optimized maybe" + }, + { + "start": 7336.639, + "duration": 0.0, + "text": "back make things not be optimized maybe in<02:02:16.800> this<02:02:16.960> file<02:02:17.199> or<02:02:17.360> this<02:02:17.520> mod<02:02:17.760> or<02:02:17.920> whatever" + }, + { + "start": 7338.47, + "duration": 0.0, + "text": "in this file or this mod or whatever" + }, + { + "start": 7338.48, + "duration": 0.0, + "text": "in this file or this mod or whatever >> and<02:02:18.639> I<02:02:18.800> think<02:02:18.960> there's<02:02:19.199> something<02:02:19.920> some" + }, + { + "start": 7340.229, + "duration": 0.0, + "text": ">> and I think there's something some" + }, + { + "start": 7340.239, + "duration": 0.0, + "text": ">> and I think there's something some project<02:02:20.560> or<02:02:20.639> something<02:02:20.880> from<02:02:21.119> Microsoft<02:02:21.599> or" + }, + { + "start": 7341.75, + "duration": 0.0, + "text": "project or something from Microsoft or" + }, + { + "start": 7341.76, + "duration": 0.0, + "text": "project or something from Microsoft or something<02:02:22.080> recently<02:02:22.719> where<02:02:22.960> they<02:02:23.119> kind<02:02:23.280> of" + }, + { + "start": 7343.35, + "duration": 0.0, + "text": "something recently where they kind of" + }, + { + "start": 7343.36, + "duration": 0.0, + "text": "something recently where they kind of grab<02:02:23.679> the<02:02:23.920> two<02:02:24.159> builds<02:02:24.560> and<02:02:24.800> then<02:02:24.960> you<02:02:25.199> can" + }, + { + "start": 7345.35, + "duration": 0.0, + "text": "grab the two builds and then you can" + }, + { + "start": 7345.36, + "duration": 0.0, + "text": "grab the two builds and then you can kind<02:02:25.599> of" + }, + { + "start": 7346.39, + "duration": 0.0, + "text": "kind of" + }, + { + "start": 7346.4, + "duration": 0.0, + "text": "kind of >> okay<02:02:26.800> try<02:02:26.960> to<02:02:27.119> get<02:02:27.199> the<02:02:27.440> information<02:02:27.840> from<02:02:28.080> the" + }, + { + "start": 7348.229, + "duration": 0.0, + "text": ">> okay try to get the information from the" + }, + { + "start": 7348.239, + "duration": 0.0, + "text": ">> okay try to get the information from the other<02:02:28.320> one<02:02:28.800> are<02:02:28.960> you<02:02:29.199> planning<02:02:29.440> on<02:02:29.679> doing" + }, + { + "start": 7349.91, + "duration": 0.0, + "text": "other one are you planning on doing" + }, + { + "start": 7349.92, + "duration": 0.0, + "text": "other one are you planning on doing something<02:02:30.159> like<02:02:30.400> this<02:02:30.639> or" + }, + { + "start": 7351.669, + "duration": 0.0, + "text": "something like this or" + }, + { + "start": 7351.679, + "duration": 0.0, + "text": "something like this or >> yeah<02:02:32.080> So<02:02:32.480> that<02:02:32.960> feature<02:02:33.280> in<02:02:33.520> particular," + }, + { + "start": 7353.91, + "duration": 0.0, + "text": ">> yeah So that feature in particular," + }, + { + "start": 7353.92, + "duration": 0.0, + "text": ">> yeah So that feature in particular, there's<02:02:34.080> a<02:02:34.159> lot<02:02:34.239> of<02:02:34.400> ways<02:02:34.480> that<02:02:34.639> you<02:02:34.800> can" + }, + { + "start": 7354.87, + "duration": 0.0, + "text": "there's a lot of ways that you can" + }, + { + "start": 7354.88, + "duration": 0.0, + "text": "there's a lot of ways that you can approach<02:02:35.119> that<02:02:35.360> problem.<02:02:36.320> Um,<02:02:36.880> one<02:02:37.119> is<02:02:37.280> with" + }, + { + "start": 7357.43, + "duration": 0.0, + "text": "approach that problem. Um, one is with" + }, + { + "start": 7357.44, + "duration": 0.0, + "text": "approach that problem. Um, one is with like<02:02:37.679> hot<02:02:37.920> reloading<02:02:38.320> for<02:02:38.400> example,<02:02:38.800> like<02:02:38.960> if" + }, + { + "start": 7359.109, + "duration": 0.0, + "text": "like hot reloading for example, like if" + }, + { + "start": 7359.119, + "duration": 0.0, + "text": "like hot reloading for example, like if you<02:02:39.199> want<02:02:39.360> to<02:02:39.599> not<02:02:39.840> actually<02:02:40.080> have<02:02:40.239> to" + }, + { + "start": 7360.55, + "duration": 0.0, + "text": "you want to not actually have to" + }, + { + "start": 7360.56, + "duration": 0.0, + "text": "you want to not actually have to recreate<02:02:40.960> the<02:02:41.119> state<02:02:41.360> for<02:02:41.440> example,<02:02:41.840> but<02:02:42.639> um," + }, + { + "start": 7362.79, + "duration": 0.0, + "text": "recreate the state for example, but um," + }, + { + "start": 7362.8, + "duration": 0.0, + "text": "recreate the state for example, but um, but<02:02:42.960> yeah,<02:02:43.199> that<02:02:43.440> particular" + }, + { + "start": 7365.189, + "duration": 0.0, + "text": "but yeah, that particular" + }, + { + "start": 7365.199, + "duration": 0.0, + "text": "but yeah, that particular uh,<02:02:45.440> Microsoft<02:02:45.920> feature<02:02:47.280> um,<02:02:48.000> to<02:02:48.320> my" + }, + { + "start": 7368.47, + "duration": 0.0, + "text": "uh, Microsoft feature um, to my" + }, + { + "start": 7368.48, + "duration": 0.0, + "text": "uh, Microsoft feature um, to my understanding,<02:02:48.880> I<02:02:49.040> haven't<02:02:49.199> actually" + }, + { + "start": 7369.35, + "duration": 0.0, + "text": "understanding, I haven't actually" + }, + { + "start": 7369.36, + "duration": 0.0, + "text": "understanding, I haven't actually dissected<02:02:49.840> it<02:02:50.000> fully,<02:02:50.239> but<02:02:50.480> my<02:02:50.639> understanding" + }, + { + "start": 7370.95, + "duration": 0.0, + "text": "dissected it fully, but my understanding" + }, + { + "start": 7370.96, + "duration": 0.0, + "text": "dissected it fully, but my understanding is<02:02:51.119> basically<02:02:51.360> like<02:02:51.599> yeah,<02:02:51.760> they<02:02:51.920> do<02:02:52.000> the" + }, + { + "start": 7372.149, + "duration": 0.0, + "text": "is basically like yeah, they do the" + }, + { + "start": 7372.159, + "duration": 0.0, + "text": "is basically like yeah, they do the build<02:02:52.320> twice.<02:02:53.199> They<02:02:53.440> take<02:02:53.599> the<02:02:53.920> unoptimized" + }, + { + "start": 7374.47, + "duration": 0.0, + "text": "build twice. They take the unoptimized" + }, + { + "start": 7374.48, + "duration": 0.0, + "text": "build twice. They take the unoptimized version<02:02:54.719> and<02:02:54.800> the<02:02:54.960> optimized<02:02:55.440> version." + }, + { + "start": 7375.91, + "duration": 0.0, + "text": "version and the optimized version." + }, + { + "start": 7375.92, + "duration": 0.0, + "text": "version and the optimized version. They're<02:02:56.159> the<02:02:56.400> same<02:02:56.480> binary<02:02:57.360> and<02:02:57.599> there's<02:02:57.920> some" + }, + { + "start": 7378.149, + "duration": 0.0, + "text": "They're the same binary and there's some" + }, + { + "start": 7378.159, + "duration": 0.0, + "text": "They're the same binary and there's some mechanism<02:02:58.639> by<02:02:58.880> which<02:02:59.040> the<02:02:59.199> debugger<02:02:59.679> can" + }, + { + "start": 7380.229, + "duration": 0.0, + "text": "mechanism by which the debugger can" + }, + { + "start": 7380.239, + "duration": 0.0, + "text": "mechanism by which the debugger can programmatically<02:03:00.960> control<02:03:01.360> which<02:03:01.599> is<02:03:01.840> which" + }, + { + "start": 7382.149, + "duration": 0.0, + "text": "programmatically control which is which" + }, + { + "start": 7382.159, + "duration": 0.0, + "text": "programmatically control which is which for<02:03:02.400> any<02:03:02.880> I<02:03:03.119> assume<02:03:03.440> symbol.<02:03:04.080> Uh<02:03:04.320> so<02:03:04.400> I'm<02:03:04.560> not" + }, + { + "start": 7384.629, + "duration": 0.0, + "text": "for any I assume symbol. Uh so I'm not" + }, + { + "start": 7384.639, + "duration": 0.0, + "text": "for any I assume symbol. Uh so I'm not 100%<02:03:05.040> sure<02:03:05.440> on<02:03:06.159> how<02:03:06.400> it's<02:03:06.719> exactly<02:03:07.119> it's" + }, + { + "start": 7387.27, + "duration": 0.0, + "text": "100% sure on how it's exactly it's" + }, + { + "start": 7387.28, + "duration": 0.0, + "text": "100% sure on how it's exactly it's sliced,<02:03:07.599> but<02:03:07.760> that's<02:03:07.920> kind<02:03:08.000> of<02:03:08.080> how<02:03:08.239> it<02:03:08.400> works." + }, + { + "start": 7389.109, + "duration": 0.0, + "text": "sliced, but that's kind of how it works." + }, + { + "start": 7389.119, + "duration": 0.0, + "text": "sliced, but that's kind of how it works. Now<02:03:09.280> the<02:03:09.599> utility<02:03:09.840> of<02:03:09.920> that's<02:03:10.239> questionable" + }, + { + "start": 7390.629, + "duration": 0.0, + "text": "Now the utility of that's questionable" + }, + { + "start": 7390.639, + "duration": 0.0, + "text": "Now the utility of that's questionable because<02:03:10.800> it's<02:03:11.040> like<02:03:11.119> you're<02:03:11.360> building<02:03:11.520> the" + }, + { + "start": 7391.669, + "duration": 0.0, + "text": "because it's like you're building the" + }, + { + "start": 7391.679, + "duration": 0.0, + "text": "because it's like you're building the thing<02:03:11.920> twice<02:03:12.239> and<02:03:12.400> the<02:03:12.560> binaries<02:03:12.960> are<02:03:13.119> twice" + }, + { + "start": 7393.27, + "duration": 0.0, + "text": "thing twice and the binaries are twice" + }, + { + "start": 7393.28, + "duration": 0.0, + "text": "thing twice and the binaries are twice as<02:03:13.440> big<02:03:13.679> and<02:03:13.920> in<02:03:14.159> many<02:03:14.320> cases<02:03:14.560> the<02:03:14.719> binaries" + }, + { + "start": 7395.109, + "duration": 0.0, + "text": "as big and in many cases the binaries" + }, + { + "start": 7395.119, + "duration": 0.0, + "text": "as big and in many cases the binaries are<02:03:15.280> close<02:03:15.440> to<02:03:15.679> binary<02:03:16.080> size<02:03:16.320> limits<02:03:16.639> anyways." + }, + { + "start": 7397.109, + "duration": 0.0, + "text": "are close to binary size limits anyways." + }, + { + "start": 7397.119, + "duration": 0.0, + "text": "are close to binary size limits anyways. So<02:03:17.280> I'm<02:03:17.440> not<02:03:17.599> actually<02:03:17.760> sure<02:03:18.080> like<02:03:19.280> you<02:03:19.520> know<02:03:20.320> I" + }, + { + "start": 7400.47, + "duration": 0.0, + "text": "So I'm not actually sure like you know I" + }, + { + "start": 7400.48, + "duration": 0.0, + "text": "So I'm not actually sure like you know I mean<02:03:20.639> if<02:03:20.880> it<02:03:21.040> works<02:03:21.280> that's<02:03:21.520> great<02:03:21.920> obviously." + }, + { + "start": 7402.709, + "duration": 0.0, + "text": "mean if it works that's great obviously." + }, + { + "start": 7402.719, + "duration": 0.0, + "text": "mean if it works that's great obviously. Um" + }, + { + "start": 7404.229, + "duration": 0.0, + "text": "Um" + }, + { + "start": 7404.239, + "duration": 0.0, + "text": "Um but<02:03:24.400> yeah,<02:03:24.639> if<02:03:24.960> that<02:03:25.280> feature<02:03:25.599> would<02:03:25.840> not<02:03:26.000> be" + }, + { + "start": 7406.07, + "duration": 0.0, + "text": "but yeah, if that feature would not be" + }, + { + "start": 7406.08, + "duration": 0.0, + "text": "but yeah, if that feature would not be hard<02:03:26.239> to<02:03:26.400> support<02:03:26.560> for<02:03:26.719> the<02:03:26.800> debugger<02:03:27.199> because" + }, + { + "start": 7407.43, + "duration": 0.0, + "text": "hard to support for the debugger because" + }, + { + "start": 7407.44, + "duration": 0.0, + "text": "hard to support for the debugger because basically<02:03:28.719> um<02:03:29.360> what<02:03:29.599> you<02:03:29.760> need<02:03:29.920> to<02:03:30.000> do<02:03:30.159> is<02:03:30.320> just" + }, + { + "start": 7410.55, + "duration": 0.0, + "text": "basically um what you need to do is just" + }, + { + "start": 7410.56, + "duration": 0.0, + "text": "basically um what you need to do is just have<02:03:30.639> the<02:03:30.800> debugger<02:03:32.159> whatever<02:03:32.560> state<02:03:32.800> it" + }, + { + "start": 7413.03, + "duration": 0.0, + "text": "have the debugger whatever state it" + }, + { + "start": 7413.04, + "duration": 0.0, + "text": "have the debugger whatever state it needs<02:03:33.280> to<02:03:33.440> change<02:03:33.760> to<02:03:34.080> switch<02:03:34.480> from<02:03:34.800> optimized" + }, + { + "start": 7415.27, + "duration": 0.0, + "text": "needs to change to switch from optimized" + }, + { + "start": 7415.28, + "duration": 0.0, + "text": "needs to change to switch from optimized unoptimized.<02:03:36.159> It's<02:03:36.400> all<02:03:36.480> in<02:03:36.639> the<02:03:36.719> binary." + }, + { + "start": 7417.03, + "duration": 0.0, + "text": "unoptimized. It's all in the binary." + }, + { + "start": 7417.04, + "duration": 0.0, + "text": "unoptimized. It's all in the binary. It's<02:03:37.199> all<02:03:37.280> code<02:03:37.440> the<02:03:37.599> debugger<02:03:37.920> can<02:03:38.080> refer<02:03:38.320> to." + }, + { + "start": 7418.47, + "duration": 0.0, + "text": "It's all code the debugger can refer to." + }, + { + "start": 7418.48, + "duration": 0.0, + "text": "It's all code the debugger can refer to. So<02:03:38.639> all<02:03:38.719> it<02:03:38.880> has<02:03:38.960> to<02:03:39.119> do<02:03:39.199> is<02:03:39.360> change<02:03:39.599> that" + }, + { + "start": 7419.83, + "duration": 0.0, + "text": "So all it has to do is change that" + }, + { + "start": 7419.84, + "duration": 0.0, + "text": "So all it has to do is change that state.<02:03:40.719> And<02:03:41.360> you<02:03:41.520> know<02:03:41.679> it's<02:03:42.000> it<02:03:42.239> seems<02:03:42.400> like" + }, + { + "start": 7422.47, + "duration": 0.0, + "text": "state. And you know it's it seems like" + }, + { + "start": 7422.48, + "duration": 0.0, + "text": "state. And you know it's it seems like it'd<02:03:42.719> be<02:03:42.800> a<02:03:42.960> pretty<02:03:43.119> minor<02:03:43.440> reverse" + }, + { + "start": 7423.75, + "duration": 0.0, + "text": "it'd be a pretty minor reverse" + }, + { + "start": 7423.76, + "duration": 0.0, + "text": "it'd be a pretty minor reverse engineering<02:03:44.239> task<02:03:44.480> to<02:03:44.719> actually<02:03:44.960> find<02:03:45.119> out" + }, + { + "start": 7425.35, + "duration": 0.0, + "text": "engineering task to actually find out" + }, + { + "start": 7425.36, + "duration": 0.0, + "text": "engineering task to actually find out what<02:03:45.760> you<02:03:46.000> need<02:03:46.080> to<02:03:46.239> do<02:03:46.320> for<02:03:46.480> that<02:03:46.639> if<02:03:46.880> nobody" + }, + { + "start": 7427.35, + "duration": 0.0, + "text": "what you need to do for that if nobody" + }, + { + "start": 7427.36, + "duration": 0.0, + "text": "what you need to do for that if nobody if<02:03:47.679> if<02:03:47.920> they<02:03:48.080> tell<02:03:48.239> you<02:03:48.480> nothing,<02:03:48.800> which<02:03:49.040> they" + }, + { + "start": 7429.189, + "duration": 0.0, + "text": "if if they tell you nothing, which they" + }, + { + "start": 7429.199, + "duration": 0.0, + "text": "if if they tell you nothing, which they might<02:03:49.360> tell<02:03:49.440> you<02:03:49.599> more<02:03:49.760> than<02:03:49.840> that.<02:03:50.320> So,<02:03:51.199> um," + }, + { + "start": 7431.99, + "duration": 0.0, + "text": "might tell you more than that. So, um," + }, + { + "start": 7432.0, + "duration": 0.0, + "text": "might tell you more than that. So, um, so<02:03:52.239> yeah,<02:03:52.480> hopefully<02:03:53.679> that<02:03:54.000> answers<02:03:54.400> the" + }, + { + "start": 7434.55, + "duration": 0.0, + "text": "so yeah, hopefully that answers the" + }, + { + "start": 7434.56, + "duration": 0.0, + "text": "so yeah, hopefully that answers the question." + }, + { + "start": 7436.229, + "duration": 0.0, + "text": "question." + }, + { + "start": 7436.239, + "duration": 0.0, + "text": "question. >> Yeah." + }, + { + "start": 7437.51, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7437.52, + "duration": 0.0, + "text": ">> Yeah. So,<02:03:57.920> I<02:03:58.239> think<02:03:58.400> this<02:03:58.560> is<02:03:58.719> also<02:03:59.040> kind<02:03:59.199> of<02:03:59.280> what" + }, + { + "start": 7439.43, + "duration": 0.0, + "text": "So, I think this is also kind of what" + }, + { + "start": 7439.44, + "duration": 0.0, + "text": "So, I think this is also kind of what you're<02:03:59.679> planning<02:03:59.920> with<02:04:00.239> workbench<02:04:00.960> back<02:04:01.360> in" + }, + { + "start": 7441.589, + "duration": 0.0, + "text": "you're planning with workbench back in" + }, + { + "start": 7441.599, + "duration": 0.0, + "text": "you're planning with workbench back in the<02:04:01.760> background,<02:04:02.400> but<02:04:02.960> um<02:04:03.599> now<02:04:03.760> that<02:04:03.920> you're" + }, + { + "start": 7444.149, + "duration": 0.0, + "text": "the background, but um now that you're" + }, + { + "start": 7444.159, + "duration": 0.0, + "text": "the background, but um now that you're blurring<02:04:04.560> the<02:04:04.800> lines<02:04:05.199> between<02:04:05.760> like<02:04:06.080> the" + }, + { + "start": 7446.629, + "duration": 0.0, + "text": "blurring the lines between like the" + }, + { + "start": 7446.639, + "duration": 0.0, + "text": "blurring the lines between like the debuggy<02:04:07.760> inspection<02:04:08.400> and<02:04:08.719> inspecting<02:04:09.440> files," + }, + { + "start": 7451.35, + "duration": 0.0, + "text": "debuggy inspection and inspecting files," + }, + { + "start": 7451.36, + "duration": 0.0, + "text": "debuggy inspection and inspecting files, to<02:04:11.599> what<02:04:11.840> degree<02:04:12.560> are<02:04:12.800> you<02:04:13.040> planning<02:04:13.360> to<02:04:13.599> kind" + }, + { + "start": 7453.75, + "duration": 0.0, + "text": "to what degree are you planning to kind" + }, + { + "start": 7453.76, + "duration": 0.0, + "text": "to what degree are you planning to kind of<02:04:14.560> I<02:04:15.199> might<02:04:15.599> open<02:04:15.840> up<02:04:16.000> a<02:04:16.159> hex<02:04:16.480> editor<02:04:16.800> to<02:04:17.040> look" + }, + { + "start": 7457.109, + "duration": 0.0, + "text": "of I might open up a hex editor to look" + }, + { + "start": 7457.119, + "duration": 0.0, + "text": "of I might open up a hex editor to look at<02:04:17.360> the<02:04:17.520> file,<02:04:18.000> but<02:04:18.320> if<02:04:19.119> rap<02:04:19.440> DBG<02:04:19.920> is<02:04:20.080> like<02:04:20.239> a" + }, + { + "start": 7460.39, + "duration": 0.0, + "text": "at the file, but if rap DBG is like a" + }, + { + "start": 7460.4, + "duration": 0.0, + "text": "at the file, but if rap DBG is like a really<02:04:20.639> awesome<02:04:20.960> hex<02:04:21.360> editor<02:04:21.760> and<02:04:21.920> I<02:04:22.080> can<02:04:22.239> just" + }, + { + "start": 7462.39, + "duration": 0.0, + "text": "really awesome hex editor and I can just" + }, + { + "start": 7462.4, + "duration": 0.0, + "text": "really awesome hex editor and I can just drag<02:04:22.719> a<02:04:22.880> file<02:04:23.199> into<02:04:23.440> it,<02:04:23.679> right?" + }, + { + "start": 7463.91, + "duration": 0.0, + "text": "drag a file into it, right?" + }, + { + "start": 7463.92, + "duration": 0.0, + "text": "drag a file into it, right? >> Yep." + }, + { + "start": 7464.709, + "duration": 0.0, + "text": ">> Yep." + }, + { + "start": 7464.719, + "duration": 0.0, + "text": ">> Yep. >> You<02:04:24.880> already<02:04:25.199> can.<02:04:25.520> Yeah." + }, + { + "start": 7465.83, + "duration": 0.0, + "text": ">> You already can. Yeah." + }, + { + "start": 7465.84, + "duration": 0.0, + "text": ">> You already can. Yeah. >> Yeah.<02:04:26.000> Exactly.<02:04:26.800> So<02:04:27.119> I<02:04:27.440> think<02:04:27.679> about<02:04:27.840> that<02:04:28.000> and" + }, + { + "start": 7468.229, + "duration": 0.0, + "text": ">> Yeah. Exactly. So I think about that and" + }, + { + "start": 7468.239, + "duration": 0.0, + "text": ">> Yeah. Exactly. So I think about that and then<02:04:28.560> a<02:04:28.719> lot<02:04:28.880> of<02:04:28.960> people<02:04:29.119> obviously<02:04:29.599> ask" + }, + { + "start": 7470.709, + "duration": 0.0, + "text": "then a lot of people obviously ask" + }, + { + "start": 7470.719, + "duration": 0.0, + "text": "then a lot of people obviously ask >> okay<02:04:31.040> this<02:04:31.280> is<02:04:31.440> awesome<02:04:31.840> but<02:04:32.480> could<02:04:32.719> I<02:04:32.960> edit<02:04:33.360> my" + }, + { + "start": 7473.589, + "duration": 0.0, + "text": ">> okay this is awesome but could I edit my" + }, + { + "start": 7473.599, + "duration": 0.0, + "text": ">> okay this is awesome but could I edit my text<02:04:34.239> rap<02:04:35.360> you<02:04:35.520> know<02:04:36.080> do<02:04:36.239> you<02:04:36.560> have<02:04:36.800> plans<02:04:37.199> to" + }, + { + "start": 7477.589, + "duration": 0.0, + "text": "text rap you know do you have plans to" + }, + { + "start": 7477.599, + "duration": 0.0, + "text": "text rap you know do you have plans to kind<02:04:37.760> of<02:04:37.920> go<02:04:38.239> down<02:04:38.639> that<02:04:38.960> road<02:04:39.280> more<02:04:39.599> with<02:04:39.920> rapg" + }, + { + "start": 7480.95, + "duration": 0.0, + "text": "kind of go down that road more with rapg" + }, + { + "start": 7480.96, + "duration": 0.0, + "text": "kind of go down that road more with rapg or<02:04:41.360> is<02:04:41.440> that<02:04:41.679> more<02:04:41.840> of<02:04:42.000> a<02:04:42.320> long-term<02:04:43.520> different" + }, + { + "start": 7483.91, + "duration": 0.0, + "text": "or is that more of a long-term different" + }, + { + "start": 7483.92, + "duration": 0.0, + "text": "or is that more of a long-term different project?<02:04:44.880> Yeah,<02:04:45.119> I<02:04:45.360> think<02:04:45.599> so.<02:04:46.159> Um," + }, + { + "start": 7488.229, + "duration": 0.0, + "text": "project? Yeah, I think so. Um," + }, + { + "start": 7488.239, + "duration": 0.0, + "text": "project? Yeah, I think so. Um, obviously<02:04:48.639> there<02:04:48.880> are<02:04:49.199> higher<02:04:49.599> priorities" + }, + { + "start": 7489.99, + "duration": 0.0, + "text": "obviously there are higher priorities" + }, + { + "start": 7490.0, + "duration": 0.0, + "text": "obviously there are higher priorities than<02:04:50.239> making<02:04:50.400> it<02:04:50.560> a<02:04:50.719> text<02:04:50.880> editor,<02:04:51.280> but<02:04:51.440> I" + }, + { + "start": 7491.589, + "duration": 0.0, + "text": "than making it a text editor, but I" + }, + { + "start": 7491.599, + "duration": 0.0, + "text": "than making it a text editor, but I think<02:04:51.760> like<02:04:52.080> it's<02:04:52.400> definitely<02:04:52.960> clear<02:04:53.520> that" + }, + { + "start": 7493.99, + "duration": 0.0, + "text": "think like it's definitely clear that" + }, + { + "start": 7494.0, + "duration": 0.0, + "text": "think like it's definitely clear that you<02:04:54.320> want<02:04:54.480> the<02:04:54.719> ability<02:04:54.960> to<02:04:55.119> mutate<02:04:55.679> data<02:04:56.239> as" + }, + { + "start": 7496.47, + "duration": 0.0, + "text": "you want the ability to mutate data as" + }, + { + "start": 7496.48, + "duration": 0.0, + "text": "you want the ability to mutate data as well.<02:04:56.960> So<02:04:57.119> it's<02:04:57.360> not<02:04:57.440> just<02:04:57.679> about<02:04:57.920> viewing." + }, + { + "start": 7498.39, + "duration": 0.0, + "text": "well. So it's not just about viewing." + }, + { + "start": 7498.4, + "duration": 0.0, + "text": "well. So it's not just about viewing. Like<02:04:58.560> the<02:04:58.719> visualizers<02:04:59.199> aren't<02:04:59.360> just<02:04:59.520> for" + }, + { + "start": 7499.669, + "duration": 0.0, + "text": "Like the visualizers aren't just for" + }, + { + "start": 7499.679, + "duration": 0.0, + "text": "Like the visualizers aren't just for viewing,<02:04:59.920> they're<02:05:00.159> for<02:05:00.320> writing.<02:05:01.199> Um,<02:05:01.520> so<02:05:01.840> hex" + }, + { + "start": 7502.07, + "duration": 0.0, + "text": "viewing, they're for writing. Um, so hex" + }, + { + "start": 7502.08, + "duration": 0.0, + "text": "viewing, they're for writing. Um, so hex editor's<02:05:02.719> good<02:05:02.960> example<02:05:03.360> like<02:05:03.920> when<02:05:04.080> you're" + }, + { + "start": 7504.31, + "duration": 0.0, + "text": "editor's good example like when you're" + }, + { + "start": 7504.32, + "duration": 0.0, + "text": "editor's good example like when you're viewing<02:05:04.639> the<02:05:04.800> grid<02:05:04.960> of<02:05:05.040> bytes,<02:05:05.360> it<02:05:05.520> sucks<02:05:05.760> if" + }, + { + "start": 7505.91, + "duration": 0.0, + "text": "viewing the grid of bytes, it sucks if" + }, + { + "start": 7505.92, + "duration": 0.0, + "text": "viewing the grid of bytes, it sucks if you<02:05:06.000> can't<02:05:06.159> actually<02:05:06.480> like<02:05:06.800> in<02:05:06.960> the<02:05:07.040> RAD" + }, + { + "start": 7507.27, + "duration": 0.0, + "text": "you can't actually like in the RAD" + }, + { + "start": 7507.28, + "duration": 0.0, + "text": "you can't actually like in the RAD debugger,<02:05:07.679> you<02:05:07.840> can't<02:05:08.000> currently<02:05:08.320> mutate<02:05:08.639> the" + }, + { + "start": 7508.79, + "duration": 0.0, + "text": "debugger, you can't currently mutate the" + }, + { + "start": 7508.8, + "duration": 0.0, + "text": "debugger, you can't currently mutate the bytes,<02:05:09.040> but<02:05:09.199> you<02:05:09.360> really<02:05:09.520> want<02:05:09.679> to.<02:05:10.080> And<02:05:10.320> so<02:05:10.880> um" + }, + { + "start": 7511.109, + "duration": 0.0, + "text": "bytes, but you really want to. And so um" + }, + { + "start": 7511.119, + "duration": 0.0, + "text": "bytes, but you really want to. And so um similarly<02:05:11.520> with<02:05:11.679> images<02:05:12.080> like<02:05:12.239> if<02:05:12.400> you<02:05:12.560> can" + }, + { + "start": 7512.629, + "duration": 0.0, + "text": "similarly with images like if you can" + }, + { + "start": 7512.639, + "duration": 0.0, + "text": "similarly with images like if you can like<02:05:12.880> change<02:05:13.119> the<02:05:13.280> values<02:05:13.760> in<02:05:13.920> the<02:05:14.000> watch" + }, + { + "start": 7514.149, + "duration": 0.0, + "text": "like change the values in the watch" + }, + { + "start": 7514.159, + "duration": 0.0, + "text": "like change the values in the watch window<02:05:14.400> is<02:05:14.560> the<02:05:14.639> same<02:05:14.800> thing.<02:05:14.960> You<02:05:15.119> can<02:05:15.199> edit" + }, + { + "start": 7515.43, + "duration": 0.0, + "text": "window is the same thing. You can edit" + }, + { + "start": 7515.44, + "duration": 0.0, + "text": "window is the same thing. You can edit values.<02:05:16.480> So<02:05:16.719> I<02:05:16.880> think<02:05:16.960> that<02:05:17.119> should<02:05:17.280> all<02:05:17.440> be" + }, + { + "start": 7517.589, + "duration": 0.0, + "text": "values. So I think that should all be" + }, + { + "start": 7517.599, + "duration": 0.0, + "text": "values. So I think that should all be possible.<02:05:17.920> So<02:05:18.080> the<02:05:18.239> text<02:05:18.480> viewer<02:05:18.880> really" + }, + { + "start": 7519.03, + "duration": 0.0, + "text": "possible. So the text viewer really" + }, + { + "start": 7519.04, + "duration": 0.0, + "text": "possible. So the text viewer really should<02:05:19.199> become<02:05:19.440> the<02:05:19.599> text<02:05:19.760> editor<02:05:20.800> um<02:05:21.199> at<02:05:21.440> the" + }, + { + "start": 7521.589, + "duration": 0.0, + "text": "should become the text editor um at the" + }, + { + "start": 7521.599, + "duration": 0.0, + "text": "should become the text editor um at the limit.<02:05:22.000> I<02:05:22.239> think<02:05:23.280> um<02:05:23.599> I'm<02:05:23.920> not<02:05:24.080> going<02:05:24.239> to" + }, + { + "start": 7524.629, + "duration": 0.0, + "text": "limit. I think um I'm not going to" + }, + { + "start": 7524.639, + "duration": 0.0, + "text": "limit. I think um I'm not going to prioritize<02:05:25.119> it<02:05:25.280> because<02:05:25.440> there's<02:05:25.599> a<02:05:25.760> lot<02:05:25.840> of" + }, + { + "start": 7525.91, + "duration": 0.0, + "text": "prioritize it because there's a lot of" + }, + { + "start": 7525.92, + "duration": 0.0, + "text": "prioritize it because there's a lot of other<02:05:26.080> things<02:05:26.320> to<02:05:26.560> happen<02:05:26.800> first.<02:05:27.280> But<02:05:27.440> I" + }, + { + "start": 7527.589, + "duration": 0.0, + "text": "other things to happen first. But I" + }, + { + "start": 7527.599, + "duration": 0.0, + "text": "other things to happen first. But I think<02:05:27.679> like<02:05:27.920> yeah,<02:05:28.159> it's<02:05:28.320> some<02:05:28.560> it's<02:05:29.119> I<02:05:29.360> think" + }, + { + "start": 7529.51, + "duration": 0.0, + "text": "think like yeah, it's some it's I think" + }, + { + "start": 7529.52, + "duration": 0.0, + "text": "think like yeah, it's some it's I think someday<02:05:29.840> that'll<02:05:30.159> fall<02:05:30.320> in<02:05:30.480> there<02:05:30.719> even<02:05:30.960> if" + }, + { + "start": 7531.189, + "duration": 0.0, + "text": "someday that'll fall in there even if" + }, + { + "start": 7531.199, + "duration": 0.0, + "text": "someday that'll fall in there even if like<02:05:31.679> you<02:05:31.840> know<02:05:32.000> a<02:05:32.159> lot<02:05:32.239> of<02:05:33.040> there's<02:05:33.280> a<02:05:33.360> lot<02:05:33.440> of" + }, + { + "start": 7533.51, + "duration": 0.0, + "text": "like you know a lot of there's a lot of" + }, + { + "start": 7533.52, + "duration": 0.0, + "text": "like you know a lot of there's a lot of good<02:05:33.679> arguments<02:05:34.000> against<02:05:34.400> having<02:05:34.800> a<02:05:35.040> text" + }, + { + "start": 7535.189, + "duration": 0.0, + "text": "good arguments against having a text" + }, + { + "start": 7535.199, + "duration": 0.0, + "text": "good arguments against having a text editor<02:05:36.080> like<02:05:36.320> as<02:05:36.480> a<02:05:36.639> mainline<02:05:37.040> thing<02:05:37.199> that's" + }, + { + "start": 7537.43, + "duration": 0.0, + "text": "editor like as a mainline thing that's" + }, + { + "start": 7537.44, + "duration": 0.0, + "text": "editor like as a mainline thing that's always<02:05:37.679> on<02:05:37.920> in<02:05:38.080> a<02:05:38.239> debugger.<02:05:38.719> But<02:05:38.880> it<02:05:39.040> so<02:05:39.280> maybe" + }, + { + "start": 7539.43, + "duration": 0.0, + "text": "always on in a debugger. But it so maybe" + }, + { + "start": 7539.44, + "duration": 0.0, + "text": "always on in a debugger. But it so maybe it's<02:05:39.760> you<02:05:39.920> know<02:05:40.560> maybe<02:05:40.719> there's<02:05:40.960> still<02:05:41.040> a<02:05:41.199> mode" + }, + { + "start": 7541.43, + "duration": 0.0, + "text": "it's you know maybe there's still a mode" + }, + { + "start": 7541.44, + "duration": 0.0, + "text": "it's you know maybe there's still a mode switch<02:05:41.679> where<02:05:42.000> all<02:05:42.159> your<02:05:42.320> text<02:05:42.639> becomes<02:05:43.119> read" + }, + { + "start": 7543.43, + "duration": 0.0, + "text": "switch where all your text becomes read" + }, + { + "start": 7543.44, + "duration": 0.0, + "text": "switch where all your text becomes read only<02:05:43.760> when<02:05:44.080> you're<02:05:44.239> not<02:05:44.480> editing<02:05:44.880> it<02:05:45.119> or<02:05:45.280> or" + }, + { + "start": 7545.589, + "duration": 0.0, + "text": "only when you're not editing it or or" + }, + { + "start": 7545.599, + "duration": 0.0, + "text": "only when you're not editing it or or when<02:05:45.760> you're<02:05:45.920> debugging<02:05:46.320> it<02:05:46.480> rather.<02:05:46.880> Uh<02:05:47.119> so" + }, + { + "start": 7547.27, + "duration": 0.0, + "text": "when you're debugging it rather. Uh so" + }, + { + "start": 7547.28, + "duration": 0.0, + "text": "when you're debugging it rather. Uh so you<02:05:47.440> don't<02:05:47.520> like<02:05:47.840> add<02:05:48.080> a<02:05:48.239> new<02:05:48.400> line<02:05:48.480> and<02:05:48.719> all" + }, + { + "start": 7548.79, + "duration": 0.0, + "text": "you don't like add a new line and all" + }, + { + "start": 7548.8, + "duration": 0.0, + "text": "you don't like add a new line and all your<02:05:48.880> debug<02:05:49.199> info<02:05:49.440> is<02:05:49.520> broken<02:05:49.760> or<02:05:49.920> whatever." + }, + { + "start": 7550.149, + "duration": 0.0, + "text": "your debug info is broken or whatever." + }, + { + "start": 7550.159, + "duration": 0.0, + "text": "your debug info is broken or whatever. It's<02:05:50.320> like<02:05:50.480> that<02:05:50.719> stupid<02:05:51.119> problem.<02:05:51.520> But<02:05:52.239> um" + }, + { + "start": 7552.87, + "duration": 0.0, + "text": "It's like that stupid problem. But um" + }, + { + "start": 7552.88, + "duration": 0.0, + "text": "It's like that stupid problem. But um but<02:05:53.119> yeah,<02:05:53.199> I<02:05:53.360> think<02:05:53.440> at<02:05:53.679> the<02:05:53.760> limit<02:05:54.080> it<02:05:54.239> turns" + }, + { + "start": 7554.47, + "duration": 0.0, + "text": "but yeah, I think at the limit it turns" + }, + { + "start": 7554.48, + "duration": 0.0, + "text": "but yeah, I think at the limit it turns into<02:05:54.719> that.<02:05:55.040> It<02:05:55.280> really<02:05:55.440> does.<02:05:56.080> Yeah.<02:05:56.400> So<02:05:56.639> just" + }, + { + "start": 7556.79, + "duration": 0.0, + "text": "into that. It really does. Yeah. So just" + }, + { + "start": 7556.8, + "duration": 0.0, + "text": "into that. It really does. Yeah. So just to<02:05:56.960> add<02:05:57.119> on<02:05:57.280> to<02:05:57.440> that<02:05:57.599> actually<02:05:57.840> a<02:05:58.080> thought<02:05:59.280> uh" + }, + { + "start": 7560.709, + "duration": 0.0, + "text": "to add on to that actually a thought uh" + }, + { + "start": 7560.719, + "duration": 0.0, + "text": "to add on to that actually a thought uh one<02:06:01.119> really<02:06:01.360> good<02:06:01.599> argument<02:06:02.000> for<02:06:02.320> doing<02:06:02.560> this" + }, + { + "start": 7562.95, + "duration": 0.0, + "text": "one really good argument for doing this" + }, + { + "start": 7562.96, + "duration": 0.0, + "text": "one really good argument for doing this is<02:06:03.280> that<02:06:03.599> all<02:06:03.840> these<02:06:04.239> type<02:06:04.639> views<02:06:04.960> like<02:06:05.119> for" + }, + { + "start": 7565.27, + "duration": 0.0, + "text": "is that all these type views like for" + }, + { + "start": 7565.28, + "duration": 0.0, + "text": "is that all these type views like for example<02:06:05.599> the<02:06:05.920> view<02:06:06.239> rules<02:06:06.560> and<02:06:06.800> stuff<02:06:06.960> like" + }, + { + "start": 7567.189, + "duration": 0.0, + "text": "example the view rules and stuff like" + }, + { + "start": 7567.199, + "duration": 0.0, + "text": "example the view rules and stuff like that" + }, + { + "start": 7567.91, + "duration": 0.0, + "text": "that" + }, + { + "start": 7567.92, + "duration": 0.0, + "text": "that >> that<02:06:08.239> looks<02:06:08.560> a<02:06:08.880> lot<02:06:09.199> like<02:06:10.080> so<02:06:10.239> for<02:06:10.400> example<02:06:10.719> 101" + }, + { + "start": 7571.27, + "duration": 0.0, + "text": ">> that looks a lot like so for example 101" + }, + { + "start": 7571.28, + "duration": 0.0, + "text": ">> that looks a lot like so for example 101 editor<02:06:12.239> templates<02:06:13.119> that<02:06:13.360> they<02:06:13.599> use<02:06:13.760> for" + }, + { + "start": 7573.99, + "duration": 0.0, + "text": "editor templates that they use for" + }, + { + "start": 7574.0, + "duration": 0.0, + "text": "editor templates that they use for inspecting<02:06:14.560> files.<02:06:15.199> Yeah.<02:06:15.520> So<02:06:15.679> if<02:06:15.840> you<02:06:16.000> could" + }, + { + "start": 7576.149, + "duration": 0.0, + "text": "inspecting files. Yeah. So if you could" + }, + { + "start": 7576.159, + "duration": 0.0, + "text": "inspecting files. Yeah. So if you could have<02:06:16.400> like<02:06:17.040> a<02:06:17.360> description<02:06:17.760> of<02:06:18.000> a<02:06:18.159> binary<02:06:18.639> type" + }, + { + "start": 7578.95, + "duration": 0.0, + "text": "have like a description of a binary type" + }, + { + "start": 7578.96, + "duration": 0.0, + "text": "have like a description of a binary type that's<02:06:19.199> like<02:06:19.440> this<02:06:19.599> is<02:06:19.840> my<02:06:20.080> type<02:06:20.719> and<02:06:20.960> you" + }, + { + "start": 7581.109, + "duration": 0.0, + "text": "that's like this is my type and you" + }, + { + "start": 7581.119, + "duration": 0.0, + "text": "that's like this is my type and you could<02:06:21.280> look<02:06:21.440> at<02:06:21.599> it<02:06:21.840> in<02:06:22.480> memory<02:06:22.880> in<02:06:23.040> a<02:06:23.599> debugger" + }, + { + "start": 7584.07, + "duration": 0.0, + "text": "could look at it in memory in a debugger" + }, + { + "start": 7584.08, + "duration": 0.0, + "text": "could look at it in memory in a debugger but<02:06:24.320> you<02:06:24.480> could<02:06:24.639> also<02:06:25.119> look<02:06:25.280> at<02:06:25.440> it<02:06:25.760> in<02:06:26.000> a<02:06:26.239> file." + }, + { + "start": 7586.95, + "duration": 0.0, + "text": "but you could also look at it in a file." + }, + { + "start": 7586.96, + "duration": 0.0, + "text": "but you could also look at it in a file. I<02:06:27.119> think<02:06:27.599> really<02:06:28.000> awesome." + }, + { + "start": 7588.55, + "duration": 0.0, + "text": "I think really awesome." + }, + { + "start": 7588.56, + "duration": 0.0, + "text": "I think really awesome. >> Yes.<02:06:28.960> Yeah.<02:06:29.360> For<02:06:29.599> sure.<02:06:29.840> Agreed.<02:06:30.320> Yep." + }, + { + "start": 7592.39, + "duration": 0.0, + "text": ">> Yes. Yeah. For sure. Agreed. Yep." + }, + { + "start": 7592.4, + "duration": 0.0, + "text": ">> Yes. Yeah. For sure. Agreed. Yep. >> Like<02:06:32.560> if<02:06:32.800> you<02:06:32.960> keep<02:06:33.119> adding<02:06:33.520> like<02:06:33.840> editing" + }, + { + "start": 7594.31, + "duration": 0.0, + "text": ">> Like if you keep adding like editing" + }, + { + "start": 7594.32, + "duration": 0.0, + "text": ">> Like if you keep adding like editing features<02:06:34.639> to<02:06:34.800> the<02:06:34.960> visualizers,<02:06:35.599> you're" + }, + { + "start": 7595.75, + "duration": 0.0, + "text": "features to the visualizers, you're" + }, + { + "start": 7595.76, + "duration": 0.0, + "text": "features to the visualizers, you're going<02:06:35.840> to<02:06:36.000> run<02:06:36.159> into<02:06:36.320> antitrust<02:06:36.960> issues" + }, + { + "start": 7597.189, + "duration": 0.0, + "text": "going to run into antitrust issues" + }, + { + "start": 7597.199, + "duration": 0.0, + "text": "going to run into antitrust issues sooner<02:06:37.440> or<02:06:37.520> later<02:06:37.760> because<02:06:38.000> like<02:06:38.159> oh<02:06:38.320> no,<02:06:38.560> I'm" + }, + { + "start": 7598.709, + "duration": 0.0, + "text": "sooner or later because like oh no, I'm" + }, + { + "start": 7598.719, + "duration": 0.0, + "text": "sooner or later because like oh no, I'm not<02:06:38.880> only<02:06:39.119> eating<02:06:39.360> all<02:06:39.440> the<02:06:39.599> buggers<02:06:39.920> and<02:06:40.079> I'm" + }, + { + "start": 7600.149, + "duration": 0.0, + "text": "not only eating all the buggers and I'm" + }, + { + "start": 7600.159, + "duration": 0.0, + "text": "not only eating all the buggers and I'm also<02:06:40.400> eating<02:06:40.560> the<02:06:40.719> paint<02:06:40.960> programs<02:06:41.280> and<02:06:41.440> the" + }, + { + "start": 7601.51, + "duration": 0.0, + "text": "also eating the paint programs and the" + }, + { + "start": 7601.52, + "duration": 0.0, + "text": "also eating the paint programs and the hex<02:06:41.760> editors<02:06:42.239> and<02:06:42.400> the<02:06:42.719> like" + }, + { + "start": 7605.51, + "duration": 0.0, + "text": "hex editors and the like" + }, + { + "start": 7605.52, + "duration": 0.0, + "text": "hex editors and the like Yeah," + }, + { + "start": 7607.43, + "duration": 0.0, + "text": "Yeah," + }, + { + "start": 7607.44, + "duration": 0.0, + "text": "Yeah, >> it<02:06:47.599> is.<02:06:47.840> It<02:06:48.000> is<02:06:48.239> red<02:06:48.400> OS.<02:06:48.719> It's<02:06:48.880> just<02:06:49.920> probably" + }, + { + "start": 7610.47, + "duration": 0.0, + "text": ">> it is. It is red OS. It's just probably" + }, + { + "start": 7610.48, + "duration": 0.0, + "text": ">> it is. It is red OS. It's just probably >> Yeah." + }, + { + "start": 7611.43, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 7611.44, + "duration": 0.0, + "text": ">> Yeah. >> So<02:06:51.679> my<02:06:52.000> question<02:06:52.239> is<02:06:53.280> how<02:06:53.440> do<02:06:53.599> you<02:06:53.760> annotate" + }, + { + "start": 7614.39, + "duration": 0.0, + "text": ">> So my question is how do you annotate" + }, + { + "start": 7614.4, + "duration": 0.0, + "text": ">> So my question is how do you annotate types?<02:06:55.440> Uh<02:06:55.760> say<02:06:55.920> that<02:06:56.079> you<02:06:56.239> have<02:06:56.320> a<02:06:56.560> project" + }, + { + "start": 7616.95, + "duration": 0.0, + "text": "types? Uh say that you have a project" + }, + { + "start": 7616.96, + "duration": 0.0, + "text": "types? Uh say that you have a project with<02:06:57.280> a<02:06:57.440> lot<02:06:57.599> of<02:06:57.679> textures<02:06:58.880> and<02:06:59.119> but<02:06:59.360> you<02:06:59.520> know" + }, + { + "start": 7619.75, + "duration": 0.0, + "text": "with a lot of textures and but you know" + }, + { + "start": 7619.76, + "duration": 0.0, + "text": "with a lot of textures and but you know that<02:07:00.480> your<02:07:00.639> own<02:07:00.880> type<02:07:01.599> like<02:07:01.840> can<02:07:02.000> you<02:07:02.159> save<02:07:02.400> it" + }, + { + "start": 7622.47, + "duration": 0.0, + "text": "that your own type like can you save it" + }, + { + "start": 7622.48, + "duration": 0.0, + "text": "that your own type like can you save it on<02:07:02.639> a<02:07:02.800> point<02:07:03.119> basis<02:07:03.599> so<02:07:03.920> that<02:07:04.159> you<02:07:04.320> can<02:07:04.480> always" + }, + { + "start": 7624.79, + "duration": 0.0, + "text": "on a point basis so that you can always" + }, + { + "start": 7624.8, + "duration": 0.0, + "text": "on a point basis so that you can always like<02:07:05.040> look<02:07:05.280> at<02:07:05.440> your<02:07:05.679> pictures<02:07:06.480> or<02:07:06.719> you<02:07:06.880> have" + }, + { + "start": 7627.03, + "duration": 0.0, + "text": "like look at your pictures or you have" + }, + { + "start": 7627.04, + "duration": 0.0, + "text": "like look at your pictures or you have to<02:07:07.440> always<02:07:07.840> like<02:07:08.159> enter<02:07:08.480> it<02:07:09.119> when<02:07:09.360> you<02:07:09.520> start" + }, + { + "start": 7629.75, + "duration": 0.0, + "text": "to always like enter it when you start" + }, + { + "start": 7629.76, + "duration": 0.0, + "text": "to always like enter it when you start having<02:07:10.079> the<02:07:10.159> B." + }, + { + "start": 7631.109, + "duration": 0.0, + "text": "having the B." + }, + { + "start": 7631.119, + "duration": 0.0, + "text": "having the B. >> Right.<02:07:11.440> So,<02:07:12.159> um,<02:07:13.360> for<02:07:13.599> some<02:07:13.760> reason,<02:07:14.079> you" + }, + { + "start": 7634.149, + "duration": 0.0, + "text": ">> Right. So, um, for some reason, you" + }, + { + "start": 7634.159, + "duration": 0.0, + "text": ">> Right. So, um, for some reason, you know,<02:07:14.320> you<02:07:14.480> asked<02:07:14.639> that<02:07:14.880> question<02:07:15.040> and<02:07:15.280> I" + }, + { + "start": 7635.43, + "duration": 0.0, + "text": "know, you asked that question and I" + }, + { + "start": 7635.44, + "duration": 0.0, + "text": "know, you asked that question and I thought<02:07:15.599> I<02:07:15.760> had<02:07:15.840> a<02:07:16.079> slide<02:07:16.320> about<02:07:16.480> it.<02:07:17.360> Maybe<02:07:17.599> I" + }, + { + "start": 7637.75, + "duration": 0.0, + "text": "thought I had a slide about it. Maybe I" + }, + { + "start": 7637.76, + "duration": 0.0, + "text": "thought I had a slide about it. Maybe I just<02:07:18.000> had<02:07:18.159> a<02:07:18.320> sentence<02:07:18.560> on<02:07:18.719> my<02:07:18.800> notes<02:07:19.040> that<02:07:19.119> I" + }, + { + "start": 7639.27, + "duration": 0.0, + "text": "just had a sentence on my notes that I" + }, + { + "start": 7639.28, + "duration": 0.0, + "text": "just had a sentence on my notes that I forgot<02:07:19.520> to<02:07:19.599> say,<02:07:19.840> but,<02:07:20.719> um,<02:07:21.199> even<02:07:21.440> though<02:07:21.599> I<02:07:21.760> I" + }, + { + "start": 7642.069, + "duration": 0.0, + "text": "forgot to say, but, um, even though I I" + }, + { + "start": 7642.079, + "duration": 0.0, + "text": "forgot to say, but, um, even though I I realized<02:07:22.320> I<02:07:22.480> was<02:07:22.639> reading,<02:07:23.440> but<02:07:24.159> uh,<02:07:24.320> but" + }, + { + "start": 7644.47, + "duration": 0.0, + "text": "realized I was reading, but uh, but" + }, + { + "start": 7644.48, + "duration": 0.0, + "text": "realized I was reading, but uh, but yeah,<02:07:24.639> I<02:07:24.800> guess<02:07:24.880> I<02:07:25.040> forgot<02:07:25.280> to<02:07:25.360> say<02:07:25.520> it<02:07:25.679> or<02:07:26.159> it" + }, + { + "start": 7646.55, + "duration": 0.0, + "text": "yeah, I guess I forgot to say it or it" + }, + { + "start": 7646.56, + "duration": 0.0, + "text": "yeah, I guess I forgot to say it or it maybe<02:07:26.880> I<02:07:27.199> misremembered<02:07:27.760> making<02:07:27.920> a<02:07:28.079> slide<02:07:28.320> for" + }, + { + "start": 7648.47, + "duration": 0.0, + "text": "maybe I misremembered making a slide for" + }, + { + "start": 7648.48, + "duration": 0.0, + "text": "maybe I misremembered making a slide for it.<02:07:28.719> But<02:07:29.520> point<02:07:29.760> being<02:07:30.560> um<02:07:31.040> yes<02:07:31.280> there<02:07:31.440> is<02:07:31.599> a" + }, + { + "start": 7651.669, + "duration": 0.0, + "text": "it. But point being um yes there is a" + }, + { + "start": 7651.679, + "duration": 0.0, + "text": "it. But point being um yes there is a way<02:07:31.840> to<02:07:31.920> annotate<02:07:32.400> that<02:07:32.719> types<02:07:33.199> should<02:07:33.440> be<02:07:33.679> ex" + }, + { + "start": 7655.03, + "duration": 0.0, + "text": "way to annotate that types should be ex" + }, + { + "start": 7655.04, + "duration": 0.0, + "text": "way to annotate that types should be ex expanded<02:07:35.520> in<02:07:35.760> some<02:07:36.000> particular<02:07:36.480> way<02:07:36.639> like" + }, + { + "start": 7656.79, + "duration": 0.0, + "text": "expanded in some particular way like" + }, + { + "start": 7656.8, + "duration": 0.0, + "text": "expanded in some particular way like when<02:07:37.119> and<02:07:37.360> the<02:07:37.599> way<02:07:37.679> that<02:07:37.920> works<02:07:38.239> basically<02:07:38.560> is" + }, + { + "start": 7658.79, + "duration": 0.0, + "text": "when and the way that works basically is" + }, + { + "start": 7658.8, + "duration": 0.0, + "text": "when and the way that works basically is because<02:07:39.760> so<02:07:40.000> what<02:07:40.159> you<02:07:40.320> would<02:07:40.400> enter<02:07:40.719> manually" + }, + { + "start": 7661.03, + "duration": 0.0, + "text": "because so what you would enter manually" + }, + { + "start": 7661.04, + "duration": 0.0, + "text": "because so what you would enter manually when<02:07:41.280> you<02:07:41.360> start<02:07:41.440> a<02:07:41.599> debugging<02:07:42.000> session<02:07:42.239> is" + }, + { + "start": 7662.31, + "duration": 0.0, + "text": "when you start a debugging session is" + }, + { + "start": 7662.32, + "duration": 0.0, + "text": "when you start a debugging session is like<02:07:42.560> say<02:07:42.639> you've<02:07:42.800> got<02:07:42.880> your<02:07:43.040> texture<02:07:43.440> type<02:07:44.560> um" + }, + { + "start": 7664.79, + "duration": 0.0, + "text": "like say you've got your texture type um" + }, + { + "start": 7664.8, + "duration": 0.0, + "text": "like say you've got your texture type um and<02:07:45.280> it's<02:07:45.599> or<02:07:45.840> it's<02:07:46.000> like<02:07:46.079> a<02:07:46.239> loaded<02:07:46.480> bit<02:07:46.719> map" + }, + { + "start": 7666.87, + "duration": 0.0, + "text": "and it's or it's like a loaded bit map" + }, + { + "start": 7666.88, + "duration": 0.0, + "text": "and it's or it's like a loaded bit map type<02:07:47.119> because<02:07:47.280> it's<02:07:47.360> all<02:07:47.520> CPU<02:07:47.840> memory" + }, + { + "start": 7668.069, + "duration": 0.0, + "text": "type because it's all CPU memory" + }, + { + "start": 7668.079, + "duration": 0.0, + "text": "type because it's all CPU memory obviously<02:07:48.560> you<02:07:48.719> need<02:07:48.800> to<02:07:48.960> do<02:07:49.040> other<02:07:49.199> stuff<02:07:49.360> for" + }, + { + "start": 7669.51, + "duration": 0.0, + "text": "obviously you need to do other stuff for" + }, + { + "start": 7669.52, + "duration": 0.0, + "text": "obviously you need to do other stuff for GPU<02:07:49.840> memory<02:07:50.079> but<02:07:50.239> let's<02:07:50.320> say<02:07:50.400> you've<02:07:50.560> got<02:07:50.639> a" + }, + { + "start": 7670.709, + "duration": 0.0, + "text": "GPU memory but let's say you've got a" + }, + { + "start": 7670.719, + "duration": 0.0, + "text": "GPU memory but let's say you've got a loaded<02:07:50.960> bit<02:07:51.199> map<02:07:51.440> or<02:07:51.599> decoded<02:07:52.000> bit<02:07:52.239> map<02:07:52.400> type" + }, + { + "start": 7672.629, + "duration": 0.0, + "text": "loaded bit map or decoded bit map type" + }, + { + "start": 7672.639, + "duration": 0.0, + "text": "loaded bit map or decoded bit map type or<02:07:52.800> something<02:07:52.960> like<02:07:53.040> that<02:07:53.679> you<02:07:53.840> have<02:07:53.920> an" + }, + { + "start": 7674.069, + "duration": 0.0, + "text": "or something like that you have an" + }, + { + "start": 7674.079, + "duration": 0.0, + "text": "or something like that you have an evaluation<02:07:54.480> of<02:07:54.639> it<02:07:55.280> in<02:07:55.440> order<02:07:55.599> to<02:07:55.840> start" + }, + { + "start": 7676.069, + "duration": 0.0, + "text": "evaluation of it in order to start" + }, + { + "start": 7676.079, + "duration": 0.0, + "text": "evaluation of it in order to start visualizing<02:07:56.480> it<02:07:56.639> as<02:07:56.719> a<02:07:56.880> bit<02:07:57.040> map<02:07:57.280> you<02:07:57.440> would" + }, + { + "start": 7677.589, + "duration": 0.0, + "text": "visualizing it as a bit map you would" + }, + { + "start": 7677.599, + "duration": 0.0, + "text": "visualizing it as a bit map you would say<02:07:57.920> Okay,<02:07:58.480> call<02:07:58.800> the<02:07:59.040> bitmap<02:07:59.520> visualizer" + }, + { + "start": 7680.069, + "duration": 0.0, + "text": "say Okay, call the bitmap visualizer" + }, + { + "start": 7680.079, + "duration": 0.0, + "text": "say Okay, call the bitmap visualizer with<02:08:00.480> like<02:08:00.880> you<02:08:01.040> know<02:08:01.119> your<02:08:01.599> loaded<02:08:01.920> or" + }, + { + "start": 7682.149, + "duration": 0.0, + "text": "with like you know your loaded or" + }, + { + "start": 7682.159, + "duration": 0.0, + "text": "with like you know your loaded or decoded<02:08:02.560> bitmap<02:08:03.199> data<02:08:03.599> and<02:08:03.840> then<02:08:04.000> maybe" + }, + { + "start": 7684.229, + "duration": 0.0, + "text": "decoded bitmap data and then maybe" + }, + { + "start": 7684.239, + "duration": 0.0, + "text": "decoded bitmap data and then maybe decoded<02:08:04.639> bitmap.width<02:08:05.360> and<02:08:05.520> then<02:08:05.920> height.<02:08:07.199> Um" + }, + { + "start": 7688.31, + "duration": 0.0, + "text": "decoded bitmap.width and then height. Um" + }, + { + "start": 7688.32, + "duration": 0.0, + "text": "decoded bitmap.width and then height. Um and<02:08:08.560> so<02:08:08.800> the<02:08:09.119> the<02:08:09.520> mechanism<02:08:10.000> I<02:08:10.239> have<02:08:10.400> in<02:08:10.560> the" + }, + { + "start": 7690.629, + "duration": 0.0, + "text": "and so the the mechanism I have in the" + }, + { + "start": 7690.639, + "duration": 0.0, + "text": "and so the the mechanism I have in the rad<02:08:10.880> debugger<02:08:11.360> to<02:08:11.520> support<02:08:11.840> that<02:08:12.320> associated" + }, + { + "start": 7692.709, + "duration": 0.0, + "text": "rad debugger to support that associated" + }, + { + "start": 7692.719, + "duration": 0.0, + "text": "rad debugger to support that associated with<02:08:12.880> type<02:08:13.119> info<02:08:13.760> is<02:08:14.000> just<02:08:14.239> a<02:08:14.880> the<02:08:15.119> visualizers" + }, + { + "start": 7695.75, + "duration": 0.0, + "text": "with type info is just a the visualizers" + }, + { + "start": 7695.76, + "duration": 0.0, + "text": "with type info is just a the visualizers to<02:08:15.920> the<02:08:16.079> user<02:08:16.639> facing<02:08:17.040> thing.<02:08:17.360> I<02:08:17.599> call<02:08:17.679> them" + }, + { + "start": 7697.83, + "duration": 0.0, + "text": "to the user facing thing. I call them" + }, + { + "start": 7697.84, + "duration": 0.0, + "text": "to the user facing thing. I call them lenses<02:08:18.239> in<02:08:18.400> the<02:08:18.480> code<02:08:18.639> but<02:08:18.880> to<02:08:19.040> the<02:08:19.119> users" + }, + { + "start": 7699.43, + "duration": 0.0, + "text": "lenses in the code but to the users" + }, + { + "start": 7699.44, + "duration": 0.0, + "text": "lenses in the code but to the users they're<02:08:19.679> just<02:08:19.840> called<02:08:20.000> views.<02:08:21.360> Um<02:08:22.000> and<02:08:22.239> the" + }, + { + "start": 7702.39, + "duration": 0.0, + "text": "they're just called views. Um and the" + }, + { + "start": 7702.4, + "duration": 0.0, + "text": "they're just called views. Um and the feature<02:08:22.639> in<02:08:22.719> the<02:08:22.800> radook<02:08:23.199> is<02:08:23.360> called<02:08:23.440> a<02:08:23.599> type" + }, + { + "start": 7703.83, + "duration": 0.0, + "text": "feature in the radook is called a type" + }, + { + "start": 7703.84, + "duration": 0.0, + "text": "feature in the radook is called a type view.<02:08:24.159> And<02:08:24.320> the<02:08:24.480> type<02:08:24.719> view<02:08:24.960> is<02:08:25.119> just" + }, + { + "start": 7705.35, + "duration": 0.0, + "text": "view. And the type view is just" + }, + { + "start": 7705.36, + "duration": 0.0, + "text": "view. And the type view is just basically<02:08:25.679> saying<02:08:26.719> here's<02:08:26.960> a<02:08:27.119> type" + }, + { + "start": 7707.43, + "duration": 0.0, + "text": "basically saying here's a type" + }, + { + "start": 7707.44, + "duration": 0.0, + "text": "basically saying here's a type expression<02:08:28.560> and<02:08:28.880> if<02:08:29.199> you<02:08:29.360> evaluate<02:08:29.920> something" + }, + { + "start": 7710.229, + "duration": 0.0, + "text": "expression and if you evaluate something" + }, + { + "start": 7710.239, + "duration": 0.0, + "text": "expression and if you evaluate something as<02:08:30.560> this<02:08:30.800> type,<02:08:31.440> I<02:08:31.679> want<02:08:31.840> you<02:08:32.000> to<02:08:32.159> actually" + }, + { + "start": 7712.47, + "duration": 0.0, + "text": "as this type, I want you to actually" + }, + { + "start": 7712.48, + "duration": 0.0, + "text": "as this type, I want you to actually evaluate<02:08:32.960> this<02:08:33.199> expression<02:08:33.920> instead.<02:08:35.280> And" + }, + { + "start": 7716.39, + "duration": 0.0, + "text": "evaluate this expression instead. And" + }, + { + "start": 7716.4, + "duration": 0.0, + "text": "evaluate this expression instead. And because<02:08:36.800> each<02:08:37.119> expression<02:08:38.159> can<02:08:39.040> um<02:08:40.079> can" + }, + { + "start": 7720.39, + "duration": 0.0, + "text": "because each expression can um can" + }, + { + "start": 7720.4, + "duration": 0.0, + "text": "because each expression can um can include<02:08:40.719> the<02:08:40.960> visualizer<02:08:42.159> uh<02:08:42.560> selection<02:08:42.960> and" + }, + { + "start": 7723.109, + "duration": 0.0, + "text": "include the visualizer uh selection and" + }, + { + "start": 7723.119, + "duration": 0.0, + "text": "include the visualizer uh selection and and<02:08:43.599> parameterizations,<02:08:44.639> you<02:08:44.800> can<02:08:44.880> say," + }, + { + "start": 7725.109, + "duration": 0.0, + "text": "and parameterizations, you can say," + }, + { + "start": 7725.119, + "duration": 0.0, + "text": "and parameterizations, you can say, okay,<02:08:45.280> I've<02:08:45.440> got<02:08:45.520> this<02:08:45.679> decoded<02:08:46.079> bitmap<02:08:46.560> type" + }, + { + "start": 7727.83, + "duration": 0.0, + "text": "okay, I've got this decoded bitmap type" + }, + { + "start": 7727.84, + "duration": 0.0, + "text": "okay, I've got this decoded bitmap type uh<02:08:48.079> visual.<02:08:48.560> Oh<02:08:48.719> yeah,<02:08:48.880> and<02:08:49.040> the<02:08:49.280> second<02:08:49.440> part" + }, + { + "start": 7729.589, + "duration": 0.0, + "text": "uh visual. Oh yeah, and the second part" + }, + { + "start": 7729.599, + "duration": 0.0, + "text": "uh visual. Oh yeah, and the second part of<02:08:49.679> it,<02:08:49.920> this<02:08:50.159> expression<02:08:50.480> can<02:08:50.719> refer<02:08:50.960> to<02:08:51.040> the" + }, + { + "start": 7731.27, + "duration": 0.0, + "text": "of it, this expression can refer to the" + }, + { + "start": 7731.28, + "duration": 0.0, + "text": "of it, this expression can refer to the original<02:08:51.599> expression.<02:08:52.320> So<02:08:52.719> basically<02:08:53.040> you" + }, + { + "start": 7733.27, + "duration": 0.0, + "text": "original expression. So basically you" + }, + { + "start": 7733.28, + "duration": 0.0, + "text": "original expression. So basically you say<02:08:53.679> decode<02:08:54.000> a<02:08:54.079> bit<02:08:54.320> map<02:08:54.639> is<02:08:54.880> my<02:08:55.040> type<02:08:55.360> and<02:08:55.599> the" + }, + { + "start": 7735.75, + "duration": 0.0, + "text": "say decode a bit map is my type and the" + }, + { + "start": 7735.76, + "duration": 0.0, + "text": "say decode a bit map is my type and the way<02:08:55.840> I<02:08:56.000> want<02:08:56.079> to<02:08:56.159> visualize<02:08:56.480> that<02:08:56.800> is<02:08:57.040> bit<02:08:57.360> map" + }, + { + "start": 7737.75, + "duration": 0.0, + "text": "way I want to visualize that is bit map" + }, + { + "start": 7737.76, + "duration": 0.0, + "text": "way I want to visualize that is bit map and<02:08:58.000> then<02:08:58.079> you<02:08:58.239> can<02:08:58.400> even<02:08:58.560> just<02:08:58.639> refer<02:08:58.880> to<02:08:58.960> the" + }, + { + "start": 7739.109, + "duration": 0.0, + "text": "and then you can even just refer to the" + }, + { + "start": 7739.119, + "duration": 0.0, + "text": "and then you can even just refer to the members<02:08:59.360> by<02:08:59.520> name.<02:08:59.679> So<02:08:59.760> you<02:08:59.840> can<02:08:59.920> say<02:09:00.079> data" + }, + { + "start": 7740.39, + "duration": 0.0, + "text": "members by name. So you can say data" + }, + { + "start": 7740.4, + "duration": 0.0, + "text": "members by name. So you can say data width<02:09:00.719> height<02:09:01.199> close<02:09:02.239> and<02:09:02.480> then<02:09:03.199> that<02:09:03.520> can" + }, + { + "start": 7743.589, + "duration": 0.0, + "text": "width height close and then that can" + }, + { + "start": 7743.599, + "duration": 0.0, + "text": "width height close and then that can either<02:09:03.840> be<02:09:04.000> saved<02:09:04.239> in<02:09:04.400> your<02:09:04.560> program.<02:09:05.599> Um<02:09:06.239> we" + }, + { + "start": 7746.39, + "duration": 0.0, + "text": "either be saved in your program. Um we" + }, + { + "start": 7746.4, + "duration": 0.0, + "text": "either be saved in your program. Um we have<02:09:06.480> a<02:09:06.639> header<02:09:06.960> library<02:09:07.280> where<02:09:07.440> you<02:09:07.599> just" + }, + { + "start": 7747.75, + "duration": 0.0, + "text": "have a header library where you just" + }, + { + "start": 7747.76, + "duration": 0.0, + "text": "have a header library where you just like<02:09:07.920> say<02:09:08.079> red<02:09:08.320> imageg<02:09:08.639> type<02:09:08.800> view<02:09:09.040> decode<02:09:09.280> a" + }, + { + "start": 7749.43, + "duration": 0.0, + "text": "like say red imageg type view decode a" + }, + { + "start": 7749.44, + "duration": 0.0, + "text": "like say red imageg type view decode a bit<02:09:09.679> map<02:09:10.079> bit<02:09:10.400> map<02:09:10.800> base<02:09:11.040> width<02:09:11.280> height.<02:09:12.159> Um<02:09:12.480> or" + }, + { + "start": 7752.629, + "duration": 0.0, + "text": "bit map bit map base width height. Um or" + }, + { + "start": 7752.639, + "duration": 0.0, + "text": "bit map bit map base width height. Um or it<02:09:12.800> can<02:09:12.880> be<02:09:12.960> in<02:09:13.119> the<02:09:13.199> debugger<02:09:13.679> config<02:09:14.560> and" + }, + { + "start": 7754.79, + "duration": 0.0, + "text": "it can be in the debugger config and" + }, + { + "start": 7754.8, + "duration": 0.0, + "text": "it can be in the debugger config and then<02:09:15.040> either<02:09:15.360> way<02:09:15.679> when<02:09:15.840> the<02:09:16.000> debugger<02:09:16.320> loads" + }, + { + "start": 7756.55, + "duration": 0.0, + "text": "then either way when the debugger loads" + }, + { + "start": 7756.56, + "duration": 0.0, + "text": "then either way when the debugger loads the<02:09:16.719> program<02:09:16.960> it'll<02:09:17.280> see<02:09:17.360> that<02:09:17.599> type<02:09:17.840> view<02:09:18.000> and" + }, + { + "start": 7758.149, + "duration": 0.0, + "text": "the program it'll see that type view and" + }, + { + "start": 7758.159, + "duration": 0.0, + "text": "the program it'll see that type view and it<02:09:18.320> will<02:09:18.480> apply<02:09:18.719> it<02:09:18.880> to<02:09:19.040> all<02:09:19.360> evaluations<02:09:19.920> of" + }, + { + "start": 7760.069, + "duration": 0.0, + "text": "it will apply it to all evaluations of" + }, + { + "start": 7760.079, + "duration": 0.0, + "text": "it will apply it to all evaluations of that<02:09:20.239> type.<02:09:20.639> So<02:09:20.800> then<02:09:21.040> even<02:09:21.199> if<02:09:21.360> you<02:09:21.520> like" + }, + { + "start": 7761.669, + "duration": 0.0, + "text": "that type. So then even if you like" + }, + { + "start": 7761.679, + "duration": 0.0, + "text": "that type. So then even if you like hover<02:09:22.000> it<02:09:22.400> in<02:09:22.719> your<02:09:22.880> source<02:09:23.119> code,<02:09:23.360> you'll<02:09:23.520> see" + }, + { + "start": 7763.589, + "duration": 0.0, + "text": "hover it in your source code, you'll see" + }, + { + "start": 7763.599, + "duration": 0.0, + "text": "hover it in your source code, you'll see the<02:09:23.760> bit<02:09:24.000> map" + }, + { + "start": 7765.51, + "duration": 0.0, + "text": "the bit map" + }, + { + "start": 7765.52, + "duration": 0.0, + "text": "the bit map >> and<02:09:26.079> and<02:09:26.239> it's<02:09:26.480> a<02:09:26.719> nice<02:09:26.880> example<02:09:27.119> of<02:09:27.280> how<02:09:27.520> you" + }, + { + "start": 7767.75, + "duration": 0.0, + "text": ">> and and it's a nice example of how you" + }, + { + "start": 7767.76, + "duration": 0.0, + "text": ">> and and it's a nice example of how you think<02:09:27.920> about<02:09:28.159> the<02:09:28.400> whole<02:09:28.560> pipeline<02:09:28.960> of<02:09:29.199> like" + }, + { + "start": 7769.589, + "duration": 0.0, + "text": "think about the whole pipeline of like" + }, + { + "start": 7769.599, + "duration": 0.0, + "text": "think about the whole pipeline of like the<02:09:29.840> idea<02:09:30.079> is<02:09:30.239> to<02:09:30.400> reduce<02:09:30.719> the<02:09:30.960> total<02:09:31.199> round" + }, + { + "start": 7771.43, + "duration": 0.0, + "text": "the idea is to reduce the total round" + }, + { + "start": 7771.44, + "duration": 0.0, + "text": "the idea is to reduce the total round trip<02:09:31.760> time.<02:09:32.000> So<02:09:32.159> if<02:09:32.320> I<02:09:32.480> have<02:09:32.560> to<02:09:32.719> reenter<02:09:33.280> my" + }, + { + "start": 7773.589, + "duration": 0.0, + "text": "trip time. So if I have to reenter my" + }, + { + "start": 7773.599, + "duration": 0.0, + "text": "trip time. So if I have to reenter my expressions<02:09:34.159> every<02:09:34.400> time<02:09:34.639> that<02:09:34.880> sucks<02:09:35.280> how<02:09:35.440> do" + }, + { + "start": 7775.51, + "duration": 0.0, + "text": "expressions every time that sucks how do" + }, + { + "start": 7775.52, + "duration": 0.0, + "text": "expressions every time that sucks how do I<02:09:35.599> make<02:09:35.760> the<02:09:36.000> remove<02:09:36.159> that<02:09:36.400> and<02:09:36.480> you<02:09:36.719> came<02:09:36.800> up" + }, + { + "start": 7776.95, + "duration": 0.0, + "text": "I make the remove that and you came up" + }, + { + "start": 7776.96, + "duration": 0.0, + "text": "I make the remove that and you came up with<02:09:37.119> that<02:09:37.280> header" + }, + { + "start": 7777.99, + "duration": 0.0, + "text": "with that header" + }, + { + "start": 7778.0, + "duration": 0.0, + "text": "with that header >> including<02:09:38.400> the<02:09:38.480> header<02:09:38.719> and<02:09:38.880> giving<02:09:39.119> having" + }, + { + "start": 7779.51, + "duration": 0.0, + "text": ">> including the header and giving having" + }, + { + "start": 7779.52, + "duration": 0.0, + "text": ">> including the header and giving having that<02:09:40.000> special<02:09:40.400> visualiz<02:09:41.280> visualizer<02:09:41.920> type" + }, + { + "start": 7782.149, + "duration": 0.0, + "text": "that special visualiz visualizer type" + }, + { + "start": 7782.159, + "duration": 0.0, + "text": "that special visualiz visualizer type info" + }, + { + "start": 7782.95, + "duration": 0.0, + "text": "info" + }, + { + "start": 7782.96, + "duration": 0.0, + "text": "info >> in<02:09:43.280> the<02:09:43.440> program<02:09:43.760> so<02:09:44.000> that<02:09:44.159> it's<02:09:44.639> there<02:09:44.880> when" + }, + { + "start": 7785.109, + "duration": 0.0, + "text": ">> in the program so that it's there when" + }, + { + "start": 7785.119, + "duration": 0.0, + "text": ">> in the program so that it's there when you<02:09:45.280> run<02:09:45.360> it." + }, + { + "start": 7785.669, + "duration": 0.0, + "text": "you run it." + }, + { + "start": 7785.679, + "duration": 0.0, + "text": "you run it. >> Yep.<02:09:45.760> And<02:09:45.920> it's<02:09:46.159> the<02:09:46.239> same<02:09:46.400> thing<02:09:46.480> as<02:09:46.800> uh<02:09:46.880> NATV" + }, + { + "start": 7787.189, + "duration": 0.0, + "text": ">> Yep. And it's the same thing as uh NATV" + }, + { + "start": 7787.199, + "duration": 0.0, + "text": ">> Yep. And it's the same thing as uh NATV viz<02:09:47.520> as<02:09:47.599> well.<02:09:47.840> Like<02:09:48.079> it's<02:09:48.239> it's<02:09:48.639> uh<02:09:48.800> sort<02:09:48.960> of" + }, + { + "start": 7789.03, + "duration": 0.0, + "text": "viz as well. Like it's it's uh sort of" + }, + { + "start": 7789.04, + "duration": 0.0, + "text": "viz as well. Like it's it's uh sort of the<02:09:49.679> extension<02:09:50.079> and<02:09:50.239> cleaned<02:09:50.480> up<02:09:50.639> version<02:09:50.800> of" + }, + { + "start": 7790.95, + "duration": 0.0, + "text": "the extension and cleaned up version of" + }, + { + "start": 7790.96, + "duration": 0.0, + "text": "the extension and cleaned up version of NAV<02:09:51.199> viz." + }, + { + "start": 7791.589, + "duration": 0.0, + "text": "NAV viz." + }, + { + "start": 7791.599, + "duration": 0.0, + "text": "NAV viz. >> Yeah.<02:09:51.760> Like<02:09:52.480> LVM<02:09:53.119> like<02:09:53.520> debug<02:09:54.000> LDB<02:09:54.639> etc.<02:09:54.880> Other" + }, + { + "start": 7795.03, + "duration": 0.0, + "text": ">> Yeah. Like LVM like debug LDB etc. Other" + }, + { + "start": 7795.04, + "duration": 0.0, + "text": ">> Yeah. Like LVM like debug LDB etc. Other debuggers<02:09:55.440> have<02:09:55.599> that<02:09:55.760> but<02:09:55.920> it's<02:09:56.159> not<02:09:56.400> in<02:09:56.719> your" + }, + { + "start": 7797.03, + "duration": 0.0, + "text": "debuggers have that but it's not in your" + }, + { + "start": 7797.04, + "duration": 0.0, + "text": "debuggers have that but it's not in your program<02:09:58.000> like" + }, + { + "start": 7798.95, + "duration": 0.0, + "text": "program like" + }, + { + "start": 7798.96, + "duration": 0.0, + "text": "program like >> Yeah.<02:09:59.119> It's<02:09:59.280> a<02:09:59.360> big<02:09:59.440> problem." + }, + { + "start": 7799.75, + "duration": 0.0, + "text": ">> Yeah. It's a big problem." + }, + { + "start": 7799.76, + "duration": 0.0, + "text": ">> Yeah. It's a big problem. >> It's<02:09:59.920> always<02:10:00.079> a<02:10:00.320> sidec<02:10:00.719> car<02:10:01.119> thing." + }, + { + "start": 7801.75, + "duration": 0.0, + "text": ">> It's always a sidec car thing." + }, + { + "start": 7801.76, + "duration": 0.0, + "text": ">> It's always a sidec car thing. >> Yep." + }, + { + "start": 7803.189, + "duration": 0.0, + "text": ">> Yep." + }, + { + "start": 7803.199, + "duration": 0.0, + "text": ">> Yep. >> All<02:10:03.280> right.<02:10:04.320> Any<02:10:04.560> more<02:10:04.800> questions?<02:10:06.079> There" + }, + { + "start": 7806.31, + "duration": 0.0, + "text": ">> All right. Any more questions? There" + }, + { + "start": 7806.32, + "duration": 0.0, + "text": ">> All right. Any more questions? There were<02:10:06.480> more<02:10:06.639> hands.<02:10:07.840> Guess<02:10:08.079> they<02:10:08.239> got<02:10:08.400> tired." + }, + { + "start": 7809.75, + "duration": 0.0, + "text": "were more hands. Guess they got tired." + }, + { + "start": 7809.76, + "duration": 0.0, + "text": "were more hands. Guess they got tired. >> Yeah.<02:10:10.480> This<02:10:10.639> is<02:10:10.800> sort<02:10:10.880> of<02:10:10.960> a<02:10:11.119> followup<02:10:11.440> to<02:10:11.599> the" + }, + { + "start": 7811.75, + "duration": 0.0, + "text": ">> Yeah. This is sort of a followup to the" + }, + { + "start": 7811.76, + "duration": 0.0, + "text": ">> Yeah. This is sort of a followup to the file<02:10:12.639> visualizer<02:10:13.119> kind<02:10:13.280> of<02:10:13.360> question,<02:10:13.520> but" + }, + { + "start": 7813.75, + "duration": 0.0, + "text": "file visualizer kind of question, but" + }, + { + "start": 7813.76, + "duration": 0.0, + "text": "file visualizer kind of question, but did<02:10:13.920> you<02:10:14.000> ever<02:10:14.239> consider<02:10:14.480> dumping<02:10:14.800> the<02:10:14.960> data" + }, + { + "start": 7815.03, + "duration": 0.0, + "text": "did you ever consider dumping the data" + }, + { + "start": 7815.04, + "duration": 0.0, + "text": "did you ever consider dumping the data to<02:10:15.360> file<02:10:15.520> in<02:10:15.679> an<02:10:15.840> efficient<02:10:16.079> manner<02:10:16.320> so<02:10:16.480> you" + }, + { + "start": 7816.629, + "duration": 0.0, + "text": "to file in an efficient manner so you" + }, + { + "start": 7816.639, + "duration": 0.0, + "text": "to file in an efficient manner so you can<02:10:16.719> use<02:10:16.880> existing<02:10:17.280> programs?" + }, + { + "start": 7818.39, + "duration": 0.0, + "text": "can use existing programs?" + }, + { + "start": 7818.4, + "duration": 0.0, + "text": "can use existing programs? >> Um," + }, + { + "start": 7820.47, + "duration": 0.0, + "text": ">> Um," + }, + { + "start": 7820.48, + "duration": 0.0, + "text": ">> Um, I<02:10:20.719> mean<02:10:21.760> it's<02:10:22.000> sort<02:10:22.239> of<02:10:22.320> like<02:10:23.119> uh<02:10:24.000> the<02:10:24.239> problem" + }, + { + "start": 7824.55, + "duration": 0.0, + "text": "I mean it's sort of like uh the problem" + }, + { + "start": 7824.56, + "duration": 0.0, + "text": "I mean it's sort of like uh the problem once<02:10:24.880> you're<02:10:25.199> stretching<02:10:25.599> across<02:10:25.920> the" + }, + { + "start": 7826.069, + "duration": 0.0, + "text": "once you're stretching across the" + }, + { + "start": 7826.079, + "duration": 0.0, + "text": "once you're stretching across the program<02:10:26.400> boundary<02:10:26.800> is<02:10:27.040> that<02:10:27.199> the<02:10:27.440> operating" + }, + { + "start": 7827.83, + "duration": 0.0, + "text": "program boundary is that the operating" + }, + { + "start": 7827.84, + "duration": 0.0, + "text": "program boundary is that the operating system<02:10:28.079> primitives<02:10:28.560> that<02:10:28.800> you<02:10:29.119> that<02:10:29.440> are" + }, + { + "start": 7829.669, + "duration": 0.0, + "text": "system primitives that you that are" + }, + { + "start": 7829.679, + "duration": 0.0, + "text": "system primitives that you that are available<02:10:30.400> for<02:10:31.520> program<02:10:31.920> integration<02:10:32.880> are" + }, + { + "start": 7833.109, + "duration": 0.0, + "text": "available for program integration are" + }, + { + "start": 7833.119, + "duration": 0.0, + "text": "available for program integration are kind<02:10:33.280> of<02:10:33.360> too<02:10:33.599> weak<02:10:34.000> for<02:10:34.239> what<02:10:34.400> you<02:10:34.560> really" + }, + { + "start": 7834.709, + "duration": 0.0, + "text": "kind of too weak for what you really" + }, + { + "start": 7834.719, + "duration": 0.0, + "text": "kind of too weak for what you really need.<02:10:34.960> And<02:10:35.119> this<02:10:35.280> is<02:10:35.440> why<02:10:35.679> people<02:10:35.920> want" + }, + { + "start": 7836.229, + "duration": 0.0, + "text": "need. And this is why people want" + }, + { + "start": 7836.239, + "duration": 0.0, + "text": "need. And this is why people want integrated<02:10:36.800> development<02:10:37.199> environments<02:10:37.599> at" + }, + { + "start": 7837.83, + "duration": 0.0, + "text": "integrated development environments at" + }, + { + "start": 7837.84, + "duration": 0.0, + "text": "integrated development environments at all<02:10:38.320> is<02:10:38.480> because<02:10:38.719> their<02:10:38.960> text<02:10:39.199> editor<02:10:39.440> and" + }, + { + "start": 7839.589, + "duration": 0.0, + "text": "all is because their text editor and" + }, + { + "start": 7839.599, + "duration": 0.0, + "text": "all is because their text editor and debugger<02:10:40.000> and<02:10:40.159> like<02:10:40.320> all<02:10:40.400> these<02:10:40.639> other<02:10:40.719> things" + }, + { + "start": 7840.87, + "duration": 0.0, + "text": "debugger and like all these other things" + }, + { + "start": 7840.88, + "duration": 0.0, + "text": "debugger and like all these other things they<02:10:41.040> want<02:10:41.119> in<02:10:41.280> their<02:10:41.360> IDE.<02:10:42.400> Um<02:10:43.040> they're" + }, + { + "start": 7843.35, + "duration": 0.0, + "text": "they want in their IDE. Um they're" + }, + { + "start": 7843.36, + "duration": 0.0, + "text": "they want in their IDE. Um they're really<02:10:43.840> like<02:10:45.040> they<02:10:45.280> could<02:10:45.440> be<02:10:45.599> separate" + }, + { + "start": 7845.83, + "duration": 0.0, + "text": "really like they could be separate" + }, + { + "start": 7845.84, + "duration": 0.0, + "text": "really like they could be separate programs<02:10:46.239> in<02:10:46.480> principle,<02:10:47.280> but<02:10:47.520> it<02:10:47.760> seems<02:10:47.920> like" + }, + { + "start": 7848.149, + "duration": 0.0, + "text": "programs in principle, but it seems like" + }, + { + "start": 7848.159, + "duration": 0.0, + "text": "programs in principle, but it seems like the<02:10:48.480> the<02:10:49.119> tools<02:10:49.440> that<02:10:49.599> the<02:10:49.760> operating<02:10:50.079> system" + }, + { + "start": 7850.39, + "duration": 0.0, + "text": "the the tools that the operating system" + }, + { + "start": 7850.4, + "duration": 0.0, + "text": "the the tools that the operating system provides<02:10:50.719> for<02:10:50.880> these<02:10:51.119> programs<02:10:51.440> to<02:10:51.760> connect" + }, + { + "start": 7852.069, + "duration": 0.0, + "text": "provides for these programs to connect" + }, + { + "start": 7852.079, + "duration": 0.0, + "text": "provides for these programs to connect with<02:10:52.239> each<02:10:52.480> other.<02:10:52.880> They<02:10:53.119> seem<02:10:53.280> a<02:10:53.440> little<02:10:53.520> bit" + }, + { + "start": 7853.669, + "duration": 0.0, + "text": "with each other. They seem a little bit" + }, + { + "start": 7853.679, + "duration": 0.0, + "text": "with each other. They seem a little bit too<02:10:53.840> weak<02:10:54.159> and<02:10:54.400> like<02:10:54.639> not<02:10:54.880> rich<02:10:55.199> enough<02:10:55.520> to" + }, + { + "start": 7855.83, + "duration": 0.0, + "text": "too weak and like not rich enough to" + }, + { + "start": 7855.84, + "duration": 0.0, + "text": "too weak and like not rich enough to really<02:10:56.079> provide<02:10:56.400> what<02:10:56.639> people<02:10:56.880> want.<02:10:57.520> And<02:10:57.679> so" + }, + { + "start": 7858.55, + "duration": 0.0, + "text": "really provide what people want. And so" + }, + { + "start": 7858.56, + "duration": 0.0, + "text": "really provide what people want. And so people<02:10:58.800> want<02:10:58.960> an<02:10:59.119> IDE<02:10:59.520> for<02:10:59.679> it.<02:11:00.079> It's<02:11:00.239> pretty" + }, + { + "start": 7860.47, + "duration": 0.0, + "text": "people want an IDE for it. It's pretty" + }, + { + "start": 7860.48, + "duration": 0.0, + "text": "people want an IDE for it. It's pretty much<02:11:00.560> the<02:11:00.719> same<02:11:00.880> thing<02:11:01.040> here.<02:11:01.360> It's<02:11:01.599> like<02:11:01.840> once" + }, + { + "start": 7862.149, + "duration": 0.0, + "text": "much the same thing here. It's like once" + }, + { + "start": 7862.159, + "duration": 0.0, + "text": "much the same thing here. It's like once you<02:11:02.560> dump<02:11:02.880> stuff<02:11:03.040> to<02:11:03.280> files,<02:11:03.760> it's<02:11:04.079> sort<02:11:04.239> of" + }, + { + "start": 7864.31, + "duration": 0.0, + "text": "you dump stuff to files, it's sort of" + }, + { + "start": 7864.32, + "duration": 0.0, + "text": "you dump stuff to files, it's sort of like<02:11:04.960> you've<02:11:05.199> introduced<02:11:05.599> a<02:11:05.840> cash<02:11:06.000> eviction" + }, + { + "start": 7866.47, + "duration": 0.0, + "text": "like you've introduced a cash eviction" + }, + { + "start": 7866.48, + "duration": 0.0, + "text": "like you've introduced a cash eviction problem.<02:11:06.800> It's<02:11:06.960> like<02:11:07.119> do<02:11:07.199> we<02:11:07.360> just<02:11:07.520> leave" + }, + { + "start": 7867.669, + "duration": 0.0, + "text": "problem. It's like do we just leave" + }, + { + "start": 7867.679, + "duration": 0.0, + "text": "problem. It's like do we just leave those<02:11:07.840> files<02:11:08.079> there<02:11:08.239> forever?<02:11:09.040> How<02:11:09.199> do<02:11:09.360> we" + }, + { + "start": 7869.51, + "duration": 0.0, + "text": "those files there forever? How do we" + }, + { + "start": 7869.52, + "duration": 0.0, + "text": "those files there forever? How do we open<02:11:09.760> the<02:11:09.920> other<02:11:10.159> program?<02:11:10.560> Is<02:11:10.719> it<02:11:10.880> different" + }, + { + "start": 7871.03, + "duration": 0.0, + "text": "open the other program? Is it different" + }, + { + "start": 7871.04, + "duration": 0.0, + "text": "open the other program? Is it different for<02:11:11.280> every<02:11:11.520> program?<02:11:11.920> Like<02:11:12.159> how<02:11:12.560> I've<02:11:12.880> I've" + }, + { + "start": 7873.109, + "duration": 0.0, + "text": "for every program? Like how I've I've" + }, + { + "start": 7873.119, + "duration": 0.0, + "text": "for every program? Like how I've I've got<02:11:13.199> to<02:11:13.280> start<02:11:13.520> calling<02:11:13.760> these<02:11:14.000> other" + }, + { + "start": 7874.229, + "duration": 0.0, + "text": "got to start calling these other" + }, + { + "start": 7874.239, + "duration": 0.0, + "text": "got to start calling these other programs<02:11:14.560> in<02:11:14.719> this<02:11:14.880> way.<02:11:15.520> Um<02:11:15.920> they<02:11:16.159> don't<02:11:16.239> live" + }, + { + "start": 7876.47, + "duration": 0.0, + "text": "programs in this way. Um they don't live" + }, + { + "start": 7876.48, + "duration": 0.0, + "text": "programs in this way. Um they don't live update<02:11:16.800> with<02:11:16.960> the<02:11:17.119> device<02:11:17.360> like<02:11:17.520> what<02:11:17.679> do<02:11:17.840> I" + }, + { + "start": 7877.91, + "duration": 0.0, + "text": "update with the device like what do I" + }, + { + "start": 7877.92, + "duration": 0.0, + "text": "update with the device like what do I have<02:11:18.000> to<02:11:18.320> re<02:11:18.719> serialize<02:11:19.199> to<02:11:19.360> disk<02:11:19.599> and<02:11:19.760> then" + }, + { + "start": 7879.83, + "duration": 0.0, + "text": "have to re serialize to disk and then" + }, + { + "start": 7879.84, + "duration": 0.0, + "text": "have to re serialize to disk and then it's<02:11:20.000> like<02:11:20.239> the<02:11:20.400> other<02:11:20.560> program<02:11:20.880> has<02:11:21.040> a<02:11:21.199> popup." + }, + { + "start": 7881.589, + "duration": 0.0, + "text": "it's like the other program has a popup." + }, + { + "start": 7881.599, + "duration": 0.0, + "text": "it's like the other program has a popup. It's<02:11:21.760> like<02:11:21.920> the<02:11:22.159> contents<02:11:22.480> of<02:11:22.639> this<02:11:22.800> file<02:11:23.119> have" + }, + { + "start": 7883.27, + "duration": 0.0, + "text": "It's like the contents of this file have" + }, + { + "start": 7883.28, + "duration": 0.0, + "text": "It's like the contents of this file have changed.<02:11:23.599> And<02:11:23.760> it's<02:11:23.920> like<02:11:24.079> ah<02:11:24.320> dude<02:11:24.560> like<02:11:24.800> this" + }, + { + "start": 7884.95, + "duration": 0.0, + "text": "changed. And it's like ah dude like this" + }, + { + "start": 7884.96, + "duration": 0.0, + "text": "changed. And it's like ah dude like this sucks.<02:11:25.280> Like<02:11:25.599> so<02:11:26.079> so<02:11:27.520> in<02:11:27.679> a<02:11:27.840> better<02:11:28.079> world<02:11:28.960> an" + }, + { + "start": 7889.109, + "duration": 0.0, + "text": "sucks. Like so so in a better world an" + }, + { + "start": 7889.119, + "duration": 0.0, + "text": "sucks. Like so so in a better world an operating<02:11:29.440> system<02:11:29.679> maybe<02:11:30.000> would<02:11:30.159> make<02:11:30.320> this" + }, + { + "start": 7890.47, + "duration": 0.0, + "text": "operating system maybe would make this" + }, + { + "start": 7890.48, + "duration": 0.0, + "text": "operating system maybe would make this all<02:11:30.639> work.<02:11:31.440> I<02:11:31.679> don't<02:11:31.840> think<02:11:31.920> they<02:11:32.079> do<02:11:32.320> right" + }, + { + "start": 7892.47, + "duration": 0.0, + "text": "all work. I don't think they do right" + }, + { + "start": 7892.48, + "duration": 0.0, + "text": "all work. I don't think they do right now<02:11:32.719> and<02:11:32.960> so<02:11:33.119> I<02:11:33.280> just<02:11:33.440> built<02:11:33.679> it<02:11:33.760> this<02:11:34.000> way." + }, + { + "start": 7894.31, + "duration": 0.0, + "text": "now and so I just built it this way." + }, + { + "start": 7894.32, + "duration": 0.0, + "text": "now and so I just built it this way. >> On<02:11:34.480> the<02:11:34.639> flip<02:11:34.880> side,<02:11:35.119> do<02:11:35.199> you<02:11:35.360> consider<02:11:35.679> having" + }, + { + "start": 7895.99, + "duration": 0.0, + "text": ">> On the flip side, do you consider having" + }, + { + "start": 7896.0, + "duration": 0.0, + "text": ">> On the flip side, do you consider having developers<02:11:36.480> create<02:11:36.719> plugins<02:11:37.119> or<02:11:37.360> like<02:11:37.520> new" + }, + { + "start": 7897.75, + "duration": 0.0, + "text": "developers create plugins or like new" + }, + { + "start": 7897.76, + "duration": 0.0, + "text": "developers create plugins or like new panels<02:11:38.079> or<02:11:38.320> visualizers<02:11:38.800> or<02:11:39.040> whatever?" + }, + { + "start": 7899.91, + "duration": 0.0, + "text": "panels or visualizers or whatever?" + }, + { + "start": 7899.92, + "duration": 0.0, + "text": "panels or visualizers or whatever? >> Yes.<02:11:40.480> Yes.<02:11:40.960> So<02:11:41.520> I<02:11:41.760> think<02:11:41.840> I<02:11:42.000> also<02:11:42.239> had<02:11:42.400> notes" + }, + { + "start": 7902.629, + "duration": 0.0, + "text": ">> Yes. Yes. So I think I also had notes" + }, + { + "start": 7902.639, + "duration": 0.0, + "text": ">> Yes. Yes. So I think I also had notes that<02:11:42.880> I<02:11:43.040> just<02:11:43.199> didn't<02:11:43.520> say<02:11:43.840> about<02:11:44.000> that.<02:11:44.400> But" + }, + { + "start": 7904.79, + "duration": 0.0, + "text": "that I just didn't say about that. But" + }, + { + "start": 7904.8, + "duration": 0.0, + "text": "that I just didn't say about that. But um" + }, + { + "start": 7906.39, + "duration": 0.0, + "text": "um" + }, + { + "start": 7906.4, + "duration": 0.0, + "text": "um yeah,<02:11:46.800> basically<02:11:47.199> what<02:11:47.440> you<02:11:47.599> want<02:11:47.840> is<02:11:48.000> the" + }, + { + "start": 7908.229, + "duration": 0.0, + "text": "yeah, basically what you want is the" + }, + { + "start": 7908.239, + "duration": 0.0, + "text": "yeah, basically what you want is the ability<02:11:48.480> to<02:11:48.719> say<02:11:48.880> like<02:11:49.599> uh<02:11:50.639> both<02:11:51.199> there's<02:11:51.440> an" + }, + { + "start": 7911.589, + "duration": 0.0, + "text": "ability to say like uh both there's an" + }, + { + "start": 7911.599, + "duration": 0.0, + "text": "ability to say like uh both there's an argument<02:11:51.920> to<02:11:52.079> say<02:11:52.239> like<02:11:52.639> you<02:11:52.800> want<02:11:52.880> to<02:11:52.960> write<02:11:53.119> a" + }, + { + "start": 7913.27, + "duration": 0.0, + "text": "argument to say like you want to write a" + }, + { + "start": 7913.28, + "duration": 0.0, + "text": "argument to say like you want to write a plugin<02:11:53.520> for<02:11:53.679> the<02:11:53.840> for<02:11:54.079> the<02:11:54.239> debugger<02:11:54.960> itself" + }, + { + "start": 7915.43, + "duration": 0.0, + "text": "plugin for the for the debugger itself" + }, + { + "start": 7915.44, + "duration": 0.0, + "text": "plugin for the for the debugger itself like<02:11:55.599> a<02:11:55.760> DL<02:11:56.159> or<02:11:56.400> something<02:11:57.760> uh<02:11:57.840> or<02:11:58.079> like<02:11:58.320> some" + }, + { + "start": 7918.47, + "duration": 0.0, + "text": "like a DL or something uh or like some" + }, + { + "start": 7918.48, + "duration": 0.0, + "text": "like a DL or something uh or like some kind<02:11:58.560> of<02:11:58.639> a<02:11:58.800> script<02:11:59.040> where<02:11:59.280> it's<02:11:59.440> like<02:11:59.679> I<02:11:59.920> just" + }, + { + "start": 7920.069, + "duration": 0.0, + "text": "kind of a script where it's like I just" + }, + { + "start": 7920.079, + "duration": 0.0, + "text": "kind of a script where it's like I just want<02:12:00.159> to<02:12:00.239> put<02:12:00.400> this<02:12:00.560> visualizer<02:12:00.960> code<02:12:01.119> into" + }, + { + "start": 7921.35, + "duration": 0.0, + "text": "want to put this visualizer code into" + }, + { + "start": 7921.36, + "duration": 0.0, + "text": "want to put this visualizer code into the<02:12:01.440> debugger<02:12:01.840> as<02:12:02.079> an<02:12:02.560> extra<02:12:02.960> one<02:12:03.440> in<02:12:03.679> addition" + }, + { + "start": 7923.83, + "duration": 0.0, + "text": "the debugger as an extra one in addition" + }, + { + "start": 7923.84, + "duration": 0.0, + "text": "the debugger as an extra one in addition to<02:12:04.000> the<02:12:04.159> built-in<02:12:04.480> ones.<02:12:05.760> Or<02:12:06.400> an<02:12:06.719> even<02:12:06.880> better" + }, + { + "start": 7927.109, + "duration": 0.0, + "text": "to the built-in ones. Or an even better" + }, + { + "start": 7927.119, + "duration": 0.0, + "text": "to the built-in ones. Or an even better option<02:12:07.360> in<02:12:07.599> many<02:12:07.760> cases<02:12:07.920> is<02:12:08.159> like<02:12:08.320> that<02:12:08.560> stuff" + }, + { + "start": 7928.709, + "duration": 0.0, + "text": "option in many cases is like that stuff" + }, + { + "start": 7928.719, + "duration": 0.0, + "text": "option in many cases is like that stuff should<02:12:08.880> be<02:12:08.960> in<02:12:09.119> the<02:12:09.199> program<02:12:09.520> like<02:12:09.679> next<02:12:09.840> to" + }, + { + "start": 7929.99, + "duration": 0.0, + "text": "should be in the program like next to" + }, + { + "start": 7930.0, + "duration": 0.0, + "text": "should be in the program like next to the<02:12:10.079> type<02:12:10.320> info.<02:12:10.560> So<02:12:10.719> there's<02:12:10.880> a<02:12:11.040> limited" + }, + { + "start": 7931.35, + "duration": 0.0, + "text": "the type info. So there's a limited" + }, + { + "start": 7931.36, + "duration": 0.0, + "text": "the type info. So there's a limited version<02:12:11.520> of<02:12:11.599> that<02:12:11.760> with<02:12:11.920> the<02:12:12.079> type<02:12:12.320> views" + }, + { + "start": 7932.629, + "duration": 0.0, + "text": "version of that with the type views" + }, + { + "start": 7932.639, + "duration": 0.0, + "text": "version of that with the type views because<02:12:12.800> you<02:12:13.040> can<02:12:13.119> sort<02:12:13.280> of<02:12:13.360> say<02:12:13.599> like<02:12:14.320> the<02:12:14.480> the" + }, + { + "start": 7934.709, + "duration": 0.0, + "text": "because you can sort of say like the the" + }, + { + "start": 7934.719, + "duration": 0.0, + "text": "because you can sort of say like the the expression<02:12:15.040> is<02:12:15.280> programmatic<02:12:16.000> really.<02:12:16.320> So" + }, + { + "start": 7936.47, + "duration": 0.0, + "text": "expression is programmatic really. So" + }, + { + "start": 7936.48, + "duration": 0.0, + "text": "expression is programmatic really. So it's<02:12:16.719> like<02:12:16.960> it<02:12:17.119> is<02:12:18.159> um" + }, + { + "start": 7940.069, + "duration": 0.0, + "text": "it's like it is um" + }, + { + "start": 7940.079, + "duration": 0.0, + "text": "it's like it is um I<02:12:20.400> don't<02:12:20.480> think<02:12:20.560> it's<02:12:20.800> turning<02:12:21.119> complete" + }, + { + "start": 7941.35, + "duration": 0.0, + "text": "I don't think it's turning complete" + }, + { + "start": 7941.36, + "duration": 0.0, + "text": "I don't think it's turning complete because<02:12:21.520> the<02:12:21.679> bite<02:12:22.000> code<02:12:22.159> can't<02:12:22.400> jump" + }, + { + "start": 7942.709, + "duration": 0.0, + "text": "because the bite code can't jump" + }, + { + "start": 7942.719, + "duration": 0.0, + "text": "because the bite code can't jump backwards.<02:12:23.280> But<02:12:23.360> it's<02:12:23.520> but<02:12:23.760> point<02:12:24.000> point" + }, + { + "start": 7944.229, + "duration": 0.0, + "text": "backwards. But it's but point point" + }, + { + "start": 7944.239, + "duration": 0.0, + "text": "backwards. But it's but point point being<02:12:24.400> it's<02:12:24.560> like<02:12:24.639> a<02:12:24.719> pro<02:12:24.960> a<02:12:25.040> little<02:12:25.199> mini" + }, + { + "start": 7945.51, + "duration": 0.0, + "text": "being it's like a pro a little mini" + }, + { + "start": 7945.52, + "duration": 0.0, + "text": "being it's like a pro a little mini program.<02:12:26.239> And<02:12:26.400> so<02:12:26.560> you<02:12:26.719> can<02:12:26.880> do<02:12:26.960> a<02:12:27.119> little<02:12:27.199> bit" + }, + { + "start": 7947.35, + "duration": 0.0, + "text": "program. And so you can do a little bit" + }, + { + "start": 7947.36, + "duration": 0.0, + "text": "program. And so you can do a little bit of<02:12:27.440> that<02:12:27.520> with<02:12:27.599> the<02:12:27.760> type<02:12:27.920> views<02:12:28.239> but<02:12:28.400> really" + }, + { + "start": 7948.55, + "duration": 0.0, + "text": "of that with the type views but really" + }, + { + "start": 7948.56, + "duration": 0.0, + "text": "of that with the type views but really at<02:12:28.719> the<02:12:28.880> limit<02:12:29.119> what<02:12:29.280> you'd<02:12:29.520> want<02:12:30.079> and<02:12:30.320> what<02:12:30.560> I" + }, + { + "start": 7950.79, + "duration": 0.0, + "text": "at the limit what you'd want and what I" + }, + { + "start": 7950.8, + "duration": 0.0, + "text": "at the limit what you'd want and what I hope<02:12:31.040> to<02:12:31.360> eventually<02:12:31.840> support<02:12:32.800> is<02:12:33.119> like<02:12:33.440> no" + }, + { + "start": 7953.83, + "duration": 0.0, + "text": "hope to eventually support is like no" + }, + { + "start": 7953.84, + "duration": 0.0, + "text": "hope to eventually support is like no like<02:12:34.239> here's<02:12:34.560> my<02:12:34.800> strct<02:12:35.440> and<02:12:35.679> it's<02:12:35.920> like<02:12:36.079> a" + }, + { + "start": 7956.31, + "duration": 0.0, + "text": "like here's my strct and it's like a" + }, + { + "start": 7956.32, + "duration": 0.0, + "text": "like here's my strct and it's like a complicated<02:12:36.880> entity<02:12:37.199> or<02:12:37.520> node<02:12:37.760> or<02:12:38.000> whatever." + }, + { + "start": 7958.39, + "duration": 0.0, + "text": "complicated entity or node or whatever." + }, + { + "start": 7958.4, + "duration": 0.0, + "text": "complicated entity or node or whatever. It's<02:12:38.639> like,<02:12:38.800> and<02:12:39.040> here's<02:12:39.360> the<02:12:39.520> debug" + }, + { + "start": 7959.83, + "duration": 0.0, + "text": "It's like, and here's the debug" + }, + { + "start": 7959.84, + "duration": 0.0, + "text": "It's like, and here's the debug visualizer<02:12:40.400> path<02:12:40.639> like<02:12:40.800> underneath<02:12:41.119> it.<02:12:41.280> And" + }, + { + "start": 7961.43, + "duration": 0.0, + "text": "visualizer path like underneath it. And" + }, + { + "start": 7961.44, + "duration": 0.0, + "text": "visualizer path like underneath it. And then<02:12:41.520> the<02:12:41.599> debugger<02:12:42.000> should<02:12:42.079> just<02:12:42.239> be<02:12:42.320> able<02:12:42.400> to" + }, + { + "start": 7962.55, + "duration": 0.0, + "text": "then the debugger should just be able to" + }, + { + "start": 7962.56, + "duration": 0.0, + "text": "then the debugger should just be able to call<02:12:42.719> that<02:12:42.880> and<02:12:43.119> then<02:12:43.280> fill<02:12:43.440> out<02:12:43.599> a<02:12:43.760> tab.<02:12:44.560> So" + }, + { + "start": 7964.79, + "duration": 0.0, + "text": "call that and then fill out a tab. So" + }, + { + "start": 7964.8, + "duration": 0.0, + "text": "call that and then fill out a tab. So that's<02:12:45.040> what<02:12:45.280> I<02:12:45.440> want<02:12:45.599> to<02:12:45.840> do." + }, + { + "start": 7967.669, + "duration": 0.0, + "text": "that's what I want to do." + }, + { + "start": 7967.679, + "duration": 0.0, + "text": "that's what I want to do. Yeah." + }, + { + "start": 7968.709, + "duration": 0.0, + "text": "Yeah." + }, + { + "start": 7968.719, + "duration": 0.0, + "text": "Yeah. >> All right.<02:12:49.119> I<02:12:49.520> think<02:12:49.679> we're<02:12:49.920> out<02:12:50.159> of<02:12:50.320> time.<02:12:51.199> So" + }, + { + "start": 7972.069, + "duration": 0.0, + "text": ">> All right. I think we're out of time. So" + }, + { + "start": 7972.079, + "duration": 0.0, + "text": ">> All right. I think we're out of time. So thank<02:12:52.320> you<02:12:52.560> Ryan<02:12:52.960> again.<02:12:53.199> Thank<02:12:53.360> you<02:12:53.679> much." + }, + { + "start": 7973.83, + "duration": 0.0, + "text": "thank you Ryan again. Thank you much." + }, + { + "start": 7973.84, + "duration": 0.0, + "text": "thank you Ryan again. Thank you much. Give<02:12:53.920> it<02:12:54.000> up<02:12:54.159> for<02:12:54.239> Ryan<02:12:54.560> once<02:12:54.800> more." + }, + { + "start": 7975.27, + "duration": 0.0, + "text": "Give it up for Ryan once more." + }, + { + "start": 7975.28, + "duration": 0.0, + "text": "Give it up for Ryan once more. >> Thanks<02:12:55.599> everyone." + }, + { + "start": 7978.88, + "duration": 0.0, + "text": ">> Thanks<02:12:59.199> man.<02:12:59.760> Appreciate<02:13:00.159> it." + } + ], + "plain": "[Music]\nAll<00:00:14.880> right,<00:00:15.280> good<00:00:15.599> morning<00:00:16.080> everybody.<00:00:17.279> I\nAll right, good morning everybody. I\nAll right, good morning everybody. I hope<00:00:17.680> we<00:00:17.920> all<00:00:18.160> had<00:00:18.320> a<00:00:18.480> great<00:00:18.720> time<00:00:19.119> drinking\nhope we all had a great time drinking\nhope we all had a great time drinking yesterday,<00:00:20.240> hanging<00:00:20.640> out,<00:00:20.960> the<00:00:21.199> nice<00:00:21.439> dinner.\nyesterday, hanging out, the nice dinner.\nyesterday, hanging out, the nice dinner. Uh<00:00:22.640> for<00:00:22.880> the<00:00:23.039> future<00:00:23.359> dinners,<00:00:23.840> alcohol<00:00:24.240> is\nUh for the future dinners, alcohol is\nUh for the future dinners, alcohol is not<00:00:24.720> included.<00:00:25.359> We'll<00:00:25.600> run<00:00:25.760> out<00:00:25.920> of<00:00:26.160> money\nnot included. We'll run out of money\nnot included. We'll run out of money today.<00:00:28.240> Our<00:00:28.400> first<00:00:28.560> speaker<00:00:28.800> is<00:00:29.039> Ryan.<00:00:29.599> You\ntoday. Our first speaker is Ryan. You\ntoday. Our first speaker is Ryan. You know,<00:00:29.840> we<00:00:30.000> all<00:00:30.160> know<00:00:30.320> Ryan<00:00:30.800> strikes<00:00:31.279> fear<00:00:31.599> in\nknow, we all know Ryan strikes fear in\nknow, we all know Ryan strikes fear in his<00:00:32.079> enemies<00:00:32.640> because<00:00:32.960> he's<00:00:33.280> so<00:00:33.840> good<00:00:34.000> at<00:00:34.239> what\nhis enemies because he's so good at what\nhis enemies because he's so good at what he<00:00:34.559> does.<00:00:35.440> And<00:00:35.680> now,<00:00:36.079> as<00:00:36.320> you<00:00:36.480> remember<00:00:36.719> from\nhe does. And now, as you remember from\nhe does. And now, as you remember from yesterday,<00:00:37.680> he's<00:00:38.000> learned<00:00:38.239> to<00:00:38.480> ride<00:00:38.800> the\nyesterday, he's learned to ride the\nyesterday, he's learned to ride the moose.\nmoose.\nmoose. >> That's<00:00:41.280> true.<00:00:42.640> So<00:00:43.040> truly<00:00:43.520> now,<00:00:43.840> he<00:00:44.160> will<00:00:44.320> be\n>> That's true. So truly now, he will be\n>> That's true. So truly now, he will be completely<00:00:45.200> undefeated.<00:00:46.559> Everybody,<00:00:47.039> Ryan\ncompletely undefeated. Everybody, Ryan\ncompletely undefeated. Everybody, Ryan Flurry.\n>> All<00:00:55.440> right.<00:00:55.840> Uh,<00:00:56.239> well,<00:00:56.399> thank<00:00:56.559> you,<00:00:56.800> Sam.\n>> All right. Uh, well, thank you, Sam.\n>> All right. Uh, well, thank you, Sam. That<00:00:57.440> was<00:00:57.520> a<00:00:57.840> great<00:00:58.079> introduction.<00:00:58.480> It<00:00:58.640> was\nThat was a great introduction. It was\nThat was a great introduction. It was not<00:00:58.800> a<00:00:58.960> real<00:00:59.120> moose,<00:00:59.600> by<00:00:59.680> the<00:00:59.840> way.<00:01:00.000> It<00:01:00.239> was\nnot a real moose, by the way. It was\nnot a real moose, by the way. It was fake<00:01:00.640> for<00:01:00.879> for<00:01:01.199> those<00:01:01.520> watching<00:01:01.840> online.<00:01:02.480> Um,\nfake for for those watching online. Um,\nfake for for those watching online. Um, so,<00:01:03.760> hi<00:01:04.000> everyone.<00:01:04.720> Uh,<00:01:05.119> thanks<00:01:05.360> for<00:01:05.519> being\nso, hi everyone. Uh, thanks for being\nso, hi everyone. Uh, thanks for being here<00:01:06.240> and<00:01:06.400> and<00:01:06.799> coming<00:01:07.040> to<00:01:07.200> listen.<00:01:07.520> Uh,<00:01:07.680> thank\nhere and and coming to listen. Uh, thank\nhere and and coming to listen. Uh, thank you<00:01:07.920> to<00:01:08.080> Sam,<00:01:08.479> Sander,<00:01:08.799> and<00:01:08.960> Charlie<00:01:09.360> for\nyou to Sam, Sander, and Charlie for\nyou to Sam, Sander, and Charlie for organizing<00:01:10.240> this.<00:01:10.640> This<00:01:10.880> has<00:01:11.040> been,<00:01:11.920> uh,\norganizing this. This has been, uh,\norganizing this. This has been, uh, absolutely<00:01:12.640> amazing.<00:01:13.040> Like<00:01:13.200> the<00:01:13.439> best<00:01:13.600> energy\nabsolutely amazing. Like the best energy\nabsolutely amazing. Like the best energy of<00:01:14.080> any<00:01:14.240> conference<00:01:14.560> I've<00:01:14.799> been<00:01:14.880> to<00:01:15.280> by<00:01:15.600> far.\nof any conference I've been to by far.\nof any conference I've been to by far. So,<00:01:16.479> thank<00:01:16.640> you<00:01:16.799> guys<00:01:16.960> so<00:01:17.200> much.<00:01:17.520> Um,<00:01:18.960> yes,\nSo, thank you guys so much. Um, yes,\nSo, thank you guys so much. Um, yes, clap<00:01:20.000> for<00:01:20.159> that.\nAnd<00:01:25.280> uh<00:01:25.680> I'm<00:01:26.000> honored<00:01:26.320> to<00:01:26.560> be<00:01:26.720> here<00:01:26.880> because\nAnd uh I'm honored to be here because\nAnd uh I'm honored to be here because there's<00:01:27.360> so<00:01:27.520> many<00:01:27.680> people<00:01:27.840> you've<00:01:28.080> brought\nthere's so many people you've brought\nthere's so many people you've brought that<00:01:28.560> I<00:01:28.799> really<00:01:29.040> respect.<00:01:29.520> So<00:01:29.680> I'm<00:01:30.080> I<00:01:30.320> it's\nthat I really respect. So I'm I it's\nthat I really respect. So I'm I it's like<00:01:31.119> dream<00:01:31.439> come<00:01:31.600> true<00:01:31.840> to<00:01:32.000> be<00:01:32.079> here<00:01:32.320> and\nlike dream come true to be here and\nlike dream come true to be here and speak<00:01:32.799> alongside<00:01:33.280> them.<00:01:33.520> So<00:01:34.400> uh<00:01:34.560> for<00:01:34.720> those\nspeak alongside them. So uh for those\nspeak alongside them. So uh for those who've<00:01:35.200> not<00:01:35.759> uh<00:01:35.920> who<00:01:36.159> have<00:01:36.240> not<00:01:36.400> yet<00:01:36.640> met,<00:01:36.880> my\nwho've not uh who have not yet met, my\nwho've not uh who have not yet met, my name<00:01:37.119> is<00:01:37.200> Ryan<00:01:37.520> Flurry.<00:01:38.320> Um<00:01:38.799> I<00:01:39.119> work<00:01:39.280> on<00:01:39.439> the\nname is Ryan Flurry. Um I work on the\nname is Ryan Flurry. Um I work on the RAD<00:01:39.920> debugger,<00:01:40.320> which<00:01:40.479> is<00:01:40.560> the<00:01:40.720> project\nRAD debugger, which is the project\nRAD debugger, which is the project originally<00:01:41.600> started<00:01:41.840> by<00:01:41.920> Rad<00:01:42.240> Game<00:01:42.479> tools.\noriginally started by Rad Game tools.\noriginally started by Rad Game tools. You<00:01:42.799> may<00:01:42.880> have<00:01:43.040> heard<00:01:43.119> of<00:01:43.200> it<00:01:43.680> from<00:01:43.920> like<00:01:44.240> 2013\nYou may have heard of it from like 2013\nYou may have heard of it from like 2013 or<00:01:45.040> whatever<00:01:45.520> when<00:01:45.759> it<00:01:45.920> started<00:01:46.240> when<00:01:46.399> I<00:01:46.640> was\nor whatever when it started when I was\nor whatever when it started when I was like<00:01:47.280> 15<00:01:47.680> or<00:01:47.920> something.<00:01:48.640> Um<00:01:49.280> it's<00:01:49.520> gone\nlike 15 or something. Um it's gone\nlike 15 or something. Um it's gone through<00:01:50.320> some<00:01:50.560> some<00:01:51.119> successive<00:01:51.680> teams.<00:01:52.159> Um\nthrough some some successive teams. Um\nthrough some some successive teams. Um uh<00:01:53.920> but<00:01:54.320> uh<00:01:54.479> RAD<00:01:54.720> game<00:01:54.880> tool<00:01:55.040> is<00:01:55.200> now<00:01:55.360> part<00:01:55.439> of\nuh but uh RAD game tool is now part of\nuh but uh RAD game tool is now part of Epic<00:01:55.840> Games.<00:01:56.159> If<00:01:56.320> it<00:01:56.479> needs<00:01:56.640> to<00:01:56.720> be<00:01:56.880> said\nEpic Games. If it needs to be said\nEpic Games. If it needs to be said though,<00:01:57.360> I'm<00:01:57.520> not<00:01:57.680> here<00:01:57.759> to<00:01:57.920> represent<00:01:58.240> them.\nthough, I'm not here to represent them.\nthough, I'm not here to represent them. I'm<00:01:58.719> here<00:01:58.880> on<00:01:59.040> my<00:01:59.119> own<00:01:59.520> uh<00:01:59.680> own<00:01:59.840> behalf.<00:02:00.399> So\nI'm here on my own uh own behalf. So\nI'm here on my own uh own behalf. So while<00:02:01.680> working<00:02:01.920> on<00:02:02.159> on<00:02:02.640> uh<00:02:02.719> the<00:02:02.880> Rad<00:02:03.119> debugger,\nwhile working on on uh the Rad debugger,\nwhile working on on uh the Rad debugger, I<00:02:03.520> tried<00:02:03.680> to<00:02:03.759> prioritize<00:02:04.320> something<00:02:04.880> that\nI tried to prioritize something that\nI tried to prioritize something that I've<00:02:05.360> always<00:02:05.520> felt<00:02:05.759> is<00:02:06.000> missing<00:02:06.320> from\nI've always felt is missing from\nI've always felt is missing from programming<00:02:07.040> tooling,<00:02:07.439> which<00:02:07.600> is<00:02:08.000> uh<00:02:08.160> good\nprogramming tooling, which is uh good\nprogramming tooling, which is uh good visual<00:02:08.800> feedback.<00:02:09.599> So<00:02:10.319> having<00:02:10.800> open\nvisual feedback. So having open\nvisual feedback. So having open visibility<00:02:11.520> into<00:02:11.760> a<00:02:12.000> system.<00:02:12.640> Um<00:02:13.200> I've<00:02:13.440> always\nvisibility into a system. Um I've always\nvisibility into a system. Um I've always felt<00:02:13.760> that<00:02:13.920> computers<00:02:14.239> are<00:02:14.400> very<00:02:14.560> opaque.\nfelt that computers are very opaque.\nfelt that computers are very opaque. Um,<00:02:16.720> coming<00:02:16.959> from<00:02:17.120> game<00:02:17.360> development,<00:02:18.160> uh,\nUm, coming from game development, uh,\nUm, coming from game development, uh, it's<00:02:19.440> really<00:02:19.680> easy<00:02:19.920> to<00:02:20.080> learn<00:02:20.239> when<00:02:20.480> you<00:02:20.879> are\nit's really easy to learn when you are\nit's really easy to learn when you are always<00:02:21.360> debugging<00:02:21.760> things<00:02:21.920> that<00:02:22.160> it's<00:02:22.319> very\nalways debugging things that it's very\nalways debugging things that it's very useful.<00:02:22.800> We<00:02:22.959> saw<00:02:23.120> in<00:02:23.440> Dennis's<00:02:24.000> talk<00:02:24.160> that\nuseful. We saw in Dennis's talk that\nuseful. We saw in Dennis's talk that it's<00:02:24.560> like<00:02:24.720> if<00:02:24.959> you're<00:02:25.040> looking<00:02:25.200> at\nit's like if you're looking at\nit's like if you're looking at timestamps,<00:02:26.480> it's<00:02:26.800> totally<00:02:27.200> different\ntimestamps, it's totally different\ntimestamps, it's totally different experience<00:02:27.599> than<00:02:27.840> looking<00:02:28.000> at<00:02:28.080> a<00:02:28.239> profile<00:02:28.560> at\nexperience than looking at a profile at\nexperience than looking at a profile at a<00:02:28.800> flame<00:02:29.120> graph,<00:02:29.360> right?<00:02:29.520> It's<00:02:29.760> completely\na flame graph, right? It's completely\na flame graph, right? It's completely different<00:02:30.319> experience.<00:02:31.360> Um,<00:02:31.920> and<00:02:32.400> game\ndifferent experience. Um, and game\ndifferent experience. Um, and game developers,<00:02:33.200> you<00:02:33.519> always<00:02:33.840> are<00:02:34.080> visualizing\ndevelopers, you always are visualizing\ndevelopers, you always are visualizing things.<00:02:34.879> You're<00:02:35.120> always<00:02:35.280> trying<00:02:35.519> to<00:02:35.680> get<00:02:35.920> a\nthings. You're always trying to get a\nthings. You're always trying to get a different<00:02:36.319> view<00:02:36.480> into<00:02:36.720> your<00:02:36.879> data<00:02:37.040> to<00:02:37.200> make\ndifferent view into your data to make\ndifferent view into your data to make something<00:02:37.599> clear.\nsomething clear.\nsomething clear. Um,<00:02:40.480> and<00:02:40.800> we<00:02:41.120> use<00:02:41.360> those<00:02:41.680> visualization<00:02:42.239> tools\nUm, and we use those visualization tools\nUm, and we use those visualization tools to<00:02:42.879> create<00:02:43.599> better<00:02:44.000> software<00:02:45.120> more\nto create better software more\nto create better software more efficiently,<00:02:46.080> which<00:02:46.239> is<00:02:46.319> why<00:02:46.480> we're<00:02:46.640> all\nefficiently, which is why we're all\nefficiently, which is why we're all here,<00:02:46.959> right?<00:02:47.760> Um,<00:02:48.800> so<00:02:49.760> in<00:02:50.000> other<00:02:50.160> words,<00:02:50.400> it's\nhere, right? Um, so in other words, it's\nhere, right? Um, so in other words, it's it's<00:02:50.800> useful<00:02:51.120> when<00:02:51.760> cracking<00:02:52.080> the<00:02:52.319> code.<00:02:52.879> I\nit's useful when cracking the code. I\nit's useful when cracking the code. I did<00:02:53.360> the<00:02:53.599> title<00:02:53.920> thing.<00:02:54.319> So\ndid the title thing. So\ndid the title thing. So um<00:02:56.560> so<00:02:56.720> there<00:02:56.959> are<00:02:57.040> many<00:02:57.280> talks<00:02:58.000> uh<00:02:58.080> or\num so there are many talks uh or\num so there are many talks uh or resources<00:02:59.120> on<00:02:59.519> debuggers<00:03:00.319> but<00:03:00.879> um<00:03:01.120> my\nresources on debuggers but um my\nresources on debuggers but um my impression<00:03:01.599> is<00:03:01.760> that<00:03:01.920> not<00:03:02.159> many<00:03:02.319> of<00:03:02.400> them\nimpression is that not many of them\nimpression is that not many of them focus<00:03:02.879> on<00:03:03.599> this<00:03:03.840> visualization<00:03:04.560> problem<00:03:05.599> even\nfocus on this visualization problem even\nfocus on this visualization problem even though<00:03:06.000> I<00:03:06.159> would<00:03:06.319> claim<00:03:06.720> it's<00:03:07.599> perhaps<00:03:08.000> the\nthough I would claim it's perhaps the\nthough I would claim it's perhaps the most<00:03:08.480> important<00:03:08.720> problem<00:03:08.879> that<00:03:09.120> a<00:03:09.280> debugger\nmost important problem that a debugger\nmost important problem that a debugger needs<00:03:09.840> to<00:03:10.000> solve<00:03:10.239> is<00:03:10.480> is<00:03:10.800> quick<00:03:11.200> good\nneeds to solve is is quick good\nneeds to solve is is quick good visualization<00:03:12.080> flexible<00:03:12.480> visualization\nvisualization flexible visualization\nvisualization flexible visualization into<00:03:14.000> your<00:03:14.159> data.<00:03:15.440> Um<00:03:15.760> so<00:03:16.080> I'm<00:03:16.319> going<00:03:16.400> to\ninto your data. Um so I'm going to\ninto your data. Um so I'm going to present<00:03:16.720> all<00:03:16.879> the<00:03:16.959> work<00:03:17.120> that<00:03:17.280> I've<00:03:17.440> done<00:03:17.599> on\npresent all the work that I've done on\npresent all the work that I've done on that<00:03:18.000> problem<00:03:18.640> to<00:03:18.800> you<00:03:18.879> all<00:03:19.120> today.<00:03:20.080> Now,<00:03:20.319> if\nthat problem to you all today. Now, if\nthat problem to you all today. Now, if you<00:03:20.560> aren't<00:03:20.800> familiar<00:03:21.040> with<00:03:21.200> debuggers,<00:03:22.319> um,\nyou aren't familiar with debuggers, um,\nyou aren't familiar with debuggers, um, or<00:03:22.720> if<00:03:22.879> you<00:03:22.959> don't<00:03:23.120> know<00:03:23.200> what<00:03:23.360> I<00:03:23.519> mean<00:03:23.760> by\nor if you don't know what I mean by\nor if you don't know what I mean by visualization<00:03:24.720> using<00:03:24.959> a<00:03:25.120> debugger,<00:03:26.319> uh,<00:03:26.400> I\nvisualization using a debugger, uh, I\nvisualization using a debugger, uh, I have<00:03:26.640> some<00:03:26.800> videos<00:03:27.040> of<00:03:27.120> the<00:03:27.200> RAD<00:03:27.440> debugger\nhave some videos of the RAD debugger\nhave some videos of the RAD debugger that<00:03:28.000> I'd<00:03:28.239> like<00:03:28.319> to<00:03:28.560> share<00:03:28.800> to<00:03:28.959> set<00:03:29.120> the<00:03:29.360> stage\nthat I'd like to share to set the stage\nthat I'd like to share to set the stage for<00:03:30.000> everything<00:03:30.319> I'm<00:03:30.560> going<00:03:30.640> to<00:03:30.720> talk<00:03:30.879> about.\nfor everything I'm going to talk about.\nfor everything I'm going to talk about. So,<00:03:33.680> uh,<00:03:33.920> first<00:03:34.159> thing,<00:03:34.400> if<00:03:34.640> I've<00:03:34.799> got<00:03:35.040> I've\nSo, uh, first thing, if I've got I've\nSo, uh, first thing, if I've got I've got<00:03:35.360> my<00:03:35.519> little<00:03:35.680> game<00:03:36.000> project,<00:03:36.879> shameless\ngot my little game project, shameless\ngot my little game project, shameless plug,<00:03:38.080> it's<00:03:38.319> not<00:03:38.480> really<00:03:38.959> special<00:03:39.280> yet,<00:03:39.519> but,\nplug, it's not really special yet, but,\nplug, it's not really special yet, but, uh,<00:03:40.400> you<00:03:40.560> know,<00:03:40.640> if<00:03:40.799> I've<00:03:40.959> got<00:03:41.040> this<00:03:41.280> program,\nuh, you know, if I've got this program,\nuh, you know, if I've got this program, I<00:03:41.760> can<00:03:41.840> do<00:03:42.000> things<00:03:42.159> in<00:03:42.319> the<00:03:42.480> program.<00:03:43.599> Um\nI can do things in the program. Um\nI can do things in the program. Um if<00:03:45.360> I<00:03:45.519> want<00:03:45.599> to<00:03:45.760> run<00:03:45.920> that<00:03:46.080> from<00:03:46.239> within<00:03:46.400> the\nif I want to run that from within the\nif I want to run that from within the debugger<00:03:46.959> in<00:03:47.120> the<00:03:47.200> case<00:03:47.360> of<00:03:47.440> rad<00:03:47.680> debugger<00:03:47.920> I\ndebugger in the case of rad debugger I\ndebugger in the case of rad debugger I can<00:03:48.080> do<00:03:48.159> radg<00:03:48.959> same<00:03:49.200> command<00:03:49.519> line<00:03:50.159> opens<00:03:50.480> up\ncan do radg same command line opens up\ncan do radg same command line opens up the<00:03:50.720> debugger<00:03:51.040> I<00:03:51.200> can<00:03:51.280> either<00:03:51.519> launch<00:03:51.840> the\nthe debugger I can either launch the\nthe debugger I can either launch the program<00:03:53.040> from<00:03:53.920> like<00:03:54.319> uh<00:03:54.400> with<00:03:54.560> the<00:03:54.640> debugger\nprogram from like uh with the debugger\nprogram from like uh with the debugger attached\nattached\nattached um<00:03:58.239> I<00:03:58.480> can<00:03:58.560> also<00:03:58.799> step<00:03:59.040> into<00:03:59.200> the<00:03:59.360> program\num I can also step into the program\num I can also step into the program these<00:03:59.840> are<00:04:00.000> all<00:04:00.159> very<00:04:00.319> common<00:04:00.560> debugger\nthese are all very common debugger\nthese are all very common debugger features<00:04:01.280> right<00:04:01.439> I<00:04:01.599> can<00:04:01.680> step<00:04:01.840> through<00:04:02.080> the\nfeatures right I can step through the\nfeatures right I can step through the code<00:04:03.280> um\ncode um\ncode um so<00:04:05.519> in<00:04:05.680> that<00:04:05.840> case<00:04:06.000> I'm<00:04:06.159> stepping<00:04:06.319> over<00:04:06.560> lines\nso in that case I'm stepping over lines\nso in that case I'm stepping over lines of<00:04:06.879> source<00:04:07.200> code<00:04:07.760> I<00:04:07.920> can<00:04:08.080> evaluate<00:04:08.560> things<00:04:08.720> if\nof source code I can evaluate things if\nof source code I can evaluate things if I<00:04:09.120> hover<00:04:09.360> them\nuh<00:04:12.720> so<00:04:12.879> if<00:04:13.120> I<00:04:13.280> put<00:04:13.680> uh<00:04:13.760> I<00:04:14.000> can<00:04:14.159> put<00:04:14.239> a<00:04:14.400> variable\nuh so if I put uh I can put a variable\nuh so if I put uh I can put a variable into<00:04:15.200> the<00:04:15.439> watch<00:04:15.760> window<00:04:16.000> here.<00:04:17.040> Uh<00:04:17.759> so<00:04:18.000> in\ninto the watch window here. Uh so in\ninto the watch window here. Uh so in this<00:04:18.239> case<00:04:18.400> it's<00:04:18.560> the<00:04:18.720> global<00:04:19.040> shared<00:04:19.280> and<00:04:19.440> if\nthis case it's the global shared and if\nthis case it's the global shared and if I<00:04:19.680> expand<00:04:19.919> that<00:04:20.160> you<00:04:20.320> can<00:04:20.400> see<00:04:20.479> as<00:04:20.639> I<00:04:20.799> step\nI expand that you can see as I step\nI expand that you can see as I step through<00:04:21.120> the<00:04:21.280> code<00:04:21.440> you<00:04:21.680> see<00:04:21.840> things<00:04:22.079> change\nthrough the code you see things change\nthrough the code you see things change live.<00:04:22.800> It's<00:04:23.040> very<00:04:23.759> very<00:04:24.080> common<00:04:24.320> debugger<00:04:25.280> um\nlive. It's very very common debugger um\nlive. It's very very common debugger um features<00:04:26.080> really.<00:04:27.280> Um<00:04:28.080> debuggers<00:04:28.720> also<00:04:29.040> tend\nfeatures really. Um debuggers also tend\nfeatures really. Um debuggers also tend to<00:04:29.440> have<00:04:29.600> like<00:04:29.840> features<00:04:30.240> to<00:04:31.199> uh<00:04:31.520> navigate<00:04:31.919> to\nto have like features to uh navigate to\nto have like features to uh navigate to different<00:04:32.320> parts<00:04:32.560> of<00:04:32.639> the<00:04:32.880> code.<00:04:33.360> Um<00:04:33.919> so<00:04:34.080> I<00:04:34.320> can\ndifferent parts of the code. Um so I can\ndifferent parts of the code. Um so I can go<00:04:34.560> to<00:04:34.800> some<00:04:35.360> to<00:04:35.600> some<00:04:35.840> function<00:04:36.160> and<00:04:36.320> and\ngo to some to some function and and\ngo to some to some function and and place<00:04:36.880> a<00:04:37.040> break<00:04:37.280> point<00:04:37.600> say<00:04:37.840> stop<00:04:38.080> at<00:04:38.240> this\nplace a break point say stop at this\nplace a break point say stop at this line<00:04:38.560> of<00:04:38.720> source<00:04:38.960> code<00:04:40.240> and<00:04:40.479> so<00:04:40.639> on.<00:04:40.880> Right?\nline of source code and so on. Right?\nline of source code and so on. Right? That's<00:04:41.360> like<00:04:42.560> pretty<00:04:42.880> basic<00:04:43.120> debugger<00:04:43.600> stuff.\nThat's like pretty basic debugger stuff.\nThat's like pretty basic debugger stuff. Um,<00:04:45.600> that's<00:04:45.840> like<00:04:46.000> this<00:04:46.160> is<00:04:46.240> what<00:04:46.320> it<00:04:46.479> looks\nUm, that's like this is what it looks\nUm, that's like this is what it looks like<00:04:46.720> to<00:04:46.880> use<00:04:46.960> one,<00:04:47.280> right?\nGoogle<00:04:51.120> Slides<00:04:51.360> is<00:04:51.520> weird<00:04:51.759> with<00:04:52.080> videos.\nGoogle Slides is weird with videos.\nGoogle Slides is weird with videos. Okay,<00:04:52.800> so<00:04:53.040> let's<00:04:53.199> say<00:04:53.280> I've<00:04:53.440> got<00:04:53.520> a<00:04:53.680> crash<00:04:53.840> in\nOkay, so let's say I've got a crash in\nOkay, so let's say I've got a crash in my<00:04:54.160> game.<00:04:54.800> Um,<00:04:55.120> I'm<00:04:55.440> hooked<00:04:55.759> up<00:04:55.840> to<00:04:56.000> my<00:04:56.160> game.<00:04:56.320> I\nmy game. Um, I'm hooked up to my game. I\nmy game. Um, I'm hooked up to my game. I hit<00:04:56.639> F5<00:04:57.280> or<00:04:57.600> I<00:04:57.919> press<00:04:58.160> the<00:04:58.479> green<00:04:58.639> arrow.<00:04:58.960> F5<00:04:59.280> is\nhit F5 or I press the green arrow. F5 is\nhit F5 or I press the green arrow. F5 is the<00:04:59.520> hotkey<00:04:59.759> for<00:04:59.919> that.<00:05:00.400> Uh,<00:05:00.560> the<00:05:00.720> debugger\nthe hotkey for that. Uh, the debugger\nthe hotkey for that. Uh, the debugger will<00:05:01.280> catch<00:05:01.440> that.<00:05:01.680> It'll<00:05:02.000> show<00:05:02.080> me<00:05:02.240> where\nwill catch that. It'll show me where\nwill catch that. It'll show me where that<00:05:02.639> is.<00:05:02.880> I<00:05:03.040> can<00:05:03.120> dig<00:05:03.360> into<00:05:03.600> things<00:05:03.759> like<00:05:03.919> the\nthat is. I can dig into things like the\nthat is. I can dig into things like the call<00:05:04.320> stack.<00:05:05.040> I<00:05:05.280> can<00:05:05.440> see<00:05:05.680> I<00:05:05.919> can<00:05:06.080> evaluate\ncall stack. I can see I can evaluate\ncall stack. I can see I can evaluate things<00:05:06.800> still.<00:05:07.120> I<00:05:07.280> can<00:05:07.440> I<00:05:07.680> can<00:05:07.840> see<00:05:08.000> why<00:05:08.320> some\nthings still. I can I can see why some\nthings still. I can I can see why some bug<00:05:08.880> is<00:05:09.039> happening,<00:05:09.360> right?<00:05:09.440> I<00:05:09.680> can<00:05:09.840> see<00:05:10.320> I<00:05:10.560> can\nbug is happening, right? I can see I can\nbug is happening, right? I can see I can sort<00:05:10.960> of<00:05:11.039> get<00:05:11.199> visibility<00:05:11.600> into<00:05:11.919> the<00:05:12.080> system\nsort of get visibility into the system\nsort of get visibility into the system when<00:05:12.960> something<00:05:13.199> goes<00:05:13.440> wrong.<00:05:14.479> Um<00:05:14.720> I<00:05:14.960> can<00:05:15.120> go\nwhen something goes wrong. Um I can go\nwhen something goes wrong. Um I can go back<00:05:15.680> uh<00:05:15.919> frames<00:05:16.240> in<00:05:16.320> the<00:05:16.479> call<00:05:16.720> stack.<00:05:17.600> Uh\nback uh frames in the call stack. Uh\nback uh frames in the call stack. Uh stuff<00:05:18.400> like<00:05:18.639> this.\nOkay.<00:05:24.320> So<00:05:24.560> you<00:05:24.720> know<00:05:24.960> let's<00:05:25.120> say<00:05:25.360> like<00:05:25.600> in<00:05:25.759> in\nOkay. So you know let's say like in in\nOkay. So you know let's say like in in my<00:05:26.320> game<00:05:26.560> for<00:05:26.639> example<00:05:26.960> the<00:05:27.199> the<00:05:27.360> player<00:05:27.680> can\nmy game for example the the player can\nmy game for example the the player can like<00:05:28.240> hit<00:05:28.479> something.<00:05:28.880> So<00:05:28.960> if<00:05:29.199> I<00:05:29.520> go<00:05:29.600> ahead<00:05:29.840> and\nlike hit something. So if I go ahead and\nlike hit something. So if I go ahead and spawn<00:05:30.639> a<00:05:31.120> a<00:05:31.280> little<00:05:31.440> jelly<00:05:31.840> entity<00:05:32.160> here<00:05:32.720> I<00:05:32.960> can\nspawn a a little jelly entity here I can\nspawn a a little jelly entity here I can walk<00:05:33.199> up<00:05:33.440> as<00:05:33.680> the<00:05:33.840> player<00:05:34.160> and<00:05:34.400> punch<00:05:34.639> it.<00:05:35.600> If<00:05:35.840> I\nwalk up as the player and punch it. If I\nwalk up as the player and punch it. If I wanted<00:05:36.160> to<00:05:36.400> specifically<00:05:36.960> stop<00:05:37.680> when<00:05:38.560> that\nwanted to specifically stop when that\nwanted to specifically stop when that punching<00:05:39.360> code<00:05:39.680> path<00:05:39.840> is<00:05:40.000> hitting,<00:05:40.320> I<00:05:40.479> can<00:05:40.639> go\npunching code path is hitting, I can go\npunching code path is hitting, I can go and<00:05:40.960> find<00:05:41.120> wherever<00:05:41.440> I<00:05:41.520> wrote<00:05:41.759> the<00:05:41.919> code,<00:05:42.400> put\nand find wherever I wrote the code, put\nand find wherever I wrote the code, put a<00:05:42.639> break<00:05:42.880> point<00:05:43.120> there,<00:05:43.440> and<00:05:43.680> then<00:05:43.840> I<00:05:44.080> can<00:05:44.240> just\na break point there, and then I can just\na break point there, and then I can just like<00:05:45.840> uh<00:05:46.080> wait<00:05:46.320> for<00:05:46.479> some<00:05:46.800> wait<00:05:47.039> for<00:05:47.120> that\nlike uh wait for some wait for that\nlike uh wait for some wait for that event<00:05:47.520> to<00:05:47.680> happen,<00:05:47.919> right?<00:05:48.080> Wait<00:05:48.240> for<00:05:48.320> that\nevent to happen, right? Wait for that\nevent to happen, right? Wait for that code<00:05:48.639> path<00:05:48.800> to<00:05:48.960> be<00:05:49.039> executed.<00:05:49.840> You<00:05:50.080> stop.<00:05:50.800> Um\ncode path to be executed. You stop. Um\ncode path to be executed. You stop. Um and<00:05:51.280> at<00:05:51.440> that<00:05:51.600> point,<00:05:51.759> I<00:05:51.919> can<00:05:52.000> inspect<00:05:52.320> the\nand at that point, I can inspect the\nand at that point, I can inspect the state,<00:05:52.720> right?<00:05:52.960> Most,<00:05:53.280> you<00:05:53.440> know,<00:05:53.600> very\nstate, right? Most, you know, very\nstate, right? Most, you know, very common<00:05:54.000> debugger<00:05:54.400> stuff,<00:05:54.560> but<00:05:54.800> I<00:05:54.960> know<00:05:55.039> a<00:05:55.199> lot\ncommon debugger stuff, but I know a lot\ncommon debugger stuff, but I know a lot of<00:05:55.360> people<00:05:55.520> don't.<00:05:55.919> They<00:05:56.160> claim<00:05:56.479> they<00:05:56.639> don't\nof people don't. They claim they don't\nof people don't. They claim they don't use<00:05:56.960> debugger,<00:05:57.440> so<00:05:57.840> I<00:05:58.080> figured<00:05:58.320> I<00:05:58.560> would<00:05:58.639> just\nuse debugger, so I figured I would just\nuse debugger, so I figured I would just show<00:05:59.039> it.<00:05:59.440> Um<00:06:00.639> you<00:06:00.880> can<00:06:00.960> also<00:06:01.120> add<00:06:01.280> conditions\nshow it. Um you can also add conditions\nshow it. Um you can also add conditions to<00:06:01.680> a<00:06:01.840> breakpoint.<00:06:02.240> You<00:06:02.320> could<00:06:02.479> say<00:06:02.800> only<00:06:03.120> stop\nto a breakpoint. You could say only stop\nto a breakpoint. You could say only stop if<00:06:03.680> this<00:06:03.840> condition<00:06:04.160> is<00:06:04.319> true.<00:06:04.639> So<00:06:04.800> in<00:06:04.960> this\nif this condition is true. So in this\nif this condition is true. So in this case,<00:06:05.199> I'm<00:06:05.360> checking<00:06:06.000> if<00:06:06.240> it's<00:06:06.479> specifically\ncase, I'm checking if it's specifically\ncase, I'm checking if it's specifically the<00:06:07.280> player's<00:06:07.680> right<00:06:07.919> hand<00:06:08.080> or<00:06:08.319> right<00:06:08.560> hand<00:06:08.960> uh\nthe player's right hand or right hand uh\nthe player's right hand or right hand uh from<00:06:09.600> our<00:06:09.759> perspective,<00:06:10.319> right?\nfrom our perspective, right?\nfrom our perspective, right? So<00:06:12.080> yeah,<00:06:12.319> there<00:06:12.479> you<00:06:12.639> go.\nSo yeah, there you go.\nSo yeah, there you go. Uh<00:06:15.840> so<00:06:16.000> what<00:06:16.160> exactly<00:06:16.479> do<00:06:16.639> I<00:06:16.720> mean<00:06:16.880> by\nUh so what exactly do I mean by\nUh so what exactly do I mean by visualization?<00:06:17.840> Um<00:06:18.720> as<00:06:19.120> I<00:06:19.360> kind<00:06:19.520> of<00:06:19.600> covered\nvisualization? Um as I kind of covered\nvisualization? Um as I kind of covered already,<00:06:20.160> a<00:06:20.400> basic<00:06:20.639> version<00:06:20.720> of<00:06:20.880> this<00:06:21.039> is<00:06:21.199> the\nalready, a basic version of this is the\nalready, a basic version of this is the watch<00:06:21.600> window,<00:06:22.240> right?<00:06:22.479> You<00:06:22.720> can<00:06:22.800> evaluate<00:06:23.360> an\nwatch window, right? You can evaluate an\nwatch window, right? You can evaluate an expression<00:06:24.479> um<00:06:24.560> and<00:06:24.800> see<00:06:25.039> things<00:06:25.280> change.\nexpression um and see things change.\nexpression um and see things change. Another<00:06:26.400> example<00:06:27.039> would<00:06:27.280> be<00:06:28.080> memory<00:06:28.479> view.\nAnother example would be memory view.\nAnother example would be memory view. It's<00:06:29.199> just<00:06:29.360> another<00:06:29.680> very<00:06:30.000> common<00:06:31.199> uh\nIt's just another very common uh\nIt's just another very common uh visualization<00:06:32.560> technique<00:06:32.880> in<00:06:33.120> a<00:06:33.199> debugger.\nvisualization technique in a debugger.\nvisualization technique in a debugger. you<00:06:33.680> just<00:06:33.759> want<00:06:33.840> to<00:06:34.000> see<00:06:34.080> a<00:06:34.240> grid<00:06:34.400> of<00:06:34.560> bytes<00:06:35.280> uh\nyou just want to see a grid of bytes uh\nyou just want to see a grid of bytes uh in<00:06:35.680> sort<00:06:35.840> of<00:06:35.919> a<00:06:36.000> hex<00:06:36.240> editor<00:06:36.720> style<00:06:37.039> view.<00:06:38.000> Um\nin sort of a hex editor style view. Um\nin sort of a hex editor style view. Um and<00:06:39.280> then<00:06:39.440> many<00:06:39.680> of<00:06:39.759> the<00:06:39.840> same<00:06:40.000> things<00:06:40.160> apply\nand then many of the same things apply\nand then many of the same things apply right<00:06:40.639> as<00:06:40.800> I<00:06:40.960> step<00:06:41.120> through<00:06:41.280> the<00:06:41.440> program<00:06:41.759> I\nright as I step through the program I\nright as I step through the program I can<00:06:42.080> I<00:06:42.319> can<00:06:43.039> see<00:06:43.600> particular<00:06:44.000> bytes<00:06:44.400> change.\ncan I can see particular bytes change.\ncan I can see particular bytes change. So<00:06:44.800> here<00:06:44.960> I'm<00:06:45.120> evaluating<00:06:45.520> the<00:06:45.680> string\nSo here I'm evaluating the string\nSo here I'm evaluating the string variable<00:06:47.360> um\nvariable um\nvariable um and<00:06:49.520> then<00:06:49.680> I<00:06:50.160> assume<00:06:50.560> I<00:06:50.800> think<00:06:50.880> I<00:06:51.039> go<00:06:51.199> to<00:06:51.360> the<00:06:51.680> to\nand then I assume I think I go to the to\nand then I assume I think I go to the to the<00:06:52.000> memory<00:06:52.240> for<00:06:52.400> it<00:06:52.560> and<00:06:52.720> if<00:06:52.880> I<00:06:53.039> step<00:06:53.280> you'll\nthe memory for it and if I step you'll\nthe memory for it and if I step you'll see<00:06:53.919> it<00:06:54.160> changes\nsee it changes\nsee it changes etc.<00:06:56.080> So,<00:06:56.400> so<00:06:56.800> basic<00:06:57.360> very<00:06:57.600> common<00:06:57.840> debugger\netc. So, so basic very common debugger\netc. So, so basic very common debugger visualiza<00:06:58.880> uh<00:06:59.039> visualization<00:06:59.599> features<00:07:00.000> but\nvisualiza uh visualization features but\nvisualiza uh visualization features but this<00:07:00.319> is<00:07:00.479> like<00:07:00.960> this<00:07:01.199> is<00:07:01.360> the<00:07:01.520> subject.<00:07:02.080> Now\nthis is like this is the subject. Now\nthis is like this is the subject. Now again<00:07:03.360> just<00:07:03.520> a<00:07:03.680> couple<00:07:03.840> basic<00:07:04.160> examples<00:07:04.479> we'll\nagain just a couple basic examples we'll\nagain just a couple basic examples we'll get<00:07:04.800> into<00:07:05.039> more<00:07:05.440> later\nget into more later\nget into more later but<00:07:07.440> I<00:07:07.599> find<00:07:07.759> this<00:07:08.000> particular<00:07:08.400> problem\nbut I find this particular problem\nbut I find this particular problem important<00:07:09.599> because<00:07:09.840> for<00:07:10.080> me<00:07:10.240> while<00:07:10.479> learning\nimportant because for me while learning\nimportant because for me while learning programming<00:07:11.520> things<00:07:11.759> would<00:07:11.919> often<00:07:12.240> feel<00:07:13.120> like\nprogramming things would often feel like\nprogramming things would often feel like this.<00:07:13.919> Now<00:07:14.160> for<00:07:14.319> those<00:07:14.560> who<00:07:14.720> don't<00:07:14.800> know<00:07:14.880> what\nthis. Now for those who don't know what\nthis. Now for those who don't know what this<00:07:15.199> is<00:07:15.759> either<00:07:16.479> this<00:07:16.639> is<00:07:16.800> the<00:07:16.960> origin<00:07:17.199> of<00:07:17.280> the\nthis is either this is the origin of the\nthis is either this is the origin of the term<00:07:17.759> blackbox.<00:07:18.720> Uh<00:07:18.880> it's<00:07:19.039> a<00:07:19.199> flight<00:07:19.360> log\nterm blackbox. Uh it's a flight log\nterm blackbox. Uh it's a flight log recording<00:07:19.919> device.<00:07:20.479> Uh<00:07:21.039> and<00:07:21.360> yes<00:07:21.919> I<00:07:22.160> thought\nrecording device. Uh and yes I thought\nrecording device. Uh and yes I thought it<00:07:22.479> would<00:07:22.560> have<00:07:22.639> been<00:07:22.800> black<00:07:23.120> as<00:07:23.360> well.<00:07:24.400> uh<00:07:24.560> but\nit would have been black as well. uh but\nit would have been black as well. uh but no<00:07:25.039> it's<00:07:25.360> orange<00:07:25.680> for<00:07:26.000> whatever<00:07:26.319> reason<00:07:26.880> but\nno it's orange for whatever reason but\nno it's orange for whatever reason but in<00:07:27.919> programming<00:07:28.319> we've<00:07:28.560> abstracted<00:07:29.039> the<00:07:29.199> term\nin programming we've abstracted the term\nin programming we've abstracted the term as<00:07:30.319> we<00:07:30.479> know<00:07:30.720> programs<00:07:31.120> can<00:07:31.199> be<00:07:31.360> understood<00:07:31.840> as\nas we know programs can be understood as\nas we know programs can be understood as a<00:07:32.319> transform<00:07:33.039> from<00:07:33.280> A<00:07:33.440> to<00:07:33.599> B<00:07:33.919> right<00:07:34.160> some<00:07:34.319> input\na transform from A to B right some input\na transform from A to B right some input data<00:07:35.039> in<00:07:35.280> some<00:07:35.440> format<00:07:35.840> A<00:07:36.160> to<00:07:36.400> some<00:07:36.560> output\ndata in some format A to some output\ndata in some format A to some output data<00:07:37.280> in<00:07:37.520> format<00:07:37.919> B<00:07:39.199> um<00:07:40.160> we<00:07:40.400> use<00:07:40.479> the<00:07:40.639> term\ndata in format B um we use the term\ndata in format B um we use the term blackbox<00:07:41.440> when<00:07:41.599> we<00:07:41.840> don't<00:07:42.000> know<00:07:42.160> anything\nblackbox when we don't know anything\nblackbox when we don't know anything about<00:07:42.800> why\nabout why\nabout why something<00:07:44.800> happens<00:07:45.520> between<00:07:45.840> A<00:07:46.080> and<00:07:46.240> B<00:07:46.960> we\nsomething happens between A and B we\nsomething happens between A and B we don't<00:07:47.280> know<00:07:47.680> why<00:07:47.919> it<00:07:48.080> produces<00:07:48.400> B<00:07:48.639> we<00:07:48.720> don't\ndon't know why it produces B we don't\ndon't know why it produces B we don't know<00:07:48.960> how<00:07:49.120> it's<00:07:49.360> happening<00:07:50.000> we<00:07:50.160> hit<00:07:50.319> a<00:07:50.479> button\nknow how it's happening we hit a button\nknow how it's happening we hit a button we<00:07:50.880> run<00:07:51.039> a<00:07:51.199> program<00:07:51.759> and<00:07:52.000> something<00:07:52.400> happens\nwe run a program and something happens\nwe run a program and something happens out<00:07:53.039> pops<00:07:53.280> a\nout pops a\nout pops a You<00:07:54.400> know,<00:07:54.560> maybe<00:07:55.199> you<00:07:55.440> hope<00:07:56.240> it<00:07:56.400> works<00:07:57.120> great\nYou know, maybe you hope it works great\nYou know, maybe you hope it works great and<00:07:57.599> if<00:07:57.680> it<00:07:57.840> doesn't<00:07:58.639> go,<00:07:59.360> right?<00:08:00.240> Another<00:08:00.560> way\nand if it doesn't go, right? Another way\nand if it doesn't go, right? Another way of<00:08:00.800> looking<00:08:00.960> at<00:08:01.120> this<00:08:01.360> is<00:08:01.520> that<00:08:01.680> the<00:08:01.840> arrow<00:08:02.160> in\nof looking at this is that the arrow in\nof looking at this is that the arrow in the<00:08:02.400> middle,<00:08:02.960> the<00:08:03.280> code\nthe middle, the code\nthe middle, the code is<00:08:05.520> showing<00:08:05.840> very<00:08:06.160> few<00:08:06.400> signs<00:08:06.639> of<00:08:06.879> life.<00:08:07.680> Your\nis showing very few signs of life. Your\nis showing very few signs of life. Your program<00:08:08.160> is<00:08:08.400> doing<00:08:08.560> something<00:08:08.879> maybe\nprogram is doing something maybe\nprogram is doing something maybe undesirable<00:08:10.080> and<00:08:10.240> you<00:08:10.479> don't<00:08:10.639> know<00:08:10.879> why.\nundesirable and you don't know why.\nundesirable and you don't know why. There's<00:08:12.000> very<00:08:12.240> little<00:08:12.479> information<00:08:12.879> coming\nThere's very little information coming\nThere's very little information coming out<00:08:13.280> of<00:08:13.360> the<00:08:13.599> system.<00:08:14.560> Meanwhile,<00:08:14.960> you<00:08:15.120> just\nout of the system. Meanwhile, you just\nout of the system. Meanwhile, you just want<00:08:15.360> your<00:08:15.520> program<00:08:15.759> to<00:08:15.919> work.\nwant your program to work.\nwant your program to work. As<00:08:17.840> I<00:08:18.080> see<00:08:18.160> it,<00:08:18.800> the<00:08:19.039> challenge<00:08:19.280> here<00:08:19.440> is<00:08:19.520> that\nAs I see it, the challenge here is that\nAs I see it, the challenge here is that computers<00:08:20.080> are<00:08:20.319> inherently<00:08:20.800> opaque<00:08:21.120> to<00:08:21.199> us.\ncomputers are inherently opaque to us.\ncomputers are inherently opaque to us. They're<00:08:21.599> doing<00:08:22.000> billions<00:08:22.400> and<00:08:22.639> billions<00:08:22.960> of\nThey're doing billions and billions of\nThey're doing billions and billions of things<00:08:23.919> per<00:08:24.160> second.<00:08:25.120> And<00:08:25.280> so<00:08:25.520> there's\nthings per second. And so there's\nthings per second. And so there's actually<00:08:25.919> an<00:08:26.080> enormous<00:08:26.479> amount<00:08:26.639> of\nactually an enormous amount of\nactually an enormous amount of information<00:08:27.199> you<00:08:27.360> might<00:08:27.599> actually<00:08:27.919> imagine\ninformation you might actually imagine\ninformation you might actually imagine needing<00:08:29.280> in<00:08:29.520> order<00:08:29.680> to<00:08:29.919> understand<00:08:30.240> what's\nneeding in order to understand what's\nneeding in order to understand what's happening.\nhappening.\nhappening. So<00:08:32.640> it's<00:08:32.800> always<00:08:32.959> a<00:08:33.120> game<00:08:33.279> of<00:08:33.440> understanding\nSo it's always a game of understanding\nSo it's always a game of understanding how<00:08:34.080> to<00:08:34.479> narrow<00:08:34.800> down<00:08:34.959> to<00:08:35.120> the<00:08:35.279> subset<00:08:35.599> of\nhow to narrow down to the subset of\nhow to narrow down to the subset of information<00:08:36.320> you<00:08:36.560> actually<00:08:36.719> care<00:08:36.959> about<00:08:37.120> and\ninformation you actually care about and\ninformation you actually care about and presenting<00:08:37.760> it<00:08:37.919> in<00:08:38.000> a<00:08:38.159> way<00:08:38.240> that<00:08:38.399> makes<00:08:38.560> sense.\npresenting it in a way that makes sense.\npresenting it in a way that makes sense. Um\nnow<00:08:43.440> one<00:08:43.599> of<00:08:43.680> the<00:08:43.839> first<00:08:44.320> ways<00:08:44.560> we<00:08:44.800> learn<00:08:45.040> to\nnow one of the first ways we learn to\nnow one of the first ways we learn to extract<00:08:45.680> information<00:08:46.640> uh<00:08:46.800> from<00:08:46.959> a<00:08:47.120> program<00:08:47.360> is\nextract information uh from a program is\nextract information uh from a program is through<00:08:47.680> textual<00:08:48.160> logging<00:08:49.040> or<00:08:49.519> uh<00:08:49.680> print\nthrough textual logging or uh print\nthrough textual logging or uh print debugging.\ndebugging.\ndebugging. uh<00:08:51.760> your<00:08:52.000> program<00:08:52.240> does<00:08:52.399> whatever<00:08:52.720> it<00:08:52.880> was\nuh your program does whatever it was\nuh your program does whatever it was going<00:08:53.200> to<00:08:53.360> do<00:08:53.760> and<00:08:54.000> then<00:08:54.160> in<00:08:54.399> addition<00:08:54.640> to\ngoing to do and then in addition to\ngoing to do and then in addition to whatever<00:08:55.120> it<00:08:55.279> was<00:08:55.440> going<00:08:55.519> to<00:08:55.600> do<00:08:55.760> like<00:08:55.920> the\nwhatever it was going to do like the\nwhatever it was going to do like the thing<00:08:56.160> you<00:08:56.320> actually<00:08:56.560> wanted<00:08:56.720> it<00:08:56.959> to<00:08:57.040> do<00:08:57.600> it<00:08:57.760> it\nthing you actually wanted it to do it it\nthing you actually wanted it to do it it produces<00:08:58.480> a<00:08:58.720> parallel<00:08:59.200> output<00:08:59.680> which<00:08:59.920> is<00:09:00.080> just\nproduces a parallel output which is just\nproduces a parallel output which is just like<00:09:00.480> the<00:09:00.640> textual<00:09:01.120> log<00:09:01.360> of<00:09:01.519> of<00:09:02.160> what<00:09:02.399> happens\nlike the textual log of of what happens\nlike the textual log of of what happens they<00:09:02.880> come<00:09:03.040> from<00:09:03.360> print<00:09:03.600> statements<00:09:04.000> you\nthey come from print statements you\nthey come from print statements you annotate<00:09:04.480> your<00:09:04.640> program<00:09:04.880> with<00:09:05.680> now<00:09:05.839> you'll\nannotate your program with now you'll\nannotate your program with now you'll see<00:09:06.320> some<00:09:06.480> people<00:09:06.800> make<00:09:06.959> the<00:09:07.200> argument<00:09:07.920> that\nsee some people make the argument that\nsee some people make the argument that this<00:09:08.399> is<00:09:08.480> all<00:09:08.640> they<00:09:08.800> need\nthis is all they need\nthis is all they need and<00:09:10.959> what<00:09:11.360> what<00:09:11.600> I'm<00:09:11.760> about<00:09:11.920> to<00:09:12.080> say<00:09:12.240> might\nand what what I'm about to say might\nand what what I'm about to say might surprise<00:09:12.800> you<00:09:13.440> but<00:09:13.600> in<00:09:13.839> one<00:09:14.000> sense<00:09:14.800> they're\nsurprise you but in one sense they're\nsurprise you but in one sense they're right<00:09:16.160> but<00:09:16.320> there<00:09:16.399> are<00:09:16.560> two<00:09:16.720> problems<00:09:16.880> with\nright but there are two problems with\nright but there are two problems with their<00:09:17.200> argument<00:09:18.000> one<00:09:18.240> problem<00:09:18.560> we<00:09:18.800> can<00:09:18.959> solve\ntheir argument one problem we can solve\ntheir argument one problem we can solve while<00:09:19.440> keeping<00:09:19.680> print<00:09:19.920> debugging\nwhile keeping print debugging\nwhile keeping print debugging One<00:09:21.040> problem<00:09:21.279> we<00:09:21.519> cannot\nOne problem we cannot\nOne problem we cannot problem<00:09:23.600> number<00:09:23.839> one\nproblem number one\nproblem number one text<00:09:26.640> often<00:09:26.959> sucks\nuh<00:09:31.040> it's<00:09:31.200> often<00:09:31.519> insufficient<00:09:32.080> right<00:09:32.240> you\nuh it's often insufficient right you\nuh it's often insufficient right you can't<00:09:32.560> understand<00:09:32.800> what<00:09:32.959> it's<00:09:33.200> actually\ncan't understand what it's actually\ncan't understand what it's actually encoding<00:09:34.000> let's<00:09:34.240> go<00:09:34.320> ahead<00:09:34.480> and<00:09:34.560> do<00:09:34.640> an\nencoding let's go ahead and do an\nencoding let's go ahead and do an example<00:09:36.160> let's<00:09:36.399> say<00:09:36.560> we<00:09:36.720> have<00:09:36.800> some<00:09:36.959> image\nexample let's say we have some image\nexample let's say we have some image format<00:09:38.160> decoding<00:09:38.959> uh<00:09:39.440> we<00:09:39.680> have<00:09:39.760> some<00:09:39.920> image\nformat decoding uh we have some image\nformat decoding uh we have some image format<00:09:40.560> decoding<00:09:41.120> code<00:09:42.480> and<00:09:43.120> uh<00:09:43.519> we<00:09:44.080> we<00:09:44.399> want\nformat decoding code and uh we we want\nformat decoding code and uh we we want to<00:09:44.720> test<00:09:44.880> it<00:09:45.040> and<00:09:45.279> we<00:09:45.519> expect<00:09:45.760> to<00:09:46.000> get<00:09:46.320> you<00:09:46.480> know\nto test it and we expect to get you know\nto test it and we expect to get you know something<00:09:46.800> like<00:09:47.040> this<00:09:47.279> image\nCan<00:09:50.880> anyone<00:09:51.120> tell<00:09:51.279> me<00:09:51.440> where<00:09:51.600> the<00:09:51.760> bad<00:09:52.000> pixels\nCan anyone tell me where the bad pixels\nCan anyone tell me where the bad pixels are<00:09:52.720> after<00:09:52.959> I've<00:09:53.120> loaded<00:09:53.360> the<00:09:53.519> image?<00:09:53.680> I've\nare after I've loaded the image? I've\nare after I've loaded the image? I've I've<00:09:54.080> done<00:09:54.240> the<00:09:54.399> print<00:09:54.640> f<00:09:54.800> debugging.\nI've done the print f debugging.\nI've done the print f debugging. Okay,\nOkay,\nOkay, if<00:09:59.279> you're<00:09:59.440> looking<00:09:59.519> at<00:09:59.680> this,<00:09:59.920> it's<00:10:00.080> like,\nif you're looking at this, it's like,\nif you're looking at this, it's like, oh,<00:10:00.640> like<00:10:00.880> what's<00:10:01.040> that?<00:10:01.360> What<00:10:01.440> are<00:10:01.600> those\noh, like what's that? What are those\noh, like what's that? What are those fuchsia<00:10:02.320> pixels<00:10:02.720> in<00:10:02.880> the<00:10:03.040> corner,<00:10:03.279> right?\nfuchsia pixels in the corner, right?\nfuchsia pixels in the corner, right? Like<00:10:03.600> what<00:10:03.760> is<00:10:03.920> that<00:10:04.080> about?<00:10:05.040> So,<00:10:05.279> you<00:10:05.440> can\nLike what is that about? So, you can\nLike what is that about? So, you can instantly<00:10:06.000> see<00:10:06.160> the<00:10:06.399> problem<00:10:06.720> when<00:10:06.959> it's\ninstantly see the problem when it's\ninstantly see the problem when it's presented<00:10:07.440> to<00:10:07.519> you<00:10:07.680> in<00:10:07.839> a<00:10:08.000> different<00:10:08.160> way.\npresented to you in a different way.\npresented to you in a different way. Similarly,<00:10:09.680> you<00:10:09.839> have<00:10:09.920> some<00:10:10.080> 3D<00:10:10.480> geometry\nSimilarly, you have some 3D geometry\nSimilarly, you have some 3D geometry data<00:10:11.519> and<00:10:11.760> I<00:10:12.000> give<00:10:12.080> you<00:10:12.240> this.\ndata and I give you this.\ndata and I give you this. you're<00:10:14.640> not<00:10:14.720> going<00:10:14.800> to<00:10:14.880> be<00:10:15.040> very<00:10:15.279> quick<00:10:15.440> to\nyou're not going to be very quick to\nyou're not going to be very quick to like<00:10:16.480> pick<00:10:16.720> out<00:10:16.959> where<00:10:17.200> the<00:10:17.360> broken<00:10:17.680> vertex\nlike pick out where the broken vertex\nlike pick out where the broken vertex is,<00:10:18.399> right?\nis, right?\nis, right? Um,\nUm,\nUm, but<00:10:22.640> if<00:10:22.880> I<00:10:23.040> show<00:10:23.200> you<00:10:23.360> this,<00:10:23.680> it's<00:10:23.920> like,<00:10:24.160> wow,\nbut if I show you this, it's like, wow,\nbut if I show you this, it's like, wow, something's<00:10:24.800> really<00:10:24.959> off<00:10:25.200> there,<00:10:25.440> right?\nsomething's really off there, right?\nsomething's really off there, right? It's<00:10:25.760> like<00:10:25.839> you've<00:10:26.079> got<00:10:26.160> this<00:10:26.320> cube<00:10:26.560> structure\nIt's like you've got this cube structure\nIt's like you've got this cube structure and<00:10:27.600> then,<00:10:28.320> uh,<00:10:29.440> what's<00:10:29.760> that<00:10:29.920> vertex<00:10:30.560> doing\nand then, uh, what's that vertex doing\nand then, uh, what's that vertex doing over<00:10:31.120> there?<00:10:31.360> Like,<00:10:31.519> what<00:10:31.680> is<00:10:31.760> that<00:10:31.920> about?\nover there? Like, what is that about?\nover there? Like, what is that about? You<00:10:32.800> know,<00:10:34.240> so<00:10:34.959> there<00:10:35.120> are<00:10:35.279> numerous<00:10:35.760> examples\nYou know, so there are numerous examples\nYou know, so there are numerous examples like<00:10:36.399> this.<00:10:37.040> Text<00:10:37.279> is<00:10:37.440> sometimes<00:10:37.839> exactly\nlike this. Text is sometimes exactly\nlike this. Text is sometimes exactly what<00:10:38.399> you<00:10:38.560> want.<00:10:38.880> It's<00:10:39.040> often<00:10:39.360> times<00:10:40.240> uh<00:10:40.640> not.\nwhat you want. It's often times uh not.\nwhat you want. It's often times uh not. Uh<00:10:42.399> but<00:10:42.720> this<00:10:42.880> is<00:10:42.959> the<00:10:43.120> problem<00:10:43.279> I<00:10:43.440> suggested\nUh but this is the problem I suggested\nUh but this is the problem I suggested we<00:10:44.000> could<00:10:44.160> solve.<00:10:44.880> So<00:10:45.120> even<00:10:45.279> when<00:10:45.519> text<00:10:45.760> is<00:10:45.920> not\nwe could solve. So even when text is not\nwe could solve. So even when text is not enough,<00:10:46.640> you<00:10:46.880> didn't<00:10:47.120> necessarily<00:10:47.680> need<00:10:47.920> your\nenough, you didn't necessarily need your\nenough, you didn't necessarily need your log<00:10:48.880> to<00:10:49.200> just<00:10:49.440> produce<00:10:49.760> text.<00:10:50.079> You<00:10:50.240> didn't\nlog to just produce text. You didn't\nlog to just produce text. You didn't just<00:10:50.640> need<00:10:50.800> the<00:10:50.959> print<00:10:51.279> statement,<00:10:51.680> right?<00:10:52.000> Or\njust need the print statement, right? Or\njust need the print statement, right? Or maybe<00:10:52.399> that's<00:10:52.640> not<00:10:52.800> the<00:10:52.880> only<00:10:53.040> thing<00:10:53.120> you\nmaybe that's not the only thing you\nmaybe that's not the only thing you could<00:10:53.440> have<00:10:53.680> done.<00:10:54.640> So<00:10:54.800> this<00:10:55.040> is<00:10:55.120> an<00:10:55.279> example\ncould have done. So this is an example\ncould have done. So this is an example of<00:10:55.680> one<00:10:55.920> solution<00:10:56.079> to<00:10:56.320> that<00:10:56.480> problem.<00:10:56.880> This<00:10:57.040> is\nof one solution to that problem. This is\nof one solution to that problem. This is graph<00:10:57.440> viz<00:10:58.640> um<00:10:59.360> uh<00:10:59.440> or<00:10:59.600> a<00:10:59.760> screenshot<00:11:00.079> from<00:11:00.160> the\ngraph viz um uh or a screenshot from the\ngraph viz um uh or a screenshot from the graph<00:11:00.480> viz<00:11:00.720> visualizer.<00:11:01.360> In<00:11:01.519> this<00:11:01.600> case,<00:11:01.839> you\ngraph viz visualizer. In this case, you\ngraph viz visualizer. In this case, you your<00:11:02.240> program<00:11:02.560> still<00:11:02.720> outputs<00:11:03.120> text,<00:11:04.079> but\nyour program still outputs text, but\nyour program still outputs text, but it's<00:11:04.800> um<00:11:06.160> uh<00:11:06.399> it<00:11:06.640> outputs<00:11:07.120> text<00:11:07.279> in<00:11:07.440> a\nit's um uh it outputs text in a\nit's um uh it outputs text in a structured<00:11:07.920> format<00:11:08.240> that<00:11:08.399> can<00:11:08.480> be<00:11:08.640> parsed<00:11:08.880> by\nstructured format that can be parsed by\nstructured format that can be parsed by a<00:11:09.040> visualizer<00:11:09.519> program.<00:11:10.240> present<00:11:10.560> your<00:11:10.720> data\na visualizer program. present your data\na visualizer program. present your data like<00:11:11.120> a<00:11:11.279> graph<00:11:11.519> like<00:11:11.680> this,<00:11:12.160> right?\nlike a graph like this, right?\nlike a graph like this, right? Another<00:11:14.560> example,<00:11:14.959> this<00:11:15.120> is<00:11:15.279> a<00:11:15.440> mustache<00:11:16.160> made\nAnother example, this is a mustache made\nAnother example, this is a mustache made by<00:11:16.720> Casey,<00:11:17.120> who<00:11:17.279> you<00:11:17.440> all<00:11:17.600> heard<00:11:17.760> from\nby Casey, who you all heard from\nby Casey, who you all heard from yesterday.<00:11:19.040> Um,<00:11:19.519> specifically<00:11:20.160> designed<00:11:20.480> to\nyesterday. Um, specifically designed to\nyesterday. Um, specifically designed to debug<00:11:21.760> image<00:11:22.000> and<00:11:22.240> video<00:11:22.480> compression\ndebug image and video compression\ndebug image and video compression software.<00:11:24.079> Um,<00:11:24.560> so<00:11:24.800> this<00:11:25.120> system<00:11:25.440> works\nsoftware. Um, so this system works\nsoftware. Um, so this system works pretty<00:11:26.320> much<00:11:26.399> the<00:11:26.560> same<00:11:26.720> way<00:11:26.800> as<00:11:27.040> print\npretty much the same way as print\npretty much the same way as print debugging,<00:11:28.079> but<00:11:28.399> it's<00:11:28.800> structured,<00:11:29.360> right?\ndebugging, but it's structured, right?\ndebugging, but it's structured, right? It's<00:11:29.680> not<00:11:29.839> just<00:11:30.000> textual<00:11:30.399> data.<00:11:30.640> It's<00:11:30.800> not\nIt's not just textual data. It's not\nIt's not just textual data. It's not presented<00:11:31.200> as<00:11:31.360> text<00:11:31.680> as<00:11:31.839> just<00:11:32.079> textual<00:11:32.480> data.\npresented as text as just textual data.\npresented as text as just textual data. Um,<00:11:35.040> in<00:11:35.200> the<00:11:35.360> same<00:11:35.519> vein,<00:11:36.240> there's<00:11:36.480> this\nUm, in the same vein, there's this\nUm, in the same vein, there's this program<00:11:37.120> called<00:11:37.360> render<00:11:37.680> doc.<00:11:38.880> Um,<00:11:39.440> anyone\nprogram called render doc. Um, anyone\nprogram called render doc. Um, anyone who's<00:11:40.079> done<00:11:40.320> any<00:11:40.560> amount<00:11:40.800> of<00:11:40.880> GPU<00:11:41.360> programming\nwho's done any amount of GPU programming\nwho's done any amount of GPU programming probably<00:11:42.240> knows<00:11:43.120> that<00:11:43.360> like<00:11:43.680> this<00:11:44.079> without\nprobably knows that like this without\nprobably knows that like this without this<00:11:44.640> program,<00:11:45.040> your<00:11:45.279> life<00:11:46.320> was<00:11:46.640> probably\nthis program, your life was probably\nthis program, your life was probably pretty<00:11:47.200> bad.<00:11:47.600> Like,<00:11:48.000> uh,<00:11:48.640> everyone<00:11:48.959> has<00:11:49.120> their\npretty bad. Like, uh, everyone has their\npretty bad. Like, uh, everyone has their story<00:11:49.519> of<00:11:49.680> like<00:11:49.920> you<00:11:50.079> set<00:11:50.240> up<00:11:50.399> all<00:11:50.560> this\nstory of like you set up all this\nstory of like you set up all this boilerplate<00:11:51.440> OpenGL,<00:11:52.000> Vulcan<00:11:52.399> code,\nboilerplate OpenGL, Vulcan code,\nboilerplate OpenGL, Vulcan code, whatever<00:11:52.880> it<00:11:53.040> is.<00:11:54.000> You<00:11:54.160> run<00:11:54.399> your<00:11:54.560> program,\nwhatever it is. You run your program,\nwhatever it is. You run your program, you're<00:11:55.120> really<00:11:55.279> excited<00:11:56.399> and<00:11:56.560> there's<00:11:56.800> a\nyou're really excited and there's a\nyou're really excited and there's a black<00:11:57.200> screen<00:11:57.760> like<00:11:58.000> it's<00:11:58.160> just<00:11:58.320> like<00:11:58.480> what's\nblack screen like it's just like what's\nblack screen like it's just like what's what's<00:11:58.959> going<00:11:59.040> on,<00:11:59.440> right?<00:12:00.480> Um,<00:12:01.440> render<00:12:01.760> doc's\nwhat's going on, right? Um, render doc's\nwhat's going on, right? Um, render doc's like<00:12:02.240> extremely<00:12:02.560> useful.<00:12:02.880> So,<00:12:02.959> it<00:12:03.120> sort<00:12:03.279> of\nlike extremely useful. So, it sort of\nlike extremely useful. So, it sort of logs<00:12:03.680> all<00:12:03.760> the<00:12:03.920> API<00:12:04.240> calls<00:12:04.560> you<00:12:04.720> get<00:12:05.040> and<00:12:05.279> it\nlogs all the API calls you get and it\nlogs all the API calls you get and it captures<00:12:05.920> state.<00:12:06.240> It<00:12:06.399> hooks<00:12:06.720> those<00:12:06.880> APIs<00:12:07.279> and\ncaptures state. It hooks those APIs and\ncaptures state. It hooks those APIs and it<00:12:07.760> captures<00:12:08.160> that<00:12:08.399> state<00:12:09.040> and<00:12:09.279> presents<00:12:09.600> it\nit captures that state and presents it\nit captures that state and presents it in<00:12:09.920> this<00:12:10.079> form.<00:12:10.320> It<00:12:10.399> knows<00:12:10.639> the<00:12:10.800> before<00:12:10.959> and\nin this form. It knows the before and\nin this form. It knows the before and after<00:12:11.360> states<00:12:11.600> of<00:12:11.760> every<00:12:11.920> GPU<00:12:12.399> resource<00:12:12.720> that\nafter states of every GPU resource that\nafter states of every GPU resource that you<00:12:13.040> touch<00:12:14.160> um<00:12:14.959> when<00:12:15.120> you<00:12:15.360> when<00:12:15.519> you<00:12:15.600> make\nyou touch um when you when you make\nyou touch um when you when you make those<00:12:15.920> API<00:12:16.320> calls,<00:12:16.639> right?<00:12:17.680> Or<00:12:18.000> caused<00:12:18.240> by<00:12:18.399> the\nthose API calls, right? Or caused by the\nthose API calls, right? Or caused by the work<00:12:18.959> implied<00:12:19.360> by<00:12:19.519> those<00:12:19.680> API<00:12:20.000> calls.<00:12:20.639> Uh<00:12:20.800> so\nwork implied by those API calls. Uh so\nwork implied by those API calls. Uh so it's<00:12:21.120> another<00:12:21.360> example.<00:12:21.680> It's<00:12:21.839> yet<00:12:22.000> another\nit's another example. It's yet another\nit's another example. It's yet another structure<00:12:22.480> of<00:12:22.639> a<00:12:22.800> structured<00:12:23.600> non-extual\nstructure of a structured non-extual\nstructure of a structured non-extual log.<00:12:25.120> So<00:12:25.360> just<00:12:25.519> to<00:12:25.680> be<00:12:25.839> clear,<00:12:26.560> I'm<00:12:26.800> not<00:12:26.880> saying\nlog. So just to be clear, I'm not saying\nlog. So just to be clear, I'm not saying that<00:12:27.279> logging<00:12:27.680> is<00:12:27.920> wrong<00:12:28.399> or<00:12:28.720> not<00:12:28.959> useful<00:12:29.519> or\nthat logging is wrong or not useful or\nthat logging is wrong or not useful or can't<00:12:30.000> be<00:12:30.160> better<00:12:30.480> than<00:12:30.720> just<00:12:30.880> like<00:12:31.040> helpless\ncan't be better than just like helpless\ncan't be better than just like helpless print<00:12:31.600> debugging.<00:12:32.639> But<00:12:32.800> there's<00:12:32.959> another\nprint debugging. But there's another\nprint debugging. But there's another problem.<00:12:34.720> Problem<00:12:35.040> number<00:12:35.279> two\nproblem. Problem number two\nproblem. Problem number two is<00:12:37.920> time<00:12:38.720> and<00:12:38.959> thus<00:12:39.279> money<00:12:39.600> and<00:12:39.839> sanity.<00:12:41.279> The\nis time and thus money and sanity. The\nis time and thus money and sanity. The second<00:12:41.760> major<00:12:42.079> problem<00:12:42.480> with<00:12:42.800> log<00:12:43.360> uh\nsecond major problem with log uh\nsecond major problem with log uh debugging<00:12:44.079> is<00:12:44.320> that<00:12:44.880> it<00:12:45.040> often<00:12:45.360> requires\ndebugging is that it often requires\ndebugging is that it often requires modifications<00:12:46.320> of<00:12:46.560> the<00:12:46.800> program<00:12:47.600> that<00:12:47.839> you're\nmodifications of the program that you're\nmodifications of the program that you're digging<00:12:48.320> into.<00:12:48.959> So<00:12:49.120> let's<00:12:49.360> set<00:12:49.519> aside<00:12:49.760> the\ndigging into. So let's set aside the\ndigging into. So let's set aside the cases<00:12:50.079> where<00:12:50.240> you<00:12:50.399> can't<00:12:50.560> actually<00:12:50.720> do<00:12:50.880> that,\ncases where you can't actually do that,\ncases where you can't actually do that, right?<00:12:51.519> Like<00:12:51.680> you're<00:12:51.920> not<00:12:52.000> doing<00:12:52.160> any<00:12:52.399> reverse\nright? Like you're not doing any reverse\nright? Like you're not doing any reverse engineering.<00:12:53.680> You're<00:12:53.920> not<00:12:54.399> uh<00:12:55.040> you're<00:12:55.200> not\nengineering. You're not uh you're not\nengineering. You're not uh you're not doing<00:12:55.600> any<00:12:55.760> of<00:12:55.839> that.<00:12:56.160> You<00:12:56.399> can<00:12:56.480> control<00:12:56.800> your\ndoing any of that. You can control your\ndoing any of that. You can control your program.<00:12:57.279> You<00:12:57.440> can<00:12:57.519> modify<00:12:57.760> the<00:12:58.000> program.\nprogram. You can modify the program.\nprogram. You can modify the program. There's<00:12:58.639> still<00:12:58.800> a<00:12:59.040> problem<00:12:59.200> with<00:12:59.519> requiring\nThere's still a problem with requiring\nThere's still a problem with requiring that<00:13:00.160> in<00:13:00.399> order<00:13:00.560> to<00:13:00.720> get<00:13:01.040> at<00:13:01.360> very<00:13:01.600> simple\nthat in order to get at very simple\nthat in order to get at very simple information.\ninformation.\ninformation. Let's<00:13:03.680> walk<00:13:03.920> through<00:13:04.079> the<00:13:04.320> series<00:13:04.480> of<00:13:04.720> steps\nLet's walk through the series of steps\nLet's walk through the series of steps you<00:13:06.000> might<00:13:06.160> go<00:13:06.320> through<00:13:06.480> when<00:13:06.720> using<00:13:06.959> logs<00:13:08.079> uh\nyou might go through when using logs uh\nyou might go through when using logs uh in<00:13:08.399> order<00:13:08.480> to<00:13:08.720> debug<00:13:09.279> a<00:13:09.519> black<00:13:09.839> box.<00:13:11.040> So<00:13:11.279> first\nin order to debug a black box. So first\nin order to debug a black box. So first you're<00:13:11.920> presumably<00:13:12.800> writing<00:13:13.120> some<00:13:13.360> code<00:13:13.600> for\nyou're presumably writing some code for\nyou're presumably writing some code for some<00:13:13.920> actual<00:13:14.240> task<00:13:14.480> you<00:13:14.720> have.<00:13:15.519> Um,<00:13:16.320> number\nsome actual task you have. Um, number\nsome actual task you have. Um, number two,<00:13:16.880> you<00:13:17.200> build,<00:13:17.600> right?<00:13:17.760> You<00:13:17.920> wait<00:13:18.000> for<00:13:18.160> your\ntwo, you build, right? You wait for your\ntwo, you build, right? You wait for your build<00:13:18.399> to<00:13:18.560> complete,<00:13:19.120> you<00:13:19.360> run,<00:13:19.760> create\nbuild to complete, you run, create\nbuild to complete, you run, create whatever<00:13:20.399> state<00:13:20.639> you<00:13:20.880> wanted<00:13:21.120> to<00:13:21.200> be<00:13:21.279> in<00:13:21.519> to\nwhatever state you wanted to be in to\nwhatever state you wanted to be in to observe<00:13:22.160> the<00:13:22.320> code<00:13:22.480> that<00:13:22.720> you<00:13:22.800> wrote,<00:13:23.279> and\nobserve the code that you wrote, and\nobserve the code that you wrote, and then<00:13:23.680> you<00:13:24.000> check<00:13:24.240> the<00:13:24.399> log,<00:13:24.639> right?<00:13:24.880> You\nthen you check the log, right? You\nthen you check the log, right? You observe<00:13:25.279> the<00:13:25.440> log.\nobserve the log.\nobserve the log. And<00:13:28.079> then<00:13:28.240> a<00:13:28.480> very<00:13:28.720> common<00:13:29.279> outcome<00:13:29.680> of<00:13:29.839> this\nAnd then a very common outcome of this\nAnd then a very common outcome of this process<00:13:30.480> is<00:13:31.040> you<00:13:31.200> realize<00:13:31.600> info<00:13:31.920> you<00:13:32.079> didn't\nprocess is you realize info you didn't\nprocess is you realize info you didn't uh<00:13:32.639> you<00:13:32.880> needed<00:13:33.360> isn't<00:13:33.760> logged,<00:13:34.800> you<00:13:34.959> add<00:13:35.200> new\nuh you needed isn't logged, you add new\nuh you needed isn't logged, you add new logging<00:13:35.760> code,<00:13:35.920> and<00:13:36.079> you<00:13:36.240> go<00:13:36.399> back<00:13:36.560> up<00:13:36.639> to<00:13:36.800> the\nlogging code, and you go back up to the\nlogging code, and you go back up to the build<00:13:37.200> step,<00:13:37.440> and<00:13:37.600> you<00:13:37.760> run<00:13:37.920> an<00:13:38.160> observe.<00:13:38.639> Same\nbuild step, and you run an observe. Same\nbuild step, and you run an observe. Same thing<00:13:38.959> with<00:13:39.120> profiling.<00:13:39.920> Same<00:13:40.079> thing<00:13:40.160> with\nthing with profiling. Same thing with\nthing with profiling. Same thing with any<00:13:40.959> form<00:13:41.120> of<00:13:41.279> logging<00:13:41.680> is<00:13:41.839> like<00:13:42.000> this,<00:13:42.320> right?\nany form of logging is like this, right?\nany form of logging is like this, right? because<00:13:42.800> you're<00:13:43.040> it's<00:13:43.600> explicitly<00:13:44.240> wired\nbecause you're it's explicitly wired\nbecause you're it's explicitly wired into<00:13:44.880> the<00:13:45.040> to<00:13:45.200> the<00:13:45.360> program's<00:13:45.839> code,<00:13:46.160> right?\ninto the to the program's code, right?\ninto the to the program's code, right? In<00:13:47.680> other<00:13:47.839> words,<00:13:49.120> let's<00:13:49.360> say<00:13:49.519> you're<00:13:49.680> missing\nIn other words, let's say you're missing\nIn other words, let's say you're missing some<00:13:50.240> expression<00:13:50.720> X<00:13:51.200> from<00:13:51.440> the<00:13:51.600> log,<00:13:52.000> where<00:13:52.240> X\nsome expression X from the log, where X\nsome expression X from the log, where X could<00:13:52.720> be<00:13:52.800> anything<00:13:53.040> you<00:13:53.279> might<00:13:53.440> evaluate\ncould be anything you might evaluate\ncould be anything you might evaluate within<00:13:54.240> a<00:13:54.399> log<00:13:54.639> or<00:13:54.880> print<00:13:55.120> statement<00:13:56.320> after\nwithin a log or print statement after\nwithin a log or print statement after you<00:13:56.880> discover<00:13:57.279> this,<00:13:58.240> the<00:13:58.480> new<00:13:58.800> information\nyou discover this, the new information\nyou discover this, the new information you<00:13:59.680> have<00:13:59.920> that<00:14:00.160> you<00:14:00.320> could<00:14:00.480> enter<00:14:00.720> into<00:14:00.880> the\nyou have that you could enter into the\nyou have that you could enter into the system<00:14:01.519> is<00:14:01.760> simply<00:14:02.160> X.<00:14:03.199> In<00:14:03.360> a<00:14:03.600> very<00:14:04.000> basic,\nsystem is simply X. In a very basic,\nsystem is simply X. In a very basic, more<00:14:04.959> ideal<00:14:06.320> user<00:14:06.720> flow,<00:14:07.600> you<00:14:07.760> would<00:14:07.920> just\nmore ideal user flow, you would just\nmore ideal user flow, you would just have<00:14:08.240> to<00:14:08.399> write<00:14:08.560> that.<00:14:08.800> You<00:14:08.959> just<00:14:09.040> have<00:14:09.120> to<00:14:09.279> say\nhave to write that. You just have to say\nhave to write that. You just have to say X.<00:14:09.760> X<00:14:10.000> is<00:14:10.079> what<00:14:10.240> I'm<00:14:10.399> looking<00:14:10.560> for,<00:14:11.279> right?\nX. X is what I'm looking for, right?\nX. X is what I'm looking for, right? Instead,<00:14:12.160> you'd<00:14:12.560> find<00:14:12.639> a<00:14:12.800> spot<00:14:12.959> in<00:14:13.120> your<00:14:13.279> code,\nInstead, you'd find a spot in your code,\nInstead, you'd find a spot in your code, write<00:14:14.160> the<00:14:14.399> extra<00:14:14.639> printing<00:14:14.959> or<00:14:15.120> logging\nwrite the extra printing or logging\nwrite the extra printing or logging code,<00:14:15.760> and<00:14:16.000> that's<00:14:16.160> like<00:14:16.320> the<00:14:16.480> best<00:14:16.720> case,\ncode, and that's like the best case,\ncode, and that's like the best case, right?<00:14:17.199> We<00:14:17.360> don't<00:14:17.440> know<00:14:17.440> what<00:14:17.680> it's<00:14:17.839> going<00:14:17.920> to\nright? We don't know what it's going to\nright? We don't know what it's going to look<00:14:18.160> like.<00:14:18.959> Um,<00:14:19.440> you<00:14:19.680> build,\nlook like. Um, you build,\nlook like. Um, you build, you<00:14:21.440> run<00:14:21.600> and<00:14:21.760> recreate<00:14:22.160> whatever<00:14:22.480> state<00:14:22.720> you\nyou run and recreate whatever state you\nyou run and recreate whatever state you wanted<00:14:23.120> to<00:14:23.199> be<00:14:23.279> in,<00:14:23.680> and<00:14:23.920> you<00:14:24.079> browse<00:14:24.320> the<00:14:24.480> log\nwanted to be in, and you browse the log\nwanted to be in, and you browse the log again.\nagain.\nagain. And<00:14:27.040> needless<00:14:27.440> to<00:14:27.600> say,<00:14:27.760> the<00:14:28.000> huge<00:14:28.240> problem\nAnd needless to say, the huge problem\nAnd needless to say, the huge problem with<00:14:28.639> this,<00:14:29.839> this<00:14:30.320> is<00:14:30.720> roughly<00:14:31.199> instant<00:14:31.839> for\nwith this, this is roughly instant for\nwith this, this is roughly instant for the<00:14:32.320> user.\nthe user.\nthe user. This<00:14:34.639> is<00:14:34.880> often<00:14:35.279> frustratingly<00:14:36.000> long.<00:14:37.199> So\nThis is often frustratingly long. So\nThis is often frustratingly long. So even<00:14:37.600> in<00:14:37.839> a<00:14:38.000> small<00:14:38.320> wellorganized<00:14:38.959> codebase\neven in a small wellorganized codebase\neven in a small wellorganized codebase that<00:14:39.600> builds<00:14:39.920> very<00:14:40.160> quickly<00:14:41.440> uh<00:14:41.600> that's\nthat builds very quickly uh that's\nthat builds very quickly uh that's optimized<00:14:42.560> for<00:14:42.800> very<00:14:43.120> good<00:14:43.360> development\noptimized for very good development\noptimized for very good development times<00:14:45.120> this<00:14:45.360> will<00:14:45.519> take<00:14:45.680> many<00:14:45.920> extra<00:14:46.240> seconds.\ntimes this will take many extra seconds.\ntimes this will take many extra seconds. Um<00:14:48.399> furthermore<00:14:48.880> if<00:14:48.959> a<00:14:49.120> codebase<00:14:49.519> isn't\nUm furthermore if a codebase isn't\nUm furthermore if a codebase isn't prepared<00:14:50.000> to<00:14:50.240> recreate<00:14:50.720> state<00:14:51.040> very<00:14:51.279> easily\nprepared to recreate state very easily\nprepared to recreate state very easily which<00:14:51.920> it<00:14:52.160> very<00:14:52.320> often<00:14:52.639> is<00:14:53.279> uh<00:14:53.600> not<00:14:53.839> prepared\nwhich it very often is uh not prepared\nwhich it very often is uh not prepared to<00:14:54.320> do<00:14:54.399> that<00:14:55.199> um<00:14:55.360> it'll<00:14:55.680> be<00:14:56.079> much<00:14:56.320> worse.\nto do that um it'll be much worse.\nto do that um it'll be much worse. And<00:14:59.040> lastly,<00:14:59.360> browsing<00:14:59.760> the<00:14:59.920> log<00:15:00.160> itself<00:15:01.040> can\nAnd lastly, browsing the log itself can\nAnd lastly, browsing the log itself can often<00:15:01.519> be<00:15:01.680> quite<00:15:01.920> slow.<00:15:02.240> And<00:15:02.399> the<00:15:02.560> reason<00:15:02.720> why\noften be quite slow. And the reason why\noften be quite slow. And the reason why is<00:15:03.120> that<00:15:03.279> it's<00:15:03.360> a<00:15:03.519> fire<00:15:03.760> hose<00:15:04.000> of<00:15:04.160> information,\nis that it's a fire hose of information,\nis that it's a fire hose of information, right?<00:15:04.800> You<00:15:04.959> have<00:15:05.120> so<00:15:05.279> much<00:15:05.440> information\nright? You have so much information\nright? You have so much information pouring<00:15:06.240> into<00:15:06.480> you.<00:15:07.360> Um,<00:15:07.600> and<00:15:07.839> you're<00:15:08.079> just\npouring into you. Um, and you're just\npouring into you. Um, and you're just like<00:15:08.480> looking<00:15:08.639> for<00:15:08.959> if<00:15:09.199> you're<00:15:09.760> sometimes<00:15:10.079> the\nlike looking for if you're sometimes the\nlike looking for if you're sometimes the log<00:15:10.399> is<00:15:10.560> useful<00:15:10.800> information,<00:15:11.199> right?\nlog is useful information, right?\nlog is useful information, right? Sometimes<00:15:11.680> you<00:15:11.839> want<00:15:11.920> to<00:15:12.000> see<00:15:12.160> it<00:15:12.320> over<00:15:12.560> time,\nSometimes you want to see it over time,\nSometimes you want to see it over time, but<00:15:13.120> if<00:15:13.279> you're<00:15:13.360> trying<00:15:13.440> to<00:15:13.600> zoom<00:15:13.839> in<00:15:14.000> and\nbut if you're trying to zoom in and\nbut if you're trying to zoom in and really<00:15:14.480> narrow<00:15:14.800> in<00:15:14.959> on<00:15:15.120> one<00:15:15.360> particular\nreally narrow in on one particular\nreally narrow in on one particular thing,<00:15:15.920> you<00:15:16.160> have<00:15:16.240> a<00:15:16.480> whole<00:15:16.639> window<00:15:16.880> of\nthing, you have a whole window of\nthing, you have a whole window of information<00:15:17.360> that<00:15:17.519> you<00:15:17.600> have<00:15:17.680> to<00:15:17.839> look\ninformation that you have to look\ninformation that you have to look through.\nthrough.\nthrough. Um,<00:15:20.480> so\nUm, so\nUm, so I<00:15:23.040> think<00:15:23.120> of<00:15:23.360> this<00:15:23.519> problem<00:15:24.079> as<00:15:24.399> being<00:15:25.120> related\nI think of this problem as being related\nI think of this problem as being related to<00:15:26.480> information<00:15:26.880> flow.<00:15:28.320> uh<00:15:28.399> a<00:15:28.639> constant<00:15:29.040> cycle\nto information flow. uh a constant cycle\nto information flow. uh a constant cycle of<00:15:29.519> information<00:15:30.000> passing<00:15:30.399> between<00:15:30.639> the<00:15:30.800> user\nof information passing between the user\nof information passing between the user and<00:15:31.279> the<00:15:31.519> computer.<00:15:32.320> So<00:15:32.800> you<00:15:33.440> on<00:15:33.680> the<00:15:33.839> left\nand the computer. So you on the left\nand the computer. So you on the left there<00:15:35.440> good<00:15:35.680> good<00:15:36.000> diagram.<00:15:36.639> Pass<00:15:36.880> down<00:15:37.120> your\nthere good good diagram. Pass down your\nthere good good diagram. Pass down your your<00:15:37.440> your<00:15:37.839> information<00:15:38.240> as<00:15:38.399> inputs.\nyour your information as inputs.\nyour your information as inputs. Computer<00:15:39.360> returns<00:15:39.600> it<00:15:39.760> back<00:15:39.920> out<00:15:40.000> as<00:15:40.240> outputs,\nComputer returns it back out as outputs,\nComputer returns it back out as outputs, right?\nright?\nright? Um<00:15:43.760> so<00:15:44.000> we<00:15:44.240> repeat<00:15:44.639> we<00:15:44.959> repeat<00:15:45.199> this<00:15:45.360> cycle<00:15:45.600> of\nUm so we repeat we repeat this cycle of\nUm so we repeat we repeat this cycle of information<00:15:46.000> flow<00:15:46.240> in<00:15:46.399> order<00:15:46.560> to<00:15:46.800> sort<00:15:47.040> of\ninformation flow in order to sort of\ninformation flow in order to sort of refine<00:15:47.440> our<00:15:47.600> data<00:15:47.760> over<00:15:48.000> time.<00:15:48.160> It's<00:15:48.320> this\nrefine our data over time. It's this\nrefine our data over time. It's this constant<00:15:48.880> back<00:15:49.040> and<00:15:49.279> forth<00:15:49.920> with<00:15:50.079> the\nconstant back and forth with the\nconstant back and forth with the computer.<00:15:50.639> You<00:15:50.800> start<00:15:50.959> with<00:15:51.120> some<00:15:51.279> very\ncomputer. You start with some very\ncomputer. You start with some very unrefined<00:15:52.160> state<00:15:52.639> or<00:15:52.800> or<00:15:53.120> no<00:15:53.360> state<00:15:53.519> at<00:15:53.680> all\nunrefined state or or no state at all\nunrefined state or or no state at all and<00:15:54.240> then<00:15:54.399> you<00:15:54.959> progressively<00:15:55.519> refine<00:15:55.839> it.\nand then you progressively refine it.\nand then you progressively refine it. you<00:15:56.480> you<00:15:56.880> build<00:15:57.120> towards<00:15:57.440> whatever<00:15:57.759> you're\nyou you build towards whatever you're\nyou you build towards whatever you're trying<00:15:58.000> to<00:15:58.160> build<00:15:58.399> towards.\nFor<00:16:01.839> programmers,<00:16:02.560> the<00:16:02.800> data<00:16:03.040> we're<00:16:03.199> working\nFor programmers, the data we're working\nFor programmers, the data we're working on<00:16:03.519> is<00:16:03.759> code.<00:16:04.160> So<00:16:04.320> if<00:16:04.480> we<00:16:04.639> zoom<00:16:04.800> into<00:16:05.120> one<00:16:05.279> of\non is code. So if we zoom into one of\non is code. So if we zoom into one of those<00:16:05.519> like<00:16:05.680> little<00:16:05.839> blob<00:16:06.240> shapes,<00:16:06.480> we've<00:16:06.720> got\nthose like little blob shapes, we've got\nthose like little blob shapes, we've got A<00:16:07.040> to<00:16:07.199> B<00:16:07.600> prime<00:16:07.839> and<00:16:07.920> then<00:16:08.079> A<00:16:08.240> to<00:16:08.399> B<00:16:08.560> double\nA to B prime and then A to B double\nA to B prime and then A to B double prime.<00:16:09.519> That's<00:16:09.680> what<00:16:09.839> we're<00:16:10.000> refining.\nprime. That's what we're refining.\nprime. That's what we're refining. Uh<00:16:12.480> the<00:16:12.720> information<00:16:13.120> flow<00:16:13.600> cycle<00:16:13.920> is<00:16:14.160> sort<00:16:14.320> of\nUh the information flow cycle is sort of\nUh the information flow cycle is sort of what<00:16:14.639> pushes<00:16:14.880> this<00:16:15.040> forward,<00:16:15.279> right?<00:16:15.440> We<00:16:15.600> see\nwhat pushes this forward, right? We see\nwhat pushes this forward, right? We see the<00:16:15.759> outputs<00:16:16.079> from<00:16:16.160> one<00:16:16.320> state,<00:16:16.560> we<00:16:16.720> produce\nthe outputs from one state, we produce\nthe outputs from one state, we produce information<00:16:17.600> that<00:16:17.759> encodes<00:16:18.079> a<00:16:18.240> new<00:16:18.399> state<00:16:18.560> and\ninformation that encodes a new state and\ninformation that encodes a new state and and<00:16:18.800> and<00:16:19.120> so<00:16:19.279> on<00:16:19.360> and<00:16:19.600> so<00:16:19.759> forth.<00:16:20.800> Um\nand and so on and so forth. Um\nand and so on and so forth. Um uh<00:16:23.680> oh.<00:16:24.399> So<00:16:24.639> we<00:16:24.800> can<00:16:24.880> think<00:16:24.959> of<00:16:25.120> this\nuh oh. So we can think of this\nuh oh. So we can think of this refinement<00:16:25.680> process<00:16:26.079> as<00:16:26.399> like<00:16:26.560> a<00:16:26.800> repeating\nrefinement process as like a repeating\nrefinement process as like a repeating cycle<00:16:27.440> across<00:16:27.839> time.<00:16:28.720> Um<00:16:29.360> and<00:16:29.519> now<00:16:29.839> maybe<00:16:30.079> this\ncycle across time. Um and now maybe this\ncycle across time. Um and now maybe this is<00:16:30.480> all<00:16:30.880> just<00:16:31.199> like<00:16:31.440> a<00:16:31.680> little<00:16:32.000> abstract<00:16:32.720> and<00:16:32.959> I\nis all just like a little abstract and I\nis all just like a little abstract and I get<00:16:33.279> it.<00:16:33.839> But<00:16:33.920> the<00:16:34.160> reason<00:16:34.320> I<00:16:34.480> frame<00:16:34.639> it<00:16:34.800> this\nget it. But the reason I frame it this\nget it. But the reason I frame it this way<00:16:35.360> is<00:16:35.600> to<00:16:35.839> associate<00:16:36.880> um<00:16:37.199> certain<00:16:37.519> problems\nway is to associate um certain problems\nway is to associate um certain problems on<00:16:38.000> computers<00:16:38.880> like<00:16:39.120> with<00:16:39.360> programming<00:16:39.759> or\non computers like with programming or\non computers like with programming or debugging<00:16:40.959> or<00:16:41.519> uh<00:16:41.680> or<00:16:42.000> understanding\ndebugging or uh or understanding\ndebugging or uh or understanding anything<00:16:42.880> with<00:16:43.120> certain<00:16:43.920> uh<00:16:44.000> undesirable\nanything with certain uh undesirable\nanything with certain uh undesirable properties<00:16:45.040> of<00:16:45.199> this<00:16:45.360> sort<00:16:45.519> of<00:16:45.600> like<00:16:45.759> wave\nproperties of this sort of like wave\nproperties of this sort of like wave pattern<00:16:46.320> that<00:16:46.480> you<00:16:46.639> end<00:16:46.720> up<00:16:46.880> seeing.<00:16:48.320> For\npattern that you end up seeing. For\npattern that you end up seeing. For instance,<00:16:49.680> programming<00:16:50.160> can<00:16:50.399> feel<00:16:50.560> very\ninstance, programming can feel very\ninstance, programming can feel very frustrating\nfrustrating\nfrustrating um<00:16:52.639> or<00:16:53.120> more<00:16:53.360> opaque<00:16:53.759> or<00:16:53.920> more<00:16:54.079> difficult<00:16:54.320> to\num or more opaque or more difficult to\num or more opaque or more difficult to understand<00:16:55.120> when<00:16:55.440> this<00:16:55.600> cycle<00:16:55.839> has<00:16:56.000> a<00:16:56.079> much\nunderstand when this cycle has a much\nunderstand when this cycle has a much longer<00:16:56.560> frequency.<00:16:57.600> Um<00:16:58.639> if<00:16:58.800> the<00:16:58.959> flow<00:16:59.199> of\nlonger frequency. Um if the flow of\nlonger frequency. Um if the flow of information<00:16:59.680> is<00:16:59.839> blocked<00:17:00.160> on<00:17:00.320> something,\ninformation is blocked on something,\ninformation is blocked on something, let's<00:17:00.720> just<00:17:00.880> use<00:17:01.040> compile<00:17:01.440> times<00:17:01.680> as<00:17:01.839> an\nlet's just use compile times as an\nlet's just use compile times as an example.<00:17:02.639> You<00:17:02.800> tweak<00:17:03.120> something,<00:17:03.759> you\nexample. You tweak something, you\nexample. You tweak something, you accidentally<00:17:04.480> touch<00:17:04.640> a<00:17:04.799> C++<00:17:05.360> header<00:17:05.679> file,\naccidentally touch a C++ header file,\naccidentally touch a C++ header file, you're<00:17:06.160> in<00:17:06.400> like<00:17:06.559> some<00:17:06.799> major<00:17:07.199> nightmare<00:17:08.240> uh\nyou're in like some major nightmare uh\nyou're in like some major nightmare uh C++<00:17:09.039> codebase,<00:17:09.679> you<00:17:09.839> hit<00:17:10.000> build,<00:17:10.240> and<00:17:10.400> you're\nC++ codebase, you hit build, and you're\nC++ codebase, you hit build, and you're like,<00:17:10.640> great,<00:17:10.880> I<00:17:11.039> can't<00:17:11.120> wait<00:17:11.280> to<00:17:11.439> test<00:17:11.679> this\nlike, great, I can't wait to test this\nlike, great, I can't wait to test this new<00:17:12.160> like<00:17:12.480> jump<00:17:13.199> speed<00:17:13.439> or<00:17:13.679> whatever.<00:17:14.480> And\nnew like jump speed or whatever. And\nnew like jump speed or whatever. And it's<00:17:14.880> like<00:17:15.679> 10<00:17:15.919> minutes<00:17:16.559> just<00:17:16.799> gone.<00:17:17.520> Um\nuh<00:17:21.280> that's<00:17:21.600> an<00:17:21.760> example<00:17:22.000> of<00:17:22.240> like\nuh that's an example of like\nuh that's an example of like deterioration<00:17:23.039> of<00:17:23.199> this<00:17:23.439> information<00:17:23.760> flow,\ndeterioration of this information flow,\ndeterioration of this information flow, the<00:17:24.240> quality<00:17:24.400> of<00:17:24.559> this<00:17:24.799> information<00:17:25.199> flow\nthe quality of this information flow\nthe quality of this information flow just<00:17:26.079> due<00:17:26.319> to<00:17:26.559> this<00:17:27.039> frequency<00:17:27.520> expanding.\njust due to this frequency expanding.\njust due to this frequency expanding. Um<00:17:29.919> so<00:17:30.240> this<00:17:30.559> is<00:17:30.880> less<00:17:31.200> efficient.<00:17:32.000> It's<00:17:32.160> less\nUm so this is less efficient. It's less\nUm so this is less efficient. It's less effective.<00:17:33.039> It's<00:17:33.280> not<00:17:33.440> good.<00:17:34.559> Furthermore,\neffective. It's not good. Furthermore,\neffective. It's not good. Furthermore, the<00:17:35.200> information<00:17:35.440> flow<00:17:35.760> doesn't<00:17:36.000> only<00:17:36.160> have<00:17:36.240> a\nthe information flow doesn't only have a\nthe information flow doesn't only have a frequency<00:17:36.720> but<00:17:36.880> a<00:17:37.039> band<00:17:37.440> a<00:17:37.600> bandwidth<00:17:38.080> as\nfrequency but a band a bandwidth as\nfrequency but a band a bandwidth as well.<00:17:39.360> Now<00:17:39.600> to<00:17:39.760> be<00:17:39.840> fair,<00:17:40.080> I<00:17:40.240> probably<00:17:40.400> could\nwell. Now to be fair, I probably could\nwell. Now to be fair, I probably could have<00:17:40.640> drawn<00:17:40.880> that<00:17:41.039> as<00:17:41.280> like<00:17:41.840> the<00:17:42.080> amplitude,\nhave drawn that as like the amplitude,\nhave drawn that as like the amplitude, but<00:17:42.720> I<00:17:42.960> just<00:17:43.120> wanted<00:17:43.360> to<00:17:43.520> make<00:17:43.600> it<00:17:43.760> like<00:17:44.000> thick\nbut I just wanted to make it like thick\nbut I just wanted to make it like thick versus<00:17:44.559> thin<00:17:44.799> for<00:17:45.039> whatever<00:17:45.280> reason.<00:17:45.440> I<00:17:45.600> don't\nversus thin for whatever reason. I don't\nversus thin for whatever reason. I don't It's<00:17:45.919> all<00:17:46.000> abstract,<00:17:46.400> but<00:17:46.559> you<00:17:46.720> get<00:17:46.799> the\nIt's all abstract, but you get the\nIt's all abstract, but you get the point.<00:17:47.600> Um,<00:17:48.720> it,<00:17:49.039> you<00:17:49.120> know,<00:17:49.200> if<00:17:49.440> you're\npoint. Um, it, you know, if you're\npoint. Um, it, you know, if you're waiting<00:17:49.760> a<00:17:49.919> long<00:17:50.080> time<00:17:50.160> for<00:17:50.400> some<00:17:50.559> information\nwaiting a long time for some information\nwaiting a long time for some information to<00:17:51.039> come<00:17:51.200> back,<00:17:51.440> it's<00:17:51.600> better<00:17:51.760> if<00:17:51.919> you<00:17:52.080> get<00:17:52.160> a\nto come back, it's better if you get a\nto come back, it's better if you get a lot<00:17:52.400> of<00:17:52.559> information.<00:17:53.360> If<00:17:53.600> you<00:17:53.679> get<00:17:53.840> very\nlot of information. If you get very\nlot of information. If you get very little<00:17:54.320> information<00:17:54.880> and<00:17:55.360> you're<00:17:55.600> waiting<00:17:55.760> a\nlittle information and you're waiting a\nlittle information and you're waiting a long<00:17:56.080> time<00:17:56.160> for<00:17:56.320> it,<00:17:56.480> it's<00:17:56.720> like<00:17:56.880> almost\nlong time for it, it's like almost\nlong time for it, it's like almost completely<00:17:57.520> useless.\ncompletely useless.\ncompletely useless. Um,\nUm,\nUm, so<00:18:02.880> the<00:18:03.120> goal<00:18:03.440> is<00:18:03.679> to<00:18:03.840> maximize<00:18:04.320> frequency<00:18:05.360> and\nso the goal is to maximize frequency and\nso the goal is to maximize frequency and maximize<00:18:06.400> useful<00:18:06.799> bandwidth.\nmaximize useful bandwidth.\nmaximize useful bandwidth. So<00:18:08.880> let's<00:18:09.120> take<00:18:09.200> a<00:18:09.520> look<00:18:09.760> at<00:18:10.080> logging<00:18:10.559> from\nSo let's take a look at logging from\nSo let's take a look at logging from this<00:18:10.960> perspective.<00:18:11.600> Um<00:18:11.919> logging<00:18:12.480> does\nthis perspective. Um logging does\nthis perspective. Um logging does obviously<00:18:13.200> have<00:18:13.440> the<00:18:13.679> ability<00:18:13.919> to<00:18:14.080> provide\nobviously have the ability to provide\nobviously have the ability to provide useful<00:18:15.120> information.<00:18:16.160> Um<00:18:16.640> it<00:18:16.880> can\nuseful information. Um it can\nuseful information. Um it can dramatically<00:18:17.440> improve<00:18:17.760> the<00:18:17.919> bandwidth<00:18:18.559> uh\ndramatically improve the bandwidth uh\ndramatically improve the bandwidth uh improve<00:18:19.120> the<00:18:19.280> bandwidth<00:18:19.600> of<00:18:19.840> information<00:18:20.559> uh\nimprove the bandwidth of information uh\nimprove the bandwidth of information uh output<00:18:21.440> from<00:18:21.600> the<00:18:21.760> computer<00:18:22.000> back<00:18:22.160> to<00:18:22.320> you.\noutput from the computer back to you.\noutput from the computer back to you. But<00:18:23.280> it<00:18:23.520> can<00:18:23.679> require<00:18:24.160> many<00:18:24.480> slow<00:18:24.720> iterations\nBut it can require many slow iterations\nBut it can require many slow iterations to<00:18:25.440> refine<00:18:25.760> for<00:18:26.000> some<00:18:26.160> debugging<00:18:26.640> case.<00:18:26.880> And\nto refine for some debugging case. And\nto refine for some debugging case. And again<00:18:27.280> there's<00:18:27.679> there's<00:18:27.919> a<00:18:28.080> universe<00:18:28.400> of\nagain there's there's a universe of\nagain there's there's a universe of information<00:18:28.880> you<00:18:29.120> could<00:18:29.200> be<00:18:29.360> looking<00:18:29.520> at.<00:18:30.000> You\ninformation you could be looking at. You\ninformation you could be looking at. You can't<00:18:30.320> log<00:18:30.640> all<00:18:30.720> of<00:18:30.880> it.<00:18:31.600> Um<00:18:32.160> and<00:18:32.559> and<00:18:32.799> it<00:18:32.960> can\ncan't log all of it. Um and and it can\ncan't log all of it. Um and and it can uh<00:18:33.919> also<00:18:34.240> slow<00:18:34.480> down<00:18:34.640> the<00:18:34.799> execution<00:18:35.120> of<00:18:35.200> the\nuh also slow down the execution of the\nuh also slow down the execution of the program<00:18:35.600> itself.<00:18:35.919> So<00:18:36.160> it's<00:18:36.480> you<00:18:36.640> you<00:18:36.960> get<00:18:37.120> a\nprogram itself. So it's you you get a\nprogram itself. So it's you you get a little<00:18:37.440> bit<00:18:37.520> thicker<00:18:37.840> bandwidth<00:18:38.880> but<00:18:39.600> you\nlittle bit thicker bandwidth but you\nlittle bit thicker bandwidth but you decrease<00:18:40.400> the<00:18:40.559> frequency<00:18:40.960> a<00:18:41.120> bit.\ndecrease the frequency a bit.\ndecrease the frequency a bit. Um<00:18:43.919> so<00:18:44.400> hopefully<00:18:44.799> I've<00:18:44.960> been<00:18:45.120> convincing\nUm so hopefully I've been convincing\nUm so hopefully I've been convincing enough<00:18:46.559> to<00:18:46.720> to<00:18:47.120> show<00:18:47.360> that<00:18:47.760> while<00:18:48.000> logs<00:18:48.400> can<00:18:48.559> be\nenough to to show that while logs can be\nenough to to show that while logs can be good<00:18:48.880> and<00:18:49.120> while<00:18:49.840> this<00:18:50.080> is<00:18:50.320> a<00:18:50.640> completely\ngood and while this is a completely\ngood and while this is a completely valid<00:18:51.520> technique,<00:18:52.400> it's<00:18:52.640> it's<00:18:53.200> uh<00:18:53.440> it<00:18:53.679> can<00:18:53.760> be\nvalid technique, it's it's uh it can be\nvalid technique, it's it's uh it can be less<00:18:54.160> efficient<00:18:54.480> than<00:18:54.640> what<00:18:54.799> you<00:18:54.960> might<00:18:55.600> uh\nless efficient than what you might uh\nless efficient than what you might uh imagine<00:18:56.080> is<00:18:56.320> the<00:18:56.480> ideal<00:18:56.799> case.\nimagine is the ideal case.\nimagine is the ideal case. That's<00:18:58.960> where<00:18:59.120> a<00:18:59.280> debugger<00:18:59.600> comes<00:18:59.760> into<00:19:00.000> play.\nThat's where a debugger comes into play.\nThat's where a debugger comes into play. So<00:19:02.000> I'll<00:19:02.240> start<00:19:02.320> by<00:19:02.480> saying<00:19:02.559> that<00:19:02.720> I<00:19:02.880> often<00:19:03.120> see\nSo I'll start by saying that I often see\nSo I'll start by saying that I often see debuggers<00:19:03.919> misunderstood.<00:19:04.720> If<00:19:04.960> you<00:19:05.120> if<00:19:05.280> I\ndebuggers misunderstood. If you if I\ndebuggers misunderstood. If you if I could<00:19:05.520> have<00:19:05.679> gone<00:19:05.919> back<00:19:06.160> in<00:19:06.400> time,<00:19:07.039> I<00:19:07.280> pro<00:19:07.600> like\ncould have gone back in time, I pro like\ncould have gone back in time, I pro like in<00:19:08.160> if<00:19:08.320> I<00:19:08.480> was<00:19:08.559> in<00:19:08.799> charge,<00:19:09.280> I<00:19:09.520> wouldn't<00:19:09.760> have\nin if I was in charge, I wouldn't have\nin if I was in charge, I wouldn't have called<00:19:10.240> them<00:19:10.400> that<00:19:10.720> probably.<00:19:10.960> I<00:19:11.120> mean,<00:19:11.280> I\ncalled them that probably. I mean, I\ncalled them that probably. I mean, I understand<00:19:11.600> it's<00:19:11.840> like<00:19:11.919> the<00:19:12.080> physical<00:19:12.320> bug<00:19:12.480> in\nunderstand it's like the physical bug in\nunderstand it's like the physical bug in the<00:19:12.720> machine.<00:19:12.960> Everyone<00:19:13.200> knows<00:19:13.440> the<00:19:13.760> story.\nthe machine. Everyone knows the story.\nthe machine. Everyone knows the story. But,<00:19:14.799> you<00:19:14.960> know,<00:19:15.120> it<00:19:15.280> might<00:19:15.520> illuminate<00:19:15.919> them\nBut, you know, it might illuminate them\nBut, you know, it might illuminate them a<00:19:16.240> little<00:19:16.320> bit<00:19:16.480> today<00:19:16.880> like<00:19:17.120> modern<00:19:17.440> debuggers\na little bit today like modern debuggers\na little bit today like modern debuggers if<00:19:18.080> you<00:19:18.160> think<00:19:18.400> about<00:19:18.640> them<00:19:18.799> as<00:19:18.960> just<00:19:19.039> a\nif you think about them as just a\nif you think about them as just a program<00:19:19.440> analyzer.<00:19:20.000> So,<00:19:20.000> it's<00:19:20.080> giving<00:19:20.240> you<00:19:20.320> a\nprogram analyzer. So, it's giving you a\nprogram analyzer. So, it's giving you a window<00:19:20.720> into<00:19:20.880> your<00:19:21.120> program.\nwindow into your program.\nwindow into your program. Uh<00:19:23.039> really,<00:19:23.280> it's<00:19:23.520> just<00:19:23.919> giving<00:19:24.160> you\nUh really, it's just giving you\nUh really, it's just giving you information<00:19:24.799> extraction<00:19:25.280> tools.\ninformation extraction tools.\ninformation extraction tools. Uh<00:19:27.280> in<00:19:27.520> any<00:19:27.760> case,\nUh in any case,\nUh in any case, a<00:19:30.320> debugger<00:19:30.720> allows<00:19:30.960> us<00:19:31.200> to<00:19:32.000> analyze<00:19:32.400> a\na debugger allows us to analyze a\na debugger allows us to analyze a program<00:19:32.960> at<00:19:33.200> runtime.\nprogram at runtime.\nprogram at runtime. without<00:19:35.120> modifying<00:19:35.600> it.<00:19:36.400> Um<00:19:36.880> you<00:19:37.120> can<00:19:37.200> use\nwithout modifying it. Um you can use\nwithout modifying it. Um you can use structural<00:19:37.760> information<00:19:38.080> about<00:19:38.240> the<00:19:38.400> program\nstructural information about the program\nstructural information about the program stored<00:19:38.880> in<00:19:39.039> debug<00:19:39.360> info<00:19:40.080> to<00:19:40.320> get<00:19:40.559> like\nstored in debug info to get like\nstored in debug info to get like readaloud<00:19:41.520> print<00:19:41.760> loop<00:19:42.000> style<00:19:42.240> features<00:19:42.720> at\nreadaloud print loop style features at\nreadaloud print loop style features at the<00:19:43.120> limit.<00:19:44.400> Um<00:19:44.799> and<00:19:45.039> therefore<00:19:45.360> you<00:19:45.600> shortcut\nthe limit. Um and therefore you shortcut\nthe limit. Um and therefore you shortcut the<00:19:46.160> code<00:19:46.320> modification<00:19:46.880> process\nthe code modification process\nthe code modification process altogether.<00:19:47.679> You<00:19:47.760> you<00:19:48.080> completely<00:19:48.559> avoid<00:19:48.799> the\naltogether. You you completely avoid the\naltogether. You you completely avoid the tool<00:19:49.200> chain.<00:19:50.080> Um<00:19:50.880> so<00:19:51.280> importantly<00:19:51.760> debugger\ntool chain. Um so importantly debugger\ntool chain. Um so importantly debugger allows<00:19:52.400> us<00:19:52.559> to<00:19:52.960> avoid<00:19:53.440> that<00:19:53.760> second<00:19:54.080> problem\nallows us to avoid that second problem\nallows us to avoid that second problem of<00:19:54.960> modification<00:19:55.520> time.<00:19:55.840> How<00:19:56.080> long<00:19:56.320> does<00:19:56.480> it\nof modification time. How long does it\nof modification time. How long does it take<00:19:57.120> for<00:19:57.360> me<00:19:57.600> to<00:19:58.320> get<00:19:58.480> some<00:19:58.720> new<00:19:58.960> information\ntake for me to get some new information\ntake for me to get some new information out<00:19:59.440> of<00:19:59.600> the<00:19:59.760> system?<00:20:00.400> All<00:20:00.400> right.<00:20:01.760> Um,<00:20:02.880> so<00:20:03.280> the\nout of the system? All right. Um, so the\nout of the system? All right. Um, so the reason<00:20:03.600> I've<00:20:03.840> been<00:20:04.000> so<00:20:04.160> focused<00:20:04.320> on<00:20:04.400> debugger\nreason I've been so focused on debugger\nreason I've been so focused on debugger visualization<00:20:05.520> and<00:20:05.760> the<00:20:05.919> reason<00:20:06.080> why<00:20:06.559> I<00:20:07.200> would\nvisualization and the reason why I would\nvisualization and the reason why I would argue<00:20:07.679> it's<00:20:07.919> important<00:20:08.160> and<00:20:08.400> hopefully<00:20:08.880> it's\nargue it's important and hopefully it's\nargue it's important and hopefully it's been<00:20:09.360> convincing<00:20:09.760> and<00:20:10.160> justifies<00:20:10.720> this<00:20:10.880> talk.\nbeen convincing and justifies this talk.\nbeen convincing and justifies this talk. Um,<00:20:12.240> first<00:20:12.559> the<00:20:12.720> visualizations<00:20:13.440> don't<00:20:13.600> need\nUm, first the visualizations don't need\nUm, first the visualizations don't need to<00:20:13.760> be<00:20:13.919> textual<00:20:14.480> and<00:20:14.720> second<00:20:15.120> they<00:20:15.280> don't<00:20:15.440> need\nto be textual and second they don't need\nto be textual and second they don't need to<00:20:15.679> be<00:20:15.919> they<00:20:16.160> don't<00:20:16.320> need<00:20:16.480> to<00:20:16.640> require<00:20:17.039> this\nto be they don't need to require this\nto be they don't need to require this this<00:20:17.600> build<00:20:18.640> run<00:20:19.039> recreate<00:20:19.520> state<00:20:20.000> observe\nthis build run recreate state observe\nthis build run recreate state observe loop.\nloop.\nloop. So<00:20:23.440> in<00:20:23.600> order<00:20:23.840> to<00:20:24.000> be<00:20:24.160> useful<00:20:24.400> a<00:20:24.559> debugger<00:20:24.880> has\nSo in order to be useful a debugger has\nSo in order to be useful a debugger has to<00:20:25.039> meet<00:20:25.200> that<00:20:25.360> mandate.<00:20:26.320> It<00:20:26.480> needs<00:20:26.640> to\nto meet that mandate. It needs to\nto meet that mandate. It needs to provide<00:20:26.960> a<00:20:27.120> variety<00:20:27.360> of<00:20:27.760> visualizations<00:20:28.559> not\nprovide a variety of visualizations not\nprovide a variety of visualizations not just<00:20:28.880> textual<00:20:29.440> ones.<00:20:30.080> and<00:20:30.240> it<00:20:30.480> needs<00:20:30.640> to<00:20:30.720> be\njust textual ones. and it needs to be\njust textual ones. and it needs to be able<00:20:30.880> to<00:20:31.039> do<00:20:31.120> it<00:20:31.280> quickly.<00:20:32.400> Um,<00:20:32.799> if<00:20:32.960> it<00:20:33.120> can't\nable to do it quickly. Um, if it can't\nable to do it quickly. Um, if it can't provide<00:20:33.679> a<00:20:34.000> variety,<00:20:34.799> then<00:20:35.440> um,<00:20:35.919> it<00:20:36.080> forces\nprovide a variety, then um, it forces\nprovide a variety, then um, it forces the<00:20:36.559> programmer<00:20:36.799> to<00:20:36.960> go<00:20:37.039> back<00:20:37.120> to<00:20:37.280> custom\nthe programmer to go back to custom\nthe programmer to go back to custom logging<00:20:37.919> tools.<00:20:38.720> And<00:20:38.880> if<00:20:39.039> it<00:20:39.200> can't<00:20:39.440> do<00:20:39.600> it\nlogging tools. And if it can't do it\nlogging tools. And if it can't do it quickly,<00:20:40.159> it's<00:20:40.400> faster<00:20:40.720> anyways<00:20:41.039> for<00:20:41.200> the\nquickly, it's faster anyways for the\nquickly, it's faster anyways for the programmer<00:20:41.679> to<00:20:41.840> go<00:20:42.000> back<00:20:42.080> to<00:20:42.159> the<00:20:42.320> program<00:20:42.559> and\nprogrammer to go back to the program and\nprogrammer to go back to the program and just<00:20:42.799> write<00:20:42.960> their<00:20:43.120> own<00:20:43.280> custom<00:20:43.520> visualizer,\njust write their own custom visualizer,\njust write their own custom visualizer, right?<00:20:44.480> So,<00:20:44.559> if<00:20:44.720> it<00:20:44.960> can't<00:20:45.120> do<00:20:45.280> both<00:20:45.520> of<00:20:45.679> those\nright? So, if it can't do both of those\nright? So, if it can't do both of those things,<00:20:46.880> then<00:20:47.360> the<00:20:47.760> utility<00:20:48.000> of<00:20:48.080> a<00:20:48.240> debugger\nthings, then the utility of a debugger\nthings, then the utility of a debugger dramatically<00:20:49.120> drops.\nSo,<00:20:53.039> let's<00:20:53.280> look<00:20:53.360> at<00:20:53.520> how<00:20:53.600> this<00:20:53.840> will<00:20:54.000> work.\nSo, let's look at how this will work.\nSo, let's look at how this will work. I'll<00:20:55.840> start<00:20:56.000> with<00:20:56.080> a<00:20:56.320> brief<00:20:56.559> introduction<00:20:56.960> to\nI'll start with a brief introduction to\nI'll start with a brief introduction to the<00:20:57.360> basics<00:20:57.600> of<00:20:57.760> how<00:20:58.080> debuggers<00:20:58.640> work<00:20:58.799> with\nthe basics of how debuggers work with\nthe basics of how debuggers work with your<00:20:59.200> programs<00:20:59.600> at<00:20:59.840> all<00:21:00.000> and<00:21:00.159> then<00:21:00.320> we'll\nyour programs at all and then we'll\nyour programs at all and then we'll build<00:21:00.720> up<00:21:01.039> from<00:21:01.280> there.\nbuild up from there.\nbuild up from there. First,<00:21:03.360> let's<00:21:03.600> consider<00:21:03.919> how<00:21:04.080> your<00:21:04.240> program\nFirst, let's consider how your program\nFirst, let's consider how your program is<00:21:04.799> executing<00:21:05.440> on<00:21:05.679> a<00:21:05.840> modern<00:21:06.159> operating\nis executing on a modern operating\nis executing on a modern operating system.<00:21:07.360> And<00:21:07.679> note<00:21:07.919> that<00:21:08.159> like<00:21:08.320> the\nsystem. And note that like the\nsystem. And note that like the terminology<00:21:08.960> I<00:21:09.120> use,<00:21:09.360> it<00:21:09.520> differs<00:21:09.840> across<00:21:10.960> uh\nterminology I use, it differs across uh\nterminology I use, it differs across uh environments<00:21:11.600> or<00:21:11.919> platforms,<00:21:12.400> but<00:21:12.559> you<00:21:12.799> can\nenvironments or platforms, but you can\nenvironments or platforms, but you can find<00:21:13.280> analoges<00:21:13.840> of<00:21:14.000> everything.<00:21:14.559> Um<00:21:14.880> it's\nfind analoges of everything. Um it's\nfind analoges of everything. Um it's all,<00:21:15.840> you<00:21:16.000> know,<00:21:16.559> you'll<00:21:16.880> you'll<00:21:17.120> find<00:21:17.280> the\nall, you know, you'll you'll find the\nall, you know, you'll you'll find the matching<00:21:17.840> terms<00:21:18.240> if<00:21:18.480> you<00:21:18.559> look.<00:21:19.679> Um<00:21:20.080> so<00:21:20.240> when\nmatching terms if you look. Um so when\nmatching terms if you look. Um so when you<00:21:20.559> start<00:21:20.640> your<00:21:20.799> program,<00:21:21.120> you<00:21:21.200> know,<00:21:21.280> you've\nyou start your program, you know, you've\nyou start your program, you know, you've got<00:21:21.600> your<00:21:21.760> executables<00:21:22.799> uh<00:21:22.960> file<00:21:23.200> on<00:21:23.360> disk.\ngot your executables uh file on disk.\ngot your executables uh file on disk. there's<00:21:23.919> a<00:21:24.000> bunch<00:21:24.080> of<00:21:24.159> DL<00:21:24.640> files<00:21:24.880> on<00:21:25.120> disk.<00:21:25.919> Uh\nthere's a bunch of DL files on disk. Uh\nthere's a bunch of DL files on disk. Uh those<00:21:26.640> can<00:21:26.799> be<00:21:26.960> referred<00:21:27.200> to<00:21:27.360> as<00:21:27.520> executable\nthose can be referred to as executable\nthose can be referred to as executable images.\nimages.\nimages. Um<00:21:30.240> when<00:21:30.480> you<00:21:30.640> launch<00:21:30.880> your<00:21:31.120> process,<00:21:32.000> the<00:21:32.240> the\nUm when you launch your process, the the\nUm when you launch your process, the the kernel's<00:21:33.039> loader<00:21:33.280> is<00:21:33.440> actually<00:21:33.679> going<00:21:33.840> to\nkernel's loader is actually going to\nkernel's loader is actually going to take<00:21:34.559> those<00:21:34.880> images<00:21:35.760> and<00:21:36.320> uh<00:21:36.480> it<00:21:37.280> it<00:21:37.600> produces\ntake those images and uh it it produces\ntake those images and uh it it produces modules.<00:21:38.480> Modules<00:21:38.799> aren't<00:21:39.039> exactly<00:21:39.280> the<00:21:39.440> same\nmodules. Modules aren't exactly the same\nmodules. Modules aren't exactly the same as<00:21:39.760> executable<00:21:40.240> images,<00:21:40.480> but<00:21:40.640> you<00:21:40.720> can<00:21:40.880> think\nas executable images, but you can think\nas executable images, but you can think of<00:21:41.039> modules<00:21:41.440> as<00:21:41.600> sort<00:21:41.760> of<00:21:42.000> the<00:21:42.240> loaded\nof modules as sort of the loaded\nof modules as sort of the loaded equivalent<00:21:43.200> into<00:21:43.440> your<00:21:43.679> address<00:21:44.000> space<00:21:44.799> of\nequivalent into your address space of\nequivalent into your address space of those<00:21:45.360> executable<00:21:45.919> images.\nthose executable images.\nthose executable images. Um<00:21:48.159> the<00:21:48.320> process<00:21:48.640> also<00:21:48.880> includes<00:21:49.120> a<00:21:49.280> page\nUm the process also includes a page\nUm the process also includes a page table<00:21:49.840> to<00:21:50.080> map<00:21:50.320> from,<00:21:50.720> you<00:21:50.880> know,<00:21:50.960> it's<00:21:51.120> got<00:21:51.200> a\ntable to map from, you know, it's got a\ntable to map from, you know, it's got a virtual<00:21:51.600> address<00:21:51.840> base.<00:21:52.159> It<00:21:52.240> maps<00:21:52.480> from\nvirtual address base. It maps from\nvirtual address base. It maps from virtual<00:21:52.880> addresses<00:21:53.200> to<00:21:53.360> physical<00:21:53.679> addresses.\nvirtual addresses to physical addresses.\nvirtual addresses to physical addresses. Um,\nUm,\nUm, and<00:21:57.600> uh,<00:21:57.679> your<00:21:57.919> process<00:21:58.240> also<00:21:58.880> contains<00:21:59.200> one\nand uh, your process also contains one\nand uh, your process also contains one or<00:21:59.520> more<00:21:59.679> threads<00:22:00.000> that<00:22:00.159> are<00:22:00.320> executing<00:22:00.720> just,\nor more threads that are executing just,\nor more threads that are executing just, you<00:22:01.280> know,<00:22:01.360> pieces<00:22:01.679> of<00:22:01.919> code,<00:22:02.400> right?<00:22:03.760> Uh,<00:22:04.000> and\nyou know, pieces of code, right? Uh, and\nyou know, pieces of code, right? Uh, and each<00:22:04.559> one<00:22:04.799> includes<00:22:05.200> things<00:22:05.440> like<00:22:05.760> a<00:22:06.000> register\neach one includes things like a register\neach one includes things like a register file.<00:22:07.360> Um,<00:22:07.600> the<00:22:07.840> kernel<00:22:08.320> scheduler<00:22:08.799> then<00:22:08.960> is\nfile. Um, the kernel scheduler then is\nfile. Um, the kernel scheduler then is like,<00:22:09.280> I've<00:22:09.440> got<00:22:09.520> all<00:22:09.600> these<00:22:09.760> threads.<00:22:10.080> I'll\nlike, I've got all these threads. I'll\nlike, I've got all these threads. I'll start<00:22:10.480> putting<00:22:10.720> them<00:22:10.799> onto<00:22:11.039> these<00:22:11.200> cores.\nstart putting them onto these cores.\nstart putting them onto these cores. We'll<00:22:11.760> schedule<00:22:12.000> them,<00:22:12.320> get<00:22:12.480> them<00:22:12.640> going,<00:22:13.360> and\nWe'll schedule them, get them going, and\nWe'll schedule them, get them going, and then<00:22:13.760> your<00:22:14.000> program<00:22:14.320> is<00:22:14.640> executing.\nthen your program is executing.\nthen your program is executing. So,<00:22:17.200> a<00:22:17.360> debugger<00:22:17.840> is<00:22:18.000> just<00:22:18.159> a<00:22:18.400> program.<00:22:19.360> And<00:22:19.520> so\nSo, a debugger is just a program. And so\nSo, a debugger is just a program. And so when<00:22:19.840> it<00:22:20.000> executes<00:22:20.480> it's<00:22:20.640> just<00:22:20.799> another\nwhen it executes it's just another\nwhen it executes it's just another process<00:22:22.159> uh<00:22:22.320> one<00:22:22.559> which<00:22:22.799> the<00:22:23.039> kernel<00:22:23.520> records\nprocess uh one which the kernel records\nprocess uh one which the kernel records as<00:22:24.159> being<00:22:24.400> attached<00:22:25.360> to<00:22:26.000> uh\nah<00:22:29.520> got<00:22:29.679> it<00:22:29.919> thanks<00:22:31.120> uh<00:22:31.280> it's<00:22:31.520> just<00:22:31.760> another\nah got it thanks uh it's just another\nah got it thanks uh it's just another process<00:22:32.400> but<00:22:32.799> uh<00:22:32.880> the<00:22:33.120> kernel<00:22:33.520> is<00:22:33.760> just\nprocess but uh the kernel is just\nprocess but uh the kernel is just recording<00:22:34.799> the<00:22:35.039> debugger<00:22:35.520> as<00:22:35.760> being<00:22:36.000> attached\nrecording the debugger as being attached\nrecording the debugger as being attached to<00:22:37.360> the<00:22:37.600> debuggy.<00:22:38.080> It's<00:22:38.240> just<00:22:38.320> a<00:22:38.480> state<00:22:38.720> in<00:22:38.880> the\nto the debuggy. It's just a state in the\nto the debuggy. It's just a state in the kernel.\nkernel.\nkernel. Um,<00:22:41.760> so,<00:22:42.320> uh,<00:22:42.880> when<00:22:43.120> a<00:22:43.280> debugger<00:22:43.600> is<00:22:43.760> attached\nUm, so, uh, when a debugger is attached\nUm, so, uh, when a debugger is attached to<00:22:44.080> another<00:22:44.400> process,<00:22:44.960> which<00:22:45.280> I<00:22:45.440> refer<00:22:45.600> to<00:22:45.760> as\nto another process, which I refer to as\nto another process, which I refer to as the<00:22:46.080> debug,<00:22:47.200> I<00:22:47.360> don't<00:22:47.440> know<00:22:47.520> if<00:22:47.679> anyone<00:22:47.919> else\nthe debug, I don't know if anyone else\nthe debug, I don't know if anyone else does<00:22:48.320> that,<00:22:48.480> but<00:22:48.799> it's<00:22:49.039> kind<00:22:49.200> of,<00:22:49.440> you<00:22:49.600> know,<00:22:49.760> I\ndoes that, but it's kind of, you know, I\ndoes that, but it's kind of, you know, I don't<00:22:50.000> know,<00:22:50.320> hopefully<00:22:50.720> hopefully<00:22:51.039> it's\ndon't know, hopefully hopefully it's\ndon't know, hopefully hopefully it's clear.<00:22:51.600> Hope<00:22:51.840> I<00:22:52.000> don't<00:22:52.159> fumble<00:22:52.880> it.<00:22:53.200> But<00:22:53.760> point\nclear. Hope I don't fumble it. But point\nclear. Hope I don't fumble it. But point being,<00:22:54.480> uh,<00:22:54.640> when<00:22:54.880> you're<00:22:55.039> attached<00:22:55.440> as<00:22:55.600> debug\nbeing, uh, when you're attached as debug\nbeing, uh, when you're attached as debug as<00:22:56.159> the<00:22:56.320> debugger,<00:22:56.720> the<00:22:56.799> kernel<00:22:57.120> will<00:22:57.280> report\nas the debugger, the kernel will report\nas the debugger, the kernel will report to<00:22:57.679> the<00:22:57.760> debugger<00:22:58.559> uh,<00:22:58.720> debug<00:22:59.039> events.<00:22:59.360> You\nto the debugger uh, debug events. You\nto the debugger uh, debug events. You get<00:22:59.840> sort<00:23:00.000> of<00:23:00.080> a<00:23:00.240> series<00:23:00.400> of<00:23:00.559> debug<00:23:00.960> events.\nget sort of a series of debug events.\nget sort of a series of debug events. Um,<00:23:02.799> sometimes<00:23:03.120> the<00:23:03.280> building<00:23:03.520> blocks<00:23:03.679> that\nUm, sometimes the building blocks that\nUm, sometimes the building blocks that the<00:23:03.919> colonel<00:23:04.159> provides<00:23:04.400> are<00:23:04.559> lower<00:23:04.799> than\nthe colonel provides are lower than\nthe colonel provides are lower than this,<00:23:05.280> but<00:23:06.240> in<00:23:06.400> principle,<00:23:06.799> this<00:23:06.960> is<00:23:07.120> sort<00:23:07.280> of\nthis, but in principle, this is sort of\nthis, but in principle, this is sort of how<00:23:07.760> it's<00:23:08.000> how<00:23:08.159> you<00:23:08.320> can<00:23:08.480> conceptualize<00:23:09.039> it.\nhow it's how you can conceptualize it.\nhow it's how you can conceptualize it. Um,<00:23:10.480> and<00:23:10.640> these<00:23:10.880> debug<00:23:11.200> events<00:23:11.440> include\nUm, and these debug events include\nUm, and these debug events include things<00:23:11.840> like,<00:23:12.080> okay,<00:23:12.240> a<00:23:12.400> thread<00:23:12.559> has<00:23:12.720> been\nthings like, okay, a thread has been\nthings like, okay, a thread has been created,<00:23:13.120> a<00:23:13.280> module<00:23:13.520> has<00:23:13.679> been<00:23:13.840> loaded,\ncreated, a module has been loaded,\ncreated, a module has been loaded, etc.<00:23:16.640> Or,<00:23:17.039> oh,<00:23:17.280> I<00:23:17.440> should<00:23:17.600> say,<00:23:17.840> this<00:23:18.000> one's\netc. Or, oh, I should say, this one's\netc. Or, oh, I should say, this one's important,<00:23:18.960> or<00:23:19.280> an<00:23:19.520> exception<00:23:19.840> has<00:23:20.080> been<00:23:20.159> hit,\nimportant, or an exception has been hit,\nimportant, or an exception has been hit, right?<00:23:21.120> Like<00:23:21.280> a<00:23:21.520> hardware<00:23:21.840> exception.\nright? Like a hardware exception.\nright? Like a hardware exception. Um,<00:23:24.000> so<00:23:24.159> the<00:23:24.400> debugger<00:23:24.799> process<00:23:25.120> control,\nUm, so the debugger process control,\nUm, so the debugger process control, like<00:23:25.760> the<00:23:25.919> piece<00:23:26.080> of<00:23:26.159> the<00:23:26.240> debugger<00:23:26.640> that's\nlike the piece of the debugger that's\nlike the piece of the debugger that's doing<00:23:26.960> process<00:23:27.280> control,<00:23:27.600> and<00:23:27.760> the<00:23:27.919> debuggy\ndoing process control, and the debuggy\ndoing process control, and the debuggy are<00:23:28.480> in<00:23:28.640> kind<00:23:28.720> of<00:23:28.799> one<00:23:28.960> of<00:23:29.120> two<00:23:29.360> states,<00:23:29.600> you\nare in kind of one of two states, you\nare in kind of one of two states, you can<00:23:29.840> think<00:23:30.000> of<00:23:30.080> it.<00:23:31.360> um<00:23:31.760> either<00:23:32.000> the\ncan think of it. um either the\ncan think of it. um either the debugger's<00:23:32.720> process<00:23:33.039> control<00:23:33.679> is<00:23:34.000> running\ndebugger's process control is running\ndebugger's process control is running and<00:23:35.360> the<00:23:35.520> debuggy<00:23:36.000> is<00:23:36.240> paused<00:23:37.520> or<00:23:38.000> the\nand the debuggy is paused or the\nand the debuggy is paused or the debugger<00:23:38.720> process<00:23:39.120> control<00:23:39.360> is<00:23:39.600> paused<00:23:40.320> and\ndebugger process control is paused and\ndebugger process control is paused and the<00:23:40.720> debug<00:23:41.360> is<00:23:41.679> running.<00:23:42.159> So<00:23:42.320> it<00:23:42.559> get<00:23:42.799> kind<00:23:42.960> of\nthe debug is running. So it get kind of\nthe debug is running. So it get kind of a<00:23:43.360> pingpong<00:23:43.919> between<00:23:44.159> these<00:23:44.400> two<00:23:44.559> states<00:23:44.799> is\na pingpong between these two states is\na pingpong between these two states is happening.\nhappening.\nhappening. Uh<00:23:47.840> and<00:23:48.080> this<00:23:48.240> means<00:23:48.400> that<00:23:48.720> execution<00:23:49.679> between\nUh and this means that execution between\nUh and this means that execution between a<00:23:50.080> debugger<00:23:50.480> and<00:23:50.640> debug<00:23:51.280> can<00:23:51.440> sort<00:23:51.600> of<00:23:51.679> be<00:23:52.000> you\na debugger and debug can sort of be you\na debugger and debug can sort of be you can<00:23:52.320> think<00:23:52.400> of<00:23:52.480> it<00:23:52.640> as<00:23:52.799> interled<00:23:53.280> across<00:23:53.600> time\ncan think of it as interled across time\ncan think of it as interled across time like<00:23:54.320> it's<00:23:54.559> mutually<00:23:54.960> exclusive<00:23:55.520> only<00:23:55.760> one<00:23:55.919> is\nlike it's mutually exclusive only one is\nlike it's mutually exclusive only one is really<00:23:56.400> doing<00:23:56.559> things<00:23:57.679> uh<00:23:57.760> at<00:23:58.000> a<00:23:58.159> time.\nreally doing things uh at a time.\nreally doing things uh at a time. This<00:23:59.840> allows<00:24:00.080> the<00:24:00.159> debugger<00:24:00.559> to<00:24:00.720> sort<00:24:00.880> of\nThis allows the debugger to sort of\nThis allows the debugger to sort of interle<00:24:01.360> its<00:24:01.600> execution<00:24:02.480> with<00:24:02.720> the<00:24:02.880> debuggy\ninterle its execution with the debuggy\ninterle its execution with the debuggy in<00:24:03.440> a<00:24:03.520> variety<00:24:03.760> of<00:24:03.840> ways.<00:24:04.080> So<00:24:04.240> this<00:24:04.400> is<00:24:04.480> how<00:24:04.640> the\nin a variety of ways. So this is how the\nin a variety of ways. So this is how the runtime<00:24:05.520> code<00:24:05.840> modification<00:24:06.720> actually\nruntime code modification actually\nruntime code modification actually works.<00:24:07.679> It's<00:24:07.919> that<00:24:08.320> the<00:24:08.559> debugger<00:24:09.120> has<00:24:09.360> the\nworks. It's that the debugger has the\nworks. It's that the debugger has the opportunity<00:24:09.840> to<00:24:10.080> sort<00:24:10.240> of<00:24:10.400> mutate<00:24:10.880> the<00:24:11.120> debug\nopportunity to sort of mutate the debug\nopportunity to sort of mutate the debug live<00:24:12.720> before<00:24:12.960> it<00:24:13.200> continues.<00:24:13.760> So<00:24:13.919> you<00:24:14.080> can\nlive before it continues. So you can\nlive before it continues. So you can change<00:24:14.640> how<00:24:14.799> it's<00:24:15.039> actually<00:24:15.279> executing.\nchange how it's actually executing.\nchange how it's actually executing. That's<00:24:16.240> how<00:24:16.400> it<00:24:16.480> avoids<00:24:16.880> the<00:24:17.120> whole<00:24:17.440> build\nThat's how it avoids the whole build\nThat's how it avoids the whole build step<00:24:18.159> alto<00:24:18.400> together.<00:24:19.360> Um\nstep alto together. Um\nstep alto together. Um now<00:24:21.200> the<00:24:21.360> granularity<00:24:21.840> here<00:24:22.000> is<00:24:22.159> somewhat\nnow the granularity here is somewhat\nnow the granularity here is somewhat subtle<00:24:23.039> and<00:24:23.279> it<00:24:23.440> varies<00:24:23.679> by<00:24:23.919> platform.<00:24:24.480> So,\nsubtle and it varies by platform. So,\nsubtle and it varies by platform. So, you<00:24:25.200> know,<00:24:25.360> for<00:24:25.520> example,<00:24:26.159> while<00:24:26.480> the<00:24:26.640> debuggy\nyou know, for example, while the debuggy\nyou know, for example, while the debuggy is<00:24:27.279> executing,<00:24:27.600> the<00:24:27.760> debugger<00:24:28.080> could<00:24:28.240> still\nis executing, the debugger could still\nis executing, the debugger could still be<00:24:28.559> doing<00:24:28.720> UI<00:24:29.200> like<00:24:30.000> um<00:24:30.480> you<00:24:30.720> know,\nbe doing UI like um you know,\nbe doing UI like um you know, it's<00:24:33.039> not<00:24:33.200> necessarily<00:24:34.000> exactly<00:24:34.559> that,<00:24:35.279> you\nit's not necessarily exactly that, you\nit's not necessarily exactly that, you know,<00:24:35.679> the<00:24:35.840> the<00:24:36.240> entire<00:24:36.559> debugger<00:24:36.960> is<00:24:37.120> stopped\nknow, the the entire debugger is stopped\nknow, the the entire debugger is stopped while<00:24:37.600> the<00:24:37.760> debuggy<00:24:38.960> uh<00:24:39.120> is<00:24:39.360> running.<00:24:40.320> Um\nwhile the debuggy uh is running. Um\nwhile the debuggy uh is running. Um now<00:24:42.400> on<00:24:42.640> Windows,<00:24:43.360> it<00:24:43.600> tends<00:24:43.840> to<00:24:44.000> look<00:24:44.159> a<00:24:44.320> lot\nnow on Windows, it tends to look a lot\nnow on Windows, it tends to look a lot like<00:24:44.640> this<00:24:45.120> um<00:24:45.279> because<00:24:45.520> it's<00:24:45.760> explicitly\nlike this um because it's explicitly\nlike this um because it's explicitly like<00:24:46.799> wait<00:24:47.039> for<00:24:47.200> a<00:24:47.279> debug<00:24:47.679> event<00:24:47.919> API.<00:24:48.720> Um<00:24:49.039> so\nlike wait for a debug event API. Um so\nlike wait for a debug event API. Um so in<00:24:49.360> that<00:24:49.520> case,<00:24:49.679> it's<00:24:49.919> like<00:24:50.080> your<00:24:50.240> thread<00:24:50.400> is\nin that case, it's like your thread is\nin that case, it's like your thread is literally<00:24:50.960> sleeping<00:24:51.279> here.<00:24:51.919> So<00:24:52.559> um<00:24:52.799> it<00:24:53.039> looks\nliterally sleeping here. So um it looks\nliterally sleeping here. So um it looks it<00:24:54.000> looks<00:24:54.240> a<00:24:54.400> lot<00:24:54.480> like<00:24:54.720> this.<00:24:55.120> Uh<00:24:55.679> but<00:24:56.080> you\nit looks a lot like this. Uh but you\nit looks a lot like this. Uh but you know<00:24:56.400> hope<00:24:56.640> hopefully<00:24:56.960> that's<00:24:57.200> clear<00:24:57.360> enough.\nknow hope hopefully that's clear enough.\nknow hope hopefully that's clear enough. Um\nUm\nUm so<00:25:01.679> this<00:25:01.919> interled<00:25:02.720> uh<00:25:02.880> execution<00:25:03.760> like<00:25:03.919> I\nso this interled uh execution like I\nso this interled uh execution like I said<00:25:04.480> the<00:25:04.720> debugger<00:25:05.120> can<00:25:05.200> do<00:25:05.279> a<00:25:05.440> bunch<00:25:05.600> of\nsaid the debugger can do a bunch of\nsaid the debugger can do a bunch of things<00:25:06.080> like<00:25:06.880> read<00:25:07.440> registers,<00:25:08.080> write\nthings like read registers, write\nthings like read registers, write registers,<00:25:09.440> read<00:25:09.760> debug<00:25:10.159> events<00:25:10.559> or<00:25:10.880> obtain\nregisters, read debug events or obtain\nregisters, read debug events or obtain debug<00:25:11.679> events,\ndebug events,\ndebug events, read<00:25:14.400> memory,<00:25:15.120> write<00:25:15.360> memory\nread memory, write memory\nread memory, write memory um<00:25:17.520> and<00:25:17.760> so<00:25:17.919> on.<00:25:18.640> Uh<00:25:19.039> and<00:25:19.279> then<00:25:19.679> you<00:25:19.840> know<00:25:20.080> from\num and so on. Uh and then you know from\num and so on. Uh and then you know from the\nthe\nthe well<00:25:22.559> that<00:25:22.799> covers<00:25:23.039> all<00:25:23.120> of<00:25:23.200> it<00:25:23.360> right<00:25:23.600> read\nwell that covers all of it right read\nwell that covers all of it right read and<00:25:23.919> write<00:25:24.159> is<00:25:24.559> reading<00:25:24.960> is<00:25:25.039> is<00:25:25.360> the<00:25:25.520> blue<00:25:25.760> and\nand write is reading is is the blue and\nand write is reading is is the blue and then<00:25:26.640> writing<00:25:26.960> is<00:25:27.120> the<00:25:27.279> orange<00:25:27.600> right?\nthen writing is the orange right?\nthen writing is the orange right? So<00:25:30.640> we<00:25:30.880> know<00:25:30.960> that<00:25:31.120> a<00:25:31.279> debugger<00:25:31.840> can<00:25:32.080> read\nSo we know that a debugger can read\nSo we know that a debugger can read registers<00:25:32.799> in<00:25:32.960> memory<00:25:33.440> which<00:25:33.600> is<00:25:33.760> really<00:25:33.919> the\nregisters in memory which is really the\nregisters in memory which is really the main<00:25:34.240> building<00:25:34.559> block<00:25:35.279> for<00:25:35.520> like<00:25:35.760> extracting\nmain building block for like extracting\nmain building block for like extracting information<00:25:36.720> out<00:25:36.880> of<00:25:36.960> a<00:25:37.200> process<00:25:37.520> right<00:25:37.679> you\ninformation out of a process right you\ninformation out of a process right you kind<00:25:38.000> of<00:25:38.159> you<00:25:38.400> can<00:25:38.480> read<00:25:38.720> memory<00:25:39.760> right<00:25:40.080> and<00:25:40.240> so\nkind of you can read memory right and so\nkind of you can read memory right and so like<00:25:40.640> all<00:25:40.799> we<00:25:40.960> need<00:25:41.120> is<00:25:41.360> to<00:25:41.520> like<00:25:41.679> ask<00:25:41.919> the<00:25:42.080> user\nlike all we need is to like ask the user\nlike all we need is to like ask the user for<00:25:42.400> an<00:25:42.559> address<00:25:43.039> you<00:25:43.120> know<00:25:43.279> ask<00:25:43.520> them<00:25:43.679> for<00:25:43.760> a\nfor an address you know ask them for a\nfor an address you know ask them for a size<00:25:44.080> and<00:25:44.240> then<00:25:44.320> we<00:25:44.400> just<00:25:44.559> show<00:25:44.640> them<00:25:44.720> the\nsize and then we just show them the\nsize and then we just show them the bytes<00:25:45.120> and<00:25:45.200> then<00:25:45.360> we're<00:25:45.440> done<00:25:45.679> right\nbytes and then we're done right\nbytes and then we're done right visualization<00:25:47.120> the<00:25:47.360> end<00:25:48.400> um<00:25:49.360> obviously<00:25:49.679> not\nvisualization the end um obviously not\nvisualization the end um obviously not as<00:25:50.159> the<00:25:50.400> user<00:25:50.880> you<00:25:51.039> don't<00:25:51.200> want<00:25:51.279> to<00:25:51.360> ask<00:25:51.600> about\nas the user you don't want to ask about\nas the user you don't want to ask about address<00:25:52.400> uh<00:25:52.559> what<00:25:52.799> what<00:25:52.960> did<00:25:53.120> I<00:25:53.279> write<00:25:53.679> 0x1<00:25:54.559> f4\naddress uh what what did I write 0x1 f4\naddress uh what what did I write 0x1 f4 3<00:25:55.440> b5<00:25:55.919> c<00:25:56.159> 0<00:25:56.640> b<00:25:56.799> 0\n3 b5 c 0 b 0\n3 b5 c 0 b 0 you<00:25:58.640> wanted<00:25:58.880> to<00:25:58.960> ask<00:25:59.120> about<00:25:59.440> X\nyou wanted to ask about X\nyou wanted to ask about X and<00:26:01.679> ideally<00:26:02.080> the<00:26:02.240> system<00:26:02.480> which<00:26:03.039> allows<00:26:03.279> you\nand ideally the system which allows you\nand ideally the system which allows you to<00:26:03.600> ask<00:26:03.760> about<00:26:03.919> X<00:26:04.720> is<00:26:05.039> flexible<00:26:05.520> enough<00:26:06.480> such\nto ask about X is flexible enough such\nto ask about X is flexible enough such that<00:26:07.039> X<00:26:07.279> is<00:26:07.520> a<00:26:07.679> large<00:26:08.000> set<00:26:08.159> of<00:26:08.240> expressions.<00:26:08.720> It\nthat X is a large set of expressions. It\nthat X is a large set of expressions. It could<00:26:08.960> be<00:26:09.200> it<00:26:09.360> could<00:26:09.520> be<00:26:09.679> many<00:26:09.919> things<00:26:10.000> you\ncould be it could be many things you\ncould be it could be many things you could<00:26:10.320> ask<00:26:10.480> about<00:26:10.720> your<00:26:10.880> program.\ncould ask about your program.\ncould ask about your program. Um<00:26:13.760> debuggers<00:26:14.240> know<00:26:14.320> how<00:26:14.400> to<00:26:14.559> evaluate\nUm debuggers know how to evaluate\nUm debuggers know how to evaluate something<00:26:15.120> like<00:26:15.279> X<00:26:16.240> through<00:26:17.039> uh<00:26:17.200> an<00:26:17.440> evalu<00:26:18.080> uh\nsomething like X through uh an evalu uh\nsomething like X through uh an evalu uh an<00:26:18.480> expression<00:26:18.960> evaluation<00:26:19.600> system.<00:26:20.559> And\nan expression evaluation system. And\nan expression evaluation system. And this<00:26:20.880> is<00:26:20.960> where<00:26:21.120> all<00:26:21.279> the<00:26:21.440> visualization\nthis is where all the visualization\nthis is where all the visualization stuff<00:26:22.240> starts<00:26:22.640> kind<00:26:22.799> of<00:26:22.880> piecing<00:26:23.279> together.\nstuff starts kind of piecing together.\nstuff starts kind of piecing together. So<00:26:23.840> let's<00:26:24.000> dig<00:26:24.159> into<00:26:24.400> that.\nSo let's dig into that.\nSo let's dig into that. Evaluating<00:26:27.039> expressions,<00:26:27.679> it's<00:26:27.919> just<00:26:28.080> a\nEvaluating expressions, it's just a\nEvaluating expressions, it's just a compiler.<00:26:28.720> It's<00:26:28.880> just<00:26:29.039> a<00:26:29.200> compiler<00:26:29.600> problem.\ncompiler. It's just a compiler problem.\ncompiler. It's just a compiler problem. Normal<00:26:30.480> compiler<00:26:30.960> problem.<00:26:31.200> We<00:26:31.360> know<00:26:31.440> how<00:26:31.600> to\nNormal compiler problem. We know how to\nNormal compiler problem. We know how to solve<00:26:31.919> those.<00:26:32.400> If<00:26:32.640> we<00:26:32.799> have<00:26:32.880> some<00:26:33.360> textual\nsolve those. If we have some textual\nsolve those. If we have some textual expression<00:26:34.400> like<00:26:34.640> entity.targets<00:26:35.840> at<00:26:36.080> five,\nexpression like entity.targets at five,\nexpression like entity.targets at five, the<00:26:37.520> first<00:26:37.679> step<00:26:37.840> we<00:26:38.080> can<00:26:38.159> use<00:26:38.320> to<00:26:38.480> understand\nthe first step we can use to understand\nthe first step we can use to understand that<00:26:39.039> expression<00:26:40.400> is<00:26:40.640> to<00:26:40.799> parse<00:26:41.039> it<00:26:41.440> into<00:26:41.679> a\nthat expression is to parse it into a\nthat expression is to parse it into a structured<00:26:42.240> representation.<00:26:43.279> Now<00:26:43.600> Sam<00:26:44.159> has\nstructured representation. Now Sam has\nstructured representation. Now Sam has some<00:26:44.640> opinions<00:26:46.080> that<00:26:46.400> will<00:26:47.039> invalidate<00:26:47.840> what\nsome opinions that will invalidate what\nsome opinions that will invalidate what what<00:26:48.240> I<00:26:48.400> say<00:26:48.720> maybe,<00:26:48.960> but<00:26:49.279> but<00:26:49.600> you<00:26:49.679> know<00:26:49.840> the\nwhat I say maybe, but but you know the\nwhat I say maybe, but but you know the traditional<00:26:50.320> pipeline<00:26:50.720> is<00:26:50.880> like<00:26:51.039> okay,<00:26:51.279> first\ntraditional pipeline is like okay, first\ntraditional pipeline is like okay, first you're<00:26:51.600> going<00:26:51.600> to<00:26:51.760> parse<00:26:51.919> it<00:26:52.080> into<00:26:52.240> some<00:26:52.400> sort\nyou're going to parse it into some sort\nyou're going to parse it into some sort of<00:26:52.559> abstract<00:26:52.960> syntax<00:26:53.360> tree<00:26:53.679> structure.<00:26:54.640> Um,\nof abstract syntax tree structure. Um,\nof abstract syntax tree structure. Um, you<00:26:55.200> know,<00:26:55.279> in<00:26:55.440> this<00:26:55.600> case,<00:26:56.080> not<00:26:56.320> surprising,\nyou know, in this case, not surprising,\nyou know, in this case, not surprising, square<00:26:57.440> brackets<00:26:57.760> at<00:26:57.919> the<00:26:58.000> top,<00:26:58.240> five<00:26:58.480> on<00:26:58.640> the\nsquare brackets at the top, five on the\nsquare brackets at the top, five on the right,<00:26:59.039> dot<00:26:59.279> operator<00:26:59.679> on<00:26:59.840> the<00:26:59.919> left,\nright, dot operator on the left,\nright, dot operator on the left, entity.targets\nentity.targets\nentity.targets for<00:27:02.080> the<00:27:02.240> children<00:27:02.480> of<00:27:02.559> the<00:27:02.720> dot<00:27:02.960> operator.\nfor the children of the dot operator.\nfor the children of the dot operator. From<00:27:05.760> there,<00:27:06.720> um,<00:27:07.039> you<00:27:07.279> know,<00:27:07.760> you<00:27:07.919> can\nFrom there, um, you know, you can\nFrom there, um, you know, you can evaluate<00:27:08.400> types<00:27:08.720> for<00:27:08.799> the<00:27:08.880> abstract<00:27:09.279> syntax\nevaluate types for the abstract syntax\nevaluate types for the abstract syntax tree.<00:27:09.760> You<00:27:09.840> can<00:27:09.919> type<00:27:10.159> check<00:27:10.320> it,<00:27:10.799> you<00:27:10.960> can\ntree. You can type check it, you can\ntree. You can type check it, you can interpret<00:27:11.520> it,<00:27:12.000> or<00:27:12.240> you<00:27:12.400> can<00:27:12.480> produce<00:27:12.799> any\ninterpret it, or you can produce any\ninterpret it, or you can produce any intermediate<00:27:13.520> representation<00:27:14.240> that<00:27:14.480> you\nintermediate representation that you\nintermediate representation that you need.<00:27:15.520> Um,<00:27:15.760> you<00:27:15.919> can<00:27:16.000> lower<00:27:16.240> down<00:27:16.400> to<00:27:16.559> bite\nneed. Um, you can lower down to bite\nneed. Um, you can lower down to bite code.<00:27:17.279> You<00:27:17.440> could<00:27:17.520> even<00:27:17.679> lower<00:27:17.919> down<00:27:18.080> to\ncode. You could even lower down to\ncode. You could even lower down to native<00:27:18.559> code.<00:27:19.679> In<00:27:19.919> this<00:27:20.080> particular<00:27:20.480> case,<00:27:21.120> if\nnative code. In this particular case, if\nnative code. In this particular case, if we<00:27:21.520> boil<00:27:21.919> down<00:27:22.159> to<00:27:22.400> like<00:27:22.559> a<00:27:22.799> simple<00:27:23.120> sort<00:27:23.279> of\nwe boil down to like a simple sort of\nwe boil down to like a simple sort of stack<00:27:23.760> machine<00:27:24.400> like<00:27:24.640> intermediate\nstack machine like intermediate\nstack machine like intermediate representation<00:27:25.600> bite<00:27:25.919> code<00:27:26.400> uh<00:27:26.640> like<00:27:26.960> format\nrepresentation bite code uh like format\nrepresentation bite code uh like format um<00:27:29.360> you<00:27:29.520> know<00:27:29.760> not<00:27:30.000> that<00:27:30.159> surprising<00:27:30.960> push<00:27:31.200> the\num you know not that surprising push the\num you know not that surprising push the address<00:27:31.679> of<00:27:31.760> entity<00:27:32.080> add<00:27:32.240> the<00:27:32.320> offset<00:27:32.640> of\naddress of entity add the offset of\naddress of entity add the offset of targets<00:27:33.360> add<00:27:33.600> five<00:27:33.840> times<00:27:34.240> you<00:27:34.400> know<00:27:34.480> the\ntargets add five times you know the\ntargets add five times you know the element<00:27:34.960> size<00:27:35.120> of<00:27:35.279> whatever<00:27:35.520> this<00:27:35.679> array<00:27:35.919> is\nelement size of whatever this array is\nelement size of whatever this array is and<00:27:36.400> then<00:27:36.559> you<00:27:36.640> pop<00:27:36.880> and<00:27:36.960> that's<00:27:37.120> your<00:27:37.279> address\nand then you pop and that's your address\nand then you pop and that's your address of<00:27:37.760> entity.target<00:27:38.320> target<00:27:38.559> set<00:27:38.880> five\nof entity.target target set five\nof entity.target target set five and<00:27:40.720> then<00:27:40.960> obviously<00:27:41.279> to<00:27:41.440> compute<00:27:41.760> the<00:27:41.919> value\nand then obviously to compute the value\nand then obviously to compute the value of<00:27:42.240> something<00:27:42.400> you<00:27:42.559> just<00:27:42.720> read<00:27:42.880> from<00:27:43.039> whatever\nof something you just read from whatever\nof something you just read from whatever that<00:27:43.520> address<00:27:43.840> is<00:27:44.240> because<00:27:44.559> the<00:27:44.799> debugger<00:27:45.200> can\nthat address is because the debugger can\nthat address is because the debugger can do<00:27:45.520> that<00:27:45.919> and<00:27:46.159> then<00:27:46.559> you've<00:27:46.799> got<00:27:46.960> your<00:27:47.200> value.\ndo that and then you've got your value.\ndo that and then you've got your value. So<00:27:49.600> the<00:27:49.760> full<00:27:50.000> pipeline<00:27:50.720> might<00:27:50.960> look\nSo the full pipeline might look\nSo the full pipeline might look something<00:27:51.360> like<00:27:51.520> this<00:27:52.320> and<00:27:52.559> we<00:27:52.799> can<00:27:52.960> call<00:27:53.200> that\nsomething like this and we can call that\nsomething like this and we can call that an<00:27:53.760> evaluation.<00:27:54.960> Um<00:27:55.279> so<00:27:55.440> you<00:27:55.600> start<00:27:55.679> with<00:27:55.840> the\nan evaluation. Um so you start with the\nan evaluation. Um so you start with the text<00:27:56.159> you<00:27:56.240> get<00:27:56.320> an<00:27:56.480> abstract<00:27:56.799> syntax<00:27:57.200> tree<00:27:57.919> you\ntext you get an abstract syntax tree you\ntext you get an abstract syntax tree you get<00:27:58.240> an<00:27:58.480> intermediate<00:27:58.960> representation<00:27:59.840> you\nget an intermediate representation you\nget an intermediate representation you know<00:28:00.000> a<00:28:00.240> type<00:28:00.720> pops<00:28:01.039> out<00:28:01.600> and<00:28:01.840> you<00:28:02.000> get<00:28:02.159> a<00:28:02.559> uh\nknow a type pops out and you get a uh\nknow a type pops out and you get a uh value<00:28:03.520> finally<00:28:03.919> at<00:28:04.080> the<00:28:04.240> end.\nvalue finally at the end.\nvalue finally at the end. But<00:28:06.320> how<00:28:06.399> does<00:28:06.559> our<00:28:06.960> compiler<00:28:08.000> know<00:28:08.240> what<00:28:08.399> the\nBut how does our compiler know what the\nBut how does our compiler know what the address<00:28:08.880> of<00:28:09.039> entity<00:28:09.360> is?<00:28:09.679> Like<00:28:09.919> what<00:28:10.080> was\naddress of entity is? Like what was\naddress of entity is? Like what was that?<00:28:10.640> And<00:28:10.880> how<00:28:11.039> do<00:28:11.200> we<00:28:11.600> we<00:28:12.000> like<00:28:12.240> the<00:28:12.399> com<00:28:12.640> our\nthat? And how do we we like the com our\nthat? And how do we we like the com our compiler<00:28:13.679> really<00:28:13.919> wants<00:28:14.159> to<00:28:14.320> talk<00:28:14.480> about<00:28:14.720> the\ncompiler really wants to talk about the\ncompiler really wants to talk about the same<00:28:15.200> things<00:28:15.840> that<00:28:16.159> the<00:28:16.480> actual<00:28:16.880> program\nsame things that the actual program\nsame things that the actual program compiler<00:28:18.240> talked<00:28:18.480> about<00:28:18.720> like<00:28:18.880> the<00:28:18.960> thing\ncompiler talked about like the thing\ncompiler talked about like the thing you're<00:28:19.440> interacting<00:28:19.840> with<00:28:20.000> when<00:28:20.240> you<00:28:20.320> write\nyou're interacting with when you write\nyou're interacting with when you write the<00:28:20.640> code.<00:28:21.200> You<00:28:21.440> the<00:28:21.679> debugger<00:28:22.159> wanted<00:28:22.399> to\nthe code. You the debugger wanted to\nthe code. You the debugger wanted to talk<00:28:22.799> about<00:28:23.039> that<00:28:23.360> stuff<00:28:24.000> too.<00:28:24.640> And<00:28:24.799> we<00:28:24.960> can<00:28:25.120> do\ntalk about that stuff too. And we can do\ntalk about that stuff too. And we can do that<00:28:25.679> with<00:28:26.000> debug<00:28:26.320> info<00:28:26.880> which<00:28:27.120> is<00:28:27.279> provided\nthat with debug info which is provided\nthat with debug info which is provided to<00:28:27.679> us<00:28:27.840> by<00:28:28.000> the<00:28:28.159> compiler<00:28:28.559> and<00:28:28.640> linker.\nto us by the compiler and linker.\nto us by the compiler and linker. Whoops.\nWhoops.\nWhoops. Okay.<00:28:34.559> So<00:28:34.880> debug<00:28:35.279> info<00:28:35.919> contains<00:28:36.320> a<00:28:36.640> like<00:28:36.799> a\nOkay. So debug info contains a like a\nOkay. So debug info contains a like a ton<00:28:37.120> of<00:28:37.279> stuff<00:28:37.520> like<00:28:37.679> there's<00:28:37.919> just<00:28:38.080> tons<00:28:38.240> of\nton of stuff like there's just tons of\nton of stuff like there's just tons of stuff<00:28:38.559> in<00:28:38.720> there.<00:28:39.200> I'm<00:28:39.360> not<00:28:39.520> going<00:28:39.600> to<00:28:39.679> cover\nstuff in there. I'm not going to cover\nstuff in there. I'm not going to cover all<00:28:40.000> of<00:28:40.159> it.<00:28:40.640> Um<00:28:41.039> but<00:28:41.279> you<00:28:41.440> can<00:28:41.520> think<00:28:41.679> of<00:28:41.840> it<00:28:42.000> as\nall of it. Um but you can think of it as\nall of it. Um but you can think of it as sort<00:28:42.320> of<00:28:42.399> a<00:28:42.640> serialization<00:28:43.919> of<00:28:44.159> what<00:28:44.320> the\nsort of a serialization of what the\nsort of a serialization of what the compiler<00:28:44.880> and<00:28:45.039> linker<00:28:45.440> did<00:28:45.679> to<00:28:45.919> turn<00:28:46.320> your\ncompiler and linker did to turn your\ncompiler and linker did to turn your highle<00:28:46.960> source<00:28:47.200> code<00:28:47.919> into<00:28:49.120> your\nhighle source code into your\nhighle source code into your final<00:28:51.760> uh<00:28:52.000> you<00:28:52.159> know<00:28:52.320> executable<00:28:52.799> images\nfinal uh you know executable images\nfinal uh you know executable images right<00:28:54.159> so<00:28:54.399> it's<00:28:54.559> sort<00:28:54.640> of<00:28:54.720> a<00:28:54.880> recording<00:28:55.200> of\nright so it's sort of a recording of\nright so it's sort of a recording of like<00:28:55.520> what<00:28:55.679> work<00:28:56.000> happened<00:28:56.640> if<00:28:56.799> that<00:28:57.039> makes\nlike what work happened if that makes\nlike what work happened if that makes sense.\nsense.\nsense. Um<00:28:59.120> so<00:28:59.600> one<00:28:59.840> thing<00:28:59.919> that<00:29:00.159> debug<00:29:00.559> info<00:29:00.799> has\nUm so one thing that debug info has\nUm so one thing that debug info has which<00:29:01.200> I<00:29:01.360> don't<00:29:01.520> cover<00:29:01.679> here<00:29:01.840> because<00:29:02.080> it's\nwhich I don't cover here because it's\nwhich I don't cover here because it's not<00:29:02.399> exactly<00:29:02.720> relevant<00:29:03.039> to<00:29:03.279> this<00:29:03.520> talk<00:29:04.240> is\nnot exactly relevant to this talk is\nnot exactly relevant to this talk is line<00:29:04.960> information<00:29:05.600> which<00:29:05.840> will<00:29:06.240> take<00:29:06.720> uh<00:29:06.799> it\nline information which will take uh it\nline information which will take uh it takes<00:29:07.200> like<00:29:07.840> ranges<00:29:08.159> of<00:29:08.320> exeu<00:29:08.880> ex<00:29:08.880> executable\ntakes like ranges of exeu ex executable\ntakes like ranges of exeu ex executable code<00:29:09.840> inside<00:29:10.159> of<00:29:10.320> your<00:29:11.279> uh<00:29:11.440> inside<00:29:11.679> of<00:29:11.760> your\ncode inside of your uh inside of your\ncode inside of your uh inside of your executable<00:29:12.480> image<00:29:12.880> and<00:29:13.039> it<00:29:13.279> maps<00:29:13.520> it<00:29:13.679> to<00:29:13.760> some\nexecutable image and it maps it to some\nexecutable image and it maps it to some source<00:29:14.240> location.<00:29:14.960> So<00:29:15.120> that's<00:29:15.279> like<00:29:15.440> one\nsource location. So that's like one\nsource location. So that's like one thing<00:29:16.080> used<00:29:16.240> to<00:29:16.399> implement<00:29:16.640> things<00:29:16.799> like\nthing used to implement things like\nthing used to implement things like stepping.<00:29:18.399> Not<00:29:18.640> going<00:29:18.720> to<00:29:18.799> get<00:29:18.960> into<00:29:19.120> that\nstepping. Not going to get into that\nstepping. Not going to get into that here<00:29:19.679> but<00:29:19.840> that's<00:29:20.080> in<00:29:20.240> debug<00:29:20.559> info<00:29:20.960> too.<00:29:22.000> Um,\nhere but that's in debug info too. Um,\nhere but that's in debug info too. Um, so<00:29:23.600> these<00:29:23.840> are<00:29:24.000> all<00:29:24.159> the<00:29:24.320> parts<00:29:24.559> that<00:29:24.720> I<00:29:25.039> would\nso these are all the parts that I would\nso these are all the parts that I would consider<00:29:25.679> relevant<00:29:26.080> for<00:29:26.399> like<00:29:27.039> evaluation,\nconsider relevant for like evaluation,\nconsider relevant for like evaluation, the<00:29:27.840> basics<00:29:28.159> of<00:29:28.320> an<00:29:28.480> evaluation<00:29:29.039> system,\nthe basics of an evaluation system,\nthe basics of an evaluation system, right?<00:29:30.240> So<00:29:30.320> you've<00:29:30.559> got<00:29:30.720> types,<00:29:31.760> globals,\nright? So you've got types, globals,\nright? So you've got types, globals, thread<00:29:32.480> locals,<00:29:32.880> procedures,<00:29:33.600> location\nthread locals, procedures, location\nthread locals, procedures, location info,<00:29:34.480> scopes,<00:29:34.799> and<00:29:34.960> locals.<00:29:35.440> All<00:29:35.679> this\ninfo, scopes, and locals. All this\ninfo, scopes, and locals. All this information<00:29:36.559> about<00:29:36.720> all<00:29:36.880> of<00:29:37.039> these<00:29:37.200> is<00:29:37.360> inside\ninformation about all of these is inside\ninformation about all of these is inside debug<00:29:38.000> info.\nThe<00:29:41.760> thing<00:29:41.840> about<00:29:42.000> debug<00:29:42.399> info<00:29:42.960> very<00:29:43.279> cross\nThe thing about debug info very cross\nThe thing about debug info very cross referential.<00:29:44.480> So<00:29:44.720> globals<00:29:46.000> all<00:29:46.240> point<00:29:46.480> to\nreferential. So globals all point to\nreferential. So globals all point to their<00:29:46.880> type<00:29:47.120> information.<00:29:47.600> So<00:29:47.840> a<00:29:48.000> global\ntheir type information. So a global\ntheir type information. So a global variable<00:29:48.640> obviously<00:29:48.960> has<00:29:49.120> a<00:29:49.279> type.<00:29:49.919> Global\nvariable obviously has a type. Global\nvariable obviously has a type. Global gets<00:29:50.480> a<00:29:50.640> type.<00:29:51.840> Thread<00:29:52.080> locals<00:29:52.399> get<00:29:52.480> a<00:29:52.559> type.\ngets a type. Thread locals get a type.\ngets a type. Thread locals get a type. Procedures<00:29:53.200> get<00:29:53.279> a<00:29:53.520> type.<00:29:54.399> Local<00:29:54.799> variables\nProcedures get a type. Local variables\nProcedures get a type. Local variables obviously<00:29:55.520> get<00:29:55.679> a<00:29:55.840> type.\nobviously get a type.\nobviously get a type. Locals<00:29:59.039> refer<00:29:59.279> to<00:29:59.440> their<00:29:59.679> location<00:30:00.080> info.\nLocals refer to their location info.\nLocals refer to their location info. Hint<00:30:02.399> for<00:30:02.640> the<00:30:02.960> address<00:30:03.279> entity<00:30:03.679> thing.<00:30:03.840> We'll\nHint for the address entity thing. We'll\nHint for the address entity thing. We'll get<00:30:04.159> there.<00:30:04.960> Um,<00:30:05.200> and<00:30:05.520> scopes<00:30:05.840> refer<00:30:06.080> to<00:30:06.159> the\nget there. Um, and scopes refer to the\nget there. Um, and scopes refer to the local<00:30:06.480> variables<00:30:06.799> that<00:30:06.960> they<00:30:07.120> contain.<00:30:07.520> And\nlocal variables that they contain. And\nlocal variables that they contain. And the<00:30:07.760> procedures<00:30:08.240> refer<00:30:09.279> to<00:30:09.440> the<00:30:09.679> scopes<00:30:10.880> um\nthe procedures refer to the scopes um\nthe procedures refer to the scopes um that<00:30:11.200> that<00:30:11.520> that<00:30:11.760> are<00:30:11.919> sort<00:30:12.000> of<00:30:12.080> nested<00:30:12.480> under\nthat that that are sort of nested under\nthat that that are sort of nested under them.\nthem.\nthem. Zoom<00:30:15.440> into<00:30:15.679> types.<00:30:16.240> Types<00:30:16.640> take<00:30:16.799> the<00:30:16.880> form<00:30:17.120> of\nZoom into types. Types take the form of\nZoom into types. Types take the form of a<00:30:17.360> directed<00:30:17.760> graph.\na directed graph.\na directed graph. So<00:30:20.559> let's<00:30:20.720> say<00:30:20.799> I've<00:30:21.039> got<00:30:21.120> some<00:30:21.360> type<00:30:21.919> in32\nSo let's say I've got some type in32\nSo let's say I've got some type in32 four<00:30:22.799> bytes.<00:30:23.120> Everyone<00:30:23.360> knows<00:30:23.520> what<00:30:23.600> an<00:30:23.760> in32\nfour bytes. Everyone knows what an in32\nfour bytes. Everyone knows what an in32 is<00:30:24.559> here<00:30:24.880> I<00:30:25.039> would<00:30:25.200> imagine.<00:30:26.320> Um<00:30:26.960> the<00:30:27.200> type\nis here I would imagine. Um the type\nis here I would imagine. Um the type information<00:30:28.000> records<00:30:28.320> that<00:30:28.559> as<00:30:28.720> sort<00:30:28.799> of<00:30:28.880> a\ninformation records that as sort of a\ninformation records that as sort of a basic<00:30:29.279> type.<00:30:30.080> It<00:30:30.320> can<00:30:30.399> encode<00:30:30.720> like<00:30:30.880> the<00:30:31.039> name\nbasic type. It can encode like the name\nbasic type. It can encode like the name of<00:30:31.360> it<00:30:31.919> and<00:30:32.159> then<00:30:32.480> its<00:30:32.799> size<00:30:33.039> and<00:30:33.279> then\nof it and then its size and then\nof it and then its size and then probably<00:30:33.760> like<00:30:33.919> it's<00:30:34.159> just<00:30:34.320> got<00:30:34.399> a<00:30:34.559> fixed<00:30:34.799> code\nprobably like it's just got a fixed code\nprobably like it's just got a fixed code for<00:30:35.279> this<00:30:35.520> in<00:30:35.760> in<00:30:35.760> in<00:30:36.640> pretty<00:30:36.880> much<00:30:37.039> every\nfor this in in in pretty much every\nfor this in in in pretty much every case.<00:30:38.399> Um\ncase. Um\ncase. Um types<00:30:40.559> can<00:30:40.640> also<00:30:40.880> act<00:30:41.039> as<00:30:41.200> type<00:30:41.440> operators<00:30:42.159> on\ntypes can also act as type operators on\ntypes can also act as type operators on on<00:30:42.960> some<00:30:43.120> other<00:30:43.279> type.<00:30:43.600> So<00:30:43.679> you've<00:30:43.840> got<00:30:43.919> a\non some other type. So you've got a\non some other type. So you've got a type,<00:30:44.320> it<00:30:44.480> can<00:30:44.559> point<00:30:44.799> to<00:30:44.960> another<00:30:45.200> type<00:30:45.760> and\ntype, it can point to another type and\ntype, it can point to another type and say<00:30:46.159> I'm<00:30:46.399> an<00:30:46.640> operator<00:30:47.039> on<00:30:47.200> that<00:30:47.360> type.<00:30:48.000> So\nsay I'm an operator on that type. So\nsay I'm an operator on that type. So here<00:30:49.679> I've<00:30:49.919> got<00:30:50.080> this<00:30:50.399> 16<00:30:50.720> array<00:30:51.039> type<00:30:51.600> and<00:30:51.840> it\nhere I've got this 16 array type and it\nhere I've got this 16 array type and it points<00:30:52.240> at<00:30:52.320> the<00:30:52.480> N32<00:30:53.120> type<00:30:53.679> and<00:30:54.080> and<00:30:54.320> if<00:30:54.480> I\npoints at the N32 type and and if I\npoints at the N32 type and and if I point<00:30:54.720> at<00:30:54.880> the<00:30:55.120> 16<00:30:55.919> array<00:30:56.320> node,<00:30:57.120> that's<00:30:57.360> an<00:30:57.520> in\npoint at the 16 array node, that's an in\npoint at the 16 array node, that's an in that's<00:30:58.159> a<00:30:58.320> 16<00:30:58.640> array<00:30:58.799> of<00:30:58.880> N32s.\nIf<00:31:03.600> I've<00:31:03.760> got<00:31:03.840> a<00:31:04.000> pointer<00:31:04.399> type<00:31:05.760> um<00:31:05.919> pointing\nIf I've got a pointer type um pointing\nIf I've got a pointer type um pointing to<00:31:06.399> the<00:31:06.480> N32,<00:31:07.520> if<00:31:07.760> I<00:31:07.840> point<00:31:08.000> at<00:31:08.240> that,<00:31:08.640> if<00:31:08.799> I<00:31:08.960> say\nto the N32, if I point at that, if I say\nto the N32, if I point at that, if I say like<00:31:09.440> that<00:31:09.679> type,<00:31:10.000> that's<00:31:10.240> going<00:31:10.240> to<00:31:10.320> be<00:31:10.399> an\nlike that type, that's going to be an\nlike that type, that's going to be an N32<00:31:11.279> pointer.\nN32 pointer.\nN32 pointer. double<00:31:14.159> pointer\n32<00:31:17.840> array<00:31:18.320> of<00:31:18.559> double<00:31:18.880> pointer\ntype<00:31:23.440> information<00:31:23.840> maybe<00:31:24.080> unsurprisingly\ntype information maybe unsurprisingly\ntype information maybe unsurprisingly also<00:31:25.120> covers<00:31:25.600> uh<00:31:25.760> userdefined<00:31:26.320> types<00:31:26.640> like\nalso covers uh userdefined types like\nalso covers uh userdefined types like structures\nstructures\nstructures if<00:31:29.200> I've<00:31:29.360> got<00:31:29.520> two<00:31:29.679> structures<00:31:30.000> here<00:31:30.320> and\nif I've got two structures here and\nif I've got two structures here and we've<00:31:30.640> got<00:31:30.799> entity<00:31:31.440> ve<00:31:31.840> 3<00:31:32.559> um<00:31:32.799> entity's<00:31:33.279> got\nwe've got entity ve 3 um entity's got\nwe've got entity ve 3 um entity's got position<00:31:34.080> velocity<00:31:34.559> vec<00:31:34.799> 3<00:31:34.960> x<00:31:35.200> y<00:31:35.279> and<00:31:35.520> z<00:31:35.919> then\nposition velocity vec 3 x y and z then\nposition velocity vec 3 x y and z then there's<00:31:36.320> some<00:31:36.480> base<00:31:36.720> type<00:31:36.960> float<00:31:37.360> 32<00:31:38.720> um<00:31:39.440> you\nthere's some base type float 32 um you\nthere's some base type float 32 um you know\nknow\nknow not<00:31:41.440> that<00:31:41.679> surprising<00:31:42.080> hopefully<00:31:42.720> position\nnot that surprising hopefully position\nnot that surprising hopefully position points<00:31:43.440> of<00:31:43.519> velocity<00:31:44.399> points<00:31:44.640> of<00:31:44.799> ve<00:31:45.440> xyz\npoints of velocity points of ve xyz\npoints of velocity points of ve xyz point<00:31:46.159> to<00:31:46.320> float<00:31:46.640> 32.<00:31:47.120> That's<00:31:47.279> how<00:31:47.440> that'd<00:31:47.600> be\npoint to float 32. That's how that'd be\npoint to float 32. That's how that'd be laid<00:31:47.919> out.\nlaid out.\nlaid out. So<00:31:51.200> like<00:31:51.360> I<00:31:51.519> said,<00:31:51.840> debug<00:31:52.240> info<00:31:52.640> has<00:31:53.279> uh<00:31:53.440> data\nSo like I said, debug info has uh data\nSo like I said, debug info has uh data bounce<00:31:54.000> scopes<00:31:54.559> in<00:31:54.799> your<00:31:55.039> program.<00:31:56.320> So<00:31:56.559> let's\nbounce scopes in your program. So let's\nbounce scopes in your program. So let's say<00:31:56.799> I've<00:31:57.039> got<00:31:57.120> this<00:31:57.279> procedure<00:31:57.679> update.\nsay I've got this procedure update.\nsay I've got this procedure update. We've<00:31:58.720> got<00:31:59.039> uh<00:31:59.120> some<00:31:59.360> local<00:31:59.679> variable<00:32:00.159> entity\nWe've got uh some local variable entity\nWe've got uh some local variable entity pointer<00:32:01.360> entities.<00:32:02.399> Um<00:32:03.600> and<00:32:03.840> we've<00:32:04.159> got<00:32:04.240> two\npointer entities. Um and we've got two\npointer entities. Um and we've got two loops.<00:32:05.039> We've<00:32:05.279> got<00:32:05.440> some<00:32:06.000> idx<00:32:06.399> variable.\nloops. We've got some idx variable.\nloops. We've got some idx variable. That's<00:32:07.039> how<00:32:07.120> I<00:32:07.200> shorten<00:32:07.600> index.<00:32:08.480> I<00:32:08.640> don't<00:32:08.799> know\nThat's how I shorten index. I don't know\nThat's how I shorten index. I don't know how<00:32:09.039> many<00:32:09.200> people<00:32:09.440> do<00:32:09.600> that,<00:32:09.760> but<00:32:10.640> uh<00:32:10.799> so<00:32:11.039> index\nhow many people do that, but uh so index\nhow many people do that, but uh so index and<00:32:11.840> then<00:32:12.159> you<00:32:12.320> know<00:32:12.399> we've<00:32:12.640> got<00:32:12.960> maybe<00:32:13.200> we're\nand then you know we've got maybe we're\nand then you know we've got maybe we're looping<00:32:13.679> over<00:32:13.840> the<00:32:14.000> entities<00:32:14.399> or<00:32:14.559> or\nlooping over the entities or or\nlooping over the entities or or whatever.<00:32:15.840> So<00:32:16.000> if<00:32:16.159> we<00:32:16.320> have<00:32:16.399> this<00:32:16.799> then<00:32:17.200> in\nwhatever. So if we have this then in\nwhatever. So if we have this then in debug<00:32:17.760> info<00:32:18.240> you've<00:32:18.399> got<00:32:18.480> a<00:32:18.640> procedure<00:32:19.120> record\ndebug info you've got a procedure record\ndebug info you've got a procedure record for<00:32:20.080> for<00:32:20.320> the<00:32:20.480> update<00:32:21.519> procedure.<00:32:22.880> It<00:32:23.120> points\nfor for the update procedure. It points\nfor for the update procedure. It points at<00:32:23.519> a<00:32:23.760> at<00:32:23.919> a<00:32:24.080> scope<00:32:24.399> tree<00:32:25.440> um<00:32:25.760> underneath<00:32:26.320> which\nat a at a scope tree um underneath which\nat a at a scope tree um underneath which uh<00:32:27.200> you<00:32:27.440> also<00:32:27.600> have<00:32:27.760> local<00:32:28.000> variables.<00:32:28.320> So\nuh you also have local variables. So\nuh you also have local variables. So you've<00:32:28.640> got<00:32:28.720> at<00:32:28.880> the<00:32:28.960> root<00:32:29.200> scope<00:32:29.360> you've<00:32:29.519> got\nyou've got at the root scope you've got\nyou've got at the root scope you've got the<00:32:29.760> entities<00:32:30.159> variable<00:32:30.880> at<00:32:31.039> the<00:32:31.279> two\nthe entities variable at the two\nthe entities variable at the two subscopes<00:32:32.559> you've<00:32:32.799> got<00:32:33.039> two<00:32:33.279> different<00:32:33.600> index\nsubscopes you've got two different index\nsubscopes you've got two different index variables\nvariables\nvariables and<00:32:36.080> each<00:32:36.320> one<00:32:36.480> of<00:32:36.559> the<00:32:36.720> variables<00:32:37.600> contain<00:32:38.159> uh\nand each one of the variables contain uh\nand each one of the variables contain uh points<00:32:38.480> at<00:32:38.640> their<00:32:38.880> type<00:32:39.039> info.<00:32:40.159> So<00:32:41.039> you've<00:32:41.360> got\npoints at their type info. So you've got\npoints at their type info. So you've got index<00:32:43.679> maybe<00:32:44.000> points<00:32:44.240> to<00:32:44.320> in<00:32:44.640> 64\nindex maybe points to in 64\nindex maybe points to in 64 entities<00:32:47.440> points<00:32:47.760> to<00:32:48.000> a<00:32:48.159> pointer<00:32:48.480> which\nentities points to a pointer which\nentities points to a pointer which points<00:32:48.880> to<00:32:48.960> an<00:32:49.200> entity<00:32:49.519> type.<00:32:50.559> That's<00:32:50.799> how<00:32:50.960> the\npoints to an entity type. That's how the\npoints to an entity type. That's how the type<00:32:51.360> might<00:32:51.600> show<00:32:51.760> up.\nA<00:32:56.480> variable<00:32:56.799> like<00:32:57.200> index<00:32:58.000> not<00:32:58.240> only<00:32:58.559> refers<00:32:58.799> to\nA variable like index not only refers to\nA variable like index not only refers to an<00:32:59.120> in64<00:33:00.080> might<00:33:00.320> also<00:33:00.640> refer<00:33:01.039> to\nan in64 might also refer to\nan in64 might also refer to its<00:33:03.519> location<00:33:04.000> information.<00:33:05.039> And<00:33:05.200> this\nits location information. And this\nits location information. And this location<00:33:05.840> info<00:33:06.240> is<00:33:06.399> how<00:33:06.559> our<00:33:06.720> debugger's\nlocation info is how our debugger's\nlocation info is how our debugger's expression<00:33:07.600> compiler<00:33:08.399> can<00:33:08.640> actually\nexpression compiler can actually\nexpression compiler can actually understand<00:33:09.200> where<00:33:09.440> certain<00:33:09.679> variables<00:33:10.159> live.\nunderstand where certain variables live.\nunderstand where certain variables live. So<00:33:10.720> if<00:33:10.880> our<00:33:11.039> variable<00:33:11.440> index<00:33:12.000> within<00:33:12.399> some\nSo if our variable index within some\nSo if our variable index within some scope<00:33:12.880> is<00:33:13.120> at<00:33:13.279> like<00:33:13.440> the<00:33:13.600> value<00:33:13.679> of<00:33:13.840> the<00:33:14.000> stack\nscope is at like the value of the stack\nscope is at like the value of the stack pointer<00:33:15.120> minus<00:33:15.519> 64<00:33:15.919> bytes<00:33:16.960> um<00:33:17.200> then<00:33:17.440> the\npointer minus 64 bytes um then the\npointer minus 64 bytes um then the location<00:33:18.000> info<00:33:18.320> is<00:33:18.559> what's<00:33:18.799> going<00:33:18.880> to<00:33:19.039> tell<00:33:19.279> us\nlocation info is what's going to tell us\nlocation info is what's going to tell us that<00:33:19.679> it's<00:33:19.840> going<00:33:19.919> to<00:33:20.000> encode<00:33:20.320> that<00:33:20.559> somehow.\nthat it's going to encode that somehow.\nthat it's going to encode that somehow. It<00:33:22.720> might<00:33:22.880> also<00:33:23.120> tell<00:33:23.279> us<00:33:23.440> that<00:33:24.080> um<00:33:24.240> a<00:33:24.399> reg<00:33:24.799> a\nIt might also tell us that um a reg a\nIt might also tell us that um a reg a variable<00:33:25.279> lives<00:33:25.519> inside<00:33:25.760> of<00:33:25.840> a<00:33:26.000> register<00:33:26.880> or\nvariable lives inside of a register or\nvariable lives inside of a register or the<00:33:28.159> value<00:33:29.120> of<00:33:29.279> a<00:33:29.519> variable<00:33:30.000> is<00:33:30.399> like<00:33:31.519> uh<00:33:31.760> you\nthe value of a variable is like uh you\nthe value of a variable is like uh you know<00:33:32.159> it<00:33:32.399> could<00:33:32.480> be<00:33:32.559> arbitrarily<00:33:33.120> complicated\nknow it could be arbitrarily complicated\nknow it could be arbitrarily complicated really<00:33:33.919> that<00:33:34.159> it<00:33:34.240> can<00:33:34.320> be<00:33:34.480> computed<00:33:34.880> somehow.\nreally that it can be computed somehow.\nreally that it can be computed somehow. Um<00:33:36.640> but<00:33:36.880> those<00:33:37.120> cases<00:33:37.440> tend<00:33:37.600> to<00:33:37.679> show<00:33:37.760> up<00:33:37.919> in\nUm but those cases tend to show up in\nUm but those cases tend to show up in optimized<00:33:38.480> builds,<00:33:38.720> right?<00:33:38.960> You're<00:33:39.120> not\noptimized builds, right? You're not\noptimized builds, right? You're not always<00:33:39.519> going<00:33:39.600> to<00:33:39.760> have<00:33:40.320> complicated<00:33:40.799> cases\nalways going to have complicated cases\nalways going to have complicated cases like<00:33:41.360> that.<00:33:42.480> Um<00:33:43.120> global<00:33:43.440> variables<00:33:43.760> and\nlike that. Um global variables and\nlike that. Um global variables and thread<00:33:44.159> locals<00:33:44.559> tend<00:33:44.799> to<00:33:44.960> have<00:33:45.760> much<00:33:46.080> simpler\nthread locals tend to have much simpler\nthread locals tend to have much simpler uh<00:33:47.039> location<00:33:47.360> info.<00:33:47.919> they<00:33:48.159> tend<00:33:48.320> to<00:33:48.480> be<00:33:48.559> like\nuh location info. they tend to be like\nuh location info. they tend to be like fixed<00:33:49.200> offset<00:33:49.679> like<00:33:49.919> address<00:33:50.240> offsets<00:33:51.120> into\nfixed offset like address offsets into\nfixed offset like address offsets into in<00:33:52.080> the<00:33:52.320> case<00:33:52.399> of<00:33:52.559> globals<00:33:53.039> like<00:33:53.120> a<00:33:53.519> like<00:33:53.760> a\nin the case of globals like a like a\nin the case of globals like a like a module<00:33:54.320> or<00:33:54.559> something.\nmodule or something.\nmodule or something. So<00:33:57.360> with<00:33:57.600> all<00:33:57.679> of<00:33:57.840> those<00:33:58.000> pieces<00:33:58.320> we<00:33:58.480> can<00:33:58.559> sort\nSo with all of those pieces we can sort\nSo with all of those pieces we can sort of<00:33:58.799> put<00:33:59.039> together<00:33:59.679> a<00:33:59.919> compiler<00:34:00.399> in<00:34:00.640> the\nof put together a compiler in the\nof put together a compiler in the debugger<00:34:01.760> which<00:34:02.080> evaluates<00:34:02.640> expressions.\ndebugger which evaluates expressions.\ndebugger which evaluates expressions. So\nSo\nSo now<00:34:06.480> that<00:34:06.640> we<00:34:06.720> know<00:34:06.880> how<00:34:06.960> to<00:34:07.120> compute<00:34:07.519> the\nnow that we know how to compute the\nnow that we know how to compute the value<00:34:08.399> of<00:34:08.639> an<00:34:08.879> expression,<00:34:09.280> I'll<00:34:09.520> unpack<00:34:09.839> how\nvalue of an expression, I'll unpack how\nvalue of an expression, I'll unpack how we<00:34:10.240> can<00:34:10.399> begin<00:34:10.960> to<00:34:11.440> uh<00:34:11.599> to<00:34:11.839> visualize<00:34:12.320> it.\nwe can begin to uh to visualize it.\nwe can begin to uh to visualize it. So<00:34:14.320> the<00:34:14.639> most<00:34:14.800> basic<00:34:15.119> form<00:34:15.359> of<00:34:15.520> visualization\nSo the most basic form of visualization\nSo the most basic form of visualization that<00:34:16.720> we<00:34:16.879> can<00:34:17.040> do<00:34:17.119> for<00:34:17.280> an<00:34:17.440> evaluation<00:34:18.320> is<00:34:18.720> turn\nthat we can do for an evaluation is turn\nthat we can do for an evaluation is turn its<00:34:19.280> value<00:34:19.520> into<00:34:19.760> a<00:34:19.919> string,<00:34:20.240> right?<00:34:20.480> Just\nits value into a string, right? Just\nits value into a string, right? Just turn<00:34:20.720> it<00:34:20.879> into<00:34:21.119> text.\nturn it into text.\nturn it into text. So<00:34:24.320> you<00:34:24.480> know,<00:34:24.639> for<00:34:24.720> example,<00:34:25.520> you've<00:34:25.839> got<00:34:26.879> uh\nSo you know, for example, you've got uh\nSo you know, for example, you've got uh some<00:34:27.280> entity<00:34:28.000> expression,<00:34:28.800> you<00:34:29.040> want<00:34:29.119> to<00:34:29.200> turn\nsome entity expression, you want to turn\nsome entity expression, you want to turn it<00:34:29.440> into<00:34:29.679> a<00:34:29.760> string<00:34:30.000> like<00:34:30.159> this.<00:34:30.399> You've<00:34:30.639> got,\nit into a string like this. You've got,\nit into a string like this. You've got, you<00:34:30.960> know,<00:34:31.359> left<00:34:31.599> curly<00:34:32.079> brace<00:34:32.399> and<00:34:32.560> then<00:34:32.639> you\nyou know, left curly brace and then you\nyou know, left curly brace and then you put<00:34:32.960> print<00:34:33.200> out<00:34:33.359> all<00:34:33.520> the<00:34:33.679> members<00:34:34.320> uh\nput print out all the members uh\nput print out all the members uh recursively<00:34:35.599> and<00:34:35.839> so<00:34:36.000> on.\nrecursively and so on.\nrecursively and so on. So<00:34:39.200> what<00:34:39.440> this<00:34:39.599> code<00:34:39.919> path<00:34:40.240> does<00:34:40.560> is<00:34:41.040> sort<00:34:41.280> of\nSo what this code path does is sort of\nSo what this code path does is sort of inherently<00:34:42.000> dependent<00:34:42.399> on<00:34:42.879> what<00:34:43.280> on<00:34:43.679> the<00:34:43.919> type\ninherently dependent on what on the type\ninherently dependent on what on the type information<00:34:45.040> of<00:34:45.280> some<00:34:45.520> evaluation.<00:34:46.159> So<00:34:46.320> you\ninformation of some evaluation. So you\ninformation of some evaluation. So you could<00:34:46.639> first<00:34:46.800> note<00:34:47.040> that<00:34:47.200> we've<00:34:47.440> got<00:34:47.520> a<00:34:47.760> set<00:34:47.919> of\ncould first note that we've got a set of\ncould first note that we've got a set of like<00:34:48.879> known<00:34:49.280> simple<00:34:49.679> cases,<00:34:50.079> right?<00:34:50.399> We<00:34:50.639> know\nlike known simple cases, right? We know\nlike known simple cases, right? We know how<00:34:50.960> to<00:34:51.040> print<00:34:51.200> an<00:34:51.359> integer.<00:34:51.760> We<00:34:51.839> know<00:34:51.919> how<00:34:52.079> to\nhow to print an integer. We know how to\nhow to print an integer. We know how to print<00:34:52.320> a<00:34:52.480> floating<00:34:52.800> point.<00:34:53.599> We<00:34:53.839> know<00:34:54.000> how<00:34:54.159> to\nprint a floating point. We know how to\nprint a floating point. We know how to print<00:34:55.359> uh<00:34:55.839> well,<00:34:56.159> okay,<00:34:56.560> strings<00:34:56.879> are\nprint uh well, okay, strings are\nprint uh well, okay, strings are complicated.<00:34:57.920> Um<00:34:58.800> but<00:34:59.040> we<00:34:59.200> know<00:34:59.280> how<00:34:59.440> to<00:34:59.520> print\ncomplicated. Um but we know how to print\ncomplicated. Um but we know how to print those<00:35:00.079> those<00:35:00.400> two,<00:35:00.640> right?<00:35:00.800> It's<00:35:00.960> like<00:35:01.040> an\nthose those two, right? It's like an\nthose those two, right? It's like an integer.<00:35:01.680> We<00:35:01.839> know<00:35:01.920> how<00:35:02.079> to<00:35:02.160> do<00:35:02.320> that.<00:35:02.640> you\ninteger. We know how to do that. you\ninteger. We know how to do that. you know,<00:35:02.960> maybe<00:35:03.119> we<00:35:03.280> can<00:35:03.359> change<00:35:03.520> the<00:35:03.680> radics.\nknow, maybe we can change the radics.\nknow, maybe we can change the radics. Um,\nUm,\nUm, with<00:35:06.640> floating<00:35:07.040> point\nwith floating point\nwith floating point also,<00:35:08.880> you<00:35:09.040> can<00:35:09.119> change<00:35:09.359> the<00:35:09.520> radex.<00:35:10.320> Uh,<00:35:10.560> but\nalso, you can change the radex. Uh, but\nalso, you can change the radex. Uh, but you<00:35:10.960> know,<00:35:11.040> we<00:35:11.200> know<00:35:11.280> how<00:35:11.440> to<00:35:11.520> print<00:35:11.680> these<00:35:11.920> two\nyou know, we know how to print these two\nyou know, we know how to print these two things.<00:35:13.040> With<00:35:13.599> uh<00:35:14.560> strings,<00:35:14.960> it's<00:35:15.280> relatively\nthings. With uh strings, it's relatively\nthings. With uh strings, it's relatively basic,<00:35:16.400> but<00:35:16.640> it's<00:35:16.960> it's<00:35:17.359> not<00:35:17.520> as<00:35:17.680> it's<00:35:18.000> not<00:35:18.079> as\nbasic, but it's it's not as it's not as\nbasic, but it's it's not as it's not as trivial<00:35:18.560> as<00:35:18.640> those<00:35:18.880> first<00:35:19.040> two<00:35:19.200> cases<00:35:19.520> because\ntrivial as those first two cases because\ntrivial as those first two cases because strings<00:35:21.040> um<00:35:21.680> they're<00:35:21.920> not<00:35:22.160> normally<00:35:22.480> encoded\nstrings um they're not normally encoded\nstrings um they're not normally encoded as<00:35:23.760> uh<00:35:24.160> or<00:35:24.400> they're<00:35:24.640> normally<00:35:24.880> encoded<00:35:25.200> as<00:35:25.440> a\nas uh or they're normally encoded as a\nas uh or they're normally encoded as a like<00:35:25.760> a<00:35:26.000> pointer<00:35:26.560> or<00:35:26.800> an<00:35:27.040> array<00:35:27.280> of<00:35:27.440> characters\nlike a pointer or an array of characters\nlike a pointer or an array of characters in<00:35:28.079> in<00:35:28.320> the<00:35:28.400> case<00:35:28.560> of<00:35:28.640> like<00:35:28.800> C<00:35:29.040> types.\nin in the case of like C types.\nin in the case of like C types. Obviously<00:35:29.680> there's<00:35:29.839> formal<00:35:30.240> types<00:35:30.480> in<00:35:30.640> the\nObviously there's formal types in the\nObviously there's formal types in the languages<00:35:31.280> but<00:35:31.520> in<00:35:31.680> terms<00:35:31.839> of<00:35:31.920> debug<00:35:32.320> info\nlanguages but in terms of debug info\nlanguages but in terms of debug info there's<00:35:33.280> no<00:35:33.520> string<00:35:34.000> like<00:35:34.160> there's<00:35:34.320> no<00:35:34.480> formal\nthere's no string like there's no formal\nthere's no string like there's no formal string<00:35:35.040> type<00:35:35.200> in<00:35:35.359> the<00:35:35.440> debug<00:35:35.839> info<00:35:36.160> obviously\nstring type in the debug info obviously\nstring type in the debug info obviously because<00:35:36.800> debug<00:35:37.119> info<00:35:37.440> evolves<00:35:37.839> around<00:35:38.320> sort\nbecause debug info evolves around sort\nbecause debug info evolves around sort of<00:35:38.560> the<00:35:38.720> C<00:35:38.960> tool<00:35:39.200> chain<00:35:39.839> there's<00:35:40.160> the<00:35:40.400> standard\nof the C tool chain there's the standard\nof the C tool chain there's the standard of<00:35:41.280> string<00:35:41.520> types<00:35:41.760> in<00:35:42.000> other<00:35:42.160> languages<00:35:43.119> not\nof string types in other languages not\nof string types in other languages not buried<00:35:43.920> that<00:35:44.079> deep<00:35:44.240> in<00:35:44.400> the<00:35:44.560> ecosystem.\nburied that deep in the ecosystem.\nburied that deep in the ecosystem. Um,<00:35:47.440> so<00:35:47.599> if<00:35:47.760> it's<00:35:47.920> a<00:35:48.000> pointer<00:35:48.320> to<00:35:48.480> a<00:35:48.640> character\nUm, so if it's a pointer to a character\nUm, so if it's a pointer to a character type,<00:35:49.359> it's<00:35:49.599> a<00:35:49.760> pretty<00:35:50.000> safe<00:35:50.240> bet<00:35:50.480> that<00:35:50.720> it's<00:35:50.880> a\ntype, it's a pretty safe bet that it's a\ntype, it's a pretty safe bet that it's a string.<00:35:51.599> But<00:35:51.760> if<00:35:51.839> it's<00:35:52.000> a<00:35:52.079> pointer<00:35:52.400> to<00:35:52.480> a<00:35:52.640> U8,\nstring. But if it's a pointer to a U8,\nstring. But if it's a pointer to a U8, it's<00:35:53.839> like<00:35:54.800> maybe<00:35:55.119> a<00:35:55.280> string.<00:35:55.680> Like<00:35:55.920> who<00:35:56.160> knows\nit's like maybe a string. Like who knows\nit's like maybe a string. Like who knows for<00:35:56.640> sure,<00:35:56.960> probably,<00:35:57.920> maybe<00:35:58.320> not,<00:35:58.800> you<00:35:58.960> know,\nfor sure, probably, maybe not, you know,\nfor sure, probably, maybe not, you know, not<00:35:59.520> really<00:35:59.760> clear.<00:36:00.240> But<00:36:00.320> you<00:36:00.560> can<00:36:00.640> try<00:36:00.800> it<00:36:00.960> and\nnot really clear. But you can try it and\nnot really clear. But you can try it and then<00:36:01.280> if<00:36:01.440> it<00:36:01.599> doesn't<00:36:02.079> produce<00:36:02.400> any,<00:36:02.800> you\nthen if it doesn't produce any, you\nthen if it doesn't produce any, you know,<00:36:03.119> seemingly<00:36:03.520> readable<00:36:03.920> text,<00:36:04.880> you<00:36:05.040> know,\nknow, seemingly readable text, you know,\nknow, seemingly readable text, you know, maybe<00:36:05.680> don't<00:36:05.839> use<00:36:06.079> it.<00:36:07.040> Um,<00:36:07.760> the<00:36:08.000> other<00:36:08.160> caveat\nmaybe don't use it. Um, the other caveat\nmaybe don't use it. Um, the other caveat is<00:36:08.640> that<00:36:08.800> you<00:36:08.960> don't<00:36:09.119> actually<00:36:09.280> know<00:36:09.440> how<00:36:09.680> many\nis that you don't actually know how many\nis that you don't actually know how many characters<00:36:10.720> you're<00:36:10.960> working<00:36:11.119> with,<00:36:11.440> right?\ncharacters you're working with, right?\ncharacters you're working with, right? you<00:36:11.760> don't<00:36:12.079> because<00:36:12.320> it's<00:36:12.560> just<00:36:12.720> pointers<00:36:13.280> in\nyou don't because it's just pointers in\nyou don't because it's just pointers in the<00:36:13.599> type<00:36:13.839> info.<00:36:14.560> You<00:36:14.800> don't<00:36:14.960> know<00:36:15.200> that<00:36:15.440> like\nthe type info. You don't know that like\nthe type info. You don't know that like that's,<00:36:16.160> you<00:36:16.240> know,<00:36:16.400> that's<00:36:16.560> what<00:36:16.720> everyone\nthat's, you know, that's what everyone\nthat's, you know, that's what everyone talks<00:36:17.119> about<00:36:17.200> with<00:36:17.359> pointers.<00:36:17.760> You<00:36:17.920> don't\ntalks about with pointers. You don't\ntalks about with pointers. You don't know<00:36:19.119> how<00:36:19.359> many<00:36:19.520> things<00:36:19.760> they're<00:36:20.000> pointing\nknow how many things they're pointing\nknow how many things they're pointing to,<00:36:20.960> you<00:36:21.119> know.<00:36:21.280> So,<00:36:22.000> um,<00:36:22.400> you<00:36:22.560> know,\nto, you know. So, um, you know,\nto, you know. So, um, you know, you<00:36:24.400> kind<00:36:24.560> of<00:36:24.640> have<00:36:24.800> to<00:36:24.880> guess.<00:36:25.119> You<00:36:25.280> could\nyou kind of have to guess. You could\nyou kind of have to guess. You could say,<00:36:25.599> I've<00:36:25.839> got<00:36:25.920> some<00:36:26.160> fixed<00:36:26.400> upper<00:36:26.720> limit.\nsay, I've got some fixed upper limit.\nsay, I've got some fixed upper limit. I'll<00:36:27.280> look<00:36:27.359> for<00:36:27.520> a<00:36:27.680> null<00:36:27.920> terminator.<00:36:28.800> Um,<00:36:29.280> you\nI'll look for a null terminator. Um, you\nI'll look for a null terminator. Um, you know,<00:36:29.520> the<00:36:29.760> UI<00:36:30.000> can<00:36:30.160> only<00:36:30.320> render<00:36:30.640> so<00:36:30.800> much\nknow, the UI can only render so much\nknow, the UI can only render so much text<00:36:31.280> anyways.<00:36:31.920> So,<00:36:32.079> you<00:36:32.240> can<00:36:32.560> have<00:36:32.720> a<00:36:32.880> pretty\ntext anyways. So, you can have a pretty\ntext anyways. So, you can have a pretty small<00:36:33.280> limit,<00:36:33.920> but,<00:36:34.240> you<00:36:34.400> know,<00:36:35.119> not<00:36:35.359> too\nsmall limit, but, you know, not too\nsmall limit, but, you know, not too difficult.<00:36:36.880> With<00:36:37.119> enum<00:36:37.520> values,<00:36:38.640> you<00:36:38.800> can\ndifficult. With enum values, you can\ndifficult. With enum values, you can just<00:36:39.040> look<00:36:39.200> at<00:36:39.280> the<00:36:39.359> enum<00:36:39.760> type<00:36:39.920> info<00:36:40.160> since\njust look at the enum type info since\njust look at the enum type info since that's<00:36:40.560> in<00:36:40.880> in<00:36:41.119> the<00:36:41.280> debug<00:36:41.680> info.<00:36:42.320> You<00:36:42.480> can\nthat's in in the debug info. You can\nthat's in in the debug info. You can like<00:36:43.119> try<00:36:43.359> to<00:36:43.520> find<00:36:43.839> some<00:36:44.079> member<00:36:44.400> inside<00:36:44.640> of\nlike try to find some member inside of\nlike try to find some member inside of the<00:36:44.880> enum<00:36:45.280> type<00:36:45.440> info.<00:36:45.839> See<00:36:46.000> if<00:36:46.320> an<00:36:46.560> integer\nthe enum type info. See if an integer\nthe enum type info. See if an integer evaluation<00:36:47.839> or<00:36:48.079> an<00:36:48.640> uh<00:36:48.880> you<00:36:49.040> know,<00:36:49.200> you'd<00:36:49.520> have\nevaluation or an uh you know, you'd have\nevaluation or an uh you know, you'd have it<00:36:49.839> as<00:36:50.000> an<00:36:50.079> enum<00:36:50.560> evaluation.<00:36:51.520> Uh<00:36:51.760> you<00:36:52.000> could\nit as an enum evaluation. Uh you could\nit as an enum evaluation. Uh you could say<00:36:52.320> like<00:36:52.480> I've<00:36:52.720> got<00:36:52.880> this<00:36:53.040> integer<00:36:53.440> value.\nsay like I've got this integer value.\nsay like I've got this integer value. Let's<00:36:54.000> try<00:36:54.079> to<00:36:54.240> look<00:36:54.320> up<00:36:54.480> at<00:36:54.640> the<00:36:54.800> enum<00:36:55.200> type\nLet's try to look up at the enum type\nLet's try to look up at the enum type information.<00:36:56.000> Find<00:36:56.240> out<00:36:57.200> if<00:36:57.440> there's<00:36:57.599> a\ninformation. Find out if there's a\ninformation. Find out if there's a member<00:36:57.920> inside<00:36:58.160> of<00:36:58.240> the<00:36:58.400> enum<00:36:59.040> that<00:37:00.160> um<00:37:01.359> that\nmember inside of the enum that um that\nmember inside of the enum that um that there's<00:37:02.560> a<00:37:02.720> member<00:37:02.880> that<00:37:03.119> has<00:37:03.280> a<00:37:03.440> value<00:37:03.599> that\nthere's a member that has a value that\nthere's a member that has a value that matches<00:37:04.160> whatever<00:37:04.480> value<00:37:04.720> I<00:37:04.880> evaluated.<00:37:05.599> then\nmatches whatever value I evaluated. then\nmatches whatever value I evaluated. then I<00:37:05.920> use<00:37:06.079> the<00:37:06.240> name<00:37:07.040> if<00:37:07.280> if<00:37:07.520> not<00:37:07.680> then<00:37:07.839> maybe<00:37:08.000> I\nI use the name if if not then maybe I\nI use the name if if not then maybe I just<00:37:08.320> fall<00:37:08.480> back<00:37:08.560> to<00:37:08.640> the<00:37:08.800> integer<00:37:09.119> case<00:37:09.599> or\njust fall back to the integer case or\njust fall back to the integer case or whatever.\nwhatever.\nwhatever. The<00:37:12.400> only<00:37:12.560> missing<00:37:12.880> piece<00:37:13.040> here<00:37:13.680> are<00:37:14.000> compound\nThe only missing piece here are compound\nThe only missing piece here are compound types<00:37:14.800> like<00:37:14.960> strrus,<00:37:15.440> unions<00:37:15.760> and<00:37:15.920> arrays.\ntypes like strrus, unions and arrays.\ntypes like strrus, unions and arrays. Uh<00:37:17.839> so<00:37:18.000> with<00:37:18.160> a<00:37:18.320> strruct\nUh so with a strruct\nUh so with a strruct might<00:37:20.320> want<00:37:20.480> something<00:37:20.720> like<00:37:20.800> that<00:37:21.040> like<00:37:21.200> I\nmight want something like that like I\nmight want something like that like I mentioned<00:37:21.599> earlier<00:37:22.000> braces<00:37:22.720> iterate<00:37:23.119> the\nmentioned earlier braces iterate the\nmentioned earlier braces iterate the members.\nmembers.\nmembers. So<00:37:27.040> this<00:37:27.280> can<00:37:27.440> be<00:37:27.599> done<00:37:27.760> by<00:37:28.000> just<00:37:28.400> you<00:37:28.640> walk\nSo this can be done by just you walk\nSo this can be done by just you walk basically<00:37:29.359> the<00:37:29.520> strct<00:37:29.839> members<00:37:30.079> recursively.\nbasically the strct members recursively.\nbasically the strct members recursively. So<00:37:31.760> you<00:37:31.920> walk<00:37:32.079> to<00:37:32.240> each<00:37:32.880> uh<00:37:33.200> child<00:37:33.839> and<00:37:34.000> then\nSo you walk to each uh child and then\nSo you walk to each uh child and then when<00:37:34.320> you<00:37:34.480> come<00:37:34.640> across<00:37:34.960> another<00:37:35.520> compound\nwhen you come across another compound\nwhen you come across another compound strct,<00:37:36.160> you've<00:37:36.320> got<00:37:36.400> a<00:37:36.480> strct<00:37:36.720> inside<00:37:36.960> of<00:37:37.040> a\nstrct, you've got a strct inside of a\nstrct, you've got a strct inside of a strruct.<00:37:37.680> You've<00:37:37.839> got<00:37:37.920> to<00:37:38.079> say,<00:37:38.240> okay,<00:37:38.480> I'm\nstrruct. You've got to say, okay, I'm\nstrruct. You've got to say, okay, I'm going<00:37:38.720> to<00:37:38.800> recursively<00:37:39.280> descend<00:37:39.599> into<00:37:39.760> that.\ngoing to recursively descend into that.\ngoing to recursively descend into that. So<00:37:40.079> I<00:37:40.240> go,<00:37:40.720> you<00:37:40.960> know,<00:37:41.359> um<00:37:41.599> doesn't<00:37:41.839> have<00:37:41.920> to<00:37:42.000> be\nSo I go, you know, um doesn't have to be\nSo I go, you know, um doesn't have to be literally<00:37:42.480> recursive,<00:37:43.280> but<00:37:43.680> you<00:37:43.839> know,<00:37:44.480> uh\nliterally recursive, but you know, uh\nliterally recursive, but you know, uh the<00:37:44.800> the<00:37:45.119> sort<00:37:45.280> of<00:37:45.359> algorithm<00:37:45.760> is<00:37:45.920> sort<00:37:46.079> of\nthe the sort of algorithm is sort of\nthe the sort of algorithm is sort of recursive.<00:37:46.640> You<00:37:46.720> need<00:37:46.800> like<00:37:46.960> a<00:37:47.119> stack.<00:37:47.839> So<00:37:49.280> um\nrecursive. You need like a stack. So um\nrecursive. You need like a stack. So um so<00:37:50.480> yeah,<00:37:50.640> you<00:37:50.800> walk<00:37:51.040> the<00:37:51.200> children,<00:37:51.599> you<00:37:51.760> do\nso yeah, you walk the children, you do\nso yeah, you walk the children, you do that,<00:37:52.640> you<00:37:52.880> can<00:37:52.960> get<00:37:53.040> a<00:37:53.200> string<00:37:53.440> like<00:37:53.599> that.\nthat, you can get a string like that.\nthat, you can get a string like that. Um<00:37:57.119> with<00:37:57.359> arrays,<00:37:57.920> very<00:37:58.160> similar<00:37:58.480> problem.\nUm with arrays, very similar problem.\nUm with arrays, very similar problem. you've<00:37:59.359> got<00:37:59.520> some<00:37:59.760> you<00:37:59.920> know<00:38:00.000> you<00:38:00.160> have<00:38:00.240> some\nyou've got some you know you have some\nyou've got some you know you have some notion<00:38:00.640> of<00:38:00.800> how<00:38:00.960> many<00:38:01.119> elements<00:38:01.440> are<00:38:01.599> in<00:38:01.680> the\nnotion of how many elements are in the\nnotion of how many elements are in the array.<00:38:02.000> So<00:38:02.079> you<00:38:02.320> can<00:38:02.400> say<00:38:02.800> well<00:38:02.960> I<00:38:03.119> found<00:38:03.280> the\narray. So you can say well I found the\narray. So you can say well I found the base<00:38:03.760> address<00:38:04.000> of<00:38:04.079> the<00:38:04.240> array<00:38:04.480> but<00:38:04.640> to\nbase address of the array but to\nbase address of the array but to actually<00:38:05.040> visualize<00:38:05.440> this<00:38:05.599> as<00:38:05.760> a<00:38:05.920> string<00:38:06.160> I\nactually visualize this as a string I\nactually visualize this as a string I want<00:38:06.400> to<00:38:06.560> go<00:38:06.960> okay<00:38:07.280> go<00:38:07.440> to<00:38:07.599> the<00:38:07.760> first<00:38:08.000> element\nwant to go okay go to the first element\nwant to go okay go to the first element turn<00:38:08.960> it<00:38:09.119> into<00:38:09.280> a<00:38:09.520> string<00:38:10.160> second<00:38:10.480> element\nturn it into a string second element\nturn it into a string second element turn<00:38:11.040> it<00:38:11.200> into<00:38:11.359> a<00:38:11.520> string<00:38:12.079> commas<00:38:12.480> delimiting\nturn it into a string commas delimiting\nturn it into a string commas delimiting them<00:38:14.000> pretty<00:38:14.320> basic<00:38:14.640> problem\nthem pretty basic problem\nthem pretty basic problem um<00:38:18.880> this<00:38:19.040> is<00:38:19.200> also<00:38:19.440> recursive<00:38:20.800> uh<00:38:21.280> so\nso<00:38:27.200> what<00:38:27.440> I<00:38:27.599> want<00:38:27.680> to<00:38:27.760> note<00:38:28.079> here<00:38:28.400> is<00:38:28.640> that<00:38:28.880> both\nso what I want to note here is that both\nso what I want to note here is that both of<00:38:29.280> these<00:38:30.079> uh<00:38:30.320> exhibit<00:38:30.720> sort<00:38:30.960> of\nof these uh exhibit sort of\nof these uh exhibit sort of a<00:38:32.160> single<00:38:32.400> pattern<00:38:33.040> that<00:38:33.280> we<00:38:33.440> can<00:38:33.520> think<00:38:33.680> of\na single pattern that we can think of\na single pattern that we can think of which<00:38:34.000> is<00:38:34.160> that<00:38:34.400> if<00:38:34.560> we've<00:38:34.800> got<00:38:34.960> some\nwhich is that if we've got some\nwhich is that if we've got some evaluation<00:38:36.079> you've<00:38:36.400> computed<00:38:36.800> some\nevaluation you've computed some\nevaluation you've computed some evaluation<00:38:38.320> certain<00:38:38.640> types<00:38:39.119> can<00:38:39.280> produce<00:38:39.599> a\nevaluation certain types can produce a\nevaluation certain types can produce a set<00:38:40.160> of<00:38:40.400> child<00:38:40.720> evaluations<00:38:41.520> right<00:38:41.680> so<00:38:41.839> in<00:38:42.000> the\nset of child evaluations right so in the\nset of child evaluations right so in the case<00:38:42.160> of<00:38:42.320> the<00:38:42.480> strruct<00:38:43.599> you<00:38:43.760> produce<00:38:44.079> all<00:38:44.160> the\ncase of the strruct you produce all the\ncase of the strruct you produce all the members<00:38:45.119> and<00:38:45.359> if<00:38:45.520> in<00:38:45.760> the<00:38:45.839> case<00:38:45.920> of<00:38:46.079> arrays<00:38:46.640> you\nmembers and if in the case of arrays you\nmembers and if in the case of arrays you produce<00:38:47.119> all<00:38:47.359> of<00:38:47.440> the<00:38:47.920> array<00:38:48.240> elements\num\num\num another<00:38:53.920> common<00:38:54.240> case<00:38:54.560> just<00:38:54.880> before<00:38:55.119> I<00:38:55.280> move\nanother common case just before I move\nanother common case just before I move on<00:38:56.000> pointers<00:38:56.880> uh<00:38:57.599> don't<00:38:57.839> always<00:38:58.079> point<00:38:58.240> to\non pointers uh don't always point to\non pointers uh don't always point to strings<00:38:58.960> obviously<00:38:59.280> like<00:38:59.520> sometimes<00:38:59.760> they\nstrings obviously like sometimes they\nstrings obviously like sometimes they point<00:39:00.160> to<00:39:00.320> a<00:39:00.480> strruct\npoint to a strruct\npoint to a strruct Um<00:39:03.040> so<00:39:03.760> uh<00:39:04.240> in<00:39:04.480> those<00:39:04.720> cases<00:39:05.119> you<00:39:05.280> don't<00:39:05.440> just\nUm so uh in those cases you don't just\nUm so uh in those cases you don't just want<00:39:05.760> to<00:39:05.920> see<00:39:06.079> like<00:39:06.400> oh<00:39:06.640> my<00:39:06.880> pointer<00:39:07.280> value<00:39:07.599> is\nwant to see like oh my pointer value is\nwant to see like oh my pointer value is like<00:39:08.720> that<00:39:09.119> it's<00:39:09.280> like<00:39:09.440> you<00:39:09.680> want<00:39:09.760> to<00:39:09.839> see<00:39:09.920> what\nlike that it's like you want to see what\nlike that it's like you want to see what it's<00:39:10.320> pointing<00:39:10.560> to<00:39:10.880> often<00:39:11.599> um<00:39:11.680> other<00:39:11.920> than\nit's pointing to often um other than\nit's pointing to often um other than strruct<00:39:12.480> memory.<00:39:12.720> So<00:39:12.880> in<00:39:13.040> that<00:39:13.200> case<00:39:13.920> uh\nstrruct memory. So in that case uh\nstrruct memory. So in that case uh that's<00:39:14.240> also<00:39:14.480> another<00:39:14.800> case<00:39:15.040> of<00:39:15.280> expansion\nthat's also another case of expansion\nthat's also another case of expansion uh<00:39:17.440> you<00:39:17.599> just<00:39:17.760> dreference<00:39:18.320> the<00:39:18.480> pointer<00:39:18.880> you\nuh you just dreference the pointer you\nuh you just dreference the pointer you that's<00:39:19.359> your<00:39:19.680> child<00:39:20.000> evaluation<00:39:20.560> basically\nthat's your child evaluation basically\nthat's your child evaluation basically and<00:39:21.599> then<00:39:21.760> you<00:39:22.000> actually<00:39:22.240> do<00:39:22.320> the<00:39:22.480> recur\nand then you actually do the recur\nand then you actually do the recur recursive<00:39:23.359> path.<00:39:23.680> So<00:39:23.839> if<00:39:24.000> you're<00:39:24.079> pointing<00:39:24.320> at\nrecursive path. So if you're pointing at\nrecursive path. So if you're pointing at an<00:39:24.640> integer<00:39:24.960> you<00:39:25.119> print<00:39:25.200> the<00:39:25.359> integer.<00:39:25.599> If\nan integer you print the integer. If\nan integer you print the integer. If you're<00:39:25.760> pointing<00:39:26.000> out<00:39:26.079> the<00:39:26.160> array<00:39:26.400> you<00:39:26.480> print\nyou're pointing out the array you print\nyou're pointing out the array you print the<00:39:26.800> array.<00:39:27.119> so<00:39:27.280> on<00:39:27.440> and<00:39:27.599> so<00:39:27.680> forth.<00:39:27.920> It's<00:39:28.000> just\nthe array. so on and so forth. It's just\nthe array. so on and so forth. It's just one<00:39:28.320> layer<00:39:28.400> of<00:39:28.480> interaction<00:39:28.960> removed,<00:39:29.440> right?\none layer of interaction removed, right?\none layer of interaction removed, right? So<00:39:30.800> that<00:39:30.960> gives<00:39:31.119> us<00:39:31.280> all<00:39:31.359> the<00:39:31.520> building<00:39:31.760> blocks\nSo that gives us all the building blocks\nSo that gives us all the building blocks we<00:39:32.240> need<00:39:32.960> actually<00:39:33.440> to<00:39:33.680> build<00:39:33.839> a<00:39:34.000> very<00:39:34.160> simple\nwe need actually to build a very simple\nwe need actually to build a very simple watch<00:39:34.720> window.\nwatch window.\nwatch window. Uh<00:39:36.720> you<00:39:36.880> input<00:39:37.200> expressions<00:39:37.599> and<00:39:37.760> then<00:39:37.920> you\nUh you input expressions and then you\nUh you input expressions and then you just<00:39:38.480> stringify<00:39:39.040> them.<00:39:39.359> You<00:39:39.520> know,<00:39:39.599> they've\njust stringify them. You know, they've\njust stringify them. You know, they've got<00:39:40.000> type<00:39:40.240> info.<00:39:40.640> You<00:39:40.800> could<00:39:40.880> write<00:39:41.040> a<00:39:41.200> very\ngot type info. You could write a very\ngot type info. You could write a very simple<00:39:42.160> uh<00:39:42.400> stringification<00:39:43.440> path,<00:39:43.760> if<00:39:44.000> you\nsimple uh stringification path, if you\nsimple uh stringification path, if you will,<00:39:44.720> uh<00:39:44.880> for<00:39:45.119> the<00:39:45.359> type.<00:39:46.480> There<00:39:46.640> you<00:39:46.800> go.\nwill, uh for the type. There you go.\nwill, uh for the type. There you go. Um<00:39:49.599> that<00:39:49.839> gives<00:39:50.000> you<00:39:50.079> a<00:39:50.160> watch<00:39:50.400> window.<00:39:50.960> But<00:39:51.119> a\nUm that gives you a watch window. But a\nUm that gives you a watch window. But a very<00:39:51.520> useful<00:39:51.839> property<00:39:52.079> of<00:39:52.240> a<00:39:52.400> watch<00:39:52.640> window\nvery useful property of a watch window\nvery useful property of a watch window is<00:39:53.359> not<00:39:53.680> only<00:39:53.839> that<00:39:54.079> you<00:39:54.240> can<00:39:54.640> enter<00:39:54.880> an\nis not only that you can enter an\nis not only that you can enter an expression,<00:39:55.920> but<00:39:56.079> that<00:39:56.320> you<00:39:56.480> can<00:39:56.640> also<00:39:57.440> expand\nexpression, but that you can also expand\nexpression, but that you can also expand them.\nthem.\nthem. So<00:40:00.320> this<00:40:00.560> is<00:40:00.720> really<00:40:01.119> useful<00:40:01.520> because<00:40:01.920> you\nSo this is really useful because you\nSo this is really useful because you know<00:40:02.160> more<00:40:02.320> often<00:40:02.560> than<00:40:02.720> not<00:40:03.040> like<00:40:03.359> that\nknow more often than not like that\nknow more often than not like that single<00:40:04.000> line<00:40:04.240> visualization<00:40:04.800> path.<00:40:05.200> It's\nsingle line visualization path. It's\nsingle line visualization path. It's like<00:40:05.680> you've<00:40:06.000> got<00:40:06.640> 256<00:40:07.440> elements<00:40:07.680> in<00:40:07.839> an<00:40:08.000> array\nlike you've got 256 elements in an array\nlike you've got 256 elements in an array or<00:40:08.480> or<00:40:08.640> whatever<00:40:09.440> and<00:40:09.760> you<00:40:09.920> only<00:40:10.160> see<00:40:10.240> the\nor or whatever and you only see the\nor or whatever and you only see the first<00:40:10.640> eight.<00:40:11.040> You<00:40:11.200> don't<00:40:11.280> want<00:40:11.359> to<00:40:11.520> be<00:40:11.680> like\nfirst eight. You don't want to be like\nfirst eight. You don't want to be like okay<00:40:12.320> now<00:40:12.480> evaluate<00:40:13.040> array<00:40:13.359> plus<00:40:13.760> 8<00:40:14.079> and<00:40:14.240> then\nokay now evaluate array plus 8 and then\nokay now evaluate array plus 8 and then array<00:40:14.720> plus<00:40:15.040> 16<00:40:15.280> and<00:40:15.440> array<00:40:15.760> plus<00:40:16.000> 32.<00:40:16.400> It's\narray plus 16 and array plus 32. It's\narray plus 16 and array plus 32. It's like<00:40:16.640> a<00:40:16.800> whole<00:40:16.880> nightmare,<00:40:17.359> right?<00:40:18.480> Um,<00:40:19.920> same\nlike a whole nightmare, right? Um, same\nlike a whole nightmare, right? Um, same thing<00:40:20.320> with<00:40:20.480> strrus<00:40:21.280> especially<00:40:22.079> you<00:40:22.320> know\nthing with strrus especially you know\nthing with strrus especially you know you<00:40:23.119> don't<00:40:23.200> want<00:40:23.359> to<00:40:23.440> force<00:40:23.760> the<00:40:23.920> user<00:40:24.240> to<00:40:24.400> like\nyou don't want to force the user to like\nyou don't want to force the user to like think<00:40:24.720> of<00:40:24.960> like<00:40:25.440> oh<00:40:25.760> like<00:40:25.920> what<00:40:26.160> was<00:40:26.240> the<00:40:26.400> fifth\nthink of like oh like what was the fifth\nthink of like oh like what was the fifth element<00:40:26.960> of<00:40:27.200> entity<00:40:27.680> like<00:40:27.839> let<00:40:28.000> me<00:40:28.079> put<00:40:28.160> that\nelement of entity like let me put that\nelement of entity like let me put that in<00:40:28.480> as<00:40:28.640> a<00:40:28.800> second<00:40:28.960> expression<00:40:29.520> that<00:40:29.680> just\nin as a second expression that just\nin as a second expression that just sucks.<00:40:30.160> So<00:40:30.320> expansion<00:40:30.960> very<00:40:31.280> easy<00:40:31.680> design\nsucks. So expansion very easy design\nsucks. So expansion very easy design extension<00:40:32.720> we<00:40:32.960> could<00:40:33.040> do<00:40:33.119> to<00:40:33.280> the<00:40:33.359> watch\nextension we could do to the watch\nextension we could do to the watch window<00:40:33.839> to<00:40:33.920> just<00:40:34.079> speed<00:40:34.320> those<00:40:34.480> things<00:40:34.640> up<00:40:34.800> a\nwindow to just speed those things up a\nwindow to just speed those things up a little<00:40:35.040> bit<00:40:35.520> in<00:40:35.760> those<00:40:35.920> cases<00:40:36.240> if<00:40:36.400> the<00:40:36.560> user<00:40:36.720> is\nlittle bit in those cases if the user is\nlittle bit in those cases if the user is looking<00:40:37.119> for<00:40:37.359> entity.position<00:40:38.320> they<00:40:38.480> don't\nlooking for entity.position they don't\nlooking for entity.position they don't even<00:40:38.720> have<00:40:38.800> to<00:40:38.960> type<00:40:39.200> entity.position<00:40:40.160> is\neven have to type entity.position is\neven have to type entity.position is just<00:40:40.560> there.<00:40:40.960> So<00:40:41.119> that's<00:40:41.280> even<00:40:41.520> faster,\njust there. So that's even faster,\njust there. So that's even faster, right,<00:40:42.160> than<00:40:42.320> having<00:40:42.560> to<00:40:42.720> do<00:40:42.880> like<00:40:44.000> the<00:40:44.320> print\nright, than having to do like the print\nright, than having to do like the print uh<00:40:45.040> sort<00:40:45.200> of<00:40:45.280> the<00:40:45.520> print<00:40:45.920> writing<00:40:46.320> even\nuh sort of the print writing even\nuh sort of the print writing even writing<00:40:46.880> the<00:40:47.119> expression<00:40:47.440> that<00:40:47.599> you<00:40:47.760> want<00:40:47.839> to\nwriting the expression that you want to\nwriting the expression that you want to print.<00:40:48.320> We<00:40:48.480> don't<00:40:48.640> even<00:40:48.800> have<00:40:48.960> to<00:40:49.119> do<00:40:49.200> that.\nprint. We don't even have to do that.\nprint. We don't even have to do that. Lucky<00:40:52.160> for<00:40:52.320> us,<00:40:52.960> we<00:40:53.200> already<00:40:53.359> know<00:40:53.520> how<00:40:53.680> to\nLucky for us, we already know how to\nLucky for us, we already know how to expand<00:40:54.079> an<00:40:54.320> evaluation.<00:40:55.680> That's<00:40:55.920> why<00:40:56.000> I<00:40:56.160> made\nexpand an evaluation. That's why I made\nexpand an evaluation. That's why I made that<00:40:56.480> note.<00:40:57.359> It's<00:40:57.680> you<00:40:57.920> take<00:40:58.000> an<00:40:58.160> evaluation\nthat note. It's you take an evaluation\nthat note. It's you take an evaluation and<00:40:58.800> you<00:40:58.960> produce<00:40:59.119> a<00:40:59.280> list<00:40:59.440> of<00:40:59.520> evaluations.\nand you produce a list of evaluations.\nand you produce a list of evaluations. You<00:41:00.319> need<00:41:00.480> it<00:41:00.800> for<00:41:01.680> the<00:41:02.240> uh<00:41:02.640> for<00:41:02.960> the<00:41:03.200> recursive\nYou need it for the uh for the recursive\nYou need it for the uh for the recursive children<00:41:04.319> walking<00:41:04.720> case<00:41:05.040> when<00:41:05.280> you<00:41:05.599> take\nchildren walking case when you take\nchildren walking case when you take structures<00:41:06.640> or<00:41:06.880> arrays<00:41:07.200> and<00:41:07.359> turn<00:41:07.520> them<00:41:07.760> into\nstructures or arrays and turn them into\nstructures or arrays and turn them into a<00:41:08.319> string,<00:41:08.720> right?\num<00:41:12.240> you<00:41:12.480> can<00:41:12.640> use<00:41:12.800> that<00:41:13.040> same<00:41:13.200> path<00:41:13.520> to<00:41:13.760> produce\num you can use that same path to produce\num you can use that same path to produce a<00:41:14.160> tree<00:41:14.319> of<00:41:14.400> evaluations.<00:41:15.440> So<00:41:16.000> you<00:41:16.160> know<00:41:16.240> if<00:41:16.400> I\na tree of evaluations. So you know if I\na tree of evaluations. So you know if I evaluate<00:41:16.880> the<00:41:17.040> root<00:41:17.280> level<00:41:17.520> entity<00:41:18.160> that\nevaluate the root level entity that\nevaluate the root level entity that produces<00:41:18.720> a<00:41:18.960> list<00:41:19.119> of<00:41:19.280> subealuations<00:41:20.000> which\nproduces a list of subealuations which\nproduces a list of subealuations which are<00:41:20.480> named<00:41:20.880> position<00:41:21.359> velocity<00:41:21.680> in<00:41:21.839> this<00:41:22.000> case\nare named position velocity in this case\nare named position velocity in this case um<00:41:23.280> and<00:41:23.440> I<00:41:23.599> can<00:41:23.760> build<00:41:23.920> the<00:41:24.079> tree<00:41:24.720> that<00:41:25.040> way<00:41:26.000> but\num and I can build the tree that way but\num and I can build the tree that way but there's<00:41:26.400> a<00:41:26.560> problem.\nthere's a problem.\nthere's a problem. Let's<00:41:28.480> say<00:41:28.560> we've<00:41:28.800> got<00:41:28.880> an<00:41:29.040> array<00:41:29.520> of<00:41:29.760> 1\nLet's say we've got an array of 1\nLet's say we've got an array of 1 billion<00:41:30.319> integers.\nI<00:41:35.040> evaluate<00:41:35.520> it,<00:41:35.760> turn<00:41:35.920> it<00:41:36.079> into<00:41:36.319> a<00:41:36.480> string,\nI evaluate it, turn it into a string,\nI evaluate it, turn it into a string, or<00:41:39.440> in<00:41:39.760> general,<00:41:40.240> if<00:41:40.480> I<00:41:40.640> expand<00:41:40.880> it,<00:41:41.040> like<00:41:41.200> I'm\nor in general, if I expand it, like I'm\nor in general, if I expand it, like I'm trying<00:41:41.520> to<00:41:42.319> open<00:41:42.640> it<00:41:42.800> in<00:41:43.280> watch<00:41:43.599> window.\ntrying to open it in watch window.\ntrying to open it in watch window. Either<00:41:44.480> case,<00:41:45.119> I<00:41:45.359> have<00:41:45.440> to<00:41:45.599> produce<00:41:45.839> a<00:41:46.000> list<00:41:46.079> of\nEither case, I have to produce a list of\nEither case, I have to produce a list of child<00:41:46.560> evaluations\nchild evaluations\nchild evaluations that<00:41:49.200> requires<00:41:49.520> 1<00:41:49.680> billion<00:41:50.000> expansions.\nthat requires 1 billion expansions.\nthat requires 1 billion expansions. Unsurprisingly,<00:41:52.319> now<00:41:52.560> you<00:41:52.800> may<00:41:52.960> think<00:41:53.040> that\nUnsurprisingly, now you may think that\nUnsurprisingly, now you may think that that's<00:41:53.440> like<00:41:53.680> very<00:41:53.920> contrived<00:41:54.640> or<00:41:54.800> or\nthat's like very contrived or or\nthat's like very contrived or or whatever,<00:41:55.599> but<00:41:55.839> remember<00:41:56.079> that<00:41:56.240> the<00:41:56.400> debugger\nwhatever, but remember that the debugger\nwhatever, but remember that the debugger needs<00:41:56.960> to<00:41:57.119> work<00:41:57.200> with<00:41:58.000> uh<00:41:58.240> needs<00:41:58.400> to<00:41:58.480> work\nneeds to work with uh needs to work\nneeds to work with uh needs to work gracefully<00:41:59.119> with<00:41:59.359> arbitrary<00:41:59.839> code.<00:42:00.319> Doesn't\ngracefully with arbitrary code. Doesn't\ngracefully with arbitrary code. Doesn't shouldn't<00:42:01.440> matter<00:42:01.680> what<00:42:01.839> the<00:42:02.000> user<00:42:02.240> actually\nshouldn't matter what the user actually\nshouldn't matter what the user actually puts.<00:42:02.880> If<00:42:03.040> it's<00:42:03.200> complete<00:42:03.440> bogus,<00:42:03.839> the\nputs. If it's complete bogus, the\nputs. If it's complete bogus, the debugger<00:42:04.400> should<00:42:04.640> at<00:42:04.640> least<00:42:05.200> handle<00:42:05.520> it\ndebugger should at least handle it\ndebugger should at least handle it gracefully.<00:42:06.720> Furthermore,<00:42:07.280> if<00:42:07.440> you<00:42:07.520> ever\ngracefully. Furthermore, if you ever\ngracefully. Furthermore, if you ever like<00:42:08.000> generate<00:42:08.480> an<00:42:08.720> array<00:42:09.040> type<00:42:09.440> and<00:42:09.599> you're\nlike generate an array type and you're\nlike generate an array type and you're saying<00:42:09.920> like,<00:42:10.160> oh,<00:42:10.319> the<00:42:10.480> size<00:42:10.640> of<00:42:10.800> this<00:42:10.960> array\nsaying like, oh, the size of this array\nsaying like, oh, the size of this array is<00:42:11.440> actually<00:42:11.680> sized<00:42:12.000> by<00:42:12.160> this<00:42:12.400> variable<00:42:12.720> over\nis actually sized by this variable over\nis actually sized by this variable over here<00:42:13.520> and<00:42:13.760> that<00:42:13.920> variable<00:42:14.160> is<00:42:14.319> not\nhere and that variable is not\nhere and that variable is not initialized<00:42:15.040> at<00:42:15.200> some<00:42:15.440> point<00:42:15.520> in<00:42:15.760> the\ninitialized at some point in the\ninitialized at some point in the program.<00:42:16.240> It'll<00:42:16.480> be<00:42:16.560> complete<00:42:16.880> bogus.<00:42:17.280> It'll\nprogram. It'll be complete bogus. It'll\nprogram. It'll be complete bogus. It'll it<00:42:17.760> could<00:42:17.839> be<00:42:18.000> something<00:42:18.160> like<00:42:18.319> 1<00:42:18.560> billion<00:42:19.280> and\nit could be something like 1 billion and\nit could be something like 1 billion and you<00:42:20.079> know<00:42:20.240> then<00:42:20.400> you<00:42:20.560> have<00:42:20.640> to<00:42:20.800> handle<00:42:20.960> it\nyou know then you have to handle it\nyou know then you have to handle it anyways,<00:42:21.680> right?\nanyways, right?\nanyways, right? This<00:42:23.359> problem<00:42:23.599> doesn't<00:42:23.839> stop<00:42:24.079> there.<00:42:25.040> Let's\nThis problem doesn't stop there. Let's\nThis problem doesn't stop there. Let's say<00:42:25.359> you've<00:42:25.520> got<00:42:25.599> a<00:42:25.760> structure<00:42:26.000> like<00:42:26.160> this,\nsay you've got a structure like this,\nsay you've got a structure like this, some<00:42:26.640> linked<00:42:26.960> list<00:42:27.200> node,<00:42:27.680> got<00:42:27.839> a<00:42:28.000> next\nsome linked list node, got a next\nsome linked list node, got a next pointer<00:42:28.560> in<00:42:28.720> x<00:42:28.880> and<00:42:29.040> y<00:42:29.599> in<00:42:29.920> 32.<00:42:31.359> Um\nuh<00:42:36.319> whoops.<00:42:37.680> So<00:42:38.079> let's<00:42:38.319> walk<00:42:38.480> through<00:42:38.640> the\nuh whoops. So let's walk through the\nuh whoops. So let's walk through the steps<00:42:38.960> to<00:42:39.280> actually<00:42:39.520> visualize<00:42:39.920> it.<00:42:40.079> We're\nsteps to actually visualize it. We're\nsteps to actually visualize it. We're evaluating<00:42:40.720> node.<00:42:41.040> We<00:42:41.119> want<00:42:41.200> to<00:42:41.280> turn<00:42:41.440> it<00:42:41.599> into\nevaluating node. We want to turn it into\nevaluating node. We want to turn it into a<00:42:41.920> string.<00:42:42.640> Whoops.<00:42:43.200> That<00:42:43.680> goes<00:42:43.920> through<00:42:44.079> all\na string. Whoops. That goes through all\na string. Whoops. That goes through all I<00:42:44.400> guess<00:42:44.480> I<00:42:44.640> could<00:42:44.720> just<00:42:44.880> do<00:42:44.960> that.<00:42:45.200> That's\nI guess I could just do that. That's\nI guess I could just do that. That's that's<00:42:45.680> fine.<00:42:46.079> Step<00:42:46.319> one,<00:42:46.560> push<00:42:46.720> a<00:42:46.880> left\nthat's fine. Step one, push a left\nthat's fine. Step one, push a left brace,<00:42:47.440> descend<00:42:47.839> to<00:42:47.920> next,<00:42:48.160> push<00:42:48.319> string<00:42:48.480> of\nbrace, descend to next, push string of\nbrace, descend to next, push string of x,<00:42:48.720> push<00:42:48.880> string<00:42:49.119> of<00:42:49.200> y,\nx, push string of y,\nx, push string of y, and<00:42:51.119> then<00:42:51.280> we<00:42:51.440> wrap<00:42:51.599> it<00:42:51.680> all<00:42:51.760> up<00:42:51.920> with<00:42:52.000> a\nand then we wrap it all up with a\nand then we wrap it all up with a closing<00:42:52.400> brace.<00:42:52.720> Right.<00:42:53.280> Problem<00:42:53.520> here<00:42:53.680> is\nclosing brace. Right. Problem here is\nclosing brace. Right. Problem here is that<00:42:54.000> that<00:42:54.319> is<00:42:54.560> recursive.<00:42:55.680> So<00:42:56.880> um<00:42:57.599> begins<00:42:58.000> the\nthat that is recursive. So um begins the\nthat that is recursive. So um begins the entire<00:42:58.640> process<00:42:58.960> again<00:42:59.200> and<00:42:59.440> then<00:42:59.599> it<00:42:59.760> just\nentire process again and then it just\nentire process again and then it just descends<00:43:00.240> and<00:43:00.400> descends<00:43:00.720> and<00:43:00.880> descends.\ndescends and descends and descends.\ndescends and descends and descends. Maybe<00:43:01.920> you're<00:43:02.160> like<00:43:02.720> I<00:43:02.960> know<00:43:03.040> the<00:43:03.280> solution\nMaybe you're like I know the solution\nMaybe you're like I know the solution stop<00:43:04.000> when<00:43:04.079> you<00:43:04.240> hit<00:43:04.319> a<00:43:04.400> null<00:43:04.720> pointer<00:43:05.760> can't\nstop when you hit a null pointer can't\nstop when you hit a null pointer can't do<00:43:06.240> that.<00:43:06.720> Remember<00:43:06.960> it's<00:43:07.200> any<00:43:07.440> arbitrary\ndo that. Remember it's any arbitrary\ndo that. Remember it's any arbitrary structure.<00:43:08.800> In<00:43:09.040> fact<00:43:10.160> uh<00:43:10.319> a<00:43:10.560> very<00:43:10.720> common<00:43:10.960> case\nstructure. In fact uh a very common case\nstructure. In fact uh a very common case is<00:43:11.359> like<00:43:11.520> sentinel<00:43:11.920> nodes<00:43:12.160> for<00:43:12.240> example<00:43:12.480> or\nis like sentinel nodes for example or\nis like sentinel nodes for example or like<00:43:12.880> nil<00:43:13.200> nodes<00:43:13.680> they<00:43:13.920> point<00:43:14.160> at<00:43:14.319> themselves.\nlike nil nodes they point at themselves.\nlike nil nodes they point at themselves. So<00:43:14.960> you'll<00:43:15.200> just<00:43:15.359> go<00:43:15.599> forever<00:43:15.920> and<00:43:16.160> you<00:43:16.400> have\nSo you'll just go forever and you have\nSo you'll just go forever and you have to<00:43:16.640> be<00:43:16.720> able<00:43:16.880> to<00:43:17.119> handle<00:43:17.440> this<00:43:17.680> case<00:43:17.920> right.\nto be able to handle this case right.\nto be able to handle this case right. Um<00:43:21.040> so\nUm so\nUm so in<00:43:22.800> either<00:43:23.119> case<00:43:23.760> the<00:43:24.000> billion<00:43:24.319> array<00:43:24.560> of\nin either case the billion array of\nin either case the billion array of integers<00:43:25.440> or<00:43:25.760> the<00:43:26.240> recursing<00:43:26.720> node<00:43:27.040> structure\nintegers or the recursing node structure\nintegers or the recursing node structure um<00:43:28.480> and<00:43:28.800> many<00:43:29.119> other<00:43:29.359> like<00:43:29.680> similar<00:43:30.160> sort<00:43:30.400> of\num and many other like similar sort of\num and many other like similar sort of kinds<00:43:30.960> of<00:43:31.119> problems.<00:43:31.760> The<00:43:32.000> fundamental\nkinds of problems. The fundamental\nkinds of problems. The fundamental problem<00:43:32.800> here<00:43:33.440> is<00:43:33.680> that<00:43:33.920> we<00:43:34.160> have<00:43:34.319> not\nproblem here is that we have not\nproblem here is that we have not properly<00:43:34.880> bounded<00:43:35.280> the<00:43:35.520> problem.<00:43:36.640> Uh<00:43:37.119> the<00:43:37.520> we\nproperly bounded the problem. Uh the we\nproperly bounded the problem. Uh the we haven't<00:43:37.920> we<00:43:38.079> haven't<00:43:38.240> properly<00:43:38.640> bounded<00:43:39.440> the\nhaven't we haven't properly bounded the\nhaven't we haven't properly bounded the set<00:43:40.560> of<00:43:40.720> information<00:43:41.040> that<00:43:41.200> the<00:43:41.359> debugger\nset of information that the debugger\nset of information that the debugger actually<00:43:41.920> has<00:43:42.160> to<00:43:42.240> work<00:43:42.400> with.<00:43:42.640> Right?<00:43:42.800> the\nactually has to work with. Right? the\nactually has to work with. Right? the debugger<00:43:43.359> can<00:43:43.520> just<00:43:43.680> like<00:43:44.640> we<00:43:45.200> so<00:43:45.440> far<00:43:45.599> we've\ndebugger can just like we so far we've\ndebugger can just like we so far we've only<00:43:46.000> sketched<00:43:46.319> out<00:43:46.480> if<00:43:46.720> like<00:43:47.119> this<00:43:47.280> is<00:43:47.359> a\nonly sketched out if like this is a\nonly sketched out if like this is a magical<00:43:48.000> function<00:43:48.480> you<00:43:48.640> can<00:43:48.800> do<00:43:48.880> this<00:43:49.040> and\nmagical function you can do this and\nmagical function you can do this and then<00:43:49.359> the<00:43:49.520> debugger<00:43:49.839> just<00:43:50.000> calls<00:43:50.160> them<00:43:50.400> gets<00:43:50.560> a\nthen the debugger just calls them gets a\nthen the debugger just calls them gets a list<00:43:50.800> of<00:43:50.880> evaluations<00:43:51.520> it's<00:43:51.680> like<00:43:52.160> okay<00:43:52.640> now\nlist of evaluations it's like okay now\nlist of evaluations it's like okay now you've<00:43:52.960> got<00:43:53.040> a<00:43:53.280> billion<00:43:53.680> things<00:43:53.920> to<00:43:54.240> go<00:43:54.400> and<00:43:54.640> do\nyou've got a billion things to go and do\nyou've got a billion things to go and do not<00:43:55.839> really<00:43:56.079> realistic<00:43:56.480> we<00:43:56.640> need<00:43:56.720> to<00:43:56.880> scope<00:43:57.119> it\nnot really realistic we need to scope it\nnot really realistic we need to scope it we<00:43:57.359> need<00:43:57.440> to<00:43:57.599> bound<00:43:57.839> it<00:43:58.240> again<00:43:58.560> the<00:43:58.800> debugger\nwe need to bound it again the debugger\nwe need to bound it again the debugger has<00:43:59.200> to<00:43:59.359> be<00:43:59.520> fast\nhas to be fast\nhas to be fast um\num\num so\nso\nso um\num\num note<00:44:07.920> that<00:44:08.160> a<00:44:08.319> debugger<00:44:08.720> UI<00:44:09.520> cannot<00:44:10.240> uh<00:44:11.040> you\nnote that a debugger UI cannot uh you\nnote that a debugger UI cannot uh you can't<00:44:11.359> visualize<00:44:11.760> arbitrarily<00:44:12.240> many<00:44:12.560> things\ncan't visualize arbitrarily many things\ncan't visualize arbitrarily many things anyways.<00:44:13.920> So<00:44:14.079> it<00:44:14.240> can't<00:44:14.560> visualize<00:44:14.960> a<00:44:15.200> billion\nanyways. So it can't visualize a billion\nanyways. So it can't visualize a billion integers.<00:44:16.240> It<00:44:16.400> can<00:44:16.560> only<00:44:16.800> visualize<00:44:17.359> like\nintegers. It can only visualize like\nintegers. It can only visualize like some<00:44:17.839> windowed<00:44:18.400> range<00:44:18.640> of<00:44:18.800> it.\nsome windowed range of it.\nsome windowed range of it. Um<00:44:21.920> there's<00:44:22.160> really<00:44:22.319> only<00:44:22.560> so<00:44:22.720> many<00:44:22.880> visual\nUm there's really only so many visual\nUm there's really only so many visual visualizations<00:44:24.160> you<00:44:24.319> can<00:44:24.480> actually<00:44:24.640> fit<00:44:24.960> on<00:44:25.119> a\nvisualizations you can actually fit on a\nvisualizations you can actually fit on a screen,<00:44:25.839> right?<00:44:26.880> So<00:44:26.960> you<00:44:27.119> can<00:44:27.280> use<00:44:27.440> those<00:44:27.599> sort\nscreen, right? So you can use those sort\nscreen, right? So you can use those sort of<00:44:27.839> like<00:44:28.079> soft<00:44:28.400> up<00:44:28.720> you<00:44:28.960> can<00:44:29.040> use<00:44:29.280> that<00:44:29.680> fact<00:44:30.000> to\nof like soft up you can use that fact to\nof like soft up you can use that fact to sort<00:44:30.400> of<00:44:30.480> form<00:44:30.880> soft<00:44:31.119> upper<00:44:31.520> limits<00:44:32.160> to<00:44:32.400> what\nsort of form soft upper limits to what\nsort of form soft upper limits to what you<00:44:32.720> actually<00:44:32.880> have<00:44:33.040> to<00:44:33.119> grab<00:44:33.359> as<00:44:33.599> the\nyou actually have to grab as the\nyou actually have to grab as the debugger.\ndebugger.\ndebugger. So<00:44:36.000> um<00:44:36.800> to<00:44:37.119> do<00:44:37.280> that<00:44:37.839> these<00:44:38.319> expansions<00:44:39.200> or\nSo um to do that these expansions or\nSo um to do that these expansions or anything<00:44:40.160> like<00:44:40.480> sort<00:44:40.720> of<00:44:40.800> that<00:44:41.520> that<00:44:41.920> could\nanything like sort of that that could\nanything like sort of that that could expand<00:44:42.560> like<00:44:42.880> that<00:44:43.520> needs<00:44:43.760> to<00:44:43.839> be<00:44:44.000> windowed\nexpand like that needs to be windowed\nexpand like that needs to be windowed right\nright\nright needs<00:44:47.680> to<00:44:47.760> be<00:44:47.920> windowed.<00:44:48.400> So<00:44:48.560> instead<00:44:48.880> of\nneeds to be windowed. So instead of\nneeds to be windowed. So instead of taking<00:44:49.520> an<00:44:49.920> an<00:44:50.160> evaluation<00:44:50.720> producing<00:44:51.040> a<00:44:51.200> list\ntaking an an evaluation producing a list\ntaking an an evaluation producing a list of<00:44:51.440> evaluations<00:44:52.400> we<00:44:52.640> need<00:44:52.720> to<00:44:52.880> scope<00:44:53.200> it.<00:44:53.359> We\nof evaluations we need to scope it. We\nof evaluations we need to scope it. We can<00:44:53.680> say<00:44:53.920> we<00:44:54.160> we're<00:44:54.400> taking<00:44:54.640> an<00:44:54.800> evaluation\ncan say we we're taking an evaluation\ncan say we we're taking an evaluation and<00:44:55.520> some<00:44:55.760> range<00:44:56.079> of<00:44:56.560> within<00:44:56.880> that<00:44:57.119> expansion.\nand some range of within that expansion.\nand some range of within that expansion. We<00:44:58.000> produce<00:44:58.240> a<00:44:58.400> list<00:44:58.560> of<00:44:58.720> evaluations<00:44:59.280> just\nWe produce a list of evaluations just\nWe produce a list of evaluations just for<00:44:59.680> that<00:44:59.839> range,<00:45:00.240> right?<00:45:00.400> We<00:45:00.560> need<00:45:00.720> some\nfor that range, right? We need some\nfor that range, right? We need some windowed<00:45:01.680> range.<00:45:02.640> When<00:45:02.880> we<00:45:03.040> generate<00:45:03.359> a\nwindowed range. When we generate a\nwindowed range. When we generate a string,<00:45:04.319> you<00:45:04.480> know,<00:45:05.760> you<00:45:06.000> can't<00:45:06.160> just<00:45:06.319> go\nstring, you know, you can't just go\nstring, you know, you can't just go forever.<00:45:07.119> Maybe<00:45:07.359> you<00:45:07.520> say,<00:45:07.680> I<00:45:07.920> I've<00:45:08.079> got<00:45:08.160> an\nforever. Maybe you say, I I've got an\nforever. Maybe you say, I I've got an evaluation.<00:45:08.800> I've<00:45:08.960> got<00:45:09.040> a<00:45:09.200> font<00:45:10.480> and<00:45:10.640> I've<00:45:10.880> got\nevaluation. I've got a font and I've got\nevaluation. I've got a font and I've got some<00:45:11.200> pixel<00:45:11.599> range<00:45:12.560> um<00:45:12.640> that,<00:45:13.040> you<00:45:13.119> know,\nsome pixel range um that, you know,\nsome pixel range um that, you know, delimmits<00:45:13.760> how<00:45:13.920> many<00:45:14.079> characters<00:45:14.400> I<00:45:14.560> actually\ndelimmits how many characters I actually\ndelimmits how many characters I actually want<00:45:14.880> to<00:45:14.960> generate<00:45:15.200> and<00:45:15.440> then<00:45:15.520> I<00:45:15.599> get<00:45:15.680> a<00:45:15.760> string\nwant to generate and then I get a string\nwant to generate and then I get a string at<00:45:16.079> the<00:45:16.160> end<00:45:16.319> there.\nat the end there.\nat the end there. Now<00:45:19.359> if<00:45:19.520> we<00:45:19.680> imagine<00:45:20.000> windowing<00:45:20.480> a<00:45:20.640> list<00:45:20.800> of\nNow if we imagine windowing a list of\nNow if we imagine windowing a list of rows<00:45:21.920> like<00:45:22.319> in<00:45:22.480> a<00:45:22.640> watch<00:45:22.880> window,<00:45:23.599> it's<00:45:23.760> a<00:45:23.920> very\nrows like in a watch window, it's a very\nrows like in a watch window, it's a very simple<00:45:24.400> problem.<00:45:25.040> Um<00:45:25.359> especially<00:45:25.680> because\nsimple problem. Um especially because\nsimple problem. Um especially because the<00:45:26.079> rows<00:45:26.240> are<00:45:26.400> all<00:45:26.480> like<00:45:26.720> uniformly<00:45:27.280> sized,\nthe rows are all like uniformly sized,\nthe rows are all like uniformly sized, right?<00:45:28.960> Um<00:45:29.760> you're<00:45:30.000> storing<00:45:30.240> some<00:45:30.560> state\nright? Um you're storing some state\nright? Um you're storing some state somewhere<00:45:31.359> that<00:45:31.680> you<00:45:31.839> know<00:45:32.000> deter<00:45:32.480> determines\nsomewhere that you know deter determines\nsomewhere that you know deter determines your<00:45:33.040> scroll<00:45:33.440> position\nyour scroll position\nyour scroll position and<00:45:36.079> that<00:45:36.400> combined<00:45:36.800> with<00:45:37.040> like<00:45:37.280> how<00:45:37.599> large\nand that combined with like how large\nand that combined with like how large the<00:45:38.160> visible<00:45:38.480> range<00:45:38.720> is<00:45:38.960> will<00:45:39.200> tell<00:45:39.359> you<00:45:39.680> you\nthe visible range is will tell you you\nthe visible range is will tell you you know<00:45:39.920> depending<00:45:40.160> on<00:45:40.319> how<00:45:40.480> you're<00:45:40.640> storing\nknow depending on how you're storing\nknow depending on how you're storing that<00:45:40.960> scroll<00:45:41.280> offset.<00:45:41.839> you<00:45:42.000> know,<00:45:42.160> you<00:45:42.240> can\nthat scroll offset. you know, you can\nthat scroll offset. you know, you can store<00:45:42.480> it<00:45:42.560> in<00:45:42.720> a<00:45:42.880> number<00:45:42.960> of<00:45:43.119> ways,<00:45:43.280> but<00:45:43.520> you\nstore it in a number of ways, but you\nstore it in a number of ways, but you could<00:45:43.760> pretty<00:45:44.000> easily<00:45:44.240> compute,<00:45:44.880> oh,<00:45:45.040> I'm\ncould pretty easily compute, oh, I'm\ncould pretty easily compute, oh, I'm viewing<00:45:45.520> this<00:45:45.680> index<00:45:46.000> to<00:45:46.160> this<00:45:46.400> this<00:45:46.720> index,\nviewing this index to this this index,\nviewing this index to this this index, right?\nright?\nright? Um,\nUm,\nUm, not<00:45:51.920> surprisingly,<00:45:52.960> region<00:45:53.359> before<00:45:53.599> and\nnot surprisingly, region before and\nnot surprisingly, region before and after<00:45:54.400> not<00:45:54.720> visible.<00:45:55.200> Don't<00:45:55.440> need<00:45:55.599> to<00:45:55.680> do\nafter not visible. Don't need to do\nafter not visible. Don't need to do anything<00:45:56.000> for<00:45:56.240> you.<00:45:56.400> You<00:45:56.640> don't<00:45:56.800> actually\nanything for you. You don't actually\nanything for you. You don't actually have<00:45:57.280> to<00:45:57.440> compute<00:45:57.839> anything<00:45:58.480> for<00:45:58.800> those.<00:45:59.359> Work\nhave to compute anything for those. Work\nhave to compute anything for those. Work only<00:45:59.839> needs<00:46:00.000> to<00:46:00.160> be<00:46:00.240> done<00:46:00.319> for<00:46:00.480> the<00:46:00.560> visible\nonly needs to be done for the visible\nonly needs to be done for the visible region.\nregion.\nregion. But<00:46:03.040> if<00:46:03.200> we<00:46:03.359> take<00:46:03.440> a<00:46:03.599> look<00:46:03.680> at<00:46:03.839> an<00:46:04.000> actual<00:46:04.240> watch\nBut if we take a look at an actual watch\nBut if we take a look at an actual watch window,<00:46:05.040> you<00:46:05.200> might<00:46:05.359> notice<00:46:05.760> it's<00:46:06.079> not<00:46:06.240> really\nwindow, you might notice it's not really\nwindow, you might notice it's not really a<00:46:06.640> list.<00:46:07.040> It's<00:46:07.280> kind<00:46:07.440> of<00:46:07.520> this<00:46:07.920> tree\na list. It's kind of this tree\na list. It's kind of this tree structure,<00:46:09.200> right?<00:46:09.599> It's<00:46:09.839> a<00:46:10.000> tree<00:46:10.240> of<00:46:10.400> lists\nstructure, right? It's a tree of lists\nstructure, right? It's a tree of lists where<00:46:11.280> each<00:46:12.079> list<00:46:12.640> in<00:46:13.040> the<00:46:13.280> tree<00:46:13.520> kind<00:46:13.760> of\nwhere each list in the tree kind of\nwhere each list in the tree kind of interrupts<00:46:14.400> the<00:46:14.560> parent<00:46:15.200> list.\nUm<00:46:19.359> so<00:46:19.839> this<00:46:20.400> these<00:46:20.720> are<00:46:20.800> all<00:46:20.880> the<00:46:21.040> members<00:46:21.280> of\nUm so this these are all the members of\nUm so this these are all the members of shared<00:46:21.920> on<00:46:22.160> this<00:46:22.319> level.<00:46:23.760> These<00:46:24.079> are<00:46:24.160> the\nshared on this level. These are the\nshared on this level. These are the members<00:46:24.560> of<00:46:24.720> the<00:46:24.880> control<00:46:25.200> bindings<00:46:25.680> member.\nmembers of the control bindings member.\nmembers of the control bindings member. These<00:46:27.280> are<00:46:27.359> the<00:46:27.520> members<00:46:28.079> uh<00:46:28.160> these<00:46:28.400> are<00:46:28.480> the\nThese are the members uh these are the\nThese are the members uh these are the elements<00:46:28.880> of<00:46:29.040> the<00:46:29.200> bindings<00:46:29.599> array<00:46:29.839> inside<00:46:30.079> of\nelements of the bindings array inside of\nelements of the bindings array inside of control<00:46:30.560> bindings.\nOh<00:46:33.920> no.<00:46:35.280> Uh<00:46:35.760> these<00:46:36.079> are<00:46:36.160> the<00:46:36.560> uh<00:46:36.640> the<00:46:36.880> members\nOh no. Uh these are the uh the members\nOh no. Uh these are the uh the members of<00:46:37.359> bindings<00:46:37.839> at<00:46:38.079> four.\nof bindings at four.\nof bindings at four. Um,\nwait.<00:46:43.920> Yeah,<00:46:44.160> bindings<00:46:44.640> of<00:46:44.800> four.<00:46:45.040> Yep.<00:46:45.760> So,\nwait. Yeah, bindings of four. Yep. So,\nwait. Yeah, bindings of four. Yep. So, if<00:46:46.160> you<00:46:46.240> encode<00:46:46.640> that<00:46:46.880> hierarchy<00:46:47.359> into<00:46:47.680> sort\nif you encode that hierarchy into sort\nif you encode that hierarchy into sort of<00:46:47.920> a<00:46:48.079> tree<00:46:48.319> structure,<00:46:48.720> if<00:46:48.880> you're<00:46:48.960> just\nof a tree structure, if you're just\nof a tree structure, if you're just going<00:46:49.280> to<00:46:49.440> like<00:46:50.000> build<00:46:50.319> that<00:46:50.880> explicitly,\ngoing to like build that explicitly,\ngoing to like build that explicitly, it'd<00:46:51.760> look<00:46:52.079> something<00:46:52.400> like<00:46:52.640> this.<00:46:54.000> So,<00:46:55.280> um,\nit'd look something like this. So, um,\nit'd look something like this. So, um, you've<00:46:56.640> got<00:46:56.720> your<00:46:57.119> watch<00:46:57.359> list,<00:46:57.680> which<00:46:57.839> is\nyou've got your watch list, which is\nyou've got your watch list, which is just<00:46:58.160> some<00:46:58.319> number<00:46:58.480> of<00:46:58.640> watch<00:46:58.880> expressions,\njust some number of watch expressions,\njust some number of watch expressions, members<00:47:00.160> of<00:47:00.480> members<00:47:00.800> of<00:47:01.040> shared,<00:47:01.440> members<00:47:01.680> of\nmembers of members of shared, members of\nmembers of members of shared, members of control<00:47:02.079> bindings,<00:47:02.800> elements<00:47:03.119> of<00:47:03.280> bindings,\ncontrol bindings, elements of bindings,\ncontrol bindings, elements of bindings, members<00:47:04.160> of<00:47:04.319> bindings<00:47:04.720> at<00:47:04.880> four.<00:47:05.680> For<00:47:06.000> this\nmembers of bindings at four. For this\nmembers of bindings at four. For this example,<00:47:06.560> that's<00:47:06.800> what<00:47:06.880> we<00:47:07.040> would<00:47:07.280> see,\nexample, that's what we would see,\nexample, that's what we would see, right?<00:47:07.760> So<00:47:07.920> let's<00:47:08.160> see<00:47:08.240> how<00:47:08.400> we<00:47:08.560> can<00:47:08.640> take<00:47:08.800> a\nright? So let's see how we can take a\nright? So let's see how we can take a structure<00:47:09.280> like<00:47:09.520> this<00:47:10.000> and<00:47:10.240> window<00:47:10.640> it.\nstructure like this and window it.\nstructure like this and window it. So<00:47:12.720> first<00:47:13.359> let's<00:47:13.680> label<00:47:14.079> each<00:47:14.319> node.<00:47:14.960> Um<00:47:16.160> W<00:47:16.400> is\nSo first let's label each node. Um W is\nSo first let's label each node. Um W is watch<00:47:16.800> list.<00:47:17.040> S<00:47:17.280> is<00:47:17.440> shared.<00:47:18.079> C<00:47:18.319> is<00:47:18.480> the<00:47:18.640> member\nwatch list. S is shared. C is the member\nwatch list. S is shared. C is the member members<00:47:19.359> of<00:47:19.520> control<00:47:19.839> bindings.<00:47:20.720> B<00:47:20.960> is<00:47:21.119> the\nmembers of control bindings. B is the\nmembers of control bindings. B is the elements<00:47:21.520> of<00:47:21.680> bindings.<00:47:22.480> Four<00:47:22.640> is<00:47:22.800> the\nelements of bindings. Four is the\nelements of bindings. Four is the members<00:47:23.440> of<00:47:23.839> bindings<00:47:24.319> at<00:47:24.480> four.\nmembers of bindings at four.\nmembers of bindings at four. We<00:47:26.400> can<00:47:26.560> also<00:47:26.720> say<00:47:26.960> that<00:47:27.599> each<00:47:27.920> node<00:47:28.400> sort<00:47:28.640> of\nWe can also say that each node sort of\nWe can also say that each node sort of uh<00:47:29.119> splits<00:47:29.599> the<00:47:29.839> parent<00:47:30.400> at<00:47:30.720> some<00:47:30.960> particular\nuh splits the parent at some particular\nuh splits the parent at some particular index<00:47:31.839> in<00:47:32.079> the<00:47:32.240> range.<00:47:32.560> So<00:47:33.359> s<00:47:33.920> uh<00:47:34.079> let's<00:47:34.319> just\nindex in the range. So s uh let's just\nindex in the range. So s uh let's just say<00:47:34.640> they<00:47:34.880> all<00:47:35.119> split<00:47:35.359> their<00:47:35.520> parent<00:47:35.839> at<00:47:36.480> uh\nsay they all split their parent at uh\nsay they all split their parent at uh you<00:47:36.880> know<00:47:37.040> s<00:47:37.440> subscript<00:47:38.079> whatever<00:47:38.400> that<00:47:38.560> node\nyou know s subscript whatever that node\nyou know s subscript whatever that node happens<00:47:39.119> to<00:47:39.280> be.\nWe<00:47:44.640> then<00:47:44.880> turn<00:47:45.040> this<00:47:45.200> tree<00:47:45.440> into<00:47:45.680> a<00:47:45.839> flat<00:47:46.079> list.\nWe then turn this tree into a flat list.\nWe then turn this tree into a flat list. Right?<00:47:46.640> You<00:47:46.800> have<00:47:46.880> this<00:47:47.040> tree<00:47:47.280> structure<00:47:48.240> and\nRight? You have this tree structure and\nRight? You have this tree structure and um<00:47:49.119> each<00:47:49.440> split<00:47:49.920> actually<00:47:50.160> causes<00:47:50.880> two<00:47:51.599> uh\num each split actually causes two uh\num each split actually causes two uh ranges<00:47:52.560> of<00:47:52.960> rows<00:47:53.040> to<00:47:53.200> be<00:47:53.359> generated.<00:47:53.760> Right?\nranges of rows to be generated. Right?\nranges of rows to be generated. Right? You've<00:47:54.079> got<00:47:54.240> W<00:47:54.560> for<00:47:54.720> the<00:47:54.880> top<00:47:55.760> um<00:47:56.720> uh<00:47:57.040> well\nYou've got W for the top um uh well\nYou've got W for the top um uh well you've<00:47:57.440> got<00:47:57.599> W<00:47:57.839> as<00:47:58.000> the<00:47:58.160> top<00:47:58.319> node<00:47:58.560> and<00:47:58.800> then\nyou've got W as the top node and then\nyou've got W as the top node and then the<00:47:59.359> things<00:47:59.599> before<00:47:59.920> the<00:48:00.160> splits<00:48:00.720> are<00:48:01.040> W<00:48:01.359> pre\nthe things before the splits are W pre\nthe things before the splits are W pre and<00:48:01.760> the<00:48:01.920> things<00:48:02.079> after<00:48:02.319> the<00:48:02.480> splits<00:48:02.720> are<00:48:02.880> W\nand the things after the splits are W\nand the things after the splits are W post<00:48:03.839> in<00:48:04.000> this<00:48:04.160> particular<00:48:04.480> case<00:48:04.720> for<00:48:04.880> one\npost in this particular case for one\npost in this particular case for one child<00:48:05.440> split<00:48:05.680> it's<00:48:05.760> a<00:48:05.839> very<00:48:06.000> simple<00:48:06.160> case\nchild split it's a very simple case\nchild split it's a very simple case right<00:48:06.560> you've<00:48:06.720> only<00:48:06.880> got<00:48:06.960> one<00:48:07.200> split<00:48:07.440> per<00:48:07.599> node\nright you've only got one split per node\nright you've only got one split per node but<00:48:08.640> um<00:48:08.880> but<00:48:09.040> yes<00:48:09.280> you've<00:48:09.440> got<00:48:09.599> W<00:48:09.760> pre<00:48:10.880> and<00:48:11.119> so\nbut um but yes you've got W pre and so\nbut um but yes you've got W pre and so on<00:48:11.359> and<00:48:11.520> so<00:48:11.680> forth<00:48:12.240> doesn't<00:48:12.400> have<00:48:12.560> any<00:48:12.720> splits\non and so forth doesn't have any splits\non and so forth doesn't have any splits underneath<00:48:13.359> it<00:48:13.520> so<00:48:13.680> you<00:48:13.839> just<00:48:13.920> get<00:48:14.079> four<00:48:15.280> um\nunderneath it so you just get four um\nunderneath it so you just get four um but<00:48:15.760> you<00:48:15.920> can<00:48:16.079> flatten<00:48:16.400> it<00:48:16.560> this<00:48:16.800> way\nand<00:48:20.640> looking<00:48:20.880> back<00:48:20.960> at<00:48:21.119> the<00:48:21.359> original<00:48:21.599> image\nand looking back at the original image\nand looking back at the original image we<00:48:22.800> can<00:48:22.880> see<00:48:23.040> these<00:48:23.280> ranges<00:48:23.760> directly,<00:48:24.559> right?\nwe can see these ranges directly, right?\nwe can see these ranges directly, right? Here's<00:48:25.760> W<00:48:26.000> pre,<00:48:26.960> here's<00:48:27.280> S<00:48:27.520> pre,<00:48:28.640> here's<00:48:29.040> C\nHere's W pre, here's S pre, here's C\nHere's W pre, here's S pre, here's C pre,\npre,\npre, here's<00:48:31.119> B<00:48:31.359> pre,<00:48:32.160> here's<00:48:32.400> all<00:48:32.480> the<00:48:32.640> members\nhere's B pre, here's all the members\nhere's B pre, here's all the members before,<00:48:33.359> no,<00:48:33.599> no<00:48:33.839> splits,<00:48:34.240> right?<00:48:34.480> So,<00:48:34.559> that's\nbefore, no, no splits, right? So, that's\nbefore, no, no splits, right? So, that's all<00:48:34.880> of<00:48:35.040> them.<00:48:36.160> Uh,<00:48:36.400> and<00:48:36.559> then<00:48:36.720> we<00:48:36.880> pop<00:48:37.119> back\nall of them. Uh, and then we pop back\nall of them. Uh, and then we pop back out,<00:48:37.440> right?<00:48:37.599> We've<00:48:37.760> got<00:48:37.920> B<00:48:38.160> post.<00:48:39.040> Cost\nout, right? We've got B post. Cost\nout, right? We've got B post. Cost happens<00:48:40.079> to<00:48:40.240> be<00:48:40.319> empty,<00:48:40.800> right?<00:48:41.040> There's<00:48:41.200> no\nhappens to be empty, right? There's no\nhappens to be empty, right? There's no members<00:48:41.680> after<00:48:42.720> um<00:48:42.960> bindings,<00:48:43.520> which<00:48:44.000> no\nmembers after um bindings, which no\nmembers after um bindings, which no problem.\nproblem.\nproblem. And<00:48:46.160> then<00:48:46.319> we<00:48:46.400> get<00:48:46.559> S<00:48:46.800> post.\nAnd then we get S post.\nAnd then we get S post. um<00:48:48.720> that's<00:48:48.960> all<00:48:49.040> you<00:48:49.200> can<00:48:49.280> see<00:48:49.359> in<00:48:49.520> this<00:48:49.599> image,\num that's all you can see in this image,\num that's all you can see in this image, but<00:48:50.000> then<00:48:50.079> there'd<00:48:50.319> be<00:48:50.400> a<00:48:50.559> W<00:48:50.800> post<00:48:51.359> further<00:48:51.760> on\nbut then there'd be a W post further on\nbut then there'd be a W post further on like<00:48:52.720> you<00:48:52.880> know<00:48:52.960> I<00:48:53.119> think<00:48:53.200> there<00:48:53.520> technically\nlike you know I think there technically\nlike you know I think there technically should<00:48:54.160> be<00:48:54.319> but<00:48:54.960> um<00:48:55.440> there<00:48:55.920> but<00:48:56.160> you<00:48:56.319> can't\nshould be but um there but you can't\nshould be but um there but you can't really<00:48:56.640> see<00:48:56.720> it<00:48:56.960> but<00:48:57.280> there'd<00:48:57.520> be<00:48:57.599> a<00:48:57.680> W<00:48:57.920> post\nreally see it but there'd be a W post\nreally see it but there'd be a W post after<00:48:58.400> that.<00:48:59.280> So<00:48:59.599> given<00:48:59.920> this<00:49:00.079> flat<00:49:00.319> list<00:49:00.559> of\nafter that. So given this flat list of\nafter that. So given this flat list of ranges<00:49:01.680> um<00:49:01.839> of<00:49:02.079> evaluations<00:49:02.720> we<00:49:02.880> can<00:49:02.960> then\nranges um of evaluations we can then\nranges um of evaluations we can then perform<00:49:03.440> the<00:49:03.599> windowing<00:49:04.079> on<00:49:04.240> that<00:49:04.480> structure.\nperform the windowing on that structure.\nperform the windowing on that structure. You've<00:49:04.960> got<00:49:05.040> a<00:49:05.200> you've<00:49:05.440> got<00:49:05.520> a<00:49:05.680> linear<00:49:06.000> list<00:49:06.319> at\nYou've got a you've got a linear list at\nYou've got a you've got a linear list at that<00:49:06.720> point<00:49:06.880> you<00:49:07.119> know<00:49:07.280> how<00:49:07.599> big<00:49:07.839> each<00:49:08.079> of\nthat point you know how big each of\nthat point you know how big each of these<00:49:08.400> ranges<00:49:08.800> are.<00:49:09.359> Then<00:49:09.599> you<00:49:09.760> can<00:49:10.160> uh<00:49:10.400> window\nthese ranges are. Then you can uh window\nthese ranges are. Then you can uh window that<00:49:10.960> list.<00:49:11.280> it's<00:49:11.520> sort<00:49:11.680> of<00:49:12.000> um<00:49:13.440> you're\nthat list. it's sort of um you're\nthat list. it's sort of um you're performing<00:49:14.000> windowing<00:49:14.400> on<00:49:14.480> a<00:49:14.640> much<00:49:14.800> more\nperforming windowing on a much more\nperforming windowing on a much more limited<00:49:15.280> range<00:49:15.599> than<00:49:15.760> the<00:49:16.000> full<00:49:16.240> set<00:49:16.400> of\nlimited range than the full set of\nlimited range than the full set of possible<00:49:17.119> rows.<00:49:17.359> Right?\npossible rows. Right?\npossible rows. Right? So<00:49:20.720> uh<00:49:20.800> in<00:49:21.040> my<00:49:21.200> terminology<00:49:21.680> and<00:49:21.920> the<00:49:22.079> way<00:49:22.160> that\nSo uh in my terminology and the way that\nSo uh in my terminology and the way that I<00:49:22.480> implement<00:49:22.800> this<00:49:23.359> uh<00:49:23.599> each<00:49:23.839> one<00:49:24.000> of<00:49:24.079> those\nI implement this uh each one of those\nI implement this uh each one of those nodes<00:49:24.720> the<00:49:25.200> in<00:49:25.440> the<00:49:25.680> sort<00:49:25.920> of<00:49:26.079> tree<00:49:26.319> of<00:49:26.640> ranged\nnodes the in the sort of tree of ranged\nnodes the in the sort of tree of ranged evaluations<00:49:27.680> or<00:49:28.000> whatever<00:49:28.319> you<00:49:28.400> want<00:49:28.480> to<00:49:28.559> call\nevaluations or whatever you want to call\nevaluations or whatever you want to call it<00:49:28.960> I<00:49:29.119> call<00:49:29.280> it<00:49:29.440> a<00:49:29.599> block.<00:49:30.240> Um<00:49:31.599> and<00:49:31.760> so<00:49:31.920> to<00:49:32.160> do\nit I call it a block. Um and so to do\nit I call it a block. Um and so to do this<00:49:32.400> step<00:49:32.640> of<00:49:32.800> evaluation<00:49:33.839> visualization<00:49:34.480> we\nthis step of evaluation visualization we\nthis step of evaluation visualization we produce<00:49:34.880> a<00:49:35.040> block<00:49:35.280> tree<00:49:35.839> from<00:49:36.079> an<00:49:36.240> evaluation.\nproduce a block tree from an evaluation.\nproduce a block tree from an evaluation. So<00:49:37.359> a<00:49:37.599> block<00:49:38.000> contains<00:49:38.319> an<00:49:38.559> evaluation<00:49:39.440> some\nSo a block contains an evaluation some\nSo a block contains an evaluation some root<00:49:40.000> evaluation<00:49:40.480> and<00:49:40.640> then<00:49:40.800> it<00:49:40.960> says<00:49:41.760> uh<00:49:41.920> I'm\nroot evaluation and then it says uh I'm\nroot evaluation and then it says uh I'm the<00:49:42.480> range<00:49:42.720> of<00:49:43.280> you<00:49:43.440> know<00:49:43.599> 0<00:49:43.920> to<00:49:45.040> n<00:49:45.680> of<00:49:46.079> the<00:49:46.240> or\nthe range of you know 0 to n of the or\nthe range of you know 0 to n of the or you<00:49:46.800> know<00:49:47.119> n<00:49:47.280> to<00:49:47.520> n<00:49:47.760> maybe<00:49:48.640> uh<00:49:48.800> of<00:49:49.200> like<00:49:49.440> within\nyou know n to n maybe uh of like within\nyou know n to n maybe uh of like within this<00:49:50.079> evaluation<00:49:50.640> I'm<00:49:50.880> sort<00:49:51.040> of<00:49:51.200> like<00:49:51.440> here's\nthis evaluation I'm sort of like here's\nthis evaluation I'm sort of like here's the<00:49:51.839> root<00:49:52.000> evaluation<00:49:52.480> that<00:49:52.720> I'm<00:49:52.880> going<00:49:52.960> to\nthe root evaluation that I'm going to\nthe root evaluation that I'm going to look<00:49:53.200> at<00:49:53.359> the<00:49:53.839> these<00:49:54.319> children<00:49:54.559> of<00:49:54.800> that.\nlook at the these children of that.\nlook at the these children of that. Um,<00:49:57.839> so<00:49:58.640> given<00:49:58.960> this<00:49:59.200> example,<00:49:59.839> you've<00:50:00.000> got<00:50:00.079> a\nUm, so given this example, you've got a\nUm, so given this example, you've got a ve<00:50:00.640> 4<00:50:01.760> array<00:50:02.400> of<00:50:02.640> 1<00:50:02.880> billion<00:50:03.440> ve<00:50:03.760> 4s.<00:50:04.640> Um,<00:50:05.680> uh,\nve 4 array of 1 billion ve 4s. Um, uh,\nve 4 array of 1 billion ve 4s. Um, uh, with<00:50:06.000> the<00:50:06.160> element<00:50:06.480> at,<00:50:06.880> uh,<00:50:07.040> you've<00:50:07.200> got<00:50:07.280> the\nwith the element at, uh, you've got the\nwith the element at, uh, you've got the element<00:50:07.760> at<00:50:07.920> 1<00:50:08.160> million<00:50:08.559> expanded.<00:50:09.040> So<00:50:09.200> you've\nelement at 1 million expanded. So you've\nelement at 1 million expanded. So you've like<00:50:09.920> scrolled<00:50:10.319> a<00:50:10.559> long<00:50:10.720> way<00:50:10.880> and<00:50:11.119> then<00:50:11.200> you've\nlike scrolled a long way and then you've\nlike scrolled a long way and then you've like<00:50:11.599> clicked,\nlike clicked,\nlike clicked, you<00:50:14.160> get<00:50:14.240> this<00:50:14.480> block<00:50:14.720> tree,<00:50:14.960> right?<00:50:15.119> You've\nyou get this block tree, right? You've\nyou get this block tree, right? You've got<00:50:15.440> some<00:50:15.599> root<00:50:15.920> evaluation<00:50:16.480> for<00:50:16.720> array.<00:50:18.160> Um,\ngot some root evaluation for array. Um,\ngot some root evaluation for array. Um, and<00:50:19.119> then<00:50:19.280> when<00:50:19.440> you<00:50:19.599> expand<00:50:19.839> array,<00:50:20.160> you<00:50:20.319> need\nand then when you expand array, you need\nand then when you expand array, you need a<00:50:20.559> block<00:50:20.720> for<00:50:20.880> that<00:50:21.119> expansion.<00:50:21.599> So<00:50:21.680> you<00:50:21.839> get\na block for that expansion. So you get\na block for that expansion. So you get one<00:50:22.480> node<00:50:22.720> that's<00:50:23.040> 0<00:50:23.280> to<00:50:23.440> 1<00:50:23.680> billion.<00:50:24.160> And<00:50:24.400> then\none node that's 0 to 1 billion. And then\none node that's 0 to 1 billion. And then you've<00:50:25.119> got<00:50:25.440> one<00:50:25.680> node<00:50:26.000> for<00:50:26.160> the<00:50:26.319> members<00:50:26.559> of\nyou've got one node for the members of\nyou've got one node for the members of the<00:50:26.880> 1<00:50:27.119> millionth<00:50:27.839> or<00:50:28.160> sorry<00:50:29.040> 1<00:50:29.280> million<00:50:29.680> and\nthe 1 millionth or sorry 1 million and\nthe 1 millionth or sorry 1 million and first<00:50:30.400> element.<00:50:31.280> Um<00:50:31.760> you<00:50:31.920> get<00:50:32.160> you<00:50:32.480> hopefully\nfirst element. Um you get you hopefully\nfirst element. Um you get you hopefully get<00:50:32.960> the<00:50:33.119> picture.\nUm\nso<00:50:43.280> um<00:50:44.400> when<00:50:44.640> we're<00:50:44.880> actually<00:50:45.040> building<00:50:45.280> this\nso um when we're actually building this\nso um when we're actually building this block<00:50:45.760> tree<00:50:45.920> structure<00:50:46.240> so<00:50:46.400> we<00:50:46.559> have<00:50:46.720> an\nblock tree structure so we have an\nblock tree structure so we have an evaluation<00:50:47.680> we<00:50:47.839> need<00:50:48.000> to<00:50:48.079> sort<00:50:48.240> of<00:50:48.400> build<00:50:48.640> this\nevaluation we need to sort of build this\nevaluation we need to sort of build this block<00:50:49.200> structure<00:50:49.520> here.<00:50:50.720> And<00:50:51.040> the<00:50:51.200> way<00:50:51.359> we<00:50:51.520> can\nblock structure here. And the way we can\nblock structure here. And the way we can do<00:50:51.760> that<00:50:51.920> is<00:50:52.079> by<00:50:52.319> storing<00:50:52.800> some<00:50:53.119> kind<00:50:53.359> of\ndo that is by storing some kind of\ndo that is by storing some kind of expansion<00:50:54.240> state,<00:50:54.559> right?<00:50:54.720> We<00:50:54.880> need<00:50:54.960> to<00:50:55.200> sort\nexpansion state, right? We need to sort\nexpansion state, right? We need to sort of<00:50:55.680> have<00:50:55.920> some<00:50:56.240> data<00:50:56.559> structure<00:50:56.880> that<00:50:57.200> records\nof have some data structure that records\nof have some data structure that records which<00:50:58.640> nodes<00:50:58.960> are<00:50:59.119> expanded.<00:50:59.599> And<00:50:59.760> how<00:50:59.920> do<00:51:00.000> we\nwhich nodes are expanded. And how do we\nwhich nodes are expanded. And how do we record<00:51:00.480> that<00:51:00.800> if<00:51:01.200> you<00:51:01.359> know<00:51:01.440> we<00:51:01.680> don't<00:51:01.839> want<00:51:01.920> to\nrecord that if you know we don't want to\nrecord that if you know we don't want to store<00:51:02.400> something<00:51:02.640> for<00:51:02.800> every<00:51:03.119> row<00:51:03.200> because\nstore something for every row because\nstore something for every row because then<00:51:03.520> we're<00:51:03.599> back<00:51:03.760> in<00:51:03.920> the<00:51:04.079> same<00:51:04.319> problem,\nthen we're back in the same problem,\nthen we're back in the same problem, right?<00:51:04.880> It's<00:51:05.040> like<00:51:05.680> I<00:51:05.839> don't<00:51:06.000> want<00:51:06.079> to<00:51:06.240> store<00:51:06.559> 1\nright? It's like I don't want to store 1\nright? It's like I don't want to store 1 billion<00:51:07.200> expansion<00:51:07.680> states,<00:51:08.240> right?<00:51:08.559> Um<00:51:08.880> so\nbillion expansion states, right? Um so\nbillion expansion states, right? Um so we<00:51:09.359> need<00:51:09.440> to<00:51:09.599> find<00:51:09.839> some<00:51:10.079> kind<00:51:10.240> of<00:51:10.480> sparse\nwe need to find some kind of sparse\nwe need to find some kind of sparse representation<00:51:12.319> for<00:51:12.559> that<00:51:12.800> information.\nUm<00:51:16.960> so<00:51:17.280> to<00:51:17.520> see<00:51:17.680> how<00:51:17.839> that<00:51:18.000> might<00:51:18.240> work,\nUm so to see how that might work,\nUm so to see how that might work, consider<00:51:18.960> a<00:51:19.119> watch<00:51:19.440> tree<00:51:19.680> like<00:51:19.920> this.<00:51:20.880> Um<00:51:21.359> you\nconsider a watch tree like this. Um you\nconsider a watch tree like this. Um you need<00:51:21.760> a<00:51:21.920> data<00:51:22.160> structure<00:51:22.400> which<00:51:22.800> would<00:51:23.119> be\nneed a data structure which would be\nneed a data structure which would be able<00:51:23.440> to<00:51:23.760> sort<00:51:24.000> of<00:51:24.079> uniquely<00:51:24.720> pick<00:51:25.040> out\nable to sort of uniquely pick out\nable to sort of uniquely pick out certain<00:51:25.760> points<00:51:26.000> in<00:51:26.240> the<00:51:26.400> tree<00:51:27.280> and<00:51:27.680> store<00:51:27.839> a\ncertain points in the tree and store a\ncertain points in the tree and store a state<00:51:28.240> for<00:51:28.480> them<00:51:28.720> and<00:51:28.960> store<00:51:29.200> only<00:51:29.520> those\nstate for them and store only those\nstate for them and store only those expansion<00:51:30.240> states.\nexpansion states.\nexpansion states. Um<00:51:32.880> so<00:51:33.119> let's<00:51:33.359> say<00:51:33.520> A,<00:51:33.760> B,<00:51:34.000> C,<00:51:34.079> and<00:51:34.319> D.<00:51:34.559> Those\nUm so let's say A, B, C, and D. Those\nUm so let's say A, B, C, and D. Those are<00:51:34.800> the<00:51:34.960> nodes<00:51:35.359> that<00:51:35.599> we<00:51:35.760> want<00:51:35.920> to<00:51:36.079> sort<00:51:36.240> of<00:51:36.319> be\nare the nodes that we want to sort of be\nare the nodes that we want to sort of be able<00:51:36.559> to<00:51:36.720> uniquely<00:51:37.119> define.\nable to uniquely define.\nable to uniquely define. And<00:51:39.599> then<00:51:39.839> you<00:51:39.920> know<00:51:40.000> once<00:51:40.240> we<00:51:40.400> have<00:51:40.480> that<00:51:40.720> data\nAnd then you know once we have that data\nAnd then you know once we have that data structure<00:51:41.520> when<00:51:41.760> we're<00:51:41.920> building<00:51:42.160> the<00:51:42.319> block\nstructure when we're building the block\nstructure when we're building the block tree<00:51:42.640> we<00:51:42.800> can<00:51:42.880> go<00:51:42.960> ahead<00:51:43.200> and<00:51:43.359> say<00:51:43.839> here's<00:51:44.160> my\ntree we can go ahead and say here's my\ntree we can go ahead and say here's my here's<00:51:44.800> my<00:51:45.440> spot<00:51:45.680> in<00:51:45.839> the<00:51:46.000> tree<00:51:46.400> check<00:51:46.559> if<00:51:46.800> it's\nhere's my spot in the tree check if it's\nhere's my spot in the tree check if it's expanded<00:51:48.000> um<00:51:48.160> in<00:51:48.400> the<00:51:48.559> sparse<00:51:48.960> expansion\nexpanded um in the sparse expansion\nexpanded um in the sparse expansion state<00:51:49.760> and<00:51:49.920> if<00:51:50.160> it's<00:51:50.400> expanded<00:51:50.880> then<00:51:51.040> we\nstate and if it's expanded then we\nstate and if it's expanded then we recursively<00:51:52.000> descend<00:51:52.319> right<00:51:52.640> then<00:51:52.800> we<00:51:52.960> build\nrecursively descend right then we build\nrecursively descend right then we build another<00:51:53.440> block<00:51:53.680> in<00:51:53.920> the<00:51:54.079> in<00:51:54.240> the<00:51:54.400> block<00:51:54.559> tree.\nanother block in the in the block tree.\nanother block in the in the block tree. Oh<00:51:56.720> no.\nOh no.\nOh no. Okay.<00:51:59.920> One<00:52:00.240> way<00:52:00.319> of<00:52:00.480> defining<00:52:01.119> uh<00:52:01.280> A,<00:52:01.520> B,<00:52:01.680> C,\nOkay. One way of defining uh A, B, C,\nOkay. One way of defining uh A, B, C, and<00:52:02.000> D<00:52:02.400> for<00:52:02.720> any<00:52:03.040> tree\nand D for any tree\nand D for any tree um<00:52:04.880> is<00:52:05.119> to<00:52:05.440> store<00:52:05.760> a<00:52:06.079> walk<00:52:06.480> from<00:52:06.720> the<00:52:06.880> root<00:52:07.119> node\num is to store a walk from the root node\num is to store a walk from the root node of<00:52:07.440> the<00:52:07.599> tree<00:52:08.000> down<00:52:09.040> um<00:52:09.359> to<00:52:09.599> whatever<00:52:10.000> child\nof the tree down um to whatever child\nof the tree down um to whatever child you're<00:52:10.480> going<00:52:10.559> to<00:52:10.640> end<00:52:10.800> up<00:52:10.960> at.<00:52:11.599> Um<00:52:12.240> so,<00:52:12.640> you\nyou're going to end up at. Um so, you\nyou're going to end up at. Um so, you know,<00:52:12.960> consider<00:52:13.359> that<00:52:14.000> uh<00:52:14.559> we<00:52:14.880> know<00:52:15.680> that<00:52:16.160> each\nknow, consider that uh we know that each\nknow, consider that uh we know that each we<00:52:17.119> know<00:52:17.359> each<00:52:17.839> uh<00:52:18.000> index<00:52:18.400> within<00:52:18.720> some<00:52:19.040> parent\nwe know each uh index within some parent\nwe know each uh index within some parent uh<00:52:21.280> of<00:52:21.599> some<00:52:21.920> of<00:52:22.160> some<00:52:22.400> one<00:52:22.559> of<00:52:22.640> these<00:52:22.880> rows.<00:52:23.040> We\nuh of some of some one of these rows. We\nuh of some of some one of these rows. We know<00:52:23.280> the<00:52:23.440> index<00:52:23.760> within<00:52:24.000> its<00:52:24.240> parent,<00:52:24.559> right?\nknow the index within its parent, right?\nknow the index within its parent, right? So,<00:52:25.440> we've<00:52:25.680> got<00:52:26.240> one<00:52:26.480> is<00:52:26.640> the<00:52:26.800> first<00:52:26.960> one<00:52:27.119> at\nSo, we've got one is the first one at\nSo, we've got one is the first one at the<00:52:27.440> root<00:52:27.760> level.<00:52:28.400> We've<00:52:28.640> got<00:52:28.800> one<00:52:29.200> underneath\nthe root level. We've got one underneath\nthe root level. We've got one underneath that<00:52:30.800> and<00:52:30.960> then<00:52:31.119> we've<00:52:31.359> got<00:52:31.839> one<00:52:32.079> and<00:52:32.319> two\nthat and then we've got one and two\nthat and then we've got one and two underneath<00:52:33.200> that.\nThis<00:52:37.359> node's<00:52:37.839> ID<00:52:38.079> can<00:52:38.319> then<00:52:38.559> be<00:52:39.200> uh<00:52:39.280> encoded<00:52:39.760> as\nThis node's ID can then be uh encoded as\nThis node's ID can then be uh encoded as okay<00:52:40.319> well<00:52:40.640> we<00:52:40.880> start<00:52:41.040> at<00:52:41.599> one<00:52:41.839> and<00:52:42.000> then<00:52:42.160> we\nokay well we start at one and then we\nokay well we start at one and then we walk<00:52:42.559> to<00:52:42.720> one.\nwalk to one.\nwalk to one. Um<00:52:45.839> here<00:52:46.319> you<00:52:46.480> know<00:52:46.559> you<00:52:46.720> you<00:52:46.960> start<00:52:47.119> at<00:52:47.359> one\nUm here you know you you start at one\nUm here you know you you start at one you<00:52:48.000> walk<00:52:48.160> to<00:52:48.400> one<00:52:48.640> you<00:52:48.800> walk<00:52:48.960> to<00:52:49.119> two.<00:52:49.440> That's\nyou walk to one you walk to two. That's\nyou walk to one you walk to two. That's that<00:52:49.920> that's<00:52:50.160> how<00:52:50.240> we<00:52:50.400> can<00:52:50.480> encode<00:52:50.800> that\nthat that's how we can encode that\nthat that's how we can encode that position<00:52:51.200> in<00:52:51.440> the<00:52:51.520> tree<00:52:52.240> here.\nposition in the tree here.\nposition in the tree here. Unsurprisingly<00:52:53.520> one<00:52:53.680> to<00:52:53.839> one<00:52:54.000> to<00:52:54.160> one.\nUnsurprisingly one to one to one.\nUnsurprisingly one to one to one. Now,\nokay,<00:53:00.640> right.<00:53:01.040> One<00:53:01.280> undesirable<00:53:02.079> property<00:53:02.400> of\nokay, right. One undesirable property of\nokay, right. One undesirable property of this<00:53:02.720> is<00:53:02.880> that<00:53:03.040> this<00:53:03.200> is<00:53:03.359> like<00:53:03.520> a<00:53:04.079> variable\nthis is that this is like a variable\nthis is that this is like a variable length<00:53:04.800> encoding<00:53:05.359> of<00:53:05.599> a<00:53:05.760> particular<00:53:06.079> spot<00:53:06.240> in\nlength encoding of a particular spot in\nlength encoding of a particular spot in the<00:53:06.559> tree.<00:53:06.880> You<00:53:07.040> have<00:53:07.200> to<00:53:07.280> store<00:53:07.440> this<00:53:07.680> chain\nthe tree. You have to store this chain\nthe tree. You have to store this chain of<00:53:08.079> walk<00:53:08.720> steps<00:53:09.200> to<00:53:09.520> get<00:53:09.680> from<00:53:09.839> the<00:53:10.000> root<00:53:10.240> node\nof walk steps to get from the root node\nof walk steps to get from the root node down.<00:53:11.359> Um,<00:53:12.720> and<00:53:13.040> so<00:53:13.520> all<00:53:13.760> your<00:53:14.079> ids<00:53:14.319> become\ndown. Um, and so all your ids become\ndown. Um, and so all your ids become variable<00:53:14.880> lengths.<00:53:15.200> Now,<00:53:15.359> obviously<00:53:15.680> you\nvariable lengths. Now, obviously you\nvariable lengths. Now, obviously you could<00:53:16.000> just<00:53:16.160> do<00:53:16.319> that,<00:53:16.800> but<00:53:17.040> I<00:53:17.200> figured<00:53:17.440> I\ncould just do that, but I figured I\ncould just do that, but I figured I would<00:53:17.680> include<00:53:18.000> how<00:53:18.160> you<00:53:18.400> don't<00:53:18.559> do<00:53:18.720> that<00:53:18.880> or\nwould include how you don't do that or\nwould include how you don't do that or how<00:53:19.359> you<00:53:19.520> don't<00:53:19.680> need<00:53:19.839> to<00:53:20.000> do<00:53:20.160> that.<00:53:20.559> Um<00:53:20.880> simple\nhow you don't need to do that. Um simple\nhow you don't need to do that. Um simple way<00:53:21.280> to<00:53:21.440> eliminate<00:53:21.839> that<00:53:22.640> would<00:53:22.960> just<00:53:23.200> be\nway to eliminate that would just be\nway to eliminate that would just be consider<00:53:24.480> first<00:53:24.720> we<00:53:24.960> can<00:53:25.040> consider<00:53:25.359> it<00:53:25.520> as\nconsider first we can consider it as\nconsider first we can consider it as sort<00:53:25.760> of<00:53:25.839> a<00:53:26.079> parent<00:53:27.359> uh<00:53:27.599> ID<00:53:27.920> and<00:53:28.079> then<00:53:28.240> some\nsort of a parent uh ID and then some\nsort of a parent uh ID and then some child<00:53:28.880> ID.<00:53:29.520> Uh<00:53:29.760> so<00:53:29.920> we<00:53:30.079> have<00:53:30.240> some<00:53:30.800> encoding<00:53:31.440> of\nchild ID. Uh so we have some encoding of\nchild ID. Uh so we have some encoding of the<00:53:32.079> walk<00:53:32.480> from<00:53:33.119> uh<00:53:33.359> the<00:53:33.599> walk<00:53:33.760> to<00:53:33.920> the<00:53:34.079> parent\nthe walk from uh the walk to the parent\nthe walk from uh the walk to the parent and<00:53:34.800> then<00:53:34.960> we<00:53:35.359> encode<00:53:35.760> the<00:53:35.920> additional<00:53:36.319> step\nand then we encode the additional step\nand then we encode the additional step that<00:53:36.720> we<00:53:36.880> take<00:53:37.440> at<00:53:37.760> this<00:53:38.000> particular<00:53:38.319> spot<00:53:38.640> by\nthat we take at this particular spot by\nthat we take at this particular spot by saying<00:53:39.119> here's<00:53:39.359> my<00:53:39.599> child<00:53:39.920> index<00:53:40.319> or<00:53:40.559> ID<00:53:40.800> or\nsaying here's my child index or ID or\nsaying here's my child index or ID or whatever.\nSo<00:53:45.119> um<00:53:45.920> this<00:53:46.160> node<00:53:46.480> here<00:53:47.200> uh<00:53:47.359> the<00:53:47.760> the<00:53:48.640> yellow\nSo um this node here uh the the yellow\nSo um this node here uh the the yellow one<00:53:49.680> the<00:53:50.000> one<00:53:50.240> circled<00:53:50.559> in<00:53:50.720> yellow<00:53:51.280> the<00:53:51.520> way<00:53:51.599> we\none the one circled in yellow the way we\none the one circled in yellow the way we define<00:53:52.000> that<00:53:52.160> key<00:53:52.400> is<00:53:52.559> you<00:53:52.720> know<00:53:52.800> we<00:53:52.880> have<00:53:52.960> some\ndefine that key is you know we have some\ndefine that key is you know we have some encoding<00:53:53.440> of<00:53:53.599> the<00:53:53.680> walk<00:53:53.839> to<00:53:54.000> the<00:53:54.160> parent\nencoding of the walk to the parent\nencoding of the walk to the parent unique<00:53:54.880> child<00:53:55.200> ID<00:53:55.920> this<00:53:56.160> one<00:53:56.559> same<00:53:56.880> thing\nunique child ID this one same thing\nunique child ID this one same thing really<00:53:59.359> easy<00:53:59.599> way<00:53:59.680> to<00:53:59.839> do<00:54:00.000> that<00:54:00.400> get<00:54:00.559> a\nreally easy way to do that get a\nreally easy way to do that get a cumulative<00:54:01.200> hash<00:54:01.599> of<00:54:01.839> the<00:54:02.079> walk.<00:54:02.480> So\ncumulative hash of the walk. So\ncumulative hash of the walk. So basically<00:54:03.520> we<00:54:03.760> can<00:54:03.920> start<00:54:04.160> we<00:54:04.400> start<00:54:04.559> with\nbasically we can start we start with\nbasically we can start we start with some<00:54:04.880> default<00:54:05.280> hash<00:54:06.000> and<00:54:06.160> then<00:54:06.400> some<00:54:06.559> some<00:54:06.960> ID\nsome default hash and then some some ID\nsome default hash and then some some ID for<00:54:07.280> the<00:54:07.440> root<00:54:07.680> node<00:54:08.079> and<00:54:08.319> then<00:54:08.480> we<00:54:08.720> hash<00:54:09.040> that\nfor the root node and then we hash that\nfor the root node and then we hash that and<00:54:09.520> that's<00:54:09.680> an<00:54:09.839> encoding<00:54:10.240> of<00:54:10.400> the<00:54:10.559> walk<00:54:10.720> to\nand that's an encoding of the walk to\nand that's an encoding of the walk to the<00:54:11.040> parent<00:54:11.599> recursively.<00:54:12.240> Right?<00:54:12.480> So<00:54:12.960> for<00:54:13.200> so\nthe parent recursively. Right? So for so\nthe parent recursively. Right? So for so for<00:54:13.680> the<00:54:14.400> for<00:54:14.640> the<00:54:14.800> middle<00:54:14.960> one<00:54:15.119> there<00:54:15.359> we<00:54:15.520> hash\nfor the for the middle one there we hash\nfor the for the middle one there we hash the<00:54:16.000> top<00:54:16.160> one<00:54:16.559> we<00:54:16.800> get<00:54:16.880> some<00:54:17.119> ID.<00:54:17.839> Um<00:54:18.880> similarly\nthe top one we get some ID. Um similarly\nthe top one we get some ID. Um similarly oh<00:54:20.079> my<00:54:20.240> gosh<00:54:21.200> this<00:54:21.440> thing<00:54:21.760> sticks.\noh my gosh this thing sticks.\noh my gosh this thing sticks. Okay.\nOkay.\nOkay. Okay.<00:54:26.880> All<00:54:26.880> right.<00:54:27.200> All<00:54:27.200> right.<00:54:27.520> All<00:54:27.520> right.\nOkay. All right. All right. All right.\nOkay. All right. All right. All right. That<00:54:29.760> one\nThat one\nThat one ignore<00:54:32.160> everything<00:54:32.480> you<00:54:32.640> just<00:54:32.880> saw.<00:54:33.920> Um<00:54:34.319> that\nignore everything you just saw. Um that\nignore everything you just saw. Um that one<00:54:34.800> you<00:54:34.880> know<00:54:34.960> you<00:54:35.119> hash<00:54:35.359> the<00:54:35.520> parent<00:54:35.920> and<00:54:36.160> so\none you know you hash the parent and so\none you know you hash the parent and so on.<00:54:36.559> Right.\non. Right.\non. Right. So<00:54:38.319> then<00:54:38.720> because<00:54:39.040> you<00:54:39.280> can<00:54:39.440> have<00:54:39.520> these<00:54:39.760> like\nSo then because you can have these like\nSo then because you can have these like sort<00:54:40.079> of<00:54:40.160> unique<00:54:40.480> keys,<00:54:41.119> it's<00:54:41.280> pretty<00:54:41.440> easy<00:54:41.599> at\nsort of unique keys, it's pretty easy at\nsort of unique keys, it's pretty easy at that<00:54:41.920> point<00:54:42.079> to<00:54:42.319> have<00:54:42.480> a<00:54:42.640> sparse<00:54:43.200> data\nthat point to have a sparse data\nthat point to have a sparse data structure<00:54:43.760> that's<00:54:44.079> like<00:54:44.480> look,<00:54:44.720> we're<00:54:44.880> only\nstructure that's like look, we're only\nstructure that's like look, we're only talking<00:54:45.280> about<00:54:45.359> the<00:54:45.599> hashes<00:54:45.920> that<00:54:46.160> have\ntalking about the hashes that have\ntalking about the hashes that have actually<00:54:46.559> the<00:54:46.800> hashes<00:54:47.040> and<00:54:47.359> ids<00:54:47.599> that<00:54:47.680> have\nactually the hashes and ids that have\nactually the hashes and ids that have actually<00:54:48.160> been<00:54:48.319> expanded.<00:54:49.280> Um<00:54:50.240> and<00:54:50.400> then<00:54:50.559> you\nactually been expanded. Um and then you\nactually been expanded. Um and then you can<00:54:50.960> actually<00:54:51.520> uh<00:54:51.920> you<00:54:52.079> know<00:54:52.319> look<00:54:52.480> it<00:54:52.640> up<00:54:52.800> and\ncan actually uh you know look it up and\ncan actually uh you know look it up and produce<00:54:53.119> the<00:54:53.280> block<00:54:53.520> tree,<00:54:53.839> right?<00:54:54.800> So<00:54:54.960> let's\nproduce the block tree, right? So let's\nproduce the block tree, right? So let's zoom<00:54:55.440> back<00:54:55.599> out.<00:54:56.480> Start<00:54:56.640> with<00:54:56.800> an<00:54:56.960> evaluation\nzoom back out. Start with an evaluation\nzoom back out. Start with an evaluation which<00:54:58.160> again<00:54:58.480> that's<00:54:58.640> produced<00:54:58.960> by<00:54:59.119> the\nwhich again that's produced by the\nwhich again that's produced by the compiler<00:54:59.680> by<00:54:59.839> the<00:55:00.000> debuggers<00:55:00.480> compiler.\ncompiler by the debuggers compiler.\ncompiler by the debuggers compiler. Um<00:55:03.359> using<00:55:03.680> the<00:55:03.920> expansion<00:55:04.400> state<00:55:04.720> you<00:55:04.880> can\nUm using the expansion state you can\nUm using the expansion state you can produce<00:55:05.200> a<00:55:05.440> block<00:55:05.680> tree.\nproduce a block tree.\nproduce a block tree. Um<00:55:09.200> a<00:55:09.440> block<00:55:09.760> tree<00:55:10.079> can<00:55:10.400> be<00:55:10.559> used<00:55:10.800> to<00:55:11.040> produce<00:55:11.280> a\nUm a block tree can be used to produce a\nUm a block tree can be used to produce a list<00:55:11.680> of<00:55:12.000> pairs.<00:55:12.400> You<00:55:12.559> can<00:55:12.640> think<00:55:12.800> of<00:55:12.880> it<00:55:13.440> uh\nlist of pairs. You can think of it uh\nlist of pairs. You can think of it uh you<00:55:13.839> know<00:55:14.079> each<00:55:14.319> pair<00:55:14.559> containing<00:55:14.960> you've<00:55:15.119> got\nyou know each pair containing you've got\nyou know each pair containing you've got some<00:55:15.520> block<00:55:15.760> and<00:55:15.920> then<00:55:16.079> some<00:55:16.319> range<00:55:16.640> within\nsome block and then some range within\nsome block and then some range within that<00:55:17.200> block.\nthat block.\nthat block. Um<00:55:19.280> so<00:55:19.440> that<00:55:19.680> would<00:55:19.839> be<00:55:19.920> like<00:55:20.240> you<00:55:20.319> know<00:55:20.400> the<00:55:20.640> W\nUm so that would be like you know the W\nUm so that would be like you know the W pre<00:55:22.079> and<00:55:22.240> so<00:55:22.480> on.<00:55:23.040> That<00:55:23.280> would<00:55:23.359> be<00:55:23.520> like<00:55:23.920> that\npre and so on. That would be like that\npre and so on. That would be like that step.<00:55:25.440> And<00:55:25.599> so<00:55:25.839> that<00:55:26.079> forms<00:55:26.480> like<00:55:26.640> the<00:55:26.880> linear\nstep. And so that forms like the linear\nstep. And so that forms like the linear sequence<00:55:27.440> of<00:55:27.520> blocks<00:55:27.839> right?<00:55:28.079> got<00:55:28.240> like<00:55:28.559> these\nsequence of blocks right? got like these\nsequence of blocks right? got like these rows<00:55:29.119> and<00:55:29.200> these<00:55:29.520> rows<00:55:29.599> and<00:55:29.760> these<00:55:30.000> rows<00:55:30.160> and\nrows and these rows and these rows and\nrows and these rows and these rows and these<00:55:30.559> rows<00:55:31.040> and<00:55:31.359> you're<00:55:31.680> not<00:55:31.839> doing<00:55:32.400> per<00:55:32.800> row\nthese rows and you're not doing per row\nthese rows and you're not doing per row work<00:55:33.119> anymore.<00:55:34.000> And<00:55:34.240> finally,<00:55:35.680> remember<00:55:36.400> that\nwork anymore. And finally, remember that\nwork anymore. And finally, remember that we<00:55:36.800> have<00:55:36.960> a<00:55:37.119> way<00:55:37.280> to<00:55:37.359> take<00:55:37.520> an<00:55:37.680> evaluation<00:55:38.400> and\nwe have a way to take an evaluation and\nwe have a way to take an evaluation and given<00:55:38.960> some<00:55:39.119> range<00:55:39.359> under<00:55:39.599> that<00:55:39.760> evaluation,\ngiven some range under that evaluation,\ngiven some range under that evaluation, we<00:55:40.480> can<00:55:40.640> expand<00:55:40.960> it<00:55:41.200> to<00:55:41.440> all<00:55:41.520> the<00:55:41.680> children\nwe can expand it to all the children\nwe can expand it to all the children evaluations.\nevaluations.\nevaluations. So\nSo\nSo with<00:55:46.800> that<00:55:46.960> list,<00:55:47.200> you<00:55:47.359> can<00:55:47.520> produce<00:55:47.680> a<00:55:47.839> final\nwith that list, you can produce a final\nwith that list, you can produce a final list<00:55:48.319> of<00:55:48.880> row<00:55:49.040> evaluations.<00:55:49.599> Right?<00:55:49.839> That's\nlist of row evaluations. Right? That's\nlist of row evaluations. Right? That's how<00:55:50.160> you<00:55:50.640> with<00:55:50.880> the<00:55:51.119> global<00:55:51.440> viewing<00:55:51.839> range\nhow you with the global viewing range\nhow you with the global viewing range you<00:55:52.319> can<00:55:52.480> you<00:55:52.720> can<00:55:52.799> use<00:55:53.040> that<00:55:53.280> together<00:55:53.599> with\nyou can you can use that together with\nyou can you can use that together with the<00:55:53.839> list.<00:55:54.079> This<00:55:54.240> is<00:55:54.319> the<00:55:54.480> windowing<00:55:54.880> step.\nthe list. This is the windowing step.\nthe list. This is the windowing step. you<00:55:55.440> get<00:55:55.520> the<00:55:55.760> list<00:55:55.839> of<00:55:56.000> actual<00:55:56.400> evaluations\nyou get the list of actual evaluations\nyou get the list of actual evaluations that<00:55:57.119> you<00:55:57.280> can<00:55:57.359> use<00:55:57.520> for<00:55:57.680> all<00:55:57.839> the<00:55:58.079> rows<00:55:58.480> that\nthat you can use for all the rows that\nthat you can use for all the rows that are<00:55:58.880> visibly<00:55:59.359> available<00:56:00.160> in<00:56:00.400> the<00:56:00.559> watch<00:56:00.880> tree.\nare visibly available in the watch tree.\nare visibly available in the watch tree. So<00:56:03.280> let's<00:56:03.520> take<00:56:03.599> a<00:56:03.760> step<00:56:03.920> back,<00:56:04.319> think<00:56:04.480> about\nSo let's take a step back, think about\nSo let's take a step back, think about what<00:56:04.799> this<00:56:05.040> actually<00:56:05.200> gets<00:56:05.440> us<00:56:06.799> in<00:56:07.040> terms<00:56:07.200> of\nwhat this actually gets us in terms of\nwhat this actually gets us in terms of like<00:56:07.599> our<00:56:07.839> overall<00:56:08.160> goal,<00:56:08.480> right?<00:56:09.040> Our<00:56:09.359> idea,\nlike our overall goal, right? Our idea,\nlike our overall goal, right? Our idea, we<00:56:09.920> want<00:56:10.079> to<00:56:10.160> accelerate<00:56:10.559> visualization.\nwe want to accelerate visualization.\nwe want to accelerate visualization. What<00:56:11.359> is<00:56:11.440> this?<00:56:11.680> What<00:56:11.839> does<00:56:12.079> all<00:56:12.319> that<00:56:13.040> crap\nWhat is this? What does all that crap\nWhat is this? What does all that crap actually<00:56:13.680> get<00:56:13.920> us?\nactually get us?\nactually get us? So<00:56:17.359> I've<00:56:17.680> covered<00:56:18.160> almost<00:56:18.480> all<00:56:18.640> the<00:56:18.799> steps\nSo I've covered almost all the steps\nSo I've covered almost all the steps besides<00:56:20.079> the<00:56:20.240> UI<00:56:20.960> part\nbesides the UI part\nbesides the UI part um<00:56:22.880> that<00:56:23.200> you<00:56:23.359> would<00:56:23.520> need<00:56:23.760> in<00:56:24.000> order<00:56:24.079> to<00:56:24.319> build\num that you would need in order to build\num that you would need in order to build like<00:56:25.040> this<00:56:25.440> kind<00:56:25.599> of<00:56:25.760> watch<00:56:26.079> window\nlike this kind of watch window\nlike this kind of watch window structure.\nstructure.\nstructure. Uh<00:56:28.799> so<00:56:28.960> this<00:56:29.119> is<00:56:29.200> like<00:56:29.280> a<00:56:29.440> fully<00:56:29.760> windowed<00:56:30.160> one.\nUh so this is like a fully windowed one.\nUh so this is like a fully windowed one. We<00:56:30.480> only<00:56:30.640> evaluate<00:56:31.119> what<00:56:31.280> we<00:56:31.359> need.<00:56:31.599> We<00:56:31.760> don't\nWe only evaluate what we need. We don't\nWe only evaluate what we need. We don't pull<00:56:32.000> in<00:56:32.240> memory<00:56:32.480> that's<00:56:32.720> not<00:56:32.880> visible.<00:56:33.359> None\npull in memory that's not visible. None\npull in memory that's not visible. None of<00:56:33.680> that<00:56:33.839> happens.\nof that happens.\nof that happens. Um<00:56:36.640> and<00:56:36.880> then<00:56:37.040> obviously<00:56:37.359> we<00:56:37.599> visualize\nUm and then obviously we visualize\nUm and then obviously we visualize everything<00:56:38.319> textually.<00:56:39.119> We've<00:56:39.280> got<00:56:39.359> a<00:56:39.520> strct.\neverything textually. We've got a strct.\neverything textually. We've got a strct. You've<00:56:40.079> got<00:56:40.640> members<00:56:41.040> of<00:56:41.280> the<00:56:41.520> strct.<00:56:42.000> Some<00:56:42.160> of\nYou've got members of the strct. Some of\nYou've got members of the strct. Some of them<00:56:42.400> are<00:56:42.480> integers.<00:56:42.960> Some<00:56:43.040> of<00:56:43.119> them<00:56:43.200> are\nthem are integers. Some of them are\nthem are integers. Some of them are strrus.<00:56:44.079> whenever<00:56:44.400> we<00:56:44.480> we<00:56:44.799> show<00:56:44.960> the<00:56:45.119> textual\nstrrus. whenever we we show the textual\nstrrus. whenever we we show the textual representation<00:56:46.720> and<00:56:46.960> that's<00:56:47.119> great.<00:56:47.359> We<00:56:47.599> can\nrepresentation and that's great. We can\nrepresentation and that's great. We can dig<00:56:47.839> into<00:56:48.000> anything<00:56:48.240> the<00:56:48.480> debugger<00:56:48.880> can\ndig into anything the debugger can\ndig into anything the debugger can evaluate<00:56:49.520> using<00:56:49.760> its<00:56:50.079> compiler<00:56:50.799> this<00:56:51.040> way.\nevaluate using its compiler this way.\nevaluate using its compiler this way. We've<00:56:51.599> done<00:56:51.760> sort<00:56:51.920> of<00:56:52.000> a<00:56:52.480> general\nWe've done sort of a general\nWe've done sort of a general textualization<00:56:54.000> case,<00:56:55.200> but<00:56:56.400> in<00:56:56.559> a<00:56:56.720> sense<00:56:57.599> all\ntextualization case, but in a sense all\ntextualization case, but in a sense all that<00:56:58.000> is<00:56:58.880> we've<00:56:59.200> kind<00:56:59.280> of<00:56:59.359> just<00:56:59.520> accelerated\nthat is we've kind of just accelerated\nthat is we've kind of just accelerated print<00:57:00.319> f<00:57:00.960> print<00:57:01.200> f<00:57:01.359> debugging.\nprint f print f debugging.\nprint f print f debugging. We've<00:57:03.359> kind<00:57:03.520> of<00:57:03.599> just<00:57:03.760> produced<00:57:04.160> a<00:57:04.480> typeaware\nWe've kind of just produced a typeaware\nWe've kind of just produced a typeaware version,<00:57:06.240> right?<00:57:06.480> So<00:57:06.559> in<00:57:06.880> C<00:57:07.440> it's<00:57:07.760> really\nversion, right? So in C it's really\nversion, right? So in C it's really stupid.<00:57:08.559> You<00:57:08.880> have<00:57:09.040> to<00:57:09.200> sort<00:57:09.359> of<00:57:09.520> just<00:57:09.680> say\nstupid. You have to sort of just say\nstupid. You have to sort of just say like<00:57:10.559> have<00:57:10.720> to<00:57:10.880> remember<00:57:11.040> the<00:57:11.200> type<00:57:11.359> info<00:57:11.760> and\nlike have to remember the type info and\nlike have to remember the type info and say<00:57:12.160> well<00:57:12.400> I'm<00:57:12.559> going<00:57:12.640> to<00:57:12.720> log<00:57:12.960> the<00:57:13.119> strct.\nsay well I'm going to log the strct.\nsay well I'm going to log the strct. I've<00:57:13.599> got<00:57:13.680> a<00:57:13.760> print<00:57:14.079> defaf<00:57:14.559> hitter<00:57:15.200> like<00:57:15.440> in\nI've got a print defaf hitter like in\nI've got a print defaf hitter like in this<00:57:15.680> case<00:57:15.839> I'm<00:57:16.000> at<00:57:16.160> my<00:57:16.319> hit<00:57:16.559> entity<00:57:16.880> code\nthis case I'm at my hit entity code\nthis case I'm at my hit entity code path.<00:57:17.359> I've<00:57:17.520> got<00:57:17.920> hitter<00:57:18.720> id.<00:57:18.880> I've<00:57:19.040> got<00:57:19.119> to\npath. I've got hitter id. I've got to\npath. I've got hitter id. I've got to log<00:57:19.440> that<00:57:19.680> hitter.parent.<00:57:20.480> I'm<00:57:20.640> just<00:57:20.799> like\nlog that hitter.parent. I'm just like\nlog that hitter.parent. I'm just like duplicating<00:57:21.440> the<00:57:21.599> type<00:57:21.839> info<00:57:22.160> at<00:57:22.319> this<00:57:22.480> point\nduplicating the type info at this point\nduplicating the type info at this point and<00:57:23.280> I've<00:57:23.440> just<00:57:23.599> got<00:57:23.680> to<00:57:23.839> remember<00:57:24.079> how<00:57:24.240> to<00:57:24.319> do\nand I've just got to remember how to do\nand I've just got to remember how to do that.<00:57:24.559> Or<00:57:24.720> maybe<00:57:24.880> I<00:57:25.040> just<00:57:25.200> narrow<00:57:25.520> down<00:57:25.680> to<00:57:25.760> the\nthat. Or maybe I just narrow down to the\nthat. Or maybe I just narrow down to the subset<00:57:26.240> that<00:57:26.400> I<00:57:26.559> want.<00:57:26.799> Whatever.<00:57:28.160> Um,<00:57:28.880> you\nsubset that I want. Whatever. Um, you\nsubset that I want. Whatever. Um, you know,<00:57:29.119> in<00:57:29.280> a<00:57:29.440> better<00:57:29.599> language,<00:57:30.000> maybe<00:57:30.160> it'd\nknow, in a better language, maybe it'd\nknow, in a better language, maybe it'd look<00:57:30.559> more<00:57:30.720> like<00:57:30.880> that.<00:57:31.280> You<00:57:31.440> know,<00:57:31.520> you've\nlook more like that. You know, you've\nlook more like that. You know, you've got<00:57:31.839> print<00:57:32.160> f<00:57:32.400> and<00:57:32.640> then<00:57:33.280> uh<00:57:33.520> hitter.<00:57:34.000> Maybe\ngot print f and then uh hitter. Maybe\ngot print f and then uh hitter. Maybe it's<00:57:34.319> not<00:57:34.480> even<00:57:34.720> f.<00:57:35.040> I<00:57:35.119> don't<00:57:35.280> know.<00:57:35.680> You<00:57:35.839> know,\nit's not even f. I don't know. You know,\nit's not even f. I don't know. You know, hitter<00:57:36.559> and<00:57:36.799> then<00:57:37.200> percent<00:57:37.599> and<00:57:37.760> then<00:57:37.920> you<00:57:38.000> can\nhitter and then percent and then you can\nhitter and then percent and then you can just<00:57:38.240> pass<00:57:38.480> the<00:57:38.640> strruct.<00:57:39.040> Maybe<00:57:39.200> it<00:57:39.359> should\njust pass the strruct. Maybe it should\njust pass the strruct. Maybe it should just<00:57:39.680> be<00:57:39.760> aware<00:57:40.000> of<00:57:40.079> the<00:57:40.240> type<00:57:40.480> info<00:57:41.520> uh\njust be aware of the type info uh\njust be aware of the type info uh somehow.<00:57:42.079> Obviously<00:57:42.480> not<00:57:42.640> the<00:57:42.799> true<00:57:43.280> uh<00:57:43.359> not\nsomehow. Obviously not the true uh not\nsomehow. Obviously not the true uh not not<00:57:43.760> the<00:57:43.920> case<00:57:44.079> in<00:57:44.319> C<00:57:44.559> but<00:57:45.760> point<00:57:46.079> being<00:57:46.720> the\nnot the case in C but point being the\nnot the case in C but point being the watch<00:57:47.200> window<00:57:47.680> effectively<00:57:48.160> provides<00:57:48.480> an\nwatch window effectively provides an\nwatch window effectively provides an accelerated<00:57:49.280> version<00:57:49.440> of<00:57:49.599> that.<00:57:50.240> Um<00:57:50.720> now<00:57:50.880> the\naccelerated version of that. Um now the\naccelerated version of that. Um now the watch<00:57:51.200> window<00:57:51.520> offers<00:57:51.839> some<00:57:52.079> pretty<00:57:52.240> big\nwatch window offers some pretty big\nwatch window offers some pretty big improvements<00:57:53.359> right<00:57:53.680> the<00:57:54.000> ability<00:57:54.240> to\nimprovements right the ability to\nimprovements right the ability to interact<00:57:54.720> with<00:57:54.880> the<00:57:55.040> data.<00:57:55.280> You<00:57:55.440> can<00:57:55.520> write<00:57:55.760> to\ninteract with the data. You can write to\ninteract with the data. You can write to the<00:57:56.079> data.<00:57:56.720> Um<00:57:57.359> you<00:57:57.599> can<00:57:58.000> dynamically<00:57:58.640> expand\nthe data. Um you can dynamically expand\nthe data. Um you can dynamically expand or<00:57:59.119> collapse<00:57:59.520> parts<00:57:59.760> of<00:57:59.839> the<00:58:00.079> data.<00:58:00.960> Um<00:58:01.440> it\nor collapse parts of the data. Um it\nor collapse parts of the data. Um it only<00:58:01.839> pays<00:58:02.079> the<00:58:02.240> cost<00:58:02.400> for<00:58:02.559> what<00:58:02.720> is<00:58:02.880> visible.\nonly pays the cost for what is visible.\nonly pays the cost for what is visible. You<00:58:03.440> don't<00:58:03.599> have<00:58:03.680> to<00:58:03.839> literally<00:58:04.160> log\nYou don't have to literally log\nYou don't have to literally log everything<00:58:04.799> and<00:58:05.040> then<00:58:05.359> hunt<00:58:05.599> through<00:58:05.839> it.<00:58:06.559> Um\neverything and then hunt through it. Um\neverything and then hunt through it. Um and<00:58:08.079> you<00:58:08.240> can<00:58:08.319> also<00:58:08.559> like<00:58:08.720> interactively<00:58:10.000> go\nand you can also like interactively go\nand you can also like interactively go to<00:58:10.319> other<00:58:10.559> parts.<00:58:10.720> So<00:58:10.799> you<00:58:10.960> can<00:58:11.040> evaluate<00:58:11.520> as\nto other parts. So you can evaluate as\nto other parts. So you can evaluate as you<00:58:11.920> need<00:58:12.400> instead<00:58:12.720> of<00:58:12.799> having<00:58:13.040> to<00:58:13.200> evaluate\nyou need instead of having to evaluate\nyou need instead of having to evaluate everything<00:58:14.799> and<00:58:15.119> print<00:58:15.359> it<00:58:15.520> and<00:58:15.760> log<00:58:16.000> it.<00:58:16.880> Um\neverything and print it and log it. Um\neverything and print it and log it. Um and<00:58:17.839> then<00:58:18.000> and<00:58:18.240> then<00:58:18.480> you<00:58:18.640> know<00:58:18.799> search\nand then and then you know search\nand then and then you know search through<00:58:19.200> the<00:58:19.359> sea<00:58:19.520> of<00:58:19.680> log<00:58:20.240> that<00:58:20.480> you<00:58:20.640> get.<00:58:21.680> Um\nthrough the sea of log that you get. Um\nthrough the sea of log that you get. Um so<00:58:24.079> eliminates<00:58:24.559> the<00:58:24.720> code<00:58:24.880> modification\nso eliminates the code modification\nso eliminates the code modification step,<00:58:25.839> eliminates<00:58:26.240> the<00:58:26.319> build,<00:58:26.640> eliminates\nstep, eliminates the build, eliminates\nstep, eliminates the build, eliminates the<00:58:27.200> run,<00:58:27.599> eliminates<00:58:28.000> the<00:58:28.160> recreate<00:58:28.559> state.\nthe run, eliminates the recreate state.\nthe run, eliminates the recreate state. So<00:58:30.960> but<00:58:32.400> we<00:58:32.720> already<00:58:33.040> know\nSo but we already know\nSo but we already know that<00:58:35.040> text<00:58:35.280> is<00:58:35.440> insufficient.<00:58:36.799> So,\nthat text is insufficient. So,\nthat text is insufficient. So, um,<00:58:39.520> how<00:58:39.680> can<00:58:39.839> we<00:58:39.920> push<00:58:40.160> it<00:58:40.240> further<00:58:41.200> to\num, how can we push it further to\num, how can we push it further to support,<00:58:42.079> uh,<00:58:42.240> non-extual<00:58:43.119> visualizers<00:58:43.680> as\nsupport, uh, non-extual visualizers as\nsupport, uh, non-extual visualizers as well?<00:58:45.280> No,<00:58:45.599> no,<00:58:45.839> no,<00:58:46.079> no,<00:58:46.480> no.\nwell? No, no, no, no, no.\nwell? No, no, no, no, no. I'm<00:58:48.240> really<00:58:48.480> bad<00:58:48.640> with<00:58:48.799> this<00:58:49.040> thing.<00:58:50.079> Um,\nokay.<00:58:54.720> So,<00:58:55.280> let's<00:58:55.599> consider<00:58:55.839> a<00:58:56.079> basic<00:58:56.319> case<00:58:56.720> of\nokay. So, let's consider a basic case of\nokay. So, let's consider a basic case of visualization,<00:58:57.920> right?<00:58:58.160> Instead<00:58:58.400> of<00:58:58.559> single\nvisualization, right? Instead of single\nvisualization, right? Instead of single line<00:58:59.040> text,<00:58:59.359> we've<00:58:59.520> got<00:58:59.680> multi-line<00:59:00.319> text.\nline text, we've got multi-line text.\nline text, we've got multi-line text. So,<00:59:01.680> in<00:59:01.839> this<00:59:02.079> in<00:59:02.319> this<00:59:02.559> case,<00:59:03.200> I've<00:59:03.440> got<00:59:03.599> some\nSo, in this in this case, I've got some\nSo, in this in this case, I've got some like<00:59:04.000> shader<00:59:04.319> blob.<00:59:04.559> I've<00:59:04.880> got<00:59:05.040> some<00:59:05.440> some\nlike shader blob. I've got some some\nlike shader blob. I've got some some shader<00:59:06.319> program<00:59:06.640> text<00:59:06.880> that<00:59:07.119> I'm<00:59:07.280> evaluating.\nshader program text that I'm evaluating.\nshader program text that I'm evaluating. Um,<00:59:09.200> and<00:59:09.440> our<00:59:09.680> watch<00:59:10.000> our<00:59:10.160> watch<00:59:10.400> window<00:59:10.720> kind\nUm, and our watch our watch window kind\nUm, and our watch our watch window kind of<00:59:10.880> just<00:59:11.040> like<00:59:11.280> shows<00:59:11.440> this.<00:59:11.680> You<00:59:11.839> like<00:59:12.000> get\nof just like shows this. You like get\nof just like shows this. You like get the<00:59:12.319> string.<00:59:12.559> You're<00:59:12.720> like,<00:59:12.880> here's<00:59:13.119> my\nthe string. You're like, here's my\nthe string. You're like, here's my pointer<00:59:13.520> to<00:59:13.680> the<00:59:13.760> string<00:59:14.000> data.<00:59:14.400> You<00:59:14.559> expand\npointer to the string data. You expand\npointer to the string data. You expand it<00:59:15.040> and<00:59:15.200> it's<00:59:15.359> like,<00:59:15.599> oh,<00:59:16.079> like<00:59:16.319> that's<00:59:17.520> like\nit and it's like, oh, like that's like\nit and it's like, oh, like that's like pretty<00:59:18.000> good.<00:59:18.400> Like<00:59:18.559> I<00:59:18.799> can<00:59:18.880> see<00:59:19.040> the\npretty good. Like I can see the\npretty good. Like I can see the characters<00:59:19.680> or<00:59:19.839> whatever<00:59:20.160> if<00:59:20.319> they're<00:59:20.480> asky.\ncharacters or whatever if they're asky.\ncharacters or whatever if they're asky. You<00:59:21.040> know,<00:59:21.119> it<00:59:21.280> doesn't<00:59:21.359> even<00:59:21.520> support<00:59:21.760> UTF8.\nYou know, it doesn't even support UTF8.\nYou know, it doesn't even support UTF8. I<00:59:23.040> don't<00:59:23.200> really<00:59:23.520> want<00:59:23.680> to<00:59:23.839> look<00:59:23.920> at<00:59:24.079> this<00:59:24.240> if\nI don't really want to look at this if\nI don't really want to look at this if I'm<00:59:24.559> like,<00:59:24.799> what's<00:59:25.119> this<00:59:25.280> string?<00:59:25.839> You<00:59:26.000> know,\nI'm like, what's this string? You know,\nI'm like, what's this string? You know, that's<00:59:26.400> bad.\nthat's bad.\nthat's bad. Now,<00:59:28.400> one<00:59:28.559> potential<00:59:29.200> al<00:59:29.200> alternative<00:59:29.760> is\nNow, one potential al alternative is\nNow, one potential al alternative is like<00:59:30.559> hex<00:59:30.799> editor,<00:59:31.200> right?<00:59:31.440> Memory<00:59:31.839> view<00:59:32.240> kind\nlike hex editor, right? Memory view kind\nlike hex editor, right? Memory view kind of<00:59:32.559> thing.<00:59:33.200> Um,<00:59:33.599> and<00:59:33.760> this<00:59:33.920> is<00:59:34.079> often<00:59:34.319> actually\nof thing. Um, and this is often actually\nof thing. Um, and this is often actually good<00:59:34.880> for<00:59:34.960> this.<00:59:35.200> Like<00:59:35.280> if<00:59:35.440> you're<00:59:35.520> writing<00:59:35.680> a\ngood for this. Like if you're writing a\ngood for this. Like if you're writing a parser<00:59:36.240> or<00:59:36.480> something,<00:59:36.720> you<00:59:36.880> can<00:59:37.040> like<00:59:37.839> look\nparser or something, you can like look\nparser or something, you can like look at<00:59:38.160> the<00:59:38.319> data<00:59:38.559> this<00:59:38.720> way.<00:59:38.960> You<00:59:39.040> can<00:59:39.200> you<00:59:39.440> can,\nat the data this way. You can you can,\nat the data this way. You can you can, you<00:59:39.839> know,<00:59:40.079> position<00:59:40.400> your<00:59:40.640> cursor<00:59:41.040> maybe<00:59:41.280> at\nyou know, position your cursor maybe at\nyou know, position your cursor maybe at where<00:59:42.000> the<00:59:42.160> the<00:59:42.480> parsing<00:59:42.880> iterator<00:59:43.280> is<00:59:43.520> or\nwhere the the parsing iterator is or\nwhere the the parsing iterator is or something.<00:59:43.920> So<00:59:44.079> you<00:59:44.240> can<00:59:44.400> see<00:59:44.559> like<00:59:44.799> how<00:59:45.040> it's\nsomething. So you can see like how it's\nsomething. So you can see like how it's treating<00:59:45.599> maybe<00:59:45.920> usually<00:59:46.319> invisible\ntreating maybe usually invisible\ntreating maybe usually invisible characters<00:59:47.280> like<00:59:47.440> new<00:59:47.680> lines<00:59:47.920> or<00:59:48.160> whatever.\ncharacters like new lines or whatever.\ncharacters like new lines or whatever. Um,<00:59:49.440> so<00:59:49.839> this<00:59:50.000> isn't<00:59:50.319> like\nUm, so this isn't like\nUm, so this isn't like uh<00:59:53.520> it's<00:59:53.839> not<00:59:54.079> useless<00:59:54.559> to<00:59:54.720> to<00:59:55.040> look<00:59:55.200> at<00:59:55.280> it\nuh it's not useless to to look at it\nuh it's not useless to to look at it this<00:59:55.680> way.<00:59:56.559> Um,<00:59:57.119> but<00:59:57.280> more<00:59:57.520> often<00:59:57.760> than<00:59:57.920> not,\nthis way. Um, but more often than not,\nthis way. Um, but more often than not, if<00:59:58.319> you're<00:59:58.559> working<00:59:58.799> with<00:59:59.119> textual<00:59:59.599> data,\nif you're working with textual data,\nif you're working with textual data, what<01:00:00.480> you'd<01:00:00.799> really<01:00:01.040> actually<01:00:01.359> prefer<01:00:02.400> is\nwhat you'd really actually prefer is\nwhat you'd really actually prefer is like<01:00:02.880> an<01:00:03.119> actual<01:00:03.520> visual,<01:00:03.920> like<01:00:04.160> just<01:00:04.400> show<01:00:04.559> me\nlike an actual visual, like just show me\nlike an actual visual, like just show me the<01:00:04.960> text.<01:00:05.440> You<01:00:05.520> know<01:00:05.599> what<01:00:05.680> I<01:00:05.839> mean?<01:00:06.640> Um,<01:00:07.359> you\nthe text. You know what I mean? Um, you\nthe text. You know what I mean? Um, you kind<01:00:07.680> of<01:00:07.760> want<01:00:07.920> to<01:00:08.000> just<01:00:08.160> treat<01:00:08.240> it<01:00:08.400> like<01:00:08.480> a\nkind of want to just treat it like a\nkind of want to just treat it like a text<01:00:08.880> file<01:00:09.280> like<01:00:09.440> that.\ntext file like that.\ntext file like that. So,<01:00:12.799> I<01:00:13.040> mean,<01:00:13.200> all<01:00:13.359> three<01:00:13.520> of<01:00:13.599> these\nSo, I mean, all three of these\nSo, I mean, all three of these visualizers<01:00:14.799> might<01:00:14.960> be<01:00:15.119> useful<01:00:15.359> at<01:00:15.520> different\nvisualizers might be useful at different\nvisualizers might be useful at different times.<01:00:16.160> One<01:00:16.319> on<01:00:16.480> the<01:00:16.640> left<01:00:16.960> kind<01:00:17.119> of<01:00:17.200> the<01:00:17.359> odd\ntimes. One on the left kind of the odd\ntimes. One on the left kind of the odd one<01:00:17.680> out<01:00:18.000> kind<01:00:18.160> of<01:00:18.240> sucks<01:00:19.040> usually.<01:00:19.839> Um,<01:00:20.240> not\none out kind of sucks usually. Um, not\none out kind of sucks usually. Um, not not<01:00:20.720> universally.<01:00:21.280> You<01:00:21.440> know,<01:00:21.599> maybe<01:00:21.839> you<01:00:21.920> can\nnot universally. You know, maybe you can\nnot universally. You know, maybe you can imagine<01:00:22.319> the<01:00:22.480> case,<01:00:22.640> but<01:00:22.880> point<01:00:23.119> is<01:00:23.839> all<01:00:24.079> three\nimagine the case, but point is all three\nimagine the case, but point is all three of<01:00:24.400> these<01:00:24.880> different<01:00:25.200> ways<01:00:25.440> of<01:00:25.680> looking<01:00:25.839> at\nof these different ways of looking at\nof these different ways of looking at the<01:00:26.240> same<01:00:26.480> data.<01:00:27.760> Um,<01:00:28.240> same<01:00:28.480> data,<01:00:29.040> same<01:00:29.280> type,\nthe same data. Um, same data, same type,\nthe same data. Um, same data, same type, same<01:00:30.160> format,<01:00:30.880> different<01:00:31.200> visualizations.\nsame format, different visualizations.\nsame format, different visualizations. And<01:00:32.240> importantly,<01:00:33.280> the<01:00:33.520> user's<01:00:33.920> got<01:00:34.000> to<01:00:34.160> be\nAnd importantly, the user's got to be\nAnd importantly, the user's got to be able<01:00:34.400> to<01:00:34.480> choose<01:00:35.119> like<01:00:35.440> as<01:00:35.599> the<01:00:35.760> debugger,\nable to choose like as the debugger,\nable to choose like as the debugger, we've<01:00:36.400> got<01:00:36.480> to<01:00:36.559> provide<01:00:36.720> the<01:00:36.960> the<01:00:37.280> ability<01:00:37.920> for\nwe've got to provide the the ability for\nwe've got to provide the the ability for the<01:00:38.319> user<01:00:38.640> to<01:00:38.880> pick<01:00:39.280> between<01:00:39.520> these<01:00:39.839> three\nthe user to pick between these three\nthe user to pick between these three things.<01:00:40.400> We<01:00:40.640> can't<01:00:40.960> enforce<01:00:41.359> it<01:00:41.520> on<01:00:41.760> them,<01:00:42.799> you\nthings. We can't enforce it on them, you\nthings. We can't enforce it on them, you know,<01:00:43.359> given<01:00:43.599> the<01:00:43.760> type<01:00:43.920> info<01:00:44.240> or<01:00:44.480> something.\nknow, given the type info or something.\nknow, given the type info or something. Um,<01:00:47.920> okay.<01:00:48.720> So,<01:00:50.000> so<01:00:50.160> far<01:00:50.319> I've<01:00:50.559> covered<01:00:50.720> these\nUm, okay. So, so far I've covered these\nUm, okay. So, so far I've covered these three<01:00:51.200> steps.<01:00:52.000> We've<01:00:52.240> got<01:00:52.319> the<01:00:52.480> compiler,<01:00:53.440> got\nthree steps. We've got the compiler, got\nthree steps. We've got the compiler, got the<01:00:53.839> interpreter,<01:00:54.640> uh,<01:00:54.720> and<01:00:54.960> then<01:00:55.040> we've<01:00:55.280> got\nthe interpreter, uh, and then we've got\nthe interpreter, uh, and then we've got the<01:00:55.760> or,<01:00:56.160> you<01:00:56.319> know,<01:00:56.400> or<01:00:56.640> a<01:00:56.799> virtual<01:00:57.119> machine\nthe or, you know, or a virtual machine\nthe or, you know, or a virtual machine or<01:00:57.680> CPU<01:00:58.079> or<01:00:58.319> whatever.<01:00:59.119> And<01:00:59.200> then<01:00:59.359> we've<01:00:59.520> got\nor CPU or whatever. And then we've got\nor CPU or whatever. And then we've got the<01:00:59.760> windowed<01:01:00.079> watch<01:01:00.400> tree<01:01:00.640> build<01:01:01.119> down<01:01:01.359> here.\nthe windowed watch tree build down here.\nthe windowed watch tree build down here. The<01:01:03.839> final<01:01:04.079> missing<01:01:04.480> piece<01:01:04.640> of<01:01:04.799> this<01:01:06.079> is\nThe final missing piece of this is\nThe final missing piece of this is you've<01:01:07.040> got<01:01:07.520> uh\nyou've got uh\nyou've got uh the<01:01:09.839> watch<01:01:10.079> tree<01:01:10.319> build<01:01:10.559> and<01:01:10.720> you've<01:01:10.880> got<01:01:10.960> to\nthe watch tree build and you've got to\nthe watch tree build and you've got to produce<01:01:11.359> some<01:01:11.599> UI<01:01:11.920> for<01:01:12.000> it,<01:01:12.160> right?<01:01:12.319> You've\nproduce some UI for it, right? You've\nproduce some UI for it, right? You've got<01:01:12.559> a<01:01:12.640> list<01:01:12.799> of<01:01:12.880> final<01:01:13.119> evaluations<01:01:13.680> you<01:01:13.839> get\ngot a list of final evaluations you get\ngot a list of final evaluations you get out<01:01:14.079> of<01:01:14.160> this,<01:01:14.480> got<01:01:14.640> to<01:01:14.799> produce<01:01:14.960> a<01:01:15.119> UI<01:01:15.359> for<01:01:15.520> it.\nout of this, got to produce a UI for it.\nout of this, got to produce a UI for it. Um,\nUm,\nUm, now<01:01:19.599> started<01:01:20.000> by<01:01:20.160> introducing<01:01:20.480> the<01:01:20.720> most\nnow started by introducing the most\nnow started by introducing the most basic<01:01:21.119> one.<01:01:21.680> You<01:01:21.920> produce<01:01:22.160> a<01:01:22.240> textual\nbasic one. You produce a textual\nbasic one. You produce a textual representation<01:01:23.359> for<01:01:23.599> each<01:01:23.760> valuation.<01:01:24.319> Put\nrepresentation for each valuation. Put\nrepresentation for each valuation. Put them<01:01:24.480> in<01:01:24.640> a<01:01:24.799> put<01:01:25.040> them<01:01:25.119> in<01:01:25.200> a<01:01:25.359> little<01:01:25.520> watch\nthem in a put them in a little watch\nthem in a put them in a little watch window<01:01:26.079> UI.<01:01:26.799> That's<01:01:27.040> fine.<01:01:27.599> Um,<01:01:28.000> the<01:01:28.160> UI<01:01:28.480> build\nwindow UI. That's fine. Um, the UI build\nwindow UI. That's fine. Um, the UI build for<01:01:28.880> that<01:01:29.040> is<01:01:29.200> not<01:01:29.440> like<01:01:30.079> conceptually\nfor that is not like conceptually\nfor that is not like conceptually difficult.<01:01:31.119> It's<01:01:31.440> like<01:01:32.000> an<01:01:32.240> Excel<01:01:33.119> cell<01:01:33.520> like\ndifficult. It's like an Excel cell like\ndifficult. It's like an Excel cell like it's<01:01:34.079> just<01:01:34.240> like<01:01:34.400> Excel<01:01:34.720> for<01:01:34.880> your<01:01:35.040> program\nit's just like Excel for your program\nit's just like Excel for your program data.<01:01:36.240> Um,<01:01:36.720> the<01:01:36.960> full<01:01:37.119> watchman<01:01:37.520> is<01:01:37.680> just<01:01:37.839> like\ndata. Um, the full watchman is just like\ndata. Um, the full watchman is just like a<01:01:38.160> table<01:01:38.480> of<01:01:38.720> those<01:01:38.880> cells.<01:01:39.520> Um,\na table of those cells. Um,\na table of those cells. Um, you<01:01:41.359> know,<01:01:41.839> first<01:01:42.319> first<01:01:42.640> cell<01:01:42.880> would<01:01:43.119> be<01:01:43.200> the\nyou know, first first cell would be the\nyou know, first first cell would be the string<01:01:43.839> representing<01:01:44.319> the<01:01:44.559> expression.\nstring representing the expression.\nstring representing the expression. Second<01:01:45.599> cell<01:01:45.839> would<01:01:46.000> be<01:01:46.079> the<01:01:46.160> string\nSecond cell would be the string\nSecond cell would be the string representing<01:01:47.119> the<01:01:47.280> the<01:01:47.760> value.<01:01:48.480> Third<01:01:48.720> would\nrepresenting the the value. Third would\nrepresenting the the value. Third would be<01:01:49.040> the<01:01:49.200> type<01:01:49.920> and<01:01:50.000> and<01:01:50.400> so<01:01:50.559> on.\nbe the type and and so on.\nbe the type and and so on. Um\nUm\nUm but<01:01:56.160> it's<01:01:56.480> at<01:01:56.640> this<01:01:56.799> stage<01:01:57.040> that<01:01:57.280> other\nbut it's at this stage that other\nbut it's at this stage that other visualizers<01:01:58.160> can<01:01:58.319> actually<01:01:58.559> slot<01:01:58.880> in.<01:01:59.280> Right?\nvisualizers can actually slot in. Right?\nvisualizers can actually slot in. Right? If<01:01:59.599> we<01:01:59.760> want<01:01:59.839> to<01:02:00.000> take<01:02:00.240> that<01:02:00.559> path<01:02:01.119> and\nIf we want to take that path and\nIf we want to take that path and override<01:02:01.839> it<01:02:02.000> to<01:02:02.160> do<01:02:02.319> something<01:02:02.559> else,<01:02:03.040> here's\noverride it to do something else, here's\noverride it to do something else, here's where<01:02:03.440> we<01:02:03.760> actually<01:02:04.000> do<01:02:04.160> that.<01:02:04.559> So<01:02:04.880> instead<01:02:06.079> of\nwhere we actually do that. So instead of\nwhere we actually do that. So instead of taking<01:02:06.720> our<01:02:07.040> evaluations,\ntaking our evaluations,\ntaking our evaluations, feeding<01:02:09.040> them<01:02:09.200> into<01:02:09.359> a<01:02:09.520> value<01:02:09.839> string<01:02:10.640> text\nfeeding them into a value string text\nfeeding them into a value string text generator,\ngenerator,\ngenerator, we<01:02:13.520> could<01:02:13.599> also<01:02:13.839> feed<01:02:14.079> it<01:02:14.480> into<01:02:14.720> a<01:02:14.880> bit<01:02:15.119> map\nwe could also feed it into a bit map\nwe could also feed it into a bit map visualizer.<01:02:16.720> Oh<01:02:17.040> no,<01:02:18.160> 3D<01:02:18.559> geometry\nvisualizer. Oh no, 3D geometry\nvisualizer. Oh no, 3D geometry visualizer,<01:02:19.680> disassembly<01:02:20.240> visualizer,\nvisualizer, disassembly visualizer,\nvisualizer, disassembly visualizer, pointer<01:02:20.960> graph<01:02:21.200> visualizer,<01:02:21.599> right?<01:02:21.839> Or\npointer graph visualizer, right? Or\npointer graph visualizer, right? Or anything<01:02:22.480> you<01:02:22.640> can<01:02:22.799> think<01:02:22.880> of.<01:02:23.119> This<01:02:23.200> is<01:02:23.359> where\nanything you can think of. This is where\nanything you can think of. This is where it<01:02:23.520> would<01:02:23.680> slot<01:02:23.920> in<01:02:24.160> here.\nit would slot in here.\nit would slot in here. Um,<01:02:27.839> so<01:02:28.000> the<01:02:28.160> way<01:02:28.240> I<01:02:28.400> think<01:02:28.559> about<01:02:28.720> this<01:02:29.040> is\nUm, so the way I think about this is\nUm, so the way I think about this is that<01:02:29.520> all<01:02:29.680> of<01:02:29.839> these<01:02:30.079> different<01:02:30.240> visualizers\nthat all of these different visualizers\nthat all of these different visualizers are<01:02:31.200> sort<01:02:31.359> of<01:02:31.440> just<01:02:31.599> different<01:02:31.920> like<01:02:32.079> lenses\nare sort of just different like lenses\nare sort of just different like lenses into<01:02:32.799> our<01:02:32.960> data,<01:02:33.520> right?<01:02:33.680> you<01:02:33.920> can<01:02:34.079> just<01:02:34.240> take\ninto our data, right? you can just take\ninto our data, right? you can just take an<01:02:34.559> evaluation<01:02:35.040> and<01:02:35.359> view<01:02:35.599> it<01:02:35.839> like<01:02:36.400> literally\nan evaluation and view it like literally\nan evaluation and view it like literally like<01:02:36.960> a<01:02:37.200> physical<01:02:37.599> lens,<01:02:38.000> right?<01:02:38.400> Um<01:02:38.720> it's\nlike a physical lens, right? Um it's\nlike a physical lens, right? Um it's changing<01:02:39.280> how<01:02:39.440> you're<01:02:39.680> looking<01:02:39.839> at<01:02:40.079> it.<01:02:40.960> So<01:02:41.599> 64\nchanging how you're looking at it. So 64\nchanging how you're looking at it. So 64 megabyte<01:02:42.400> buffer<01:02:42.720> can<01:02:42.799> be<01:02:42.960> viewed<01:02:43.200> in<01:02:43.440> many\nmegabyte buffer can be viewed in many\nmegabyte buffer can be viewed in many ways.<01:02:45.040> It<01:02:45.200> can<01:02:45.359> be<01:02:45.440> viewed<01:02:45.599> through<01:02:45.680> a<01:02:45.839> bit<01:02:46.079> map\nways. It can be viewed through a bit map\nways. It can be viewed through a bit map lens,\nlens,\nlens, a<01:02:48.160> hex<01:02:48.400> editor<01:02:48.799> lens.<01:02:49.760> No,<01:02:50.240> please<01:02:50.559> stop<01:02:50.799> doing\na hex editor lens. No, please stop doing\na hex editor lens. No, please stop doing that<01:02:51.599> dude.\nthat dude.\nthat dude. Uh<01:02:53.520> or<01:02:53.680> a<01:02:53.839> text<01:02:54.000> editor<01:02:54.400> lens<01:02:54.880> or<01:02:55.200> you<01:02:55.280> know\nUh or a text editor lens or you know\nUh or a text editor lens or you know many<01:02:55.839> other<01:02:56.000> possible<01:02:56.400> things.\nmany other possible things.\nmany other possible things. Now<01:02:58.559> a<01:02:58.799> complication<01:02:59.359> arises\nNow a complication arises\nNow a complication arises which<01:03:02.000> is<01:03:02.079> that<01:03:02.319> not<01:03:02.480> all<01:03:02.640> the<01:03:02.799> information<01:03:03.119> to\nwhich is that not all the information to\nwhich is that not all the information to actually<01:03:03.520> produce<01:03:03.760> a<01:03:03.920> visualization<01:03:04.559> is\nactually produce a visualization is\nactually produce a visualization is present<01:03:05.200> inside<01:03:05.520> of<01:03:05.599> the<01:03:05.760> evaluation.<01:03:06.319> Right?\npresent inside of the evaluation. Right?\npresent inside of the evaluation. Right? If<01:03:06.799> I<01:03:06.880> want<01:03:07.040> to<01:03:07.119> visualize<01:03:07.440> a<01:03:07.520> bit<01:03:07.760> map<01:03:08.480> what\nIf I want to visualize a bit map what\nIf I want to visualize a bit map what dimensions<01:03:09.119> am<01:03:09.280> I<01:03:09.440> talking<01:03:09.599> about?<01:03:09.760> Like<01:03:10.000> what\ndimensions am I talking about? Like what\ndimensions am I talking about? Like what what<01:03:10.480> are<01:03:10.559> the<01:03:10.640> dimensions<01:03:10.960> of<01:03:11.040> the<01:03:11.119> bit<01:03:11.359> map?\nwhat are the dimensions of the bit map?\nwhat are the dimensions of the bit map? What<01:03:11.760> format<01:03:12.160> is<01:03:12.319> the<01:03:12.480> data<01:03:12.640> encoded<01:03:13.119> in?<01:03:13.599> Um\nWhat format is the data encoded in? Um\nWhat format is the data encoded in? Um if<01:03:14.079> I'm<01:03:14.319> looking<01:03:14.480> at<01:03:14.640> geometry<01:03:15.280> is<01:03:15.440> this<01:03:15.760> like\nif I'm looking at geometry is this like\nif I'm looking at geometry is this like vertices<01:03:17.280> or<01:03:17.599> indices<01:03:18.000> or<01:03:18.240> what<01:03:18.319> is<01:03:18.480> it?<01:03:18.720> What\nvertices or indices or what is it? What\nvertices or indices or what is it? What topology<01:03:19.440> is<01:03:19.599> the<01:03:19.839> geometry?<01:03:20.559> What's<01:03:20.720> the\ntopology is the geometry? What's the\ntopology is the geometry? What's the vertex<01:03:21.359> format?<01:03:21.760> Like<01:03:22.000> how<01:03:22.160> are<01:03:22.240> these<01:03:22.480> things\nvertex format? Like how are these things\nvertex format? Like how are these things laid<01:03:23.119> out<01:03:23.680> actually?<01:03:24.160> How's<01:03:24.400> the<01:03:24.559> different\nlaid out actually? How's the different\nlaid out actually? How's the different information<01:03:25.119> laid<01:03:25.440> out<01:03:25.760> with<01:03:26.079> disassembly?\ninformation laid out with disassembly?\ninformation laid out with disassembly? uh<01:03:27.200> what<01:03:27.359> architecture,<01:03:28.000> what<01:03:28.160> syntax,<01:03:28.720> how\nuh what architecture, what syntax, how\nuh what architecture, what syntax, how many<01:03:28.960> bytes<01:03:29.359> do<01:03:29.599> I<01:03:29.680> want<01:03:29.760> to<01:03:29.920> pull<01:03:30.079> down<01:03:30.559> and\nmany bytes do I want to pull down and\nmany bytes do I want to pull down and actually<01:03:31.039> visualize?<01:03:32.480> Um<01:03:33.680> and<01:03:33.920> so<01:03:34.079> note<01:03:34.319> that\nactually visualize? Um and so note that\nactually visualize? Um and so note that all<01:03:34.640> of<01:03:34.720> these<01:03:34.960> questions<01:03:35.280> are<01:03:35.440> like<01:03:35.599> highly\nall of these questions are like highly\nall of these questions are like highly specific.<01:03:36.400> They're<01:03:36.640> parameterizations<01:03:37.599> to\nspecific. They're parameterizations to\nspecific. They're parameterizations to the<01:03:38.000> visualizer.<01:03:39.359> Um\nthe visualizer. Um\nthe visualizer. Um uh<01:03:41.839> they're<01:03:42.000> also<01:03:42.240> the<01:03:42.400> kinds<01:03:42.559> of<01:03:42.640> things<01:03:42.799> that\nuh they're also the kinds of things that\nuh they're also the kinds of things that a<01:03:43.200> user<01:03:43.599> probably<01:03:44.079> wants<01:03:44.319> to<01:03:44.480> explicitly\na user probably wants to explicitly\na user probably wants to explicitly express.\nOkay.\nOkay.\nOkay. Um<01:03:52.319> so<01:03:52.880> to<01:03:53.200> solve<01:03:53.359> this<01:03:53.599> problem<01:03:54.240> we<01:03:54.480> need<01:03:54.559> to\nUm so to solve this problem we need to\nUm so to solve this problem we need to have<01:03:54.880> some<01:03:55.119> way<01:03:55.359> of<01:03:56.079> obtaining<01:03:56.480> from<01:03:56.720> the<01:03:56.880> user\nhave some way of obtaining from the user\nhave some way of obtaining from the user a<01:03:57.599> choice<01:03:57.839> of<01:03:58.000> visualizer<01:03:58.880> and<01:03:59.119> a<01:03:59.280> choice<01:03:59.440> of\na choice of visualizer and a choice of\na choice of visualizer and a choice of all<01:03:59.680> that<01:03:59.839> visualizer's<01:04:00.559> options<01:04:01.680> um<01:04:01.839> for\nall that visualizer's options um for\nall that visualizer's options um for some<01:04:02.240> evaluation.<01:04:03.119> So<01:04:03.359> if<01:04:03.520> I've<01:04:03.760> got<01:04:03.839> this\nsome evaluation. So if I've got this\nsome evaluation. So if I've got this buffer<01:04:04.640> evaluation\nbuffer evaluation\nbuffer evaluation and<01:04:06.400> it's<01:04:06.640> array<01:04:06.880> of<01:04:07.039> 64<01:04:07.440> million<01:04:07.760> u8s<01:04:08.640> I<01:04:09.039> need\nand it's array of 64 million u8s I need\nand it's array of 64 million u8s I need to<01:04:09.359> somehow<01:04:09.760> tag<01:04:10.079> it.<01:04:10.319> I<01:04:10.480> need<01:04:10.640> to<01:04:10.720> somehow\nto somehow tag it. I need to somehow\nto somehow tag it. I need to somehow like<01:04:11.440> take<01:04:11.680> that<01:04:12.079> evaluation<01:04:12.559> to<01:04:12.720> just<01:04:12.799> like\nlike take that evaluation to just like\nlike take that evaluation to just like tack<01:04:13.280> some<01:04:13.440> information<01:04:13.760> on<01:04:13.920> that's<01:04:14.160> like<01:04:14.400> by\ntack some information on that's like by\ntack some information on that's like by the<01:04:14.640> way<01:04:15.119> I<01:04:15.280> want<01:04:15.359> to<01:04:15.440> look<01:04:15.520> at<01:04:15.680> this<01:04:15.760> as<01:04:15.920> a<01:04:16.000> bit\nthe way I want to look at this as a bit\nthe way I want to look at this as a bit map<01:04:17.359> by24<01:04:18.079> RGBA88<01:04:19.119> or<01:04:19.359> something.\nmap by24 RGBA88 or something.\nmap by24 RGBA88 or something. Lucky<01:04:22.000> for<01:04:22.160> us<01:04:22.559> there's<01:04:22.799> already<01:04:22.960> a<01:04:23.200> way<01:04:23.359> to\nLucky for us there's already a way to\nLucky for us there's already a way to tag<01:04:23.760> an<01:04:23.920> evaluation<01:04:25.039> and<01:04:25.280> that's<01:04:25.440> with<01:04:25.599> type\ntag an evaluation and that's with type\ntag an evaluation and that's with type info.\ninfo.\ninfo. So<01:04:28.480> we<01:04:28.720> can<01:04:28.799> use<01:04:29.039> type<01:04:29.359> info<01:04:29.920> to<01:04:30.240> express<01:04:30.640> all\nSo we can use type info to express all\nSo we can use type info to express all of<01:04:30.960> these<01:04:31.200> visualizer<01:04:31.920> decisions.<01:04:32.880> Um<01:04:33.680> so<01:04:34.799> we\nof these visualizer decisions. Um so we\nof these visualizer decisions. Um so we already<01:04:35.280> have<01:04:35.440> paths<01:04:35.760> that<01:04:35.920> rely<01:04:36.160> on<01:04:36.319> type\nalready have paths that rely on type\nalready have paths that rely on type info,<01:04:36.960> right?<01:04:37.119> Remember<01:04:37.440> when<01:04:37.599> I<01:04:37.760> turned<01:04:37.920> it\ninfo, right? Remember when I turned it\ninfo, right? Remember when I turned it into<01:04:38.240> a<01:04:38.400> string,<01:04:38.799> I<01:04:38.960> had<01:04:39.119> to<01:04:39.280> like<01:04:39.440> look<01:04:39.520> at<01:04:39.599> the\ninto a string, I had to like look at the\ninto a string, I had to like look at the type<01:04:40.000> info<01:04:40.559> and<01:04:40.880> see<01:04:41.119> like<01:04:41.359> what<01:04:41.599> case<01:04:41.839> I\ntype info and see like what case I\ntype info and see like what case I wanted<01:04:42.160> to<01:04:42.400> actually<01:04:42.640> do.<01:04:43.680> Not<01:04:44.000> really<01:04:44.160> that\nwanted to actually do. Not really that\nwanted to actually do. Not really that much<01:04:44.559> different,<01:04:44.799> right?<01:04:45.039> I<01:04:45.200> can<01:04:45.359> just<01:04:45.680> say\nmuch different, right? I can just say\nmuch different, right? I can just say like<01:04:46.160> the<01:04:46.319> type<01:04:46.480> is<01:04:46.640> going<01:04:46.720> to<01:04:46.799> somehow\nlike the type is going to somehow\nlike the type is going to somehow express<01:04:47.520> this<01:04:47.920> and<01:04:48.079> then<01:04:48.240> we<01:04:48.400> can<01:04:48.480> choose\nexpress this and then we can choose\nexpress this and then we can choose visualizers<01:04:49.440> based<01:04:49.680> on<01:04:49.839> that.<01:04:51.200> So<01:04:52.319> how<01:04:52.480> do<01:04:52.640> we\nvisualizers based on that. So how do we\nvisualizers based on that. So how do we extend<01:04:52.960> the<01:04:53.039> type<01:04:53.280> info<01:04:53.599> to<01:04:53.760> do<01:04:53.920> that?<01:04:54.640> Um<01:04:55.039> so\nextend the type info to do that? Um so\nextend the type info to do that? Um so the<01:04:55.599> buffer<01:04:56.000> type<01:04:56.240> you<01:04:56.400> can<01:04:56.480> imagine<01:04:56.960> buffer\nthe buffer type you can imagine buffer\nthe buffer type you can imagine buffer could<01:04:57.599> be<01:04:57.680> like<01:04:57.760> a<01:04:57.920> local<01:04:58.160> variable<01:04:58.559> or<01:04:58.799> or\ncould be like a local variable or or\ncould be like a local variable or or probably<01:04:59.280> not<01:04:59.599> 64<01:04:59.920> megabytes<01:05:00.720> global\nprobably not 64 megabytes global\nprobably not 64 megabytes global variable.<01:05:01.839> uh<01:05:01.920> its<01:05:02.240> type<01:05:02.400> is<01:05:02.559> a<01:05:02.799> you<01:05:02.960> know<01:05:03.119> 64\nvariable. uh its type is a you know 64\nvariable. uh its type is a you know 64 megabyte<01:05:04.000> array<01:05:04.559> of<01:05:04.720> U8s.\nSo<01:05:08.480> all<01:05:08.640> we<01:05:08.799> have<01:05:08.880> to<01:05:08.960> do<01:05:09.119> is<01:05:09.280> extend<01:05:09.599> our\nSo all we have to do is extend our\nSo all we have to do is extend our visual<01:05:10.240> uh<01:05:10.319> our<01:05:10.559> evaluation<01:05:11.200> language<01:05:12.240> to<01:05:12.559> be\nvisual uh our evaluation language to be\nvisual uh our evaluation language to be able<01:05:12.880> to<01:05:13.200> extend<01:05:13.520> that<01:05:13.680> type<01:05:14.000> information.\nable to extend that type information.\nable to extend that type information. Conceptually<01:05:15.359> it's<01:05:15.520> almost<01:05:15.760> like<01:05:15.920> just<01:05:16.079> a<01:05:16.799> uh\nConceptually it's almost like just a uh\nConceptually it's almost like just a uh it's<01:05:17.119> actually<01:05:17.359> not<01:05:17.599> just<01:05:17.760> a<01:05:17.920> cast.<01:05:18.240> It's<01:05:18.480> sort\nit's actually not just a cast. It's sort\nit's actually not just a cast. It's sort of<01:05:18.640> like<01:05:18.799> a<01:05:19.440> it's<01:05:20.000> it's<01:05:20.240> sort<01:05:20.400> of<01:05:20.799> appending<01:05:21.200> on\nof like a it's it's sort of appending on\nof like a it's it's sort of appending on to<01:05:21.440> the<01:05:21.599> type<01:05:21.839> operators<01:05:22.240> if<01:05:22.400> that<01:05:22.559> makes\nto the type operators if that makes\nto the type operators if that makes sense.<01:05:23.280> I<01:05:23.520> guess<01:05:23.599> it<01:05:23.760> is<01:05:23.920> sort<01:05:24.000> of<01:05:24.079> a<01:05:24.240> kind<01:05:24.400> of\nsense. I guess it is sort of a kind of\nsense. I guess it is sort of a kind of cast.<01:05:24.960> take<01:05:25.440> take<01:05:25.680> the<01:05:26.000> 64<01:05:26.400> megabyte<01:05:27.039> array<01:05:27.440> of\ncast. take take the 64 megabyte array of\ncast. take take the 64 megabyte array of U8s<01:05:28.160> and<01:05:28.240> then<01:05:28.319> you<01:05:28.480> sort<01:05:28.640> of<01:05:28.720> cast<01:05:29.039> it<01:05:29.200> to\nU8s and then you sort of cast it to\nU8s and then you sort of cast it to bitmap<01:05:30.960> type<01:05:32.000> special<01:05:32.400> type<01:05:32.799> which<01:05:33.119> points<01:05:33.520> to\nbitmap type special type which points to\nbitmap type special type which points to that<01:05:34.640> type<01:05:35.119> right\nthat type right\nthat type right um<01:05:37.760> so<01:05:38.240> like<01:05:38.480> if<01:05:38.720> we<01:05:38.880> look<01:05:38.960> at<01:05:39.119> this<01:05:39.280> expression\num so like if we look at this expression\num so like if we look at this expression down<01:05:39.839> here<01:05:40.079> you've<01:05:40.319> got<01:05:40.480> like<01:05:40.640> this<01:05:40.880> bit<01:05:41.200> map\ndown here you've got like this bit map\ndown here you've got like this bit map call<01:05:41.839> it's<01:05:42.000> like<01:05:42.240> looks<01:05:42.400> like<01:05:42.480> a<01:05:42.640> function\ncall it's like looks like a function\ncall it's like looks like a function call<01:05:43.760> you<01:05:43.920> know<01:05:44.079> bit<01:05:44.400> map<01:05:44.640> and<01:05:44.799> then<01:05:44.960> you've\ncall you know bit map and then you've\ncall you know bit map and then you've got<01:05:45.280> some<01:05:45.440> buffer<01:05:46.000> and<01:05:46.160> then<01:05:46.319> the\ngot some buffer and then the\ngot some buffer and then the parameterizations<01:05:47.200> of<01:05:47.359> the<01:05:47.440> bitmap\nparameterizations of the bitmap\nparameterizations of the bitmap visualizer<01:05:48.960> that's<01:05:49.200> just<01:05:49.359> a<01:05:49.520> type<01:05:49.760> now<01:05:50.240> or\nvisualizer that's just a type now or\nvisualizer that's just a type now or that<01:05:50.640> that<01:05:51.039> implies<01:05:51.520> that<01:05:51.680> the<01:05:51.839> type<01:05:52.160> turns\nthat that implies that the type turns\nthat that implies that the type turns into<01:05:52.640> this\nSo<01:05:58.559> in<01:05:58.720> one<01:05:58.960> step<01:06:00.000> we've<01:06:00.559> uh<01:06:00.640> allowed<01:06:00.880> our\nSo in one step we've uh allowed our\nSo in one step we've uh allowed our expression<01:06:01.440> language<01:06:01.760> to<01:06:02.640> express<01:06:02.720> express\nexpression language to express express\nexpression language to express express both<01:06:03.359> a<01:06:03.599> choice<01:06:03.760> of<01:06:03.920> visualizer<01:06:04.799> and<01:06:05.039> any<01:06:05.280> set\nboth a choice of visualizer and any set\nboth a choice of visualizer and any set of<01:06:05.599> arguments<01:06:05.920> to<01:06:06.079> that<01:06:06.240> visualizer.<01:06:06.960> So<01:06:07.119> our\nof arguments to that visualizer. So our\nof arguments to that visualizer. So our UI<01:06:07.680> build<01:06:08.160> by<01:06:08.400> looking<01:06:08.640> at<01:06:08.720> the<01:06:08.880> type\nUI build by looking at the type\nUI build by looking at the type information<01:06:10.160> can<01:06:10.400> then<01:06:10.559> decide\ninformation can then decide\ninformation can then decide appropriately<01:06:11.359> on<01:06:11.520> the<01:06:11.680> visualizer<01:06:12.160> path\nappropriately on the visualizer path\nappropriately on the visualizer path like<01:06:13.280> do<01:06:13.440> I<01:06:13.599> have<01:06:13.680> a<01:06:13.839> visualizer<01:06:14.319> type\nlike do I have a visualizer type\nlike do I have a visualizer type operator<01:06:14.880> or<01:06:15.039> do<01:06:15.200> I<01:06:15.359> not?\noperator or do I not?\noperator or do I not? Um,\nUm,\nUm, so<01:06:20.000> our<01:06:20.240> visualizers<01:06:20.799> fill<01:06:21.039> this<01:06:21.200> part<01:06:21.440> out,\nso our visualizers fill this part out,\nso our visualizers fill this part out, right?<01:06:22.000> We've<01:06:22.240> got<01:06:22.319> some<01:06:22.559> evaluation.<01:06:23.440> We\nright? We've got some evaluation. We\nright? We've got some evaluation. We produce<01:06:23.839> a<01:06:24.000> UI.\nproduce a UI.\nproduce a UI. Pretty<01:06:25.839> pretty<01:06:26.160> straightforward<01:06:26.960> hopefully.\nPretty pretty straightforward hopefully.\nPretty pretty straightforward hopefully. Um,\nUm,\nUm, and<01:06:30.079> recall<01:06:30.400> that<01:06:30.720> an<01:06:30.880> evaluation<01:06:31.359> implies<01:06:32.000> an\nand recall that an evaluation implies an\nand recall that an evaluation implies an abstract<01:06:32.640> syntax<01:06:32.960> tree,<01:06:33.119> an<01:06:33.280> intermediate\nabstract syntax tree, an intermediate\nabstract syntax tree, an intermediate representation,<01:06:34.480> a<01:06:34.720> type,<01:06:35.200> and<01:06:35.440> a<01:06:35.599> value.\nrepresentation, a type, and a value.\nrepresentation, a type, and a value. And<01:06:37.680> the<01:06:37.839> type<01:06:38.400> implies<01:06:38.799> all<01:06:38.960> the<01:06:39.119> opt<01:06:39.599> uh<01:06:39.680> all\nAnd the type implies all the opt uh all\nAnd the type implies all the opt uh all the<01:06:40.000> options<01:06:40.319> for<01:06:40.480> the<01:06:40.640> visualizers.\nUm,\nUm,\nUm, so<01:06:45.680> now,<01:06:46.000> okay,<01:06:46.480> let's<01:06:46.720> back<01:06:46.960> up.\nso now, okay, let's back up.\nso now, okay, let's back up. got<01:06:49.119> these<01:06:49.359> lenses.<01:06:49.920> We<01:06:50.160> can<01:06:50.240> extend<01:06:50.559> type\ngot these lenses. We can extend type\ngot these lenses. We can extend type information<01:06:51.280> to<01:06:51.520> include<01:06:52.400> arbitrary\ninformation to include arbitrary\ninformation to include arbitrary visualiz<01:06:53.599> uh<01:06:53.760> visualizer\nvisualiz uh visualizer\nvisualiz uh visualizer parameterizations.<01:06:55.760> Uh<01:06:56.240> let's<01:06:56.559> take<01:06:56.720> them<01:06:56.880> a\nparameterizations. Uh let's take them a\nparameterizations. Uh let's take them a little<01:06:57.200> bit<01:06:57.359> further.\nlittle bit further.\nlittle bit further. Uh<01:06:59.680> so<01:06:59.839> let's<01:07:00.000> imagine<01:07:00.319> types<01:07:00.720> like<01:07:00.880> this.\nUh so let's imagine types like this.\nUh so let's imagine types like this. You've<01:07:01.680> got<01:07:02.079> you<01:07:02.240> know<01:07:02.480> f<01:07:02.720> this<01:07:02.880> is<01:07:03.039> very\nYou've got you know f this is very\nYou've got you know f this is very common<01:07:03.520> in<01:07:03.760> C<01:07:04.079> code<01:07:04.319> bases<01:07:04.799> because<01:07:05.039> we<01:07:05.359> don't\ncommon in C code bases because we don't\ncommon in C code bases because we don't have<01:07:05.920> nice<01:07:06.160> things<01:07:06.319> in<01:07:06.559> C.<01:07:07.039> You've<01:07:07.200> got\nhave nice things in C. You've got\nhave nice things in C. You've got strruct<01:07:07.760> fu<01:07:08.000> slice.<01:07:08.720> You<01:07:08.880> got<01:07:08.960> a<01:07:09.119> pointer<01:07:09.440> and\nstrruct fu slice. You got a pointer and\nstrruct fu slice. You got a pointer and some<01:07:09.839> count.<01:07:10.480> or<01:07:10.720> if<01:07:10.880> I've<01:07:11.039> got<01:07:11.119> a<01:07:11.359> list<01:07:11.599> like\nsome count. or if I've got a list like\nsome count. or if I've got a list like strruct<01:07:12.240> fu<01:07:12.559> node<01:07:13.280> pointer<01:07:13.680> to<01:07:13.839> the<01:07:14.000> next<01:07:14.079> node\nstrruct fu node pointer to the next node\nstrruct fu node pointer to the next node and<01:07:14.480> then<01:07:14.559> and<01:07:14.799> then<01:07:14.880> a<01:07:15.119> member<01:07:15.359> with<01:07:15.520> the\nand then and then a member with the\nand then and then a member with the actual<01:07:16.000> data.<01:07:17.280> Um<01:07:18.720> so<01:07:18.880> given<01:07:19.200> the<01:07:19.359> given<01:07:19.680> the\nactual data. Um so given the given the\nactual data. Um so given the given the current<01:07:20.160> sort<01:07:20.319> of<01:07:20.400> type<01:07:20.640> info<01:07:21.039> visualization\ncurrent sort of type info visualization\ncurrent sort of type info visualization rules<01:07:22.079> you<01:07:22.240> put<01:07:22.400> that<01:07:22.480> into<01:07:22.640> the<01:07:22.799> watch<01:07:23.039> window\nrules you put that into the watch window\nrules you put that into the watch window you're<01:07:23.440> like<01:07:23.599> great<01:07:23.839> I'm<01:07:24.079> going<01:07:24.160> to<01:07:24.240> visualize\nyou're like great I'm going to visualize\nyou're like great I'm going to visualize my<01:07:24.880> dynamic<01:07:25.280> array<01:07:25.599> today<01:07:26.160> you<01:07:26.319> expand<01:07:26.640> it<01:07:26.960> and\nmy dynamic array today you expand it and\nmy dynamic array today you expand it and you've<01:07:27.280> got<01:07:27.440> two<01:07:27.599> members<01:07:27.920> it's<01:07:28.079> like<01:07:28.240> v<01:07:28.480> and\nyou've got two members it's like v and\nyou've got two members it's like v and count<01:07:28.960> and<01:07:29.200> then<01:07:29.280> you<01:07:29.520> expand<01:07:29.839> v<01:07:30.079> and<01:07:30.240> it's\ncount and then you expand v and it's\ncount and then you expand v and it's like<01:07:30.640> one<01:07:31.200> thing<01:07:31.520> and<01:07:31.680> you're<01:07:31.920> like<01:07:32.319> what<01:07:32.640> what\nlike one thing and you're like what what\nlike one thing and you're like what what what<01:07:33.200> is<01:07:33.359> that?<01:07:33.680> Same<01:07:33.920> thing<01:07:34.079> with<01:07:34.160> the<01:07:34.319> link\nwhat is that? Same thing with the link\nwhat is that? Same thing with the link list.<01:07:34.799> you<01:07:35.119> like<01:07:35.440> put<01:07:35.680> in<01:07:35.839> the<01:07:36.000> first<01:07:36.319> the<01:07:36.559> head\nlist. you like put in the first the head\nlist. you like put in the first the head of<01:07:36.799> the<01:07:36.960> link<01:07:37.200> list,<01:07:37.839> you<01:07:38.000> expand<01:07:38.319> it<01:07:38.720> and<01:07:38.960> then\nof the link list, you expand it and then\nof the link list, you expand it and then you<01:07:39.200> can<01:07:39.280> actually<01:07:39.599> recursively<01:07:40.240> expand<01:07:40.480> it.\nyou can actually recursively expand it.\nyou can actually recursively expand it. But<01:07:40.960> like<01:07:41.200> in<01:07:41.440> your<01:07:41.680> head<01:07:41.920> a<01:07:42.160> list<01:07:42.400> is<01:07:42.640> flat<01:07:43.280> and\nBut like in your head a list is flat and\nBut like in your head a list is flat and then<01:07:43.760> everyone's<01:07:44.559> everyone's<01:07:45.039> like<01:07:45.280> who's\nthen everyone's everyone's like who's\nthen everyone's everyone's like who's used<01:07:45.760> debuggers<01:07:46.480> knows<01:07:46.799> like<01:07:46.960> to<01:07:47.119> visualize<01:07:47.359> a\nused debuggers knows like to visualize a\nused debuggers knows like to visualize a linked<01:07:47.760> list<01:07:47.920> you've<01:07:48.160> got<01:07:48.240> to<01:07:48.319> like<01:07:48.640> expand<01:07:48.960> in\nlinked list you've got to like expand in\nlinked list you've got to like expand in and<01:07:49.359> expand<01:07:49.599> in<01:07:49.839> and<01:07:50.000> expand<01:07:50.240> in<01:07:50.799> like<01:07:51.839> what<01:07:52.000> am\nand expand in and expand in like what am\nand expand in and expand in like what am I<01:07:52.319> even<01:07:52.480> looking<01:07:52.640> at<01:07:52.880> at<01:07:53.039> some<01:07:53.200> point,<01:07:53.440> right?\nI even looking at at some point, right?\nI even looking at at some point, right? It<01:07:53.839> gets<01:07:54.240> really<01:07:54.559> ridiculous.\nIt gets really ridiculous.\nIt gets really ridiculous. Um\nso<01:08:01.599> taking<01:08:01.839> a<01:08:02.000> look<01:08:02.079> at<01:08:02.160> the<01:08:02.319> visualization\nso taking a look at the visualization\nso taking a look at the visualization pipeline<01:08:03.680> we<01:08:03.920> know<01:08:04.000> that<01:08:04.160> our<01:08:04.400> lenses<01:08:05.039> those\npipeline we know that our lenses those\npipeline we know that our lenses those lens<01:08:05.680> type<01:08:05.920> operator<01:08:06.400> things<01:08:07.440> they<01:08:07.839> override\nlens type operator things they override\nlens type operator things they override this<01:08:08.720> part<01:08:09.119> like<01:08:09.280> the<01:08:09.440> the<01:08:09.839> arrow<01:08:10.240> here<01:08:10.480> which\nthis part like the the arrow here which\nthis part like the the arrow here which is<01:08:10.880> like<01:08:11.839> turns<01:08:12.160> a<01:08:12.319> list<01:08:12.400> of<01:08:12.559> evaluations<01:08:13.119> into\nis like turns a list of evaluations into\nis like turns a list of evaluations into a<01:08:13.520> list<01:08:13.680> of<01:08:13.760> UIs<01:08:14.240> right<01:08:14.400> because<01:08:14.559> we<01:08:14.640> can<01:08:14.720> take\na list of UIs right because we can take\na list of UIs right because we can take an<01:08:14.960> eval<01:08:15.359> produce<01:08:15.599> a<01:08:15.680> UI<01:08:16.000> which<01:08:16.159> means<01:08:16.640> got<01:08:16.799> a\nan eval produce a UI which means got a\nan eval produce a UI which means got a list<01:08:17.040> of<01:08:17.199> evaluations<01:08:17.920> we<01:08:18.080> can<01:08:18.159> produce<01:08:18.400> a\nlist of evaluations we can produce a\nlist of evaluations we can produce a list<01:08:18.640> of<01:08:18.719> UIs<01:08:19.359> we<01:08:19.520> can<01:08:19.679> override<01:08:20.080> that<01:08:20.400> using\nlist of UIs we can override that using\nlist of UIs we can override that using that<01:08:20.880> type<01:08:21.120> info\nthat type info\nthat type info same<01:08:24.319> pattern<01:08:25.040> we<01:08:25.279> can<01:08:25.440> also<01:08:26.080> override<01:08:26.640> this\nsame pattern we can also override this\nsame pattern we can also override this right<01:08:27.199> we<01:08:27.359> can<01:08:27.440> just<01:08:27.600> say<01:08:27.759> like<01:08:28.080> hey<01:08:28.319> we're\nright we can just say like hey we're\nright we can just say like hey we're going<01:08:28.560> to<01:08:28.640> change<01:08:28.799> the<01:08:28.960> way<01:08:29.040> we're<01:08:29.199> going<01:08:29.279> to\ngoing to change the way we're going to\ngoing to change the way we're going to build<01:08:29.440> this<01:08:29.600> block<01:08:29.920> tree<01:08:30.480> we're<01:08:30.640> actually\nbuild this block tree we're actually\nbuild this block tree we're actually going<01:08:30.960> to<01:08:31.040> say<01:08:31.199> like<01:08:31.359> the<01:08:31.520> type<01:08:31.759> info<01:08:32.080> can<01:08:32.319> now\ngoing to say like the type info can now\ngoing to say like the type info can now have<01:08:32.799> some<01:08:33.120> say<01:08:33.759> in<01:08:34.000> that<01:08:34.239> stage<01:08:34.560> as<01:08:34.799> well\nhave some say in that stage as well\nhave some say in that stage as well um<01:08:38.799> so<01:08:38.960> instead<01:08:39.199> of<01:08:39.359> visualizing<01:08:39.839> these<01:08:40.159> two\num so instead of visualizing these two\num so instead of visualizing these two particular<01:08:40.960> structures<01:08:41.359> like<01:08:41.600> this<01:08:42.799> we<01:08:43.040> can\nparticular structures like this we can\nparticular structures like this we can now<01:08:43.359> actually<01:08:43.600> introduce<01:08:43.920> some<01:08:44.080> lens<01:08:44.400> types\nnow actually introduce some lens types\nnow actually introduce some lens types which<01:08:45.120> have<01:08:45.520> custom<01:08:46.000> rules<01:08:46.400> for<01:08:46.640> buil<01:08:46.880> for<01:08:47.040> how\nwhich have custom rules for buil for how\nwhich have custom rules for buil for how to<01:08:47.359> build<01:08:48.080> uh<01:08:48.159> the<01:08:48.319> block<01:08:48.560> tree<01:08:48.799> here<01:08:49.120> so<01:08:49.359> for\nto build uh the block tree here so for\nto build uh the block tree here so for the<01:08:49.679> left<01:08:50.319> you<01:08:50.400> know<01:08:50.560> let's<01:08:50.719> say<01:08:50.880> I<01:08:51.040> use<01:08:51.199> the\nthe left you know let's say I use the\nthe left you know let's say I use the array<01:08:51.679> slice<01:08:51.920> and<01:08:52.080> I'm<01:08:52.239> like<01:08:52.560> you<01:08:52.719> got<01:08:52.880> an\narray slice and I'm like you got an\narray slice and I'm like you got an array<01:08:53.839> here's<01:08:54.080> the<01:08:54.239> pointer<01:08:54.640> here's<01:08:54.799> the\narray here's the pointer here's the\narray here's the pointer here's the count<01:08:56.000> give<01:08:56.159> Give<01:08:56.239> me<01:08:56.400> the<01:08:56.560> block<01:08:56.719> of<01:08:56.799> all<01:08:56.960> the\ncount give Give me the block of all the\ncount give Give me the block of all the elements.<01:08:57.839> On<01:08:58.080> the<01:08:58.239> right,<01:08:58.880> I've<01:08:59.120> got<01:08:59.359> here's\nelements. On the right, I've got here's\nelements. On the right, I've got here's the<01:08:59.679> head<01:08:59.920> pointer<01:09:00.239> and<01:09:00.400> here's<01:09:00.640> the<01:09:00.799> name<01:09:00.880> of\nthe head pointer and here's the name of\nthe head pointer and here's the name of the<01:09:01.120> member<01:09:01.359> I<01:09:01.520> want<01:09:01.600> you<01:09:01.759> to<01:09:01.839> follow<01:09:02.159> to<01:09:02.319> find\nthe member I want you to follow to find\nthe member I want you to follow to find all<01:09:02.640> the<01:09:03.199> list<01:09:03.520> elements.<01:09:04.319> Give<01:09:04.480> me<01:09:04.640> the<01:09:04.719> list\nall the list elements. Give me the list\nall the list elements. Give me the list of<01:09:05.040> elements.<01:09:05.440> And<01:09:05.520> we<01:09:05.679> can<01:09:05.759> just<01:09:05.920> do<01:09:06.000> that\nof elements. And we can just do that\nof elements. And we can just do that with<01:09:06.400> the<01:09:06.560> type<01:09:06.799> info.\nNo,<01:09:11.839> I'm<01:09:12.159> so<01:09:12.319> bad<01:09:12.560> with<01:09:12.719> this.<01:09:14.159> Okay,<01:09:15.279> so<01:09:16.319> I've\nNo, I'm so bad with this. Okay, so I've\nNo, I'm so bad with this. Okay, so I've walked<01:09:16.880> through<01:09:17.679> uh<01:09:18.080> this<01:09:18.319> whole\nwalked through uh this whole\nwalked through uh this whole visualization<01:09:19.600> pipeline.<01:09:20.400> Um,<01:09:21.679> it<01:09:21.920> allows<01:09:22.159> us\nvisualization pipeline. Um, it allows us\nvisualization pipeline. Um, it allows us to<01:09:23.040> just<01:09:23.279> visualize<01:09:23.839> in<01:09:24.080> the<01:09:24.239> ways<01:09:24.400> that<01:09:24.560> I've\nto just visualize in the ways that I've\nto just visualize in the ways that I've showed<01:09:26.000> uh<01:09:26.400> anything<01:09:26.640> the<01:09:26.880> debugger<01:09:27.279> can\nshowed uh anything the debugger can\nshowed uh anything the debugger can evaluate.<01:09:28.159> And<01:09:28.319> so,<01:09:28.560> so<01:09:28.880> far,<01:09:29.520> anything<01:09:29.839> the\nevaluate. And so, so far, anything the\nevaluate. And so, so far, anything the debugger<01:09:30.400> can<01:09:30.560> evaluate<01:09:31.279> has<01:09:31.520> just<01:09:31.679> included\ndebugger can evaluate has just included\ndebugger can evaluate has just included like<01:09:32.719> expressions<01:09:33.199> relating<01:09:33.520> to<01:09:33.679> your\nlike expressions relating to your\nlike expressions relating to your program<01:09:34.560> like<01:09:34.880> in<01:09:35.359> like<01:09:35.520> a<01:09:35.679> debuggy<01:09:36.239> address\nprogram like in like a debuggy address\nprogram like in like a debuggy address space<01:09:37.600> or<01:09:38.000> you<01:09:38.159> know<01:09:38.640> something<01:09:38.880> in<01:09:39.120> a<01:09:39.199> thread\nspace or you know something in a thread\nspace or you know something in a thread register<01:09:39.759> inside<01:09:40.080> of<01:09:40.159> a<01:09:40.239> debuggy<01:09:41.040> so<01:09:41.279> on.\nregister inside of a debuggy so on.\nregister inside of a debuggy so on. But<01:09:43.600> let's<01:09:43.920> consider<01:09:44.239> all<01:09:44.400> of<01:09:44.560> the<01:09:44.719> scenarios\nBut let's consider all of the scenarios\nBut let's consider all of the scenarios where<01:09:46.080> we<01:09:46.319> have<01:09:46.480> some<01:09:46.719> data<01:09:47.279> from<01:09:47.520> anywhere\nwhere we have some data from anywhere\nwhere we have some data from anywhere that<01:09:48.319> we're<01:09:48.560> looking<01:09:48.719> at<01:09:48.880> and<01:09:49.040> we<01:09:49.199> want<01:09:49.359> to\nthat we're looking at and we want to\nthat we're looking at and we want to understand\nunderstand\nunderstand you<01:09:52.159> know<01:09:53.120> a<01:09:53.359> significant<01:09:53.839> subset<01:09:54.320> is<01:09:54.560> what<01:09:54.719> I\nyou know a significant subset is what I\nyou know a significant subset is what I just<01:09:54.960> said<01:09:55.120> it's<01:09:55.360> like<01:09:55.440> somewhere<01:09:55.679> in<01:09:55.840> the\njust said it's like somewhere in the\njust said it's like somewhere in the debuggy<01:09:56.400> debugging<01:09:56.880> memory<01:09:57.280> you<01:09:57.440> know\ndebuggy debugging memory you know\ndebuggy debugging memory you know debugging<01:09:58.159> registers<01:09:58.640> whatever<01:09:59.760> um<01:10:01.040> like<01:10:01.199> I\ndebugging registers whatever um like I\ndebugging registers whatever um like I said<01:10:01.920> walked<01:10:02.320> through<01:10:02.640> a<01:10:02.880> pipeline<01:10:03.280> for\nsaid walked through a pipeline for\nsaid walked through a pipeline for visualizing<01:10:04.080> stuff<01:10:04.239> from<01:10:04.400> that<01:10:04.880> but<01:10:05.120> let's\nvisualizing stuff from that but let's\nvisualizing stuff from that but let's appreciate<01:10:05.840> something<01:10:06.159> here<01:10:06.719> which<01:10:06.960> is<01:10:07.040> that\nappreciate something here which is that\nappreciate something here which is that this<01:10:07.920> is<01:10:08.080> a<01:10:08.320> subset<01:10:09.120> and<01:10:09.520> like<01:10:09.760> an<01:10:10.239> very<01:10:10.640> large\nthis is a subset and like an very large\nthis is a subset and like an very large number<01:10:11.199> of<01:10:11.360> cases<01:10:11.760> actually<01:10:12.400> it's<01:10:12.640> also<01:10:12.800> also\nnumber of cases actually it's also also\nnumber of cases actually it's also also common<01:10:13.760> to<01:10:13.920> look<01:10:14.000> at<01:10:14.239> memory<01:10:14.560> from<01:10:14.719> other\ncommon to look at memory from other\ncommon to look at memory from other sources<01:10:15.360> like<01:10:15.600> the<01:10:15.840> file<01:10:16.080> system,<01:10:16.880> right?<01:10:18.320> And\nsources like the file system, right? And\nsources like the file system, right? And turns<01:10:19.120> out<01:10:19.360> people<01:10:19.520> have<01:10:19.679> built<01:10:19.840> an<01:10:20.000> enormous\nturns out people have built an enormous\nturns out people have built an enormous number<01:10:20.560> of<01:10:20.719> tools<01:10:20.960> to<01:10:21.120> work<01:10:21.199> on<01:10:21.440> data<01:10:22.000> from<01:10:22.239> a\nnumber of tools to work on data from a\nnumber of tools to work on data from a file<01:10:22.640> system<01:10:23.600> like<01:10:24.239> IMEX\nfile system like IMEX\nfile system like IMEX looks<01:10:26.000> like<01:10:26.239> maybe<01:10:26.480> a<01:10:26.640> little<01:10:26.800> familiar.<01:10:27.679> Um\nlooks like maybe a little familiar. Um\nlooks like maybe a little familiar. Um 10x<01:10:30.640> views,<01:10:31.120> you<01:10:31.199> know,<01:10:31.360> source<01:10:31.679> code\n10x views, you know, source code\n10x views, you know, source code and<01:10:33.520> editing<01:10:33.920> source<01:10:34.239> code<01:10:34.719> obviously.<01:10:35.520> Um\nand editing source code obviously. Um\nand editing source code obviously. Um beyond<01:10:36.560> compare,<01:10:37.120> you<01:10:37.199> know,<01:10:37.360> take<01:10:37.600> two\nbeyond compare, you know, take two\nbeyond compare, you know, take two textual<01:10:38.239> buffers,<01:10:38.880> compare<01:10:39.120> them,<01:10:39.440> show<01:10:39.520> me\ntextual buffers, compare them, show me\ntextual buffers, compare them, show me how<01:10:39.840> they're<01:10:40.000> different.\nhow they're different.\nhow they're different. And<01:10:42.400> so<01:10:42.560> there's<01:10:42.880> sort<01:10:43.040> of<01:10:43.120> this<01:10:43.360> like\nAnd so there's sort of this like\nAnd so there's sort of this like unfortunate<01:10:45.520> problem<01:10:45.840> emerging,<01:10:46.320> right?\nunfortunate problem emerging, right?\nunfortunate problem emerging, right? We've<01:10:46.640> got<01:10:46.800> these<01:10:47.040> two<01:10:47.280> worlds<01:10:48.000> where<01:10:48.239> it's\nWe've got these two worlds where it's\nWe've got these two worlds where it's like<01:10:49.040> our<01:10:49.280> debug<01:10:49.920> world<01:10:50.239> where<01:10:50.560> you<01:10:50.719> know<01:10:50.800> we\nlike our debug world where you know we\nlike our debug world where you know we build<01:10:51.120> all<01:10:51.199> these<01:10:51.360> cool<01:10:51.520> debugger\nbuild all these cool debugger\nbuild all these cool debugger visualizers.<01:10:52.400> We've<01:10:52.480> got<01:10:52.560> a<01:10:52.640> hex<01:10:52.880> grid,<01:10:53.120> we've\nvisualizers. We've got a hex grid, we've\nvisualizers. We've got a hex grid, we've got<01:10:53.360> text,<01:10:53.600> we've<01:10:53.760> got<01:10:53.840> a<01:10:53.920> bit<01:10:54.159> map.<01:10:54.560> And<01:10:54.640> then\ngot text, we've got a bit map. And then\ngot text, we've got a bit map. And then it's<01:10:54.960> like<01:10:55.199> wait<01:10:55.679> on<01:10:55.920> the<01:10:56.080> file<01:10:56.400> world<01:10:56.640> I've\nit's like wait on the file world I've\nit's like wait on the file world I've also<01:10:57.040> got<01:10:57.120> a<01:10:57.280> hex<01:10:57.520> grid<01:10:57.760> and<01:10:58.080> which<01:10:58.320> is<01:10:58.560> would\nalso got a hex grid and which is would\nalso got a hex grid and which is would be<01:10:58.880> something<01:10:59.120> like<01:10:59.280> IMX.<01:11:00.000> I've<01:11:00.239> also<01:11:00.400> got<01:11:00.480> a\nbe something like IMX. I've also got a\nbe something like IMX. I've also got a text<01:11:00.880> viewer<01:11:01.360> editor<01:11:01.760> and<01:11:01.920> I've<01:11:02.159> also<01:11:02.320> got<01:11:02.400> a\ntext viewer editor and I've also got a\ntext viewer editor and I've also got a bit<01:11:02.719> map<01:11:02.880> viewer.<01:11:03.280> So<01:11:03.520> like<01:11:03.679> what's<01:11:03.920> what's\nbit map viewer. So like what's what's\nbit map viewer. So like what's what's kind<01:11:05.920> of<01:11:06.000> sucks,<01:11:06.400> right?<01:11:07.199> Um\nkind of sucks, right? Um\nkind of sucks, right? Um because<01:11:09.440> each<01:11:09.760> visualizer<01:11:10.320> is<01:11:10.400> sort<01:11:10.480> of<01:11:10.560> like\nbecause each visualizer is sort of like\nbecause each visualizer is sort of like coupled<01:11:11.199> to<01:11:11.360> like<01:11:11.600> where<01:11:11.840> the<01:11:12.000> data<01:11:12.159> is<01:11:12.320> coming\ncoupled to like where the data is coming\ncoupled to like where the data is coming from.<01:11:13.120> Like<01:11:13.440> these<01:11:13.760> only<01:11:14.000> apply<01:11:14.239> to<01:11:14.480> like\nfrom. Like these only apply to like\nfrom. Like these only apply to like reading<01:11:15.040> process<01:11:15.360> memory.<01:11:16.080> These<01:11:16.400> only<01:11:16.560> apply\nreading process memory. These only apply\nreading process memory. These only apply to<01:11:17.040> files.\nAnd<01:11:20.560> because<01:11:21.360> like\nAnd because like\nAnd because like the<01:11:23.520> one<01:11:23.679> on<01:11:23.840> the<01:11:24.000> right<01:11:24.159> is<01:11:24.400> more<01:11:24.640> common,\nthe one on the right is more common,\nthe one on the right is more common, right?<01:11:25.440> Like<01:11:25.600> it's<01:11:26.000> everyone's<01:11:26.480> built<01:11:26.719> tools\nright? Like it's everyone's built tools\nright? Like it's everyone's built tools for<01:11:27.199> this<01:11:27.360> side<01:11:28.159> and<01:11:28.640> you<01:11:28.880> know<01:11:30.159> comparatively\nfor this side and you know comparatively\nfor this side and you know comparatively few<01:11:30.960> people<01:11:31.040> have<01:11:31.280> built<01:11:31.440> tools<01:11:31.679> for<01:11:31.760> the<01:11:31.920> left\nfew people have built tools for the left\nfew people have built tools for the left side.<01:11:33.040> It's<01:11:33.280> sort<01:11:33.440> of<01:11:33.600> like<01:11:34.239> it's<01:11:34.480> just<01:11:34.640> more\nside. It's sort of like it's just more\nside. It's sort of like it's just more worth<01:11:35.040> it<01:11:35.120> to<01:11:35.280> build<01:11:35.440> tools<01:11:35.679> for<01:11:35.840> the<01:11:36.000> right\nworth it to build tools for the right\nworth it to build tools for the right side.<01:11:36.800> And<01:11:37.040> so<01:11:37.280> like<01:11:37.440> the<01:11:37.600> debuggy\nside. And so like the debuggy\nside. And so like the debuggy visualization<01:11:38.800> stuff<01:11:39.040> kind<01:11:39.280> of<01:11:39.360> suffers<01:11:39.920> a\nvisualization stuff kind of suffers a\nvisualization stuff kind of suffers a lot.<01:11:40.800> Um<01:11:41.040> it's<01:11:41.280> just<01:11:41.600> more<01:11:41.840> worthwhile<01:11:42.239> to<01:11:42.400> do\nlot. Um it's just more worthwhile to do\nlot. Um it's just more worthwhile to do an<01:11:42.640> investment<01:11:42.960> on<01:11:43.120> the<01:11:43.199> right<01:11:43.360> side<01:11:43.520> than<01:11:43.679> the\nan investment on the right side than the\nan investment on the right side than the left<01:11:44.080> side.\nleft side.\nleft side. Um<01:11:46.400> just<01:11:46.640> get<01:11:46.800> way<01:11:46.960> more<01:11:47.120> bang<01:11:47.360> for<01:11:47.520> buck<01:11:47.760> that\nUm just get way more bang for buck that\nUm just get way more bang for buck that way.<01:11:48.320> What's<01:11:48.560> worse<01:11:48.880> is<01:11:49.120> if<01:11:49.360> we<01:11:49.520> consider<01:11:49.840> the\nway. What's worse is if we consider the\nway. What's worse is if we consider the needs<01:11:50.159> of<01:11:50.320> an<01:11:50.480> actual<01:11:50.719> debugger<01:11:51.120> UI,<01:11:51.679> we<01:11:51.840> have\nneeds of an actual debugger UI, we have\nneeds of an actual debugger UI, we have to<01:11:52.080> do<01:11:52.159> the<01:11:52.320> file<01:11:52.560> system<01:11:52.800> part<01:11:53.040> two.<01:11:53.520> Like<01:11:53.679> we\nto do the file system part two. Like we\nto do the file system part two. Like we have<01:11:54.000> to<01:11:54.159> look<01:11:54.239> at<01:11:54.400> a<01:11:54.560> source<01:11:54.800> file<01:11:55.040> on<01:11:55.199> disk.\nhave to look at a source file on disk.\nhave to look at a source file on disk. We<01:11:55.920> have<01:11:56.000> to<01:11:56.080> pull<01:11:56.239> it<01:11:56.320> down<01:11:56.480> as<01:11:56.640> text.<01:11:56.960> We<01:11:57.040> have\nWe have to pull it down as text. We have\nWe have to pull it down as text. We have to<01:11:57.199> visualize<01:11:57.520> it<01:11:57.679> as<01:11:57.920> text.\nto visualize it as text.\nto visualize it as text. So<01:12:00.239> for<01:12:00.480> me<01:12:00.719> like<01:12:00.880> this<01:12:01.040> was<01:12:01.199> just<01:12:01.360> like<01:12:01.600> too\nSo for me like this was just like too\nSo for me like this was just like too much.<01:12:02.080> I'm<01:12:02.400> like<01:12:02.960> when<01:12:03.199> I<01:12:03.280> first<01:12:03.920> built<01:12:04.159> the\nmuch. I'm like when I first built the\nmuch. I'm like when I first built the visualizer<01:12:04.800> system<01:12:04.960> in<01:12:05.120> the<01:12:05.199> RAD<01:12:05.440> debugger,<01:12:06.159> I\nvisualizer system in the RAD debugger, I\nvisualizer system in the RAD debugger, I like<01:12:06.800> was<01:12:06.960> starting<01:12:07.280> to<01:12:07.520> have<01:12:07.920> like<01:12:08.320> here's\nlike was starting to have like here's\nlike was starting to have like here's how<01:12:08.800> you<01:12:09.040> like<01:12:09.280> here's<01:12:09.440> the<01:12:09.679> source<01:12:10.000> viewer\nhow you like here's the source viewer\nhow you like here's the source viewer and<01:12:10.880> here's<01:12:11.120> the<01:12:11.280> debuggy<01:12:11.920> process<01:12:12.960> memory\nand here's the debuggy process memory\nand here's the debuggy process memory text<01:12:13.760> viewer<01:12:14.400> and<01:12:14.640> they're<01:12:14.880> bifurcated<01:12:15.520> in\ntext viewer and they're bifurcated in\ntext viewer and they're bifurcated in this<01:12:15.840> uncomfortable<01:12:16.480> way<01:12:17.120> and<01:12:17.280> I<01:12:17.520> was<01:12:17.600> like\nthis uncomfortable way and I was like\nthis uncomfortable way and I was like there's<01:12:18.080> too<01:12:18.320> much<01:12:18.640> like<01:12:18.880> these<01:12:19.120> things\nthere's too much like these things\nthere's too much like these things should<01:12:19.520> be<01:12:19.600> the<01:12:19.760> same.<01:12:19.920> Like<01:12:20.080> I<01:12:20.239> had<01:12:20.400> a<01:12:20.560> feeling\nshould be the same. Like I had a feeling\nshould be the same. Like I had a feeling that<01:12:20.960> these<01:12:21.199> should<01:12:21.440> collapse.\nthat these should collapse.\nthat these should collapse. Um<01:12:24.719> why<01:12:24.880> do<01:12:25.040> I<01:12:25.120> feel<01:12:25.280> that<01:12:25.440> way?<01:12:25.679> Because<01:12:25.840> past\nUm why do I feel that way? Because past\nUm why do I feel that way? Because past the<01:12:26.400> point<01:12:26.560> of<01:12:26.719> actually<01:12:27.040> reading<01:12:27.360> the<01:12:27.520> data\nthe point of actually reading the data\nthe point of actually reading the data it's<01:12:28.159> like<01:12:28.239> the<01:12:28.480> same<01:12:28.560> thing,<01:12:28.800> right?<01:12:29.120> Same\nit's like the same thing, right? Same\nit's like the same thing, right? Same problem.\nUm<01:12:33.840> but<01:12:34.480> remember<01:12:34.800> I<01:12:35.040> said\nUm but remember I said\nUm but remember I said uh<01:12:37.040> our<01:12:37.199> visualizers<01:12:37.760> in<01:12:37.920> the<01:12:38.000> debugger<01:12:38.560> can\nuh our visualizers in the debugger can\nuh our visualizers in the debugger can apply<01:12:38.960> to<01:12:39.120> anything<01:12:39.360> the<01:12:39.520> debugger<01:12:39.920> can<01:12:40.480> uh\napply to anything the debugger can uh\napply to anything the debugger can uh can<01:12:41.199> evaluate.<01:12:42.640> So<01:12:42.960> what<01:12:43.199> can<01:12:43.600> the<01:12:43.840> debugger\ncan evaluate. So what can the debugger\ncan evaluate. So what can the debugger evaluate?\nevaluate?\nevaluate? So<01:12:47.440> so<01:12:47.679> far<01:12:47.920> a<01:12:48.159> debugger<01:12:48.480> evaluation<01:12:48.880> can\nSo so far a debugger evaluation can\nSo so far a debugger evaluation can produce<01:12:49.360> like<01:12:49.600> you<01:12:49.679> know<01:12:49.840> like<01:12:50.000> an<01:12:50.239> address<01:12:50.640> or\nproduce like you know like an address or\nproduce like you know like an address or a<01:12:51.360> register<01:12:51.760> or<01:12:52.000> a<01:12:52.239> value<01:12:53.679> um<01:12:54.159> or<01:12:54.320> register\na register or a value um or register\na register or a value um or register location<01:12:55.040> I<01:12:55.199> should<01:12:55.360> say<01:12:55.600> or<01:12:56.159> uh<01:12:56.239> or<01:12:56.880> like<01:12:57.120> a\nlocation I should say or uh or like a\nlocation I should say or uh or like a constant<01:12:57.679> value<01:12:57.920> of<01:12:58.159> something.\nconstant value of something.\nconstant value of something. But<01:13:00.480> if<01:13:00.640> we<01:13:00.800> extend<01:13:01.040> the<01:13:01.199> notion<01:13:01.760> of<01:13:02.000> an\nBut if we extend the notion of an\nBut if we extend the notion of an evaluation<01:13:03.360> to<01:13:03.679> also<01:13:04.000> include<01:13:04.239> a<01:13:04.400> notion<01:13:04.640> of\nevaluation to also include a notion of\nevaluation to also include a notion of which<01:13:05.520> space,<01:13:05.920> which<01:13:06.239> universe<01:13:06.640> that\nwhich space, which universe that\nwhich space, which universe that evaluation<01:13:07.440> is<01:13:07.600> within,<01:13:08.480> then<01:13:08.719> we<01:13:08.880> can\nevaluation is within, then we can\nevaluation is within, then we can broaden<01:13:09.360> the<01:13:09.520> applicability,<01:13:10.080> right?<01:13:10.239> We've\nbroaden the applicability, right? We've\nbroaden the applicability, right? We've sort<01:13:10.560> of<01:13:10.719> parameterize<01:13:11.199> this<01:13:11.440> thing<01:13:11.600> a<01:13:11.760> little\nsort of parameterize this thing a little\nsort of parameterize this thing a little bit<01:13:12.000> more<01:13:12.239> to<01:13:12.480> say<01:13:13.040> a<01:13:13.360> little<01:13:13.440> bit<01:13:13.600> more<01:13:13.840> about\nbit more to say a little bit more about\nbit more to say a little bit more about where<01:13:14.239> it<01:13:14.400> is<01:13:14.480> and<01:13:14.640> and<01:13:14.880> where<01:13:15.040> it's<01:13:15.280> coming\nwhere it is and and where it's coming\nwhere it is and and where it's coming from.<01:13:16.560> So<01:13:16.719> a<01:13:16.960> space<01:13:17.840> can<01:13:18.080> be<01:13:18.159> used<01:13:18.320> to<01:13:18.480> choose\nfrom. So a space can be used to choose\nfrom. So a space can be used to choose between<01:13:18.880> a<01:13:19.040> debug<01:13:19.679> obviously,\nbetween a debug obviously,\nbetween a debug obviously, but<01:13:21.920> it<01:13:22.159> can<01:13:22.239> also<01:13:22.719> pick<01:13:23.040> between,<01:13:23.840> let's<01:13:24.000> say,\nbut it can also pick between, let's say,\nbut it can also pick between, let's say, another<01:13:24.400> debuggy.<01:13:24.960> Let's<01:13:25.040> say<01:13:25.120> your<01:13:25.280> debugger\nanother debuggy. Let's say your debugger\nanother debuggy. Let's say your debugger is<01:13:25.679> not<01:13:25.760> just<01:13:25.920> attached<01:13:26.239> to<01:13:26.400> one<01:13:26.560> process,<01:13:26.960> but\nis not just attached to one process, but\nis not just attached to one process, but multiple<01:13:27.520> processes.<01:13:28.320> which<01:13:28.560> one<01:13:28.719> are<01:13:28.880> you\nmultiple processes. which one are you\nmultiple processes. which one are you evaluating<01:13:29.440> in<01:13:29.840> a<01:13:30.000> space<01:13:30.320> can<01:13:30.480> tell<01:13:30.640> you<01:13:30.800> that\nevaluating in a space can tell you that\nevaluating in a space can tell you that but<01:13:33.040> you<01:13:33.280> could<01:13:33.440> also<01:13:33.679> say<01:13:34.159> the<01:13:34.480> space<01:13:34.719> is<01:13:34.880> a\nbut you could also say the space is a\nbut you could also say the space is a file<01:13:35.440> or<01:13:35.600> the<01:13:35.760> space<01:13:35.920> is<01:13:36.080> just<01:13:36.239> some<01:13:36.400> file<01:13:36.640> on\nfile or the space is just some file on\nfile or the space is just some file on disk<01:13:37.280> at<01:13:37.520> some<01:13:37.760> path<01:13:38.320> or<01:13:38.640> it's<01:13:39.040> something<01:13:39.280> in\ndisk at some path or it's something in\ndisk at some path or it's something in the<01:13:39.600> debugger<01:13:40.000> itself.<01:13:41.199> So<01:13:41.360> if<01:13:41.520> we<01:13:41.679> expand\nthe debugger itself. So if we expand\nthe debugger itself. So if we expand that<01:13:43.360> then<01:13:43.600> these<01:13:43.920> different<01:13:44.239> worlds<01:13:44.880> simply\nthat then these different worlds simply\nthat then these different worlds simply become<01:13:45.600> different<01:13:46.000> spaces<01:13:46.880> within<01:13:47.199> which<01:13:47.440> the\nbecome different spaces within which the\nbecome different spaces within which the debugger<01:13:48.000> can<01:13:48.159> evaluate.\ndebugger can evaluate.\ndebugger can evaluate. So<01:13:49.920> remember<01:13:50.159> that<01:13:50.320> source<01:13:50.640> view<01:13:50.880> in<01:13:51.040> the<01:13:51.120> RAD\nSo remember that source view in the RAD\nSo remember that source view in the RAD debugger<01:13:52.640> that's<01:13:52.880> just<01:13:53.040> the<01:13:53.199> text<01:13:53.440> visualizer\ndebugger that's just the text visualizer\ndebugger that's just the text visualizer applied<01:13:54.239> to<01:13:54.320> a<01:13:54.480> file<01:13:54.719> path\napplied to a file path\napplied to a file path output<01:13:57.440> tab\noutput tab\noutput tab just<01:13:59.199> the<01:13:59.360> text<01:13:59.600> visualizer<01:14:00.320> evaluating<01:14:00.800> the\njust the text visualizer evaluating the\njust the text visualizer evaluating the output<01:14:01.199> log<01:14:01.520> within<01:14:01.760> the<01:14:01.840> debugger<01:14:02.320> space.\noutput log within the debugger space.\noutput log within the debugger space. What<01:14:04.159> happens<01:14:04.400> if<01:14:04.480> you<01:14:04.640> open<01:14:04.800> a<01:14:04.960> binary<01:14:05.280> file?\nWhat happens if you open a binary file?\nWhat happens if you open a binary file? It's<01:14:06.159> just<01:14:06.239> a<01:14:06.400> hex<01:14:06.719> viewer<01:14:07.520> because<01:14:07.760> the\nIt's just a hex viewer because the\nIt's just a hex viewer because the debugger<01:14:08.320> has<01:14:08.400> a<01:14:08.560> way<01:14:08.640> of<01:14:08.719> viewing<01:14:08.960> memory\ndebugger has a way of viewing memory\ndebugger has a way of viewing memory from<01:14:09.520> any<01:14:09.760> space<01:14:09.920> with<01:14:10.080> a<01:14:10.239> hex<01:14:10.480> grid.<01:14:10.880> So\nfrom any space with a hex grid. So\nfrom any space with a hex grid. So that's<01:14:11.280> that's<01:14:11.600> how<01:14:11.760> that<01:14:12.080> actually<01:14:12.640> works\nthat's that's how that actually works\nthat's that's how that actually works and<01:14:13.120> it<01:14:13.280> doesn't<01:14:13.440> stop<01:14:13.600> with<01:14:13.760> the<01:14:13.920> visualizer\nand it doesn't stop with the visualizer\nand it doesn't stop with the visualizer uh<01:14:15.199> sort<01:14:15.360> of<01:14:15.520> endpoints.\nuh sort of endpoints.\nuh sort of endpoints. Um,<01:14:18.159> you<01:14:18.400> might<01:14:18.560> also<01:14:18.880> remember<01:14:19.440> like<01:14:19.600> when<01:14:19.760> I\nUm, you might also remember like when I\nUm, you might also remember like when I added<01:14:20.159> a<01:14:20.320> condition<01:14:20.560> to<01:14:20.719> a<01:14:20.880> breakpoint,<01:14:21.199> I\nadded a condition to a breakpoint, I\nadded a condition to a breakpoint, I rightcicked<01:14:21.760> on<01:14:21.840> the<01:14:21.920> breakpoint.<01:14:22.320> This<01:14:22.480> UI\nrightcicked on the breakpoint. This UI\nrightcicked on the breakpoint. This UI pops<01:14:22.960> up.<01:14:23.280> Kind<01:14:23.440> of<01:14:23.520> looks<01:14:23.679> like<01:14:23.760> a<01:14:23.920> watch\npops up. Kind of looks like a watch\npops up. Kind of looks like a watch window,<01:14:24.560> doesn't<01:14:24.719> it?\nwindow, doesn't it?\nwindow, doesn't it? You<01:14:27.360> may<01:14:27.520> think<01:14:27.679> it<01:14:27.920> looks<01:14:28.080> like<01:14:28.239> one\nYou may think it looks like one\nYou may think it looks like one maybe.<01:14:31.199> Um,<01:14:31.520> and<01:14:31.679> that's<01:14:31.920> because<01:14:32.080> it<01:14:32.159> is.\nmaybe. Um, and that's because it is.\nmaybe. Um, and that's because it is. It's<01:14:32.480> an<01:14:32.640> actual<01:14:32.800> watch<01:14:33.040> window<01:14:33.280> evaluating\nIt's an actual watch window evaluating\nIt's an actual watch window evaluating the<01:14:33.920> break<01:14:34.159> point<01:14:34.400> within<01:14:34.640> the<01:14:34.800> debugger\nthe break point within the debugger\nthe break point within the debugger address<01:14:35.840> or<01:14:36.640> not<01:14:36.880> address<01:14:37.120> space,<01:14:37.360> debugger\naddress or not address space, debugger\naddress or not address space, debugger space.<01:14:38.320> Uh,\nspace. Uh,\nspace. Uh, and<01:14:40.640> it<01:14:40.880> doesn't<01:14:41.040> stop<01:14:41.199> with<01:14:41.360> breakpoints.\nand it doesn't stop with breakpoints.\nand it doesn't stop with breakpoints. All<01:14:42.159> configuration<01:14:42.640> data<01:14:42.960> works<01:14:43.120> this<01:14:43.440> If<01:14:43.600> I\nAll configuration data works this If I\nAll configuration data works this If I evaluate<01:14:44.320> a<01:14:44.640> target<01:14:45.040> like<01:14:45.280> all<01:14:45.360> the<01:14:45.840> all<01:14:46.000> the\nevaluate a target like all the all the\nevaluate a target like all the all the options<01:14:46.400> for<01:14:46.560> launching<01:14:46.800> an<01:14:47.040> executable<01:14:48.000> um\noptions for launching an executable um\noptions for launching an executable um that's<01:14:48.320> just<01:14:48.480> evaluating<01:14:48.960> the<01:14:49.120> target<01:14:50.480> looks\nthat's just evaluating the target looks\nthat's just evaluating the target looks like<01:14:50.800> a<01:14:50.960> watch<01:14:51.199> window<01:14:51.760> because<01:14:52.000> there's<01:14:52.320> one.\nlike a watch window because there's one.\nlike a watch window because there's one. Here's<01:14:53.600> the<01:14:53.760> list<01:14:53.920> of<01:14:54.080> threads<01:14:54.880> in<01:14:55.120> the<01:14:55.199> RAD\nHere's the list of threads in the RAD\nHere's the list of threads in the RAD debugger.\ndebugger.\ndebugger. Need<01:14:57.520> I<01:14:57.679> say<01:14:57.840> more?<01:14:58.159> It's<01:14:58.320> a<01:14:58.400> watch<01:14:58.640> window.\nNeed I say more? It's a watch window.\nNeed I say more? It's a watch window. Tab<01:15:01.920> rightclick<01:15:02.400> menu.<01:15:03.120> Yes,<01:15:03.600> I<01:15:03.840> I<01:15:04.080> know<01:15:04.320> it's\nTab rightclick menu. Yes, I I know it's\nTab rightclick menu. Yes, I I know it's a<01:15:04.719> watch<01:15:04.960> window.\na watch window.\na watch window. File<01:15:07.120> tree<01:15:07.360> view.<01:15:08.480> Guess<01:15:08.719> what?\nFile tree view. Guess what?\nFile tree view. Guess what? >> Watch<01:15:10.640> window.<01:15:11.280> Just<01:15:11.600> evaluating<01:15:12.080> folders.\n>> Watch window. Just evaluating folders.\n>> Watch window. Just evaluating folders. Everything's<01:15:13.600> a<01:15:13.760> watch<01:15:14.000> window.\nEverything's a watch window.\nEverything's a watch window. Everything's<01:15:15.920> a<01:15:16.080> watch<01:15:16.239> window.\nNow,<01:15:21.840> to<01:15:22.000> build<01:15:22.239> visualizations<01:15:22.800> for<01:15:22.960> the\nNow, to build visualizations for the\nNow, to build visualizations for the system,<01:15:23.679> a<01:15:23.920> visualization<01:15:24.480> engine<01:15:24.719> needs\nsystem, a visualization engine needs\nsystem, a visualization engine needs visualizers<01:15:25.840> that<01:15:26.080> are<01:15:26.159> sort<01:15:26.320> of<01:15:26.480> agnostic<01:15:27.040> to\nvisualizers that are sort of agnostic to\nvisualizers that are sort of agnostic to the<01:15:27.679> uh<01:15:27.840> source<01:15:28.080> of<01:15:28.239> the<01:15:28.400> underlying<01:15:28.880> data.\nthe uh source of the underlying data.\nthe uh source of the underlying data. Um,<01:15:30.480> so<01:15:30.719> in<01:15:30.880> other<01:15:30.960> words,<01:15:31.120> they<01:15:31.280> need<01:15:31.360> to<01:15:31.520> be\nUm, so in other words, they need to be\nUm, so in other words, they need to be based<01:15:31.760> around<01:15:32.000> like<01:15:32.159> some<01:15:32.400> contents.<01:15:33.040> Like\nbased around like some contents. Like\nbased around like some contents. Like you<01:15:33.440> want<01:15:33.600> to<01:15:33.760> talk<01:15:33.920> about<01:15:34.080> the<01:15:34.239> contents<01:15:34.640> of\nyou want to talk about the contents of\nyou want to talk about the contents of something,<01:15:35.760> not<01:15:36.000> like<01:15:36.640> um<01:15:37.760> the<01:15:38.000> path<01:15:38.239> to<01:15:38.480> that\nsomething, not like um the path to that\nsomething, not like um the path to that data<01:15:38.880> because<01:15:39.120> that<01:15:39.280> couples<01:15:39.600> it<01:15:39.760> sort<01:15:39.920> of<01:15:40.000> to\ndata because that couples it sort of to\ndata because that couples it sort of to the<01:15:40.320> file<01:15:40.640> to<01:15:40.719> the<01:15:40.880> file<01:15:41.120> system,<01:15:41.520> right?\nthe file to the file system, right?\nthe file to the file system, right? Um,<01:15:43.679> so<01:15:43.920> let's<01:15:44.080> imagine<01:15:44.400> a<01:15:44.560> filebased<01:15:45.840> viewing\nUm, so let's imagine a filebased viewing\nUm, so let's imagine a filebased viewing program.<01:15:46.880> In<01:15:47.040> that<01:15:47.199> case,<01:15:47.360> the<01:15:47.600> user<01:15:47.840> is<01:15:48.000> like,\nprogram. In that case, the user is like,\nprogram. In that case, the user is like, I'm<01:15:48.480> going<01:15:48.560> to<01:15:48.640> view<01:15:48.800> this<01:15:49.040> path<01:15:49.440> and<01:15:49.600> the\nI'm going to view this path and the\nI'm going to view this path and the program<01:15:50.080> produces<01:15:50.400> a<01:15:50.560> UI.<01:15:51.199> If<01:15:51.360> the<01:15:51.520> code<01:15:51.679> is\nprogram produces a UI. If the code is\nprogram produces a UI. If the code is written<01:15:52.080> exactly<01:15:52.480> like<01:15:52.719> this,<01:15:53.120> then<01:15:53.360> the<01:15:53.520> UI\nwritten exactly like this, then the UI\nwritten exactly like this, then the UI path<01:15:54.080> is<01:15:54.480> just<01:15:54.800> completely<01:15:55.280> wound<01:15:55.600> together\npath is just completely wound together\npath is just completely wound together with<01:15:56.000> the<01:15:56.159> idea<01:15:56.560> of<01:15:56.800> pulling<01:15:57.120> the<01:15:57.280> data<01:15:57.440> from\nwith the idea of pulling the data from\nwith the idea of pulling the data from the<01:15:57.679> file<01:15:57.920> system.<01:15:58.400> Now,<01:15:58.640> a<01:15:58.800> contentbased\nthe file system. Now, a contentbased\nthe file system. Now, a contentbased viewing<01:15:59.840> program<01:16:00.640> produces<01:16:01.040> a<01:16:01.199> UI\nviewing program produces a UI\nviewing program produces a UI given<01:16:03.120> some<01:16:03.280> blob<01:16:03.600> of<01:16:03.760> data<01:16:04.640> whether<01:16:04.880> it's\ngiven some blob of data whether it's\ngiven some blob of data whether it's read<01:16:05.280> from<01:16:05.360> the<01:16:05.520> file<01:16:05.760> system<01:16:06.000> or<01:16:06.239> from\nread from the file system or from\nread from the file system or from somewhere<01:16:06.800> else.<01:16:07.600> So<01:16:07.760> the<01:16:08.000> input<01:16:08.320> is<01:16:08.480> the<01:16:08.719> data\nsomewhere else. So the input is the data\nsomewhere else. So the input is the data instead<01:16:09.360> of<01:16:09.440> the<01:16:09.679> path<01:16:09.920> to<01:16:10.080> the<01:16:10.239> data<01:16:11.120> since\ninstead of the path to the data since\ninstead of the path to the data since the<01:16:11.600> path<01:16:11.840> is<01:16:12.080> coupled<01:16:12.400> to<01:16:12.480> the<01:16:12.640> file<01:16:12.880> system.\nthe path is coupled to the file system.\nthe path is coupled to the file system. Now<01:16:14.239> we<01:16:14.480> know<01:16:14.640> that<01:16:14.880> in<01:16:15.040> the<01:16:15.120> debugger<01:16:15.840> the\nNow we know that in the debugger the\nNow we know that in the debugger the user<01:16:16.640> can<01:16:16.800> refer<01:16:17.120> to<01:16:17.520> content<01:16:18.400> using<01:16:18.719> an\nuser can refer to content using an\nuser can refer to content using an evaluation.\nevaluation.\nevaluation. So<01:16:22.000> let's<01:16:22.159> evaluate<01:16:22.800> uh<01:16:22.960> let's<01:16:23.199> let's<01:16:23.600> um\nSo let's evaluate uh let's let's um\nSo let's evaluate uh let's let's um imagine<01:16:24.400> what<01:16:24.560> we<01:16:24.719> need<01:16:24.880> in<01:16:25.040> order<01:16:25.199> to<01:16:25.440> build<01:16:25.920> a\nimagine what we need in order to build a\nimagine what we need in order to build a bit<01:16:26.400> map<01:16:26.640> viewer.<01:16:27.760> The<01:16:27.920> user<01:16:28.159> specifies<01:16:28.640> some\nbit map viewer. The user specifies some\nbit map viewer. The user specifies some evaluation,<01:16:29.679> some<01:16:29.920> visualizer<01:16:30.400> parameters\nevaluation, some visualizer parameters\nevaluation, some visualizer parameters and<01:16:31.280> we<01:16:31.520> need<01:16:31.600> to<01:16:31.760> map<01:16:32.000> that<01:16:32.719> uh<01:16:33.040> to<01:16:33.360> some<01:16:33.600> data\nand we need to map that uh to some data\nand we need to map that uh to some data and<01:16:34.000> present<01:16:34.239> that<01:16:34.400> as<01:16:34.560> a<01:16:34.719> texture<01:16:35.040> somehow.\nand present that as a texture somehow.\nand present that as a texture somehow. that<01:16:36.239> might<01:16:36.480> require<01:16:36.880> like\nthat might require like\nthat might require like uploading<01:16:39.520> the<01:16:39.760> data<01:16:39.920> to<01:16:40.080> the<01:16:40.239> GPU<01:16:40.719> and\nuploading the data to the GPU and\nuploading the data to the GPU and obtaining<01:16:41.360> a<01:16:41.520> handle<01:16:41.840> to<01:16:41.920> a<01:16:42.080> texture<01:16:42.800> and<01:16:42.960> then\nobtaining a handle to a texture and then\nobtaining a handle to a texture and then we<01:16:43.280> render<01:16:43.679> with<01:16:43.840> that<01:16:44.080> texture.\nwe render with that texture.\nwe render with that texture. Now<01:16:45.840> to<01:16:46.000> do<01:16:46.080> that<01:16:46.239> we<01:16:46.400> might<01:16:46.560> need<01:16:46.640> to<01:16:46.800> do\nNow to do that we might need to do\nNow to do that we might need to do something<01:16:47.600> like<01:16:47.760> these<01:16:48.080> steps<01:16:48.480> like<01:16:48.640> given\nsomething like these steps like given\nsomething like these steps like given some<01:16:49.120> evaluation<01:16:49.600> you<01:16:49.840> extract<01:16:50.159> base<01:16:50.480> address\nsome evaluation you extract base address\nsome evaluation you extract base address and<01:16:51.360> a<01:16:51.600> space<01:16:52.719> you<01:16:52.880> extract<01:16:53.280> some<01:16:53.440> memory<01:16:53.840> size\nand a space you extract some memory size\nand a space you extract some memory size which<01:16:55.360> you<01:16:55.520> would<01:16:55.600> get<01:16:55.760> from<01:16:55.920> the<01:16:56.080> visualizer\nwhich you would get from the visualizer\nwhich you would get from the visualizer things<01:16:57.600> because<01:16:58.000> specify<01:16:58.400> the<01:16:58.560> dimensions\nthings because specify the dimensions\nthings because specify the dimensions the<01:16:59.040> format<01:16:59.280> you<01:16:59.440> can<01:16:59.520> infer<01:16:59.840> the<01:17:00.000> memory<01:17:00.239> size\nthe format you can infer the memory size\nthe format you can infer the memory size you<01:17:01.440> need<01:17:01.520> to<01:17:01.679> read<01:17:01.840> the<01:17:02.000> memory<01:17:02.239> from<01:17:02.320> the\nyou need to read the memory from the\nyou need to read the memory from the space<01:17:02.719> and<01:17:02.960> you<01:17:03.040> need<01:17:03.199> to<01:17:03.280> upload<01:17:03.600> the<01:17:03.840> memory\nspace and you need to upload the memory\nspace and you need to upload the memory to<01:17:04.159> the<01:17:04.320> GPU<01:17:04.719> storage<01:17:05.120> right\nto the GPU storage right\nto the GPU storage right now<01:17:08.560> the<01:17:08.800> naive<01:17:09.120> implementation<01:17:09.520> of<01:17:09.679> this\nnow the naive implementation of this\nnow the naive implementation of this would<01:17:10.000> just<01:17:10.239> put<01:17:10.400> this<01:17:10.560> straight<01:17:10.800> up<01:17:11.440> into<01:17:11.760> the\nwould just put this straight up into the\nwould just put this straight up into the into<01:17:12.159> the<01:17:12.320> UI<01:17:12.640> build<01:17:13.120> right<01:17:14.480> the<01:17:14.640> UI<01:17:14.880> is<01:17:15.040> just\ninto the UI build right the UI is just\ninto the UI build right the UI is just going<01:17:15.520> along.<01:17:15.760> It's<01:17:15.920> like<01:17:16.080> building<01:17:16.239> buttons\ngoing along. It's like building buttons\ngoing along. It's like building buttons and<01:17:16.719> stuff<01:17:16.800> and<01:17:16.960> it's<01:17:17.199> like<01:17:17.520> need<01:17:17.679> to<01:17:17.760> build<01:17:17.840> a\nand stuff and it's like need to build a\nand stuff and it's like need to build a bit<01:17:18.159> map<01:17:18.400> viewer.<01:17:18.880> Let's<01:17:19.199> like<01:17:19.360> get<01:17:19.600> the<01:17:19.679> base\nbit map viewer. Let's like get the base\nbit map viewer. Let's like get the base address,<01:17:20.400> the<01:17:20.640> space,<01:17:21.120> get<01:17:21.360> how<01:17:21.520> many<01:17:21.679> bytes<01:17:21.920> I\naddress, the space, get how many bytes I\naddress, the space, get how many bytes I need<01:17:22.159> to<01:17:22.239> read,<01:17:22.480> read<01:17:22.719> all<01:17:22.800> the<01:17:22.960> memory<01:17:23.199> and\nneed to read, read all the memory and\nneed to read, read all the memory and then<01:17:23.520> upload<01:17:23.840> it<01:17:23.920> and<01:17:24.080> then<01:17:24.239> get<01:17:24.400> a<01:17:24.560> texture\nthen upload it and then get a texture\nthen upload it and then get a texture handle.<01:17:26.080> Um,<01:17:26.960> so<01:17:27.120> that's<01:17:27.360> the<01:17:27.520> naive\nhandle. Um, so that's the naive\nhandle. Um, so that's the naive implementation.<01:17:28.320> You<01:17:28.400> just<01:17:28.560> do<01:17:28.640> that<01:17:28.800> all<01:17:28.960> on\nimplementation. You just do that all on\nimplementation. You just do that all on the<01:17:29.120> UI<01:17:29.440> thread.<01:17:30.320> Um,<01:17:31.040> you<01:17:31.280> run<01:17:31.440> into<01:17:31.600> a\nthe UI thread. Um, you run into a\nthe UI thread. Um, you run into a problem<01:17:31.920> with<01:17:32.080> that<01:17:32.800> unsurprisingly,<01:17:33.920> which\nproblem with that unsurprisingly, which\nproblem with that unsurprisingly, which is<01:17:34.239> that<01:17:34.400> the<01:17:34.560> size<01:17:34.719> of<01:17:34.800> this<01:17:35.040> data<01:17:35.199> is\nis that the size of this data is\nis that the size of this data is unbounded.\nunbounded.\nunbounded. You<01:17:37.600> have<01:17:37.760> very<01:17:38.000> few<01:17:38.239> constraints<01:17:38.640> about<01:17:38.880> how\nYou have very few constraints about how\nYou have very few constraints about how large<01:17:39.440> this<01:17:39.679> can<01:17:39.840> actually<01:17:40.080> be.<01:17:41.199> um<01:17:42.400> which\nlarge this can actually be. um which\nlarge this can actually be. um which also<01:17:42.960> means\nalso means\nalso means that<01:17:45.040> is<01:17:45.199> unbounded.<01:17:46.159> These<01:17:46.480> two<01:17:46.640> things<01:17:46.719> are\nthat is unbounded. These two things are\nthat is unbounded. These two things are unbounded.<01:17:47.760> So<01:17:48.320> remember<01:17:48.719> like<01:17:49.120> everything\nunbounded. So remember like everything\nunbounded. So remember like everything up<01:17:49.679> until<01:17:49.920> this<01:17:50.159> point<01:17:50.480> I've<01:17:50.719> been<01:17:50.880> like\nup until this point I've been like\nup until this point I've been like talking<01:17:51.280> about<01:17:51.360> how<01:17:51.520> to<01:17:51.679> window<01:17:51.920> a<01:17:52.159> watch\ntalking about how to window a watch\ntalking about how to window a watch tree.<01:17:52.640> I've<01:17:52.880> talked<01:17:53.040> about<01:17:53.440> how<01:17:53.679> to<01:17:53.760> like\ntree. I've talked about how to like\ntree. I've talked about how to like scope<01:17:54.320> down<01:17:54.480> what<01:17:54.640> the<01:17:54.800> debugger<01:17:55.120> is<01:17:55.199> looking\nscope down what the debugger is looking\nscope down what the debugger is looking at<01:17:55.520> because<01:17:55.679> otherwise<01:17:55.920> our<01:17:56.159> debugger<01:17:56.480> UI<01:17:56.719> is\nat because otherwise our debugger UI is\nat because otherwise our debugger UI is going<01:17:56.880> to<01:17:57.040> be<01:17:57.280> going<01:17:57.440> to<01:17:57.520> have<01:17:57.679> way<01:17:57.920> too<01:17:58.080> much\ngoing to be going to have way too much\ngoing to be going to have way too much stuff<01:17:58.400> to<01:17:58.560> do.<01:17:58.960> You've<01:17:59.280> got<01:17:59.440> just<01:18:00.080> so<01:18:00.320> much\nstuff to do. You've got just so much\nstuff to do. You've got just so much memory<01:18:00.719> to<01:18:00.880> read,<01:18:01.120> so<01:18:01.280> much<01:18:01.440> stuff<01:18:01.600> to<01:18:01.760> build.\nmemory to read, so much stuff to build.\nmemory to read, so much stuff to build. All<01:18:03.120> like<01:18:03.679> half<01:18:04.000> this<01:18:04.159> talk<01:18:04.480> has<01:18:04.719> really<01:18:04.880> been\nAll like half this talk has really been\nAll like half this talk has really been about<01:18:05.520> how<01:18:05.679> do<01:18:05.760> I<01:18:06.000> scope<01:18:06.320> this<01:18:06.560> down?<01:18:07.199> How<01:18:07.360> do<01:18:07.440> I\nabout how do I scope this down? How do I\nabout how do I scope this down? How do I not<01:18:07.840> do<01:18:07.920> all<01:18:08.159> that<01:18:08.320> work?<01:18:09.199> And<01:18:09.360> I've<01:18:09.600> just<01:18:09.760> like\nnot do all that work? And I've just like\nnot do all that work? And I've just like completely<01:18:10.400> eliminated<01:18:10.880> all<01:18:11.120> that<01:18:11.199> with<01:18:11.360> this\ncompletely eliminated all that with this\ncompletely eliminated all that with this step,<01:18:12.719> right?\nstep, right?\nstep, right? Furthermore,<01:18:15.679> this<01:18:15.840> isn't<01:18:16.080> a<01:18:16.239> windowed\nFurthermore, this isn't a windowed\nFurthermore, this isn't a windowed problem.<01:18:17.120> Like<01:18:17.280> you<01:18:17.440> can't<01:18:17.600> really<01:18:17.840> window\nproblem. Like you can't really window\nproblem. Like you can't really window this<01:18:18.400> part.<01:18:19.600> Um,<01:18:20.719> doesn't<01:18:20.960> really<01:18:21.120> fit<01:18:21.280> the\nthis part. Um, doesn't really fit the\nthis part. Um, doesn't really fit the pattern.<01:18:22.400> Uh,<01:18:23.040> other<01:18:23.360> visualizers,<01:18:24.000> similar\npattern. Uh, other visualizers, similar\npattern. Uh, other visualizers, similar problem.<01:18:24.880> To<01:18:25.040> visualize<01:18:25.440> text,<01:18:26.080> pull<01:18:26.239> it<01:18:26.400> all\nproblem. To visualize text, pull it all\nproblem. To visualize text, pull it all down.<01:18:27.120> Disassembly,<01:18:27.760> pull<01:18:27.840> it<01:18:27.920> all<01:18:28.080> down.\ndown. Disassembly, pull it all down.\ndown. Disassembly, pull it all down. Geometry,<01:18:28.800> pull<01:18:28.960> it<01:18:29.040> all<01:18:29.280> down.<01:18:30.080> Um,<01:18:31.040> pointer\nGeometry, pull it all down. Um, pointer\nGeometry, pull it all down. Um, pointer visualizer,<01:18:32.320> you<01:18:32.480> got<01:18:32.640> to<01:18:32.719> like<01:18:32.960> walk<01:18:33.199> the\nvisualizer, you got to like walk the\nvisualizer, you got to like walk the pointer<01:18:33.760> graph<01:18:34.000> and<01:18:34.159> build<01:18:34.320> it<01:18:34.560> up.<01:18:35.760> And<01:18:35.920> so\npointer graph and build it up. And so\npointer graph and build it up. And so you<01:18:36.239> need<01:18:36.400> this<01:18:36.560> like<01:18:36.800> large<01:18:37.120> data\nyou need this like large data\nyou need this like large data preparation<01:18:38.000> pass<01:18:38.800> before<01:18:39.120> you<01:18:39.360> actually<01:18:39.520> go\npreparation pass before you actually go\npreparation pass before you actually go and<01:18:39.920> build<01:18:40.080> the<01:18:40.239> visualizer<01:18:40.800> UI.<01:18:41.600> Um<01:18:43.040> so\nand build the visualizer UI. Um so\nand build the visualizer UI. Um so putting<01:18:43.679> this<01:18:43.920> non-winded<01:18:44.560> stuff<01:18:44.719> in<01:18:44.880> the<01:18:45.040> UI\nputting this non-winded stuff in the UI\nputting this non-winded stuff in the UI build<01:18:45.520> just<01:18:45.760> compromises<01:18:46.239> everything.<01:18:46.560> It\nbuild just compromises everything. It\nbuild just compromises everything. It just<01:18:46.880> ruins<01:18:47.199> everything<01:18:47.520> else.<01:18:48.080> If<01:18:48.320> you<01:18:48.400> do\njust ruins everything else. If you do\njust ruins everything else. If you do this<01:18:48.719> it's<01:18:48.960> like<01:18:49.600> nothing<01:18:49.920> was<01:18:50.159> gained.\nthis it's like nothing was gained.\nthis it's like nothing was gained. So<01:18:53.280> instead\nSo instead\nSo instead the<01:18:56.239> evaluation<01:18:56.800> and<01:18:56.960> UI<01:18:57.360> paths<01:18:58.239> use<01:18:58.719> light\nthe evaluation and UI paths use light\nthe evaluation and UI paths use light keys<01:18:59.520> to<01:18:59.679> the<01:18:59.840> data.<01:19:00.159> So<01:19:00.320> they<01:19:00.560> say<01:19:01.120> I've<01:19:01.440> got\nkeys to the data. So they say I've got\nkeys to the data. So they say I've got some<01:19:01.840> light<01:19:02.159> key<01:19:02.400> which<01:19:02.640> can<01:19:03.120> which<01:19:03.360> can<01:19:03.520> be\nsome light key which can which can be\nsome light key which can which can be used<01:19:03.840> to<01:19:04.000> get<01:19:04.159> to<01:19:04.320> the<01:19:04.480> data\nused to get to the data\nused to get to the data which<01:19:06.800> this<01:19:06.960> is<01:19:07.120> what<01:19:07.360> a<01:19:07.840> like<01:19:08.560> when<01:19:08.719> you<01:19:08.880> use<01:19:09.040> a\nwhich this is what a like when you use a\nwhich this is what a like when you use a file<01:19:09.840> system<01:19:10.080> based<01:19:10.400> program<01:19:10.880> this<01:19:10.960> is<01:19:11.040> what\nfile system based program this is what\nfile system based program this is what the<01:19:11.360> path<01:19:11.520> is<01:19:11.760> right<01:19:11.840> you've<01:19:12.080> got<01:19:12.159> some<01:19:12.320> light\nthe path is right you've got some light\nthe path is right you've got some light key<01:19:13.040> it's<01:19:13.360> much<01:19:13.520> lighter<01:19:13.840> than<01:19:13.920> the<01:19:14.080> data\nkey it's much lighter than the data\nkey it's much lighter than the data which<01:19:14.480> you<01:19:14.719> can<01:19:14.880> use<01:19:15.040> to<01:19:15.280> get<01:19:15.440> to<01:19:15.600> the<01:19:15.760> data<01:19:16.800> and\nwhich you can use to get to the data and\nwhich you can use to get to the data and then<01:19:17.280> the<01:19:17.600> UI<01:19:17.920> thread<01:19:18.159> wants<01:19:18.400> to<01:19:18.480> sort<01:19:18.640> of<01:19:18.800> use\nthen the UI thread wants to sort of use\nthen the UI thread wants to sort of use that<01:19:19.199> key<01:19:19.760> and<01:19:19.920> sort<01:19:20.080> of<01:19:20.159> like<01:19:20.480> tell<01:19:20.800> some\nthat key and sort of like tell some\nthat key and sort of like tell some system<01:19:21.360> it's<01:19:21.520> like<01:19:21.760> look<01:19:21.920> I've<01:19:22.159> got<01:19:22.480> got<01:19:22.719> this\nsystem it's like look I've got got this\nsystem it's like look I've got got this key<01:19:23.199> give<01:19:23.280> me<01:19:23.440> the<01:19:23.920> go<01:19:24.159> and<01:19:24.320> read<01:19:24.560> and<01:19:24.800> prepare\nkey give me the go and read and prepare\nkey give me the go and read and prepare this<01:19:25.280> data<01:19:25.520> for<01:19:25.679> my<01:19:25.840> visualizer<01:19:27.040> and<01:19:27.199> then\nthis data for my visualizer and then\nthis data for my visualizer and then when<01:19:27.679> it's<01:19:27.840> ready<01:19:28.080> I'll<01:19:28.320> build<01:19:28.480> the<01:19:28.640> UI<01:19:28.880> with\nwhen it's ready I'll build the UI with\nwhen it's ready I'll build the UI with it<01:19:29.440> Right?\nit Right?\nit Right? So<01:19:31.840> even<01:19:32.080> if<01:19:32.239> some<01:19:32.400> data<01:19:32.640> preparation<01:19:33.120> task\nSo even if some data preparation task\nSo even if some data preparation task takes<01:19:33.920> like<01:19:34.960> n<01:19:35.280> frames<01:19:35.679> to<01:19:35.840> actually<01:19:36.080> execute,\ntakes like n frames to actually execute,\ntakes like n frames to actually execute, the<01:19:36.960> debugger's<01:19:37.440> UI<01:19:37.760> can<01:19:38.000> continue<01:19:38.320> just\nthe debugger's UI can continue just\nthe debugger's UI can continue just going<01:19:38.719> along<01:19:39.040> smoothly.\ngoing along smoothly.\ngoing along smoothly. Very<01:19:42.000> simple<01:19:42.239> way<01:19:42.400> to<01:19:42.640> produce<01:19:42.880> a<01:19:43.040> light<01:19:43.280> key\nVery simple way to produce a light key\nVery simple way to produce a light key which<01:19:44.159> refers<01:19:44.560> to<01:19:44.800> some<01:19:45.040> data<01:19:45.280> uniquely\nwhich refers to some data uniquely\nwhich refers to some data uniquely is<01:19:47.280> to<01:19:47.440> take<01:19:47.600> a<01:19:47.760> hash<01:19:47.920> of<01:19:48.080> the<01:19:48.239> data.<01:19:48.880> So\nis to take a hash of the data. So\nis to take a hash of the data. So instead<01:19:49.920> of<01:19:50.080> reading<01:19:50.719> uh<01:19:50.880> all<01:19:51.040> the<01:19:51.280> data<01:19:51.520> for\ninstead of reading uh all the data for\ninstead of reading uh all the data for some<01:19:51.840> evaluation<01:19:52.400> every<01:19:52.640> frame,<01:19:54.000> you<01:19:54.159> map<01:19:54.400> it\nsome evaluation every frame, you map it\nsome evaluation every frame, you map it to<01:19:54.640> some<01:19:54.800> hash<01:19:55.120> of<01:19:55.280> the<01:19:55.440> data<01:19:56.239> which<01:19:56.400> can<01:19:56.640> serve\nto some hash of the data which can serve\nto some hash of the data which can serve as<01:19:56.880> the<01:19:57.040> unique<01:19:57.280> key<01:19:57.440> to<01:19:57.600> some<01:19:57.840> content.<01:19:59.120> So\nas the unique key to some content. So\nas the unique key to some content. So our<01:19:59.440> background<01:19:59.840> data<01:20:00.080> preparation<01:20:00.480> threads\nour background data preparation threads\nour background data preparation threads can<01:20:00.960> use<01:20:01.120> that<01:20:01.280> hash<01:20:01.920> to<01:20:02.159> obtain<01:20:02.480> the<01:20:02.719> data<01:20:02.960> and\ncan use that hash to obtain the data and\ncan use that hash to obtain the data and then<01:20:03.440> process<01:20:03.760> it<01:20:04.400> and<01:20:04.560> so<01:20:04.719> on.\nSo<01:20:09.360> the<01:20:09.520> first<01:20:09.679> thing<01:20:09.840> we<01:20:10.000> need<01:20:10.159> to<01:20:10.320> do<01:20:10.960> uh<01:20:11.199> we\nSo the first thing we need to do uh we\nSo the first thing we need to do uh we need<01:20:11.679> to<01:20:11.840> do<01:20:12.080> that<01:20:12.640> is<01:20:12.719> just<01:20:12.960> a<01:20:13.120> cache<01:20:13.760> from<01:20:14.239> a\nneed to do that is just a cache from a\nneed to do that is just a cache from a hash<01:20:14.560> to<01:20:14.640> a<01:20:14.800> data<01:20:14.960> right<01:20:15.120> we've<01:20:15.280> got<01:20:15.360> some<01:20:15.600> data\nhash to a data right we've got some data\nhash to a data right we've got some data structure<01:20:16.400> in<01:20:16.640> our<01:20:16.800> program<01:20:17.040> which<01:20:17.280> says<01:20:17.679> hey\nstructure in our program which says hey\nstructure in our program which says hey look<01:20:18.080> you've<01:20:18.239> got<01:20:18.320> a<01:20:18.480> hash<01:20:18.800> here's<01:20:19.040> how<01:20:19.120> you\nlook you've got a hash here's how you\nlook you've got a hash here's how you get<01:20:19.360> the<01:20:19.440> data<01:20:19.600> for<01:20:19.760> the<01:20:19.920> hash<01:20:20.719> done.\nget the data for the hash done.\nget the data for the hash done. This<01:20:23.280> has<01:20:23.440> the<01:20:23.600> added<01:20:23.840> advantage<01:20:24.159> of<01:20:24.320> like\nThis has the added advantage of like\nThis has the added advantage of like this<01:20:24.719> is<01:20:24.880> dduplicating<01:20:25.600> everything,<01:20:25.920> right?\nthis is dduplicating everything, right?\nthis is dduplicating everything, right? If<01:20:26.239> you<01:20:26.320> hash<01:20:26.560> the<01:20:26.719> same<01:20:26.800> data<01:20:27.120> twice,<01:20:27.840> you<01:20:28.000> can\nIf you hash the same data twice, you can\nIf you hash the same data twice, you can trivially<01:20:28.800> see<01:20:28.960> that<01:20:29.120> when<01:20:29.280> you<01:20:29.440> implement\ntrivially see that when you implement\ntrivially see that when you implement this<01:20:29.840> data<01:20:30.080> structure.<01:20:30.400> It's<01:20:30.480> like,<01:20:30.640> oh,\nthis data structure. It's like, oh,\nthis data structure. It's like, oh, these<01:20:31.040> are<01:20:31.120> the<01:20:31.280> same<01:20:31.360> thing.<01:20:31.920> Um,<01:20:32.239> so<01:20:32.480> just,\nthese are the same thing. Um, so just,\nthese are the same thing. Um, so just, you<01:20:32.960> know,<01:20:33.120> don't<01:20:33.440> actually<01:20:33.679> store<01:20:33.920> it<01:20:34.080> twice.\nyou know, don't actually store it twice.\nyou know, don't actually store it twice. Um,<01:20:36.320> then<01:20:36.560> you<01:20:36.719> can<01:20:36.800> build<01:20:36.880> a<01:20:37.120> number<01:20:37.199> of<01:20:37.360> other\nUm, then you can build a number of other\nUm, then you can build a number of other caches<01:20:37.920> which<01:20:38.080> also<01:20:38.400> store<01:20:38.640> the<01:20:38.960> processed\ncaches which also store the processed\ncaches which also store the processed sort<01:20:39.679> of<01:20:39.840> data<01:20:40.239> representations.\nsort of data representations.\nsort of data representations. So<01:20:41.920> you<01:20:42.080> might<01:20:42.159> have<01:20:42.239> a<01:20:42.400> cache<01:20:42.719> which<01:20:43.120> uh<01:20:43.280> maps\nSo you might have a cache which uh maps\nSo you might have a cache which uh maps a<01:20:43.760> hash<01:20:44.000> and<01:20:44.080> a<01:20:44.239> parameters<01:20:44.560> to<01:20:44.719> a<01:20:44.880> texture\na hash and a parameters to a texture\na hash and a parameters to a texture hash<01:20:46.239> and<01:20:46.400> parameters<01:20:46.960> to<01:20:47.520> a<01:20:47.760> text<01:20:48.159> and<01:20:48.320> like<01:20:48.480> a\nhash and parameters to a text and like a\nhash and parameters to a text and like a parse<01:20:48.880> of<01:20:49.040> that<01:20:49.199> text<01:20:49.520> like<01:20:49.920> or<01:20:50.480> uh<01:20:50.640> sorry<01:20:51.040> not\nparse of that text like or uh sorry not\nparse of that text like or uh sorry not not<01:20:51.280> not<01:20:51.679> the<01:20:51.760> text<01:20:52.000> the<01:20:52.159> text<01:20:52.400> just<01:20:52.560> the<01:20:52.719> data\nnot not the text the text just the data\nnot not the text the text just the data but<01:20:53.040> the<01:20:53.280> the<01:20:53.520> the<01:20:54.000> textual<01:20:54.480> lex<01:20:54.719> and<01:20:54.960> parse<01:20:55.199> of\nbut the the the textual lex and parse of\nbut the the the textual lex and parse of the<01:20:55.440> data<01:20:56.000> got<01:20:56.239> some<01:20:56.400> cache<01:20:56.719> for<01:20:56.880> that\nhash<01:21:00.800> parameters<01:21:01.120> to<01:21:01.280> some<01:21:01.360> vertex<01:21:01.679> and<01:21:01.840> index\nhash parameters to some vertex and index\nhash parameters to some vertex and index buffer\nbuffer\nbuffer and<01:21:04.640> then<01:21:04.800> our<01:21:04.960> UI<01:21:05.360> thread<01:21:06.080> when<01:21:06.239> it's\nand then our UI thread when it's\nand then our UI thread when it's building<01:21:06.719> a<01:21:06.880> UI<01:21:07.280> for<01:21:07.440> a<01:21:07.600> visualizer<01:21:08.320> can<01:21:08.560> just\nbuilding a UI for a visualizer can just\nbuilding a UI for a visualizer can just read<01:21:08.960> from<01:21:09.120> these<01:21:09.360> caches<01:21:09.760> without<01:21:10.080> doing<01:21:10.239> the\nread from these caches without doing the\nread from these caches without doing the data<01:21:10.719> processing<01:21:11.120> itself.<01:21:11.280> itself.\ndata processing itself. itself.\ndata processing itself. itself. So,<01:21:13.360> um,<01:21:13.520> when<01:21:13.679> you're<01:21:13.840> building<01:21:13.920> a<01:21:14.080> bit<01:21:14.320> map\nSo, um, when you're building a bit map\nSo, um, when you're building a bit map viewer,<01:21:14.960> you<01:21:15.199> just<01:21:16.239> read<01:21:16.560> you<01:21:16.800> just<01:21:16.960> read<01:21:17.120> from\nviewer, you just read you just read from\nviewer, you just read you just read from that<01:21:17.520> cache.\nthat cache.\nthat cache. When<01:21:20.159> you<01:21:20.239> build<01:21:20.400> a<01:21:20.560> text<01:21:20.800> viewer,<01:21:21.520> read<01:21:21.760> from\nWhen you build a text viewer, read from\nWhen you build a text viewer, read from the<01:21:22.000> text<01:21:22.239> cache.<01:21:23.120> When<01:21:23.360> you're<01:21:23.440> building<01:21:23.600> a\nthe text cache. When you're building a\nthe text cache. When you're building a memory<01:21:24.080> viewer,<01:21:24.640> there's<01:21:24.880> there's<01:21:25.120> no\nmemory viewer, there's there's no\nmemory viewer, there's there's no special<01:21:25.520> cache.<01:21:25.840> You<01:21:25.920> need<01:21:26.159> just<01:21:26.320> get<01:21:26.480> the\nspecial cache. You need just get the\nspecial cache. You need just get the data<01:21:26.880> from<01:21:27.120> the<01:21:27.280> from<01:21:27.440> the<01:21:27.600> hash<01:21:27.840> to<01:21:28.000> data\ndata from the from the hash to data\ndata from the from the hash to data cache.<01:21:28.960> And<01:21:29.120> then<01:21:29.520> when<01:21:29.840> you're<01:21:30.080> doing<01:21:30.400> a\ncache. And then when you're doing a\ncache. And then when you're doing a geometry<01:21:31.440> visualizer,\ngeometry visualizer,\ngeometry visualizer, unsurprisingly,\nunsurprisingly,\nunsurprisingly, everyone<01:21:35.040> can<01:21:35.280> tell,<01:21:35.760> you<01:21:36.000> just<01:21:36.159> read<01:21:36.400> from\neveryone can tell, you just read from\neveryone can tell, you just read from that<01:21:36.719> cache,<01:21:37.040> right?\nthat cache, right?\nthat cache, right? And<01:21:38.880> again,<01:21:39.120> instead<01:21:39.360> of<01:21:39.520> the<01:21:39.679> UI<01:21:40.000> thread\nAnd again, instead of the UI thread\nAnd again, instead of the UI thread doing<01:21:40.480> that<01:21:40.719> work,<01:21:41.199> you've<01:21:41.440> got<01:21:41.520> these\ndoing that work, you've got these\ndoing that work, you've got these background<01:21:42.080> work<01:21:42.239> threads<01:21:42.560> that<01:21:42.719> are<01:21:42.800> that\nbackground work threads that are that\nbackground work threads that are that are<01:21:43.120> filling<01:21:43.440> those<01:21:43.600> caches<01:21:44.080> as<01:21:44.320> needed.<01:21:45.600> So\nare filling those caches as needed. So\nare filling those caches as needed. So the<01:21:45.840> UI<01:21:46.159> thread<01:21:46.400> can<01:21:46.719> request<01:21:47.199> some<01:21:47.440> hash.\nthe UI thread can request some hash.\nthe UI thread can request some hash. It's<01:21:47.920> like,<01:21:48.400> look,<01:21:48.640> I've<01:21:48.800> got<01:21:48.880> this<01:21:49.040> hash<01:21:49.280> from\nIt's like, look, I've got this hash from\nIt's like, look, I've got this hash from an<01:21:49.600> evaluation.<01:21:50.400> It<01:21:50.560> has<01:21:50.719> these<01:21:50.960> visualizer\nan evaluation. It has these visualizer\nan evaluation. It has these visualizer parameters.<01:21:52.960> Please<01:21:53.280> give<01:21:53.360> me<01:21:53.520> the<01:21:53.920> thing.\nparameters. Please give me the thing.\nparameters. Please give me the thing. And<01:21:54.320> then<01:21:54.480> the<01:21:54.639> cache<01:21:54.960> can<01:21:55.120> say,<01:21:55.600> hey<01:21:55.840> buddy,\nAnd then the cache can say, hey buddy,\nAnd then the cache can say, hey buddy, don't<01:21:56.239> have<01:21:56.320> it<01:21:56.480> yet.<01:21:56.880> UI<01:21:57.280> can<01:21:57.520> say<01:21:57.679> like,<01:21:58.639> no\ndon't have it yet. UI can say like, no\ndon't have it yet. UI can say like, no problem,<01:21:59.280> bro.<01:22:00.080> I'll<01:22:00.320> just,<01:22:00.639> you<01:22:00.719> know,<01:22:00.960> go\nproblem, bro. I'll just, you know, go\nproblem, bro. I'll just, you know, go and<01:22:01.760> draw<01:22:01.920> an<01:22:02.159> empty<01:22:02.400> screen<01:22:02.639> or<01:22:02.880> whatever<01:22:03.280> or\nand draw an empty screen or whatever or\nand draw an empty screen or whatever or an<01:22:03.679> empty<01:22:03.920> visualizer<01:22:04.400> in<01:22:04.639> that<01:22:04.800> case.<01:22:05.920> Um\nan empty visualizer in that case. Um\nan empty visualizer in that case. Um point<01:22:07.679> is<01:22:07.920> it<01:22:08.159> can<01:22:08.400> continue<01:22:08.719> along<01:22:09.040> smoothly,\npoint is it can continue along smoothly,\npoint is it can continue along smoothly, right?<01:22:09.600> The<01:22:09.679> UI<01:22:09.920> is<01:22:10.080> not<01:22:10.159> blocked,<01:22:10.480> the<01:22:10.639> user\nright? The UI is not blocked, the user\nright? The UI is not blocked, the user is<01:22:11.040> not<01:22:11.199> blocked,<01:22:11.840> which<01:22:12.080> is<01:22:12.560> priority.\nis not blocked, which is priority.\nis not blocked, which is priority. So<01:22:14.880> taking<01:22:15.120> a<01:22:15.280> step<01:22:15.440> back,<01:22:16.639> let's<01:22:16.880> think<01:22:17.040> about\nSo taking a step back, let's think about\nSo taking a step back, let's think about some<01:22:17.360> pseudo<01:22:17.760> code<01:22:17.920> we<01:22:18.159> might<01:22:18.400> write<01:22:18.639> to<01:22:18.880> build\nsome pseudo code we might write to build\nsome pseudo code we might write to build a<01:22:19.120> bit<01:22:19.360> map<01:22:19.520> viewer.<01:22:20.880> You<01:22:21.199> get<01:22:21.440> some\na bit map viewer. You get some\na bit map viewer. You get some evaluation.<01:22:22.239> It's<01:22:22.400> like<01:22:22.560> passed<01:22:22.800> into<01:22:23.040> the\nevaluation. It's like passed into the\nevaluation. It's like passed into the bitmap<01:22:23.520> viewer,<01:22:23.760> right?<01:22:24.080> Again,<01:22:24.400> this<01:22:24.560> is\nbitmap viewer, right? Again, this is\nbitmap viewer, right? Again, this is implementing<01:22:25.280> eval<01:22:25.679> to<01:22:25.840> UI.<01:22:26.320> That<01:22:26.560> arrow<01:22:27.120> get\nimplementing eval to UI. That arrow get\nimplementing eval to UI. That arrow get the<01:22:27.440> eval,<01:22:28.000> get<01:22:28.159> an<01:22:28.320> address,<01:22:28.639> get<01:22:28.719> a<01:22:28.880> width.\nthe eval, get an address, get a width.\nthe eval, get an address, get a width. Again,<01:22:29.360> these<01:22:29.600> are<01:22:29.679> all<01:22:29.840> implied<01:22:30.159> by<01:22:30.239> the<01:22:30.400> type\nAgain, these are all implied by the type\nAgain, these are all implied by the type info.<01:22:30.800> So<01:22:30.960> we<01:22:31.040> get<01:22:31.199> an<01:22:31.360> address,<01:22:31.600> width,\ninfo. So we get an address, width,\ninfo. So we get an address, width, height,<01:22:32.239> format,<01:22:32.719> size,<01:22:33.520> hash<01:22:34.400> from<01:22:34.639> some\nheight, format, size, hash from some\nheight, format, size, hash from some space<01:22:35.280> and<01:22:35.440> some<01:22:35.600> range.\nspace and some range.\nspace and some range. We<01:22:37.840> can<01:22:37.920> get<01:22:38.080> a<01:22:38.239> texture<01:22:38.560> from<01:22:38.719> some<01:22:38.880> hash<01:22:39.120> in\nWe can get a texture from some hash in\nWe can get a texture from some hash in those<01:22:39.520> parameters.<01:22:40.159> Then<01:22:40.320> we<01:22:40.480> can<01:22:40.560> draw<01:22:40.719> the\nthose parameters. Then we can draw the\nthose parameters. Then we can draw the texture.<01:22:41.600> Right?<01:22:42.400> Pretty<01:22:42.639> pretty<01:22:43.040> like\ntexture. Right? Pretty pretty like\ntexture. Right? Pretty pretty like pseudo<01:22:43.520> code<01:22:43.760> high<01:22:44.000> level,<01:22:44.159> but<01:22:44.719> hopefully\npseudo code high level, but hopefully\npseudo code high level, but hopefully that<01:22:45.199> sketches<01:22:45.600> it<01:22:45.760> out<01:22:45.920> pretty<01:22:46.159> well.\nStill<01:22:51.600> nervous<01:22:51.840> to<01:22:52.000> press<01:22:52.239> it.<01:22:53.040> Um\nStill nervous to press it. Um\nStill nervous to press it. Um now<01:22:55.520> the<01:22:55.679> last<01:22:55.760> thing<01:22:55.920> I'd<01:22:56.080> like<01:22:56.159> to<01:22:56.239> cover<01:22:56.400> is\nnow the last thing I'd like to cover is\nnow the last thing I'd like to cover is one<01:22:56.880> problem<01:22:57.679> we've<01:22:58.000> introduced<01:22:58.400> by\none problem we've introduced by\none problem we've introduced by switching<01:22:58.880> to<01:22:59.040> content<01:22:59.840> based<01:23:00.080> visualizers\nswitching to content based visualizers\nswitching to content based visualizers and<01:23:01.120> that<01:23:01.280> has<01:23:01.360> to<01:23:01.520> do<01:23:01.600> with<01:23:01.760> how<01:23:02.159> like<01:23:02.400> you\nand that has to do with how like you\nand that has to do with how like you have<01:23:02.639> a<01:23:02.800> hash<01:23:03.280> the<01:23:03.440> hash<01:23:03.679> can<01:23:03.920> change<01:23:04.159> across\nhave a hash the hash can change across\nhave a hash the hash can change across time<01:23:04.800> because<01:23:05.280> you<01:23:05.360> know<01:23:05.520> a<01:23:05.679> program<01:23:05.920> is\ntime because you know a program is\ntime because you know a program is mutating<01:23:06.719> some<01:23:06.960> some<01:23:07.280> data<01:23:07.920> so<01:23:08.080> you<01:23:08.239> get<01:23:08.400> a\nmutating some some data so you get a\nmutating some some data so you get a different<01:23:08.639> hash<01:23:08.960> when<01:23:09.120> you<01:23:09.199> actually<01:23:09.360> hash\ndifferent hash when you actually hash\ndifferent hash when you actually hash that<01:23:09.840> data.<01:23:10.560> So<01:23:10.880> you<01:23:11.040> know<01:23:11.120> if<01:23:11.280> you<01:23:11.440> step<01:23:12.080> like\nthat data. So you know if you step like\nthat data. So you know if you step like the<01:23:12.719> hash<01:23:13.040> of<01:23:13.440> many<01:23:13.760> things<01:23:14.000> will<01:23:14.239> change.\nthe hash of many things will change.\nthe hash of many things will change. So<01:23:17.120> imagine<01:23:17.520> this<01:23:17.760> scenario.<01:23:18.159> You<01:23:18.239> know,\nSo imagine this scenario. You know,\nSo imagine this scenario. You know, we've<01:23:18.560> got<01:23:18.639> some<01:23:18.880> visualizer.<01:23:19.360> It's<01:23:19.440> got<01:23:19.520> an\nwe've got some visualizer. It's got an\nwe've got some visualizer. It's got an eval<01:23:20.080> to<01:23:20.159> a<01:23:20.320> hash.<01:23:20.880> Get<01:23:21.120> some<01:23:21.280> hash<01:23:22.000> which<01:23:22.159> maps\neval to a hash. Get some hash which maps\neval to a hash. Get some hash which maps to<01:23:22.560> some<01:23:22.719> visualizer<01:23:23.199> data.<01:23:23.920> At<01:23:24.239> time<01:23:24.560> zero,\nto some visualizer data. At time zero,\nto some visualizer data. At time zero, like<01:23:25.280> we<01:23:25.520> were<01:23:25.760> building<01:23:26.000> the<01:23:26.159> UI<01:23:26.400> at<01:23:26.560> time\nlike we were building the UI at time\nlike we were building the UI at time zero.<01:23:27.600> A<01:23:27.760> and<01:23:27.920> B<01:23:28.080> both<01:23:28.400> pass.<01:23:28.800> We<01:23:28.960> get<01:23:29.040> an<01:23:29.199> eval\nzero. A and B both pass. We get an eval\nzero. A and B both pass. We get an eval and<01:23:29.600> a<01:23:29.679> hash.<01:23:29.920> We<01:23:30.000> get<01:23:30.080> a<01:23:30.159> hash<01:23:30.320> and<01:23:30.400> a\nand a hash. We get a hash and a\nand a hash. We get a hash and a visualizer<01:23:30.960> data.<01:23:31.600> All<01:23:31.760> good.<01:23:32.000> We<01:23:32.159> build<01:23:32.320> the\nvisualizer data. All good. We build the\nvisualizer data. All good. We build the visualizer.<01:23:33.840> At<01:23:34.159> t1,<01:23:35.040> we<01:23:35.199> get<01:23:35.360> a<01:23:35.520> new<01:23:35.679> hash,\nvisualizer. At t1, we get a new hash,\nvisualizer. At t1, we get a new hash, but<01:23:37.120> b<01:23:37.280> is<01:23:37.440> still<01:23:37.679> preparing,<01:23:38.800> which<01:23:39.120> means<01:23:39.280> we\nbut b is still preparing, which means we\nbut b is still preparing, which means we do<01:23:39.679> not<01:23:39.840> visualize<01:23:40.400> successfully.<01:23:41.840> And<01:23:42.000> at\ndo not visualize successfully. And at\ndo not visualize successfully. And at time<01:23:42.480> two,<01:23:42.800> B<01:23:43.120> has<01:23:43.360> actually<01:23:43.679> completed<01:23:44.159> again\ntime two, B has actually completed again\ntime two, B has actually completed again with<01:23:44.880> the<01:23:45.040> new<01:23:45.199> hash.<01:23:45.520> And<01:23:45.679> we<01:23:45.840> can<01:23:46.000> continue\nwith the new hash. And we can continue\nwith the new hash. And we can continue building<01:23:47.120> the<01:23:47.360> the<01:23:47.679> UI.\nbuilding the the UI.\nbuilding the the UI. And<01:23:49.920> what<01:23:50.159> this<01:23:50.400> manifests<01:23:50.960> as<01:23:51.280> as<01:23:52.080> maybe\nAnd what this manifests as as maybe\nAnd what this manifests as as maybe unsurprisingly<01:23:53.040> is<01:23:53.280> at<01:23:53.520> time<01:23:53.679> zero<01:23:54.000> you<01:23:54.159> get<01:23:54.239> a\nunsurprisingly is at time zero you get a\nunsurprisingly is at time zero you get a picture.<01:23:54.719> At<01:23:54.880> time<01:23:55.040> one<01:23:55.280> you<01:23:55.440> don't.<01:23:55.920> At<01:23:56.159> time\npicture. At time one you don't. At time\npicture. At time one you don't. At time two<01:23:57.440> you<01:23:57.679> get<01:23:57.840> a<01:23:58.000> picture.<01:23:58.719> It's<01:23:58.960> flickering.\ntwo you get a picture. It's flickering.\ntwo you get a picture. It's flickering. It<01:23:59.679> gets<01:23:59.920> harder<01:24:00.159> to<01:24:00.320> track<01:24:00.639> how<01:24:00.880> data<01:24:01.120> is\nIt gets harder to track how data is\nIt gets harder to track how data is changing<01:24:01.600> across<01:24:02.000> time<01:24:02.800> because<01:24:03.120> you've<01:24:03.360> lost\nchanging across time because you've lost\nchanging across time because you've lost that<01:24:03.760> sort<01:24:03.920> of<01:24:04.000> what<01:24:04.239> the<01:24:04.400> file<01:24:04.560> path<01:24:04.880> was\nthat sort of what the file path was\nthat sort of what the file path was providing<01:24:05.280> was<01:24:05.520> sort<01:24:05.679> of<01:24:05.679> the<01:24:06.000> identity.<01:24:06.400> It's\nproviding was sort of the identity. It's\nproviding was sort of the identity. It's sort<01:24:06.719> of<01:24:06.800> this<01:24:07.040> key<01:24:07.600> that<01:24:07.920> refers.<01:24:08.400> It's<01:24:08.639> like\nsort of this key that refers. It's like\nsort of this key that refers. It's like the<01:24:09.040> name<01:24:09.280> of<01:24:09.360> the<01:24:09.600> thing<01:24:10.080> but<01:24:10.320> not<01:24:10.480> the\nthe name of the thing but not the\nthe name of the thing but not the content<01:24:10.880> of<01:24:11.040> the<01:24:11.120> thing.<01:24:11.360> It<01:24:11.520> can<01:24:11.600> refer<01:24:11.840> to\ncontent of the thing. It can refer to\ncontent of the thing. It can refer to the<01:24:12.159> same<01:24:12.320> thing<01:24:12.480> across<01:24:12.880> time.<01:24:13.600> We<01:24:13.920> lost<01:24:14.159> that\nthe same thing across time. We lost that\nthe same thing across time. We lost that when<01:24:14.560> we<01:24:14.719> moved<01:24:14.960> to<01:24:16.239> to<01:24:16.560> content<01:24:17.440> based\nwhen we moved to to content based\nwhen we moved to to content based visualizers.<01:24:18.400> So<01:24:18.560> how<01:24:18.639> do<01:24:18.719> we<01:24:18.880> get<01:24:18.960> it<01:24:19.120> back?\nvisualizers. So how do we get it back?\nvisualizers. So how do we get it back? Um<01:24:22.719> and<01:24:23.040> really<01:24:24.080> maybe<01:24:24.400> not<01:24:24.639> surprising<01:24:25.600> we\nUm and really maybe not surprising we\nUm and really maybe not surprising we really<01:24:26.000> want<01:24:26.159> to<01:24:26.320> map<01:24:26.639> to<01:24:27.120> some<01:24:27.440> key<01:24:27.760> which<01:24:28.000> can\nreally want to map to some key which can\nreally want to map to some key which can get<01:24:28.320> us<01:24:28.480> to<01:24:28.639> a<01:24:28.880> list<01:24:29.120> of<01:24:29.280> hashes<01:24:30.080> like<01:24:30.239> a\nget us to a list of hashes like a\nget us to a list of hashes like a history<01:24:30.719> of<01:24:30.880> hashes<01:24:31.360> if<01:24:31.520> you<01:24:31.600> will.\nhistory of hashes if you will.\nhistory of hashes if you will. And<01:24:32.960> at<01:24:33.199> that<01:24:33.440> point,<01:24:34.000> once<01:24:34.239> we<01:24:34.400> have<01:24:34.560> that,\nAnd at that point, once we have that,\nAnd at that point, once we have that, once<01:24:35.360> we<01:24:35.520> have<01:24:35.600> some<01:24:35.920> unique<01:24:36.400> identity<01:24:36.719> which\nonce we have some unique identity which\nonce we have some unique identity which can<01:24:37.040> refer<01:24:37.280> to<01:24:37.360> a<01:24:37.520> history<01:24:37.760> of<01:24:37.920> hashes<01:24:38.320> across\ncan refer to a history of hashes across\ncan refer to a history of hashes across time,<01:24:39.199> we're<01:24:39.360> at<01:24:39.520> time<01:24:39.760> one,<01:24:40.480> we<01:24:40.719> know<01:24:40.960> B\ntime, we're at time one, we know B\ntime, we're at time one, we know B fails,<01:24:41.679> we<01:24:41.920> just<01:24:42.080> roll<01:24:42.320> back,<01:24:42.639> just<01:24:43.040> okay,\nfails, we just roll back, just okay,\nfails, we just roll back, just okay, grab<01:24:43.600> the<01:24:43.760> previous<01:24:44.080> results,<01:24:44.719> keep<01:24:44.960> building\ngrab the previous results, keep building\ngrab the previous results, keep building the<01:24:45.360> stale<01:24:45.679> results<01:24:45.920> so<01:24:46.080> that<01:24:46.239> the<01:24:46.400> user<01:24:46.639> is\nthe stale results so that the user is\nthe stale results so that the user is not<01:24:46.960> like<01:24:47.360> seeing<01:24:47.600> stuff<01:24:47.840> flash<01:24:48.080> in<01:24:48.239> their\nnot like seeing stuff flash in their\nnot like seeing stuff flash in their face<01:24:48.480> when<01:24:48.639> they're<01:24:48.800> trying<01:24:48.880> to<01:24:48.960> see<01:24:49.040> how\nface when they're trying to see how\nface when they're trying to see how something<01:24:49.440> is<01:24:49.679> changing,<01:24:50.159> right?\nFurthermore,<01:24:54.560> this<01:24:54.880> step<01:24:55.280> is<01:24:55.520> the<01:24:55.679> first<01:24:55.920> step\nFurthermore, this step is the first step\nFurthermore, this step is the first step to<01:24:56.400> solving<01:24:56.639> a<01:24:56.880> different<01:24:57.040> problem.\nSo<01:25:01.920> while<01:25:02.159> this<01:25:02.320> kind<01:25:02.400> of<01:25:02.480> debugger\nSo while this kind of debugger\nSo while this kind of debugger visualization<01:25:03.440> engine<01:25:03.840> can<01:25:04.080> be<01:25:04.400> pretty<01:25:04.800> good\nvisualization engine can be pretty good\nvisualization engine can be pretty good at<01:25:06.000> like<01:25:06.239> looking<01:25:06.480> at<01:25:06.719> things<01:25:06.880> quickly<01:25:07.679> and\nat like looking at things quickly and\nat like looking at things quickly and interactively<01:25:08.719> and<01:25:08.880> and<01:25:08.960> and<01:25:09.840> seeing<01:25:10.320> data<01:25:10.639> at\ninteractively and and and seeing data at\ninteractively and and and seeing data at certain<01:25:11.199> points<01:25:11.520> in<01:25:11.760> time<01:25:12.880> and<01:25:13.040> still<01:25:13.280> lacking\ncertain points in time and still lacking\ncertain points in time and still lacking something<01:25:14.239> that<01:25:14.480> logging<01:25:14.960> provides<01:25:15.600> which<01:25:15.840> a\nsomething that logging provides which a\nsomething that logging provides which a log<01:25:16.320> kind<01:25:16.560> of<01:25:16.639> covers<01:25:16.960> a<01:25:17.199> whole<01:25:17.679> range<01:25:17.920> of\nlog kind of covers a whole range of\nlog kind of covers a whole range of time.<01:25:19.040> This<01:25:19.440> visualizer<01:25:20.080> kind<01:25:20.320> of<01:25:20.639> po<01:25:21.120> uh<01:25:21.600> sort\ntime. This visualizer kind of po uh sort\ntime. This visualizer kind of po uh sort of<01:25:21.840> like<01:25:22.000> pokes<01:25:22.400> into<01:25:22.719> points<01:25:22.960> of<01:25:23.120> time\nof like pokes into points of time\nof like pokes into points of time and<01:25:24.960> shows<01:25:25.360> state<01:25:26.159> at<01:25:26.400> those<01:25:26.639> moments.\nSo<01:25:33.679> by<01:25:33.920> mapping<01:25:34.239> an<01:25:34.400> evaluation<01:25:34.800> to<01:25:34.960> a<01:25:35.120> history\nSo by mapping an evaluation to a history\nSo by mapping an evaluation to a history of<01:25:35.440> hashes<01:25:36.560> um<01:25:36.800> rather<01:25:37.040> than<01:25:37.280> just<01:25:37.440> a<01:25:37.679> single\nof hashes um rather than just a single\nof hashes um rather than just a single like<01:25:38.239> most<01:25:38.560> recent<01:25:38.880> hash<01:25:39.920> um<01:25:40.719> we've<01:25:41.040> actually\nlike most recent hash um we've actually\nlike most recent hash um we've actually introduced<01:25:41.760> some<01:25:42.000> of<01:25:42.080> the<01:25:42.239> machinery<01:25:42.719> we<01:25:42.880> need\nintroduced some of the machinery we need\nintroduced some of the machinery we need to<01:25:43.440> start<01:25:43.679> rewinding<01:25:44.080> the<01:25:44.320> clock.\nto start rewinding the clock.\nto start rewinding the clock. So<01:25:46.719> this<01:25:46.880> way<01:25:47.040> we<01:25:47.199> can<01:25:47.360> see<01:25:47.679> like<01:25:47.920> an<01:25:48.159> entire\nSo this way we can see like an entire\nSo this way we can see like an entire entire<01:25:49.280> history<01:25:49.600> of<01:25:49.760> changes<01:25:51.040> um<01:25:51.440> to<01:25:51.679> some\nentire history of changes um to some\nentire history of changes um to some evaluation<01:25:52.960> that<01:25:53.199> sounds<01:25:53.440> an<01:25:53.600> awful<01:25:53.920> lot\nevaluation that sounds an awful lot\nevaluation that sounds an awful lot like<01:25:55.840> a<01:25:56.080> dynamic<01:25:56.560> logging<01:25:56.960> system.\nlike a dynamic logging system.\nlike a dynamic logging system. But<01:25:59.199> um<01:25:59.679> at<01:25:59.920> this<01:26:00.080> point<01:26:01.120> we've<01:26:01.440> reached<01:26:01.679> the\nBut um at this point we've reached the\nBut um at this point we've reached the boundaries<01:26:02.159> of<01:26:02.320> all<01:26:02.400> the<01:26:02.480> work<01:26:02.639> I've\nboundaries of all the work I've\nboundaries of all the work I've completed<01:26:04.000> uh<01:26:04.239> on<01:26:04.719> this<01:26:05.040> problem<01:26:05.360> and<01:26:05.760> kind<01:26:05.920> of\ncompleted uh on this problem and kind of\ncompleted uh on this problem and kind of what<01:26:06.159> I<01:26:06.320> was<01:26:06.480> able<01:26:06.560> to<01:26:06.719> fit<01:26:07.600> uh<01:26:07.840> into<01:26:08.159> like<01:26:08.400> this\nwhat I was able to fit uh into like this\nwhat I was able to fit uh into like this level<01:26:08.880> of<01:26:09.040> detail<01:26:09.360> and<01:26:09.679> and<01:26:09.840> this<01:26:10.080> time<01:26:11.520> uh<01:26:11.920> I\nlevel of detail and and this time uh I\nlevel of detail and and this time uh I realized<01:26:12.480> that<01:26:12.639> that<01:26:12.800> was<01:26:12.960> like<01:26:13.360> probably<01:26:13.679> a\nrealized that that was like probably a\nrealized that that was like probably a lot<01:26:14.000> of<01:26:14.159> information.<01:26:15.360> Uh\nlot of information. Uh\nlot of information. Uh uh<01:26:17.199> but<01:26:17.600> you<01:26:17.840> know<01:26:18.000> we've<01:26:18.320> walked<01:26:18.639> through<01:26:18.800> all\nuh but you know we've walked through all\nuh but you know we've walked through all the<01:26:19.199> building<01:26:19.440> blocks<01:26:19.679> of<01:26:19.840> a<01:26:20.000> general<01:26:20.320> purpose\nthe building blocks of a general purpose\nthe building blocks of a general purpose real-time<01:26:21.600> debugger<01:26:22.080> data<01:26:22.320> visualization\nreal-time debugger data visualization\nreal-time debugger data visualization engine.<01:26:23.280> So<01:26:23.520> from<01:26:24.000> process<01:26:24.400> control<01:26:25.199> to\nengine. So from process control to\nengine. So from process control to expression<01:26:26.000> compilation<01:26:26.480> and<01:26:26.639> evaluation<01:26:27.520> to\nexpression compilation and evaluation to\nexpression compilation and evaluation to debug<01:26:28.239> information<01:26:28.639> to<01:26:28.960> windowed<01:26:29.280> watch\ndebug information to windowed watch\ndebug information to windowed watch trees<01:26:29.920> all<01:26:30.080> the<01:26:30.159> way<01:26:30.320> to<01:26:30.880> visualization\ntrees all the way to visualization\ntrees all the way to visualization systems.<01:26:32.800> Now<01:26:33.600> there's<01:26:33.920> tons<01:26:34.080> of<01:26:34.239> problems<01:26:34.960> in\nsystems. Now there's tons of problems in\nsystems. Now there's tons of problems in this<01:26:35.440> space<01:26:35.679> that<01:26:35.920> I<01:26:36.080> have<01:26:36.320> not<01:26:36.639> like<01:26:37.199> explored\nthis space that I have not like explored\nthis space that I have not like explored and<01:26:38.320> so<01:26:38.480> there's<01:26:38.719> always<01:26:39.040> much<01:26:39.280> more<01:26:39.440> to<01:26:39.600> do.\nand so there's always much more to do.\nand so there's always much more to do. There's<01:26:40.080> always<01:26:40.239> so<01:26:40.400> much<01:26:40.560> stuff<01:26:40.639> to<01:26:40.800> do<01:26:40.880> in\nThere's always so much stuff to do in\nThere's always so much stuff to do in this<01:26:41.199> space.<01:26:42.239> Um<01:26:43.600> and<01:26:43.840> there's<01:26:44.000> a<01:26:44.159> lot<01:26:44.239> of<01:26:44.400> like\nthis space. Um and there's a lot of like\nthis space. Um and there's a lot of like implementation<01:26:45.280> details<01:26:45.600> that<01:26:45.840> are\nimplementation details that are\nimplementation details that are interesting<01:26:46.400> that<01:26:46.960> you<01:26:47.040> know<01:26:47.280> obviously\ninteresting that you know obviously\ninteresting that you know obviously there<01:26:48.320> I<01:26:48.480> need<01:26:48.639> a<01:26:48.800> higher<01:26:48.960> level<01:26:49.120> of<01:26:49.280> detail\nthere I need a higher level of detail\nthere I need a higher level of detail than<01:26:49.760> what<01:26:49.840> I<01:26:50.000> could<01:26:50.159> get<01:26:50.239> into<01:26:50.880> just<01:26:51.040> to<01:26:51.199> cover\nthan what I could get into just to cover\nthan what I could get into just to cover all<01:26:51.679> this.<01:26:52.800> But<01:26:52.960> I'm<01:26:53.120> happy<01:26:53.280> to<01:26:53.360> expand<01:26:53.600> on\nall this. But I'm happy to expand on\nall this. But I'm happy to expand on them<01:26:53.840> if<01:26:54.000> anyone<01:26:54.320> has<01:26:54.480> questions.\nthem if anyone has questions.\nthem if anyone has questions. So\nSo\nSo all<01:26:57.840> right,<01:26:58.719> one<01:26:58.960> thing<01:26:59.040> I<01:26:59.199> hope<01:26:59.360> to<01:26:59.520> get\nall right, one thing I hope to get\nall right, one thing I hope to get across<01:27:00.000> is<01:27:00.239> not<01:27:00.480> only<01:27:00.639> like<01:27:00.880> how<01:27:01.040> all<01:27:01.199> this<01:27:01.760> how\nacross is not only like how all this how\nacross is not only like how all this how this<01:27:02.239> kind<01:27:02.400> of<01:27:02.560> system<01:27:02.880> works,<01:27:03.520> but<01:27:03.760> why<01:27:04.159> it<01:27:04.639> uh\nthis kind of system works, but why it uh\nthis kind of system works, but why it uh matters<01:27:05.120> and<01:27:05.360> why<01:27:05.520> it's<01:27:05.679> an<01:27:05.840> exciting<01:27:06.159> and\nmatters and why it's an exciting and\nmatters and why it's an exciting and sort<01:27:06.560> of<01:27:06.639> fruitful<01:27:07.040> area<01:27:07.280> of<01:27:07.440> development.\nsort of fruitful area of development.\nsort of fruitful area of development. Computers<01:27:10.159> very<01:27:10.400> opaque.<01:27:11.679> I<01:27:12.000> know<01:27:12.159> we<01:27:12.320> have\nComputers very opaque. I know we have\nComputers very opaque. I know we have all<01:27:12.639> looked<01:27:12.880> like<01:27:13.040> this<01:27:13.360> at<01:27:13.600> some<01:27:13.760> point.<01:27:14.480> Um\nall looked like this at some point. Um\nall looked like this at some point. Um in<01:27:15.040> order<01:27:15.199> to<01:27:15.280> do<01:27:15.440> a<01:27:15.600> good<01:27:15.760> job<01:27:16.000> at<01:27:16.239> producing\nin order to do a good job at producing\nin order to do a good job at producing good<01:27:16.960> software,<01:27:17.920> we've<01:27:18.159> got<01:27:18.239> to<01:27:18.400> have<01:27:18.480> a\ngood software, we've got to have a\ngood software, we've got to have a strong<01:27:18.960> understanding<01:27:19.360> of<01:27:19.520> what<01:27:19.679> we're\nstrong understanding of what we're\nstrong understanding of what we're doing.<01:27:20.159> We<01:27:20.239> have<01:27:20.320> to<01:27:20.480> have<01:27:20.560> a<01:27:20.639> strong\ndoing. We have to have a strong\ndoing. We have to have a strong understanding<01:27:21.199> of<01:27:21.360> how<01:27:21.520> our<01:27:21.760> data<01:27:22.000> is\nunderstanding of how our data is\nunderstanding of how our data is changing<01:27:22.560> across<01:27:22.960> time<01:27:23.840> and<01:27:24.159> and<01:27:25.280> we<01:27:25.520> do<01:27:25.679> that\nchanging across time and and we do that\nchanging across time and and we do that better<01:27:26.159> with<01:27:26.400> visualizations.<01:27:27.199> So,<01:27:28.320> um<01:27:29.040> just\nbetter with visualizations. So, um just\nbetter with visualizations. So, um just like<01:27:29.440> to<01:27:29.600> say<01:27:29.760> I'm<01:27:29.920> I'm,<01:27:30.560> you<01:27:30.639> know,<01:27:30.800> I've<01:27:30.960> been\nlike to say I'm I'm, you know, I've been\nlike to say I'm I'm, you know, I've been working<01:27:31.199> on<01:27:31.360> this<01:27:31.440> problem<01:27:31.679> for<01:27:31.760> a<01:27:31.920> few<01:27:32.080> years.\nworking on this problem for a few years.\nworking on this problem for a few years. Uh<01:27:32.880> really<01:27:33.120> proud<01:27:33.360> of<01:27:33.840> the<01:27:34.159> progress<01:27:34.480> I've\nUh really proud of the progress I've\nUh really proud of the progress I've made,<01:27:34.960> but<01:27:35.679> um<01:27:35.920> really<01:27:36.239> happy<01:27:36.400> that<01:27:36.560> I<01:27:36.719> was\nmade, but um really happy that I was\nmade, but um really happy that I was able<01:27:36.960> to<01:27:37.040> come<01:27:37.199> and<01:27:37.360> share<01:27:37.840> it<01:27:38.080> with<01:27:38.320> everyone\nable to come and share it with everyone\nable to come and share it with everyone uh<01:27:39.280> here<01:27:39.440> and<01:27:39.679> then<01:27:40.000> online.<01:27:41.120> Um<01:27:41.520> and<01:27:41.679> I<01:27:41.920> hope\nuh here and then online. Um and I hope\nuh here and then online. Um and I hope it<01:27:42.159> was<01:27:42.320> interesting,<01:27:42.719> informative<01:27:43.679> uh<01:27:43.920> and\nit was interesting, informative uh and\nit was interesting, informative uh and helpful.<01:27:44.639> And<01:27:44.880> again,<01:27:45.199> thank<01:27:45.280> you<01:27:45.440> to<01:27:45.600> Sam,\nhelpful. And again, thank you to Sam,\nhelpful. And again, thank you to Sam, Sander,<01:27:46.400> and<01:27:46.560> Charlie<01:27:47.120> uh<01:27:47.280> for<01:27:47.440> the\nSander, and Charlie uh for the\nSander, and Charlie uh for the opportunity.\nopportunity.\nopportunity. And<01:27:50.000> Casey's<01:27:50.480> gone<01:27:50.800> now,<01:27:51.040> but<01:27:51.280> like<01:27:51.600> and<01:27:51.760> I\nAnd Casey's gone now, but like and I\nAnd Casey's gone now, but like and I know<01:27:52.080> we've<01:27:52.320> like<01:27:52.560> piled<01:27:52.960> tons<01:27:53.280> of<01:27:53.440> thank<01:27:53.600> yous\nknow we've like piled tons of thank yous\nknow we've like piled tons of thank yous onto<01:27:54.159> him,<01:27:54.400> but<01:27:55.040> uh<01:27:55.199> you<01:27:55.360> know,<01:27:55.440> I've<01:27:55.679> wanted\nonto him, but uh you know, I've wanted\nonto him, but uh you know, I've wanted to<01:27:56.000> put<01:27:56.159> one<01:27:56.320> more<01:27:56.480> in<01:27:56.639> my<01:27:56.800> talk.<01:27:57.600> Um<01:27:58.560> a<01:27:58.719> lot<01:27:58.880> of\nto put one more in my talk. Um a lot of\nto put one more in my talk. Um a lot of my<01:27:59.120> work<01:27:59.280> on<01:27:59.440> this<01:27:59.600> problem<01:27:59.920> required<01:28:00.400> like\nmy work on this problem required like\nmy work on this problem required like lots<01:28:01.040> of<01:28:01.120> insights<01:28:01.920> and<01:28:02.320> lots<01:28:02.560> of<01:28:02.719> like\nlots of insights and lots of like\nlots of insights and lots of like everything<01:28:03.280> down<01:28:03.440> to<01:28:03.679> like<01:28:04.159> programming\neverything down to like programming\neverything down to like programming techniques,<01:28:05.440> but<01:28:05.760> but<01:28:06.800> up<01:28:06.960> to<01:28:07.199> and<01:28:07.360> including\ntechniques, but but up to and including\ntechniques, but but up to and including stuff<01:28:08.000> within<01:28:08.400> this<01:28:08.560> problem<01:28:08.800> that<01:28:08.960> I<01:28:09.120> covered\nstuff within this problem that I covered\nstuff within this problem that I covered today.<01:28:09.920> And<01:28:10.080> a<01:28:10.320> lot<01:28:10.400> of<01:28:10.480> that<01:28:10.719> came<01:28:10.880> from\ntoday. And a lot of that came from\ntoday. And a lot of that came from insights<01:28:11.520> that<01:28:11.920> Casey<01:28:12.400> shared<01:28:13.120> years<01:28:13.360> ago,\ninsights that Casey shared years ago,\ninsights that Casey shared years ago, not<01:28:14.239> even<01:28:14.400> with<01:28:14.560> me,<01:28:14.719> but<01:28:14.880> with<01:28:15.120> people<01:28:15.280> like\nnot even with me, but with people like\nnot even with me, but with people like 10<01:28:15.760> years<01:28:15.920> ago.<01:28:16.159> And<01:28:16.320> he<01:28:16.480> told<01:28:16.639> me<01:28:16.719> about<01:28:16.880> it.\n10 years ago. And he told me about it.\n10 years ago. And he told me about it. I'm<01:28:17.280> like,<01:28:17.679> \"Wow,<01:28:18.159> that<01:28:18.400> needs<01:28:18.639> to<01:28:18.800> be\nI'm like, \"Wow, that needs to be\nI'm like, \"Wow, that needs to be implemented.\"<01:28:19.280> Like,<01:28:19.360> \"That's<01:28:19.600> a<01:28:19.760> really\nimplemented.\" Like, \"That's a really\nimplemented.\" Like, \"That's a really good<01:28:20.080> idea.\"<01:28:20.400> So<01:28:20.960> Casey<01:28:21.440> is<01:28:21.679> like,<01:28:22.400> you<01:28:22.560> know,\ngood idea.\" So Casey is like, you know,\ngood idea.\" So Casey is like, you know, none<01:28:22.880> of<01:28:22.960> this<01:28:23.040> would<01:28:23.199> have<01:28:23.360> happened<01:28:23.600> without\nnone of this would have happened without\nnone of this would have happened without him.<01:28:24.159> I<01:28:24.400> wouldn't<01:28:24.560> have<01:28:24.639> my<01:28:24.880> job.<01:28:25.040> I<01:28:25.280> wouldn't\nhim. I wouldn't have my job. I wouldn't\nhim. I wouldn't have my job. I wouldn't be<01:28:25.600> none<01:28:25.760> of<01:28:25.840> us<01:28:26.000> would<01:28:26.159> be<01:28:26.320> here.<01:28:26.719> I<01:28:26.960> wouldn't\nbe none of us would be here. I wouldn't\nbe none of us would be here. I wouldn't know<01:28:27.280> how<01:28:27.360> to<01:28:27.440> do<01:28:27.520> it.<01:28:27.679> I<01:28:27.920> wouldn't<01:28:28.080> know<01:28:28.159> how\nknow how to do it. I wouldn't know how\nknow how to do it. I wouldn't know how to<01:28:28.400> work<01:28:28.560> on<01:28:28.719> this<01:28:28.960> problem<01:28:29.520> were<01:28:29.760> it<01:28:29.920> not<01:28:30.080> for\nto work on this problem were it not for\nto work on this problem were it not for for<01:28:30.880> everything<01:28:31.280> he<01:28:31.520> did.<01:28:32.800> And<01:28:33.280> uh<01:28:34.719> so<01:28:34.960> yeah,<01:28:35.360> I\nfor everything he did. And uh so yeah, I\nfor everything he did. And uh so yeah, I mean,<01:28:36.480> tons<01:28:36.719> of<01:28:36.880> props<01:28:37.040> to<01:28:37.199> Casey,<01:28:37.600> obviously.\nmean, tons of props to Casey, obviously.\nmean, tons of props to Casey, obviously. Um<01:28:39.280> but<01:28:40.239> finally,<01:28:41.120> thank<01:28:41.280> you<01:28:41.600> all<01:28:41.920> for\nUm but finally, thank you all for\nUm but finally, thank you all for listening.<01:28:43.040> Thanks<01:28:43.280> for<01:28:43.520> bearing<01:28:43.840> with<01:28:44.000> me\nlistening. Thanks for bearing with me\nlistening. Thanks for bearing with me through<01:28:44.400> all<01:28:44.560> that<01:28:44.800> stuff.<01:28:45.520> Um,<01:28:46.000> and<01:28:46.239> thanks\nthrough all that stuff. Um, and thanks\nthrough all that stuff. Um, and thanks to<01:28:46.639> everyone<01:28:46.960> online<01:28:47.360> for<01:28:47.679> for<01:28:48.080> your<01:28:48.239> time<01:28:48.400> and\nto everyone online for for your time and\nto everyone online for for your time and attention.<01:28:49.440> And<01:28:49.600> that's<01:28:49.760> all<01:28:49.920> I've<01:28:50.159> got.\nattention. And that's all I've got.\nattention. And that's all I've got. Thank<01:28:51.120> you.\nAll<01:29:01.600> right.\nAll right.\nAll right. Hi<01:29:03.679> guys.\nHi guys.\nHi guys. I'm<01:29:06.000> Raphael.<01:29:06.880> Um,<01:29:07.360> sorry<01:29:07.679> my<01:29:08.000> voice<01:29:08.239> has\nI'm Raphael. Um, sorry my voice has\nI'm Raphael. Um, sorry my voice has given<01:29:08.960> up<01:29:09.120> on<01:29:09.360> day<01:29:09.520> one<01:29:09.760> and<01:29:10.000> I'm<01:29:10.560> just<01:29:10.880> hanging\ngiven up on day one and I'm just hanging\ngiven up on day one and I'm just hanging on<01:29:11.360> by<01:29:11.600> a<01:29:11.760> silver<01:29:12.080> thread,<01:29:12.239> but<01:29:12.400> I<01:29:12.560> hope<01:29:12.639> we<01:29:12.800> can\non by a silver thread, but I hope we can\non by a silver thread, but I hope we can still<01:29:13.199> make<01:29:13.360> this.<01:29:14.080> Uh,<01:29:14.560> great<01:29:14.800> talk.<01:29:15.280> Uh,\nstill make this. Uh, great talk. Uh,\nstill make this. Uh, great talk. Uh, great<01:29:16.239> work.<01:29:16.800> I<01:29:17.520> I<01:29:17.920> love<01:29:18.080> the<01:29:18.239> RAD<01:29:18.560> debugger.\ngreat work. I I love the RAD debugger.\ngreat work. I I love the RAD debugger. Like<01:29:19.440> the<01:29:19.679> times<01:29:20.000> I've<01:29:20.239> used<01:29:20.400> it,<01:29:20.639> I've<01:29:20.880> been\nLike the times I've used it, I've been\nLike the times I've used it, I've been blown<01:29:21.360> away<01:29:21.600> by<01:29:21.920> the<01:29:22.159> power<01:29:22.400> it<01:29:22.639> has.<01:29:22.960> Like<01:29:23.199> I\nblown away by the power it has. Like I\nblown away by the power it has. Like I think<01:29:23.600> you<01:29:23.840> sold<01:29:24.080> yourself<01:29:24.560> short<01:29:24.880> in<01:29:25.120> the\nthink you sold yourself short in the\nthink you sold yourself short in the talk<01:29:25.520> by<01:29:25.760> not<01:29:26.000> just<01:29:26.560> demoing<01:29:27.040> all<01:29:27.280> the<01:29:27.440> cool\ntalk by not just demoing all the cool\ntalk by not just demoing all the cool stuff<01:29:28.080> that<01:29:28.560> the<01:29:28.880> system<01:29:29.199> like<01:29:29.440> you<01:29:29.679> talk\nstuff that the system like you talk\nstuff that the system like you talk about<01:29:29.920> the<01:29:30.159> system,<01:29:30.400> but<01:29:30.719> like<01:29:31.360> the<01:29:31.600> amount<01:29:31.840> of\nabout the system, but like the amount of\nabout the system, but like the amount of power<01:29:32.159> it<01:29:32.320> gives<01:29:32.400> you<01:29:32.560> is<01:29:32.719> amazing.<01:29:32.880> I<01:29:33.120> want<01:29:33.199> to\npower it gives you is amazing. I want to\npower it gives you is amazing. I want to dive<01:29:33.520> into<01:29:33.679> that.<01:29:34.000> But<01:29:34.080> like<01:29:34.320> first<01:29:34.960> after<01:29:35.280> all\ndive into that. But like first after all\ndive into that. But like first after all the<01:29:35.920> praise<01:29:36.320> you've<01:29:36.639> gotten<01:29:36.960> for<01:29:37.360> the<01:29:37.520> red\nthe praise you've gotten for the red\nthe praise you've gotten for the red debugger<01:29:38.320> and<01:29:38.560> your<01:29:38.880> skills<01:29:39.360> over<01:29:39.600> the<01:29:39.760> past\ndebugger and your skills over the past\ndebugger and your skills over the past few<01:29:40.080> days<01:29:40.320> and<01:29:40.880> before<01:29:41.199> that<01:29:41.920> it<01:29:42.159> was<01:29:42.400> very\nfew days and before that it was very\nfew days and before that it was very refreshing<01:29:43.120> to<01:29:43.360> see<01:29:43.440> you<01:29:43.679> finally<01:29:44.080> fail<01:29:44.400> at<01:29:44.560> a\nrefreshing to see you finally fail at a\nrefreshing to see you finally fail at a technical<01:29:45.120> task<01:29:45.440> which<01:29:45.679> is<01:29:45.840> like<01:29:46.000> wrestling\ntechnical task which is like wrestling\ntechnical task which is like wrestling with<01:29:46.480> a<01:29:46.639> shitty<01:29:46.960> clipper.<01:29:47.679> Uh<01:29:48.000> so<01:29:48.159> that<01:29:48.400> was\nwith a shitty clipper. Uh so that was\nwith a shitty clipper. Uh so that was really<01:29:48.960> good.\nreally good.\nreally good. >> I<01:29:49.920> don't<01:29:50.000> know<01:29:50.239> how<01:29:50.400> I<01:29:50.560> don't<01:29:50.639> know<01:29:50.719> what's\n>> I don't know how I don't know what's\n>> I don't know how I don't know what's happening.<01:29:51.199> It's<01:29:51.360> like<01:29:51.520> buffering<01:29:51.840> them<01:29:52.000> up\nhappening. It's like buffering them up\nhappening. It's like buffering them up or<01:29:52.320> something,<01:29:53.040> you<01:29:53.120> know.\nor something, you know.\nor something, you know. >> Yeah.<01:29:53.679> No,<01:29:54.080> like<01:29:54.480> awesome.<01:29:54.880> Um<01:29:55.199> I'm<01:29:55.520> hugely\n>> Yeah. No, like awesome. Um I'm hugely\n>> Yeah. No, like awesome. Um I'm hugely impressed<01:29:56.320> with<01:29:56.639> what<01:29:56.880> you<01:29:57.040> did<01:29:57.120> with<01:29:57.280> Ready\nimpressed with what you did with Ready\nimpressed with what you did with Ready Bugger.<01:29:58.000> Thanks,<01:29:58.159> man.<01:29:58.320> Um,<01:29:58.800> and<01:29:59.040> since<01:29:59.280> we\nBugger. Thanks, man. Um, and since we\nBugger. Thanks, man. Um, and since we know<01:29:59.679> from<01:30:00.000> old<01:30:00.320> Twitter<01:30:00.639> that<01:30:00.880> you<01:30:01.040> need\nknow from old Twitter that you need\nknow from old Twitter that you need about<01:30:01.520> a<01:30:01.600> thousand<01:30:02.000> developers<01:30:02.560> to<01:30:02.800> do<01:30:02.960> like\nabout a thousand developers to do like\nabout a thousand developers to do like 140<01:30:04.080> character<01:30:04.400> text<01:30:04.719> posts,\n140 character text posts,\n140 character text posts, >> right?\n>> right?\n>> right? >> Uh,<01:30:06.480> how<01:30:06.800> many<01:30:07.040> tens<01:30:07.360> of<01:30:07.600> thousands<01:30:08.080> of\n>> Uh, how many tens of thousands of\n>> Uh, how many tens of thousands of developers<01:30:08.719> are<01:30:08.880> working<01:30:09.040> on<01:30:09.199> the<01:30:09.360> right\ndevelopers are working on the right\ndevelopers are working on the right debugger<01:30:10.000> right<01:30:10.159> now?\ndebugger right now?\ndebugger right now? >> Right.<01:30:10.719> So,<01:30:11.440> um,<01:30:12.320> you<01:30:12.560> know,<01:30:13.280> we<01:30:13.600> really\n>> Right. So, um, you know, we really\n>> Right. So, um, you know, we really couldn't<01:30:14.159> do<01:30:14.239> it<01:30:14.400> without<01:30:14.719> at<01:30:14.800> least<01:30:15.199> three<01:30:15.360> or\ncouldn't do it without at least three or\ncouldn't do it without at least three or four,<01:30:16.400> but<01:30:16.960> uh,<01:30:17.120> no,<01:30:17.360> I'm<01:30:17.440> just<01:30:17.600> kidding.<01:30:17.840> It's\nfour, but uh, no, I'm just kidding. It's\nfour, but uh, no, I'm just kidding. It's just,<01:30:18.239> so<01:30:18.480> currently<01:30:18.800> it's<01:30:19.040> just<01:30:19.199> me<01:30:19.440> and\njust, so currently it's just me and\njust, so currently it's just me and then,<01:30:20.239> uh,<01:30:20.400> there's<01:30:20.639> another<01:30:20.880> developer<01:30:21.199> on\nthen, uh, there's another developer on\nthen, uh, there's another developer on the<01:30:21.440> team,<01:30:21.679> Nikita<01:30:22.159> Smith,<01:30:22.480> who<01:30:22.719> who's<01:30:23.120> not\nthe team, Nikita Smith, who who's not\nthe team, Nikita Smith, who who's not here.<01:30:23.920> Um,<01:30:24.400> he<01:30:24.719> works<01:30:24.960> primarily<01:30:25.280> on<01:30:25.440> the<01:30:25.520> RAD\nhere. Um, he works primarily on the RAD\nhere. Um, he works primarily on the RAD linker.<01:30:26.639> uh<01:30:26.960> but<01:30:27.520> you<01:30:27.679> know<01:30:28.159> for<01:30:28.400> which<01:30:28.800> is<01:30:28.960> a\nlinker. uh but you know for which is a\nlinker. uh but you know for which is a part<01:30:29.280> of<01:30:29.360> the<01:30:29.520> project<01:30:29.920> for<01:30:30.239> a<01:30:30.480> number<01:30:30.560> of\npart of the project for a number of\npart of the project for a number of reasons<01:30:31.120> but<01:30:31.440> there's<01:30:31.679> a<01:30:31.840> lot<01:30:31.920> of<01:30:32.080> overlap\nreasons but there's a lot of overlap\nreasons but there's a lot of overlap between<01:30:33.040> like<01:30:33.440> those<01:30:33.760> problems<01:30:34.000> like<01:30:34.159> a\nbetween like those problems like a\nbetween like those problems like a linker<01:30:34.639> has<01:30:34.800> to<01:30:34.880> produce<01:30:35.120> debug<01:30:35.520> info\nlinker has to produce debug info\nlinker has to produce debug info debuggers<01:30:36.480> have<01:30:36.560> to<01:30:36.719> read<01:30:36.880> it<01:30:37.199> there's<01:30:37.360> a<01:30:37.520> lot\ndebuggers have to read it there's a lot\ndebuggers have to read it there's a lot of<01:30:37.679> shared<01:30:38.159> we<01:30:38.400> both<01:30:38.639> have<01:30:38.800> to<01:30:38.880> parse<01:30:39.199> certain\nof shared we both have to parse certain\nof shared we both have to parse certain formats<01:30:40.159> stuff<01:30:40.400> like<01:30:40.480> that<01:30:40.639> so<01:30:40.880> there's<01:30:41.120> a<01:30:41.280> lot\nformats stuff like that so there's a lot\nformats stuff like that so there's a lot of<01:30:41.679> um<01:30:42.080> overlap<01:30:42.560> and<01:30:42.800> so<01:30:43.760> um<01:30:44.159> Nick<01:30:44.400> kind<01:30:44.560> of\nof um overlap and so um Nick kind of\nof um overlap and so um Nick kind of works<01:30:44.800> on<01:30:44.880> those<01:30:45.040> parts<01:30:45.199> of<01:30:45.280> the<01:30:45.360> problem<01:30:45.679> he's\nworks on those parts of the problem he's\nworks on those parts of the problem he's really<01:30:46.000> good<01:30:46.080> at<01:30:46.239> like<01:30:46.560> how<01:30:46.719> do<01:30:46.880> you<01:30:46.960> unwind<01:30:47.520> on\nreally good at like how do you unwind on\nreally good at like how do you unwind on Windows<01:30:48.560> x6<01:30:49.120> like<01:30:49.440> how<01:30:49.600> do<01:30:49.760> you<01:30:49.840> unwind<01:30:50.400> you\nWindows x6 like how do you unwind you\nWindows x6 like how do you unwind you using<01:30:51.040> PE<01:30:51.520> unwind<01:30:51.920> info<01:30:52.239> on<01:30:52.400> Windows<01:30:52.639> x64<01:30:53.360> or\nusing PE unwind info on Windows x64 or\nusing PE unwind info on Windows x64 or whatever<01:30:53.760> it's<01:30:53.920> like<01:30:54.400> he's<01:30:54.639> really<01:30:54.800> good<01:30:54.880> at\nwhatever it's like he's really good at\nwhatever it's like he's really good at that<01:30:55.280> kind<01:30:55.360> of<01:30:55.440> thing<01:30:55.760> Um<01:30:56.000> I've<01:30:56.239> focused\nthat kind of thing Um I've focused\nthat kind of thing Um I've focused primarily<01:30:56.960> on<01:30:57.040> the<01:30:57.199> debugger<01:30:57.600> itself.<01:30:58.239> Um<01:30:58.800> the\nprimarily on the debugger itself. Um the\nprimarily on the debugger itself. Um the process<01:30:59.520> control<01:30:59.840> stuff,<01:31:00.320> the<01:31:00.960> the<01:31:01.600> UI\nprocess control stuff, the the UI\nprocess control stuff, the the UI obviously<01:31:02.480> the<01:31:02.719> visualization<01:31:03.199> engine,<01:31:03.600> the\nobviously the visualization engine, the\nobviously the visualization engine, the evaluation<01:31:04.320> engine,<01:31:04.719> like<01:31:04.880> stuff<01:31:05.120> like<01:31:05.280> that.\nevaluation engine, like stuff like that.\nevaluation engine, like stuff like that. So<01:31:06.480> us<01:31:06.800> two,<01:31:07.120> those<01:31:07.280> are<01:31:07.440> what<01:31:07.600> we<01:31:07.760> do.\nSo us two, those are what we do.\nSo us two, those are what we do. >> All right.<01:31:09.679> Um<01:31:10.159> and<01:31:10.400> yeah,<01:31:10.719> for<01:31:11.120> in<01:31:11.280> case\n>> All right. Um and yeah, for in case\n>> All right. Um and yeah, for in case people<01:31:11.760> haven't<01:31:12.000> heard<01:31:12.159> it,<01:31:12.400> like<01:31:13.040> uh<01:31:13.199> Casey\npeople haven't heard it, like uh Casey\npeople haven't heard it, like uh Casey yesterday<01:31:14.159> called<01:31:14.400> him<01:31:14.639> the<01:31:14.960> best<01:31:15.360> systems\nyesterday called him the best systems\nyesterday called him the best systems architect.<01:31:16.800> He<01:31:17.040> knows\narchitect. He knows\narchitect. He knows >> that's\n>> that's\n>> that's >> I<01:31:18.719> think<01:31:18.800> he<01:31:19.199> said<01:31:19.440> one<01:31:19.600> of<01:31:20.000> maybe\n>> I think he said one of maybe\n>> I think he said one of maybe >> maybe<01:31:20.800> he<01:31:20.960> said<01:31:21.199> one<01:31:21.360> of<01:31:21.600> but<01:31:21.760> if<01:31:21.840> he<01:31:21.920> said<01:31:22.080> it\n>> maybe he said one of but if he said it\n>> maybe he said one of but if he said it said<01:31:22.400> it<01:31:22.560> quietly<01:31:23.040> like<01:31:23.280> I<01:31:23.440> heard<01:31:23.679> best\nsaid it quietly like I heard best\nsaid it quietly like I heard best systems<01:31:24.800> architecture\nsystems architecture\nsystems architecture >> very<01:31:25.679> very<01:31:26.000> high<01:31:26.159> praise<01:31:27.040> um<01:31:27.440> yeah\n>> very very high praise um yeah\n>> very very high praise um yeah >> and<01:31:27.920> you're<01:31:28.080> like<01:31:28.239> you're<01:31:28.560> super<01:31:28.880> young<01:31:30.000> um\n>> and you're like you're super young um\n>> and you're like you're super young um how<01:31:31.280> do<01:31:31.440> you<01:31:31.679> how<01:31:31.920> did<01:31:32.080> you<01:31:32.239> get<01:31:32.480> so<01:31:32.719> good<01:31:32.960> so\nhow do you how did you get so good so\nhow do you how did you get so good so fast<01:31:33.600> like<01:31:33.920> it<01:31:34.239> seems<01:31:34.480> like<01:31:34.719> even<01:31:35.040> Casey<01:31:35.520> said\nfast like it seems like even Casey said\nfast like it seems like even Casey said yesterday<01:31:36.239> like<01:31:36.480> he<01:31:36.800> had<01:31:36.960> his<01:31:37.920> oop<01:31:38.880> oops<01:31:39.679> uh\nyesterday like he had his oop oops uh\nyesterday like he had his oop oops uh phase<01:31:40.239> where<01:31:40.480> he<01:31:40.639> did<01:31:40.880> heavily\nphase where he did heavily\nphase where he did heavily object-oriented<01:31:42.159> programming<01:31:42.480> and<01:31:42.719> did<01:31:42.880> all\nobject-oriented programming and did all\nobject-oriented programming and did all the<01:31:43.199> pitfalls<01:31:43.920> and<01:31:44.239> I<01:31:44.560> certainly<01:31:44.880> had<01:31:45.120> that\nthe pitfalls and I certainly had that\nthe pitfalls and I certainly had that time<01:31:45.520> where<01:31:45.679> I<01:31:45.840> had<01:31:46.239> to<01:31:46.800> unlearn<01:31:47.360> like<01:31:47.920> do<01:31:48.159> all\ntime where I had to unlearn like do all\ntime where I had to unlearn like do all the<01:31:48.480> damage<01:31:48.800> that<01:31:48.960> you<01:31:49.120> do<01:31:49.280> with<01:31:49.440> that<01:31:49.600> and\nthe damage that you do with that and\nthe damage that you do with that and then<01:31:50.000> see<01:31:50.239> that<01:31:50.560> and<01:31:50.719> unlearn<01:31:51.199> it<01:31:51.440> and<01:31:51.760> just\nthen see that and unlearn it and just\nthen see that and unlearn it and just come<01:31:52.239> back<01:31:52.400> to<01:31:52.639> the<01:31:52.719> root<01:31:53.040> like<01:31:53.360> did<01:31:53.600> you<01:31:53.760> skip\ncome back to the root like did you skip\ncome back to the root like did you skip that<01:31:54.159> phase<01:31:54.400> or<01:31:54.560> did<01:31:54.719> you<01:31:54.880> pass<01:31:55.120> through<01:31:55.360> it\nthat phase or did you pass through it\nthat phase or did you pass through it quickly<01:31:55.840> or<01:31:56.159> how<01:31:56.320> do<01:31:56.480> you<01:31:57.040> how<01:31:57.280> do<01:31:57.360> you<01:31:57.520> get<01:31:57.679> to\nquickly or how do you how do you get to\nquickly or how do you how do you get to your<01:31:58.000> skill<01:31:58.239> level<01:31:58.400> at<01:31:58.639> your<01:31:58.880> age<01:31:59.120> like<01:31:59.360> what\nyour skill level at your age like what\nyour skill level at your age like what happened?\nhappened?\nhappened? >> So<01:32:01.040> uh<01:32:01.520> I<01:32:01.760> mean<01:32:01.920> one<01:32:02.080> of<01:32:02.159> the<01:32:02.320> reasons<01:32:02.480> I<01:32:02.639> I<01:32:02.880> got\n>> So uh I mean one of the reasons I I got\n>> So uh I mean one of the reasons I I got a<01:32:03.120> pretty<01:32:03.280> good<01:32:03.440> head<01:32:03.679> start<01:32:03.840> on<01:32:04.080> everyone<01:32:04.400> I\na pretty good head start on everyone I\na pretty good head start on everyone I start<01:32:04.719> I<01:32:05.040> started<01:32:05.520> programming<01:32:06.000> when<01:32:06.159> I<01:32:06.239> was\nstart I started programming when I was\nstart I started programming when I was like<01:32:06.480> six<01:32:06.880> and<01:32:07.040> it<01:32:07.280> wasn't<01:32:07.600> my<01:32:07.840> own<01:32:08.080> doing<01:32:08.560> it\nlike six and it wasn't my own doing it\nlike six and it wasn't my own doing it was<01:32:08.800> my<01:32:09.040> older<01:32:09.360> brother<01:32:09.600> who<01:32:09.840> showed<01:32:10.159> me<01:32:10.320> it\nwas my older brother who showed me it\nwas my older brother who showed me it and<01:32:10.719> I<01:32:10.880> was<01:32:10.960> like<01:32:11.199> fascinated<01:32:11.679> by<01:32:11.920> it.<01:32:12.480> Um,<01:32:12.960> I\nand I was like fascinated by it. Um, I\nand I was like fascinated by it. Um, I did<01:32:13.360> have<01:32:13.520> that<01:32:13.679> phase,<01:32:14.080> although<01:32:14.400> I<01:32:14.639> was<01:32:14.719> too\ndid have that phase, although I was too\ndid have that phase, although I was too lazy<01:32:15.440> to<01:32:15.679> actually<01:32:16.000> go<01:32:16.159> and<01:32:16.400> do<01:32:16.560> all<01:32:16.719> the\nlazy to actually go and do all the\nlazy to actually go and do all the complicated<01:32:17.600> oop<01:32:17.840> like<01:32:18.080> template<01:32:18.639> stuff<01:32:18.800> that\ncomplicated oop like template stuff that\ncomplicated oop like template stuff that Casey<01:32:19.600> actually<01:32:19.840> did.<01:32:20.159> So,<01:32:20.560> he<01:32:20.880> actually<01:32:21.199> try\nCasey actually did. So, he actually try\nCasey actually did. So, he actually try he<01:32:21.679> tried<01:32:21.920> much<01:32:22.080> harder<01:32:22.320> and<01:32:22.480> like<01:32:22.639> went<01:32:22.800> much\nhe tried much harder and like went much\nhe tried much harder and like went much further<01:32:23.199> in<01:32:23.360> that<01:32:23.520> direction<01:32:23.760> than<01:32:24.080> than<01:32:24.400> I\nfurther in that direction than than I\nfurther in that direction than than I ever<01:32:24.880> remember<01:32:25.199> myself<01:32:25.600> doing.<01:32:26.159> I<01:32:26.400> definitely\never remember myself doing. I definitely\never remember myself doing. I definitely had<01:32:27.040> it<01:32:27.280> though.<01:32:27.840> Um,<01:32:28.320> because<01:32:28.560> it's<01:32:28.719> what\nhad it though. Um, because it's what\nhad it though. Um, because it's what people<01:32:29.120> tell<01:32:29.199> you<01:32:29.360> to<01:32:29.520> do,<01:32:29.760> right?<01:32:30.000> like<01:32:30.159> you\npeople tell you to do, right? like you\npeople tell you to do, right? like you go<01:32:30.400> and<01:32:30.560> read<01:32:30.719> tutorials<01:32:31.120> and<01:32:31.360> every<01:32:31.679> code<01:32:31.920> is\ngo and read tutorials and every code is\ngo and read tutorials and every code is structured<01:32:32.400> in<01:32:32.560> a<01:32:32.719> particular<01:32:33.120> way<01:32:33.440> and<01:32:33.600> so\nstructured in a particular way and so\nstructured in a particular way and so you<01:32:33.920> just<01:32:34.080> kind<01:32:34.239> of<01:32:34.320> copy<01:32:34.639> it<01:32:35.520> and<01:32:36.239> um<01:32:36.960> and<01:32:37.440> so<01:32:37.760> I\nyou just kind of copy it and um and so I\nyou just kind of copy it and um and so I had<01:32:38.159> it<01:32:38.320> and<01:32:38.560> I<01:32:38.719> didn't<01:32:38.880> really<01:32:39.040> know<01:32:39.199> why<01:32:39.440> it\nhad it and I didn't really know why it\nhad it and I didn't really know why it was<01:32:39.760> happening<01:32:40.560> and<01:32:40.800> I<01:32:41.040> just<01:32:41.440> figured<01:32:41.840> it's\nwas happening and I just figured it's\nwas happening and I just figured it's like<01:32:42.320> it's<01:32:42.719> important<01:32:43.360> at<01:32:43.600> some<01:32:43.840> point\nlike it's important at some point\nlike it's important at some point someday<01:32:44.639> to<01:32:44.880> someone<01:32:45.120> that<01:32:45.360> I<01:32:45.520> put<01:32:45.840> like\nsomeday to someone that I put like\nsomeday to someone that I put like everything<01:32:46.320> behind<01:32:46.560> a<01:32:46.719> getter<01:32:46.880> instead<01:32:47.280> or\neverything behind a getter instead or\neverything behind a getter instead or whatever.<01:32:47.600> It's<01:32:47.679> like<01:32:47.840> oh<01:32:48.000> this<01:32:48.080> will<01:32:48.159> be<01:32:48.320> this\nwhatever. It's like oh this will be this\nwhatever. It's like oh this will be this will<01:32:48.560> be<01:32:48.719> useful<01:32:48.960> someday.<01:32:49.679> Never<01:32:49.920> was\nwill be useful someday. Never was\nwill be useful someday. Never was useful.<01:32:50.719> Um<01:32:51.120> but<01:32:51.440> it's<01:32:51.920> uh<01:32:52.080> I<01:32:52.320> just<01:32:52.480> started\nuseful. Um but it's uh I just started\nuseful. Um but it's uh I just started doing<01:32:52.960> it<01:32:53.520> but<01:32:53.760> I<01:32:53.920> didn't<01:32:54.159> go<01:32:54.400> nuts<01:32:54.719> with<01:32:55.040> like\ndoing it but I didn't go nuts with like\ndoing it but I didn't go nuts with like the<01:32:55.520> crazy<01:32:55.840> abstraction<01:32:56.560> template<01:32:56.960> stuff.<01:32:57.120> I\nthe crazy abstraction template stuff. I\nthe crazy abstraction template stuff. I did<01:32:57.440> a<01:32:57.600> little<01:32:57.679> bit<01:32:57.760> of<01:32:57.840> that,<01:32:58.000> but<01:32:58.320> not<01:32:58.639> not<01:32:59.280> um\ndid a little bit of that, but not not um\ndid a little bit of that, but not not um I<01:32:59.679> didn't<01:32:59.840> go<01:33:00.159> far<01:33:00.400> down<01:33:00.560> that<01:33:00.800> rabbit<01:33:01.040> hole.\nI didn't go far down that rabbit hole.\nI didn't go far down that rabbit hole. The<01:33:01.520> way<01:33:01.600> I<01:33:01.760> got<01:33:01.920> out<01:33:02.000> of<01:33:02.080> it<01:33:02.239> is<01:33:02.400> just<01:33:02.560> Handmade\nThe way I got out of it is just Handmade\nThe way I got out of it is just Handmade Hero.<01:33:03.280> Like<01:33:03.440> I<01:33:03.600> I<01:33:04.000> was<01:33:04.159> I<01:33:04.400> was<01:33:04.480> spending<01:33:04.719> a<01:33:04.880> lot\nHero. Like I I was I was spending a lot\nHero. Like I I was I was spending a lot of<01:33:05.040> time<01:33:05.199> building<01:33:05.520> games<01:33:05.760> and<01:33:06.000> engines<01:33:07.440> and\nof time building games and engines and\nof time building games and engines and um<01:33:08.639> I<01:33:08.880> would<01:33:09.040> build<01:33:09.199> them<01:33:09.360> in<01:33:09.600> sort<01:33:09.760> of<01:33:09.840> this\num I would build them in sort of this\num I would build them in sort of this like<01:33:10.400> you<01:33:10.480> know<01:33:10.560> what<01:33:10.719> you<01:33:10.880> might<01:33:11.040> imagine\nlike you know what you might imagine\nlike you know what you might imagine finding<01:33:11.600> on<01:33:11.760> like<01:33:11.920> gamedev<01:33:12.400> forums<01:33:12.880> in<01:33:13.280> the\nfinding on like gamedev forums in the\nfinding on like gamedev forums in the early<01:33:13.840> 2000s<01:33:14.960> um<01:33:15.199> sort<01:33:15.360> of<01:33:15.440> like<01:33:15.600> C++<01:33:16.239> 03<01:33:17.040> you\nearly 2000s um sort of like C++ 03 you\nearly 2000s um sort of like C++ 03 you know<01:33:17.440> early<01:33:18.159> before<01:33:18.560> C++<01:33:19.120> 11<01:33:19.440> like<01:33:19.600> that<01:33:19.840> style\nknow early before C++ 11 like that style\nknow early before C++ 11 like that style of<01:33:20.239> code<01:33:20.400> where<01:33:20.639> it's<01:33:20.800> like<01:33:21.199> object-oriented\nof code where it's like object-oriented\nof code where it's like object-oriented crap<01:33:22.400> mixed<01:33:22.719> with<01:33:23.120> C<01:33:23.440> basically.<01:33:24.400> And<01:33:24.719> so<01:33:24.880> I\ncrap mixed with C basically. And so I\ncrap mixed with C basically. And so I didn't<01:33:25.360> go<01:33:26.239> crazy.<01:33:26.639> Like<01:33:26.800> I<01:33:26.960> was<01:33:27.040> doing<01:33:27.199> a<01:33:27.360> lot\ndidn't go crazy. Like I was doing a lot\ndidn't go crazy. Like I was doing a lot of<01:33:27.600> that.<01:33:28.159> Um,<01:33:28.320> and<01:33:28.480> I<01:33:28.719> thought<01:33:28.800> that<01:33:29.120> I\nof that. Um, and I thought that I\nof that. Um, and I thought that I believed<01:33:29.679> in<01:33:29.840> a<01:33:30.000> lot<01:33:30.080> of<01:33:30.159> things<01:33:30.239> that<01:33:30.400> were\nbelieved in a lot of things that were\nbelieved in a lot of things that were kind<01:33:30.639> of<01:33:30.719> leading<01:33:30.960> me<01:33:31.120> astray,<01:33:31.520> but<01:33:31.679> I<01:33:31.840> didn't\nkind of leading me astray, but I didn't\nkind of leading me astray, but I didn't actually<01:33:32.320> try<01:33:32.480> that<01:33:32.639> hard<01:33:32.800> on<01:33:33.040> them<01:33:33.199> because<01:33:33.360> I\nactually try that hard on them because I\nactually try that hard on them because I was<01:33:33.600> too<01:33:33.760> lazy<01:33:34.239> because<01:33:34.480> it's<01:33:34.639> just<01:33:34.719> a<01:33:34.880> ton<01:33:34.960> of\nwas too lazy because it's just a ton of\nwas too lazy because it's just a ton of typing.<01:33:35.360> Like<01:33:35.520> Casey<01:33:35.840> was<01:33:36.000> like<01:33:36.400> when<01:33:36.639> Casey\ntyping. Like Casey was like when Casey\ntyping. Like Casey was like when Casey was<01:33:37.120> talking<01:33:37.280> about<01:33:37.360> it,<01:33:37.600> he's<01:33:37.760> like<01:33:38.400> he<01:33:38.639> just\nwas talking about it, he's like he just\nwas talking about it, he's like he just buckled<01:33:39.280> down<01:33:39.440> and<01:33:39.679> started<01:33:39.920> writing<01:33:40.320> all\nbuckled down and started writing all\nbuckled down and started writing all this<01:33:40.960> crazy<01:33:41.360> stuff<01:33:41.600> and<01:33:41.760> I'm<01:33:42.000> like,<01:33:42.239> I<01:33:42.480> just\nthis crazy stuff and I'm like, I just\nthis crazy stuff and I'm like, I just don't<01:33:42.960> want<01:33:43.120> to<01:33:43.280> do<01:33:43.360> that.<01:33:43.600> So<01:33:43.760> I<01:33:43.920> kind<01:33:44.080> of<01:33:44.239> I\ndon't want to do that. So I kind of I\ndon't want to do that. So I kind of I kind<01:33:44.719> of<01:33:44.880> stayed<01:33:45.120> more<01:33:45.360> constrained<01:33:45.840> and<01:33:46.080> and\nkind of stayed more constrained and and\nkind of stayed more constrained and and um<01:33:47.440> just<01:33:47.679> tried<01:33:47.840> to<01:33:48.000> build<01:33:48.159> games<01:33:48.400> that<01:33:48.560> way.\num just tried to build games that way.\num just tried to build games that way. And<01:33:48.880> then<01:33:49.040> when<01:33:49.120> I<01:33:49.280> saw<01:33:49.440> Handmade<01:33:49.760> Hero,<01:33:50.080> I'm\nAnd then when I saw Handmade Hero, I'm\nAnd then when I saw Handmade Hero, I'm like,<01:33:50.880> oh,<01:33:51.120> like<01:33:51.360> none<01:33:51.520> of<01:33:51.600> that<01:33:51.760> was<01:33:51.920> needed.\nlike, oh, like none of that was needed.\nlike, oh, like none of that was needed. Like<01:33:52.400> I<01:33:52.560> didn't<01:33:52.639> have<01:33:52.800> to<01:33:52.880> even<01:33:53.120> go<01:33:53.440> I<01:33:53.679> didn't\nLike I didn't have to even go I didn't\nLike I didn't have to even go I didn't even<01:33:54.000> even<01:33:54.239> have<01:33:54.400> to<01:33:54.480> like<01:33:54.639> open<01:33:54.800> the<01:33:55.040> door<01:33:55.120> to\neven even have to like open the door to\neven even have to like open the door to that<01:33:55.520> hallway.<01:33:56.239> I<01:33:56.480> can<01:33:56.560> just<01:33:57.120> you<01:33:57.280> know\nthat hallway. I can just you know\nthat hallway. I can just you know actually<01:33:58.000> not<01:33:58.239> get<01:33:58.400> sidetracked.\nactually not get sidetracked.\nactually not get sidetracked. >> So<01:33:59.120> maybe<01:33:59.280> a<01:33:59.520> bit<01:33:59.600> of<01:33:59.760> laziness<01:34:00.320> saved.\n>> So maybe a bit of laziness saved.\n>> So maybe a bit of laziness saved. >> Yes.<01:34:01.120> Okay.\n>> Yes. Okay.\n>> Yes. Okay. >> Yes.<01:34:02.080> It's<01:34:02.239> it's<01:34:02.639> my<01:34:02.800> laziness<01:34:03.280> saved<01:34:03.520> me<01:34:03.679> I\n>> Yes. It's it's my laziness saved me I\n>> Yes. It's it's my laziness saved me I think<01:34:04.000> to<01:34:04.159> some<01:34:04.320> degree.<01:34:04.480> I<01:34:04.639> want<01:34:04.719> to<01:34:04.880> go<01:34:05.120> go\nthink to some degree. I want to go go\nthink to some degree. I want to go go get<01:34:05.679> more<01:34:05.840> into<01:34:06.080> the<01:34:06.239> red<01:34:06.400> debugger<01:34:06.880> details,\nget more into the red debugger details,\nget more into the red debugger details, but<01:34:07.440> first<01:34:07.760> like<01:34:08.080> the<01:34:08.320> channel<01:34:08.800> I<01:34:09.040> saw<01:34:09.280> that\nbut first like the channel I saw that\nbut first like the channel I saw that like<01:34:10.159> you<01:34:10.400> described<01:34:10.960> your<01:34:11.520> like<01:34:12.000> kind<01:34:12.239> of<01:34:12.320> the\nlike you described your like kind of the\nlike you described your like kind of the building<01:34:13.120> generic<01:34:13.679> building<01:34:13.920> blocks<01:34:14.320> you<01:34:14.560> you\nbuilding generic building blocks you you\nbuilding generic building blocks you you assembled<01:34:15.440> to<01:34:15.840> visualize<01:34:16.400> data<01:34:16.719> in<01:34:16.960> the\nassembled to visualize data in the\nassembled to visualize data in the debugger<01:34:17.840> and<01:34:18.239> it<01:34:18.560> seems<01:34:18.800> like<01:34:18.960> when<01:34:19.120> I<01:34:19.360> just\ndebugger and it seems like when I just\ndebugger and it seems like when I just watch<01:34:20.000> like<01:34:20.239> the<01:34:20.480> things<01:34:20.639> you<01:34:20.880> didn't<01:34:21.040> show\nwatch like the things you didn't show\nwatch like the things you didn't show like<01:34:21.520> all<01:34:21.679> the<01:34:21.840> things<01:34:22.000> you<01:34:22.159> you<01:34:22.480> demoed<01:34:22.880> on\nlike all the things you you demoed on\nlike all the things you you demoed on Twitter<01:34:23.520> etc<01:34:23.920> of<01:34:24.000> of<01:34:24.159> the<01:34:24.400> power<01:34:24.639> that<01:34:24.960> gives\nTwitter etc of of the power that gives\nTwitter etc of of the power that gives you<01:34:25.679> it<01:34:25.840> seems<01:34:26.080> like<01:34:26.239> you<01:34:26.639> discovered<01:34:27.360> the\nyou it seems like you discovered the\nyou it seems like you discovered the right<01:34:28.400> building<01:34:28.719> blocks<01:34:29.040> that<01:34:29.280> give<01:34:29.440> you\nright building blocks that give you\nright building blocks that give you enormous<01:34:30.800> expressiveness<01:34:31.760> with<01:34:32.239> very\nenormous expressiveness with very\nenormous expressiveness with very small<01:34:34.400> set<01:34:34.639> of<01:34:34.960> like<01:34:36.000> it<01:34:36.080> it<01:34:36.239> seems<01:34:36.480> like<01:34:36.639> a\nsmall set of like it it seems like a\nsmall set of like it it seems like a small<01:34:37.040> set<01:34:37.199> of<01:34:38.239> Lego<01:34:38.639> blocks<01:34:38.960> let's<01:34:39.120> say<01:34:39.280> to\nsmall set of Lego blocks let's say to\nsmall set of Lego blocks let's say to assemble<01:34:39.760> it.<01:34:40.239> Um,<01:34:40.880> how<01:34:41.040> do<01:34:41.120> you<01:34:41.280> do<01:34:41.360> that\nassemble it. Um, how do you do that\nassemble it. Um, how do you do that without<01:34:41.920> like<01:34:42.159> how<01:34:42.320> did<01:34:42.400> you<01:34:42.480> arrive<01:34:42.719> at<01:34:42.960> that\nwithout like how did you arrive at that\nwithout like how did you arrive at that with<01:34:44.400> because<01:34:45.360> a<01:34:45.600> counter<01:34:45.840> example<01:34:46.080> I<01:34:46.239> would\nwith because a counter example I would\nwith because a counter example I would give<01:34:46.480> of<01:34:46.639> people<01:34:46.880> trying<01:34:47.120> that<01:34:47.360> is<01:34:47.600> like<01:34:48.400> at\ngive of people trying that is like at\ngive of people trying that is like at some<01:34:48.880> point<01:34:49.040> I<01:34:49.199> think<01:34:49.360> the<01:34:49.520> office<01:34:49.920> suite\nsome point I think the office suite\nsome point I think the office suite decided<01:34:50.719> that<01:34:51.199> every<01:34:51.520> window<01:34:52.000> every<01:34:52.239> UI\ndecided that every window every UI\ndecided that every window every UI element<01:34:52.880> should<01:34:53.120> be<01:34:53.199> a<01:34:53.360> dragable<01:34:53.920> window\nelement should be a dragable window\nelement should be a dragable window >> and<01:34:54.880> of<01:34:55.040> course<01:34:55.199> everything<01:34:55.520> that<01:34:55.760> a<01:34:56.000> window\n>> and of course everything that a window\n>> and of course everything that a window that's<01:34:56.480> floating<01:34:56.880> should<01:34:57.120> be<01:34:57.280> closable<01:34:58.239> and\nthat's floating should be closable and\nthat's floating should be closable and so<01:34:59.280> they<01:34:59.600> came<01:34:59.840> to<01:35:00.000> this<01:35:00.400> great<01:35:00.800> state<01:35:01.120> where\nso they came to this great state where\nso they came to this great state where people<01:35:01.760> could<01:35:02.000> just<01:35:02.400> close<01:35:02.719> their<01:35:03.040> menu<01:35:03.440> bar\npeople could just close their menu bar\npeople could just close their menu bar and<01:35:04.080> be<01:35:04.320> completely<01:35:04.880> host<01:35:05.520> unless<01:35:05.920> unless\nand be completely host unless unless\nand be completely host unless unless they<01:35:06.480> Google<01:35:06.719> how<01:35:06.880> to<01:35:07.040> restore<01:35:07.280> that<01:35:08.000> um<01:35:08.480> and\nthey Google how to restore that um and\nthey Google how to restore that um and like<01:35:08.880> they<01:35:09.120> tried<01:35:09.280> to<01:35:09.440> be<01:35:09.520> very<01:35:09.760> generic<01:35:10.320> have\nlike they tried to be very generic have\nlike they tried to be very generic have building<01:35:10.800> blocks<01:35:11.040> of<01:35:11.199> like<01:35:11.360> everything's<01:35:11.760> a\nbuilding blocks of like everything's a\nbuilding blocks of like everything's a dragable<01:35:12.400> window<01:35:12.560> and<01:35:12.800> we're<01:35:12.880> going<01:35:12.960> to<01:35:13.040> get<01:35:13.120> a\ndragable window and we're going to get a\ndragable window and we're going to get a great<01:35:13.440> power<01:35:13.600> of<01:35:13.760> that<01:35:13.920> and<01:35:14.719> result<01:35:15.040> we<01:35:15.199> all\ngreat power of that and result we all\ngreat power of that and result we all suffered.<01:35:15.920> Um,\nsuffered. Um,\nsuffered. Um, >> how<01:35:16.880> did<01:35:17.040> you<01:35:17.199> get<01:35:17.360> to<01:35:17.520> this<01:35:17.840> set<01:35:18.000> of<01:35:18.159> building\n>> how did you get to this set of building\n>> how did you get to this set of building blocks?<01:35:18.719> Was<01:35:18.880> it<01:35:18.960> like<01:35:19.679> do<01:35:19.920> you<01:35:20.159> have<01:35:20.320> to\nblocks? Was it like do you have to\nblocks? Was it like do you have to iterate<01:35:20.800> on<01:35:20.960> that?<01:35:21.199> Was<01:35:21.360> it<01:35:21.520> trial<01:35:21.760> and<01:35:22.000> error?\niterate on that? Was it trial and error?\niterate on that? Was it trial and error? Was<01:35:22.400> it<01:35:22.639> undo<01:35:23.120> redo<01:35:23.760> dozens<01:35:24.080> of<01:35:24.239> times<01:35:24.400> or<01:35:24.639> are\nWas it undo redo dozens of times or are\nWas it undo redo dozens of times or are you<01:35:24.880> like<01:35:25.199> n<01:35:25.520> like<01:35:25.760> Neo<01:35:26.080> and<01:35:26.320> just<01:35:26.719> see<01:35:26.960> the\nyou like n like Neo and just see the\nyou like n like Neo and just see the I<01:35:28.639> I'm<01:35:28.880> definitely<01:35:29.120> not<01:35:29.360> Neo.<01:35:30.480> I<01:35:30.639> think<01:35:30.960> so.<01:35:31.360> I\nI I'm definitely not Neo. I think so. I\nI I'm definitely not Neo. I think so. I think<01:35:31.920> um<01:35:32.560> I<01:35:32.880> think<01:35:33.040> that<01:35:33.520> where<01:35:33.920> people<01:35:34.719> where\nthink um I think that where people where\nthink um I think that where people where I've<01:35:35.280> screwed<01:35:35.520> up<01:35:35.679> in<01:35:35.920> the<01:35:36.000> past<01:35:36.239> and<01:35:36.480> where<01:35:36.800> I\nI've screwed up in the past and where I\nI've screwed up in the past and where I think<01:35:37.440> a<01:35:37.679> lot<01:35:37.760> of<01:35:37.920> those<01:35:38.159> designs<01:35:38.560> are<01:35:38.719> screwed\nthink a lot of those designs are screwed\nthink a lot of those designs are screwed up<01:35:39.360> is<01:35:39.600> when<01:35:39.760> they<01:35:39.920> try<01:35:40.080> to<01:35:40.159> abstract<01:35:40.639> over\nup is when they try to abstract over\nup is when they try to abstract over like<01:35:41.199> they<01:35:41.360> have<01:35:41.520> like<01:35:41.679> one<01:35:42.080> interface<01:35:42.880> but\nlike they have like one interface but\nlike they have like one interface but that<01:35:43.280> interface<01:35:43.679> actually<01:35:43.920> implies<01:35:44.320> many\nthat interface actually implies many\nthat interface actually implies many concrete<01:35:45.120> realities.<01:35:45.600> And<01:35:45.760> I<01:35:45.920> think<01:35:46.080> people<01:35:46.639> I\nconcrete realities. And I think people I\nconcrete realities. And I think people I think<01:35:47.040> people<01:35:47.360> lie<01:35:47.600> to<01:35:47.679> themselves<01:35:48.080> a<01:35:48.239> little\nthink people lie to themselves a little\nthink people lie to themselves a little bit<01:35:48.480> about<01:35:48.800> how<01:35:49.360> little<01:35:50.000> concret<01:35:50.560> they<01:35:50.800> they\nbit about how little concret they they\nbit about how little concret they they lie<01:35:51.199> to<01:35:51.360> themselves<01:35:51.679> about<01:35:51.840> how<01:35:52.080> many\nlie to themselves about how many\nlie to themselves about how many concrete<01:35:52.880> details<01:35:53.280> actually<01:35:53.520> float<01:35:53.840> up<01:35:53.920> and\nconcrete details actually float up and\nconcrete details actually float up and are<01:35:54.320> needed<01:35:54.560> in<01:35:54.719> the<01:35:54.880> abstraction.<01:35:55.840> And<01:35:56.080> so,\nare needed in the abstraction. And so,\nare needed in the abstraction. And so, um,<01:35:57.120> those<01:35:57.360> abstractions<01:35:57.920> get<01:35:58.080> pretty\num, those abstractions get pretty\num, those abstractions get pretty brittle<01:35:58.719> and<01:35:58.960> leaky<01:35:59.520> and,<01:36:00.159> um,<01:36:00.719> and<01:36:00.960> so<01:36:02.159> I\nbrittle and leaky and, um, and so I\nbrittle and leaky and, um, and so I think<01:36:02.480> it's<01:36:02.800> that<01:36:03.120> root<01:36:03.440> problem<01:36:03.760> where<01:36:03.920> it's\nthink it's that root problem where it's\nthink it's that root problem where it's like<01:36:04.239> you've<01:36:04.480> got<01:36:04.639> one<01:36:04.880> thing<01:36:05.120> you<01:36:05.360> want<01:36:05.440> to\nlike you've got one thing you want to\nlike you've got one thing you want to treat<01:36:05.760> as<01:36:06.000> one<01:36:06.159> thing,<01:36:06.560> but<01:36:06.800> it's<01:36:07.040> secretly\ntreat as one thing, but it's secretly\ntreat as one thing, but it's secretly multiple<01:36:07.920> things<01:36:08.320> and<01:36:08.639> you<01:36:08.880> don't<01:36:09.040> want<01:36:09.199> to\nmultiple things and you don't want to\nmultiple things and you don't want to pretend<01:36:09.600> that<01:36:09.760> it's<01:36:10.000> multiple<01:36:10.320> things.<01:36:10.560> Now,\npretend that it's multiple things. Now,\npretend that it's multiple things. Now, the<01:36:11.280> way<01:36:11.360> that<01:36:11.520> I<01:36:11.760> tend<01:36:12.000> to<01:36:12.159> think<01:36:12.239> about<01:36:12.400> it<01:36:12.560> is\nthe way that I tend to think about it is\nthe way that I tend to think about it is like<01:36:12.960> I'm<01:36:13.199> always<01:36:13.520> trying<01:36:13.760> to<01:36:14.000> take<01:36:14.239> a<01:36:14.560> path\nlike I'm always trying to take a path\nlike I'm always trying to take a path that's<01:36:15.280> doing<01:36:15.520> some<01:36:15.760> work.<01:36:16.000> So,<01:36:16.239> in<01:36:16.400> the<01:36:16.480> case\nthat's doing some work. So, in the case\nthat's doing some work. So, in the case of<01:36:16.719> the<01:36:16.800> visual<01:36:17.199> uh,<01:36:17.280> the<01:36:17.440> evaluation<01:36:18.159> system,\nof the visual uh, the evaluation system,\nof the visual uh, the evaluation system, I<01:36:19.920> started<01:36:20.239> with<01:36:20.400> just<01:36:20.560> the<01:36:20.800> debug\nI started with just the debug\nI started with just the debug evaluation.<01:36:22.000> So<01:36:22.159> I<01:36:22.320> started<01:36:22.480> with<01:36:22.639> like<01:36:22.960> look,\nevaluation. So I started with like look,\nevaluation. So I started with like look, I've<01:36:23.280> got<01:36:23.360> an<01:36:23.520> address<01:36:23.760> space.<01:36:24.000> I've<01:36:24.159> got<01:36:24.239> a\nI've got an address space. I've got a\nI've got an address space. I've got a selected<01:36:24.880> thread<01:36:25.199> that's<01:36:25.440> inside<01:36:25.679> of<01:36:25.760> a\nselected thread that's inside of a\nselected thread that's inside of a debug.<01:36:27.199> I<01:36:27.440> can<01:36:27.520> evaluate<01:36:28.000> things<01:36:28.159> inside<01:36:28.480> of\ndebug. I can evaluate things inside of\ndebug. I can evaluate things inside of that.<01:36:29.440> Um,<01:36:30.639> and<01:36:31.120> what<01:36:31.440> I<01:36:31.600> I<01:36:32.080> at<01:36:32.239> some<01:36:32.480> point<01:36:32.719> I\nthat. Um, and what I I at some point I\nthat. Um, and what I I at some point I thought<01:36:33.679> hard<01:36:33.920> about<01:36:34.080> it<01:36:34.239> and<01:36:34.400> I<01:36:34.639> noticed<01:36:34.880> that\nthought hard about it and I noticed that\nthought hard about it and I noticed that like<01:36:35.360> this<01:36:35.600> file<01:36:35.920> system<01:36:36.719> split<01:36:37.120> was<01:36:37.360> going<01:36:37.440> to\nlike this file system split was going to\nlike this file system split was going to be<01:36:37.600> a<01:36:37.840> problem.<01:36:38.800> Um,\nbe a problem. Um,\nbe a problem. Um, and<01:36:40.560> so<01:36:40.719> I<01:36:40.960> needed<01:36:41.199> to<01:36:41.360> find<01:36:41.520> a<01:36:41.679> way<01:36:41.840> to<01:36:42.000> take\nand so I needed to find a way to take\nand so I needed to find a way to take the<01:36:42.480> existing<01:36:42.800> code<01:36:43.120> path<01:36:43.840> and<01:36:44.239> like<01:36:44.560> kind<01:36:44.800> of\nthe existing code path and like kind of\nthe existing code path and like kind of just<01:36:45.040> widen<01:36:45.440> it.<01:36:45.600> Like<01:36:45.760> you<01:36:45.920> want<01:36:46.000> to<01:36:46.080> just<01:36:46.239> say\njust widen it. Like you want to just say\njust widen it. Like you want to just say this<01:36:46.719> is<01:36:47.040> expressing<01:36:47.600> more<01:36:48.320> than<01:36:48.719> what<01:36:48.960> it<01:36:49.119> was\nthis is expressing more than what it was\nthis is expressing more than what it was before.<01:36:49.840> So<01:36:50.000> it's<01:36:50.239> actually<01:36:50.400> the<01:36:50.560> same\nbefore. So it's actually the same\nbefore. So it's actually the same concrete<01:36:51.199> code<01:36:51.440> path.<01:36:51.920> It's<01:36:52.080> not<01:36:52.159> an\nconcrete code path. It's not an\nconcrete code path. It's not an abstraction<01:36:52.719> over<01:36:52.960> many<01:36:53.199> things.<01:36:53.440> It's<01:36:53.600> just\nabstraction over many things. It's just\nabstraction over many things. It's just one<01:36:54.000> thing<01:36:54.400> which<01:36:54.719> contains<01:36:55.040> more\none thing which contains more\none thing which contains more information.<01:36:56.159> And<01:36:56.719> once<01:36:56.960> you<01:36:57.199> get<01:36:57.280> to<01:36:57.440> that\ninformation. And once you get to that\ninformation. And once you get to that point,<01:36:57.840> it's<01:36:58.000> like,<01:36:58.400> you<01:36:58.480> know,<01:36:58.639> you<01:36:58.719> could\npoint, it's like, you know, you could\npoint, it's like, you know, you could make<01:36:58.960> the<01:36:59.199> argument<01:36:59.440> it's<01:36:59.600> like,<01:36:59.760> well,<01:37:00.000> now\nmake the argument it's like, well, now\nmake the argument it's like, well, now the<01:37:00.320> space<01:37:00.480> is<01:37:00.719> being<01:37:00.960> specified<01:37:01.600> when<01:37:02.080> it\nthe space is being specified when it\nthe space is being specified when it doesn't<01:37:02.480> need<01:37:02.560> to<01:37:02.639> be<01:37:02.880> or<01:37:03.199> it's<01:37:03.360> like<01:37:03.840> it's\ndoesn't need to be or it's like it's\ndoesn't need to be or it's like it's like<01:37:04.800> just<01:37:05.119> store<01:37:05.440> the<01:37:05.679> space,<01:37:06.000> dude.<01:37:06.320> Like\nlike just store the space, dude. Like\nlike just store the space, dude. Like it's<01:37:06.719> not<01:37:06.800> that<01:37:06.960> much<01:37:07.199> data.<01:37:07.520> It's<01:37:07.760> it's<01:37:07.920> it's\nit's not that much data. It's it's it's\nit's not that much data. It's it's it's it's<01:37:08.719> tiny.<01:37:09.119> You're<01:37:09.280> making<01:37:09.440> it<01:37:09.600> more\nit's tiny. You're making it more\nit's tiny. You're making it more flexible,<01:37:10.159> basically.<01:37:10.560> So<01:37:10.639> I<01:37:10.880> so<01:37:11.040> I<01:37:11.199> try<01:37:11.360> to\nflexible, basically. So I so I try to\nflexible, basically. So I so I try to take<01:37:12.239> that<01:37:12.400> approach<01:37:12.639> where<01:37:12.800> it's<01:37:13.040> like<01:37:13.360> start\ntake that approach where it's like start\ntake that approach where it's like start with<01:37:14.320> start<01:37:14.560> by<01:37:14.880> laying<01:37:15.040> out<01:37:15.119> my<01:37:15.360> constraints\nwith start by laying out my constraints\nwith start by laying out my constraints as<01:37:15.920> many<01:37:16.080> as<01:37:16.239> I<01:37:16.400> know<01:37:17.040> build<01:37:17.199> a<01:37:17.360> path<01:37:17.600> which\nas many as I know build a path which\nas many as I know build a path which supports<01:37:18.239> those<01:37:18.719> and<01:37:18.960> then<01:37:19.119> try<01:37:19.280> to<01:37:19.440> fit<01:37:19.679> more\nsupports those and then try to fit more\nsupports those and then try to fit more constraints<01:37:20.320> into<01:37:20.480> it<01:37:20.639> and<01:37:20.880> sort<01:37:21.040> of<01:37:21.199> widen\nconstraints into it and sort of widen\nconstraints into it and sort of widen the<01:37:21.679> possibility<01:37:22.159> space<01:37:22.480> as<01:37:22.639> as<01:37:23.040> possible.\nthe possibility space as as possible.\nthe possibility space as as possible. It's<01:37:23.520> super<01:37:23.920> super<01:37:24.239> abstract.<01:37:24.719> It's<01:37:24.880> really\nIt's super super abstract. It's really\nIt's super super abstract. It's really hard<01:37:25.119> to<01:37:25.280> describe<01:37:25.600> how<01:37:25.679> I<01:37:25.840> think<01:37:25.920> about<01:37:26.080> it\nhard to describe how I think about it\nhard to describe how I think about it but<01:37:26.400> hopefully<01:37:26.719> that's<01:37:27.119> some<01:37:27.360> some<01:37:27.679> degree<01:37:27.920> of\nbut hopefully that's some some degree of\nbut hopefully that's some some degree of insight<01:37:28.480> into<01:37:28.719> it.\ninsight into it.\ninsight into it. >> So<01:37:29.440> uh<01:37:29.760> can<01:37:29.920> you<01:37:30.080> rephrase<01:37:30.400> that<01:37:30.639> as<01:37:30.800> kind<01:37:30.960> of\n>> So uh can you rephrase that as kind of\n>> So uh can you rephrase that as kind of like<01:37:31.920> fat<01:37:32.320> strcts<01:37:32.719> instead<01:37:33.119> of<01:37:33.679> right\nlike fat strcts instead of right\nlike fat strcts instead of right >> uh<01:37:34.719> domain<01:37:35.199> model<01:37:35.840> statically<01:37:36.880> whatever<01:37:37.199> the\n>> uh domain model statically whatever the\n>> uh domain model statically whatever the thing<01:37:37.440> was<01:37:37.679> that<01:37:37.920> I<01:37:38.159> can't<01:37:38.320> remember.<01:37:38.880> Yeah,\nthing was that I can't remember. Yeah,\nthing was that I can't remember. Yeah, we're<01:37:39.600> team<01:37:39.760> Plex<01:37:40.159> basically.<01:37:40.639> So<01:37:40.880> that's\nwe're team Plex basically. So that's\nwe're team Plex basically. So that's Plex.<01:37:41.600> It's<01:37:41.840> Plex<01:37:42.159> programming.<01:37:42.560> Yeah.\nPlex. It's Plex programming. Yeah.\nPlex. It's Plex programming. Yeah. >> For<01:37:42.880> people<01:37:43.119> who<01:37:43.280> don't<01:37:43.360> know<01:37:43.440> what<01:37:43.679> Plex<01:37:44.000> is,\n>> For people who don't know what Plex is,\n>> For people who don't know what Plex is, watch<01:37:44.560> yesterday's<01:37:45.040> stream.<01:37:45.520> Uh<01:37:45.840> you<01:37:46.000> should\nwatch yesterday's stream. Uh you should\nwatch yesterday's stream. Uh you should watch<01:37:46.320> it<01:37:46.480> anyways.<01:37:46.880> It's<01:37:47.119> good.<01:37:47.760> Um<01:37:48.800> right.\nwatch it anyways. It's good. Um right.\nwatch it anyways. It's good. Um right. Yeah,<01:37:49.280> because<01:37:49.520> I<01:37:49.760> struggled<01:37:50.159> like<01:37:50.480> when<01:37:50.719> I\nYeah, because I struggled like when I\nYeah, because I struggled like when I design<01:37:51.360> systems,<01:37:51.920> I<01:37:52.159> don't<01:37:52.239> have<01:37:52.400> your<01:37:52.719> skill\ndesign systems, I don't have your skill\ndesign systems, I don't have your skill like<01:37:53.280> often<01:37:53.679> like<01:37:54.159> the<01:37:54.400> building<01:37:54.719> blocks\nlike often like the building blocks\nlike often like the building blocks don't<01:37:55.280> quite<01:37:55.600> fit<01:37:55.840> and<01:37:56.080> they<01:37:56.480> give<01:37:56.639> me<01:37:56.880> more\ndon't quite fit and they give me more\ndon't quite fit and they give me more complexity<01:37:57.760> with<01:37:58.480> that<01:37:58.800> much<01:37:58.960> power<01:37:59.199> and<01:37:59.360> it\ncomplexity with that much power and it\ncomplexity with that much power and it seems<01:37:59.760> like<01:38:00.159> I<01:38:00.400> want<01:38:00.560> to<01:38:01.040> like<01:38:01.360> I<01:38:01.600> would<01:38:01.679> like\nseems like I want to like I would like\nseems like I want to like I would like to<01:38:01.920> hit<01:38:02.080> that<01:38:02.239> sweet<01:38:02.400> spot.<01:38:02.639> I<01:38:02.800> see<01:38:02.960> that.<01:38:03.520> Um\nto hit that sweet spot. I see that. Um\nto hit that sweet spot. I see that. Um well<01:38:04.800> let's<01:38:05.040> get<01:38:05.199> more<01:38:05.440> into<01:38:05.679> before<01:38:05.920> I<01:38:06.080> open\nwell let's get more into before I open\nwell let's get more into before I open to<01:38:06.560> the<01:38:06.880> like<01:38:07.600> to<01:38:07.840> the<01:38:08.000> audience.<01:38:08.880> Um<01:38:09.119> I<01:38:09.280> have<01:38:09.360> a\nto the like to the audience. Um I have a\nto the like to the audience. Um I have a few<01:38:09.679> more<01:38:09.760> questions<01:38:10.000> about<01:38:10.159> the<01:38:10.320> debugger\nfew more questions about the debugger\nfew more questions about the debugger itself.<01:38:10.960> We<01:38:11.119> did<01:38:11.280> you<01:38:11.440> didn't<01:38:11.679> talk<01:38:11.840> about<01:38:11.920> the\nitself. We did you didn't talk about the\nitself. We did you didn't talk about the red<01:38:12.480> debugger<01:38:13.199> details<01:38:13.920> very<01:38:14.239> much<01:38:14.480> like\nred debugger details very much like\nred debugger details very much like >> very<01:38:15.600> much<01:38:15.760> but<01:38:16.159> you<01:38:16.400> have<01:38:16.560> your<01:38:16.800> own<01:38:17.360> debug\n>> very much but you have your own debug\n>> very much but you have your own debug info<01:38:18.320> format.\ninfo format.\ninfo format. >> Yes.\n>> Yes.\n>> Yes. >> And<01:38:19.920> you<01:38:20.159> convert<01:38:20.639> from<01:38:21.520> uh<01:38:21.760> code<01:38:22.000> view<01:38:22.239> which\n>> And you convert from uh code view which\n>> And you convert from uh code view which is<01:38:22.480> the<01:38:22.639> Microsoft<01:38:23.119> format<01:38:23.520> that's<01:38:23.760> stored<01:38:23.920> in\nis the Microsoft format that's stored in\nis the Microsoft format that's stored in PDB<01:38:25.040> um<01:38:25.280> to<01:38:25.520> that.\nPDB um to that.\nPDB um to that. >> Mhm.<01:38:26.800> What<01:38:27.280> prompted<01:38:27.760> that<01:38:28.239> and<01:38:28.719> like<01:38:28.960> how<01:38:29.199> did\n>> Mhm. What prompted that and like how did\n>> Mhm. What prompted that and like how did you<01:38:29.520> design<01:38:29.760> that<01:38:30.000> dra<01:38:30.320> debug<01:38:30.560> info<01:38:30.960> format\nyou design that dra debug info format\nyou design that dra debug info format like<01:38:31.440> how<01:38:31.520> is<01:38:31.679> it<01:38:31.840> different<01:38:32.000> from<01:38:32.320> the<01:38:32.480> war\nlike how is it different from the war\nlike how is it different from the war for<01:38:32.800> code<01:38:33.280> that's<01:38:33.520> very<01:38:33.840> like<01:38:34.320> into<01:38:35.280> I<01:38:35.440> I<01:38:35.840> wrote\nfor code that's very like into I I wrote\nfor code that's very like into I I wrote a<01:38:36.159> debugger<01:38:36.560> myself<01:38:36.880> I<01:38:37.040> generate<01:38:37.360> debug<01:38:37.679> info\na debugger myself I generate debug info\na debugger myself I generate debug info as<01:38:38.080> part<01:38:38.239> of<01:38:38.320> the<01:38:38.480> J<01:38:38.719> compilers<01:38:39.040> that<01:38:39.280> this<01:38:39.440> is\nas part of the J compilers that this is\nas part of the J compilers that this is like<01:38:39.760> my<01:38:40.320> this<01:38:40.560> is<01:38:40.960> my<01:38:41.199> what<01:38:41.520> interests<01:38:41.760> me<01:38:41.920> I'm\nlike my this is my what interests me I'm\nlike my this is my what interests me I'm sorry<01:38:42.159> if<01:38:42.320> it's<01:38:42.480> not<01:38:42.560> for<01:38:42.719> everyone<01:38:43.040> but<01:38:43.360> like\nsorry if it's not for everyone but like\nsorry if it's not for everyone but like how<01:38:44.000> did<01:38:44.159> you<01:38:44.960> uh<01:38:46.000> what<01:38:46.239> what<01:38:46.560> went<01:38:46.719> into\nhow did you uh what what went into\nhow did you uh what what went into designing<01:38:47.360> the<01:38:47.440> right<01:38:47.679> debugging<01:38:48.080> for<01:38:48.239> format\ndesigning the right debugging for format\ndesigning the right debugging for format and<01:38:48.719> why<01:38:48.800> is<01:38:48.960> it<01:38:49.119> better<01:38:49.440> than<01:38:49.679> PDB<01:38:50.159> like<01:38:50.400> why\nand why is it better than PDB like why\nand why is it better than PDB like why why<01:38:50.639> is<01:38:50.800> it<01:38:50.960> worth<01:38:51.119> transforming\nwhy is it worth transforming\nwhy is it worth transforming >> yeah<01:38:52.239> so<01:38:52.800> um<01:38:53.600> the<01:38:53.840> the<01:38:54.239> reason<01:38:54.400> why<01:38:55.440> uh<01:38:55.840> So<01:38:56.239> the\n>> yeah so um the the reason why uh So the\n>> yeah so um the the reason why uh So the reason<01:38:56.719> why<01:38:56.960> that<01:38:57.199> whole<01:38:57.440> that<01:38:57.760> whole<01:38:58.000> thing\nreason why that whole that whole thing\nreason why that whole that whole thing started<01:38:59.040> when<01:38:59.280> I<01:38:59.440> originally<01:38:59.840> joined<01:39:00.159> the\nstarted when I originally joined the\nstarted when I originally joined the project<01:39:01.040> we<01:39:01.360> the<01:39:01.679> team<01:39:02.080> was<01:39:02.400> working<01:39:02.719> on<01:39:03.840> uh\nproject we the team was working on uh\nproject we the team was working on uh debug<01:39:04.320> info<01:39:04.719> parsing.<01:39:05.119> Now<01:39:05.360> if<01:39:05.520> you<01:39:05.600> want<01:39:05.760> to\ndebug info parsing. Now if you want to\ndebug info parsing. Now if you want to support<01:39:06.480> a<01:39:06.719> debugger<01:39:07.199> that's<01:39:07.520> like<01:39:07.679> a<01:39:07.920> un<01:39:08.400> it's\nsupport a debugger that's like a un it's\nsupport a debugger that's like a un it's like<01:39:08.800> a<01:39:08.960> uniform<01:39:09.360> debugger<01:39:10.000> that<01:39:10.320> works<01:39:10.560> on\nlike a uniform debugger that works on\nlike a uniform debugger that works on both<01:39:11.199> Windows<01:39:11.520> and<01:39:11.679> Linux<01:39:12.000> like<01:39:12.159> the<01:39:12.320> original\nboth Windows and Linux like the original\nboth Windows and Linux like the original ambition<01:39:13.119> of<01:39:13.199> the<01:39:13.360> project<01:39:13.600> was<01:39:13.840> Linux<01:39:14.719> uh<01:39:14.880> was\nambition of the project was Linux uh was\nambition of the project was Linux uh was a<01:39:15.119> Linux<01:39:15.440> debugger<01:39:15.840> good<01:39:16.000> Linux<01:39:16.239> debugger.\na Linux debugger good Linux debugger.\na Linux debugger good Linux debugger. So,<01:39:17.119> so<01:39:17.600> we<01:39:17.840> know<01:39:18.000> we<01:39:18.320> wanted<01:39:18.560> to<01:39:18.719> abstract\nSo, so we know we wanted to abstract\nSo, so we know we wanted to abstract over<01:39:19.760> those<01:39:20.000> two<01:39:20.239> possibilities<01:39:20.960> and<01:39:21.600> you\nover those two possibilities and you\nover those two possibilities and you know<01:39:22.000> you<01:39:22.239> kind<01:39:22.400> of<01:39:22.480> should<01:39:22.800> because<01:39:22.960> there's\nknow you kind of should because there's\nknow you kind of should because there's it's<01:39:24.239> just<01:39:24.400> two<01:39:24.639> different<01:39:24.960> ways<01:39:25.199> of<01:39:25.360> exposing\nit's just two different ways of exposing\nit's just two different ways of exposing the<01:39:25.920> same<01:39:26.080> information<01:39:26.400> from<01:39:26.639> the<01:39:26.800> underlying\nthe same information from the underlying\nthe same information from the underlying system<01:39:27.600> in<01:39:27.840> a<01:39:27.920> sense.<01:39:28.159> So<01:39:28.239> it's<01:39:28.400> like<01:39:28.480> you\nsystem in a sense. So it's like you\nsystem in a sense. So it's like you should<01:39:28.800> be<01:39:28.960> able<01:39:29.040> to.<01:39:29.360> So<01:39:29.679> so<01:39:29.920> we<01:39:30.159> started<01:39:30.800> and\nshould be able to. So so we started and\nshould be able to. So so we started and of<01:39:31.199> course<01:39:31.360> on<01:39:31.520> Windows<01:39:31.840> and<01:39:32.000> Linux<01:39:32.239> they<01:39:32.400> use\nof course on Windows and Linux they use\nof course on Windows and Linux they use two<01:39:32.719> different<01:39:32.880> tool<01:39:33.199> chains.<01:39:33.760> They<01:39:33.840> use<01:39:34.080> two\ntwo different tool chains. They use two\ntwo different tool chains. They use two different<01:39:34.400> debug<01:39:34.800> info<01:39:35.040> formats.<01:39:35.679> On<01:39:35.840> Linux\ndifferent debug info formats. On Linux\ndifferent debug info formats. On Linux you<01:39:36.239> have<01:39:36.320> dwarf.<01:39:36.719> Windows<01:39:36.960> you<01:39:37.119> have<01:39:37.199> PTB.<01:39:37.920> We\nyou have dwarf. Windows you have PTB. We\nyou have dwarf. Windows you have PTB. We were<01:39:38.159> building<01:39:38.400> an<01:39:38.560> abstract<01:39:39.280> uh<01:39:39.440> parsing\nwere building an abstract uh parsing\nwere building an abstract uh parsing library<01:39:40.239> for<01:39:40.480> it.<01:39:41.040> You<01:39:41.199> can<01:39:41.360> still<01:39:41.520> find<01:39:41.679> this\nlibrary for it. You can still find this\nlibrary for it. You can still find this code<01:39:42.080> online,<01:39:42.480> but<01:39:42.800> it's<01:39:43.199> uh<01:39:44.159> uh<01:39:44.400> it's<01:39:45.040> it\ncode online, but it's uh uh it's it\ncode online, but it's uh uh it's it basically<01:39:45.840> presents<01:39:46.239> an<01:39:46.480> interface<01:39:46.960> and<01:39:47.199> it\nbasically presents an interface and it\nbasically presents an interface and it go<01:39:47.440> it<01:39:47.600> does<01:39:47.760> that<01:39:47.920> abstraction<01:39:48.320> thing<01:39:48.560> I\ngo it does that abstraction thing I\ngo it does that abstraction thing I talked<01:39:48.960> about<01:39:49.119> where<01:39:49.360> it's<01:39:49.520> like<01:39:49.679> you<01:39:49.840> have\ntalked about where it's like you have\ntalked about where it's like you have one<01:39:50.239> interface<01:39:50.800> and<01:39:51.040> it<01:39:51.360> applies<01:39:51.679> to<01:39:51.840> two\none interface and it applies to two\none interface and it applies to two concrete<01:39:52.480> realities.<01:39:53.040> So<01:39:53.199> you've<01:39:53.520> got<01:39:53.679> a<01:39:53.920> PTB\nconcrete realities. So you've got a PTB\nconcrete realities. So you've got a PTB parser<01:39:54.719> as<01:39:54.880> one<01:39:55.040> backend<01:39:55.360> and<01:39:55.520> you've<01:39:55.679> got<01:39:55.760> a\nparser as one backend and you've got a\nparser as one backend and you've got a dwarf<01:39:56.320> parser<01:39:56.719> as<01:39:56.960> the<01:39:57.119> other<01:39:57.280> backend\ndwarf parser as the other backend\ndwarf parser as the other backend presented<01:39:58.480> through<01:39:58.639> the<01:39:58.800> same<01:39:58.960> interface.\npresented through the same interface.\npresented through the same interface. The<01:40:00.080> problem<01:40:00.320> is<01:40:00.480> is<01:40:00.639> that<01:40:00.880> when<01:40:01.040> you're\nThe problem is is that when you're\nThe problem is is that when you're actually<01:40:01.440> like<01:40:01.760> wanting<01:40:02.000> to<01:40:02.239> use<01:40:02.480> debug<01:40:02.880> info,\nactually like wanting to use debug info,\nactually like wanting to use debug info, there's<01:40:03.600> a<01:40:03.760> lot<01:40:03.840> of<01:40:03.920> incremental<01:40:04.560> things<01:40:04.800> you\nthere's a lot of incremental things you\nthere's a lot of incremental things you want<01:40:05.040> to<01:40:05.119> do.<01:40:05.360> You<01:40:05.520> want<01:40:05.600> to<01:40:05.679> be<01:40:05.760> able<01:40:05.920> to<01:40:06.000> say\nwant to do. You want to be able to say\nwant to do. You want to be able to say like,<01:40:06.800> well,<01:40:06.960> I<01:40:07.199> don't<01:40:07.280> want<01:40:07.360> to<01:40:07.520> parse<01:40:07.840> like\nlike, well, I don't want to parse like\nlike, well, I don't want to parse like all<01:40:08.400> the<01:40:08.639> types<01:40:09.280> if<01:40:09.520> I'm<01:40:09.679> just<01:40:09.920> trying<01:40:10.080> to<01:40:10.239> take\nall the types if I'm just trying to take\nall the types if I'm just trying to take an<01:40:10.639> address<01:40:10.880> and<01:40:11.119> turn<01:40:11.280> it<01:40:11.440> into<01:40:11.600> a<01:40:11.760> symbol.\nan address and turn it into a symbol.\nan address and turn it into a symbol. Like,<01:40:12.239> there's<01:40:12.400> so<01:40:12.560> much<01:40:12.719> information<01:40:13.040> in\nLike, there's so much information in\nLike, there's so much information in there<01:40:13.280> that<01:40:13.600> really<01:40:13.760> what<01:40:13.920> you<01:40:14.080> want<01:40:14.239> is<01:40:14.400> like\nthere that really what you want is like\nthere that really what you want is like incremental<01:40:15.119> parsing<01:40:15.440> or<01:40:15.600> incremental\nincremental parsing or incremental\nincremental parsing or incremental lookups.<01:40:17.040> Um,<01:40:18.159> it's<01:40:18.480> kind<01:40:18.560> of<01:40:18.639> rare<01:40:18.880> that<01:40:19.119> you\nlookups. Um, it's kind of rare that you\nlookups. Um, it's kind of rare that you want<01:40:19.440> just<01:40:19.679> to<01:40:19.840> parse<01:40:20.239> literally<01:40:20.639> everything\nwant just to parse literally everything\nwant just to parse literally everything um<01:40:21.679> right<01:40:21.920> away.<01:40:22.719> And<01:40:23.040> so<01:40:24.239> long<01:40:24.480> story<01:40:24.800> short,\num right away. And so long story short,\num right away. And so long story short, because<01:40:25.760> Dwarf<01:40:26.080> and<01:40:26.239> PDB<01:40:26.639> are<01:40:26.880> different<01:40:27.040> in\nbecause Dwarf and PDB are different in\nbecause Dwarf and PDB are different in how<01:40:27.360> they<01:40:27.520> arrange<01:40:27.840> that<01:40:28.080> data,<01:40:28.480> it<01:40:28.639> gets<01:40:28.800> like\nhow they arrange that data, it gets like\nhow they arrange that data, it gets like very<01:40:29.360> complicated<01:40:29.760> very<01:40:30.080> quickly<01:40:30.320> to<01:40:30.560> build\nvery complicated very quickly to build\nvery complicated very quickly to build an<01:40:31.199> abstract<01:40:31.679> API<01:40:32.400> that<01:40:32.719> presents<01:40:33.040> these\nan abstract API that presents these\nan abstract API that presents these incremental<01:40:33.760> paths<01:40:34.159> that<01:40:34.480> don't<01:40:34.639> have<01:40:34.880> really\nincremental paths that don't have really\nincremental paths that don't have really weird<01:40:35.679> details<01:40:36.159> like<01:40:36.719> oh<01:40:37.040> in<01:40:37.280> PDB<01:40:37.920> it's<01:40:38.159> really\nweird details like oh in PDB it's really\nweird details like oh in PDB it's really fast<01:40:38.560> to<01:40:38.719> do<01:40:38.880> this<01:40:39.119> particular<01:40:39.520> thing.<01:40:40.000> In\nfast to do this particular thing. In\nfast to do this particular thing. In dwarf<01:40:40.639> you<01:40:40.800> need<01:40:40.880> to<01:40:40.960> do<01:40:41.040> a<01:40:41.280> parse<01:40:41.600> all<01:40:41.840> of<01:40:42.000> that\ndwarf you need to do a parse all of that\ndwarf you need to do a parse all of that particular<01:40:42.639> section<01:40:42.960> before<01:40:43.199> you<01:40:43.360> can<01:40:43.440> do\nparticular section before you can do\nparticular section before you can do this.<01:40:43.760> And<01:40:43.840> so<01:40:44.000> it's<01:40:44.159> like<01:40:44.560> it's<01:40:44.800> just<01:40:44.960> like<01:40:45.119> a\nthis. And so it's like it's just like a\nthis. And so it's like it's just like a nightmare<01:40:45.840> when<01:40:46.080> you're<01:40:46.239> actually<01:40:46.400> writing\nnightmare when you're actually writing\nnightmare when you're actually writing stuff<01:40:46.880> on<01:40:47.119> top<01:40:47.440> because<01:40:47.679> it's<01:40:47.920> like<01:40:48.080> every<01:40:48.239> API\nstuff on top because it's like every API\nstuff on top because it's like every API now<01:40:48.960> has<01:40:49.119> two<01:40:49.360> potential<01:40:49.760> guarantees.<01:40:50.400> It's\nnow has two potential guarantees. It's\nnow has two potential guarantees. It's like<01:40:50.960> okay<01:40:51.199> when<01:40:51.360> I<01:40:51.520> parse<01:40:52.159> when<01:40:52.400> I<01:40:52.560> want<01:40:52.639> to<01:40:52.719> do\nlike okay when I parse when I want to do\nlike okay when I parse when I want to do this<01:40:53.119> particular<01:40:53.520> incremental<01:40:54.000> parse<01:40:54.400> it\nthis particular incremental parse it\nthis particular incremental parse it might<01:40:54.719> be<01:40:54.800> fast<01:40:55.040> it<01:40:55.199> might<01:40:55.360> be<01:40:55.440> slow<01:40:55.920> depending\nmight be fast it might be slow depending\nmight be fast it might be slow depending on<01:40:56.400> what<01:40:56.560> I'm<01:40:56.719> actually<01:40:56.960> using<01:40:57.199> and<01:40:57.360> so<01:40:57.520> I<01:40:57.760> have\non what I'm actually using and so I have\non what I'm actually using and so I have no<01:40:58.159> I<01:40:58.320> have<01:40:58.400> very<01:40:58.639> limited<01:40:59.040> information<01:40:59.440> about\nno I have very limited information about\nno I have very limited information about what's<01:41:00.000> actually<01:41:00.239> going<01:41:00.320> to<01:41:00.480> happen<01:41:01.119> and<01:41:01.280> so\nwhat's actually going to happen and so\nwhat's actually going to happen and so what's<01:41:01.760> much<01:41:02.000> better<01:41:03.040> is<01:41:03.280> to<01:41:03.440> just<01:41:03.920> have\nwhat's much better is to just have\nwhat's much better is to just have basically<01:41:05.199> you<01:41:05.360> do<01:41:05.520> the<01:41:05.679> parse<01:41:06.000> all<01:41:06.480> in<01:41:06.719> as\nbasically you do the parse all in as\nbasically you do the parse all in as fast<01:41:07.119> a<01:41:07.360> way<01:41:07.440> as<01:41:07.679> possible<01:41:08.400> and<01:41:08.719> then<01:41:09.360> um<01:41:09.840> and\nfast a way as possible and then um and\nfast a way as possible and then um and then<01:41:10.239> just<01:41:10.400> use<01:41:10.639> the<01:41:10.800> the<01:41:11.119> full<01:41:11.360> parsed\nthen just use the the full parsed\nthen just use the the full parsed structure.<01:41:12.880> Um<01:41:14.239> but<01:41:14.719> uh<01:41:14.880> at<01:41:15.119> that<01:41:15.440> point<01:41:15.840> like\nstructure. Um but uh at that point like\nstructure. Um but uh at that point like it<01:41:16.320> really<01:41:16.480> just<01:41:16.719> made<01:41:16.880> sense<01:41:17.119> to<01:41:17.280> go<01:41:17.440> the<01:41:17.679> full\nit really just made sense to go the full\nit really just made sense to go the full way<01:41:18.000> to<01:41:18.159> the<01:41:18.239> format.<01:41:18.639> Like<01:41:18.800> at<01:41:18.960> that<01:41:19.040> point\nway to the format. Like at that point\nway to the format. Like at that point you<01:41:19.360> you've<01:41:19.679> already<01:41:19.840> doing<01:41:20.000> this<01:41:20.159> parcel,\nyou you've already doing this parcel,\nyou you've already doing this parcel, you<01:41:20.800> have<01:41:20.960> internal<01:41:21.280> structures<01:41:21.679> for<01:41:21.920> it.\nyou have internal structures for it.\nyou have internal structures for it. What<01:41:22.960> would<01:41:23.119> be<01:41:23.280> even<01:41:23.440> better<01:41:23.679> if<01:41:24.239> is<01:41:24.400> if<01:41:24.639> like\nWhat would be even better if is if like\nWhat would be even better if is if like you<01:41:25.119> could<01:41:25.199> actually<01:41:25.440> just<01:41:25.840> um<01:41:26.320> you<01:41:26.480> know\nyou could actually just um you know\nyou could actually just um you know serialize<01:41:28.000> this<01:41:28.239> to<01:41:28.400> disk,<01:41:28.800> have<01:41:28.960> it<01:41:29.119> be<01:41:29.199> a\nserialize this to disk, have it be a\nserialize this to disk, have it be a much<01:41:29.600> simpler<01:41:29.840> debug<01:41:30.239> info<01:41:30.480> format<01:41:30.960> that<01:41:31.119> you\nmuch simpler debug info format that you\nmuch simpler debug info format that you can<01:41:31.360> use<01:41:31.600> everywhere<01:41:32.159> because<01:41:32.400> it's<01:41:32.560> not<01:41:32.639> just\ncan use everywhere because it's not just\ncan use everywhere because it's not just the<01:41:32.960> debugger<01:41:33.280> that<01:41:33.360> has<01:41:33.440> to<01:41:33.520> use<01:41:33.679> debug<01:41:34.000> info.\nthe debugger that has to use debug info.\nthe debugger that has to use debug info. There's<01:41:34.560> tons<01:41:34.800> of<01:41:35.119> tons<01:41:35.440> of<01:41:35.600> tools<01:41:35.840> that<01:41:36.000> need\nThere's tons of tons of tools that need\nThere's tons of tons of tools that need to<01:41:36.239> use<01:41:36.400> debug<01:41:36.719> info.<01:41:37.280> And<01:41:37.440> so<01:41:37.679> we<01:41:37.920> were<01:41:38.080> like\nto use debug info. And so we were like\nto use debug info. And so we were like we<01:41:38.800> we<01:41:39.119> just<01:41:39.360> don't<01:41:39.520> want<01:41:39.600> to<01:41:39.679> work<01:41:39.840> on<01:41:40.000> PDB\nwe we just don't want to work on PDB\nwe we just don't want to work on PDB dwarf<01:41:40.800> actually.<01:41:41.119> Like<01:41:41.280> it's<01:41:41.520> actually\ndwarf actually. Like it's actually\ndwarf actually. Like it's actually terrible.<01:41:42.159> So,<01:41:42.960> um,<01:41:43.440> so<01:41:43.679> we<01:41:44.000> just<01:41:44.159> built<01:41:44.480> this\nterrible. So, um, so we just built this\nterrible. So, um, so we just built this one<01:41:45.440> and,<01:41:46.159> uh,<01:41:46.480> in<01:41:46.719> terms<01:41:46.880> of<01:41:47.040> like<01:41:47.199> how<01:41:47.520> you\none and, uh, in terms of like how you\none and, uh, in terms of like how you design<01:41:48.080> it,<01:41:48.960> like<01:41:49.199> I<01:41:49.520> could<01:41:49.679> give<01:41:49.760> my<01:41:50.000> thoughts\ndesign it, like I could give my thoughts\ndesign it, like I could give my thoughts on<01:41:50.320> that,<01:41:50.560> but<01:41:50.880> the<01:41:51.119> person<01:41:51.360> responsible<01:41:51.840> for\non that, but the person responsible for\non that, but the person responsible for the<01:41:52.239> original<01:41:52.880> design<01:41:53.199> of<01:41:53.440> the<01:41:53.600> format<01:41:53.920> is\nthe original design of the format is\nthe original design of the format is Alan<01:41:54.400> Webster,<01:41:54.880> who<01:41:55.040> made<01:41:55.199> Forkoder.<01:41:56.320> So,<01:41:56.560> he\nAlan Webster, who made Forkoder. So, he\nAlan Webster, who made Forkoder. So, he uh,<01:41:58.159> he<01:41:58.400> has<01:41:58.560> since<01:41:58.880> he's<01:41:59.119> not<01:41:59.199> on<01:41:59.360> the<01:41:59.520> project\nuh, he has since he's not on the project\nuh, he has since he's not on the project anymore,<01:42:00.239> but<01:42:00.480> that<01:42:00.719> was<01:42:00.880> like<01:42:01.040> his<01:42:01.280> last<01:42:01.440> big\nanymore, but that was like his last big\nanymore, but that was like his last big contribution<01:42:02.239> to<01:42:02.400> it.<01:42:02.880> He<01:42:03.040> did<01:42:03.280> an<01:42:03.520> excellent\ncontribution to it. He did an excellent\ncontribution to it. He did an excellent job<01:42:04.080> on<01:42:04.239> it.<01:42:04.719> And<01:42:04.880> it's<01:42:05.360> um,<01:42:06.400> I<01:42:06.639> mean,<01:42:06.800> it's\njob on it. And it's um, I mean, it's\njob on it. And it's um, I mean, it's kind<01:42:07.280> of<01:42:07.360> like<01:42:08.000> it's<01:42:08.239> kind<01:42:08.320> of<01:42:08.400> like<01:42:08.560> how<01:42:08.719> you\nkind of like it's kind of like how you\nkind of like it's kind of like how you do<01:42:09.040> anything.<01:42:09.440> It's<01:42:09.840> um<01:42:10.880> it's<01:42:11.199> sort<01:42:11.360> of<01:42:11.440> like\ndo anything. It's um it's sort of like\ndo anything. It's um it's sort of like what<01:42:11.760> Casey<01:42:12.159> was<01:42:12.320> talking<01:42:12.560> about<01:42:13.360> like<01:42:13.679> get\nwhat Casey was talking about like get\nwhat Casey was talking about like get rid<01:42:14.000> of<01:42:14.080> the<01:42:14.239> idea<01:42:14.400> that<01:42:14.560> you<01:42:14.719> don't<01:42:14.880> need\nrid of the idea that you don't need\nrid of the idea that you don't need someone<01:42:15.360> omnisient<01:42:15.840> about<01:42:16.080> things.<01:42:16.400> It's\nsomeone omnisient about things. It's\nsomeone omnisient about things. It's like<01:42:16.719> no<01:42:16.880> just<01:42:17.040> like<01:42:17.280> store<01:42:17.600> the<01:42:17.760> data<01:42:18.000> with\nlike no just like store the data with\nlike no just like store the data with all<01:42:18.239> the<01:42:18.400> context<01:42:18.800> that<01:42:19.040> you<01:42:19.199> have.<01:42:19.760> And<01:42:19.920> so\nall the context that you have. And so\nall the context that you have. And so the<01:42:20.880> rad<01:42:21.119> debug<01:42:21.440> info<01:42:21.679> format<01:42:22.000> is<01:42:22.159> like<01:42:22.320> very\nthe rad debug info format is like very\nthe rad debug info format is like very simple.<01:42:22.719> It's<01:42:22.960> like<01:42:23.280> look,<01:42:23.520> we've<01:42:23.679> got<01:42:23.760> these\nsimple. It's like look, we've got these\nsimple. It's like look, we've got these flat<01:42:24.239> data<01:42:24.480> tables<01:42:24.800> and<01:42:25.040> they<01:42:25.199> point<01:42:25.520> they\nflat data tables and they point they\nflat data tables and they point they index<01:42:26.080> into<01:42:26.320> each<01:42:26.560> other<01:42:27.119> and<01:42:27.360> it's<01:42:27.600> just<01:42:27.760> like\nindex into each other and it's just like\nindex into each other and it's just like that<01:42:28.320> the<01:42:28.560> information<01:42:28.960> you<01:42:29.199> want<01:42:29.440> laid<01:42:29.760> out\nthat the information you want laid out\nthat the information you want laid out in<01:42:30.080> a<01:42:30.239> really<01:42:30.400> simple<01:42:30.639> way<01:42:31.360> and<01:42:31.600> it's<01:42:31.920> just<01:42:32.159> and\nin a really simple way and it's just and\nin a really simple way and it's just and that<01:42:32.560> makes<01:42:32.719> it<01:42:32.880> very<01:42:33.040> simple<01:42:33.280> to<01:42:33.440> do<01:42:33.600> things\nthat makes it very simple to do things\nthat makes it very simple to do things like<01:42:34.000> incremental<01:42:34.480> lookups<01:42:34.880> and<01:42:35.119> like<01:42:35.280> to<01:42:35.520> use\nlike incremental lookups and like to use\nlike incremental lookups and like to use it<01:42:35.840> much<01:42:36.080> more<01:42:36.480> quickly<01:42:37.440> um<01:42:37.600> with<01:42:37.840> all<01:42:38.000> the\nit much more quickly um with all the\nit much more quickly um with all the guarantees<01:42:38.639> you<01:42:38.880> want<01:42:39.119> like<01:42:39.280> from<01:42:39.440> the\nguarantees you want like from the\nguarantees you want like from the debugger's<01:42:40.080> point<01:42:40.159> of<01:42:40.320> view<01:42:40.480> for<01:42:40.639> example.<01:42:41.040> So\ndebugger's point of view for example. So\ndebugger's point of view for example. So instead<01:42:41.840> of<01:42:42.000> having<01:42:42.159> to<01:42:42.480> poke<01:42:42.719> into<01:42:42.960> two\ninstead of having to poke into two\ninstead of having to poke into two different<01:42:43.360> backends<01:42:43.840> basically.<01:42:44.239> So<01:42:44.960> um<01:42:45.199> I\ndifferent backends basically. So um I\ndifferent backends basically. So um I may<01:42:45.520> have<01:42:45.679> missed<01:42:45.920> part<01:42:46.080> of<01:42:46.159> the<01:42:46.320> question<01:42:46.400> in\nmay have missed part of the question in\nmay have missed part of the question in that<01:42:46.719> but<01:42:46.960> hopefully<01:42:47.199> that<01:42:47.679> yeah\nthat but hopefully that yeah\nthat but hopefully that yeah >> I'll<01:42:48.560> do<01:42:48.639> the<01:42:48.800> follow-up<01:42:49.199> later<01:42:49.520> because<01:42:50.000> it\n>> I'll do the follow-up later because it\n>> I'll do the follow-up later because it might<01:42:50.320> be<01:42:50.400> very<01:42:50.719> specific.<01:42:51.440> Um<01:42:52.880> the<01:42:53.119> rad\nmight be very specific. Um the rad\nmight be very specific. Um the rad bugger<01:42:53.760> is<01:42:53.920> written<01:42:54.320> is<01:42:54.480> it<01:42:54.800> written<01:42:54.960> in<01:42:55.199> C<01:42:55.440> or\nbugger is written is it written in C or\nbugger is written is it written in C or C++<01:42:56.560> or<01:42:56.960> like\nC++ or like\nC++ or like >> oh<01:42:57.600> it's<01:42:57.760> just<01:42:57.920> C.<01:42:58.239> Yeah.\n>> oh it's just C. Yeah.\n>> oh it's just C. Yeah. >> Okay.<01:42:58.639> So<01:42:58.800> bare<01:42:59.119> C.<01:42:59.520> Why<01:42:59.760> bare<01:43:00.080> C<01:43:00.239> and<01:43:00.480> not<01:43:00.639> like\n>> Okay. So bare C. Why bare C and not like\n>> Okay. So bare C. Why bare C and not like like<01:43:01.360> often<01:43:01.840> like<01:43:02.320> I<01:43:02.719> many<01:43:03.040> people<01:43:03.280> actually\nlike often like I many people actually\nlike often like I many people actually in<01:43:03.679> the<01:43:03.840> talks<01:43:04.159> right<01:43:04.400> now<01:43:04.639> picked<01:43:04.960> bare<01:43:05.360> C.<01:43:06.000> Um\nin the talks right now picked bare C. Um\nin the talks right now picked bare C. Um >> I<01:43:07.119> thought<01:43:07.280> the<01:43:07.520> common<01:43:07.840> way<01:43:08.080> was<01:43:08.320> like<01:43:08.560> to<01:43:08.800> use\n>> I thought the common way was like to use\n>> I thought the common way was like to use C++<01:43:09.760> but<01:43:10.239> almost<01:43:10.719> nothing<01:43:11.040> of<01:43:11.199> C++<01:43:11.840> even<01:43:12.000> as\nC++ but almost nothing of C++ even as\nC++ but almost nothing of C++ even as Casey<01:43:12.560> usually<01:43:12.800> does<01:43:12.960> it.<01:43:13.199> Y<01:43:13.440> like<01:43:13.600> what\nCasey usually does it. Y like what\nCasey usually does it. Y like what prompted<01:43:14.239> you<01:43:14.400> to<01:43:14.560> do<01:43:14.800> nahh<01:43:15.440> just<01:43:15.679> pure<01:43:16.080> C.<01:43:16.320> So\nprompted you to do nahh just pure C. So\nprompted you to do nahh just pure C. So I<01:43:17.119> think<01:43:17.280> like<01:43:18.000> I<01:43:18.239> so<01:43:18.400> I<01:43:18.560> don't<01:43:18.719> tend<01:43:18.880> to<01:43:18.960> do\nI think like I so I don't tend to do\nI think like I so I don't tend to do very<01:43:19.360> math<01:43:19.600> heavy<01:43:19.920> code.<01:43:20.320> So<01:43:20.480> I<01:43:21.280> um\nvery math heavy code. So I um\nvery math heavy code. So I um unsurprisingly<01:43:22.080> I<01:43:22.239> mean<01:43:22.400> there's<01:43:22.560> not<01:43:22.639> a<01:43:22.719> lot\nunsurprisingly I mean there's not a lot\nunsurprisingly I mean there's not a lot of<01:43:22.960> like<01:43:23.199> linear<01:43:23.520> algebra<01:43:23.840> in<01:43:24.000> a<01:43:24.159> debugger\nof like linear algebra in a debugger\nof like linear algebra in a debugger basically.<01:43:25.040> So<01:43:25.199> it's<01:43:25.440> like<01:43:25.760> I<01:43:26.000> benefit<01:43:26.400> less\nbasically. So it's like I benefit less\nbasically. So it's like I benefit less from<01:43:26.800> a<01:43:27.040> lot<01:43:27.119> of<01:43:27.199> things<01:43:27.360> that<01:43:27.600> people<01:43:27.760> who\nfrom a lot of things that people who\nfrom a lot of things that people who need<01:43:28.480> C++<01:43:29.280> do<01:43:29.760> which<01:43:30.000> it<01:43:30.159> would<01:43:30.320> be<01:43:30.480> something\nneed C++ do which it would be something\nneed C++ do which it would be something like<01:43:30.880> operator<01:43:31.280> overloading<01:43:31.920> like<01:43:32.080> that\nlike operator overloading like that\nlike operator overloading like that becomes<01:43:32.639> pretty<01:43:32.800> important<01:43:33.040> if<01:43:33.199> you're\nbecomes pretty important if you're\nbecomes pretty important if you're writing<01:43:33.520> lots<01:43:33.760> and<01:43:33.920> lots<01:43:34.159> of<01:43:34.320> math<01:43:35.040> code.<01:43:35.840> Um\nwriting lots and lots of math code. Um\nwriting lots and lots of math code. Um for<01:43:36.880> me<01:43:37.360> it's<01:43:37.679> like<01:43:38.000> I'm<01:43:38.320> not<01:43:38.480> writing<01:43:38.719> that\nfor me it's like I'm not writing that\nfor me it's like I'm not writing that much<01:43:39.119> code.<01:43:39.679> Um<01:43:39.920> I<01:43:40.080> could<01:43:40.239> build<01:43:40.480> kind<01:43:40.639> of<01:43:40.719> the\nmuch code. Um I could build kind of the\nmuch code. Um I could build kind of the abstractions<01:43:41.440> I<01:43:41.679> wanted<01:43:42.080> inside<01:43:42.480> of<01:43:42.639> C.<01:43:43.360> um<01:43:43.600> I\nabstractions I wanted inside of C. um I\nabstractions I wanted inside of C. um I could<01:43:43.920> build<01:43:44.080> the<01:43:44.239> tools<01:43:44.480> I<01:43:44.639> needed<01:43:45.360> and<01:43:45.920> one\ncould build the tools I needed and one\ncould build the tools I needed and one of<01:43:46.159> the<01:43:46.400> most<01:43:46.560> important<01:43:46.960> things<01:43:47.520> was<01:43:47.760> that<01:43:48.080> C\nof the most important things was that C\nof the most important things was that C compiles<01:43:48.880> like<01:43:49.040> 40%<01:43:49.520> faster.<01:43:50.000> Like<01:43:50.159> if<01:43:50.400> you\ncompiles like 40% faster. Like if you\ncompiles like 40% faster. Like if you just<01:43:50.639> have<01:43:51.119> because<01:43:51.280> the<01:43:51.600> and<01:43:52.239> to<01:43:52.560> explain<01:43:52.800> how\njust have because the and to explain how\njust have because the and to explain how I<01:43:53.119> know<01:43:53.280> that<01:43:54.000> the<01:43:54.239> codebase<01:43:54.719> used<01:43:54.880> to<01:43:55.040> be<01:43:55.119> C++\nI know that the codebase used to be C++\nI know that the codebase used to be C++ it<01:43:56.080> was<01:43:56.320> Casey<01:43:56.639> style<01:43:56.960> C++<01:43:57.440> where<01:43:57.600> it's<01:43:57.840> like\nit was Casey style C++ where it's like\nit was Casey style C++ where it's like you've<01:43:58.560> got<01:43:58.719> C++<01:43:59.280> it's<01:43:59.520> mostly<01:43:59.840> C<01:44:00.080> but<01:44:00.320> then\nyou've got C++ it's mostly C but then\nyou've got C++ it's mostly C but then there's<01:44:00.639> a<01:44:00.800> couple<01:44:01.040> of<01:44:01.280> things<01:44:01.440> that<01:44:01.679> you<01:44:01.840> use\nthere's a couple of things that you use\nthere's a couple of things that you use in<01:44:02.239> there<01:44:03.360> and<01:44:04.080> uh<01:44:04.800> at<01:44:05.040> some<01:44:05.280> point<01:44:05.679> like<01:44:06.480> um\nin there and uh at some point like um\nin there and uh at some point like um when<01:44:07.840> I<01:44:08.000> had<01:44:08.239> like<01:44:08.400> more<01:44:08.639> control<01:44:08.880> over<01:44:09.040> the\nwhen I had like more control over the\nwhen I had like more control over the project<01:44:09.679> I<01:44:09.840> was<01:44:10.000> like<01:44:11.040> build<01:44:11.280> times<01:44:11.600> are\nproject I was like build times are\nproject I was like build times are important<01:44:11.920> to<01:44:12.080> me<01:44:12.639> for<01:44:13.040> the<01:44:13.199> reasons<01:44:13.520> I<01:44:13.760> open\nimportant to me for the reasons I open\nimportant to me for the reasons I open the<01:44:14.080> talk<01:44:14.239> with.<01:44:14.560> And<01:44:14.639> so<01:44:14.800> I'm<01:44:14.960> like<01:44:15.280> I'm<01:44:15.440> just\nthe talk with. And so I'm like I'm just\nthe talk with. And so I'm like I'm just going<01:44:15.760> to<01:44:15.840> like<01:44:16.560> turn<01:44:16.800> this<01:44:16.960> to<01:44:17.119> C<01:44:17.360> because<01:44:17.520> I'm\ngoing to like turn this to C because I'm\ngoing to like turn this to C because I'm pretty<01:44:17.760> sure<01:44:17.920> that'll<01:44:18.239> compile<01:44:18.560> faster.<01:44:19.040> And\npretty sure that'll compile faster. And\npretty sure that'll compile faster. And it<01:44:19.280> did.<01:44:19.520> It's<01:44:19.760> about<01:44:19.840> 40%<01:44:20.320> faster<01:44:20.639> at<01:44:20.719> least\nit did. It's about 40% faster at least\nit did. It's about 40% faster at least on<01:44:21.440> you<01:44:21.520> know<01:44:21.679> my<01:44:22.000> machines<01:44:22.800> uh<01:44:22.880> with<01:44:23.040> with<01:44:23.600> you\non you know my machines uh with with you\non you know my machines uh with with you know<01:44:23.920> whatever<01:44:24.320> version<01:44:24.560> of<01:44:24.719> MSVC<01:44:25.360> I'm<01:44:25.600> using\nknow whatever version of MSVC I'm using\nknow whatever version of MSVC I'm using with<01:44:26.639> clang<01:44:26.960> it's<01:44:27.199> similar<01:44:27.520> and<01:44:27.679> then<01:44:28.560> um<01:44:29.040> and\nwith clang it's similar and then um and\nwith clang it's similar and then um and there's<01:44:29.440> a<01:44:29.679> couple<01:44:29.760> of<01:44:29.920> things<01:44:30.080> in<01:44:30.320> C<01:44:30.560> that<01:44:30.800> are\nthere's a couple of things in C that are\nthere's a couple of things in C that are actually<01:44:31.199> better<01:44:31.600> like<01:44:32.320> um<01:44:32.560> Vaslav<01:44:33.360> yesterday\nactually better like um Vaslav yesterday\nactually better like um Vaslav yesterday mentioned<01:44:34.239> designated<01:44:34.800> initializers<01:44:35.840> C++\nmentioned designated initializers C++\nmentioned designated initializers C++ does<01:44:36.639> have<01:44:36.800> them<01:44:37.040> but<01:44:37.199> they're<01:44:37.679> pretty<01:44:38.159> bad\ndoes have them but they're pretty bad\ndoes have them but they're pretty bad like<01:44:38.800> they're<01:44:39.040> not<01:44:39.840> um<01:44:40.480> I<01:44:40.800> maybe<01:44:41.040> they're\nlike they're not um I maybe they're\nlike they're not um I maybe they're fixing<01:44:41.440> this<01:44:42.000> some<01:44:42.560> somebody<01:44:43.040> can<01:44:43.119> tell<01:44:43.280> me\nfixing this some somebody can tell me\nfixing this some somebody can tell me but<01:44:43.679> but<01:44:44.080> maybe<01:44:44.239> they're<01:44:44.480> fixing<01:44:44.639> this<01:44:44.800> but\nbut but maybe they're fixing this but\nbut but maybe they're fixing this but they<01:44:45.119> they<01:44:45.280> have<01:44:45.360> a<01:44:45.520> very<01:44:45.679> specific<01:44:46.000> like\nthey they have a very specific like\nthey they have a very specific like ordering<01:44:46.800> requirement<01:44:47.280> on<01:44:47.600> like<01:44:47.840> the<01:44:48.080> the<01:44:48.560> way\nordering requirement on like the the way\nordering requirement on like the the way you<01:44:49.280> specify<01:44:49.679> the<01:44:49.840> the<01:44:50.239> initializers<01:44:50.880> because\nyou specify the the initializers because\nyou specify the the initializers because of<01:44:51.280> like<01:44:51.440> constructor<01:44:52.239> uh<01:44:52.400> execution\nof like constructor uh execution\nof like constructor uh execution ordering<01:44:53.119> or<01:44:53.360> whatever<01:44:53.840> even<01:44:54.000> if<01:44:54.159> it's<01:44:54.400> even\nordering or whatever even if it's even\nordering or whatever even if it's even if<01:44:54.639> there<01:44:54.800> are<01:44:54.960> no<01:44:55.119> constructors<01:44:55.520> which<01:44:55.679> I<01:44:55.760> I\nif there are no constructors which I I\nif there are no constructors which I I don't<01:44:56.080> understand<01:44:56.320> that<01:44:56.560> part<01:44:56.719> maybe<01:44:56.880> that's\ndon't understand that part maybe that's\ndon't understand that part maybe that's what<01:44:57.119> they're<01:44:57.280> fixing<01:44:57.600> but<01:44:57.760> point<01:44:58.000> being<01:44:59.360> um\nwhat they're fixing but point being um\nwhat they're fixing but point being um point<01:45:00.880> being<01:45:01.360> uh<01:45:01.520> in<01:45:01.760> C<01:45:02.000> you<01:45:02.239> just<01:45:02.320> have<01:45:02.480> what\npoint being uh in C you just have what\npoint being uh in C you just have what you<01:45:02.880> actually<01:45:03.040> want<01:45:03.280> which<01:45:03.440> is<01:45:03.520> to<01:45:03.679> say<01:45:03.840> like\nyou actually want which is to say like\nyou actually want which is to say like this<01:45:04.239> member<01:45:04.560> this<01:45:04.719> member<01:45:04.960> this<01:45:05.119> member<01:45:05.360> in\nthis member this member this member in\nthis member this member this member in any<01:45:05.760> order<01:45:06.159> I<01:45:06.320> don't<01:45:06.400> care<01:45:06.800> like<01:45:07.040> just<01:45:07.280> let<01:45:07.440> me\nany order I don't care like just let me\nany order I don't care like just let me fill<01:45:07.840> them<01:45:08.000> out<01:45:08.639> um<01:45:08.880> so<01:45:09.199> there's<01:45:09.360> a<01:45:09.520> couple<01:45:09.679> of\nfill them out um so there's a couple of\nfill them out um so there's a couple of features<01:45:10.000> like<01:45:10.159> that<01:45:10.239> that<01:45:10.480> I<01:45:10.639> like<01:45:10.880> a<01:45:11.119> little\nfeatures like that that I like a little\nfeatures like that that I like a little bit<01:45:11.360> more<01:45:12.400> it's<01:45:12.719> mostly<01:45:13.040> just<01:45:13.360> like<01:45:13.679> compile\nbit more it's mostly just like compile\nbit more it's mostly just like compile time<01:45:14.719> also<01:45:15.199> I<01:45:15.440> just<01:45:15.679> like<01:45:16.159> aesthetically<01:45:16.880> I\ntime also I just like aesthetically I\ntime also I just like aesthetically I suppose<01:45:17.520> prefer<01:45:17.840> the<01:45:18.000> idea<01:45:18.239> of<01:45:18.480> relying<01:45:18.880> on<01:45:19.040> a\nsuppose prefer the idea of relying on a\nsuppose prefer the idea of relying on a smaller<01:45:19.440> tool<01:45:19.760> chain<01:45:20.239> to<01:45:20.400> build<01:45:20.639> everything\nsmaller tool chain to build everything\nsmaller tool chain to build everything because<01:45:21.280> then<01:45:21.440> it's<01:45:21.600> like<01:45:21.760> someday<01:45:22.159> you<01:45:22.320> know\nbecause then it's like someday you know\nbecause then it's like someday you know like<01:45:22.880> if<01:45:23.119> there<01:45:23.280> is<01:45:23.360> a<01:45:23.520> C<01:45:23.760> compiler<01:45:24.320> that<01:45:24.560> comes\nlike if there is a C compiler that comes\nlike if there is a C compiler that comes out<01:45:25.119> it's<01:45:25.280> like<01:45:25.440> the<01:45:25.600> debugger<01:45:26.080> can<01:45:26.239> be<01:45:26.400> built\nout it's like the debugger can be built\nout it's like the debugger can be built with<01:45:26.800> it<01:45:27.119> whereas<01:45:27.440> if<01:45:27.600> I<01:45:27.760> need<01:45:28.080> some<01:45:28.400> subset<01:45:28.719> of\nwith it whereas if I need some subset of\nwith it whereas if I need some subset of a<01:45:28.880> C++<01:45:29.360> compiler<01:45:29.760> that<01:45:30.000> happens<01:45:30.239> to<01:45:30.400> be<01:45:30.480> a\na C++ compiler that happens to be a\na C++ compiler that happens to be a different<01:45:30.800> subset<01:45:31.360> than<01:45:31.600> what<01:45:31.840> everyone<01:45:32.159> else\ndifferent subset than what everyone else\ndifferent subset than what everyone else needs<01:45:33.040> it's<01:45:33.280> like<01:45:33.520> no<01:45:33.760> you're<01:45:33.920> good<01:45:34.560> um<01:45:35.360> you\nneeds it's like no you're good um you\nneeds it's like no you're good um you know<01:45:35.679> then<01:45:35.840> it's<01:45:36.080> like<01:45:36.400> that<01:45:36.639> thing<01:45:36.800> is<01:45:36.960> never\nknow then it's like that thing is never\nknow then it's like that thing is never going<01:45:37.199> to<01:45:37.280> happen<01:45:37.520> like<01:45:37.679> C++<01:45:38.159> compilers<01:45:38.560> are\ngoing to happen like C++ compilers are\ngoing to happen like C++ compilers are it's<01:45:39.199> way<01:45:39.360> harder<01:45:39.679> problem<01:45:39.840> than<01:45:40.000> a<01:45:40.080> C\nit's way harder problem than a C\nit's way harder problem than a C compiler<01:45:40.719> so<01:45:40.880> it's<01:45:41.040> like<01:45:41.600> I<01:45:41.840> kind<01:45:42.000> of<01:45:42.080> just\ncompiler so it's like I kind of just\ncompiler so it's like I kind of just liked<01:45:42.560> that<01:45:42.880> option<01:45:43.280> better<01:45:43.840> um<01:45:44.000> seemed<01:45:44.320> like\nliked that option better um seemed like\nliked that option better um seemed like a<01:45:44.639> good<01:45:44.800> investment\na good investment\na good investment >> and<01:45:46.159> since<01:45:46.320> you<01:45:46.560> mentioned<01:45:46.880> build<01:45:47.199> speed<01:45:47.679> like\n>> and since you mentioned build speed like\n>> and since you mentioned build speed like ready<01:45:48.080> debugger<01:45:48.400> compiles<01:45:49.199> really<01:45:49.520> fast<01:45:50.800> even\nready debugger compiles really fast even\nready debugger compiles really fast even though<01:45:51.760> like<01:45:52.080> you<01:45:52.239> have<01:45:52.400> a<01:45:52.639> as<01:45:52.960> far<01:45:53.119> as<01:45:53.199> I<01:45:53.360> know\nthough like you have a as far as I know\nthough like you have a as far as I know you<01:45:53.679> haven't<01:45:53.840> mentioned<01:45:54.000> that<01:45:54.159> in<01:45:54.320> that<01:45:54.480> talk\nyou haven't mentioned that in that talk\nyou haven't mentioned that in that talk but<01:45:54.960> you<01:45:55.119> have<01:45:55.199> a<01:45:55.360> pre-processing<01:45:56.000> step<01:45:56.239> where\nbut you have a pre-processing step where\nbut you have a pre-processing step where you<01:45:56.560> do<01:45:56.719> code<01:45:56.960> generation<01:45:57.440> even<01:45:57.840> yes<01:45:58.159> like\nyou do code generation even yes like\nyou do code generation even yes like >> do<01:45:59.280> you<01:45:59.440> want<01:45:59.520> to<01:45:59.679> get<01:46:00.239> a<01:46:00.480> bit<01:46:00.719> into<01:46:01.040> that<01:46:01.600> like\n>> do you want to get a bit into that like\n>> do you want to get a bit into that like what<01:46:02.239> kind<01:46:02.400> of<01:46:02.480> you<01:46:02.719> do<01:46:02.800> some<01:46:02.960> kind<01:46:03.040> of<01:46:03.199> meta\nwhat kind of you do some kind of meta\nwhat kind of you do some kind of meta programming<01:46:04.080> as<01:46:04.320> I<01:46:04.480> understand<01:46:04.880> even<01:46:05.040> in<01:46:05.280> C\nprogramming as I understand even in C\nprogramming as I understand even in C with<01:46:06.000> your<01:46:06.239> simple<01:46:06.480> build<01:46:06.800> system<01:46:07.199> like<01:46:07.520> want\nwith your simple build system like want\nwith your simple build system like want to<01:46:07.840> elaborate<01:46:08.159> on<01:46:08.320> that<01:46:08.480> a<01:46:08.639> bit<01:46:08.800> or<01:46:08.960> have<01:46:09.119> you\nto elaborate on that a bit or have you\nto elaborate on that a bit or have you like<01:46:09.520> is<01:46:09.760> there<01:46:09.840> a<01:46:10.000> source<01:46:10.159> you<01:46:10.239> want<01:46:10.320> to<01:46:10.400> point\nlike is there a source you want to point\nlike is there a source you want to point to<01:46:10.719> instead\nto instead\nto instead >> um<01:46:11.679> I<01:46:11.840> can<01:46:12.000> cover<01:46:12.159> it<01:46:12.400> pretty<01:46:12.639> quick<01:46:12.800> I<01:46:12.960> mean\n>> um I can cover it pretty quick I mean\n>> um I can cover it pretty quick I mean it's<01:46:13.280> just<01:46:13.440> like<01:46:14.080> you<01:46:14.239> know<01:46:14.320> to<01:46:14.480> do<01:46:14.639> compile\nit's just like you know to do compile\nit's just like you know to do compile time<01:46:15.199> execution<01:46:15.679> and<01:46:15.840> see<01:46:16.639> uh<01:46:16.800> you<01:46:16.960> don't<01:46:17.040> need\ntime execution and see uh you don't need\ntime execution and see uh you don't need the<01:46:17.280> compiler<01:46:17.679> to<01:46:17.760> do<01:46:17.840> it<01:46:18.000> for<01:46:18.080> for<01:46:18.239> you.<01:46:18.400> You\nthe compiler to do it for for you. You\nthe compiler to do it for for you. You just<01:46:18.800> build<01:46:18.960> a<01:46:19.119> program,<01:46:19.440> run<01:46:19.600> the<01:46:19.760> program,\njust build a program, run the program,\njust build a program, run the program, and<01:46:20.159> then<01:46:20.239> you<01:46:20.320> build<01:46:20.480> your<01:46:20.639> main<01:46:20.880> program<01:46:21.199> and\nand then you build your main program and\nand then you build your main program and then<01:46:21.840> arbitrary<01:46:22.320> compile<01:46:22.719> time<01:46:23.040> execution\nthen arbitrary compile time execution\nthen arbitrary compile time execution goes<01:46:23.760> there.<01:46:24.639> And<01:46:25.040> uh<01:46:25.600> and<01:46:25.920> yeah,<01:46:26.159> so<01:46:26.400> I<01:46:26.639> mean\ngoes there. And uh and yeah, so I mean\ngoes there. And uh and yeah, so I mean building<01:46:27.280> C<01:46:27.440> is<01:46:27.600> really<01:46:27.760> fast.<01:46:28.000> So<01:46:28.159> building\nbuilding C is really fast. So building\nbuilding C is really fast. So building the<01:46:28.560> meta<01:46:28.880> program,<01:46:29.119> I<01:46:29.280> do<01:46:29.360> it<01:46:29.520> every<01:46:29.679> time<01:46:29.920> I\nthe meta program, I do it every time I\nthe meta program, I do it every time I build<01:46:30.320> the<01:46:30.400> meta<01:46:30.719> program,<01:46:30.960> I<01:46:31.119> run<01:46:31.280> it.<01:46:32.000> Um<01:46:32.719> and\nbuild the meta program, I run it. Um and\nbuild the meta program, I run it. Um and uh\nuh\nuh uh<01:46:35.520> and<01:46:35.760> so<01:46:36.000> that's<01:46:36.320> basically<01:46:36.639> how<01:46:36.880> that\nuh and so that's basically how that\nuh and so that's basically how that works.<01:46:37.520> Um<01:46:38.080> what<01:46:38.320> was<01:46:38.400> the<01:46:38.560> other<01:46:38.639> part<01:46:38.800> of<01:46:38.880> the\nworks. Um what was the other part of the\nworks. Um what was the other part of the question?<01:46:39.360> I<01:46:39.760> think<01:46:40.159> was<01:46:40.400> that<01:46:40.560> just<01:46:40.639> it?\nquestion? I think was that just it?\nquestion? I think was that just it? >> Yeah.<01:46:41.199> What<01:46:41.280> do<01:46:41.360> you<01:46:41.440> use<01:46:41.520> it<01:46:41.679> for?<01:46:41.840> Like<01:46:42.000> what\n>> Yeah. What do you use it for? Like what\n>> Yeah. What do you use it for? Like what what what<01:46:42.800> do<01:46:42.880> you<01:46:42.960> do<01:46:43.040> with<01:46:43.199> a<01:46:43.280> meta<01:46:43.600> program\nwhat what do you do with a meta program\nwhat what do you do with a meta program and<01:46:43.920> the<01:46:44.000> code<01:46:44.239> generation?<01:46:44.560> Like<01:46:44.719> what<01:46:44.800> do\nand the code generation? Like what do\nand the code generation? Like what do you<01:46:44.960> use<01:46:45.040> it<01:46:45.199> for?<01:46:45.440> Where<01:46:45.600> is<01:46:45.679> it<01:46:45.840> useful?\nyou use it for? Where is it useful?\nyou use it for? Where is it useful? >> Yeah.<01:46:46.639> So<01:46:47.040> I<01:46:47.280> tend<01:46:47.520> to<01:46:47.679> in<01:46:47.840> the<01:46:48.000> debugger\n>> Yeah. So I tend to in the debugger\n>> Yeah. So I tend to in the debugger there's<01:46:48.880> like<01:46:49.040> it's<01:46:49.360> mostly<01:46:49.600> a<01:46:49.760> data\nthere's like it's mostly a data\nthere's like it's mostly a data management<01:46:50.400> problem<01:46:50.719> like<01:46:51.679> um<01:46:51.840> there's<01:46:52.159> a<01:46:52.400> lot\nmanagement problem like um there's a lot\nmanagement problem like um there's a lot of<01:46:52.800> like<01:46:53.679> just<01:46:54.000> giant<01:46:54.560> things<01:46:54.719> that<01:46:55.040> you\nof like just giant things that you\nof like just giant things that you really<01:46:55.440> want<01:46:55.600> to<01:46:55.679> be<01:46:55.840> Excel<01:46:56.239> tables<01:46:56.880> that<01:46:57.119> are\nreally want to be Excel tables that are\nreally want to be Excel tables that are like<01:46:57.440> just<01:46:57.679> like<01:46:57.840> here's<01:46:58.080> the<01:46:58.239> information\nlike just like here's the information\nlike just like here's the information like<01:46:58.719> here's<01:46:58.880> all<01:46:59.040> the<01:46:59.119> UI<01:46:59.520> commands<01:46:59.840> and\nlike here's all the UI commands and\nlike here's all the UI commands and here's<01:47:00.320> like<01:47:00.880> how<01:47:01.840> here's<01:47:02.080> what<01:47:02.239> they<01:47:02.480> do<01:47:02.639> if\nhere's like how here's what they do if\nhere's like how here's what they do if like<01:47:03.040> if<01:47:03.199> you<01:47:03.280> trigger<01:47:03.520> them<01:47:03.600> with<01:47:03.760> a<01:47:03.920> hotkey\nlike if you trigger them with a hotkey\nlike if you trigger them with a hotkey and<01:47:04.560> the<01:47:04.800> command<01:47:05.040> needs<01:47:05.199> a<01:47:05.360> little<01:47:05.440> bit<01:47:05.600> more\nand the command needs a little bit more\nand the command needs a little bit more information<01:47:06.080> to<01:47:06.320> execute.<01:47:07.199> Here's<01:47:07.440> what<01:47:07.600> the\ninformation to execute. Here's what the\ninformation to execute. Here's what the query<01:47:08.159> information<01:47:08.480> looks<01:47:08.719> like<01:47:08.800> for<01:47:08.960> that.\nquery information looks like for that.\nquery information looks like for that. Here's<01:47:09.360> the<01:47:09.520> name,<01:47:09.760> here's<01:47:09.920> the<01:47:10.080> description,\nHere's the name, here's the description,\nHere's the name, here's the description, here's<01:47:10.719> the<01:47:10.880> icon,<01:47:11.199> like<01:47:11.440> all<01:47:11.600> that<01:47:11.760> stuff.\nhere's the icon, like all that stuff.\nhere's the icon, like all that stuff. there's<01:47:12.639> like<01:47:12.880> tons<01:47:13.199> of<01:47:13.360> like<01:47:13.679> tables<01:47:14.000> of<01:47:14.159> all\nthere's like tons of like tables of all\nthere's like tons of like tables of all that<01:47:14.480> information<01:47:15.040> and<01:47:15.679> oftentimes<01:47:16.320> you<01:47:16.480> want\nthat information and oftentimes you want\nthat information and oftentimes you want to<01:47:16.960> use<01:47:17.280> that<01:47:17.520> to<01:47:17.760> produce<01:47:18.080> like<01:47:19.440> a<01:47:19.760> variety<01:47:20.159> of\nto use that to produce like a variety of\nto use that to produce like a variety of C<01:47:20.960> constructs.<01:47:21.600> So<01:47:21.760> it's<01:47:21.920> not<01:47:22.080> just<01:47:22.159> like<01:47:22.320> I\nC constructs. So it's not just like I\nC constructs. So it's not just like I want<01:47:22.560> a<01:47:22.639> strruct<01:47:22.960> for<01:47:23.040> this.<01:47:23.280> It's<01:47:23.440> like<01:47:23.760> okay\nwant a strruct for this. It's like okay\nwant a strruct for this. It's like okay I<01:47:24.159> want<01:47:24.239> a<01:47:24.400> strct<01:47:24.639> and<01:47:24.800> a<01:47:25.040> table<01:47:25.199> of<01:47:25.360> the\nI want a strct and a table of the\nI want a strct and a table of the offsets<01:47:26.000> of<01:47:26.159> the<01:47:26.320> members<01:47:26.719> and<01:47:27.040> like<01:47:27.520> a<01:47:27.760> table\noffsets of the members and like a table\noffsets of the members and like a table of<01:47:28.239> all<01:47:28.400> the<01:47:28.480> types<01:47:28.800> and<01:47:29.040> like<01:47:29.520> um<01:47:30.639> you<01:47:30.800> know\nof all the types and like um you know\nof all the types and like um you know things<01:47:31.199> like<01:47:31.280> that.<01:47:31.600> Now,<01:47:31.760> you<01:47:31.920> can<01:47:32.000> do<01:47:32.080> that\nthings like that. Now, you can do that\nthings like that. Now, you can do that with<01:47:32.400> X<01:47:32.639> macros<01:47:33.840> um<01:47:34.159> to<01:47:34.400> some<01:47:34.639> degree,<01:47:35.119> but<01:47:35.440> I\nwith X macros um to some degree, but I\nwith X macros um to some degree, but I kind<01:47:35.920> of<01:47:36.159> don't<01:47:36.480> like<01:47:36.960> that<01:47:37.360> because<01:47:37.600> it's\nkind of don't like that because it's\nkind of don't like that because it's pretty<01:47:38.080> opaque<01:47:38.639> to<01:47:38.800> simple<01:47:39.199> tooling.<01:47:39.760> Like<01:47:40.239> my\npretty opaque to simple tooling. Like my\npretty opaque to simple tooling. Like my editor<01:47:40.880> doesn't<01:47:41.040> know<01:47:41.199> how<01:47:41.280> to<01:47:41.600> understand<01:47:42.159> X\neditor doesn't know how to understand X\neditor doesn't know how to understand X macros<01:47:42.880> and<01:47:43.040> all<01:47:43.199> that,<01:47:43.360> and<01:47:43.520> I'm<01:47:43.679> not<01:47:43.840> going\nmacros and all that, and I'm not going\nmacros and all that, and I'm not going to<01:47:43.920> use<01:47:44.159> an<01:47:44.480> editor<01:47:44.880> that<01:47:45.119> can<01:47:45.360> because<01:47:45.840> all<01:47:46.000> of\nto use an editor that can because all of\nto use an editor that can because all of them<01:47:46.239> are<01:47:46.400> really<01:47:46.639> slow.<01:47:47.199> And<01:47:47.360> so,<01:47:47.520> it's<01:47:47.760> like\nthem are really slow. And so, it's like\nthem are really slow. And so, it's like I'd<01:47:48.480> rather<01:47:48.719> just<01:47:48.960> have<01:47:49.679> um<01:47:50.480> I'd<01:47:50.800> rather<01:47:50.960> just\nI'd rather just have um I'd rather just\nI'd rather just have um I'd rather just produce<01:47:51.440> the<01:47:51.600> C<01:47:51.840> code<01:47:52.000> I<01:47:52.239> want.<01:47:52.560> Now,<01:47:52.800> in<01:47:53.040> other\nproduce the C code I want. Now, in other\nproduce the C code I want. Now, in other projects<01:47:53.600> in<01:47:53.679> in<01:47:53.920> the<01:47:54.000> RAD<01:47:54.239> debugger,<01:47:54.639> I<01:47:54.800> don't\nprojects in in the RAD debugger, I don't\nprojects in in the RAD debugger, I don't actually<01:47:55.360> do<01:47:55.520> this,<01:47:55.679> but<01:47:55.920> in<01:47:56.080> other<01:47:56.320> projects,\nactually do this, but in other projects,\nactually do this, but in other projects, I<01:47:56.880> do<01:47:57.040> like<01:47:57.920> more<01:47:58.159> complicated<01:47:58.639> meta\nI do like more complicated meta\nI do like more complicated meta programming<01:47:59.280> where<01:47:59.520> it's<01:47:59.679> like<01:48:00.080> I'm<01:48:00.320> going<01:48:00.400> to\nprogramming where it's like I'm going to\nprogramming where it's like I'm going to find<01:48:00.880> like<01:48:01.199> tweak<01:48:01.520> variables<01:48:02.000> that<01:48:02.159> are\nfind like tweak variables that are\nfind like tweak variables that are scattered<01:48:02.719> throughout<01:48:02.960> the<01:48:03.040> codebase.<01:48:03.520> I'm\nscattered throughout the codebase. I'm\nscattered throughout the codebase. I'm going<01:48:03.760> to<01:48:03.840> find<01:48:04.080> all<01:48:04.239> of<01:48:04.320> them<01:48:04.480> and<01:48:04.639> build<01:48:04.800> a\ngoing to find all of them and build a\ngoing to find all of them and build a data<01:48:05.280> table<01:48:05.679> so<01:48:05.840> that<01:48:06.080> like<01:48:06.239> I<01:48:06.400> can<01:48:06.480> build<01:48:06.639> a<01:48:06.800> UI\ndata table so that like I can build a UI\ndata table so that like I can build a UI in<01:48:07.199> my<01:48:07.360> game,<01:48:07.679> for<01:48:07.760> example,<01:48:08.080> that's<01:48:08.400> like\nin my game, for example, that's like\nin my game, for example, that's like here's<01:48:09.040> all<01:48:09.119> the<01:48:09.199> tweak<01:48:09.520> variables<01:48:09.840> in<01:48:10.080> the\nhere's all the tweak variables in the\nhere's all the tweak variables in the system<01:48:10.560> and<01:48:10.800> you<01:48:10.880> can<01:48:11.040> just<01:48:11.119> toggle<01:48:11.520> them\nsystem and you can just toggle them\nsystem and you can just toggle them dynamically.<01:48:12.239> Even<01:48:12.400> though<01:48:12.800> the<01:48:13.119> only<01:48:13.280> thing\ndynamically. Even though the only thing\ndynamically. Even though the only thing I<01:48:13.520> had<01:48:13.679> to<01:48:13.760> do<01:48:13.840> to<01:48:14.000> actually<01:48:14.239> add<01:48:14.400> that<01:48:14.560> was<01:48:14.800> say\nI had to do to actually add that was say\nI had to do to actually add that was say tweak<01:48:15.600> and<01:48:15.840> then<01:48:16.000> like<01:48:16.239> some<01:48:16.480> value<01:48:16.719> and<01:48:16.880> then\ntweak and then like some value and then\ntweak and then like some value and then it's<01:48:17.280> like<01:48:17.520> there<01:48:17.760> you<01:48:17.920> go.\nit's like there you go.\nit's like there you go. So<01:48:19.840> this<01:48:20.080> is<01:48:20.400> partially<01:48:20.800> how<01:48:21.040> you<01:48:21.280> avoid<01:48:21.600> like\nSo this is partially how you avoid like\nSo this is partially how you avoid like one<01:48:22.000> of<01:48:22.080> the<01:48:22.320> drawbacks<01:48:22.719> of<01:48:23.040> using<01:48:23.440> C<01:48:23.679> and\none of the drawbacks of using C and\none of the drawbacks of using C and having<01:48:24.159> to<01:48:24.239> do<01:48:24.320> a<01:48:24.480> lot<01:48:24.639> of<01:48:24.880> macros<01:48:25.360> to<01:48:25.600> work\nhaving to do a lot of macros to work\nhaving to do a lot of macros to work around<01:48:26.000> it<01:48:26.159> is<01:48:26.320> like<01:48:27.280> as<01:48:27.520> we're<01:48:27.679> on<01:48:27.840> the<01:48:28.000> topic\naround it is like as we're on the topic\naround it is like as we're on the topic of<01:48:28.239> debugger<01:48:28.800> as<01:48:28.960> anyone<01:48:29.280> knows<01:48:29.440> who's<01:48:29.679> done\nof debugger as anyone knows who's done\nof debugger as anyone knows who's done that<01:48:30.000> debugging<01:48:30.560> macros<01:48:30.960> is<01:48:31.199> a<01:48:31.360> nightmare\nthat debugging macros is a nightmare\nthat debugging macros is a nightmare >> because<01:48:32.400> you<01:48:32.719> basically<01:48:33.040> don't<01:48:33.199> get<01:48:33.360> a<01:48:33.440> debug\n>> because you basically don't get a debug\n>> because you basically don't get a debug information<01:48:34.000> you<01:48:34.239> can't<01:48:34.320> properly<01:48:34.639> step<01:48:35.280> etc\ninformation you can't properly step etc\ninformation you can't properly step etc etc.\netc.\netc. >> So<01:48:36.880> you<01:48:37.119> also<01:48:37.440> avoid<01:48:37.679> that<01:48:38.159> by<01:48:38.320> generating\n>> So you also avoid that by generating\n>> So you also avoid that by generating code<01:48:38.880> instead<01:48:39.119> of<01:48:39.360> relying<01:48:39.600> on<01:48:39.760> macros<01:48:40.159> you\ncode instead of relying on macros you\ncode instead of relying on macros you kind<01:48:40.480> of<01:48:40.560> avoid<01:48:40.880> that<01:48:41.040> step<01:48:41.280> and<01:48:41.440> have<01:48:41.600> code\nkind of avoid that step and have code\nkind of avoid that step and have code that<01:48:41.920> you<01:48:42.080> can<01:48:42.159> step<01:48:42.400> through.<01:48:42.560> Is<01:48:42.719> that<01:48:42.880> a\nthat you can step through. Is that a\nthat you can step through. Is that a >> um<01:48:44.800> yeah<01:48:45.040> that's<01:48:45.199> one<01:48:45.440> benefit<01:48:45.760> for<01:48:46.000> sure.<01:48:46.480> Um\n>> um yeah that's one benefit for sure. Um\n>> um yeah that's one benefit for sure. Um it's<01:48:47.600> uh<01:48:48.239> that's<01:48:48.480> partly<01:48:48.800> a<01:48:48.880> debug<01:48:49.199> info\nit's uh that's partly a debug info\nit's uh that's partly a debug info problem.<01:48:49.760> Like<01:48:49.920> you<01:48:50.080> could<01:48:50.159> imagine<01:48:50.400> debug\nproblem. Like you could imagine debug\nproblem. Like you could imagine debug info<01:48:51.040> being<01:48:51.199> slightly<01:48:51.520> in<01:48:51.679> fact<01:48:51.760> I<01:48:51.920> think\ninfo being slightly in fact I think\ninfo being slightly in fact I think dwarf<01:48:52.400> is<01:48:52.880> like<01:48:53.119> dwarf<01:48:53.440> tool<01:48:53.679> chains<01:48:53.920> tend<01:48:54.159> to\ndwarf is like dwarf tool chains tend to\ndwarf is like dwarf tool chains tend to be<01:48:54.320> more<01:48:54.560> useful<01:48:54.880> I<01:48:55.119> think.<01:48:55.280> I<01:48:55.440> mean<01:48:55.600> I<01:48:56.000> you\nbe more useful I think. I mean I you\nbe more useful I think. I mean I you tell<01:48:56.400> me<01:48:56.639> but<01:48:57.199> I'm<01:48:57.360> pretty<01:48:57.679> sure<01:48:57.920> dwarf\ntell me but I'm pretty sure dwarf\ntell me but I'm pretty sure dwarf >> dwarf<01:48:59.280> is<01:48:59.440> complicated<01:48:59.760> because<01:48:59.920> it's<01:49:00.080> like\n>> dwarf is complicated because it's like\n>> dwarf is complicated because it's like of<01:49:00.400> course<01:49:00.560> it<01:49:00.719> can<01:49:00.960> express<01:49:01.280> anything<01:49:01.520> but\nof course it can express anything but\nof course it can express anything but what<01:49:01.920> compilers<01:49:02.320> generates<01:49:02.719> another\nwhat compilers generates another\nwhat compilers generates another question.<01:49:03.280> Right.<01:49:03.600> Exactly.<01:49:04.000> So<01:49:04.719> um<01:49:04.960> so<01:49:05.440> but\nquestion. Right. Exactly. So um so but\nquestion. Right. Exactly. So um so but yeah<01:49:05.840> it's<01:49:06.000> it's<01:49:06.560> definitely<01:49:06.960> partly<01:49:07.360> that.\nyeah it's it's definitely partly that.\nyeah it's it's definitely partly that. Um,<01:49:08.080> I<01:49:08.239> don't<01:49:08.400> tend<01:49:08.560> to<01:49:08.719> do<01:49:09.040> like<01:49:09.199> I<01:49:09.360> don't<01:49:09.520> use\nUm, I don't tend to do like I don't use\nUm, I don't tend to do like I don't use any<01:49:09.920> like<01:49:10.159> generics<01:49:10.639> or<01:49:10.880> anything<01:49:11.119> like<01:49:11.360> I<01:49:11.520> do\nany like generics or anything like I do\nany like generics or anything like I do use<01:49:11.840> like<01:49:12.080> the<01:49:12.560> the<01:49:12.960> like<01:49:13.199> list<01:49:13.440> macros<01:49:13.840> that\nuse like the the like list macros that\nuse like the the like list macros that Vosov<01:49:14.639> showed<01:49:14.880> like<01:49:15.040> I<01:49:15.199> have<01:49:15.440> equivalents\nVosov showed like I have equivalents\nVosov showed like I have equivalents basically<01:49:16.320> in<01:49:16.560> this<01:49:16.719> codebase<01:49:17.199> and\nbasically in this codebase and\nbasically in this codebase and >> stealing<01:49:18.400> them<01:49:18.560> from<01:49:18.800> you<01:49:19.040> I<01:49:19.199> think<01:49:19.440> if\n>> stealing them from you I think if\n>> stealing them from you I think if >> can<01:49:22.000> we<01:49:22.159> confirm\n>> can we confirm\n>> can we confirm >> yeah<01:49:24.400> you<01:49:24.800> your<01:49:24.880> your<01:49:25.119> code<01:49:25.280> seems<01:49:25.520> to<01:49:25.600> be<01:49:25.760> kind\n>> yeah you your your code seems to be kind\n>> yeah you your your code seems to be kind of<01:49:25.920> the<01:49:26.159> new<01:49:26.320> standard<01:49:26.639> library<01:49:26.960> for<01:49:27.280> C\nof the new standard library for C\nof the new standard library for C because<01:49:27.760> I<01:49:28.000> had<01:49:28.080> it<01:49:28.239> from<01:49:28.400> a<01:49:28.560> couple<01:49:28.719> people\nbecause I had it from a couple people\nbecause I had it from a couple people that<01:49:29.119> they<01:49:29.280> just<01:49:29.440> steal<01:49:29.679> stuff<01:49:29.920> from\nthat they just steal stuff from\nthat they just steal stuff from >> I<01:49:30.400> mean<01:49:30.639> that's<01:49:30.880> fine<01:49:31.199> man<01:49:31.440> like<01:49:31.600> C's<01:49:31.920> standard\n>> I mean that's fine man like C's standard\n>> I mean that's fine man like C's standard library<01:49:32.480> is<01:49:32.719> pretty<01:49:32.880> bad<01:49:33.119> so<01:49:33.360> it's<01:49:33.440> it's<01:49:33.840> good\nlibrary is pretty bad so it's it's good\nlibrary is pretty bad so it's it's good to<01:49:34.159> have<01:49:34.400> like<01:49:34.639> people<01:49:35.360> just<01:49:35.679> demonstrate\nto have like people just demonstrate\nto have like people just demonstrate it's<01:49:36.480> like<01:49:36.719> you<01:49:37.040> didn't<01:49:37.280> you<01:49:37.520> didn't<01:49:37.679> have<01:49:37.760> to\nit's like you didn't you didn't have to\nit's like you didn't you didn't have to stop<01:49:38.080> with<01:49:38.239> a<01:49:38.400> standard<01:49:38.639> library<01:49:38.960> like<01:49:39.119> you\nstop with a standard library like you\nstop with a standard library like you can<01:49:39.440> actually<01:49:39.600> build<01:49:39.760> a<01:49:39.920> good<01:49:40.080> code<01:49:40.320> base\ncan actually build a good code base\ncan actually build a good code base obviously<01:49:41.199> there's<01:49:41.360> some<01:49:41.520> runway\nobviously there's some runway\nobviously there's some runway >> like<01:49:42.480> Shan<01:49:42.719> Barrett<01:49:42.960> has<01:49:43.119> been<01:49:43.199> a<01:49:43.360> prime\n>> like Shan Barrett has been a prime\n>> like Shan Barrett has been a prime example<01:49:43.840> of<01:49:44.000> that<01:49:44.239> like<01:49:44.560> here\nexample of that like here\nexample of that like here >> yeah<01:49:45.520> definitely<01:49:46.159> yeah<01:49:46.639> so\n>> yeah definitely yeah so\n>> yeah definitely yeah so >> uh<01:49:48.400> I<01:49:48.639> guess<01:49:48.800> my<01:49:49.040> final<01:49:49.280> question<01:49:49.520> before<01:49:49.760> I\n>> uh I guess my final question before I\n>> uh I guess my final question before I open<01:49:50.159> up<01:49:50.320> is<01:49:50.639> like<01:49:51.600> uh<01:49:52.080> Gingerbill<01:49:52.719> was<01:49:53.280> kind\nopen up is like uh Gingerbill was kind\nopen up is like uh Gingerbill was kind enough<01:49:53.840> to<01:49:54.159> announce<01:49:54.639> the<01:49:54.880> macros<01:49:55.360> and<01:49:55.520> Linux\nenough to announce the macros and Linux\nenough to announce the macros and Linux version<01:49:55.920> of<01:49:56.080> the<01:49:56.159> red<01:49:56.400> debugger<01:49:56.880> yesterday\nversion of the red debugger yesterday\nversion of the red debugger yesterday are<01:49:58.159> there<01:49:58.320> any<01:49:58.480> announcement<01:49:58.960> you<01:49:59.119> want<01:49:59.199> to\nare there any announcement you want to\nare there any announcement you want to add<01:49:59.440> to<01:49:59.600> that\nadd to that\nadd to that >> um<01:50:01.760> yeah<01:50:02.000> so<01:50:02.159> I<01:50:02.400> should<01:50:02.560> clarify<01:50:03.600> like<01:50:04.080> we're\n>> um yeah so I should clarify like we're\n>> um yeah so I should clarify like we're not<01:50:04.480> like<01:50:04.639> we<01:50:04.880> haven't<01:50:05.199> announced<01:50:05.920> a<01:50:06.480> a<01:50:06.639> Mac\nnot like we haven't announced a a Mac\nnot like we haven't announced a a Mac port<01:50:07.199> or<01:50:07.440> anything.<01:50:07.679> Obviously<01:50:08.080> like\nport or anything. Obviously like\nport or anything. Obviously like >> uh<01:50:09.280> it's<01:50:09.760> it's<01:50:10.000> done<01:50:10.239> actually.\n>> uh it's it's done actually.\n>> uh it's it's done actually. >> Question<01:50:10.800> is<01:50:10.960> when<01:50:11.119> do<01:50:11.199> you<01:50:11.280> ship<01:50:11.520> it?<01:50:11.679> Like<01:50:12.239> it\n>> Question is when do you ship it? Like it\n>> Question is when do you ship it? Like it has<01:50:12.719> been<01:50:12.880> announced.\nhas been announced.\nhas been announced. >> Yeah.<01:50:14.800> I<01:50:14.960> mean<01:50:15.040> obviously<01:50:15.360> we're<01:50:15.600> focused<01:50:15.840> on\n>> Yeah. I mean obviously we're focused on\n>> Yeah. I mean obviously we're focused on the<01:50:16.080> Linux<01:50:16.400> port<01:50:16.960> um<01:50:17.360> next.<01:50:17.920> So<01:50:18.320> obviously<01:50:18.719> a\nthe Linux port um next. So obviously a\nthe Linux port um next. So obviously a big<01:50:19.440> early<01:50:19.760> stage<01:50:20.080> of<01:50:20.239> like<01:50:20.480> so<01:50:20.639> the<01:50:20.800> debugger\nbig early stage of like so the debugger\nbig early stage of like so the debugger is<01:50:21.119> an<01:50:21.280> open<01:50:21.440> alpha.<01:50:21.840> I<01:50:22.000> never<01:50:22.159> mentioned<01:50:22.320> that\nis an open alpha. I never mentioned that\nis an open alpha. I never mentioned that but<01:50:22.719> that's<01:50:22.880> what<01:50:23.040> it's<01:50:23.280> in.<01:50:23.840> Um<01:50:24.239> so<01:50:24.480> people\nbut that's what it's in. Um so people\nbut that's what it's in. Um so people can<01:50:24.880> use<01:50:25.040> it<01:50:25.199> and<01:50:25.840> a<01:50:26.159> large<01:50:26.400> portion<01:50:26.719> of<01:50:26.880> work\ncan use it and a large portion of work\ncan use it and a large portion of work is<01:50:27.280> just<01:50:27.440> like<01:50:28.239> making<01:50:28.480> sure<01:50:28.639> it<01:50:28.800> works<01:50:28.960> on\nis just like making sure it works on\nis just like making sure it works on large<01:50:29.280> code<01:50:29.520> bases<01:50:30.000> getting<01:50:30.159> it<01:50:30.400> more<01:50:30.560> stable\nlarge code bases getting it more stable\nlarge code bases getting it more stable like<01:50:31.199> adding<01:50:31.600> adding<01:50:31.920> the<01:50:32.080> features<01:50:32.320> that\nlike adding adding the features that\nlike adding adding the features that people<01:50:32.719> need<01:50:32.960> like<01:50:33.119> stuff<01:50:33.280> like<01:50:33.440> that.<01:50:34.000> Then\npeople need like stuff like that. Then\npeople need like stuff like that. Then the<01:50:34.400> next<01:50:34.560> phase<01:50:34.800> is<01:50:34.960> really<01:50:35.119> the<01:50:35.360> Linux<01:50:35.600> port.\nthe next phase is really the Linux port.\nthe next phase is really the Linux port. So,<01:50:36.000> we're<01:50:36.159> actually<01:50:36.320> going<01:50:36.480> to<01:50:36.560> do<01:50:36.719> the<01:50:36.880> first\nSo, we're actually going to do the first\nSo, we're actually going to do the first porting<01:50:37.520> step<01:50:37.760> will<01:50:37.920> be<01:50:38.080> x64<01:50:38.719> Linux<01:50:39.600> and<01:50:39.760> then\nporting step will be x64 Linux and then\nporting step will be x64 Linux and then we'll<01:50:40.560> um<01:50:40.800> we'll<01:50:41.119> keep<01:50:41.280> going<01:50:41.440> in<01:50:41.600> other\nwe'll um we'll keep going in other\nwe'll um we'll keep going in other directions<01:50:42.080> like<01:50:42.320> we'll<01:50:42.480> be<01:50:42.560> able<01:50:42.639> to<01:50:42.800> support\ndirections like we'll be able to support\ndirections like we'll be able to support ARM<01:50:43.440> and<01:50:43.679> like<01:50:43.840> things<01:50:44.080> like<01:50:44.239> that.<01:50:44.880> So,<01:50:45.520> um\nARM and like things like that. So, um\nARM and like things like that. So, um that's<01:50:46.159> sort<01:50:46.320> of<01:50:46.400> the<01:50:46.639> direction.<01:50:47.520> Uh<01:50:48.239> but\nthat's sort of the direction. Uh but\nthat's sort of the direction. Uh but like<01:50:48.880> we're<01:50:49.119> not<01:50:49.280> going<01:50:49.360> to<01:50:49.520> be<01:50:49.600> working<01:50:49.760> on\nlike we're not going to be working on\nlike we're not going to be working on Mac<01:50:50.480> and<01:50:50.719> like<01:50:51.360> before<01:50:51.760> any<01:50:51.920> of<01:50:52.080> that.<01:50:52.400> So,<01:50:52.719> so\nMac and like before any of that. So, so\nMac and like before any of that. So, so while<01:50:54.480> maybe<01:50:54.719> he<01:50:54.960> was<01:50:55.040> wishful<01:50:55.679> maybe<01:50:55.840> he<01:50:56.000> was\nwhile maybe he was wishful maybe he was\nwhile maybe he was wishful maybe he was just<01:50:56.239> expressing<01:50:56.560> wishful<01:50:56.960> thinking.<01:50:57.520> Um<01:50:57.920> and\njust expressing wishful thinking. Um and\njust expressing wishful thinking. Um and you<01:50:58.400> know<01:50:58.639> once<01:50:58.880> you've<01:50:59.040> done<01:50:59.199> the<01:50:59.360> Linux<01:50:59.679> port\nyou know once you've done the Linux port\nyou know once you've done the Linux port I<01:51:00.239> my<01:51:00.560> intuition<01:51:00.960> is<01:51:01.199> like<01:51:01.360> you're<01:51:01.600> not<01:51:01.679> that\nI my intuition is like you're not that\nI my intuition is like you're not that far<01:51:02.080> from<01:51:02.239> a<01:51:02.400> Mac<01:51:02.639> port.<01:51:02.800> So<01:51:02.960> I<01:51:03.119> don't<01:51:03.199> think\nfar from a Mac port. So I don't think\nfar from a Mac port. So I don't think it'll<01:51:03.600> be<01:51:03.760> like<01:51:04.000> impossible<01:51:04.560> but<01:51:04.800> it's<01:51:05.199> but\nit'll be like impossible but it's but\nit'll be like impossible but it's but yeah<01:51:05.600> it's<01:51:05.760> just<01:51:05.920> like<01:51:06.159> we<01:51:06.400> haven't<01:51:06.639> like<01:51:06.880> said\nyeah it's just like we haven't like said\nyeah it's just like we haven't like said that\nthat\nthat >> switch<01:51:08.800> and<01:51:08.960> iOS<01:51:09.280> when\n>> switch and iOS when\n>> switch and iOS when >> Yeah.<01:51:10.239> Yeah.<01:51:10.639> Exactly.<01:51:11.360> So\n>> Yeah. Yeah. Exactly. So\n>> Yeah. Yeah. Exactly. So >> all<01:51:12.960> right.<01:51:13.520> Um<01:51:14.480> any<01:51:14.800> qu<01:51:15.119> Yeah,<01:51:15.440> please.\n>> all right. Um any qu Yeah, please.\n>> all right. Um any qu Yeah, please. >> So<01:51:16.159> you<01:51:16.400> mentioned<01:51:16.800> uh<01:51:16.880> the<01:51:17.040> idea<01:51:17.280> of<01:51:17.360> a<01:51:17.520> black\n>> So you mentioned uh the idea of a black\n>> So you mentioned uh the idea of a black box<01:51:17.920> at<01:51:18.159> the<01:51:18.320> beginning<01:51:18.400> of<01:51:18.480> the<01:51:18.639> talk<01:51:18.880> and<01:51:19.280> uh\nbox at the beginning of the talk and uh\nbox at the beginning of the talk and uh I<01:51:19.600> feel<01:51:19.760> like<01:51:20.239> uh<01:51:20.400> this<01:51:20.639> talk<01:51:20.800> goes<01:51:21.040> a<01:51:21.119> long<01:51:21.280> way\nI feel like uh this talk goes a long way\nI feel like uh this talk goes a long way to<01:51:21.600> kind<01:51:21.760> of<01:51:21.840> demystifying<01:51:22.480> some<01:51:22.560> of<01:51:22.639> the\nto kind of demystifying some of the\nto kind of demystifying some of the inner<01:51:23.119> workings<01:51:23.360> of<01:51:23.440> a<01:51:23.600> debugger<01:51:24.000> which<01:51:24.320> is\ninner workings of a debugger which is\ninner workings of a debugger which is very<01:51:24.639> helpful<01:51:24.880> but<01:51:25.040> I<01:51:25.199> kind<01:51:25.280> of<01:51:25.360> wonder<01:51:25.520> if\nvery helpful but I kind of wonder if\nvery helpful but I kind of wonder if there's<01:51:25.920> ways<01:51:26.159> to<01:51:26.800> expose<01:51:27.199> some<01:51:27.360> of<01:51:27.440> that<01:51:27.600> to<01:51:27.760> a\nthere's ways to expose some of that to a\nthere's ways to expose some of that to a user.<01:51:28.639> Uh,<01:51:28.880> one<01:51:29.040> of<01:51:29.119> the<01:51:29.280> experiences<01:51:29.600> that<01:51:29.840> I\nuser. Uh, one of the experiences that I\nuser. Uh, one of the experiences that I often<01:51:30.400> have<01:51:30.480> with<01:51:30.639> the<01:51:30.800> debugger<01:51:31.199> is<01:51:31.360> I<01:51:31.520> will\noften have with the debugger is I will\noften have with the debugger is I will point<01:51:31.840> it<01:51:32.000> at<01:51:32.159> executable.<01:51:32.719> I<01:51:32.880> will<01:51:33.040> start<01:51:33.119> it\npoint it at executable. I will start it\npoint it at executable. I will start it up<01:51:33.360> and<01:51:33.520> I<01:51:33.600> say<01:51:33.760> I<01:51:33.840> want<01:51:33.920> to<01:51:34.000> hit<01:51:34.080> this<01:51:34.239> break\nup and I say I want to hit this break\nup and I say I want to hit this break point.<01:51:34.639> It's<01:51:34.719> like<01:51:34.880> I<01:51:35.040> don't<01:51:35.119> know<01:51:35.199> what<01:51:35.360> that\npoint. It's like I don't know what that\npoint. It's like I don't know what that means.<01:51:35.760> It's<01:51:35.920> like<01:51:36.080> I<01:51:36.239> don't<01:51:36.320> know<01:51:36.480> what<01:51:36.639> file\nmeans. It's like I don't know what file\nmeans. It's like I don't know what file that<01:51:37.199> refers<01:51:37.360> to<01:51:37.520> or<01:51:37.840> I<01:51:37.920> don't<01:51:38.000> know<01:51:38.159> what<01:51:38.320> like\nthat refers to or I don't know what like\nthat refers to or I don't know what like actual<01:51:38.800> instruction<01:51:39.119> that<01:51:39.360> refers<01:51:39.599> to.<01:51:40.159> And\nactual instruction that refers to. And\nactual instruction that refers to. And so<01:51:40.480> there's<01:51:40.639> all<01:51:40.719> this<01:51:40.880> inner<01:51:41.199> working<01:51:41.440> behind\nso there's all this inner working behind\nso there's all this inner working behind it<01:51:41.760> to<01:51:41.920> get<01:51:42.080> that<01:51:42.239> debug<01:51:42.560> info<01:51:42.880> to<01:51:43.040> find<01:51:43.119> it\nit to get that debug info to find it\nit to get that debug info to find it automatically<01:51:43.760> to<01:51:43.920> parse<01:51:44.159> it.<01:51:44.400> It's\nautomatically to parse it. It's\nautomatically to parse it. It's potentially,<01:51:45.199> you<01:51:45.280> know,<01:51:45.520> trying<01:51:45.679> to<01:51:45.840> match\npotentially, you know, trying to match\npotentially, you know, trying to match file<01:51:46.400> paths.<01:51:46.639> I<01:51:46.880> might<01:51:46.960> have<01:51:47.119> like<01:51:47.280> forward\nfile paths. I might have like forward\nfile paths. I might have like forward slashes,<01:51:47.920> backslashes,<01:51:48.560> whatever.<01:51:48.960> There's\nslashes, backslashes, whatever. There's\nslashes, backslashes, whatever. There's like<01:51:49.280> all<01:51:49.440> of<01:51:49.520> this<01:51:49.679> inner<01:51:50.000> tooling<01:51:50.639> that<01:51:50.880> can\nlike all of this inner tooling that can\nlike all of this inner tooling that can go<01:51:51.280> wrong<01:51:51.920> and<01:51:52.239> it<01:51:52.480> kind<01:51:52.560> of<01:51:52.639> gets\ngo wrong and it kind of gets\ngo wrong and it kind of gets encapsulated<01:51:53.679> in<01:51:53.840> this<01:51:54.000> black<01:51:54.239> box<01:51:54.639> that\nencapsulated in this black box that\nencapsulated in this black box that feels<01:51:55.119> like<01:51:55.360> magic,<01:51:55.760> right?<01:51:56.000> it's<01:51:56.159> like,<01:51:56.320> oh,\nfeels like magic, right? it's like, oh,\nfeels like magic, right? it's like, oh, you<01:51:56.639> know,<01:51:56.800> I<01:51:56.960> don't<01:51:57.040> I<01:51:57.199> don't<01:51:57.280> want<01:51:57.360> to<01:51:57.440> I\nyou know, I don't I don't want to I\nyou know, I don't I don't want to I don't<01:51:57.679> know<01:51:57.840> anything<01:51:58.080> about<01:51:58.239> that<01:51:58.480> as<01:51:58.639> a\ndon't know anything about that as a\ndon't know anything about that as a user.<01:51:59.199> So,<01:51:59.599> is<01:51:59.760> there<01:51:59.840> anything<01:52:00.080> you<01:52:00.239> could<01:52:00.320> do\nuser. So, is there anything you could do\nuser. So, is there anything you could do to<01:52:00.560> make<01:52:00.719> that<01:52:00.880> better,<01:52:01.119> do<01:52:01.199> you<01:52:01.280> think?\nto make that better, do you think?\nto make that better, do you think? >> Um,<01:52:02.719> yeah.<01:52:02.960> I<01:52:03.199> think<01:52:03.360> I<01:52:03.599> think<01:52:03.679> a<01:52:03.920> lot<01:52:04.000> of<01:52:04.080> that\n>> Um, yeah. I think I think a lot of that\n>> Um, yeah. I think I think a lot of that is<01:52:04.480> just<01:52:04.639> like<01:52:04.719> a<01:52:04.880> UI<01:52:05.199> design<01:52:05.520> problem<01:52:05.760> and\nis just like a UI design problem and\nis just like a UI design problem and like<01:52:06.080> a<01:52:06.239> visualization<01:52:06.800> problem.<01:52:07.119> So<01:52:07.280> it's\nlike a visualization problem. So it's\nlike a visualization problem. So it's like<01:52:07.679> one<01:52:07.920> thing<01:52:08.080> that<01:52:08.239> we<01:52:08.400> do<01:52:08.480> in<01:52:08.639> the\nlike one thing that we do in the\nlike one thing that we do in the debugger<01:52:09.119> which<01:52:10.159> like<01:52:10.320> I<01:52:10.560> don't<01:52:10.719> think\ndebugger which like I don't think\ndebugger which like I don't think anybody<01:52:11.199> does<01:52:11.520> but<01:52:11.840> like<01:52:12.320> what<01:52:12.480> tends<01:52:12.719> to\nanybody does but like what tends to\nanybody does but like what tends to happen<01:52:13.040> if<01:52:13.199> you<01:52:13.360> put<01:52:14.239> like<01:52:14.480> in<01:52:14.639> Visual<01:52:14.960> Studio\nhappen if you put like in Visual Studio\nhappen if you put like in Visual Studio if<01:52:15.360> you<01:52:15.440> put<01:52:15.599> a<01:52:15.679> breakpoint<01:52:16.080> on<01:52:16.239> a<01:52:16.400> line<01:52:17.840> if\nif you put a breakpoint on a line if\nif you put a breakpoint on a line if there's<01:52:18.639> no<01:52:18.880> line<01:52:19.119> info<01:52:19.440> like<01:52:19.599> that<01:52:19.760> you're\nthere's no line info like that you're\nthere's no line info like that you're not<01:52:20.080> running<01:52:20.239> a<01:52:20.480> program<01:52:20.639> or<01:52:20.960> something<01:52:22.239> um<01:52:23.040> uh\nnot running a program or something um uh\nnot running a program or something um uh it'll<01:52:23.840> like<01:52:24.159> just<01:52:24.560> go<01:52:24.719> to<01:52:24.880> the<01:52:24.960> line<01:52:25.199> like\nit'll like just go to the line like\nit'll like just go to the line like there<01:52:25.520> will<01:52:25.679> be<01:52:25.760> a<01:52:25.840> breakpoint<01:52:26.480> shows<01:52:26.719> up<01:52:26.880> on\nthere will be a breakpoint shows up on\nthere will be a breakpoint shows up on the<01:52:27.119> line<01:52:27.440> done.<01:52:28.639> Then<01:52:28.880> you<01:52:29.119> like<01:52:29.840> run<01:52:30.080> the\nthe line done. Then you like run the\nthe line done. Then you like run the program<01:52:30.560> and<01:52:30.800> you'll<01:52:31.040> notice<01:52:31.280> your\nprogram and you'll notice your\nprogram and you'll notice your breakpoints<01:52:32.000> like<01:52:33.119> like<01:52:33.360> it<01:52:33.599> snaps<01:52:34.000> or\nbreakpoints like like it snaps or\nbreakpoints like like it snaps or whatever.<01:52:34.800> And<01:52:35.599> the<01:52:35.840> reason<01:52:36.000> why<01:52:36.159> is<01:52:36.400> because\nwhatever. And the reason why is because\nwhatever. And the reason why is because like<01:52:36.960> not<01:52:37.199> every<01:52:37.440> line<01:52:37.840> has<01:52:38.400> source<01:52:38.719> code<01:52:39.199> uh\nlike not every line has source code uh\nlike not every line has source code uh or<01:52:39.679> or<01:52:39.679> or<01:52:39.840> sorry<01:52:40.159> not<01:52:40.320> every<01:52:40.480> source<01:52:40.800> code\nor or or sorry not every source code\nor or or sorry not every source code line<01:52:41.199> has<01:52:41.440> actual<01:52:41.840> code<01:52:42.080> which<01:52:42.400> which<01:52:42.560> would\nline has actual code which which would\nline has actual code which which would be<01:52:42.880> machine<01:52:43.199> code<01:52:43.440> instructions.<01:52:44.480> Um<01:52:45.440> and<01:52:45.679> so\nbe machine code instructions. Um and so\nbe machine code instructions. Um and so like<01:52:46.639> stuff<01:52:46.960> like<01:52:47.119> that<01:52:47.440> can<01:52:47.599> be<01:52:47.920> like<01:52:48.320> it's\nlike stuff like that can be like it's\nlike stuff like that can be like it's really<01:52:49.280> kind<01:52:49.520> of<01:52:49.679> interesting<01:52:50.000> how<01:52:50.239> it's<01:52:50.480> like\nreally kind of interesting how it's like\nreally kind of interesting how it's like been<01:52:50.960> accepted<01:52:51.280> that<01:52:51.520> it's<01:52:51.760> like<01:52:52.480> that's<01:52:52.800> just\nbeen accepted that it's like that's just\nbeen accepted that it's like that's just a<01:52:53.360> way<01:52:53.440> that<01:52:53.679> it<01:52:53.840> works<01:52:54.000> and<01:52:54.239> everyone's<01:52:54.560> like\na way that it works and everyone's like\na way that it works and everyone's like oh<01:52:54.960> if<01:52:55.119> it<01:52:55.280> snaps<01:52:55.679> that<01:52:55.840> means<01:52:56.000> it<01:52:56.159> found<01:52:56.320> the\noh if it snaps that means it found the\noh if it snaps that means it found the line<01:52:56.639> info.<01:52:57.040> It's<01:52:57.199> like<01:52:57.360> what<01:52:57.599> like<01:52:57.760> what<01:52:57.920> does\nline info. It's like what like what does\nline info. It's like what like what does that<01:52:58.159> mean?<01:52:58.400> So<01:52:58.800> I<01:52:59.040> think<01:52:59.199> like<01:52:59.679> um<01:53:00.159> in<01:53:00.400> the<01:53:00.560> RAD\nthat mean? So I think like um in the RAD\nthat mean? So I think like um in the RAD debugger<01:53:01.360> I<01:53:01.520> mean<01:53:01.679> obviously<01:53:01.920> it's<01:53:02.159> early<01:53:02.400> so\ndebugger I mean obviously it's early so\ndebugger I mean obviously it's early so a<01:53:02.719> lot<01:53:02.800> of<01:53:02.880> it's<01:53:03.119> not<01:53:03.280> like<01:53:03.599> done<01:53:03.760> or\na lot of it's not like done or\na lot of it's not like done or documented<01:53:04.560> or<01:53:04.719> whatever<01:53:04.960> but<01:53:05.199> I've<01:53:05.520> tried<01:53:05.679> to\ndocumented or whatever but I've tried to\ndocumented or whatever but I've tried to visualize<01:53:07.040> a<01:53:07.360> lot<01:53:07.520> more<01:53:08.000> information<01:53:08.400> about\nvisualize a lot more information about\nvisualize a lot more information about what<01:53:08.719> the<01:53:08.880> debugger<01:53:09.360> knows<01:53:09.599> about<01:53:10.239> than<01:53:10.400> what\nwhat the debugger knows about than what\nwhat the debugger knows about than what other<01:53:10.800> debuggers<01:53:11.280> tend<01:53:11.360> to<01:53:11.520> do.<01:53:11.679> So<01:53:11.920> I've\nother debuggers tend to do. So I've\nother debuggers tend to do. So I've explicitly<01:53:12.800> visualize<01:53:13.199> you<01:53:13.440> probably<01:53:13.920> a<01:53:14.080> lot\nexplicitly visualize you probably a lot\nexplicitly visualize you probably a lot of<01:53:14.239> people<01:53:14.400> ask<01:53:14.560> about<01:53:14.719> the<01:53:14.880> colored<01:53:15.199> gutters\nof people ask about the colored gutters\nof people ask about the colored gutters on<01:53:15.760> the<01:53:15.920> side<01:53:16.000> of<01:53:16.080> the<01:53:16.239> source<01:53:16.480> view.<01:53:16.880> That's\non the side of the source view. That's\non the side of the source view. That's the<01:53:17.280> line<01:53:17.520> info.<01:53:18.639> Also<01:53:18.960> what<01:53:19.199> happens<01:53:19.440> is<01:53:19.679> like\nthe line info. Also what happens is like\nthe line info. Also what happens is like I<01:53:20.000> don't<01:53:20.159> reposition<01:53:20.639> breakpoints.<01:53:21.760> I<01:53:22.000> will\nI don't reposition breakpoints. I will\nI don't reposition breakpoints. I will if<01:53:22.320> you<01:53:22.480> put<01:53:22.560> a<01:53:22.639> breakpoint<01:53:22.960> on<01:53:23.119> a<01:53:23.280> line<01:53:23.440> I'll\nif you put a breakpoint on a line I'll\nif you put a breakpoint on a line I'll draw<01:53:24.000> and<01:53:24.159> it<01:53:24.400> and<01:53:24.639> there's<01:53:24.880> no<01:53:25.360> code<01:53:25.599> on<01:53:25.760> that\ndraw and it and there's no code on that\ndraw and it and there's no code on that line<01:53:26.159> but<01:53:26.320> there<01:53:26.480> is<01:53:26.639> some<01:53:26.800> code<01:53:27.040> on<01:53:27.280> some\nline but there is some code on some\nline but there is some code on some subsequent<01:53:28.159> line<01:53:29.199> general<01:53:29.599> rule<01:53:30.080> would<01:53:30.320> be\nsubsequent line general rule would be\nsubsequent line general rule would be like<01:53:30.800> okay<01:53:31.040> let's<01:53:31.280> make<01:53:31.440> the<01:53:31.679> code<01:53:31.920> hit<01:53:32.159> the\nlike okay let's make the code hit the\nlike okay let's make the code hit the next<01:53:32.960> line<01:53:33.199> with<01:53:33.520> code<01:53:34.159> um<01:53:34.320> I<01:53:34.480> just<01:53:34.639> visualize\nnext line with code um I just visualize\nnext line with code um I just visualize that<01:53:35.280> in<01:53:35.440> the<01:53:35.599> UI<01:53:35.920> directly<01:53:36.960> um<01:53:37.199> and<01:53:37.360> so<01:53:37.440> I\nthat in the UI directly um and so I\nthat in the UI directly um and so I think<01:53:37.679> it's<01:53:37.840> a<01:53:38.000> visualization<01:53:38.560> problem<01:53:38.960> and<01:53:39.119> a\nthink it's a visualization problem and a\nthink it's a visualization problem and a UI<01:53:39.679> problem<01:53:40.080> you're<01:53:40.320> right<01:53:40.480> that<01:53:40.639> a<01:53:40.800> lot<01:53:40.880> of\nUI problem you're right that a lot of\nUI problem you're right that a lot of stuff<01:53:41.119> can<01:53:41.280> go<01:53:41.440> wrong\nstuff can go wrong\nstuff can go wrong a<01:53:43.280> lot<01:53:43.360> of<01:53:43.520> that<01:53:44.239> is<01:53:44.639> not<01:53:44.880> necessary<01:53:45.599> I<01:53:45.760> think\na lot of that is not necessary I think\na lot of that is not necessary I think like<01:53:46.080> the<01:53:46.320> file<01:53:46.560> paths<01:53:47.119> good<01:53:47.360> example<01:53:47.840> it's\nlike the file paths good example it's\nlike the file paths good example it's like<01:53:48.560> there's<01:53:48.880> and<01:53:49.199> you<01:53:49.360> know<01:53:49.679> not<01:53:49.920> to<01:53:50.080> blame\nlike there's and you know not to blame\nlike there's and you know not to blame anyone<01:53:50.560> because<01:53:50.719> I've<01:53:50.880> had<01:53:50.960> bugs<01:53:51.199> where<01:53:51.280> I\nanyone because I've had bugs where I\nanyone because I've had bugs where I don't<01:53:51.679> treat<01:53:51.920> paths<01:53:52.239> correctly,<01:53:52.560> but<01:53:52.800> it's\ndon't treat paths correctly, but it's\ndon't treat paths correctly, but it's like,<01:53:53.360> you<01:53:53.520> know,<01:53:54.320> back<01:53:54.480> slash<01:53:55.040> slash<01:53:56.400> look,\nlike, you know, back slash slash look,\nlike, you know, back slash slash look, you<01:53:56.880> can<01:53:57.040> figure<01:53:57.119> it<01:53:57.280> out.<01:53:57.440> Like<01:53:57.599> the<01:53:57.760> debugger\nyou can figure it out. Like the debugger\nyou can figure it out. Like the debugger should<01:53:58.159> be<01:53:58.239> able<01:53:58.400> to<01:53:58.480> figure<01:53:58.560> it<01:53:58.639> out.<01:53:58.880> You\nshould be able to figure it out. You\nshould be able to figure it out. You know<01:53:59.040> what<01:53:59.199> I<01:53:59.280> mean?<01:53:59.440> Not<01:53:59.599> not<01:53:59.840> the<01:54:00.000> user.<01:54:00.239> The\nknow what I mean? Not not the user. The\nknow what I mean? Not not the user. The user<01:54:00.719> shouldn't<01:54:00.960> have<01:54:01.040> to<01:54:01.119> care,<01:54:01.280> but<01:54:01.440> the\nuser shouldn't have to care, but the\nuser shouldn't have to care, but the debugger<01:54:01.920> should<01:54:02.080> be<01:54:02.159> able<01:54:02.239> to<01:54:02.320> figure<01:54:02.480> it\ndebugger should be able to figure it\ndebugger should be able to figure it out.<01:54:03.199> So,<01:54:04.080> I<01:54:04.320> guess<01:54:04.400> that's<01:54:04.560> what<01:54:04.719> I<01:54:04.880> would\nout. So, I guess that's what I would\nout. So, I guess that's what I would say.<01:54:05.199> Like<01:54:05.360> there's<01:54:05.520> a<01:54:05.679> lot<01:54:05.760> of<01:54:05.840> room<01:54:06.000> for\nsay. Like there's a lot of room for\nsay. Like there's a lot of room for visual.<01:54:06.560> Another<01:54:06.880> another<01:54:07.280> spot<01:54:07.520> of\nvisual. Another another spot of\nvisual. Another another spot of visualization,<01:54:08.239> for<01:54:08.239> example,<01:54:08.639> would<01:54:08.880> be\nvisualization, for example, would be\nvisualization, for example, would be like\nlike\nlike other<01:54:10.800> debuggers<01:54:11.280> don't<01:54:11.360> tend<01:54:11.520> to<01:54:11.679> show<01:54:11.840> where\nother debuggers don't tend to show where\nother debuggers don't tend to show where other<01:54:12.320> threads<01:54:12.719> are.<01:54:13.119> Like<01:54:13.920> it's<01:54:14.159> just<01:54:14.320> where\nother threads are. Like it's just where\nother threads are. Like it's just where the<01:54:14.639> selected<01:54:14.960> thread<01:54:15.199> is<01:54:15.520> for<01:54:15.760> some<01:54:15.920> reason.\nthe selected thread is for some reason.\nthe selected thread is for some reason. like<01:54:17.040> um<01:54:17.280> I<01:54:17.599> just<01:54:17.760> try<01:54:17.920> to<01:54:18.080> show<01:54:19.040> all<01:54:19.280> the\nlike um I just try to show all the\nlike um I just try to show all the threads<01:54:19.679> that<01:54:19.920> are<01:54:20.000> in<01:54:20.560> active<01:54:20.960> view.<01:54:21.440> So<01:54:21.760> I\nthreads that are in active view. So I\nthreads that are in active view. So I don't<01:54:22.080> know<01:54:22.239> there's<01:54:22.480> lots<01:54:22.639> of<01:54:22.800> opportunities\ndon't know there's lots of opportunities\ndon't know there's lots of opportunities for<01:54:23.360> visualizations<01:54:23.920> and<01:54:24.159> to<01:54:24.320> just<01:54:24.480> improve\nfor visualizations and to just improve\nfor visualizations and to just improve it<01:54:25.119> basically.<01:54:26.400> Um<01:54:27.440> yeah<01:54:27.760> I<01:54:27.920> think<01:54:28.080> that's<01:54:28.239> the\nit basically. Um yeah I think that's the\nit basically. Um yeah I think that's the direction<01:54:28.719> that<01:54:28.960> you<01:54:29.119> have<01:54:29.199> to<01:54:29.280> go<01:54:29.440> for<01:54:29.679> that.\ndirection that you have to go for that.\ndirection that you have to go for that. So\n>> so<01:54:34.080> many<01:54:34.239> questions<01:54:34.960> uh\n>> so many questions uh\n>> so many questions uh what<01:54:36.880> kind<01:54:37.199> of\nwhat kind of\nwhat kind of cash<01:54:39.280> eviction<01:54:39.760> strategy<01:54:40.239> are<01:54:40.480> you<01:54:40.639> using<01:54:40.880> for\ncash eviction strategy are you using for\ncash eviction strategy are you using for the<01:54:41.679> hash<01:54:42.080> to<01:54:42.639> data<01:54:43.199> cache?<01:54:43.520> Are<01:54:43.679> you<01:54:43.760> using\nthe hash to data cache? Are you using\nthe hash to data cache? Are you using like<01:54:44.159> the<01:54:44.320> least<01:54:44.560> recently<01:54:45.040> used<01:54:45.920> Um<01:54:46.639> so<01:54:47.760> uh\nbasically<01:54:51.280> there's<01:54:51.679> like<01:54:51.920> there's<01:54:52.159> a<01:54:52.320> few\nbasically there's like there's a few\nbasically there's like there's a few different<01:54:52.880> sorts<01:54:53.199> of<01:54:53.520> reference<01:54:53.920> counters<01:54:54.320> in\ndifferent sorts of reference counters in\ndifferent sorts of reference counters in the<01:54:54.639> system.<01:54:55.520> One<01:54:55.679> is<01:54:55.920> if<01:54:56.159> like<01:54:56.480> that<01:54:56.719> keying\nthe system. One is if like that keying\nthe system. One is if like that keying mechanism<01:54:57.520> that<01:54:57.760> I<01:54:57.920> spoke<01:54:58.000> about<01:54:58.159> where<01:54:58.320> it's\nmechanism that I spoke about where it's\nmechanism that I spoke about where it's like<01:54:58.560> you've<01:54:58.719> got<01:54:58.800> a<01:54:58.880> key<01:54:59.040> it<01:54:59.199> refers<01:54:59.360> to<01:54:59.520> a\nlike you've got a key it refers to a\nlike you've got a key it refers to a history<01:54:59.840> of<01:55:00.000> hashes.<01:55:01.040> Every<01:55:01.360> key<01:55:01.599> that's\nhistory of hashes. Every key that's\nhistory of hashes. Every key that's touching<01:55:02.480> a<01:55:02.800> hash<01:55:03.679> um<01:55:03.920> that's<01:55:04.239> like<01:55:04.960> that\ntouching a hash um that's like that\ntouching a hash um that's like that implies<01:55:05.679> a<01:55:05.840> reference<01:55:06.159> count.<01:55:06.880> And<01:55:07.119> so<01:55:07.280> if<01:55:07.520> the\nimplies a reference count. And so if the\nimplies a reference count. And so if the reference<01:55:08.000> count<01:55:08.080> is<01:55:08.239> ever<01:55:08.480> non<01:55:08.639> zero<01:55:09.119> that\nreference count is ever non zero that\nreference count is ever non zero that hash<01:55:09.599> is<01:55:09.760> going<01:55:09.840> to<01:55:10.000> stay<01:55:10.159> there.<01:55:10.800> Um<01:55:11.360> now<01:55:11.920> you\nhash is going to stay there. Um now you\nhash is going to stay there. Um now you you<01:55:13.040> it<01:55:13.280> only<01:55:13.440> does<01:55:13.599> that<01:55:13.760> to<01:55:13.920> some<01:55:14.159> extent.<01:55:14.480> So\nyou it only does that to some extent. So\nyou it only does that to some extent. So it'll<01:55:14.960> start<01:55:15.119> throwing<01:55:15.360> away<01:55:15.599> things<01:55:15.840> that\nit'll start throwing away things that\nit'll start throwing away things that are<01:55:16.080> old<01:55:16.320> in<01:55:16.560> history,<01:55:17.280> but<01:55:17.520> it'll<01:55:17.840> generally\nare old in history, but it'll generally\nare old in history, but it'll generally it'll<01:55:18.880> keep<01:55:19.119> like<01:55:19.360> the<01:55:19.599> two<01:55:19.840> most<01:55:20.000> recent\nit'll keep like the two most recent\nit'll keep like the two most recent states<01:55:20.560> at<01:55:20.719> the<01:55:20.800> very<01:55:21.040> least.<01:55:21.760> Um,<01:55:22.239> but<01:55:22.480> once\nstates at the very least. Um, but once\nstates at the very least. Um, but once you<01:55:22.880> know<01:55:23.040> that<01:55:23.280> and<01:55:23.440> then<01:55:23.520> the<01:55:23.679> other<01:55:23.840> the\nyou know that and then the other the\nyou know that and then the other the other<01:55:24.159> ref<01:55:24.400> count<01:55:24.639> that's<01:55:24.800> in<01:55:24.880> the<01:55:24.960> system<01:55:25.119> is\nother ref count that's in the system is\nother ref count that's in the system is if<01:55:25.520> someone's<01:55:25.840> accessing<01:55:26.159> the<01:55:26.320> data,<01:55:26.639> right?\nif someone's accessing the data, right?\nif someone's accessing the data, right? So<01:55:27.119> it's<01:55:27.360> like<01:55:27.520> if<01:55:27.760> I've<01:55:29.040> I<01:55:29.280> didn't<01:55:29.440> get<01:55:29.520> into\nSo it's like if I've I didn't get into\nSo it's like if I've I didn't get into the<01:55:29.840> code<01:55:30.080> really,<01:55:30.320> but<01:55:30.800> like<01:55:31.040> if<01:55:31.280> I've<01:55:31.440> got\nthe code really, but like if I've got\nthe code really, but like if I've got there's<01:55:32.000> a<01:55:32.159> construct<01:55:32.480> called<01:55:32.639> a<01:55:32.880> scope<01:55:34.000> um<01:55:34.239> to\nthere's a construct called a scope um to\nthere's a construct called a scope um to access<01:55:34.800> these<01:55:35.040> caches<01:55:35.440> of<01:55:35.599> like<01:55:35.760> large<01:55:36.080> data.\naccess these caches of like large data.\naccess these caches of like large data. And<01:55:36.880> so<01:55:37.119> you<01:55:37.599> the<01:55:37.840> API<01:55:38.239> construct<01:55:38.560> is\nAnd so you the API construct is\nAnd so you the API construct is basically<01:55:38.960> you<01:55:39.199> obtain<01:55:39.440> a<01:55:39.679> scope,<01:55:40.400> you<01:55:41.280> grab\nbasically you obtain a scope, you grab\nbasically you obtain a scope, you grab the<01:55:41.760> data,<01:55:42.400> and<01:55:42.560> then<01:55:42.719> you<01:55:42.880> close<01:55:43.119> the<01:55:43.280> scope.\nthe data, and then you close the scope.\nthe data, and then you close the scope. And<01:55:43.760> then<01:55:44.000> while<01:55:44.239> this<01:55:44.480> scope<01:55:44.800> is<01:55:44.960> open,<01:55:45.360> you\nAnd then while this scope is open, you\nAnd then while this scope is open, you you're<01:55:45.920> able<01:55:46.080> to<01:55:46.239> talk<01:55:46.480> about<01:55:46.639> that<01:55:46.800> data.\nyou're able to talk about that data.\nyou're able to talk about that data. You're<01:55:47.280> able<01:55:47.360> to<01:55:47.520> read<01:55:47.679> it.<01:55:48.639> Um<01:55:49.920> and<01:55:50.480> if<01:55:50.719> that's\nYou're able to read it. Um and if that's\nYou're able to read it. Um and if that's happening,<01:55:51.280> obviously<01:55:51.520> you<01:55:51.679> can't<01:55:51.760> evict<01:55:52.080> it.\nhappening, obviously you can't evict it.\nhappening, obviously you can't evict it. So<01:55:52.639> there's<01:55:53.040> two<01:55:53.199> ref<01:55:53.440> counts<01:55:53.760> like<01:55:53.840> that\nSo there's two ref counts like that\nSo there's two ref counts like that where<01:55:54.320> it's<01:55:54.560> like<01:55:54.960> if<01:55:55.199> a<01:55:55.360> key<01:55:55.520> is<01:55:55.679> referring<01:55:55.920> to\nwhere it's like if a key is referring to\nwhere it's like if a key is referring to this,<01:55:56.480> you<01:55:56.639> keep<01:55:56.800> it<01:55:56.960> around.<01:55:57.840> If<01:55:58.159> a<01:55:58.960> um<01:56:00.320> if<01:56:00.560> a\nthis, you keep it around. If a um if a\nthis, you keep it around. If a um if a scope<01:56:01.119> is<01:56:01.440> opening<01:56:01.840> it,<01:56:02.159> you<01:56:02.400> keep<01:56:02.480> it<01:56:02.639> around.\nscope is opening it, you keep it around.\nscope is opening it, you keep it around. If<01:56:04.560> neither<01:56:04.880> of<01:56:05.040> those<01:56:05.199> things<01:56:05.360> are<01:56:05.520> true,\nIf neither of those things are true,\nIf neither of those things are true, then<01:56:06.080> it's<01:56:06.400> kind<01:56:06.560> of<01:56:06.639> just<01:56:06.719> a<01:56:06.960> heristic<01:56:07.360> of\nthen it's kind of just a heristic of\nthen it's kind of just a heristic of like,<01:56:08.080> well,<01:56:09.040> you<01:56:09.199> know,<01:56:09.440> it's<01:56:09.760> not<01:56:09.920> false\nlike, well, you know, it's not false\nlike, well, you know, it's not false that<01:56:10.480> this<01:56:10.719> hash<01:56:11.119> maps<01:56:11.440> to<01:56:11.599> this<01:56:11.760> data.<01:56:12.000> Like\nthat this hash maps to this data. Like\nthat this hash maps to this data. Like we<01:56:12.320> could<01:56:12.480> keep<01:56:12.560> it<01:56:12.719> around<01:56:12.960> forever.<01:56:14.080> Um<01:56:15.040> but,\nwe could keep it around forever. Um but,\nwe could keep it around forever. Um but, you<01:56:15.520> know,<01:56:15.599> it's<01:56:15.760> kind<01:56:15.840> of<01:56:15.920> a<01:56:16.080> heristic<01:56:16.400> of\nyou know, it's kind of a heristic of\nyou know, it's kind of a heristic of like,<01:56:16.800> well,<01:56:17.040> you<01:56:17.119> know,<01:56:17.280> do<01:56:17.440> you<01:56:17.520> want<01:56:17.599> to\nlike, well, you know, do you want to\nlike, well, you know, do you want to throw<01:56:17.840> it<01:56:18.000> away?<01:56:18.320> like<01:56:18.639> and<01:56:18.880> you<01:56:19.040> can<01:56:19.199> throw<01:56:19.360> it\nthrow it away? like and you can throw it\nthrow it away? like and you can throw it away<01:56:19.760> like<01:56:20.159> if<01:56:20.400> it's<01:56:20.560> not<01:56:20.719> accessed<01:56:21.119> in<01:56:21.280> 10\naway like if it's not accessed in 10\naway like if it's not accessed in 10 seconds<01:56:22.159> like<01:56:22.320> there<01:56:22.480> are<01:56:22.639> some<01:56:22.960> caches<01:56:23.360> like\nseconds like there are some caches like\nseconds like there are some caches like that<01:56:23.599> like<01:56:23.760> texture<01:56:24.080> handles<01:56:24.480> I'm<01:56:24.639> like<01:56:25.040> if\nthat like texture handles I'm like if\nthat like texture handles I'm like if nobody's<01:56:25.679> accessed<01:56:25.920> it<01:56:26.000> in<01:56:26.159> 10<01:56:26.320> seconds<01:56:26.560> or\nnobody's accessed it in 10 seconds or\nnobody's accessed it in 10 seconds or whatever<01:56:26.960> I'll<01:56:27.119> just<01:56:27.199> throw<01:56:27.360> it<01:56:27.440> away\nwhatever I'll just throw it away\nwhatever I'll just throw it away basically<01:56:28.560> and<01:56:28.800> I<01:56:28.960> just<01:56:29.199> it's<01:56:29.440> not<01:56:29.599> least\nbasically and I just it's not least\nbasically and I just it's not least recently<01:56:30.239> used<01:56:30.560> basically<01:56:30.880> because<01:56:31.040> I'm<01:56:31.199> just\nrecently used basically because I'm just\nrecently used basically because I'm just like<01:56:31.679> I<01:56:31.840> mean<01:56:31.920> I<01:56:32.159> could<01:56:32.239> do<01:56:32.400> it<01:56:32.480> that<01:56:32.639> way<01:56:32.800> but\nlike I mean I could do it that way but\nlike I mean I could do it that way but I'm<01:56:33.199> kind<01:56:33.280> of<01:56:33.440> like<01:56:34.320> really<01:56:34.639> brute<01:56:34.880> forcy\nI'm kind of like really brute forcy\nI'm kind of like really brute forcy about<01:56:35.440> it<01:56:35.599> and<01:56:35.840> it<01:56:36.000> just<01:56:36.159> doesn't<01:56:36.400> matter.\nabout it and it just doesn't matter.\nabout it and it just doesn't matter. It's<01:56:36.960> just<01:56:37.119> like<01:56:37.599> look<01:56:37.920> man<01:56:38.560> loop<01:56:38.880> over<01:56:39.040> the\nIt's just like look man loop over the\nIt's just like look man loop over the textures<01:56:39.599> and<01:56:39.840> throw<01:56:40.080> away<01:56:40.239> the<01:56:40.400> ones<01:56:40.639> that\ntextures and throw away the ones that\ntextures and throw away the ones that you<01:56:41.199> know<01:56:41.280> what<01:56:41.360> I<01:56:41.520> mean<01:56:41.760> like<01:56:42.080> that's<01:56:42.320> kind\nyou know what I mean like that's kind\nyou know what I mean like that's kind that's<01:56:42.800> kind<01:56:42.880> of<01:56:42.960> how<01:56:43.199> that<01:56:43.520> works.\nthat's kind of how that works.\nthat's kind of how that works. >> Yep.<01:56:45.040> Have<01:56:45.280> you<01:56:45.520> run<01:56:45.679> into<01:56:45.920> issues<01:56:46.320> where<01:56:46.560> like\n>> Yep. Have you run into issues where like\n>> Yep. Have you run into issues where like because<01:56:47.280> because<01:56:47.760> all<01:56:47.920> the<01:56:48.080> visualizations\nbecause because all the visualizations\nbecause because all the visualizations you<01:56:48.960> have<01:56:49.040> and<01:56:49.520> they<01:56:49.840> like<01:56:50.080> is<01:56:50.239> it<01:56:50.320> like<01:56:50.560> oh<01:56:50.719> my\nyou have and they like is it like oh my\nyou have and they like is it like oh my god<01:56:51.199> like<01:56:51.360> how<01:56:51.599> much<01:56:51.760> memory<01:56:52.159> does<01:56:52.320> it<01:56:52.480> like<01:56:52.639> is\ngod like how much memory does it like is\ngod like how much memory does it like is there<01:56:52.800> is<01:56:53.040> there<01:56:53.199> like<01:56:53.440> are<01:56:53.599> you<01:56:53.760> forced<01:56:54.159> to<01:56:54.320> be\nthere is there like are you forced to be\nthere is there like are you forced to be aggressively<01:56:55.119> evicting<01:56:55.679> stuff<01:56:55.920> to<01:56:56.239> kind<01:56:56.400> of\naggressively evicting stuff to kind of\naggressively evicting stuff to kind of not<01:56:56.719> blow<01:56:56.880> up<01:56:57.119> everything<01:56:57.360> or<01:56:57.599> is<01:56:57.760> it<01:56:57.920> pretty\nnot blow up everything or is it pretty\nnot blow up everything or is it pretty chill<01:56:58.320> like<01:56:58.480> I<01:56:58.800> have<01:56:58.960> no<01:56:59.119> feeling<01:56:59.360> for<01:56:59.520> the\nchill like I have no feeling for the\nchill like I have no feeling for the amount<01:56:59.920> of<01:57:00.080> data?\namount of data?\namount of data? >> Um\n>> Um\n>> Um really<01:57:02.719> depends<01:57:02.880> on<01:57:03.040> what<01:57:03.199> you're\nreally depends on what you're\nreally depends on what you're visualizing.<01:57:03.840> So<01:57:04.080> like<01:57:04.800> early<01:57:05.119> when<01:57:05.280> I\nvisualizing. So like early when I\nvisualizing. So like early when I prototyped<01:57:05.920> the<01:57:06.080> bitmap<01:57:06.560> viewer,\nprototyped the bitmap viewer,\nprototyped the bitmap viewer, I<01:57:08.239> had<01:57:08.400> like<01:57:08.560> a<01:57:08.719> video<01:57:08.960> playback<01:57:09.440> like<01:57:09.599> I<01:57:09.840> was\nI had like a video playback like I was\nI had like a video playback like I was using<01:57:10.320> a<01:57:10.560> I<01:57:10.719> was<01:57:10.800> going<01:57:10.960> through<01:57:11.040> a<01:57:11.199> [ __ ]\nusing a I was going through a [ __ ]\nusing a I was going through a [ __ ] program<01:57:12.480> uh<01:57:12.639> sample<01:57:13.679> that<01:57:13.920> like<01:57:14.080> plays<01:57:14.320> back<01:57:14.480> a\nprogram uh sample that like plays back a\nprogram uh sample that like plays back a video\nvideo\nvideo and<01:57:17.199> on<01:57:17.440> each<01:57:17.599> frame<01:57:17.760> of<01:57:17.840> the<01:57:18.000> video<01:57:18.159> I<01:57:18.320> would\nand on each frame of the video I would\nand on each frame of the video I would visualize<01:57:18.719> a<01:57:18.800> new<01:57:18.960> bit<01:57:19.199> map.<01:57:19.440> So<01:57:19.599> I<01:57:19.760> could<01:57:19.920> hold\nvisualize a new bit map. So I could hold\nvisualize a new bit map. So I could hold F5<01:57:20.480> and<01:57:20.719> watch<01:57:20.880> the<01:57:21.040> video<01:57:21.280> in<01:57:21.440> the<01:57:21.599> watch\nF5 and watch the video in the watch\nF5 and watch the video in the watch window.\nwindow.\nwindow. Um<01:57:23.840> which<01:57:24.000> was<01:57:24.239> pretty<01:57:24.400> cool.<01:57:24.960> But<01:57:25.199> you<01:57:25.280> know\nUm which was pretty cool. But you know\nUm which was pretty cool. But you know if<01:57:25.599> you<01:57:25.679> don't<01:57:25.760> have<01:57:25.840> a<01:57:25.920> good<01:57:26.080> eviction\nif you don't have a good eviction\nif you don't have a good eviction strategy<01:57:26.880> you<01:57:27.119> like<01:57:27.360> look<01:57:27.520> at<01:57:27.760> you<01:57:28.000> open<01:57:28.159> up\nstrategy you like look at you open up\nstrategy you like look at you open up task<01:57:28.639> manager<01:57:28.880> or<01:57:29.040> whatever<01:57:29.440> you<01:57:29.520> go<01:57:29.760> look<01:57:29.840> at\ntask manager or whatever you go look at\ntask manager or whatever you go look at it<01:57:30.080> and<01:57:30.159> it's<01:57:30.320> like<01:57:31.520> Yep.<01:57:32.080> Exactly.<01:57:32.560> So<01:57:33.040> it's\nit and it's like Yep. Exactly. So it's\nit and it's like Yep. Exactly. So it's so<01:57:34.320> um<01:57:34.639> over<01:57:35.040> time<01:57:35.440> it<01:57:35.679> can<01:57:35.840> grow<01:57:36.159> pretty\nso um over time it can grow pretty\nso um over time it can grow pretty substantially.<01:57:37.599> Um<01:57:38.000> so<01:57:38.239> I<01:57:38.480> tend<01:57:38.719> to<01:57:39.599> a<01:57:39.760> victim\nsubstantially. Um so I tend to a victim\nsubstantially. Um so I tend to a victim like<01:57:40.480> like<01:57:40.719> I<01:57:40.880> said<01:57:41.040> it's<01:57:41.280> like<01:57:41.520> different\nlike like I said it's like different\nlike like I said it's like different heristics.<01:57:42.239> I<01:57:42.400> don't<01:57:42.480> remember<01:57:42.719> exactly<01:57:42.960> what\nheristics. I don't remember exactly what\nheristics. I don't remember exactly what the<01:57:43.280> numbers<01:57:43.440> are<01:57:43.599> but<01:57:43.840> I'm<01:57:44.000> like<01:57:44.480> if<01:57:44.719> nobody's\nthe numbers are but I'm like if nobody's\nthe numbers are but I'm like if nobody's touching<01:57:45.360> this<01:57:45.520> in<01:57:45.760> a<01:57:45.840> long<01:57:46.000> time<01:57:46.239> throw<01:57:46.400> it\ntouching this in a long time throw it\ntouching this in a long time throw it away.<01:57:47.280> Um<01:57:47.840> and<01:57:48.080> that<01:57:48.320> tends<01:57:48.639> to<01:57:48.880> just<01:57:49.360> kind<01:57:49.599> of\naway. Um and that tends to just kind of\naway. Um and that tends to just kind of like<01:57:50.159> soften<01:57:50.560> that<01:57:50.800> problem<01:57:51.199> basically.\n>> Yeah.\n>> Yeah.\n>> Yeah. >> Talking<01:57:55.760> about<01:57:56.000> visualization.<01:57:56.639> Have<01:57:56.800> you\n>> Talking about visualization. Have you\n>> Talking about visualization. Have you considered<01:57:57.360> also<01:57:57.599> visualizing<01:57:58.239> things\nconsidered also visualizing things\nconsidered also visualizing things dynamically<01:57:59.119> over<01:57:59.360> time<01:57:59.599> like<01:57:59.840> how<01:58:00.000> the\ndynamically over time like how the\ndynamically over time like how the changes<01:58:00.560> of<01:58:00.800> things<01:58:01.280> have<01:58:01.520> also<01:58:02.880> um<01:58:03.119> like<01:58:03.920> bit\nchanges of things have also um like bit\nchanges of things have also um like bit I<01:58:05.280> realize<01:58:05.599> I'm<01:58:05.920> saying<01:58:07.119> I'm<01:58:07.440> wondering<01:58:07.760> like\nI realize I'm saying I'm wondering like\nI realize I'm saying I'm wondering like for<01:58:08.080> example<01:58:08.400> for<01:58:08.639> bit<01:58:08.880> maps<01:58:09.280> like<01:58:09.679> uh<01:58:09.840> you<01:58:10.080> can\nfor example for bit maps like uh you can\nfor example for bit maps like uh you can highlight<01:58:10.880> like<01:58:11.119> as<01:58:11.280> in<01:58:11.440> render<01:58:11.760> doc<01:58:12.000> okay\nhighlight like as in render doc okay\nhighlight like as in render doc okay here's<01:58:12.480> where<01:58:12.639> the<01:58:12.800> change<01:58:13.119> happened<01:58:14.159> from\nhere's where the change happened from\nhere's where the change happened from the<01:58:14.560> last<01:58:14.719> time<01:58:15.040> you<01:58:15.199> looked<01:58:15.440> at<01:58:15.520> this<01:58:15.760> thing.\nthe last time you looked at this thing.\nthe last time you looked at this thing. >> Yeah.<01:58:16.800> Yeah.<01:58:17.119> So<01:58:17.760> um<01:58:18.159> with<01:58:18.400> bit<01:58:18.639> so<01:58:18.800> I<01:58:18.960> haven't\n>> Yeah. Yeah. So um with bit so I haven't\n>> Yeah. Yeah. So um with bit so I haven't done<01:58:19.199> it<01:58:19.360> in<01:58:19.520> every<01:58:19.679> visualizer.<01:58:20.080> So<01:58:20.239> a<01:58:20.400> lot<01:58:20.480> of\ndone it in every visualizer. So a lot of\ndone it in every visualizer. So a lot of what<01:58:20.639> I<01:58:20.800> talked<01:58:20.960> about<01:58:21.119> today<01:58:21.280> was<01:58:21.440> like<01:58:21.520> the\nwhat I talked about today was like the\nwhat I talked about today was like the visualizer<01:58:22.159> architecture<01:58:22.880> like<01:58:23.040> sort<01:58:23.199> of\nvisualizer architecture like sort of\nvisualizer architecture like sort of like<01:58:23.840> how<01:58:24.080> the<01:58:24.239> building<01:58:24.560> blocks<01:58:24.800> are<01:58:24.960> all\nlike how the building blocks are all\nlike how the building blocks are all arranged<01:58:26.000> but<01:58:26.239> I<01:58:26.400> haven't<01:58:26.719> actually<01:58:27.040> like\narranged but I haven't actually like\narranged but I haven't actually like most<01:58:28.159> of<01:58:28.239> my<01:58:28.400> work<01:58:28.560> has<01:58:28.719> been<01:58:28.800> on<01:58:28.960> that<01:58:29.040> part<01:58:29.199> of\nmost of my work has been on that part of\nmost of my work has been on that part of the<01:58:29.360> problem<01:58:29.520> to<01:58:29.679> make<01:58:29.760> sure<01:58:29.920> that's<01:58:30.159> solid\nthe problem to make sure that's solid\nthe problem to make sure that's solid before<01:58:30.639> I<01:58:30.800> go<01:58:30.880> and<01:58:31.119> build<01:58:31.360> like<01:58:32.080> fanciest\nbefore I go and build like fanciest\nbefore I go and build like fanciest bitmap<01:58:32.960> visualizer<01:58:33.440> known<01:58:33.760> to<01:58:33.840> man<01:58:34.239> sort<01:58:34.480> of\nbitmap visualizer known to man sort of\nbitmap visualizer known to man sort of thing<01:58:34.880> which<01:58:35.119> like<01:58:35.360> if<01:58:35.679> you<01:58:35.840> know<01:58:36.480> but<01:58:36.960> um<01:58:37.280> so<01:58:37.520> I\nthing which like if you know but um so I\nthing which like if you know but um so I don't<01:58:37.920> I<01:58:38.159> I<01:58:38.480> don't<01:58:38.560> have<01:58:38.719> that<01:58:38.960> particular\ndon't I I don't have that particular\ndon't I I don't have that particular feature<01:58:39.520> in<01:58:39.679> the<01:58:39.760> bitmap<01:58:40.159> visualizer<01:58:40.639> but<01:58:41.040> um\nfeature in the bitmap visualizer but um\nfeature in the bitmap visualizer but um but<01:58:41.840> like<01:58:42.000> the<01:58:42.159> memory<01:58:42.480> viewer<01:58:42.880> I<01:58:43.040> do<01:58:43.360> like<01:58:43.520> is\nbut like the memory viewer I do like is\nbut like the memory viewer I do like is an<01:58:43.920> example<01:58:44.080> where<01:58:44.239> I<01:58:44.320> do<01:58:44.480> have<01:58:44.560> that<01:58:44.719> feature\nan example where I do have that feature\nan example where I do have that feature where<01:58:45.119> it's<01:58:45.199> like<01:58:45.360> you<01:58:45.520> show<01:58:45.679> the<01:58:45.840> changes<01:58:46.159> as\nwhere it's like you show the changes as\nwhere it's like you show the changes as they<01:58:46.639> happen.<01:58:47.520> Um,<01:58:48.400> now<01:58:48.800> obviously<01:58:49.119> what<01:58:49.360> you\nthey happen. Um, now obviously what you\nthey happen. Um, now obviously what you want<01:58:49.920> is<01:58:50.560> uh<01:58:50.960> kind<01:58:51.119> of<01:58:51.199> what<01:58:51.360> I<01:58:51.679> alluded<01:58:52.080> to<01:58:52.239> at\nwant is uh kind of what I alluded to at\nwant is uh kind of what I alluded to at the<01:58:52.480> end<01:58:52.560> of<01:58:52.639> the<01:58:52.800> talk<01:58:52.960> where<01:58:53.119> it's<01:58:53.280> like<01:58:53.440> you\nthe end of the talk where it's like you\nthe end of the talk where it's like you really<01:58:53.679> want<01:58:53.760> a<01:58:53.920> scrub<01:58:54.239> like<01:58:54.480> you<01:58:54.560> want<01:58:54.639> a\nreally want a scrub like you want a\nreally want a scrub like you want a timeline<01:58:55.440> like<01:58:55.760> white<01:58:56.000> box<01:58:56.320> where<01:58:56.560> you<01:58:56.639> want\ntimeline like white box where you want\ntimeline like white box where you want like<01:58:57.360> you<01:58:57.599> want<01:58:58.480> you<01:58:58.719> want<01:58:58.800> a<01:58:59.040> timeline<01:58:59.440> where\nlike you want you want a timeline where\nlike you want you want a timeline where it's<01:58:59.920> like<01:59:00.320> look<01:59:00.639> I've<01:59:00.880> got<01:59:01.040> this<01:59:01.280> whole\nit's like look I've got this whole\nit's like look I've got this whole history<01:59:01.840> of<01:59:02.080> those<01:59:02.239> hashes<01:59:03.199> where<01:59:03.840> um<01:59:04.000> it's\nhistory of those hashes where um it's\nhistory of those hashes where um it's like<01:59:05.040> there's<01:59:05.440> more<01:59:05.679> information<01:59:06.000> you<01:59:06.159> need\nlike there's more information you need\nlike there's more information you need but<01:59:06.480> it's<01:59:06.639> like<01:59:06.800> you've<01:59:06.960> got<01:59:07.119> this<01:59:07.440> history<01:59:07.760> of\nbut it's like you've got this history of\nbut it's like you've got this history of data<01:59:08.480> transforms<01:59:09.199> applying<01:59:09.599> to<01:59:09.760> this<01:59:10.719> and\ndata transforms applying to this and\ndata transforms applying to this and really<01:59:11.280> what<01:59:11.440> you<01:59:11.599> want<01:59:11.679> to<01:59:11.760> do<01:59:11.840> is<01:59:12.080> just<01:59:12.239> like\nreally what you want to do is just like\nreally what you want to do is just like rewind<01:59:13.440> to<01:59:13.599> those<01:59:13.840> states<01:59:14.080> and<01:59:14.400> see<01:59:14.480> like<01:59:14.719> what\nrewind to those states and see like what\nrewind to those states and see like what the<01:59:15.040> data<01:59:15.199> was<01:59:15.440> actually<01:59:15.599> like<01:59:15.840> then.<01:59:17.040> Um\nthe data was actually like then. Um\nthe data was actually like then. Um uh<01:59:18.880> and<01:59:19.199> you<01:59:19.440> know<01:59:20.719> I<01:59:21.040> haven't<01:59:21.199> done<01:59:21.360> that<01:59:21.599> yet\nuh and you know I haven't done that yet\nuh and you know I haven't done that yet because<01:59:22.080> it's<01:59:22.320> like<01:59:22.639> subtle<01:59:22.960> with<01:59:23.199> how<01:59:23.360> you\nbecause it's like subtle with how you\nbecause it's like subtle with how you want<01:59:23.599> to<01:59:23.679> do<01:59:23.760> that.<01:59:24.000> Like<01:59:24.159> how<01:59:24.320> is<01:59:24.400> that\nwant to do that. Like how is that\nwant to do that. Like how is that related<01:59:24.800> to<01:59:24.960> time<01:59:25.199> travel<01:59:25.520> debugging?<01:59:26.000> How<01:59:26.080> is\nrelated to time travel debugging? How is\nrelated to time travel debugging? How is it<01:59:26.400> like<01:59:26.560> there's<01:59:26.719> a<01:59:26.800> lot<01:59:26.880> of<01:59:26.960> questions<01:59:27.199> that\nit like there's a lot of questions that\nit like there's a lot of questions that I<01:59:27.679> would<01:59:27.760> have<01:59:27.840> to<01:59:28.000> answer<01:59:28.159> to<01:59:28.400> actually<01:59:28.639> like\nI would have to answer to actually like\nI would have to answer to actually like tell<01:59:29.679> you<01:59:29.840> how<01:59:30.000> that<01:59:30.239> system<01:59:30.480> works<01:59:30.719> fully.\ntell you how that system works fully.\ntell you how that system works fully. But<01:59:31.280> like<01:59:31.760> but<01:59:32.000> yes<01:59:32.239> that<01:59:32.719> to<01:59:32.960> answer<01:59:33.119> your\nBut like but yes that to answer your\nBut like but yes that to answer your question<01:59:33.599> like<01:59:33.920> I've<01:59:34.159> done<01:59:34.320> it<01:59:34.400> I've<01:59:34.639> done\nquestion like I've done it I've done\nquestion like I've done it I've done like<01:59:34.880> in<01:59:34.960> the<01:59:35.040> watch<01:59:35.199> window<01:59:35.520> memory<01:59:35.760> view<01:59:36.000> I\nlike in the watch window memory view I\nlike in the watch window memory view I show<01:59:36.320> as<01:59:36.560> things<01:59:36.880> change.<01:59:37.440> Um<01:59:37.760> I<01:59:37.920> don't<01:59:38.080> have\nshow as things change. Um I don't have\nshow as things change. Um I don't have like<01:59:38.400> the<01:59:38.639> super<01:59:38.880> fancy<01:59:39.119> timeline<01:59:39.520> scrubber\nlike the super fancy timeline scrubber\nlike the super fancy timeline scrubber yet<01:59:40.719> but<01:59:41.119> it's<01:59:41.520> like<01:59:42.159> that's<01:59:42.560> kind<01:59:42.719> of<01:59:43.119> um<01:59:43.679> but\nyet but it's like that's kind of um but\nyet but it's like that's kind of um but yeah<01:59:44.159> for<01:59:44.320> sure<01:59:44.560> you<01:59:44.800> definitely<01:59:45.040> want<01:59:45.199> that.\nyeah for sure you definitely want that.\nyeah for sure you definitely want that. Yeah,<01:59:46.400> for<01:59:46.719> people<01:59:46.880> at<01:59:47.119> home<01:59:47.440> like<01:59:48.080> Andrew\nYeah, for people at home like Andrew\nYeah, for people at home like Andrew from<01:59:48.800> White<01:59:49.119> Box<01:59:49.440> is<01:59:49.679> here<01:59:49.840> as<01:59:50.000> well<01:59:50.159> and<01:59:50.400> yes,\nfrom White Box is here as well and yes,\nfrom White Box is here as well and yes, pe<01:59:51.119> some<01:59:51.440> people<01:59:51.679> have<01:59:51.920> been<01:59:52.080> aggressively\npe some people have been aggressively\npe some people have been aggressively pitching<01:59:53.199> like<01:59:53.360> a<01:59:53.679> debugger<01:59:54.159> cinematic\npitching like a debugger cinematic\npitching like a debugger cinematic universe<01:59:55.520> where<01:59:55.840> like<01:59:56.400> White<01:59:56.639> Box<01:59:57.040> FL\nuniverse where like White Box FL\nuniverse where like White Box FL debuggers\ndebuggers\ndebuggers >> the<01:59:58.560> Avengers.\n>> the Avengers.\n>> the Avengers. >> Yeah.<01:59:59.520> The<01:59:59.760> super<02:00:00.000> team<02:00:00.320> of<02:00:00.639> like<02:00:01.199> debug\n>> Yeah. The super team of like debug\n>> Yeah. The super team of like debug Avengers.<02:00:02.239> Yeah.\nAvengers. Yeah.\nAvengers. Yeah. >> Um<02:00:04.800> when<02:00:05.040> you<02:00:05.199> get<02:00:05.280> the<02:00:05.679> information<02:00:06.239> from<02:00:06.639> the\n>> Um when you get the information from the\n>> Um when you get the information from the operating<02:00:07.280> system<02:00:07.599> about<02:00:07.920> the<02:00:08.080> debugger<02:00:09.199> um\noperating system about the debugger um\noperating system about the debugger um the<02:00:09.599> memory,<02:00:10.080> do<02:00:10.159> you<02:00:10.320> get<02:00:10.560> memory<02:00:11.040> ranges?<02:00:11.679> Do\nthe memory, do you get memory ranges? Do\nthe memory, do you get memory ranges? Do you<02:00:11.920> get<02:00:12.159> allocation?<02:00:12.880> Do<02:00:13.040> you<02:00:13.119> get\nyou get allocation? Do you get\nyou get allocation? Do you get individual<02:00:13.920> pages?<02:00:14.880> If<02:00:15.040> there's<02:00:15.760> ations<02:00:16.000> that\nindividual pages? If there's ations that\nindividual pages? If there's ations that have<02:00:16.239> been<02:00:16.400> made<02:00:16.639> that<02:00:16.960> haven't<02:00:17.440> been<02:00:17.760> given\nhave been made that haven't been given\nhave been made that haven't been given pages<02:00:18.639> yet.<02:00:19.119> Is<02:00:19.360> that<02:00:19.840> information<02:00:20.320> you<02:00:20.560> can\npages yet. Is that information you can\npages yet. Is that information you can access?\naccess?\naccess? >> Um,<02:00:23.199> so<02:00:24.239> you<02:00:24.560> can<02:00:24.719> obtain<02:00:25.119> information<02:00:25.520> like\n>> Um, so you can obtain information like\n>> Um, so you can obtain information like that,<02:00:26.000> but<02:00:26.239> the<02:00:26.560> so<02:00:26.800> the<02:00:27.040> debug<02:00:27.440> events<02:00:27.840> don't\nthat, but the so the debug events don't\nthat, but the so the debug events don't actually<02:00:28.320> contain<02:00:28.639> that<02:00:28.880> information.<02:00:29.679> You\nactually contain that information. You\nactually contain that information. You don't<02:00:30.080> get<02:00:30.639> um<02:00:30.800> the<02:00:31.040> debug<02:00:31.440> events<02:00:32.080> don't\ndon't get um the debug events don't\ndon't get um the debug events don't report<02:00:32.639> anything<02:00:33.040> at<02:00:33.040> least<02:00:33.280> on<02:00:33.520> Windows.<02:00:34.159> Uh\nreport anything at least on Windows. Uh\nreport anything at least on Windows. Uh you<02:00:34.719> don't<02:00:34.880> get<02:00:35.040> information<02:00:35.360> about<02:00:35.599> like\nyou don't get information about like\nyou don't get information about like this<02:00:36.080> range<02:00:36.320> was<02:00:36.560> reserved<02:00:37.119> for<02:00:37.199> example.<02:00:38.159> Um\nthis range was reserved for example. Um\nthis range was reserved for example. Um what<02:00:39.199> tends<02:00:39.440> to<02:00:39.599> happen<02:00:40.159> like<02:00:40.480> all<02:00:40.639> the<02:00:40.880> stuff\nwhat tends to happen like all the stuff\nwhat tends to happen like all the stuff that<02:00:41.199> the<02:00:41.520> debugger<02:00:42.000> currently<02:00:42.320> uses<02:00:42.639> is<02:00:42.880> like\nthat the debugger currently uses is like\nthat the debugger currently uses is like read<02:00:43.440> process<02:00:43.760> memory<02:00:44.159> like<02:00:44.320> it<02:00:44.480> calls<02:00:44.719> just\nread process memory like it calls just\nread process memory like it calls just that<02:00:45.040> API.<02:00:45.440> So<02:00:45.520> it<02:00:45.679> can<02:00:45.760> read<02:00:45.920> any<02:00:46.159> range<02:00:46.719> and\nthat API. So it can read any range and\nthat API. So it can read any range and if<02:00:47.040> it<02:00:47.280> and<02:00:47.679> it<02:00:48.000> can<02:00:48.239> infer<02:00:48.719> from<02:00:49.040> how<02:00:49.199> that<02:00:49.440> API\nif it and it can infer from how that API\nif it and it can infer from how that API returns<02:00:50.239> like<02:00:50.639> whether<02:00:50.960> it<02:00:51.119> failed<02:00:51.440> for<02:00:51.599> some\nreturns like whether it failed for some\nreturns like whether it failed for some for<02:00:52.239> some<02:00:52.400> pages.<02:00:52.880> So<02:00:53.040> it<02:00:53.199> can<02:00:53.280> infer<02:00:53.679> stuff\nfor some pages. So it can infer stuff\nfor some pages. So it can infer stuff like<02:00:54.080> that.<02:00:54.719> Now<02:00:55.440> even<02:00:55.679> if<02:00:55.840> there's<02:00:56.080> no<02:00:56.320> way<02:00:56.719> to\nlike that. Now even if there's no way to\nlike that. Now even if there's no way to actually<02:00:57.280> know<02:00:57.840> like<02:00:58.080> if<02:00:59.280> and<02:00:59.599> I<02:00:59.840> haven't<02:01:00.080> used\nactually know like if and I haven't used\nactually know like if and I haven't used it<02:01:00.480> so<02:01:00.639> I<02:01:00.800> don't<02:01:00.960> fully<02:01:01.280> know<02:01:01.360> but<02:01:01.599> I'm<02:01:01.679> pretty\nit so I don't fully know but I'm pretty\nit so I don't fully know but I'm pretty sure<02:01:01.920> there's<02:01:02.080> Windows<02:01:02.400> APIs<02:01:02.800> to<02:01:02.960> like\nsure there's Windows APIs to like\nsure there's Windows APIs to like actually<02:01:03.760> get<02:01:04.000> more<02:01:04.239> information<02:01:04.560> about<02:01:04.719> the\nactually get more information about the\nactually get more information about the page<02:01:05.199> table<02:01:05.520> basically.<02:01:06.320> But<02:01:06.560> even<02:01:06.800> if<02:01:06.960> you\npage table basically. But even if you\npage table basically. But even if you didn't<02:01:07.360> have<02:01:07.520> that,<02:01:07.840> what<02:01:08.000> the<02:01:08.080> debugger\ndidn't have that, what the debugger\ndidn't have that, what the debugger could<02:01:08.639> do<02:01:08.800> is<02:01:09.040> actually<02:01:09.199> just<02:01:09.440> hook<02:01:09.679> all<02:01:09.840> those\ncould do is actually just hook all those\ncould do is actually just hook all those APIs<02:01:10.560> and<02:01:10.800> build<02:01:11.040> it<02:01:11.199> up<02:01:11.360> for<02:01:11.520> itself.<02:01:11.920> So<02:01:12.000> if\nAPIs and build it up for itself. So if\nAPIs and build it up for itself. So if like<02:01:12.480> you<02:01:12.719> put<02:01:12.800> a<02:01:13.040> int3<02:01:14.000> in<02:01:14.239> virtual<02:01:14.560> alloc<02:01:15.280> for\nlike you put a int3 in virtual alloc for\nlike you put a int3 in virtual alloc for example<02:01:15.920> and<02:01:16.159> then<02:01:16.320> decode<02:01:16.719> the<02:01:16.960> arguments,\nexample and then decode the arguments,\nexample and then decode the arguments, you<02:01:17.679> could<02:01:17.760> start<02:01:17.920> actually<02:01:18.159> building<02:01:18.400> up\nyou could start actually building up\nyou could start actually building up like<02:01:18.800> oh<02:01:19.040> here's<02:01:19.360> who's<02:01:19.760> actually<02:01:20.000> reserved\nlike oh here's who's actually reserved\nlike oh here's who's actually reserved or<02:01:20.560> committed<02:01:20.880> what.<02:01:21.599> Um<02:01:22.560> that's<02:01:22.880> more\nor committed what. Um that's more\nor committed what. Um that's more complicated.<02:01:23.599> I'm<02:01:23.760> sure<02:01:23.920> there's<02:01:24.560> probably\ncomplicated. I'm sure there's probably\ncomplicated. I'm sure there's probably some<02:01:25.599> APIs<02:01:26.080> to<02:01:26.239> actually<02:01:26.400> just<02:01:26.560> visualize<02:01:26.880> it\nsome APIs to actually just visualize it\nsome APIs to actually just visualize it get<02:01:27.520> that<02:01:27.679> information<02:01:28.000> directly.<02:01:28.960> But<02:01:29.360> um\nget that information directly. But um\nget that information directly. But um but<02:01:30.320> yeah,<02:01:30.560> that's<02:01:30.800> that's<02:01:31.199> kind<02:01:31.440> of<02:01:31.520> the\nbut yeah, that's that's kind of the\nbut yeah, that's that's kind of the degree<02:01:32.000> of<02:01:32.159> my<02:01:32.320> understanding<02:01:32.639> about<02:01:32.800> it.<02:01:33.040> But\ndegree of my understanding about it. But\ndegree of my understanding about it. But yeah,<02:01:33.360> we<02:01:33.520> don't<02:01:33.679> we<02:01:33.840> don't<02:01:33.920> get<02:01:34.000> that<02:01:34.159> as<02:01:34.400> like\nyeah, we don't we don't get that as like\nyeah, we don't we don't get that as like a<02:01:34.639> mainline<02:01:35.119> thing<02:01:35.360> when<02:01:35.679> you<02:01:35.840> just<02:01:36.159> hook<02:01:36.400> on\na mainline thing when you just hook on\na mainline thing when you just hook on as<02:01:36.800> a<02:01:36.960> debugger.<02:01:37.520> But<02:01:38.080> um<02:01:38.480> but<02:01:38.719> yeah.\nas a debugger. But um but yeah.\nas a debugger. But um but yeah. >> Yep.\n>> Yep.\n>> Yep. >> All right.<02:01:42.880> Uh\n>> All right. Uh\n>> All right. Uh >> so<02:01:45.360> one<02:01:45.599> of<02:01:45.760> those<02:01:46.480> pain<02:01:46.960> frustration<02:01:47.440> points\n>> so one of those pain frustration points\n>> so one of those pain frustration points with<02:01:47.920> debuggers<02:01:48.560> and<02:01:48.719> and<02:01:49.119> specifically<02:01:49.599> like\nwith debuggers and and specifically like\nwith debuggers and and specifically like if<02:01:50.320> you're<02:01:50.480> talking<02:01:50.719> about<02:01:50.960> big<02:01:51.280> projects\nif you're talking about big projects\nif you're talking about big projects like<02:01:51.760> Unreal<02:01:52.159> and<02:01:52.400> it<02:01:52.560> kind<02:01:52.639> of<02:01:52.800> becomes<02:01:53.520> like\nlike Unreal and it kind of becomes like\nlike Unreal and it kind of becomes like logging\nlogging\nlogging >> is<02:01:55.440> that<02:01:55.599> you<02:01:55.840> run<02:01:56.000> across<02:01:56.320> that<02:01:56.560> issue<02:01:56.880> that\n>> is that you run across that issue that\n>> is that you run across that issue that your<02:01:57.599> engine<02:01:57.840> is<02:01:58.080> optimized.<02:01:58.639> So<02:01:58.719> you<02:01:58.880> don't\nyour engine is optimized. So you don't\nyour engine is optimized. So you don't have<02:01:59.280> information\nhave information\nhave information >> and<02:02:00.320> then<02:02:00.480> your<02:02:00.719> game<02:02:00.880> is<02:02:01.040> not<02:02:01.280> optimized<02:02:01.920> and\n>> and then your game is not optimized and\n>> and then your game is not optimized and something<02:02:02.719> happens<02:02:03.040> that<02:02:03.280> is<02:02:03.440> very<02:02:03.599> hard<02:02:03.760> to\nsomething happens that is very hard to\nsomething happens that is very hard to track<02:02:04.239> to<02:02:04.320> to<02:02:04.560> replicate<02:02:05.040> whatever<02:02:05.280> whatever\ntrack to to replicate whatever whatever\ntrack to to replicate whatever whatever then<02:02:06.000> you<02:02:06.159> get<02:02:06.239> to<02:02:06.400> that<02:02:06.560> point<02:02:06.639> that<02:02:06.800> you<02:02:06.960> need\nthen you get to that point that you need\nthen you get to that point that you need to<02:02:07.119> inspect<02:02:07.520> stuff<02:02:07.679> it's<02:02:07.840> like<02:02:08.080> oh<02:02:08.320> there's\nto inspect stuff it's like oh there's\nto inspect stuff it's like oh there's nothing<02:02:08.800> here\nnothing here\nnothing here >> oh<02:02:09.920> also<02:02:10.239> nothing<02:02:10.560> here<02:02:10.960> and<02:02:11.119> you<02:02:11.280> just<02:02:11.440> go<02:02:11.520> to\n>> oh also nothing here and you just go to\n>> oh also nothing here and you just go to a<02:02:11.840> point<02:02:11.920> it's<02:02:12.159> like<02:02:12.400> okay<02:02:13.040> now<02:02:13.199> I<02:02:13.360> have<02:02:13.520> to<02:02:13.679> go\na point it's like okay now I have to go\na point it's like okay now I have to go back<02:02:14.880> make<02:02:15.119> things<02:02:15.440> not<02:02:15.679> be<02:02:15.840> optimized<02:02:16.480> maybe\nback make things not be optimized maybe\nback make things not be optimized maybe in<02:02:16.800> this<02:02:16.960> file<02:02:17.199> or<02:02:17.360> this<02:02:17.520> mod<02:02:17.760> or<02:02:17.920> whatever\nin this file or this mod or whatever\nin this file or this mod or whatever >> and<02:02:18.639> I<02:02:18.800> think<02:02:18.960> there's<02:02:19.199> something<02:02:19.920> some\n>> and I think there's something some\n>> and I think there's something some project<02:02:20.560> or<02:02:20.639> something<02:02:20.880> from<02:02:21.119> Microsoft<02:02:21.599> or\nproject or something from Microsoft or\nproject or something from Microsoft or something<02:02:22.080> recently<02:02:22.719> where<02:02:22.960> they<02:02:23.119> kind<02:02:23.280> of\nsomething recently where they kind of\nsomething recently where they kind of grab<02:02:23.679> the<02:02:23.920> two<02:02:24.159> builds<02:02:24.560> and<02:02:24.800> then<02:02:24.960> you<02:02:25.199> can\ngrab the two builds and then you can\ngrab the two builds and then you can kind<02:02:25.599> of\nkind of\nkind of >> okay<02:02:26.800> try<02:02:26.960> to<02:02:27.119> get<02:02:27.199> the<02:02:27.440> information<02:02:27.840> from<02:02:28.080> the\n>> okay try to get the information from the\n>> okay try to get the information from the other<02:02:28.320> one<02:02:28.800> are<02:02:28.960> you<02:02:29.199> planning<02:02:29.440> on<02:02:29.679> doing\nother one are you planning on doing\nother one are you planning on doing something<02:02:30.159> like<02:02:30.400> this<02:02:30.639> or\nsomething like this or\nsomething like this or >> yeah<02:02:32.080> So<02:02:32.480> that<02:02:32.960> feature<02:02:33.280> in<02:02:33.520> particular,\n>> yeah So that feature in particular,\n>> yeah So that feature in particular, there's<02:02:34.080> a<02:02:34.159> lot<02:02:34.239> of<02:02:34.400> ways<02:02:34.480> that<02:02:34.639> you<02:02:34.800> can\nthere's a lot of ways that you can\nthere's a lot of ways that you can approach<02:02:35.119> that<02:02:35.360> problem.<02:02:36.320> Um,<02:02:36.880> one<02:02:37.119> is<02:02:37.280> with\napproach that problem. Um, one is with\napproach that problem. Um, one is with like<02:02:37.679> hot<02:02:37.920> reloading<02:02:38.320> for<02:02:38.400> example,<02:02:38.800> like<02:02:38.960> if\nlike hot reloading for example, like if\nlike hot reloading for example, like if you<02:02:39.199> want<02:02:39.360> to<02:02:39.599> not<02:02:39.840> actually<02:02:40.080> have<02:02:40.239> to\nyou want to not actually have to\nyou want to not actually have to recreate<02:02:40.960> the<02:02:41.119> state<02:02:41.360> for<02:02:41.440> example,<02:02:41.840> but<02:02:42.639> um,\nrecreate the state for example, but um,\nrecreate the state for example, but um, but<02:02:42.960> yeah,<02:02:43.199> that<02:02:43.440> particular\nbut yeah, that particular\nbut yeah, that particular uh,<02:02:45.440> Microsoft<02:02:45.920> feature<02:02:47.280> um,<02:02:48.000> to<02:02:48.320> my\nuh, Microsoft feature um, to my\nuh, Microsoft feature um, to my understanding,<02:02:48.880> I<02:02:49.040> haven't<02:02:49.199> actually\nunderstanding, I haven't actually\nunderstanding, I haven't actually dissected<02:02:49.840> it<02:02:50.000> fully,<02:02:50.239> but<02:02:50.480> my<02:02:50.639> understanding\ndissected it fully, but my understanding\ndissected it fully, but my understanding is<02:02:51.119> basically<02:02:51.360> like<02:02:51.599> yeah,<02:02:51.760> they<02:02:51.920> do<02:02:52.000> the\nis basically like yeah, they do the\nis basically like yeah, they do the build<02:02:52.320> twice.<02:02:53.199> They<02:02:53.440> take<02:02:53.599> the<02:02:53.920> unoptimized\nbuild twice. They take the unoptimized\nbuild twice. They take the unoptimized version<02:02:54.719> and<02:02:54.800> the<02:02:54.960> optimized<02:02:55.440> version.\nversion and the optimized version.\nversion and the optimized version. They're<02:02:56.159> the<02:02:56.400> same<02:02:56.480> binary<02:02:57.360> and<02:02:57.599> there's<02:02:57.920> some\nThey're the same binary and there's some\nThey're the same binary and there's some mechanism<02:02:58.639> by<02:02:58.880> which<02:02:59.040> the<02:02:59.199> debugger<02:02:59.679> can\nmechanism by which the debugger can\nmechanism by which the debugger can programmatically<02:03:00.960> control<02:03:01.360> which<02:03:01.599> is<02:03:01.840> which\nprogrammatically control which is which\nprogrammatically control which is which for<02:03:02.400> any<02:03:02.880> I<02:03:03.119> assume<02:03:03.440> symbol.<02:03:04.080> Uh<02:03:04.320> so<02:03:04.400> I'm<02:03:04.560> not\nfor any I assume symbol. Uh so I'm not\nfor any I assume symbol. Uh so I'm not 100%<02:03:05.040> sure<02:03:05.440> on<02:03:06.159> how<02:03:06.400> it's<02:03:06.719> exactly<02:03:07.119> it's\n100% sure on how it's exactly it's\n100% sure on how it's exactly it's sliced,<02:03:07.599> but<02:03:07.760> that's<02:03:07.920> kind<02:03:08.000> of<02:03:08.080> how<02:03:08.239> it<02:03:08.400> works.\nsliced, but that's kind of how it works.\nsliced, but that's kind of how it works. Now<02:03:09.280> the<02:03:09.599> utility<02:03:09.840> of<02:03:09.920> that's<02:03:10.239> questionable\nNow the utility of that's questionable\nNow the utility of that's questionable because<02:03:10.800> it's<02:03:11.040> like<02:03:11.119> you're<02:03:11.360> building<02:03:11.520> the\nbecause it's like you're building the\nbecause it's like you're building the thing<02:03:11.920> twice<02:03:12.239> and<02:03:12.400> the<02:03:12.560> binaries<02:03:12.960> are<02:03:13.119> twice\nthing twice and the binaries are twice\nthing twice and the binaries are twice as<02:03:13.440> big<02:03:13.679> and<02:03:13.920> in<02:03:14.159> many<02:03:14.320> cases<02:03:14.560> the<02:03:14.719> binaries\nas big and in many cases the binaries\nas big and in many cases the binaries are<02:03:15.280> close<02:03:15.440> to<02:03:15.679> binary<02:03:16.080> size<02:03:16.320> limits<02:03:16.639> anyways.\nare close to binary size limits anyways.\nare close to binary size limits anyways. So<02:03:17.280> I'm<02:03:17.440> not<02:03:17.599> actually<02:03:17.760> sure<02:03:18.080> like<02:03:19.280> you<02:03:19.520> know<02:03:20.320> I\nSo I'm not actually sure like you know I\nSo I'm not actually sure like you know I mean<02:03:20.639> if<02:03:20.880> it<02:03:21.040> works<02:03:21.280> that's<02:03:21.520> great<02:03:21.920> obviously.\nmean if it works that's great obviously.\nmean if it works that's great obviously. Um\nUm\nUm but<02:03:24.400> yeah,<02:03:24.639> if<02:03:24.960> that<02:03:25.280> feature<02:03:25.599> would<02:03:25.840> not<02:03:26.000> be\nbut yeah, if that feature would not be\nbut yeah, if that feature would not be hard<02:03:26.239> to<02:03:26.400> support<02:03:26.560> for<02:03:26.719> the<02:03:26.800> debugger<02:03:27.199> because\nhard to support for the debugger because\nhard to support for the debugger because basically<02:03:28.719> um<02:03:29.360> what<02:03:29.599> you<02:03:29.760> need<02:03:29.920> to<02:03:30.000> do<02:03:30.159> is<02:03:30.320> just\nbasically um what you need to do is just\nbasically um what you need to do is just have<02:03:30.639> the<02:03:30.800> debugger<02:03:32.159> whatever<02:03:32.560> state<02:03:32.800> it\nhave the debugger whatever state it\nhave the debugger whatever state it needs<02:03:33.280> to<02:03:33.440> change<02:03:33.760> to<02:03:34.080> switch<02:03:34.480> from<02:03:34.800> optimized\nneeds to change to switch from optimized\nneeds to change to switch from optimized unoptimized.<02:03:36.159> It's<02:03:36.400> all<02:03:36.480> in<02:03:36.639> the<02:03:36.719> binary.\nunoptimized. It's all in the binary.\nunoptimized. It's all in the binary. It's<02:03:37.199> all<02:03:37.280> code<02:03:37.440> the<02:03:37.599> debugger<02:03:37.920> can<02:03:38.080> refer<02:03:38.320> to.\nIt's all code the debugger can refer to.\nIt's all code the debugger can refer to. So<02:03:38.639> all<02:03:38.719> it<02:03:38.880> has<02:03:38.960> to<02:03:39.119> do<02:03:39.199> is<02:03:39.360> change<02:03:39.599> that\nSo all it has to do is change that\nSo all it has to do is change that state.<02:03:40.719> And<02:03:41.360> you<02:03:41.520> know<02:03:41.679> it's<02:03:42.000> it<02:03:42.239> seems<02:03:42.400> like\nstate. And you know it's it seems like\nstate. And you know it's it seems like it'd<02:03:42.719> be<02:03:42.800> a<02:03:42.960> pretty<02:03:43.119> minor<02:03:43.440> reverse\nit'd be a pretty minor reverse\nit'd be a pretty minor reverse engineering<02:03:44.239> task<02:03:44.480> to<02:03:44.719> actually<02:03:44.960> find<02:03:45.119> out\nengineering task to actually find out\nengineering task to actually find out what<02:03:45.760> you<02:03:46.000> need<02:03:46.080> to<02:03:46.239> do<02:03:46.320> for<02:03:46.480> that<02:03:46.639> if<02:03:46.880> nobody\nwhat you need to do for that if nobody\nwhat you need to do for that if nobody if<02:03:47.679> if<02:03:47.920> they<02:03:48.080> tell<02:03:48.239> you<02:03:48.480> nothing,<02:03:48.800> which<02:03:49.040> they\nif if they tell you nothing, which they\nif if they tell you nothing, which they might<02:03:49.360> tell<02:03:49.440> you<02:03:49.599> more<02:03:49.760> than<02:03:49.840> that.<02:03:50.320> So,<02:03:51.199> um,\nmight tell you more than that. So, um,\nmight tell you more than that. So, um, so<02:03:52.239> yeah,<02:03:52.480> hopefully<02:03:53.679> that<02:03:54.000> answers<02:03:54.400> the\nso yeah, hopefully that answers the\nso yeah, hopefully that answers the question.\nquestion.\nquestion. >> Yeah.\n>> Yeah.\n>> Yeah. So,<02:03:57.920> I<02:03:58.239> think<02:03:58.400> this<02:03:58.560> is<02:03:58.719> also<02:03:59.040> kind<02:03:59.199> of<02:03:59.280> what\nSo, I think this is also kind of what\nSo, I think this is also kind of what you're<02:03:59.679> planning<02:03:59.920> with<02:04:00.239> workbench<02:04:00.960> back<02:04:01.360> in\nyou're planning with workbench back in\nyou're planning with workbench back in the<02:04:01.760> background,<02:04:02.400> but<02:04:02.960> um<02:04:03.599> now<02:04:03.760> that<02:04:03.920> you're\nthe background, but um now that you're\nthe background, but um now that you're blurring<02:04:04.560> the<02:04:04.800> lines<02:04:05.199> between<02:04:05.760> like<02:04:06.080> the\nblurring the lines between like the\nblurring the lines between like the debuggy<02:04:07.760> inspection<02:04:08.400> and<02:04:08.719> inspecting<02:04:09.440> files,\ndebuggy inspection and inspecting files,\ndebuggy inspection and inspecting files, to<02:04:11.599> what<02:04:11.840> degree<02:04:12.560> are<02:04:12.800> you<02:04:13.040> planning<02:04:13.360> to<02:04:13.599> kind\nto what degree are you planning to kind\nto what degree are you planning to kind of<02:04:14.560> I<02:04:15.199> might<02:04:15.599> open<02:04:15.840> up<02:04:16.000> a<02:04:16.159> hex<02:04:16.480> editor<02:04:16.800> to<02:04:17.040> look\nof I might open up a hex editor to look\nof I might open up a hex editor to look at<02:04:17.360> the<02:04:17.520> file,<02:04:18.000> but<02:04:18.320> if<02:04:19.119> rap<02:04:19.440> DBG<02:04:19.920> is<02:04:20.080> like<02:04:20.239> a\nat the file, but if rap DBG is like a\nat the file, but if rap DBG is like a really<02:04:20.639> awesome<02:04:20.960> hex<02:04:21.360> editor<02:04:21.760> and<02:04:21.920> I<02:04:22.080> can<02:04:22.239> just\nreally awesome hex editor and I can just\nreally awesome hex editor and I can just drag<02:04:22.719> a<02:04:22.880> file<02:04:23.199> into<02:04:23.440> it,<02:04:23.679> right?\ndrag a file into it, right?\ndrag a file into it, right? >> Yep.\n>> Yep.\n>> Yep. >> You<02:04:24.880> already<02:04:25.199> can.<02:04:25.520> Yeah.\n>> You already can. Yeah.\n>> You already can. Yeah. >> Yeah.<02:04:26.000> Exactly.<02:04:26.800> So<02:04:27.119> I<02:04:27.440> think<02:04:27.679> about<02:04:27.840> that<02:04:28.000> and\n>> Yeah. Exactly. So I think about that and\n>> Yeah. Exactly. So I think about that and then<02:04:28.560> a<02:04:28.719> lot<02:04:28.880> of<02:04:28.960> people<02:04:29.119> obviously<02:04:29.599> ask\nthen a lot of people obviously ask\nthen a lot of people obviously ask >> okay<02:04:31.040> this<02:04:31.280> is<02:04:31.440> awesome<02:04:31.840> but<02:04:32.480> could<02:04:32.719> I<02:04:32.960> edit<02:04:33.360> my\n>> okay this is awesome but could I edit my\n>> okay this is awesome but could I edit my text<02:04:34.239> rap<02:04:35.360> you<02:04:35.520> know<02:04:36.080> do<02:04:36.239> you<02:04:36.560> have<02:04:36.800> plans<02:04:37.199> to\ntext rap you know do you have plans to\ntext rap you know do you have plans to kind<02:04:37.760> of<02:04:37.920> go<02:04:38.239> down<02:04:38.639> that<02:04:38.960> road<02:04:39.280> more<02:04:39.599> with<02:04:39.920> rapg\nkind of go down that road more with rapg\nkind of go down that road more with rapg or<02:04:41.360> is<02:04:41.440> that<02:04:41.679> more<02:04:41.840> of<02:04:42.000> a<02:04:42.320> long-term<02:04:43.520> different\nor is that more of a long-term different\nor is that more of a long-term different project?<02:04:44.880> Yeah,<02:04:45.119> I<02:04:45.360> think<02:04:45.599> so.<02:04:46.159> Um,\nproject? Yeah, I think so. Um,\nproject? Yeah, I think so. Um, obviously<02:04:48.639> there<02:04:48.880> are<02:04:49.199> higher<02:04:49.599> priorities\nobviously there are higher priorities\nobviously there are higher priorities than<02:04:50.239> making<02:04:50.400> it<02:04:50.560> a<02:04:50.719> text<02:04:50.880> editor,<02:04:51.280> but<02:04:51.440> I\nthan making it a text editor, but I\nthan making it a text editor, but I think<02:04:51.760> like<02:04:52.080> it's<02:04:52.400> definitely<02:04:52.960> clear<02:04:53.520> that\nthink like it's definitely clear that\nthink like it's definitely clear that you<02:04:54.320> want<02:04:54.480> the<02:04:54.719> ability<02:04:54.960> to<02:04:55.119> mutate<02:04:55.679> data<02:04:56.239> as\nyou want the ability to mutate data as\nyou want the ability to mutate data as well.<02:04:56.960> So<02:04:57.119> it's<02:04:57.360> not<02:04:57.440> just<02:04:57.679> about<02:04:57.920> viewing.\nwell. So it's not just about viewing.\nwell. So it's not just about viewing. Like<02:04:58.560> the<02:04:58.719> visualizers<02:04:59.199> aren't<02:04:59.360> just<02:04:59.520> for\nLike the visualizers aren't just for\nLike the visualizers aren't just for viewing,<02:04:59.920> they're<02:05:00.159> for<02:05:00.320> writing.<02:05:01.199> Um,<02:05:01.520> so<02:05:01.840> hex\nviewing, they're for writing. Um, so hex\nviewing, they're for writing. Um, so hex editor's<02:05:02.719> good<02:05:02.960> example<02:05:03.360> like<02:05:03.920> when<02:05:04.080> you're\neditor's good example like when you're\neditor's good example like when you're viewing<02:05:04.639> the<02:05:04.800> grid<02:05:04.960> of<02:05:05.040> bytes,<02:05:05.360> it<02:05:05.520> sucks<02:05:05.760> if\nviewing the grid of bytes, it sucks if\nviewing the grid of bytes, it sucks if you<02:05:06.000> can't<02:05:06.159> actually<02:05:06.480> like<02:05:06.800> in<02:05:06.960> the<02:05:07.040> RAD\nyou can't actually like in the RAD\nyou can't actually like in the RAD debugger,<02:05:07.679> you<02:05:07.840> can't<02:05:08.000> currently<02:05:08.320> mutate<02:05:08.639> the\ndebugger, you can't currently mutate the\ndebugger, you can't currently mutate the bytes,<02:05:09.040> but<02:05:09.199> you<02:05:09.360> really<02:05:09.520> want<02:05:09.679> to.<02:05:10.080> And<02:05:10.320> so<02:05:10.880> um\nbytes, but you really want to. And so um\nbytes, but you really want to. And so um similarly<02:05:11.520> with<02:05:11.679> images<02:05:12.080> like<02:05:12.239> if<02:05:12.400> you<02:05:12.560> can\nsimilarly with images like if you can\nsimilarly with images like if you can like<02:05:12.880> change<02:05:13.119> the<02:05:13.280> values<02:05:13.760> in<02:05:13.920> the<02:05:14.000> watch\nlike change the values in the watch\nlike change the values in the watch window<02:05:14.400> is<02:05:14.560> the<02:05:14.639> same<02:05:14.800> thing.<02:05:14.960> You<02:05:15.119> can<02:05:15.199> edit\nwindow is the same thing. You can edit\nwindow is the same thing. You can edit values.<02:05:16.480> So<02:05:16.719> I<02:05:16.880> think<02:05:16.960> that<02:05:17.119> should<02:05:17.280> all<02:05:17.440> be\nvalues. So I think that should all be\nvalues. So I think that should all be possible.<02:05:17.920> So<02:05:18.080> the<02:05:18.239> text<02:05:18.480> viewer<02:05:18.880> really\npossible. So the text viewer really\npossible. So the text viewer really should<02:05:19.199> become<02:05:19.440> the<02:05:19.599> text<02:05:19.760> editor<02:05:20.800> um<02:05:21.199> at<02:05:21.440> the\nshould become the text editor um at the\nshould become the text editor um at the limit.<02:05:22.000> I<02:05:22.239> think<02:05:23.280> um<02:05:23.599> I'm<02:05:23.920> not<02:05:24.080> going<02:05:24.239> to\nlimit. I think um I'm not going to\nlimit. I think um I'm not going to prioritize<02:05:25.119> it<02:05:25.280> because<02:05:25.440> there's<02:05:25.599> a<02:05:25.760> lot<02:05:25.840> of\nprioritize it because there's a lot of\nprioritize it because there's a lot of other<02:05:26.080> things<02:05:26.320> to<02:05:26.560> happen<02:05:26.800> first.<02:05:27.280> But<02:05:27.440> I\nother things to happen first. But I\nother things to happen first. But I think<02:05:27.679> like<02:05:27.920> yeah,<02:05:28.159> it's<02:05:28.320> some<02:05:28.560> it's<02:05:29.119> I<02:05:29.360> think\nthink like yeah, it's some it's I think\nthink like yeah, it's some it's I think someday<02:05:29.840> that'll<02:05:30.159> fall<02:05:30.320> in<02:05:30.480> there<02:05:30.719> even<02:05:30.960> if\nsomeday that'll fall in there even if\nsomeday that'll fall in there even if like<02:05:31.679> you<02:05:31.840> know<02:05:32.000> a<02:05:32.159> lot<02:05:32.239> of<02:05:33.040> there's<02:05:33.280> a<02:05:33.360> lot<02:05:33.440> of\nlike you know a lot of there's a lot of\nlike you know a lot of there's a lot of good<02:05:33.679> arguments<02:05:34.000> against<02:05:34.400> having<02:05:34.800> a<02:05:35.040> text\ngood arguments against having a text\ngood arguments against having a text editor<02:05:36.080> like<02:05:36.320> as<02:05:36.480> a<02:05:36.639> mainline<02:05:37.040> thing<02:05:37.199> that's\neditor like as a mainline thing that's\neditor like as a mainline thing that's always<02:05:37.679> on<02:05:37.920> in<02:05:38.080> a<02:05:38.239> debugger.<02:05:38.719> But<02:05:38.880> it<02:05:39.040> so<02:05:39.280> maybe\nalways on in a debugger. But it so maybe\nalways on in a debugger. But it so maybe it's<02:05:39.760> you<02:05:39.920> know<02:05:40.560> maybe<02:05:40.719> there's<02:05:40.960> still<02:05:41.040> a<02:05:41.199> mode\nit's you know maybe there's still a mode\nit's you know maybe there's still a mode switch<02:05:41.679> where<02:05:42.000> all<02:05:42.159> your<02:05:42.320> text<02:05:42.639> becomes<02:05:43.119> read\nswitch where all your text becomes read\nswitch where all your text becomes read only<02:05:43.760> when<02:05:44.080> you're<02:05:44.239> not<02:05:44.480> editing<02:05:44.880> it<02:05:45.119> or<02:05:45.280> or\nonly when you're not editing it or or\nonly when you're not editing it or or when<02:05:45.760> you're<02:05:45.920> debugging<02:05:46.320> it<02:05:46.480> rather.<02:05:46.880> Uh<02:05:47.119> so\nwhen you're debugging it rather. Uh so\nwhen you're debugging it rather. Uh so you<02:05:47.440> don't<02:05:47.520> like<02:05:47.840> add<02:05:48.080> a<02:05:48.239> new<02:05:48.400> line<02:05:48.480> and<02:05:48.719> all\nyou don't like add a new line and all\nyou don't like add a new line and all your<02:05:48.880> debug<02:05:49.199> info<02:05:49.440> is<02:05:49.520> broken<02:05:49.760> or<02:05:49.920> whatever.\nyour debug info is broken or whatever.\nyour debug info is broken or whatever. It's<02:05:50.320> like<02:05:50.480> that<02:05:50.719> stupid<02:05:51.119> problem.<02:05:51.520> But<02:05:52.239> um\nIt's like that stupid problem. But um\nIt's like that stupid problem. But um but<02:05:53.119> yeah,<02:05:53.199> I<02:05:53.360> think<02:05:53.440> at<02:05:53.679> the<02:05:53.760> limit<02:05:54.080> it<02:05:54.239> turns\nbut yeah, I think at the limit it turns\nbut yeah, I think at the limit it turns into<02:05:54.719> that.<02:05:55.040> It<02:05:55.280> really<02:05:55.440> does.<02:05:56.080> Yeah.<02:05:56.400> So<02:05:56.639> just\ninto that. It really does. Yeah. So just\ninto that. It really does. Yeah. So just to<02:05:56.960> add<02:05:57.119> on<02:05:57.280> to<02:05:57.440> that<02:05:57.599> actually<02:05:57.840> a<02:05:58.080> thought<02:05:59.280> uh\nto add on to that actually a thought uh\nto add on to that actually a thought uh one<02:06:01.119> really<02:06:01.360> good<02:06:01.599> argument<02:06:02.000> for<02:06:02.320> doing<02:06:02.560> this\none really good argument for doing this\none really good argument for doing this is<02:06:03.280> that<02:06:03.599> all<02:06:03.840> these<02:06:04.239> type<02:06:04.639> views<02:06:04.960> like<02:06:05.119> for\nis that all these type views like for\nis that all these type views like for example<02:06:05.599> the<02:06:05.920> view<02:06:06.239> rules<02:06:06.560> and<02:06:06.800> stuff<02:06:06.960> like\nexample the view rules and stuff like\nexample the view rules and stuff like that\nthat\nthat >> that<02:06:08.239> looks<02:06:08.560> a<02:06:08.880> lot<02:06:09.199> like<02:06:10.080> so<02:06:10.239> for<02:06:10.400> example<02:06:10.719> 101\n>> that looks a lot like so for example 101\n>> that looks a lot like so for example 101 editor<02:06:12.239> templates<02:06:13.119> that<02:06:13.360> they<02:06:13.599> use<02:06:13.760> for\neditor templates that they use for\neditor templates that they use for inspecting<02:06:14.560> files.<02:06:15.199> Yeah.<02:06:15.520> So<02:06:15.679> if<02:06:15.840> you<02:06:16.000> could\ninspecting files. Yeah. So if you could\ninspecting files. Yeah. So if you could have<02:06:16.400> like<02:06:17.040> a<02:06:17.360> description<02:06:17.760> of<02:06:18.000> a<02:06:18.159> binary<02:06:18.639> type\nhave like a description of a binary type\nhave like a description of a binary type that's<02:06:19.199> like<02:06:19.440> this<02:06:19.599> is<02:06:19.840> my<02:06:20.080> type<02:06:20.719> and<02:06:20.960> you\nthat's like this is my type and you\nthat's like this is my type and you could<02:06:21.280> look<02:06:21.440> at<02:06:21.599> it<02:06:21.840> in<02:06:22.480> memory<02:06:22.880> in<02:06:23.040> a<02:06:23.599> debugger\ncould look at it in memory in a debugger\ncould look at it in memory in a debugger but<02:06:24.320> you<02:06:24.480> could<02:06:24.639> also<02:06:25.119> look<02:06:25.280> at<02:06:25.440> it<02:06:25.760> in<02:06:26.000> a<02:06:26.239> file.\nbut you could also look at it in a file.\nbut you could also look at it in a file. I<02:06:27.119> think<02:06:27.599> really<02:06:28.000> awesome.\nI think really awesome.\nI think really awesome. >> Yes.<02:06:28.960> Yeah.<02:06:29.360> For<02:06:29.599> sure.<02:06:29.840> Agreed.<02:06:30.320> Yep.\n>> Yes. Yeah. For sure. Agreed. Yep.\n>> Yes. Yeah. For sure. Agreed. Yep. >> Like<02:06:32.560> if<02:06:32.800> you<02:06:32.960> keep<02:06:33.119> adding<02:06:33.520> like<02:06:33.840> editing\n>> Like if you keep adding like editing\n>> Like if you keep adding like editing features<02:06:34.639> to<02:06:34.800> the<02:06:34.960> visualizers,<02:06:35.599> you're\nfeatures to the visualizers, you're\nfeatures to the visualizers, you're going<02:06:35.840> to<02:06:36.000> run<02:06:36.159> into<02:06:36.320> antitrust<02:06:36.960> issues\ngoing to run into antitrust issues\ngoing to run into antitrust issues sooner<02:06:37.440> or<02:06:37.520> later<02:06:37.760> because<02:06:38.000> like<02:06:38.159> oh<02:06:38.320> no,<02:06:38.560> I'm\nsooner or later because like oh no, I'm\nsooner or later because like oh no, I'm not<02:06:38.880> only<02:06:39.119> eating<02:06:39.360> all<02:06:39.440> the<02:06:39.599> buggers<02:06:39.920> and<02:06:40.079> I'm\nnot only eating all the buggers and I'm\nnot only eating all the buggers and I'm also<02:06:40.400> eating<02:06:40.560> the<02:06:40.719> paint<02:06:40.960> programs<02:06:41.280> and<02:06:41.440> the\nalso eating the paint programs and the\nalso eating the paint programs and the hex<02:06:41.760> editors<02:06:42.239> and<02:06:42.400> the<02:06:42.719> like\nhex editors and the like\nhex editors and the like Yeah,\nYeah,\nYeah, >> it<02:06:47.599> is.<02:06:47.840> It<02:06:48.000> is<02:06:48.239> red<02:06:48.400> OS.<02:06:48.719> It's<02:06:48.880> just<02:06:49.920> probably\n>> it is. It is red OS. It's just probably\n>> it is. It is red OS. It's just probably >> Yeah.\n>> Yeah.\n>> Yeah. >> So<02:06:51.679> my<02:06:52.000> question<02:06:52.239> is<02:06:53.280> how<02:06:53.440> do<02:06:53.599> you<02:06:53.760> annotate\n>> So my question is how do you annotate\n>> So my question is how do you annotate types?<02:06:55.440> Uh<02:06:55.760> say<02:06:55.920> that<02:06:56.079> you<02:06:56.239> have<02:06:56.320> a<02:06:56.560> project\ntypes? Uh say that you have a project\ntypes? Uh say that you have a project with<02:06:57.280> a<02:06:57.440> lot<02:06:57.599> of<02:06:57.679> textures<02:06:58.880> and<02:06:59.119> but<02:06:59.360> you<02:06:59.520> know\nwith a lot of textures and but you know\nwith a lot of textures and but you know that<02:07:00.480> your<02:07:00.639> own<02:07:00.880> type<02:07:01.599> like<02:07:01.840> can<02:07:02.000> you<02:07:02.159> save<02:07:02.400> it\nthat your own type like can you save it\nthat your own type like can you save it on<02:07:02.639> a<02:07:02.800> point<02:07:03.119> basis<02:07:03.599> so<02:07:03.920> that<02:07:04.159> you<02:07:04.320> can<02:07:04.480> always\non a point basis so that you can always\non a point basis so that you can always like<02:07:05.040> look<02:07:05.280> at<02:07:05.440> your<02:07:05.679> pictures<02:07:06.480> or<02:07:06.719> you<02:07:06.880> have\nlike look at your pictures or you have\nlike look at your pictures or you have to<02:07:07.440> always<02:07:07.840> like<02:07:08.159> enter<02:07:08.480> it<02:07:09.119> when<02:07:09.360> you<02:07:09.520> start\nto always like enter it when you start\nto always like enter it when you start having<02:07:10.079> the<02:07:10.159> B.\nhaving the B.\nhaving the B. >> Right.<02:07:11.440> So,<02:07:12.159> um,<02:07:13.360> for<02:07:13.599> some<02:07:13.760> reason,<02:07:14.079> you\n>> Right. So, um, for some reason, you\n>> Right. So, um, for some reason, you know,<02:07:14.320> you<02:07:14.480> asked<02:07:14.639> that<02:07:14.880> question<02:07:15.040> and<02:07:15.280> I\nknow, you asked that question and I\nknow, you asked that question and I thought<02:07:15.599> I<02:07:15.760> had<02:07:15.840> a<02:07:16.079> slide<02:07:16.320> about<02:07:16.480> it.<02:07:17.360> Maybe<02:07:17.599> I\nthought I had a slide about it. Maybe I\nthought I had a slide about it. Maybe I just<02:07:18.000> had<02:07:18.159> a<02:07:18.320> sentence<02:07:18.560> on<02:07:18.719> my<02:07:18.800> notes<02:07:19.040> that<02:07:19.119> I\njust had a sentence on my notes that I\njust had a sentence on my notes that I forgot<02:07:19.520> to<02:07:19.599> say,<02:07:19.840> but,<02:07:20.719> um,<02:07:21.199> even<02:07:21.440> though<02:07:21.599> I<02:07:21.760> I\nforgot to say, but, um, even though I I\nforgot to say, but, um, even though I I realized<02:07:22.320> I<02:07:22.480> was<02:07:22.639> reading,<02:07:23.440> but<02:07:24.159> uh,<02:07:24.320> but\nrealized I was reading, but uh, but\nrealized I was reading, but uh, but yeah,<02:07:24.639> I<02:07:24.800> guess<02:07:24.880> I<02:07:25.040> forgot<02:07:25.280> to<02:07:25.360> say<02:07:25.520> it<02:07:25.679> or<02:07:26.159> it\nyeah, I guess I forgot to say it or it\nyeah, I guess I forgot to say it or it maybe<02:07:26.880> I<02:07:27.199> misremembered<02:07:27.760> making<02:07:27.920> a<02:07:28.079> slide<02:07:28.320> for\nmaybe I misremembered making a slide for\nmaybe I misremembered making a slide for it.<02:07:28.719> But<02:07:29.520> point<02:07:29.760> being<02:07:30.560> um<02:07:31.040> yes<02:07:31.280> there<02:07:31.440> is<02:07:31.599> a\nit. But point being um yes there is a\nit. But point being um yes there is a way<02:07:31.840> to<02:07:31.920> annotate<02:07:32.400> that<02:07:32.719> types<02:07:33.199> should<02:07:33.440> be<02:07:33.679> ex\nway to annotate that types should be ex\nway to annotate that types should be ex expanded<02:07:35.520> in<02:07:35.760> some<02:07:36.000> particular<02:07:36.480> way<02:07:36.639> like\nexpanded in some particular way like\nexpanded in some particular way like when<02:07:37.119> and<02:07:37.360> the<02:07:37.599> way<02:07:37.679> that<02:07:37.920> works<02:07:38.239> basically<02:07:38.560> is\nwhen and the way that works basically is\nwhen and the way that works basically is because<02:07:39.760> so<02:07:40.000> what<02:07:40.159> you<02:07:40.320> would<02:07:40.400> enter<02:07:40.719> manually\nbecause so what you would enter manually\nbecause so what you would enter manually when<02:07:41.280> you<02:07:41.360> start<02:07:41.440> a<02:07:41.599> debugging<02:07:42.000> session<02:07:42.239> is\nwhen you start a debugging session is\nwhen you start a debugging session is like<02:07:42.560> say<02:07:42.639> you've<02:07:42.800> got<02:07:42.880> your<02:07:43.040> texture<02:07:43.440> type<02:07:44.560> um\nlike say you've got your texture type um\nlike say you've got your texture type um and<02:07:45.280> it's<02:07:45.599> or<02:07:45.840> it's<02:07:46.000> like<02:07:46.079> a<02:07:46.239> loaded<02:07:46.480> bit<02:07:46.719> map\nand it's or it's like a loaded bit map\nand it's or it's like a loaded bit map type<02:07:47.119> because<02:07:47.280> it's<02:07:47.360> all<02:07:47.520> CPU<02:07:47.840> memory\ntype because it's all CPU memory\ntype because it's all CPU memory obviously<02:07:48.560> you<02:07:48.719> need<02:07:48.800> to<02:07:48.960> do<02:07:49.040> other<02:07:49.199> stuff<02:07:49.360> for\nobviously you need to do other stuff for\nobviously you need to do other stuff for GPU<02:07:49.840> memory<02:07:50.079> but<02:07:50.239> let's<02:07:50.320> say<02:07:50.400> you've<02:07:50.560> got<02:07:50.639> a\nGPU memory but let's say you've got a\nGPU memory but let's say you've got a loaded<02:07:50.960> bit<02:07:51.199> map<02:07:51.440> or<02:07:51.599> decoded<02:07:52.000> bit<02:07:52.239> map<02:07:52.400> type\nloaded bit map or decoded bit map type\nloaded bit map or decoded bit map type or<02:07:52.800> something<02:07:52.960> like<02:07:53.040> that<02:07:53.679> you<02:07:53.840> have<02:07:53.920> an\nor something like that you have an\nor something like that you have an evaluation<02:07:54.480> of<02:07:54.639> it<02:07:55.280> in<02:07:55.440> order<02:07:55.599> to<02:07:55.840> start\nevaluation of it in order to start\nevaluation of it in order to start visualizing<02:07:56.480> it<02:07:56.639> as<02:07:56.719> a<02:07:56.880> bit<02:07:57.040> map<02:07:57.280> you<02:07:57.440> would\nvisualizing it as a bit map you would\nvisualizing it as a bit map you would say<02:07:57.920> Okay,<02:07:58.480> call<02:07:58.800> the<02:07:59.040> bitmap<02:07:59.520> visualizer\nsay Okay, call the bitmap visualizer\nsay Okay, call the bitmap visualizer with<02:08:00.480> like<02:08:00.880> you<02:08:01.040> know<02:08:01.119> your<02:08:01.599> loaded<02:08:01.920> or\nwith like you know your loaded or\nwith like you know your loaded or decoded<02:08:02.560> bitmap<02:08:03.199> data<02:08:03.599> and<02:08:03.840> then<02:08:04.000> maybe\ndecoded bitmap data and then maybe\ndecoded bitmap data and then maybe decoded<02:08:04.639> bitmap.width<02:08:05.360> and<02:08:05.520> then<02:08:05.920> height.<02:08:07.199> Um\ndecoded bitmap.width and then height. Um\ndecoded bitmap.width and then height. Um and<02:08:08.560> so<02:08:08.800> the<02:08:09.119> the<02:08:09.520> mechanism<02:08:10.000> I<02:08:10.239> have<02:08:10.400> in<02:08:10.560> the\nand so the the mechanism I have in the\nand so the the mechanism I have in the rad<02:08:10.880> debugger<02:08:11.360> to<02:08:11.520> support<02:08:11.840> that<02:08:12.320> associated\nrad debugger to support that associated\nrad debugger to support that associated with<02:08:12.880> type<02:08:13.119> info<02:08:13.760> is<02:08:14.000> just<02:08:14.239> a<02:08:14.880> the<02:08:15.119> visualizers\nwith type info is just a the visualizers\nwith type info is just a the visualizers to<02:08:15.920> the<02:08:16.079> user<02:08:16.639> facing<02:08:17.040> thing.<02:08:17.360> I<02:08:17.599> call<02:08:17.679> them\nto the user facing thing. I call them\nto the user facing thing. I call them lenses<02:08:18.239> in<02:08:18.400> the<02:08:18.480> code<02:08:18.639> but<02:08:18.880> to<02:08:19.040> the<02:08:19.119> users\nlenses in the code but to the users\nlenses in the code but to the users they're<02:08:19.679> just<02:08:19.840> called<02:08:20.000> views.<02:08:21.360> Um<02:08:22.000> and<02:08:22.239> the\nthey're just called views. Um and the\nthey're just called views. Um and the feature<02:08:22.639> in<02:08:22.719> the<02:08:22.800> radook<02:08:23.199> is<02:08:23.360> called<02:08:23.440> a<02:08:23.599> type\nfeature in the radook is called a type\nfeature in the radook is called a type view.<02:08:24.159> And<02:08:24.320> the<02:08:24.480> type<02:08:24.719> view<02:08:24.960> is<02:08:25.119> just\nview. And the type view is just\nview. And the type view is just basically<02:08:25.679> saying<02:08:26.719> here's<02:08:26.960> a<02:08:27.119> type\nbasically saying here's a type\nbasically saying here's a type expression<02:08:28.560> and<02:08:28.880> if<02:08:29.199> you<02:08:29.360> evaluate<02:08:29.920> something\nexpression and if you evaluate something\nexpression and if you evaluate something as<02:08:30.560> this<02:08:30.800> type,<02:08:31.440> I<02:08:31.679> want<02:08:31.840> you<02:08:32.000> to<02:08:32.159> actually\nas this type, I want you to actually\nas this type, I want you to actually evaluate<02:08:32.960> this<02:08:33.199> expression<02:08:33.920> instead.<02:08:35.280> And\nevaluate this expression instead. And\nevaluate this expression instead. And because<02:08:36.800> each<02:08:37.119> expression<02:08:38.159> can<02:08:39.040> um<02:08:40.079> can\nbecause each expression can um can\nbecause each expression can um can include<02:08:40.719> the<02:08:40.960> visualizer<02:08:42.159> uh<02:08:42.560> selection<02:08:42.960> and\ninclude the visualizer uh selection and\ninclude the visualizer uh selection and and<02:08:43.599> parameterizations,<02:08:44.639> you<02:08:44.800> can<02:08:44.880> say,\nand parameterizations, you can say,\nand parameterizations, you can say, okay,<02:08:45.280> I've<02:08:45.440> got<02:08:45.520> this<02:08:45.679> decoded<02:08:46.079> bitmap<02:08:46.560> type\nokay, I've got this decoded bitmap type\nokay, I've got this decoded bitmap type uh<02:08:48.079> visual.<02:08:48.560> Oh<02:08:48.719> yeah,<02:08:48.880> and<02:08:49.040> the<02:08:49.280> second<02:08:49.440> part\nuh visual. Oh yeah, and the second part\nuh visual. Oh yeah, and the second part of<02:08:49.679> it,<02:08:49.920> this<02:08:50.159> expression<02:08:50.480> can<02:08:50.719> refer<02:08:50.960> to<02:08:51.040> the\nof it, this expression can refer to the\nof it, this expression can refer to the original<02:08:51.599> expression.<02:08:52.320> So<02:08:52.719> basically<02:08:53.040> you\noriginal expression. So basically you\noriginal expression. So basically you say<02:08:53.679> decode<02:08:54.000> a<02:08:54.079> bit<02:08:54.320> map<02:08:54.639> is<02:08:54.880> my<02:08:55.040> type<02:08:55.360> and<02:08:55.599> the\nsay decode a bit map is my type and the\nsay decode a bit map is my type and the way<02:08:55.840> I<02:08:56.000> want<02:08:56.079> to<02:08:56.159> visualize<02:08:56.480> that<02:08:56.800> is<02:08:57.040> bit<02:08:57.360> map\nway I want to visualize that is bit map\nway I want to visualize that is bit map and<02:08:58.000> then<02:08:58.079> you<02:08:58.239> can<02:08:58.400> even<02:08:58.560> just<02:08:58.639> refer<02:08:58.880> to<02:08:58.960> the\nand then you can even just refer to the\nand then you can even just refer to the members<02:08:59.360> by<02:08:59.520> name.<02:08:59.679> So<02:08:59.760> you<02:08:59.840> can<02:08:59.920> say<02:09:00.079> data\nmembers by name. So you can say data\nmembers by name. So you can say data width<02:09:00.719> height<02:09:01.199> close<02:09:02.239> and<02:09:02.480> then<02:09:03.199> that<02:09:03.520> can\nwidth height close and then that can\nwidth height close and then that can either<02:09:03.840> be<02:09:04.000> saved<02:09:04.239> in<02:09:04.400> your<02:09:04.560> program.<02:09:05.599> Um<02:09:06.239> we\neither be saved in your program. Um we\neither be saved in your program. Um we have<02:09:06.480> a<02:09:06.639> header<02:09:06.960> library<02:09:07.280> where<02:09:07.440> you<02:09:07.599> just\nhave a header library where you just\nhave a header library where you just like<02:09:07.920> say<02:09:08.079> red<02:09:08.320> imageg<02:09:08.639> type<02:09:08.800> view<02:09:09.040> decode<02:09:09.280> a\nlike say red imageg type view decode a\nlike say red imageg type view decode a bit<02:09:09.679> map<02:09:10.079> bit<02:09:10.400> map<02:09:10.800> base<02:09:11.040> width<02:09:11.280> height.<02:09:12.159> Um<02:09:12.480> or\nbit map bit map base width height. Um or\nbit map bit map base width height. Um or it<02:09:12.800> can<02:09:12.880> be<02:09:12.960> in<02:09:13.119> the<02:09:13.199> debugger<02:09:13.679> config<02:09:14.560> and\nit can be in the debugger config and\nit can be in the debugger config and then<02:09:15.040> either<02:09:15.360> way<02:09:15.679> when<02:09:15.840> the<02:09:16.000> debugger<02:09:16.320> loads\nthen either way when the debugger loads\nthen either way when the debugger loads the<02:09:16.719> program<02:09:16.960> it'll<02:09:17.280> see<02:09:17.360> that<02:09:17.599> type<02:09:17.840> view<02:09:18.000> and\nthe program it'll see that type view and\nthe program it'll see that type view and it<02:09:18.320> will<02:09:18.480> apply<02:09:18.719> it<02:09:18.880> to<02:09:19.040> all<02:09:19.360> evaluations<02:09:19.920> of\nit will apply it to all evaluations of\nit will apply it to all evaluations of that<02:09:20.239> type.<02:09:20.639> So<02:09:20.800> then<02:09:21.040> even<02:09:21.199> if<02:09:21.360> you<02:09:21.520> like\nthat type. So then even if you like\nthat type. So then even if you like hover<02:09:22.000> it<02:09:22.400> in<02:09:22.719> your<02:09:22.880> source<02:09:23.119> code,<02:09:23.360> you'll<02:09:23.520> see\nhover it in your source code, you'll see\nhover it in your source code, you'll see the<02:09:23.760> bit<02:09:24.000> map\nthe bit map\nthe bit map >> and<02:09:26.079> and<02:09:26.239> it's<02:09:26.480> a<02:09:26.719> nice<02:09:26.880> example<02:09:27.119> of<02:09:27.280> how<02:09:27.520> you\n>> and and it's a nice example of how you\n>> and and it's a nice example of how you think<02:09:27.920> about<02:09:28.159> the<02:09:28.400> whole<02:09:28.560> pipeline<02:09:28.960> of<02:09:29.199> like\nthink about the whole pipeline of like\nthink about the whole pipeline of like the<02:09:29.840> idea<02:09:30.079> is<02:09:30.239> to<02:09:30.400> reduce<02:09:30.719> the<02:09:30.960> total<02:09:31.199> round\nthe idea is to reduce the total round\nthe idea is to reduce the total round trip<02:09:31.760> time.<02:09:32.000> So<02:09:32.159> if<02:09:32.320> I<02:09:32.480> have<02:09:32.560> to<02:09:32.719> reenter<02:09:33.280> my\ntrip time. So if I have to reenter my\ntrip time. So if I have to reenter my expressions<02:09:34.159> every<02:09:34.400> time<02:09:34.639> that<02:09:34.880> sucks<02:09:35.280> how<02:09:35.440> do\nexpressions every time that sucks how do\nexpressions every time that sucks how do I<02:09:35.599> make<02:09:35.760> the<02:09:36.000> remove<02:09:36.159> that<02:09:36.400> and<02:09:36.480> you<02:09:36.719> came<02:09:36.800> up\nI make the remove that and you came up\nI make the remove that and you came up with<02:09:37.119> that<02:09:37.280> header\nwith that header\nwith that header >> including<02:09:38.400> the<02:09:38.480> header<02:09:38.719> and<02:09:38.880> giving<02:09:39.119> having\n>> including the header and giving having\n>> including the header and giving having that<02:09:40.000> special<02:09:40.400> visualiz<02:09:41.280> visualizer<02:09:41.920> type\nthat special visualiz visualizer type\nthat special visualiz visualizer type info\ninfo\ninfo >> in<02:09:43.280> the<02:09:43.440> program<02:09:43.760> so<02:09:44.000> that<02:09:44.159> it's<02:09:44.639> there<02:09:44.880> when\n>> in the program so that it's there when\n>> in the program so that it's there when you<02:09:45.280> run<02:09:45.360> it.\nyou run it.\nyou run it. >> Yep.<02:09:45.760> And<02:09:45.920> it's<02:09:46.159> the<02:09:46.239> same<02:09:46.400> thing<02:09:46.480> as<02:09:46.800> uh<02:09:46.880> NATV\n>> Yep. And it's the same thing as uh NATV\n>> Yep. And it's the same thing as uh NATV viz<02:09:47.520> as<02:09:47.599> well.<02:09:47.840> Like<02:09:48.079> it's<02:09:48.239> it's<02:09:48.639> uh<02:09:48.800> sort<02:09:48.960> of\nviz as well. Like it's it's uh sort of\nviz as well. Like it's it's uh sort of the<02:09:49.679> extension<02:09:50.079> and<02:09:50.239> cleaned<02:09:50.480> up<02:09:50.639> version<02:09:50.800> of\nthe extension and cleaned up version of\nthe extension and cleaned up version of NAV<02:09:51.199> viz.\nNAV viz.\nNAV viz. >> Yeah.<02:09:51.760> Like<02:09:52.480> LVM<02:09:53.119> like<02:09:53.520> debug<02:09:54.000> LDB<02:09:54.639> etc.<02:09:54.880> Other\n>> Yeah. Like LVM like debug LDB etc. Other\n>> Yeah. Like LVM like debug LDB etc. Other debuggers<02:09:55.440> have<02:09:55.599> that<02:09:55.760> but<02:09:55.920> it's<02:09:56.159> not<02:09:56.400> in<02:09:56.719> your\ndebuggers have that but it's not in your\ndebuggers have that but it's not in your program<02:09:58.000> like\nprogram like\nprogram like >> Yeah.<02:09:59.119> It's<02:09:59.280> a<02:09:59.360> big<02:09:59.440> problem.\n>> Yeah. It's a big problem.\n>> Yeah. It's a big problem. >> It's<02:09:59.920> always<02:10:00.079> a<02:10:00.320> sidec<02:10:00.719> car<02:10:01.119> thing.\n>> It's always a sidec car thing.\n>> It's always a sidec car thing. >> Yep.\n>> Yep.\n>> Yep. >> All<02:10:03.280> right.<02:10:04.320> Any<02:10:04.560> more<02:10:04.800> questions?<02:10:06.079> There\n>> All right. Any more questions? There\n>> All right. Any more questions? There were<02:10:06.480> more<02:10:06.639> hands.<02:10:07.840> Guess<02:10:08.079> they<02:10:08.239> got<02:10:08.400> tired.\nwere more hands. Guess they got tired.\nwere more hands. Guess they got tired. >> Yeah.<02:10:10.480> This<02:10:10.639> is<02:10:10.800> sort<02:10:10.880> of<02:10:10.960> a<02:10:11.119> followup<02:10:11.440> to<02:10:11.599> the\n>> Yeah. This is sort of a followup to the\n>> Yeah. This is sort of a followup to the file<02:10:12.639> visualizer<02:10:13.119> kind<02:10:13.280> of<02:10:13.360> question,<02:10:13.520> but\nfile visualizer kind of question, but\nfile visualizer kind of question, but did<02:10:13.920> you<02:10:14.000> ever<02:10:14.239> consider<02:10:14.480> dumping<02:10:14.800> the<02:10:14.960> data\ndid you ever consider dumping the data\ndid you ever consider dumping the data to<02:10:15.360> file<02:10:15.520> in<02:10:15.679> an<02:10:15.840> efficient<02:10:16.079> manner<02:10:16.320> so<02:10:16.480> you\nto file in an efficient manner so you\nto file in an efficient manner so you can<02:10:16.719> use<02:10:16.880> existing<02:10:17.280> programs?\ncan use existing programs?\ncan use existing programs? >> Um,\n>> Um,\n>> Um, I<02:10:20.719> mean<02:10:21.760> it's<02:10:22.000> sort<02:10:22.239> of<02:10:22.320> like<02:10:23.119> uh<02:10:24.000> the<02:10:24.239> problem\nI mean it's sort of like uh the problem\nI mean it's sort of like uh the problem once<02:10:24.880> you're<02:10:25.199> stretching<02:10:25.599> across<02:10:25.920> the\nonce you're stretching across the\nonce you're stretching across the program<02:10:26.400> boundary<02:10:26.800> is<02:10:27.040> that<02:10:27.199> the<02:10:27.440> operating\nprogram boundary is that the operating\nprogram boundary is that the operating system<02:10:28.079> primitives<02:10:28.560> that<02:10:28.800> you<02:10:29.119> that<02:10:29.440> are\nsystem primitives that you that are\nsystem primitives that you that are available<02:10:30.400> for<02:10:31.520> program<02:10:31.920> integration<02:10:32.880> are\navailable for program integration are\navailable for program integration are kind<02:10:33.280> of<02:10:33.360> too<02:10:33.599> weak<02:10:34.000> for<02:10:34.239> what<02:10:34.400> you<02:10:34.560> really\nkind of too weak for what you really\nkind of too weak for what you really need.<02:10:34.960> And<02:10:35.119> this<02:10:35.280> is<02:10:35.440> why<02:10:35.679> people<02:10:35.920> want\nneed. And this is why people want\nneed. And this is why people want integrated<02:10:36.800> development<02:10:37.199> environments<02:10:37.599> at\nintegrated development environments at\nintegrated development environments at all<02:10:38.320> is<02:10:38.480> because<02:10:38.719> their<02:10:38.960> text<02:10:39.199> editor<02:10:39.440> and\nall is because their text editor and\nall is because their text editor and debugger<02:10:40.000> and<02:10:40.159> like<02:10:40.320> all<02:10:40.400> these<02:10:40.639> other<02:10:40.719> things\ndebugger and like all these other things\ndebugger and like all these other things they<02:10:41.040> want<02:10:41.119> in<02:10:41.280> their<02:10:41.360> IDE.<02:10:42.400> Um<02:10:43.040> they're\nthey want in their IDE. Um they're\nthey want in their IDE. Um they're really<02:10:43.840> like<02:10:45.040> they<02:10:45.280> could<02:10:45.440> be<02:10:45.599> separate\nreally like they could be separate\nreally like they could be separate programs<02:10:46.239> in<02:10:46.480> principle,<02:10:47.280> but<02:10:47.520> it<02:10:47.760> seems<02:10:47.920> like\nprograms in principle, but it seems like\nprograms in principle, but it seems like the<02:10:48.480> the<02:10:49.119> tools<02:10:49.440> that<02:10:49.599> the<02:10:49.760> operating<02:10:50.079> system\nthe the tools that the operating system\nthe the tools that the operating system provides<02:10:50.719> for<02:10:50.880> these<02:10:51.119> programs<02:10:51.440> to<02:10:51.760> connect\nprovides for these programs to connect\nprovides for these programs to connect with<02:10:52.239> each<02:10:52.480> other.<02:10:52.880> They<02:10:53.119> seem<02:10:53.280> a<02:10:53.440> little<02:10:53.520> bit\nwith each other. They seem a little bit\nwith each other. They seem a little bit too<02:10:53.840> weak<02:10:54.159> and<02:10:54.400> like<02:10:54.639> not<02:10:54.880> rich<02:10:55.199> enough<02:10:55.520> to\ntoo weak and like not rich enough to\ntoo weak and like not rich enough to really<02:10:56.079> provide<02:10:56.400> what<02:10:56.639> people<02:10:56.880> want.<02:10:57.520> And<02:10:57.679> so\nreally provide what people want. And so\nreally provide what people want. And so people<02:10:58.800> want<02:10:58.960> an<02:10:59.119> IDE<02:10:59.520> for<02:10:59.679> it.<02:11:00.079> It's<02:11:00.239> pretty\npeople want an IDE for it. It's pretty\npeople want an IDE for it. It's pretty much<02:11:00.560> the<02:11:00.719> same<02:11:00.880> thing<02:11:01.040> here.<02:11:01.360> It's<02:11:01.599> like<02:11:01.840> once\nmuch the same thing here. It's like once\nmuch the same thing here. It's like once you<02:11:02.560> dump<02:11:02.880> stuff<02:11:03.040> to<02:11:03.280> files,<02:11:03.760> it's<02:11:04.079> sort<02:11:04.239> of\nyou dump stuff to files, it's sort of\nyou dump stuff to files, it's sort of like<02:11:04.960> you've<02:11:05.199> introduced<02:11:05.599> a<02:11:05.840> cash<02:11:06.000> eviction\nlike you've introduced a cash eviction\nlike you've introduced a cash eviction problem.<02:11:06.800> It's<02:11:06.960> like<02:11:07.119> do<02:11:07.199> we<02:11:07.360> just<02:11:07.520> leave\nproblem. It's like do we just leave\nproblem. It's like do we just leave those<02:11:07.840> files<02:11:08.079> there<02:11:08.239> forever?<02:11:09.040> How<02:11:09.199> do<02:11:09.360> we\nthose files there forever? How do we\nthose files there forever? How do we open<02:11:09.760> the<02:11:09.920> other<02:11:10.159> program?<02:11:10.560> Is<02:11:10.719> it<02:11:10.880> different\nopen the other program? Is it different\nopen the other program? Is it different for<02:11:11.280> every<02:11:11.520> program?<02:11:11.920> Like<02:11:12.159> how<02:11:12.560> I've<02:11:12.880> I've\nfor every program? Like how I've I've\nfor every program? Like how I've I've got<02:11:13.199> to<02:11:13.280> start<02:11:13.520> calling<02:11:13.760> these<02:11:14.000> other\ngot to start calling these other\ngot to start calling these other programs<02:11:14.560> in<02:11:14.719> this<02:11:14.880> way.<02:11:15.520> Um<02:11:15.920> they<02:11:16.159> don't<02:11:16.239> live\nprograms in this way. Um they don't live\nprograms in this way. Um they don't live update<02:11:16.800> with<02:11:16.960> the<02:11:17.119> device<02:11:17.360> like<02:11:17.520> what<02:11:17.679> do<02:11:17.840> I\nupdate with the device like what do I\nupdate with the device like what do I have<02:11:18.000> to<02:11:18.320> re<02:11:18.719> serialize<02:11:19.199> to<02:11:19.360> disk<02:11:19.599> and<02:11:19.760> then\nhave to re serialize to disk and then\nhave to re serialize to disk and then it's<02:11:20.000> like<02:11:20.239> the<02:11:20.400> other<02:11:20.560> program<02:11:20.880> has<02:11:21.040> a<02:11:21.199> popup.\nit's like the other program has a popup.\nit's like the other program has a popup. It's<02:11:21.760> like<02:11:21.920> the<02:11:22.159> contents<02:11:22.480> of<02:11:22.639> this<02:11:22.800> file<02:11:23.119> have\nIt's like the contents of this file have\nIt's like the contents of this file have changed.<02:11:23.599> And<02:11:23.760> it's<02:11:23.920> like<02:11:24.079> ah<02:11:24.320> dude<02:11:24.560> like<02:11:24.800> this\nchanged. And it's like ah dude like this\nchanged. And it's like ah dude like this sucks.<02:11:25.280> Like<02:11:25.599> so<02:11:26.079> so<02:11:27.520> in<02:11:27.679> a<02:11:27.840> better<02:11:28.079> world<02:11:28.960> an\nsucks. Like so so in a better world an\nsucks. Like so so in a better world an operating<02:11:29.440> system<02:11:29.679> maybe<02:11:30.000> would<02:11:30.159> make<02:11:30.320> this\noperating system maybe would make this\noperating system maybe would make this all<02:11:30.639> work.<02:11:31.440> I<02:11:31.679> don't<02:11:31.840> think<02:11:31.920> they<02:11:32.079> do<02:11:32.320> right\nall work. I don't think they do right\nall work. I don't think they do right now<02:11:32.719> and<02:11:32.960> so<02:11:33.119> I<02:11:33.280> just<02:11:33.440> built<02:11:33.679> it<02:11:33.760> this<02:11:34.000> way.\nnow and so I just built it this way.\nnow and so I just built it this way. >> On<02:11:34.480> the<02:11:34.639> flip<02:11:34.880> side,<02:11:35.119> do<02:11:35.199> you<02:11:35.360> consider<02:11:35.679> having\n>> On the flip side, do you consider having\n>> On the flip side, do you consider having developers<02:11:36.480> create<02:11:36.719> plugins<02:11:37.119> or<02:11:37.360> like<02:11:37.520> new\ndevelopers create plugins or like new\ndevelopers create plugins or like new panels<02:11:38.079> or<02:11:38.320> visualizers<02:11:38.800> or<02:11:39.040> whatever?\npanels or visualizers or whatever?\npanels or visualizers or whatever? >> Yes.<02:11:40.480> Yes.<02:11:40.960> So<02:11:41.520> I<02:11:41.760> think<02:11:41.840> I<02:11:42.000> also<02:11:42.239> had<02:11:42.400> notes\n>> Yes. Yes. So I think I also had notes\n>> Yes. Yes. So I think I also had notes that<02:11:42.880> I<02:11:43.040> just<02:11:43.199> didn't<02:11:43.520> say<02:11:43.840> about<02:11:44.000> that.<02:11:44.400> But\nthat I just didn't say about that. But\nthat I just didn't say about that. But um\num\num yeah,<02:11:46.800> basically<02:11:47.199> what<02:11:47.440> you<02:11:47.599> want<02:11:47.840> is<02:11:48.000> the\nyeah, basically what you want is the\nyeah, basically what you want is the ability<02:11:48.480> to<02:11:48.719> say<02:11:48.880> like<02:11:49.599> uh<02:11:50.639> both<02:11:51.199> there's<02:11:51.440> an\nability to say like uh both there's an\nability to say like uh both there's an argument<02:11:51.920> to<02:11:52.079> say<02:11:52.239> like<02:11:52.639> you<02:11:52.800> want<02:11:52.880> to<02:11:52.960> write<02:11:53.119> a\nargument to say like you want to write a\nargument to say like you want to write a plugin<02:11:53.520> for<02:11:53.679> the<02:11:53.840> for<02:11:54.079> the<02:11:54.239> debugger<02:11:54.960> itself\nplugin for the for the debugger itself\nplugin for the for the debugger itself like<02:11:55.599> a<02:11:55.760> DL<02:11:56.159> or<02:11:56.400> something<02:11:57.760> uh<02:11:57.840> or<02:11:58.079> like<02:11:58.320> some\nlike a DL or something uh or like some\nlike a DL or something uh or like some kind<02:11:58.560> of<02:11:58.639> a<02:11:58.800> script<02:11:59.040> where<02:11:59.280> it's<02:11:59.440> like<02:11:59.679> I<02:11:59.920> just\nkind of a script where it's like I just\nkind of a script where it's like I just want<02:12:00.159> to<02:12:00.239> put<02:12:00.400> this<02:12:00.560> visualizer<02:12:00.960> code<02:12:01.119> into\nwant to put this visualizer code into\nwant to put this visualizer code into the<02:12:01.440> debugger<02:12:01.840> as<02:12:02.079> an<02:12:02.560> extra<02:12:02.960> one<02:12:03.440> in<02:12:03.679> addition\nthe debugger as an extra one in addition\nthe debugger as an extra one in addition to<02:12:04.000> the<02:12:04.159> built-in<02:12:04.480> ones.<02:12:05.760> Or<02:12:06.400> an<02:12:06.719> even<02:12:06.880> better\nto the built-in ones. Or an even better\nto the built-in ones. Or an even better option<02:12:07.360> in<02:12:07.599> many<02:12:07.760> cases<02:12:07.920> is<02:12:08.159> like<02:12:08.320> that<02:12:08.560> stuff\noption in many cases is like that stuff\noption in many cases is like that stuff should<02:12:08.880> be<02:12:08.960> in<02:12:09.119> the<02:12:09.199> program<02:12:09.520> like<02:12:09.679> next<02:12:09.840> to\nshould be in the program like next to\nshould be in the program like next to the<02:12:10.079> type<02:12:10.320> info.<02:12:10.560> So<02:12:10.719> there's<02:12:10.880> a<02:12:11.040> limited\nthe type info. So there's a limited\nthe type info. So there's a limited version<02:12:11.520> of<02:12:11.599> that<02:12:11.760> with<02:12:11.920> the<02:12:12.079> type<02:12:12.320> views\nversion of that with the type views\nversion of that with the type views because<02:12:12.800> you<02:12:13.040> can<02:12:13.119> sort<02:12:13.280> of<02:12:13.360> say<02:12:13.599> like<02:12:14.320> the<02:12:14.480> the\nbecause you can sort of say like the the\nbecause you can sort of say like the the expression<02:12:15.040> is<02:12:15.280> programmatic<02:12:16.000> really.<02:12:16.320> So\nexpression is programmatic really. So\nexpression is programmatic really. So it's<02:12:16.719> like<02:12:16.960> it<02:12:17.119> is<02:12:18.159> um\nit's like it is um\nit's like it is um I<02:12:20.400> don't<02:12:20.480> think<02:12:20.560> it's<02:12:20.800> turning<02:12:21.119> complete\nI don't think it's turning complete\nI don't think it's turning complete because<02:12:21.520> the<02:12:21.679> bite<02:12:22.000> code<02:12:22.159> can't<02:12:22.400> jump\nbecause the bite code can't jump\nbecause the bite code can't jump backwards.<02:12:23.280> But<02:12:23.360> it's<02:12:23.520> but<02:12:23.760> point<02:12:24.000> point\nbackwards. But it's but point point\nbackwards. But it's but point point being<02:12:24.400> it's<02:12:24.560> like<02:12:24.639> a<02:12:24.719> pro<02:12:24.960> a<02:12:25.040> little<02:12:25.199> mini\nbeing it's like a pro a little mini\nbeing it's like a pro a little mini program.<02:12:26.239> And<02:12:26.400> so<02:12:26.560> you<02:12:26.719> can<02:12:26.880> do<02:12:26.960> a<02:12:27.119> little<02:12:27.199> bit\nprogram. And so you can do a little bit\nprogram. And so you can do a little bit of<02:12:27.440> that<02:12:27.520> with<02:12:27.599> the<02:12:27.760> type<02:12:27.920> views<02:12:28.239> but<02:12:28.400> really\nof that with the type views but really\nof that with the type views but really at<02:12:28.719> the<02:12:28.880> limit<02:12:29.119> what<02:12:29.280> you'd<02:12:29.520> want<02:12:30.079> and<02:12:30.320> what<02:12:30.560> I\nat the limit what you'd want and what I\nat the limit what you'd want and what I hope<02:12:31.040> to<02:12:31.360> eventually<02:12:31.840> support<02:12:32.800> is<02:12:33.119> like<02:12:33.440> no\nhope to eventually support is like no\nhope to eventually support is like no like<02:12:34.239> here's<02:12:34.560> my<02:12:34.800> strct<02:12:35.440> and<02:12:35.679> it's<02:12:35.920> like<02:12:36.079> a\nlike here's my strct and it's like a\nlike here's my strct and it's like a complicated<02:12:36.880> entity<02:12:37.199> or<02:12:37.520> node<02:12:37.760> or<02:12:38.000> whatever.\ncomplicated entity or node or whatever.\ncomplicated entity or node or whatever. It's<02:12:38.639> like,<02:12:38.800> and<02:12:39.040> here's<02:12:39.360> the<02:12:39.520> debug\nIt's like, and here's the debug\nIt's like, and here's the debug visualizer<02:12:40.400> path<02:12:40.639> like<02:12:40.800> underneath<02:12:41.119> it.<02:12:41.280> And\nvisualizer path like underneath it. And\nvisualizer path like underneath it. And then<02:12:41.520> the<02:12:41.599> debugger<02:12:42.000> should<02:12:42.079> just<02:12:42.239> be<02:12:42.320> able<02:12:42.400> to\nthen the debugger should just be able to\nthen the debugger should just be able to call<02:12:42.719> that<02:12:42.880> and<02:12:43.119> then<02:12:43.280> fill<02:12:43.440> out<02:12:43.599> a<02:12:43.760> tab.<02:12:44.560> So\ncall that and then fill out a tab. So\ncall that and then fill out a tab. So that's<02:12:45.040> what<02:12:45.280> I<02:12:45.440> want<02:12:45.599> to<02:12:45.840> do.\nthat's what I want to do.\nthat's what I want to do. Yeah.\nYeah.\nYeah. >> All right.<02:12:49.119> I<02:12:49.520> think<02:12:49.679> we're<02:12:49.920> out<02:12:50.159> of<02:12:50.320> time.<02:12:51.199> So\n>> All right. I think we're out of time. So\n>> All right. I think we're out of time. So thank<02:12:52.320> you<02:12:52.560> Ryan<02:12:52.960> again.<02:12:53.199> Thank<02:12:53.360> you<02:12:53.679> much.\nthank you Ryan again. Thank you much.\nthank you Ryan again. Thank you much. Give<02:12:53.920> it<02:12:54.000> up<02:12:54.159> for<02:12:54.239> Ryan<02:12:54.560> once<02:12:54.800> more.\nGive it up for Ryan once more.\nGive it up for Ryan once more. >> Thanks<02:12:55.599> everyone.\n>> Thanks<02:12:59.199> man.<02:12:59.760> Appreciate<02:13:00.159> it.", + "fetched_at": "2026-06-29T15:02:04.930463+00:00" +} \ No newline at end of file diff --git a/docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json b/docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json new file mode 100644 index 00000000..505a1733 --- /dev/null +++ b/docs/transcripts/rcJwvx2CTZY_ryan_fleury_raddbg_codebase_intro.json @@ -0,0 +1,15022 @@ +{ + "video_id": "rcJwvx2CTZY", + "segments": [ + { + "start": 0.4, + "duration": 0.0, + "text": "For<00:00:00.520> everybody<00:00:00.960> who<00:00:01.120> is<00:00:01.240> joining,<00:00:02.000> we<00:00:02.200> are" + }, + { + "start": 2.31, + "duration": 0.0, + "text": "For everybody who is joining, we are" + }, + { + "start": 2.32, + "duration": 0.0, + "text": "For everybody who is joining, we are gathered<00:00:02.760> here<00:00:03.000> today<00:00:03.760> for<00:00:04.040> Ryan<00:00:04.800> to<00:00:04.960> show<00:00:05.200> us" + }, + { + "start": 5.71, + "duration": 0.0, + "text": "gathered here today for Ryan to show us" + }, + { + "start": 5.72, + "duration": 0.0, + "text": "gathered here today for Ryan to show us radare2<00:00:06.120> debugger<00:00:06.440> code<00:00:06.720> base." + }, + { + "start": 7.99, + "duration": 0.0, + "text": "radare2 debugger code base." + }, + { + "start": 8.0, + "duration": 0.0, + "text": "radare2 debugger code base. Hello<00:00:08.200> Ryan,<00:00:08.760> how<00:00:08.880> are<00:00:08.960> you<00:00:09.000> doing?" + }, + { + "start": 9.51, + "duration": 0.0, + "text": "Hello Ryan, how are you doing?" + }, + { + "start": 9.52, + "duration": 0.0, + "text": "Hello Ryan, how are you doing? >> Hello.<00:00:10.400> Good,<00:00:10.640> how<00:00:10.760> are<00:00:10.840> you?" + }, + { + "start": 11.67, + "duration": 0.0, + "text": ">> Hello. Good, how are you?" + }, + { + "start": 11.68, + "duration": 0.0, + "text": ">> Hello. Good, how are you? >> Great." + }, + { + "start": 12.87, + "duration": 0.0, + "text": ">> Great." + }, + { + "start": 12.88, + "duration": 0.0, + "text": ">> Great. And<00:00:13.720> after<00:00:13.960> this<00:00:14.160> a<00:00:14.200> little<00:00:14.400> bit<00:00:14.600> awkward" + }, + { + "start": 14.99, + "duration": 0.0, + "text": "And after this a little bit awkward" + }, + { + "start": 15.0, + "duration": 0.0, + "text": "And after this a little bit awkward introduction<00:00:15.920> interchange," + }, + { + "start": 17.19, + "duration": 0.0, + "text": "introduction interchange," + }, + { + "start": 17.2, + "duration": 0.0, + "text": "introduction interchange, uh<00:00:17.600> Ryan<00:00:18.600> will<00:00:18.840> first<00:00:19.280> start<00:00:19.760> with<00:00:19.960> showing<00:00:20.280> us" + }, + { + "start": 20.55, + "duration": 0.0, + "text": "uh Ryan will first start with showing us" + }, + { + "start": 20.56, + "duration": 0.0, + "text": "uh Ryan will first start with showing us how<00:00:20.880> radare2<00:00:21.200> debugger<00:00:21.520> works<00:00:22.000> in<00:00:22.200> general<00:00:22.960> in" + }, + { + "start": 23.19, + "duration": 0.0, + "text": "how radare2 debugger works in general in" + }, + { + "start": 23.2, + "duration": 0.0, + "text": "how radare2 debugger works in general in terms<00:00:23.440> of<00:00:23.640> what's<00:00:23.800> the<00:00:24.160> product<00:00:25.240> how<00:00:25.480> the" + }, + { + "start": 25.67, + "duration": 0.0, + "text": "terms of what's the product how the" + }, + { + "start": 25.68, + "duration": 0.0, + "text": "terms of what's the product how the users<00:00:26.280> could<00:00:26.640> use<00:00:27.000> radare2<00:00:27.320> debugger<00:00:28.040> and" + }, + { + "start": 28.15, + "duration": 0.0, + "text": "users could use radare2 debugger and" + }, + { + "start": 28.16, + "duration": 0.0, + "text": "users could use radare2 debugger and then<00:00:28.320> we're<00:00:28.400> going<00:00:28.520> to<00:00:28.600> dive<00:00:28.840> in<00:00:29.000> into<00:00:29.400> source" + }, + { + "start": 29.71, + "duration": 0.0, + "text": "then we're going to dive in into source" + }, + { + "start": 29.72, + "duration": 0.0, + "text": "then we're going to dive in into source code." + }, + { + "start": 30.19, + "duration": 0.0, + "text": "code." + }, + { + "start": 30.2, + "duration": 0.0, + "text": "code. >> So,<00:00:30.960> unfortunately<00:00:31.440> I<00:00:31.480> can't<00:00:31.720> show<00:00:32.240> what<00:00:32.400> it's" + }, + { + "start": 32.55, + "duration": 0.0, + "text": ">> So, unfortunately I can't show what it's" + }, + { + "start": 32.56, + "duration": 0.0, + "text": ">> So, unfortunately I can't show what it's like<00:00:32.759> to<00:00:32.960> get<00:00:33.360> the<00:00:33.440> debugger" + }, + { + "start": 35.11, + "duration": 0.0, + "text": "like to get the debugger" + }, + { + "start": 35.12, + "duration": 0.0, + "text": "like to get the debugger um<00:00:35.400> because<00:00:36.080> I<00:00:36.280> can<00:00:36.440> only<00:00:36.680> share<00:00:37.040> share<00:00:37.320> the" + }, + { + "start": 37.39, + "duration": 0.0, + "text": "um because I can only share share the" + }, + { + "start": 37.4, + "duration": 0.0, + "text": "um because I can only share share the debugger<00:00:37.720> itself,<00:00:38.080> but<00:00:38.200> I<00:00:38.240> mean<00:00:38.400> it's<00:00:38.520> very" + }, + { + "start": 38.75, + "duration": 0.0, + "text": "debugger itself, but I mean it's very" + }, + { + "start": 38.76, + "duration": 0.0, + "text": "debugger itself, but I mean it's very straightforward.<00:00:39.320> Like<00:00:39.480> you<00:00:39.600> go<00:00:39.800> to<00:00:39.960> the" + }, + { + "start": 40.15, + "duration": 0.0, + "text": "straightforward. Like you go to the" + }, + { + "start": 40.16, + "duration": 0.0, + "text": "straightforward. Like you go to the debugger<00:00:41.160> GitHub<00:00:41.480> page,<00:00:42.120> you<00:00:42.240> click<00:00:42.480> on<00:00:42.600> the" + }, + { + "start": 42.67, + "duration": 0.0, + "text": "debugger GitHub page, you click on the" + }, + { + "start": 42.68, + "duration": 0.0, + "text": "debugger GitHub page, you click on the releases<00:00:43.320> section,<00:00:44.080> and<00:00:44.200> then<00:00:44.280> you<00:00:44.480> get" + }, + { + "start": 44.87, + "duration": 0.0, + "text": "releases section, and then you get" + }, + { + "start": 44.88, + "duration": 0.0, + "text": "releases section, and then you get radare2<00:00:45.400> .exe,<00:00:46.200> and<00:00:46.280> that's<00:00:46.480> it.<00:00:46.640> And<00:00:46.720> then" + }, + { + "start": 46.79, + "duration": 0.0, + "text": "radare2 .exe, and that's it. And then" + }, + { + "start": 46.8, + "duration": 0.0, + "text": "radare2 .exe, and that's it. And then you<00:00:46.920> run<00:00:47.080> that.<00:00:47.520> And<00:00:47.600> then<00:00:47.720> this<00:00:47.880> is<00:00:48.000> what<00:00:48.120> will" + }, + { + "start": 48.19, + "duration": 0.0, + "text": "you run that. And then this is what will" + }, + { + "start": 48.2, + "duration": 0.0, + "text": "you run that. And then this is what will pop<00:00:48.400> up<00:00:48.760> or<00:00:48.840> something<00:00:49.120> like<00:00:49.280> this." + }, + { + "start": 50.91, + "duration": 0.0, + "text": "pop up or something like this." + }, + { + "start": 50.92, + "duration": 0.0, + "text": "pop up or something like this. Um" + }, + { + "start": 52.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 52.88, + "duration": 0.0, + "text": "Um so<00:00:53.055> [clears throat]" + }, + { + "start": 54.15, + "duration": 0.0, + "text": "so [clears throat]" + }, + { + "start": 54.16, + "duration": 0.0, + "text": "so [clears throat] anyways,<00:00:54.600> if<00:00:54.720> you<00:00:54.880> open<00:00:55.120> the<00:00:55.200> program<00:00:55.560> like" + }, + { + "start": 55.71, + "duration": 0.0, + "text": "anyways, if you open the program like" + }, + { + "start": 55.72, + "duration": 0.0, + "text": "anyways, if you open the program like this,<00:00:55.960> so<00:00:56.120> there's<00:00:56.400> there's<00:00:56.640> one<00:00:56.840> thing<00:00:57.000> you" + }, + { + "start": 57.11, + "duration": 0.0, + "text": "this, so there's there's one thing you" + }, + { + "start": 57.12, + "duration": 0.0, + "text": "this, so there's there's one thing you can<00:00:57.240> do<00:00:57.640> and<00:00:57.760> because<00:00:58.040> I<00:00:58.120> can't<00:00:58.760> because<00:00:59.000> I" + }, + { + "start": 59.03, + "duration": 0.0, + "text": "can do and because I can't because I" + }, + { + "start": 59.04, + "duration": 0.0, + "text": "can do and because I can't because I can't<00:00:59.360> share<00:00:59.720> my<00:01:00.560> my<00:01:00.720> screen,<00:01:01.000> I<00:01:01.040> can't<00:01:01.320> show" + }, + { + "start": 61.55, + "duration": 0.0, + "text": "can't share my my screen, I can't show" + }, + { + "start": 61.56, + "duration": 0.0, + "text": "can't share my my screen, I can't show what<00:01:01.680> the<00:01:01.760> command<00:01:02.120> line<00:01:02.760> usage<00:01:03.160> looks<00:01:03.320> like." + }, + { + "start": 64.15, + "duration": 0.0, + "text": "what the command line usage looks like." + }, + { + "start": 64.16, + "duration": 0.0, + "text": "what the command line usage looks like. But<00:01:04.280> basically<00:01:04.680> there's<00:01:04.879> one<00:01:05.080> thing<00:01:05.239> you<00:01:05.320> can" + }, + { + "start": 65.47, + "duration": 0.0, + "text": "But basically there's one thing you can" + }, + { + "start": 65.48, + "duration": 0.0, + "text": "But basically there's one thing you can do,<00:01:06.160> let<00:01:06.280> me<00:01:06.320> just<00:01:06.480> open<00:01:06.640> a<00:01:06.680> watch<00:01:06.960> window<00:01:07.200> and" + }, + { + "start": 67.27, + "duration": 0.0, + "text": "do, let me just open a watch window and" + }, + { + "start": 67.28, + "duration": 0.0, + "text": "do, let me just open a watch window and then<00:01:07.400> I<00:01:07.440> can<00:01:07.960> uh" + }, + { + "start": 68.51, + "duration": 0.0, + "text": "then I can uh" + }, + { + "start": 68.52, + "duration": 0.0, + "text": "then I can uh put<00:01:08.680> a<00:01:08.720> little<00:01:08.880> string<00:01:09.120> in<00:01:09.200> here.<00:01:09.400> So,<00:01:10.000> um" + }, + { + "start": 70.63, + "duration": 0.0, + "text": "put a little string in here. So, um" + }, + { + "start": 70.64, + "duration": 0.0, + "text": "put a little string in here. So, um actually<00:01:10.880> let<00:01:11.000> me<00:01:11.160> unload<00:01:11.600> a<00:01:11.640> bunch<00:01:11.840> of<00:01:11.920> debug" + }, + { + "start": 72.23, + "duration": 0.0, + "text": "actually let me unload a bunch of debug" + }, + { + "start": 72.24, + "duration": 0.0, + "text": "actually let me unload a bunch of debug info<00:01:12.920> that<00:01:13.000> I<00:01:13.040> don't<00:01:13.240> need<00:01:13.360> loaded<00:01:13.640> right<00:01:13.800> now." + }, + { + "start": 73.95, + "duration": 0.0, + "text": "info that I don't need loaded right now." + }, + { + "start": 73.96, + "duration": 0.0, + "text": "info that I don't need loaded right now. So," + }, + { + "start": 74.66, + "duration": 0.0, + "text": "So," + }, + { + "start": 74.67, + "duration": 0.0, + "text": "So, >> [clears throat]" + }, + { + "start": 75.71, + "duration": 0.0, + "text": ">> [clears throat]" + }, + { + "start": 75.72, + "duration": 0.0, + "text": ">> [clears throat] >> on<00:01:15.960> command<00:01:16.240> line<00:01:16.440> what<00:01:16.560> you<00:01:16.640> can<00:01:16.720> do<00:01:16.920> is<00:01:17.000> like" + }, + { + "start": 77.19, + "duration": 0.0, + "text": ">> on command line what you can do is like" + }, + { + "start": 77.2, + "duration": 0.0, + "text": ">> on command line what you can do is like you<00:01:17.440> you<00:01:17.520> can<00:01:17.640> run<00:01:18.480> radare2<00:01:19.160> and<00:01:19.280> then<00:01:19.920> um<00:01:20.360> so" + }, + { + "start": 80.51, + "duration": 0.0, + "text": "you you can run radare2 and then um so" + }, + { + "start": 80.52, + "duration": 0.0, + "text": "you you can run radare2 and then um so if<00:01:20.680> you're<00:01:20.800> running<00:01:21.120> a<00:01:21.200> program<00:01:21.760> that<00:01:21.920> you're" + }, + { + "start": 82.87, + "duration": 0.0, + "text": "if you're running a program that you're" + }, + { + "start": 82.88, + "duration": 0.0, + "text": "if you're running a program that you're that<00:01:23.000> you're<00:01:23.360> actively<00:01:23.720> developing,<00:01:24.200> you" + }, + { + "start": 84.31, + "duration": 0.0, + "text": "that you're actively developing, you" + }, + { + "start": 84.32, + "duration": 0.0, + "text": "that you're actively developing, you might<00:01:24.520> run<00:01:24.720> something<00:01:25.000> like<00:01:25.200> foo.exe." + }, + { + "start": 87.31, + "duration": 0.0, + "text": "might run something like foo.exe." + }, + { + "start": 87.32, + "duration": 0.0, + "text": "might run something like foo.exe. Um<00:01:28.040> and<00:01:28.160> then<00:01:28.280> you<00:01:28.360> might<00:01:28.600> say<00:01:28.800> like<00:01:29.080> {dash}<00:01:29.720> a" + }, + { + "start": 89.99, + "duration": 0.0, + "text": "Um and then you might say like {dash} a" + }, + { + "start": 90.0, + "duration": 0.0, + "text": "Um and then you might say like {dash} a {dash}<00:01:30.320> b<00:01:31.200> uh" + }, + { + "start": 91.75, + "duration": 0.0, + "text": "{dash} b uh" + }, + { + "start": 91.76, + "duration": 0.0, + "text": "{dash} b uh {dash}<00:01:32.600> some<00:01:33.000> other<00:01:33.360> option<00:01:34.480> equals" + }, + { + "start": 94.91, + "duration": 0.0, + "text": "{dash} some other option equals" + }, + { + "start": 94.92, + "duration": 0.0, + "text": "{dash} some other option equals whatever,<00:01:35.560> like<00:01:35.680> something<00:01:35.880> like<00:01:36.000> this." + }, + { + "start": 96.15, + "duration": 0.0, + "text": "whatever, like something like this." + }, + { + "start": 96.16, + "duration": 0.0, + "text": "whatever, like something like this. Whatever<00:01:36.360> your<00:01:36.440> command<00:01:36.720> line<00:01:36.880> arguments<00:01:37.240> are" + }, + { + "start": 97.35, + "duration": 0.0, + "text": "Whatever your command line arguments are" + }, + { + "start": 97.36, + "duration": 0.0, + "text": "Whatever your command line arguments are if<00:01:37.480> you<00:01:37.600> have<00:01:37.760> them." + }, + { + "start": 99.15, + "duration": 0.0, + "text": "if you have them." + }, + { + "start": 99.16, + "duration": 0.0, + "text": "if you have them. To<00:01:39.360> run<00:01:39.520> this<00:01:39.920> within<00:01:40.200> the<00:01:40.280> context<00:01:40.640> of<00:01:40.720> the" + }, + { + "start": 100.79, + "duration": 0.0, + "text": "To run this within the context of the" + }, + { + "start": 100.8, + "duration": 0.0, + "text": "To run this within the context of the debugger,<00:01:41.200> all<00:01:41.360> you<00:01:41.440> have<00:01:41.560> to<00:01:41.640> do<00:01:42.000> is<00:01:42.280> prefix" + }, + { + "start": 102.63, + "duration": 0.0, + "text": "debugger, all you have to do is prefix" + }, + { + "start": 102.64, + "duration": 0.0, + "text": "debugger, all you have to do is prefix that<00:01:42.760> with<00:01:42.920> radare2" + }, + { + "start": 103.83, + "duration": 0.0, + "text": "that with radare2" + }, + { + "start": 103.84, + "duration": 0.0, + "text": "that with radare2 as<00:01:43.960> long<00:01:44.160> as<00:01:44.280> you<00:01:44.320> can<00:01:44.480> access<00:01:45.360> this<00:01:45.600> in<00:01:45.720> your" + }, + { + "start": 105.83, + "duration": 0.0, + "text": "as long as you can access this in your" + }, + { + "start": 105.84, + "duration": 0.0, + "text": "as long as you can access this in your path.<00:01:46.120> Like<00:01:46.240> you<00:01:46.320> put<00:01:46.480> it,<00:01:46.920> you<00:01:47.000> know,<00:01:47.600> when" + }, + { + "start": 107.79, + "duration": 0.0, + "text": "path. Like you put it, you know, when" + }, + { + "start": 107.8, + "duration": 0.0, + "text": "path. Like you put it, you know, when you<00:01:48.080> get<00:01:48.280> the<00:01:48.360> executable,<00:01:48.840> you<00:01:48.920> put<00:01:49.080> it" + }, + { + "start": 109.15, + "duration": 0.0, + "text": "you get the executable, you put it" + }, + { + "start": 109.16, + "duration": 0.0, + "text": "you get the executable, you put it wherever<00:01:49.360> you<00:01:49.400> can<00:01:49.520> find<00:01:49.760> it<00:01:49.840> in<00:01:49.880> your<00:01:50.000> path<00:01:50.280> if" + }, + { + "start": 110.39, + "duration": 0.0, + "text": "wherever you can find it in your path if" + }, + { + "start": 110.4, + "duration": 0.0, + "text": "wherever you can find it in your path if you<00:01:50.480> want<00:01:50.600> to<00:01:50.680> run<00:01:50.760> it<00:01:50.840> from<00:01:50.960> command<00:01:51.280> line." + }, + { + "start": 112.39, + "duration": 0.0, + "text": "you want to run it from command line." + }, + { + "start": 112.4, + "duration": 0.0, + "text": "you want to run it from command line. Um" + }, + { + "start": 113.91, + "duration": 0.0, + "text": "Um" + }, + { + "start": 113.92, + "duration": 0.0, + "text": "Um and<00:01:54.040> then<00:01:54.120> if<00:01:54.240> you<00:01:54.400> open<00:01:54.920> if<00:01:55.000> If<00:01:55.080> run<00:01:55.280> this," + }, + { + "start": 116.67, + "duration": 0.0, + "text": "and then if you open if If run this," + }, + { + "start": 116.68, + "duration": 0.0, + "text": "and then if you open if If run this, it'll<00:01:56.920> open<00:01:57.160> the<00:01:57.240> debugger." + }, + { + "start": 118.39, + "duration": 0.0, + "text": "it'll open the debugger." + }, + { + "start": 118.4, + "duration": 0.0, + "text": "it'll open the debugger. And<00:01:58.720> what<00:01:58.840> it'll<00:01:59.040> do<00:01:59.240> is<00:01:59.360> it'll<00:01:59.520> pre-fill" + }, + { + "start": 121.23, + "duration": 0.0, + "text": "And what it'll do is it'll pre-fill" + }, + { + "start": 121.24, + "duration": 0.0, + "text": "And what it'll do is it'll pre-fill um" + }, + { + "start": 122.07, + "duration": 0.0, + "text": "um" + }, + { + "start": 122.08, + "duration": 0.0, + "text": "um it'll<00:02:02.280> create<00:02:02.520> a<00:02:02.560> target,<00:02:03.040> a<00:02:03.080> temporary" + }, + { + "start": 123.55, + "duration": 0.0, + "text": "it'll create a target, a temporary" + }, + { + "start": 123.56, + "duration": 0.0, + "text": "it'll create a target, a temporary target<00:02:03.880> for<00:02:04.360> for<00:02:04.680> the<00:02:05.240> executable<00:02:05.760> you<00:02:05.840> just" + }, + { + "start": 125.99, + "duration": 0.0, + "text": "target for for the executable you just" + }, + { + "start": 126.0, + "duration": 0.0, + "text": "target for for the executable you just passed." + }, + { + "start": 127.55, + "duration": 0.0, + "text": "passed." + }, + { + "start": 127.56, + "duration": 0.0, + "text": "passed. So,<00:02:07.720> targets<00:02:08.080> are<00:02:08.160> basically" + }, + { + "start": 129.469, + "duration": 0.0, + "text": "So, targets are basically" + }, + { + "start": 129.479, + "duration": 0.0, + "text": "So, targets are basically um<00:02:09.960> how<00:02:10.160> the<00:02:10.280> debugger<00:02:10.640> knows<00:02:11.760> uh<00:02:12.000> how<00:02:12.320> to" + }, + { + "start": 132.59, + "duration": 0.0, + "text": "um how the debugger knows uh how to" + }, + { + "start": 132.6, + "duration": 0.0, + "text": "um how the debugger knows uh how to launch<00:02:13.080> an<00:02:13.200> executable.<00:02:14.240> Um" + }, + { + "start": 134.91, + "duration": 0.0, + "text": "launch an executable. Um" + }, + { + "start": 134.92, + "duration": 0.0, + "text": "launch an executable. Um so,<00:02:15.160> I've<00:02:15.280> got<00:02:15.400> a<00:02:15.440> bunch<00:02:15.640> of<00:02:15.720> options<00:02:16.080> here." + }, + { + "start": 136.75, + "duration": 0.0, + "text": "so, I've got a bunch of options here." + }, + { + "start": 136.76, + "duration": 0.0, + "text": "so, I've got a bunch of options here. I've<00:02:16.880> got<00:02:17.080> this<00:02:17.360> for<00:02:17.480> example,<00:02:17.840> this<00:02:18.000> mule" + }, + { + "start": 138.31, + "duration": 0.0, + "text": "I've got this for example, this mule" + }, + { + "start": 138.32, + "duration": 0.0, + "text": "I've got this for example, this mule main.<00:02:18.640> This<00:02:18.800> is<00:02:18.959> what<00:02:19.280> something<00:02:19.560> we<00:02:19.640> use<00:02:19.800> for" + }, + { + "start": 139.91, + "duration": 0.0, + "text": "main. This is what something we use for" + }, + { + "start": 139.92, + "duration": 0.0, + "text": "main. This is what something we use for testing<00:02:20.240> in<00:02:20.360> the<00:02:20.400> debugger" + }, + { + "start": 141.43, + "duration": 0.0, + "text": "testing in the debugger" + }, + { + "start": 141.44, + "duration": 0.0, + "text": "testing in the debugger um<00:02:21.800> project.<00:02:22.959> And<00:02:23.320> you<00:02:23.400> can<00:02:23.520> see<00:02:23.600> it's<00:02:23.720> got<00:02:23.840> a" + }, + { + "start": 143.87, + "duration": 0.0, + "text": "um project. And you can see it's got a" + }, + { + "start": 143.88, + "duration": 0.0, + "text": "um project. And you can see it's got a bunch<00:02:24.040> of<00:02:24.120> options<00:02:24.480> here.<00:02:25.080> Um" + }, + { + "start": 146.11, + "duration": 0.0, + "text": "bunch of options here. Um" + }, + { + "start": 146.12, + "duration": 0.0, + "text": "bunch of options here. Um label<00:02:26.680> is<00:02:27.080> uh" + }, + { + "start": 147.63, + "duration": 0.0, + "text": "label is uh" + }, + { + "start": 147.64, + "duration": 0.0, + "text": "label is uh not<00:02:27.920> super<00:02:28.160> important.<00:02:28.440> It's<00:02:28.640> it's<00:02:29.360> um" + }, + { + "start": 150.07, + "duration": 0.0, + "text": "not super important. It's it's um" + }, + { + "start": 150.08, + "duration": 0.0, + "text": "not super important. It's it's um it's<00:02:30.200> just<00:02:30.320> something<00:02:30.520> you<00:02:30.600> can<00:02:30.720> tag<00:02:31.360> this" + }, + { + "start": 151.83, + "duration": 0.0, + "text": "it's just something you can tag this" + }, + { + "start": 151.84, + "duration": 0.0, + "text": "it's just something you can tag this target<00:02:32.200> with.<00:02:32.440> But" + }, + { + "start": 153.47, + "duration": 0.0, + "text": "target with. But" + }, + { + "start": 153.48, + "duration": 0.0, + "text": "target with. But um<00:02:34.000> you<00:02:34.120> supply<00:02:34.400> the<00:02:34.520> executable<00:02:35.000> path.<00:02:35.520> You" + }, + { + "start": 155.59, + "duration": 0.0, + "text": "um you supply the executable path. You" + }, + { + "start": 155.6, + "duration": 0.0, + "text": "um you supply the executable path. You can<00:02:35.720> put<00:02:35.840> in<00:02:36.000> arguments<00:02:36.480> here.<00:02:36.720> So,<00:02:36.800> you<00:02:36.840> can" + }, + { + "start": 156.949, + "duration": 0.0, + "text": "can put in arguments here. So, you can" + }, + { + "start": 156.959, + "duration": 0.0, + "text": "can put in arguments here. So, you can do<00:02:37.040> like<00:02:37.200> {dash}foo<00:02:37.680> {dash}bar<00:02:38.240> whatever," + }, + { + "start": 158.79, + "duration": 0.0, + "text": "do like {dash}foo {dash}bar whatever," + }, + { + "start": 158.8, + "duration": 0.0, + "text": "do like {dash}foo {dash}bar whatever, whatever<00:02:39.040> you<00:02:39.120> want<00:02:39.280> it<00:02:39.360> to<00:02:39.440> do.<00:02:39.959> And<00:02:40.040> the" + }, + { + "start": 160.11, + "duration": 0.0, + "text": "whatever you want it to do. And the" + }, + { + "start": 160.12, + "duration": 0.0, + "text": "whatever you want it to do. And the arguments<00:02:40.480> you<00:02:40.560> put<00:02:40.720> those<00:02:40.920> here." + }, + { + "start": 162.15, + "duration": 0.0, + "text": "arguments you put those here." + }, + { + "start": 162.16, + "duration": 0.0, + "text": "arguments you put those here. Whatever<00:02:42.480> working<00:02:42.840> directory<00:02:43.240> you<00:02:43.360> want<00:02:43.560> it" + }, + { + "start": 163.63, + "duration": 0.0, + "text": "Whatever working directory you want it" + }, + { + "start": 163.64, + "duration": 0.0, + "text": "Whatever working directory you want it to<00:02:43.760> start<00:02:44.120> the<00:02:44.240> executable<00:02:45.160> like<00:02:45.360> within<00:02:45.600> the" + }, + { + "start": 165.67, + "duration": 0.0, + "text": "to start the executable like within the" + }, + { + "start": 165.68, + "duration": 0.0, + "text": "to start the executable like within the context<00:02:46.160> of.<00:02:46.800> And<00:02:46.880> then<00:02:47.000> you<00:02:47.080> can<00:02:47.160> also" + }, + { + "start": 167.35, + "duration": 0.0, + "text": "context of. And then you can also" + }, + { + "start": 167.36, + "duration": 0.0, + "text": "context of. And then you can also specify<00:02:47.680> things<00:02:47.920> like<00:02:48.040> a<00:02:48.120> custom<00:02:48.520> entry" + }, + { + "start": 168.79, + "duration": 0.0, + "text": "specify things like a custom entry" + }, + { + "start": 168.8, + "duration": 0.0, + "text": "specify things like a custom entry point.<00:02:49.800> Um<00:02:50.560> a<00:02:50.680> file<00:02:51.040> path<00:02:51.360> for<00:02:51.480> standard<00:02:51.880> out," + }, + { + "start": 172.11, + "duration": 0.0, + "text": "point. Um a file path for standard out," + }, + { + "start": 172.12, + "duration": 0.0, + "text": "point. Um a file path for standard out, standard<00:02:52.640> error,<00:02:52.959> and<00:02:53.120> standard<00:02:53.520> in.<00:02:53.920> You<00:02:54.000> can" + }, + { + "start": 174.15, + "duration": 0.0, + "text": "standard error, and standard in. You can" + }, + { + "start": 174.16, + "duration": 0.0, + "text": "standard error, and standard in. You can put<00:02:54.320> file<00:02:54.520> paths<00:02:54.760> here<00:02:55.000> and<00:02:55.120> then<00:02:55.240> it'll<00:02:55.720> use" + }, + { + "start": 175.91, + "duration": 0.0, + "text": "put file paths here and then it'll use" + }, + { + "start": 175.92, + "duration": 0.0, + "text": "put file paths here and then it'll use those<00:02:56.200> instead<00:02:56.520> of<00:02:57.120> um" + }, + { + "start": 177.79, + "duration": 0.0, + "text": "those instead of um" + }, + { + "start": 177.8, + "duration": 0.0, + "text": "those instead of um instead<00:02:58.120> of<00:02:58.160> the<00:02:58.280> defaults.<00:02:59.280> You<00:02:59.360> can<00:02:59.480> add" + }, + { + "start": 179.59, + "duration": 0.0, + "text": "instead of the defaults. You can add" + }, + { + "start": 179.6, + "duration": 0.0, + "text": "instead of the defaults. You can add custom<00:02:59.920> environment<00:03:00.400> strings.<00:03:01.200> And<00:03:01.320> then<00:03:01.480> you" + }, + { + "start": 181.55, + "duration": 0.0, + "text": "custom environment strings. And then you" + }, + { + "start": 181.56, + "duration": 0.0, + "text": "custom environment strings. And then you can<00:03:01.680> also" + }, + { + "start": 182.87, + "duration": 0.0, + "text": "can also" + }, + { + "start": 182.88, + "duration": 0.0, + "text": "can also enable<00:03:03.200> or<00:03:03.280> disable<00:03:03.920> debugging<00:03:04.280> of<00:03:04.400> sub" + }, + { + "start": 184.63, + "duration": 0.0, + "text": "enable or disable debugging of sub" + }, + { + "start": 184.64, + "duration": 0.0, + "text": "enable or disable debugging of sub processes.<00:03:05.280> Meaning<00:03:05.519> if<00:03:05.680> this<00:03:05.959> executable" + }, + { + "start": 186.47, + "duration": 0.0, + "text": "processes. Meaning if this executable" + }, + { + "start": 186.48, + "duration": 0.0, + "text": "processes. Meaning if this executable launched<00:03:06.840> another<00:03:07.160> process,<00:03:08.120> would<00:03:08.280> the" + }, + { + "start": 188.35, + "duration": 0.0, + "text": "launched another process, would the" + }, + { + "start": 188.36, + "duration": 0.0, + "text": "launched another process, would the debugger<00:03:08.720> automatically<00:03:09.160> attach<00:03:09.480> to<00:03:09.640> it<00:03:09.840> or" + }, + { + "start": 189.949, + "duration": 0.0, + "text": "debugger automatically attach to it or" + }, + { + "start": 189.959, + "duration": 0.0, + "text": "debugger automatically attach to it or not?<00:03:10.800> Um<00:03:10.880> sometimes<00:03:11.280> you<00:03:11.320> want<00:03:11.480> one," + }, + { + "start": 191.67, + "duration": 0.0, + "text": "not? Um sometimes you want one," + }, + { + "start": 191.68, + "duration": 0.0, + "text": "not? Um sometimes you want one, sometimes<00:03:12.000> you<00:03:12.080> want<00:03:12.880> uh" + }, + { + "start": 193.47, + "duration": 0.0, + "text": "sometimes you want uh" + }, + { + "start": 193.48, + "duration": 0.0, + "text": "sometimes you want uh the<00:03:13.600> other.<00:03:14.200> So,<00:03:14.400> that's<00:03:14.640> why<00:03:14.959> it's<00:03:15.120> this<00:03:15.519> uh" + }, + { + "start": 195.59, + "duration": 0.0, + "text": "the other. So, that's why it's this uh" + }, + { + "start": 195.6, + "duration": 0.0, + "text": "the other. So, that's why it's this uh per<00:03:15.720> target<00:03:16.000> option<00:03:16.280> here." + }, + { + "start": 197.55, + "duration": 0.0, + "text": "per target option here." + }, + { + "start": 197.56, + "duration": 0.0, + "text": "per target option here. >> Hi<00:03:17.680> everyone.<00:03:18.440> Let<00:03:18.720> me<00:03:18.800> take<00:03:19.040> a<00:03:19.080> break<00:03:19.360> to" + }, + { + "start": 199.47, + "duration": 0.0, + "text": ">> Hi everyone. Let me take a break to" + }, + { + "start": 199.48, + "duration": 0.0, + "text": ">> Hi everyone. Let me take a break to thank<00:03:19.720> members<00:03:20.239> of<00:03:20.400> the<00:03:20.560> show<00:03:20.920> who<00:03:21.120> made<00:03:21.400> this" + }, + { + "start": 201.55, + "duration": 0.0, + "text": "thank members of the show who made this" + }, + { + "start": 201.56, + "duration": 0.0, + "text": "thank members of the show who made this conversation<00:03:22.280> possible.<00:03:23.239> Members<00:03:23.720> get" + }, + { + "start": 203.99, + "duration": 0.0, + "text": "conversation possible. Members get" + }, + { + "start": 204.0, + "duration": 0.0, + "text": "conversation possible. Members get earlier<00:03:24.360> access<00:03:24.760> to<00:03:24.880> videos<00:03:25.519> including" + }, + { + "start": 206.03, + "duration": 0.0, + "text": "earlier access to videos including" + }, + { + "start": 206.04, + "duration": 0.0, + "text": "earlier access to videos including longer<00:03:26.600> unedited<00:03:27.360> footage<00:03:27.880> from<00:03:28.160> live" + }, + { + "start": 208.39, + "duration": 0.0, + "text": "longer unedited footage from live" + }, + { + "start": 208.4, + "duration": 0.0, + "text": "longer unedited footage from live streams<00:03:29.120> as<00:03:29.400> well<00:03:29.600> as<00:03:29.760> they're<00:03:30.000> invited<00:03:30.760> to" + }, + { + "start": 210.87, + "duration": 0.0, + "text": "streams as well as they're invited to" + }, + { + "start": 210.88, + "duration": 0.0, + "text": "streams as well as they're invited to our<00:03:31.040> private<00:03:31.600> Discord<00:03:32.080> server.<00:03:32.880> If<00:03:33.080> you<00:03:33.239> want" + }, + { + "start": 213.47, + "duration": 0.0, + "text": "our private Discord server. If you want" + }, + { + "start": 213.48, + "duration": 0.0, + "text": "our private Discord server. If you want to<00:03:33.600> support<00:03:33.959> the<00:03:34.080> show,<00:03:34.400> there<00:03:34.600> is<00:03:34.800> no<00:03:35.040> better" + }, + { + "start": 215.39, + "duration": 0.0, + "text": "to support the show, there is no better" + }, + { + "start": 215.4, + "duration": 0.0, + "text": "to support the show, there is no better way<00:03:35.600> than<00:03:35.840> becoming<00:03:36.400> a<00:03:36.480> member<00:03:37.040> on<00:03:37.280> YouTube<00:03:37.800> or" + }, + { + "start": 217.99, + "duration": 0.0, + "text": "way than becoming a member on YouTube or" + }, + { + "start": 218.0, + "duration": 0.0, + "text": "way than becoming a member on YouTube or Patreon.<00:03:38.959> Thank<00:03:39.280> you<00:03:39.600> so<00:03:39.840> much." + }, + { + "start": 221.43, + "duration": 0.0, + "text": "Patreon. Thank you so much." + }, + { + "start": 221.44, + "duration": 0.0, + "text": "Patreon. Thank you so much. >> So,<00:03:41.480> anyways,<00:03:42.360> when<00:03:42.519> you<00:03:42.640> run<00:03:43.360> the<00:03:43.920> debugger" + }, + { + "start": 225.07, + "duration": 0.0, + "text": ">> So, anyways, when you run the debugger" + }, + { + "start": 225.08, + "duration": 0.0, + "text": ">> So, anyways, when you run the debugger with<00:03:45.280> that<00:03:45.440> command<00:03:45.760> line,<00:03:46.000> it'll<00:03:46.280> create<00:03:46.519> one" + }, + { + "start": 226.63, + "duration": 0.0, + "text": "with that command line, it'll create one" + }, + { + "start": 226.64, + "duration": 0.0, + "text": "with that command line, it'll create one of<00:03:46.720> these<00:03:47.120> just<00:03:47.360> for<00:03:47.600> you.<00:03:48.440> Um<00:03:48.519> it'll<00:03:48.640> be" + }, + { + "start": 228.75, + "duration": 0.0, + "text": "of these just for you. Um it'll be" + }, + { + "start": 228.76, + "duration": 0.0, + "text": "of these just for you. Um it'll be thrown<00:03:49.000> away<00:03:49.239> when<00:03:49.400> you<00:03:49.519> exit<00:03:49.800> the<00:03:49.880> debugger." + }, + { + "start": 230.229, + "duration": 0.0, + "text": "thrown away when you exit the debugger." + }, + { + "start": 230.239, + "duration": 0.0, + "text": "thrown away when you exit the debugger. So,<00:03:50.440> it<00:03:50.519> won't<00:03:51.160> uh<00:03:51.320> like<00:03:51.680> stick<00:03:51.880> around.<00:03:52.160> You" + }, + { + "start": 232.229, + "duration": 0.0, + "text": "So, it won't uh like stick around. You" + }, + { + "start": 232.239, + "duration": 0.0, + "text": "So, it won't uh like stick around. You can<00:03:52.360> run<00:03:52.960> the<00:03:53.040> debugger<00:03:53.360> that<00:03:53.520> way<00:03:53.680> every" + }, + { + "start": 233.87, + "duration": 0.0, + "text": "can run the debugger that way every" + }, + { + "start": 233.88, + "duration": 0.0, + "text": "can run the debugger that way every single<00:03:54.080> time<00:03:54.320> if<00:03:54.440> you<00:03:54.520> want<00:03:54.720> to." + }, + { + "start": 235.67, + "duration": 0.0, + "text": "single time if you want to." + }, + { + "start": 235.68, + "duration": 0.0, + "text": "single time if you want to. Um" + }, + { + "start": 236.83, + "duration": 0.0, + "text": "Um" + }, + { + "start": 236.84, + "duration": 0.0, + "text": "Um Or<00:03:57.040> you<00:03:57.120> can<00:03:57.280> create<00:03:57.480> a<00:03:57.520> target<00:03:57.840> within<00:03:58.080> the" + }, + { + "start": 238.11, + "duration": 0.0, + "text": "Or you can create a target within the" + }, + { + "start": 238.12, + "duration": 0.0, + "text": "Or you can create a target within the context<00:03:58.880> of<00:03:59.680> the<00:03:59.800> debugger's<00:04:00.240> UI.<00:04:00.560> So,<00:04:00.720> to<00:04:00.840> do" + }, + { + "start": 240.99, + "duration": 0.0, + "text": "context of the debugger's UI. So, to do" + }, + { + "start": 241.0, + "duration": 0.0, + "text": "context of the debugger's UI. So, to do that,<00:04:01.240> all<00:04:01.320> you<00:04:01.440> do<00:04:01.840> is<00:04:02.720> you<00:04:02.800> can<00:04:02.920> click<00:04:03.120> this" + }, + { + "start": 243.27, + "duration": 0.0, + "text": "that, all you do is you can click this" + }, + { + "start": 243.28, + "duration": 0.0, + "text": "that, all you do is you can click this add<00:04:03.520> target<00:04:03.840> thing.<00:04:04.160> Actually,<00:04:04.680> maybe<00:04:04.920> what<00:04:05.080> I" + }, + { + "start": 245.11, + "duration": 0.0, + "text": "add target thing. Actually, maybe what I" + }, + { + "start": 245.12, + "duration": 0.0, + "text": "add target thing. Actually, maybe what I should<00:04:05.280> do<00:04:05.560> is<00:04:05.720> show<00:04:05.920> how<00:04:06.040> the<00:04:06.160> UI<00:04:07.120> paneling" + }, + { + "start": 247.51, + "duration": 0.0, + "text": "should do is show how the UI paneling" + }, + { + "start": 247.52, + "duration": 0.0, + "text": "should do is show how the UI paneling works<00:04:07.760> first.<00:04:08.160> So,<00:04:08.320> like<00:04:09.160> um<00:04:09.560> cuz" + }, + { + "start": 250.47, + "duration": 0.0, + "text": "works first. So, like um cuz" + }, + { + "start": 250.48, + "duration": 0.0, + "text": "works first. So, like um cuz it<00:04:10.680> comes<00:04:11.000> like<00:04:11.160> preloaded<00:04:11.640> with<00:04:11.760> a<00:04:11.800> bunch<00:04:12.000> of" + }, + { + "start": 252.11, + "duration": 0.0, + "text": "it comes like preloaded with a bunch of" + }, + { + "start": 252.12, + "duration": 0.0, + "text": "it comes like preloaded with a bunch of default<00:04:12.520> layouts<00:04:12.920> or<00:04:13.000> three<00:04:13.320> default" + }, + { + "start": 253.67, + "duration": 0.0, + "text": "default layouts or three default" + }, + { + "start": 253.68, + "duration": 0.0, + "text": "default layouts or three default layouts.<00:04:14.560> And<00:04:14.680> I<00:04:14.760> can<00:04:14.880> show<00:04:15.080> people<00:04:15.400> how<00:04:15.680> to" + }, + { + "start": 256.789, + "duration": 0.0, + "text": "layouts. And I can show people how to" + }, + { + "start": 256.799, + "duration": 0.0, + "text": "layouts. And I can show people how to get<00:04:17.000> to<00:04:17.079> this<00:04:17.239> tab<00:04:17.560> if<00:04:17.640> they<00:04:17.720> don't<00:04:17.959> see<00:04:18.160> it<00:04:18.320> or" + }, + { + "start": 258.67, + "duration": 0.0, + "text": "get to this tab if they don't see it or" + }, + { + "start": 258.68, + "duration": 0.0, + "text": "get to this tab if they don't see it or or<00:04:18.799> have<00:04:19.000> it<00:04:19.079> or<00:04:19.160> something<00:04:19.400> like<00:04:19.519> that.<00:04:19.760> So," + }, + { + "start": 260.71, + "duration": 0.0, + "text": "or have it or something like that. So," + }, + { + "start": 260.72, + "duration": 0.0, + "text": "or have it or something like that. So, um<00:04:21.000> obviously<00:04:21.880> um" + }, + { + "start": 263.27, + "duration": 0.0, + "text": "um obviously um" + }, + { + "start": 263.28, + "duration": 0.0, + "text": "um obviously um uh<00:04:23.720> when<00:04:24.400> this<00:04:24.600> is<00:04:24.720> one<00:04:24.840> of<00:04:24.919> the<00:04:25.000> default" + }, + { + "start": 265.35, + "duration": 0.0, + "text": "uh when this is one of the default" + }, + { + "start": 265.36, + "duration": 0.0, + "text": "uh when this is one of the default layouts,<00:04:26.280> uh<00:04:26.680> and<00:04:26.840> I<00:04:26.919> pick<00:04:27.160> one<00:04:27.280> of<00:04:27.320> these" + }, + { + "start": 267.47, + "duration": 0.0, + "text": "layouts, uh and I pick one of these" + }, + { + "start": 267.48, + "duration": 0.0, + "text": "layouts, uh and I pick one of these depending<00:04:27.800> on<00:04:27.919> screen<00:04:28.240> size.<00:04:28.520> So,<00:04:29.080> the" + }, + { + "start": 269.19, + "duration": 0.0, + "text": "depending on screen size. So, the" + }, + { + "start": 269.2, + "duration": 0.0, + "text": "depending on screen size. So, the default<00:04:29.600> layout<00:04:29.840> is<00:04:29.960> like<00:04:30.160> this,<00:04:30.400> but<00:04:30.520> you<00:04:30.600> can" + }, + { + "start": 270.71, + "duration": 0.0, + "text": "default layout is like this, but you can" + }, + { + "start": 270.72, + "duration": 0.0, + "text": "default layout is like this, but you can see<00:04:30.840> it<00:04:30.960> doesn't<00:04:31.240> work<00:04:31.440> super<00:04:31.720> well<00:04:31.960> when<00:04:32.080> you" + }, + { + "start": 272.15, + "duration": 0.0, + "text": "see it doesn't work super well when you" + }, + { + "start": 272.16, + "duration": 0.0, + "text": "see it doesn't work super well when you have<00:04:32.320> like<00:04:32.480> a<00:04:32.560> larger<00:04:32.880> font<00:04:33.120> size.<00:04:33.360> Like,<00:04:33.480> if" + }, + { + "start": 273.55, + "duration": 0.0, + "text": "have like a larger font size. Like, if" + }, + { + "start": 273.56, + "duration": 0.0, + "text": "have like a larger font size. Like, if you're<00:04:33.680> on<00:04:33.760> a<00:04:33.800> super<00:04:34.080> high<00:04:34.240> DPI<00:04:35.360> monitor,<00:04:35.840> this" + }, + { + "start": 275.99, + "duration": 0.0, + "text": "you're on a super high DPI monitor, this" + }, + { + "start": 276.0, + "duration": 0.0, + "text": "you're on a super high DPI monitor, this is<00:04:36.080> just<00:04:36.320> a<00:04:36.360> little<00:04:36.560> bit<00:04:36.919> like<00:04:37.560> chaotic.<00:04:38.280> Um" + }, + { + "start": 278.83, + "duration": 0.0, + "text": "is just a little bit like chaotic. Um" + }, + { + "start": 278.84, + "duration": 0.0, + "text": "is just a little bit like chaotic. Um in<00:04:38.919> fact,<00:04:39.120> I<00:04:39.160> think<00:04:39.320> it<00:04:39.360> might<00:04:39.480> be<00:04:39.560> a<00:04:39.600> little" + }, + { + "start": 279.83, + "duration": 0.0, + "text": "in fact, I think it might be a little" + }, + { + "start": 279.84, + "duration": 0.0, + "text": "in fact, I think it might be a little bit<00:04:40.080> too<00:04:40.240> chaotic<00:04:40.680> anyways,<00:04:41.080> but<00:04:41.200> it's" + }, + { + "start": 281.47, + "duration": 0.0, + "text": "bit too chaotic anyways, but it's" + }, + { + "start": 281.48, + "duration": 0.0, + "text": "bit too chaotic anyways, but it's especially<00:04:41.840> chaotic<00:04:42.200> if<00:04:42.320> you<00:04:42.400> have<00:04:42.560> like<00:04:42.720> a" + }, + { + "start": 282.75, + "duration": 0.0, + "text": "especially chaotic if you have like a" + }, + { + "start": 282.76, + "duration": 0.0, + "text": "especially chaotic if you have like a smaller" + }, + { + "start": 284.23, + "duration": 0.0, + "text": "smaller" + }, + { + "start": 284.24, + "duration": 0.0, + "text": "smaller um<00:04:44.720> if<00:04:44.880> you<00:04:44.919> have<00:04:45.040> a<00:04:45.080> larger<00:04:45.320> font<00:04:45.560> size," + }, + { + "start": 285.75, + "duration": 0.0, + "text": "um if you have a larger font size," + }, + { + "start": 285.76, + "duration": 0.0, + "text": "um if you have a larger font size, basically,<00:04:46.440> um<00:04:46.840> on<00:04:47.080> a<00:04:47.400> higher<00:04:47.600> DPI<00:04:47.919> screen." + }, + { + "start": 288.23, + "duration": 0.0, + "text": "basically, um on a higher DPI screen." + }, + { + "start": 288.24, + "duration": 0.0, + "text": "basically, um on a higher DPI screen. So," + }, + { + "start": 289.59, + "duration": 0.0, + "text": "So," + }, + { + "start": 289.6, + "duration": 0.0, + "text": "So, um<00:04:49.960> many<00:04:50.160> times<00:04:50.400> it'll<00:04:50.560> pick<00:04:50.720> this<00:04:50.880> compact" + }, + { + "start": 291.43, + "duration": 0.0, + "text": "um many times it'll pick this compact" + }, + { + "start": 291.44, + "duration": 0.0, + "text": "um many times it'll pick this compact layout." + }, + { + "start": 292.59, + "duration": 0.0, + "text": "layout." + }, + { + "start": 292.6, + "duration": 0.0, + "text": "layout. This<00:04:52.840> still<00:04:53.040> has<00:04:53.200> a<00:04:53.280> lot<00:04:53.440> of<00:04:53.520> stuff<00:04:53.800> that<00:04:53.919> you" + }, + { + "start": 293.99, + "duration": 0.0, + "text": "This still has a lot of stuff that you" + }, + { + "start": 294.0, + "duration": 0.0, + "text": "This still has a lot of stuff that you might<00:04:54.120> just<00:04:54.280> not<00:04:54.440> care<00:04:54.640> about.<00:04:55.040> And<00:04:55.120> then" + }, + { + "start": 295.23, + "duration": 0.0, + "text": "might just not care about. And then" + }, + { + "start": 295.24, + "duration": 0.0, + "text": "might just not care about. And then there's<00:04:55.440> this<00:04:55.640> simple<00:04:55.960> panel<00:04:56.280> layout,<00:04:56.520> which" + }, + { + "start": 296.67, + "duration": 0.0, + "text": "there's this simple panel layout, which" + }, + { + "start": 296.68, + "duration": 0.0, + "text": "there's this simple panel layout, which is<00:04:56.800> literally<00:04:57.280> an<00:04:57.400> area<00:04:57.640> for<00:04:57.760> source<00:04:58.000> code<00:04:58.560> and" + }, + { + "start": 298.67, + "duration": 0.0, + "text": "is literally an area for source code and" + }, + { + "start": 298.68, + "duration": 0.0, + "text": "is literally an area for source code and an<00:04:58.760> area<00:04:59.080> for" + }, + { + "start": 300.15, + "duration": 0.0, + "text": "an area for" + }, + { + "start": 300.16, + "duration": 0.0, + "text": "an area for uh<00:05:00.360> a<00:05:00.440> watch<00:05:00.680> window.<00:05:01.040> Now," + }, + { + "start": 302.87, + "duration": 0.0, + "text": "uh a watch window. Now," + }, + { + "start": 302.88, + "duration": 0.0, + "text": "uh a watch window. Now, I<00:05:02.919> could<00:05:03.120> start<00:05:03.280> with<00:05:03.400> this.<00:05:04.080> Um<00:05:04.880> what<00:05:05.040> I" + }, + { + "start": 305.11, + "duration": 0.0, + "text": "I could start with this. Um what I" + }, + { + "start": 305.12, + "duration": 0.0, + "text": "I could start with this. Um what I should<00:05:05.400> say<00:05:05.560> first<00:05:05.880> is<00:05:05.960> that<00:05:06.200> no-<00:05:06.440> nothing" + }, + { + "start": 306.71, + "duration": 0.0, + "text": "should say first is that no- nothing" + }, + { + "start": 306.72, + "duration": 0.0, + "text": "should say first is that no- nothing about<00:05:06.880> these<00:05:07.000> panels<00:05:07.320> are<00:05:07.400> special,<00:05:08.040> so<00:05:08.240> I<00:05:08.280> can" + }, + { + "start": 308.51, + "duration": 0.0, + "text": "about these panels are special, so I can" + }, + { + "start": 308.52, + "duration": 0.0, + "text": "about these panels are special, so I can I<00:05:08.600> can<00:05:08.840> rearrange<00:05:09.360> these<00:05:09.600> however<00:05:09.880> I<00:05:09.960> want.<00:05:10.680> Um" + }, + { + "start": 311.19, + "duration": 0.0, + "text": "I can rearrange these however I want. Um" + }, + { + "start": 311.2, + "duration": 0.0, + "text": "I can rearrange these however I want. Um it's<00:05:11.360> just<00:05:11.880> I<00:05:11.919> can<00:05:12.000> put<00:05:12.120> them<00:05:12.200> both<00:05:12.360> on<00:05:12.440> the" + }, + { + "start": 312.51, + "duration": 0.0, + "text": "it's just I can put them both on the" + }, + { + "start": 312.52, + "duration": 0.0, + "text": "it's just I can put them both on the same<00:05:12.720> tab<00:05:12.960> if<00:05:13.080> I<00:05:13.120> want<00:05:13.400> to.<00:05:13.560> I<00:05:13.640> can<00:05:13.760> do<00:05:14.480> like" + }, + { + "start": 314.67, + "duration": 0.0, + "text": "same tab if I want to. I can do like" + }, + { + "start": 314.68, + "duration": 0.0, + "text": "same tab if I want to. I can do like whatever<00:05:14.919> kind<00:05:15.120> of<00:05:15.200> organization<00:05:15.760> I<00:05:15.840> want," + }, + { + "start": 316.51, + "duration": 0.0, + "text": "whatever kind of organization I want," + }, + { + "start": 316.52, + "duration": 0.0, + "text": "whatever kind of organization I want, that'll<00:05:16.800> just<00:05:17.240> be<00:05:17.400> fine.<00:05:18.240> Um" + }, + { + "start": 319.71, + "duration": 0.0, + "text": "that'll just be fine. Um" + }, + { + "start": 319.72, + "duration": 0.0, + "text": "that'll just be fine. Um So,<00:05:19.880> if<00:05:20.120> I<00:05:20.160> have<00:05:20.400> nothing," + }, + { + "start": 321.63, + "duration": 0.0, + "text": "So, if I have nothing," + }, + { + "start": 321.64, + "duration": 0.0, + "text": "So, if I have nothing, um<00:05:22.000> it'll<00:05:22.160> just<00:05:22.360> have<00:05:22.480> this<00:05:22.680> empty<00:05:22.960> panel" + }, + { + "start": 323.27, + "duration": 0.0, + "text": "um it'll just have this empty panel" + }, + { + "start": 323.28, + "duration": 0.0, + "text": "um it'll just have this empty panel here.<00:05:24.000> I<00:05:24.080> can<00:05:24.600> uh<00:05:24.680> I<00:05:24.760> can<00:05:24.880> click<00:05:25.080> this<00:05:25.240> plus<00:05:25.480> to" + }, + { + "start": 325.59, + "duration": 0.0, + "text": "here. I can uh I can click this plus to" + }, + { + "start": 325.6, + "duration": 0.0, + "text": "here. I can uh I can click this plus to add<00:05:25.720> a<00:05:25.760> new<00:05:25.919> tab.<00:05:26.600> I<00:05:26.640> can<00:05:26.760> add<00:05:26.880> a<00:05:26.919> watch<00:05:27.200> window." + }, + { + "start": 328.39, + "duration": 0.0, + "text": "add a new tab. I can add a watch window." + }, + { + "start": 328.4, + "duration": 0.0, + "text": "add a new tab. I can add a watch window. Um<00:05:28.560> and<00:05:28.680> then<00:05:28.760> if<00:05:28.880> I<00:05:28.919> want<00:05:29.120> to<00:05:29.160> look<00:05:29.280> at<00:05:29.360> my" + }, + { + "start": 329.43, + "duration": 0.0, + "text": "Um and then if I want to look at my" + }, + { + "start": 329.44, + "duration": 0.0, + "text": "Um and then if I want to look at my targets,<00:05:30.000> I<00:05:30.080> can<00:05:30.840> uh<00:05:30.960> I<00:05:31.000> can<00:05:31.160> search<00:05:31.600> by" + }, + { + "start": 331.71, + "duration": 0.0, + "text": "targets, I can uh I can search by" + }, + { + "start": 331.72, + "duration": 0.0, + "text": "targets, I can uh I can search by typing,<00:05:32.320> and<00:05:32.480> there's<00:05:32.680> just<00:05:32.840> a<00:05:32.880> targets<00:05:33.200> tab" + }, + { + "start": 333.39, + "duration": 0.0, + "text": "typing, and there's just a targets tab" + }, + { + "start": 333.4, + "duration": 0.0, + "text": "typing, and there's just a targets tab that<00:05:33.520> I<00:05:33.560> can<00:05:33.680> open<00:05:33.880> up,<00:05:33.960> and<00:05:34.080> there's<00:05:34.320> all<00:05:34.400> my" + }, + { + "start": 334.51, + "duration": 0.0, + "text": "that I can open up, and there's all my" + }, + { + "start": 334.52, + "duration": 0.0, + "text": "that I can open up, and there's all my targets." + }, + { + "start": 336.75, + "duration": 0.0, + "text": "targets." + }, + { + "start": 336.76, + "duration": 0.0, + "text": "targets. Um" + }, + { + "start": 338.07, + "duration": 0.0, + "text": "Um" + }, + { + "start": 338.08, + "duration": 0.0, + "text": "Um So,<00:05:38.200> anyways," + }, + { + "start": 339.39, + "duration": 0.0, + "text": "So, anyways," + }, + { + "start": 339.4, + "duration": 0.0, + "text": "So, anyways, we're<00:05:39.520> at<00:05:39.600> the<00:05:39.680> list<00:05:39.840> of<00:05:39.919> targets.<00:05:40.240> We<00:05:40.280> have" + }, + { + "start": 340.39, + "duration": 0.0, + "text": "we're at the list of targets. We have" + }, + { + "start": 340.4, + "duration": 0.0, + "text": "we're at the list of targets. We have all<00:05:40.520> these<00:05:40.760> executables<00:05:41.280> we<00:05:41.400> can<00:05:41.560> launch<00:05:41.840> and" + }, + { + "start": 341.95, + "duration": 0.0, + "text": "all these executables we can launch and" + }, + { + "start": 341.96, + "duration": 0.0, + "text": "all these executables we can launch and debug." + }, + { + "start": 344.07, + "duration": 0.0, + "text": "debug." + }, + { + "start": 344.08, + "duration": 0.0, + "text": "debug. Um<00:05:44.840> if<00:05:45.040> I<00:05:45.160> don't<00:05:45.640> have<00:05:46.400> the<00:05:46.520> one<00:05:46.720> I<00:05:46.800> want<00:05:47.120> to<00:05:47.400> run" + }, + { + "start": 347.63, + "duration": 0.0, + "text": "Um if I don't have the one I want to run" + }, + { + "start": 347.64, + "duration": 0.0, + "text": "Um if I don't have the one I want to run from<00:05:47.800> here,<00:05:48.360> I<00:05:48.440> can<00:05:48.600> click<00:05:48.800> add<00:05:49.000> target," + }, + { + "start": 349.75, + "duration": 0.0, + "text": "from here, I can click add target," + }, + { + "start": 349.76, + "duration": 0.0, + "text": "from here, I can click add target, brings<00:05:49.960> up<00:05:50.080> this<00:05:50.200> little<00:05:50.440> file,<00:05:51.600> um" + }, + { + "start": 352.51, + "duration": 0.0, + "text": "brings up this little file, um" + }, + { + "start": 352.52, + "duration": 0.0, + "text": "brings up this little file, um this<00:05:52.880> this<00:05:53.080> like<00:05:53.400> file<00:05:53.720> browser,<00:05:54.760> um" + }, + { + "start": 356.59, + "duration": 0.0, + "text": "this this like file browser, um" + }, + { + "start": 356.6, + "duration": 0.0, + "text": "this this like file browser, um and<00:05:56.720> I<00:05:56.760> don't<00:05:56.960> know.<00:05:57.080> I<00:05:57.120> mean,<00:05:57.280> I've<00:05:57.400> added<00:05:57.600> all" + }, + { + "start": 357.67, + "duration": 0.0, + "text": "and I don't know. I mean, I've added all" + }, + { + "start": 357.68, + "duration": 0.0, + "text": "and I don't know. I mean, I've added all the<00:05:57.800> executables<00:05:58.360> I<00:05:58.400> care<00:05:58.640> to<00:05:58.760> show,<00:05:59.120> but<00:05:59.880> I" + }, + { + "start": 359.99, + "duration": 0.0, + "text": "the executables I care to show, but I" + }, + { + "start": 360.0, + "duration": 0.0, + "text": "the executables I care to show, but I can<00:06:00.160> just<00:06:00.320> go<00:06:00.520> to<00:06:00.680> like" + }, + { + "start": 361.87, + "duration": 0.0, + "text": "can just go to like" + }, + { + "start": 361.88, + "duration": 0.0, + "text": "can just go to like like,<00:06:02.040> you<00:06:02.120> know,<00:06:02.240> you<00:06:02.320> can<00:06:02.440> just<00:06:02.600> type" + }, + { + "start": 363.75, + "duration": 0.0, + "text": "like, you know, you can just type" + }, + { + "start": 363.76, + "duration": 0.0, + "text": "like, you know, you can just type find<00:06:03.960> whatever<00:06:04.200> path<00:06:04.480> you<00:06:04.600> want,<00:06:05.200> um" + }, + { + "start": 365.91, + "duration": 0.0, + "text": "find whatever path you want, um" + }, + { + "start": 365.92, + "duration": 0.0, + "text": "find whatever path you want, um >> at<00:06:06.040> the<00:06:06.120> debugger<00:06:06.520> itself." + }, + { + "start": 368.27, + "duration": 0.0, + "text": ">> at the debugger itself." + }, + { + "start": 368.28, + "duration": 0.0, + "text": ">> at the debugger itself. >> I<00:06:08.560> I<00:06:08.640> already<00:06:08.880> have<00:06:09.040> that<00:06:09.200> one<00:06:09.560> right<00:06:09.760> here." + }, + { + "start": 370.31, + "duration": 0.0, + "text": ">> I I already have that one right here." + }, + { + "start": 370.32, + "duration": 0.0, + "text": ">> I I already have that one right here. This<00:06:10.480> is<00:06:10.600> the<00:06:10.680> This<00:06:10.840> is<00:06:10.920> the<00:06:10.960> one<00:06:11.080> I<00:06:11.120> use<00:06:11.320> for" + }, + { + "start": 371.67, + "duration": 0.0, + "text": "This is the This is the one I use for" + }, + { + "start": 371.68, + "duration": 0.0, + "text": "This is the This is the one I use for actually<00:06:12.080> working<00:06:12.360> on<00:06:12.440> the<00:06:12.480> debugger,<00:06:12.800> but" + }, + { + "start": 373.31, + "duration": 0.0, + "text": "actually working on the debugger, but" + }, + { + "start": 373.32, + "duration": 0.0, + "text": "actually working on the debugger, but yeah,<00:06:13.480> I<00:06:13.520> mean,<00:06:13.680> if<00:06:13.800> I<00:06:13.880> wanted<00:06:14.200> to<00:06:14.400> do<00:06:14.600> that," + }, + { + "start": 374.79, + "duration": 0.0, + "text": "yeah, I mean, if I wanted to do that," + }, + { + "start": 374.8, + "duration": 0.0, + "text": "yeah, I mean, if I wanted to do that, I'd<00:06:14.920> just<00:06:15.080> do<00:06:15.840> radare2.exe," + }, + { + "start": 377.43, + "duration": 0.0, + "text": "I'd just do radare2.exe," + }, + { + "start": 377.44, + "duration": 0.0, + "text": "I'd just do radare2.exe, opens<00:06:17.760> up<00:06:17.880> the<00:06:17.960> editor<00:06:18.320> for<00:06:18.520> it.<00:06:18.600> I<00:06:18.640> can<00:06:18.760> say" + }, + { + "start": 378.909, + "duration": 0.0, + "text": "opens up the editor for it. I can say" + }, + { + "start": 378.919, + "duration": 0.0, + "text": "opens up the editor for it. I can say like<00:06:19.200> dash<00:06:19.480> foo,<00:06:19.720> dash<00:06:20.000> bar,<00:06:20.960> um<00:06:21.040> whatever<00:06:21.280> I" + }, + { + "start": 381.35, + "duration": 0.0, + "text": "like dash foo, dash bar, um whatever I" + }, + { + "start": 381.36, + "duration": 0.0, + "text": "like dash foo, dash bar, um whatever I want<00:06:21.640> here,<00:06:22.360> um<00:06:22.640> and<00:06:22.760> then" + }, + { + "start": 384.07, + "duration": 0.0, + "text": "want here, um and then" + }, + { + "start": 384.08, + "duration": 0.0, + "text": "want here, um and then this<00:06:24.240> is<00:06:24.320> something<00:06:24.560> I<00:06:24.600> can<00:06:24.720> now<00:06:24.919> launch.<00:06:25.440> So," + }, + { + "start": 385.83, + "duration": 0.0, + "text": "this is something I can now launch. So," + }, + { + "start": 385.84, + "duration": 0.0, + "text": "this is something I can now launch. So, I'll<00:06:25.960> remove<00:06:26.240> it<00:06:26.360> cuz<00:06:26.560> I<00:06:26.640> already<00:06:26.880> have<00:06:27.080> one" + }, + { + "start": 387.23, + "duration": 0.0, + "text": "I'll remove it cuz I already have one" + }, + { + "start": 387.24, + "duration": 0.0, + "text": "I'll remove it cuz I already have one for<00:06:27.440> it." + }, + { + "start": 389.15, + "duration": 0.0, + "text": "for it." + }, + { + "start": 389.16, + "duration": 0.0, + "text": "for it. Um" + }, + { + "start": 390.19, + "duration": 0.0, + "text": "Um" + }, + { + "start": 390.2, + "duration": 0.0, + "text": "Um but<00:06:30.280> anyways,<00:06:30.640> I've<00:06:30.760> got<00:06:31.200> an<00:06:31.280> executable<00:06:31.760> that" + }, + { + "start": 391.87, + "duration": 0.0, + "text": "but anyways, I've got an executable that" + }, + { + "start": 391.88, + "duration": 0.0, + "text": "but anyways, I've got an executable that I<00:06:31.919> want<00:06:32.080> to<00:06:32.160> debug.<00:06:33.120> Um<00:06:33.640> I<00:06:33.919> can<00:06:34.280> either<00:06:34.720> run<00:06:35.000> it." + }, + { + "start": 395.55, + "duration": 0.0, + "text": "I want to debug. Um I can either run it." + }, + { + "start": 395.56, + "duration": 0.0, + "text": "I want to debug. Um I can either run it. Um<00:06:35.840> in<00:06:35.960> this<00:06:36.080> case,<00:06:36.240> it's<00:06:36.360> a<00:06:36.400> test<00:06:36.720> executable" + }, + { + "start": 397.19, + "duration": 0.0, + "text": "Um in this case, it's a test executable" + }, + { + "start": 397.2, + "duration": 0.0, + "text": "Um in this case, it's a test executable that<00:06:37.520> you<00:06:37.640> want<00:06:37.840> to<00:06:37.919> step<00:06:38.160> through,<00:06:38.480> so<00:06:38.640> I" + }, + { + "start": 398.71, + "duration": 0.0, + "text": "that you want to step through, so I" + }, + { + "start": 398.72, + "duration": 0.0, + "text": "that you want to step through, so I won't<00:06:39.080> I<00:06:39.120> won't<00:06:39.280> do<00:06:39.360> that.<00:06:40.080> Um<00:06:40.560> but<00:06:40.640> I<00:06:40.680> can<00:06:40.760> also" + }, + { + "start": 400.95, + "duration": 0.0, + "text": "won't I won't do that. Um but I can also" + }, + { + "start": 400.96, + "duration": 0.0, + "text": "won't I won't do that. Um but I can also step<00:06:41.240> into<00:06:41.480> it<00:06:41.600> using<00:06:41.960> either<00:06:42.160> step<00:06:42.400> over<00:06:42.600> step" + }, + { + "start": 403.31, + "duration": 0.0, + "text": "step into it using either step over step" + }, + { + "start": 403.32, + "duration": 0.0, + "text": "step into it using either step over step uh<00:06:43.440> into.<00:06:43.760> It<00:06:43.840> doesn't<00:06:44.120> matter<00:06:44.360> which" + }, + { + "start": 404.55, + "duration": 0.0, + "text": "uh into. It doesn't matter which" + }, + { + "start": 404.56, + "duration": 0.0, + "text": "uh into. It doesn't matter which command,<00:06:45.000> but<00:06:45.760> um" + }, + { + "start": 406.909, + "duration": 0.0, + "text": "command, but um" + }, + { + "start": 406.919, + "duration": 0.0, + "text": "command, but um so<00:06:47.000> I<00:06:47.040> can<00:06:47.160> run<00:06:47.360> either<00:06:47.560> one<00:06:47.680> of<00:06:47.760> these<00:06:47.919> to<00:06:48.000> get" + }, + { + "start": 408.11, + "duration": 0.0, + "text": "so I can run either one of these to get" + }, + { + "start": 408.12, + "duration": 0.0, + "text": "so I can run either one of these to get into<00:06:48.280> the<00:06:48.360> program.<00:06:48.960> Now,<00:06:49.720> another<00:06:50.080> thing<00:06:50.240> I" + }, + { + "start": 410.27, + "duration": 0.0, + "text": "into the program. Now, another thing I" + }, + { + "start": 410.28, + "duration": 0.0, + "text": "into the program. Now, another thing I should<00:06:50.440> mention<00:06:50.680> about<00:06:50.880> the<00:06:50.960> UI<00:06:51.320> before" + }, + { + "start": 412.11, + "duration": 0.0, + "text": "should mention about the UI before" + }, + { + "start": 412.12, + "duration": 0.0, + "text": "should mention about the UI before getting<00:06:52.360> into<00:06:52.480> the<00:06:52.600> actual<00:06:52.840> debugging," + }, + { + "start": 414.71, + "duration": 0.0, + "text": "getting into the actual debugging," + }, + { + "start": 414.72, + "duration": 0.0, + "text": "getting into the actual debugging, 100%<00:06:55.440> of<00:06:55.520> the<00:06:55.600> operations<00:06:56.160> I've<00:06:56.600> covered<00:06:56.919> so" + }, + { + "start": 417.07, + "duration": 0.0, + "text": "100% of the operations I've covered so" + }, + { + "start": 417.08, + "duration": 0.0, + "text": "100% of the operations I've covered so far<00:06:57.480> can<00:06:57.760> be<00:06:58.000> done<00:06:58.560> through<00:06:59.240> uh<00:06:59.680> generalized" + }, + { + "start": 420.39, + "duration": 0.0, + "text": "far can be done through uh generalized" + }, + { + "start": 420.4, + "duration": 0.0, + "text": "far can be done through uh generalized command<00:07:01.040> lister.<00:07:01.400> So,<00:07:01.600> basically,<00:07:02.120> if<00:07:02.240> you" + }, + { + "start": 422.31, + "duration": 0.0, + "text": "command lister. So, basically, if you" + }, + { + "start": 422.32, + "duration": 0.0, + "text": "command lister. So, basically, if you hit<00:07:02.560> the<00:07:02.680> help<00:07:03.440> menu<00:07:03.720> up<00:07:03.840> here,<00:07:04.520> it's<00:07:04.720> got<00:07:04.960> a" + }, + { + "start": 425.07, + "duration": 0.0, + "text": "hit the help menu up here, it's got a" + }, + { + "start": 425.08, + "duration": 0.0, + "text": "hit the help menu up here, it's got a search<00:07:05.320> for<00:07:05.440> commands<00:07:05.760> and<00:07:05.880> settings,<00:07:06.360> and" + }, + { + "start": 426.47, + "duration": 0.0, + "text": "search for commands and settings, and" + }, + { + "start": 426.48, + "duration": 0.0, + "text": "search for commands and settings, and you<00:07:06.560> can<00:07:06.640> see<00:07:06.800> you<00:07:06.919> can<00:07:07.160> you<00:07:07.280> can<00:07:08.000> trigger<00:07:08.240> this" + }, + { + "start": 428.43, + "duration": 0.0, + "text": "you can see you can you can trigger this" + }, + { + "start": 428.44, + "duration": 0.0, + "text": "you can see you can you can trigger this quickly<00:07:08.760> by<00:07:08.880> hitting<00:07:09.120> F1.<00:07:10.080> But<00:07:10.160> if<00:07:10.240> I<00:07:10.320> click" + }, + { + "start": 430.51, + "duration": 0.0, + "text": "quickly by hitting F1. But if I click" + }, + { + "start": 430.52, + "duration": 0.0, + "text": "quickly by hitting F1. But if I click that,<00:07:10.720> it<00:07:10.800> opens<00:07:11.160> up<00:07:11.480> this" + }, + { + "start": 432.43, + "duration": 0.0, + "text": "that, it opens up this" + }, + { + "start": 432.44, + "duration": 0.0, + "text": "that, it opens up this uh<00:07:12.880> lister<00:07:13.240> here,<00:07:13.520> and<00:07:13.600> this<00:07:13.720> shows<00:07:13.960> all<00:07:14.160> of" + }, + { + "start": 434.23, + "duration": 0.0, + "text": "uh lister here, and this shows all of" + }, + { + "start": 434.24, + "duration": 0.0, + "text": "uh lister here, and this shows all of the<00:07:14.360> commands<00:07:14.680> that<00:07:14.800> you<00:07:14.880> can<00:07:15.000> do<00:07:15.160> in<00:07:15.240> the" + }, + { + "start": 435.31, + "duration": 0.0, + "text": "the commands that you can do in the" + }, + { + "start": 435.32, + "duration": 0.0, + "text": "the commands that you can do in the debugger.<00:07:15.680> So,<00:07:15.800> I<00:07:15.840> can<00:07:16.000> say<00:07:16.200> like<00:07:17.040> a<00:07:17.200> launch" + }, + { + "start": 437.67, + "duration": 0.0, + "text": "debugger. So, I can say like a launch" + }, + { + "start": 437.68, + "duration": 0.0, + "text": "debugger. So, I can say like a launch and<00:07:17.919> step<00:07:18.200> into" + }, + { + "start": 439.27, + "duration": 0.0, + "text": "and step into" + }, + { + "start": 439.28, + "duration": 0.0, + "text": "and step into um<00:07:19.760> if<00:07:19.919> I<00:07:19.960> run<00:07:20.200> that,<00:07:20.560> it'll<00:07:20.720> ask<00:07:20.919> me<00:07:21.000> for<00:07:21.120> a" + }, + { + "start": 441.19, + "duration": 0.0, + "text": "um if I run that, it'll ask me for a" + }, + { + "start": 441.2, + "duration": 0.0, + "text": "um if I run that, it'll ask me for a target,<00:07:21.840> and<00:07:21.919> then<00:07:22.040> if<00:07:22.160> I<00:07:22.240> click<00:07:22.480> one," + }, + { + "start": 443.39, + "duration": 0.0, + "text": "target, and then if I click one," + }, + { + "start": 443.4, + "duration": 0.0, + "text": "target, and then if I click one, uh<00:07:23.480> it'll<00:07:24.360> step<00:07:24.680> into<00:07:24.919> that<00:07:25.280> target<00:07:25.600> that<00:07:25.720> I" + }, + { + "start": 445.95, + "duration": 0.0, + "text": "uh it'll step into that target that I" + }, + { + "start": 445.96, + "duration": 0.0, + "text": "uh it'll step into that target that I that<00:07:26.080> I<00:07:26.120> picked.<00:07:26.400> That's<00:07:27.080> uh<00:07:27.160> that's<00:07:27.760> a<00:07:27.840> slower" + }, + { + "start": 448.27, + "duration": 0.0, + "text": "that I picked. That's uh that's a slower" + }, + { + "start": 448.28, + "duration": 0.0, + "text": "that I picked. That's uh that's a slower path<00:07:28.600> for<00:07:28.760> just<00:07:28.960> like<00:07:29.160> if<00:07:29.320> I've<00:07:29.440> got<00:07:29.640> this" + }, + { + "start": 449.79, + "duration": 0.0, + "text": "path for just like if I've got this" + }, + { + "start": 449.8, + "duration": 0.0, + "text": "path for just like if I've got this target<00:07:30.120> selected,<00:07:30.880> and<00:07:30.960> if<00:07:31.080> I<00:07:31.120> hit<00:07:31.360> F10<00:07:32.000> or" + }, + { + "start": 452.15, + "duration": 0.0, + "text": "target selected, and if I hit F10 or" + }, + { + "start": 452.16, + "duration": 0.0, + "text": "target selected, and if I hit F10 or F11,<00:07:33.160> then<00:07:33.360> it'll<00:07:33.560> just<00:07:33.800> get<00:07:33.960> me<00:07:34.360> to<00:07:34.480> the<00:07:34.560> same" + }, + { + "start": 454.75, + "duration": 0.0, + "text": "F11, then it'll just get me to the same" + }, + { + "start": 454.76, + "duration": 0.0, + "text": "F11, then it'll just get me to the same spot.<00:07:34.960> So,<00:07:35.040> I've<00:07:35.160> stepped<00:07:35.520> into<00:07:35.760> the<00:07:35.840> program." + }, + { + "start": 457.31, + "duration": 0.0, + "text": "spot. So, I've stepped into the program." + }, + { + "start": 457.32, + "duration": 0.0, + "text": "spot. So, I've stepped into the program. Um<00:07:37.680> and<00:07:37.760> now<00:07:37.919> that<00:07:38.080> I'm<00:07:38.400> now<00:07:38.520> that<00:07:38.640> I'm<00:07:38.760> here," + }, + { + "start": 459.67, + "duration": 0.0, + "text": "Um and now that I'm now that I'm here," + }, + { + "start": 459.68, + "duration": 0.0, + "text": "Um and now that I'm now that I'm here, let<00:07:39.840> me<00:07:39.960> do" + }, + { + "start": 461.23, + "duration": 0.0, + "text": "let me do" + }, + { + "start": 461.24, + "duration": 0.0, + "text": "let me do um" + }, + { + "start": 462.55, + "duration": 0.0, + "text": "um" + }, + { + "start": 462.56, + "duration": 0.0, + "text": "um this<00:07:42.840> layout<00:07:43.120> here." + }, + { + "start": 463.735, + "duration": 0.0, + "text": "this layout here." + }, + { + "start": 463.745, + "duration": 0.0, + "text": "this layout here. >> [snorts]" + }, + { + "start": 464.31, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 464.32, + "duration": 0.0, + "text": ">> [snorts] >> So,<00:07:44.840> uh<00:07:44.920> um" + }, + { + "start": 466.91, + "duration": 0.0, + "text": ">> So, uh um" + }, + { + "start": 466.92, + "duration": 0.0, + "text": ">> So, uh um So,<00:07:47.040> yeah,<00:07:47.200> I've<00:07:47.320> got<00:07:47.480> my<00:07:47.600> watch<00:07:47.800> window<00:07:48.120> and" + }, + { + "start": 468.27, + "duration": 0.0, + "text": "So, yeah, I've got my watch window and" + }, + { + "start": 468.28, + "duration": 0.0, + "text": "So, yeah, I've got my watch window and I've<00:07:48.400> got<00:07:48.680> my<00:07:49.080> source<00:07:49.400> view.<00:07:49.600> In<00:07:49.680> the<00:07:49.760> source" + }, + { + "start": 469.99, + "duration": 0.0, + "text": "I've got my source view. In the source" + }, + { + "start": 470.0, + "duration": 0.0, + "text": "I've got my source view. In the source view,<00:07:50.200> obviously,<00:07:50.520> I<00:07:50.560> can<00:07:50.720> see<00:07:50.920> where<00:07:51.200> my" + }, + { + "start": 471.35, + "duration": 0.0, + "text": "view, obviously, I can see where my" + }, + { + "start": 471.36, + "duration": 0.0, + "text": "view, obviously, I can see where my thread<00:07:51.680> happens<00:07:52.000> to<00:07:52.080> be." + }, + { + "start": 472.91, + "duration": 0.0, + "text": "thread happens to be." + }, + { + "start": 472.92, + "duration": 0.0, + "text": "thread happens to be. Um" + }, + { + "start": 473.95, + "duration": 0.0, + "text": "Um" + }, + { + "start": 473.96, + "duration": 0.0, + "text": "Um with<00:07:54.320> the<00:07:54.400> step<00:07:54.640> over<00:07:54.840> step<00:07:55.080> into<00:07:55.280> commands" + }, + { + "start": 475.87, + "duration": 0.0, + "text": "with the step over step into commands" + }, + { + "start": 475.88, + "duration": 0.0, + "text": "with the step over step into commands and<00:07:56.000> step<00:07:56.280> out,<00:07:56.600> these<00:07:56.840> are<00:07:56.960> three<00:07:57.560> super" + }, + { + "start": 477.83, + "duration": 0.0, + "text": "and step out, these are three super" + }, + { + "start": 477.84, + "duration": 0.0, + "text": "and step out, these are three super common<00:07:58.080> debugger<00:07:58.400> commands.<00:07:58.720> Step<00:07:58.920> over" + }, + { + "start": 479.07, + "duration": 0.0, + "text": "common debugger commands. Step over" + }, + { + "start": 479.08, + "duration": 0.0, + "text": "common debugger commands. Step over means<00:07:59.320> stepping<00:07:59.680> over<00:07:59.920> a<00:07:59.960> line<00:08:00.160> of<00:08:00.240> source" + }, + { + "start": 480.47, + "duration": 0.0, + "text": "means stepping over a line of source" + }, + { + "start": 480.48, + "duration": 0.0, + "text": "means stepping over a line of source code<00:08:00.760> even<00:08:00.960> if<00:08:01.080> that" + }, + { + "start": 482.07, + "duration": 0.0, + "text": "code even if that" + }, + { + "start": 482.08, + "duration": 0.0, + "text": "code even if that code<00:08:02.400> were<00:08:02.520> to<00:08:02.640> call<00:08:03.000> into<00:08:03.240> a<00:08:03.280> function," + }, + { + "start": 484.47, + "duration": 0.0, + "text": "code were to call into a function," + }, + { + "start": 484.48, + "duration": 0.0, + "text": "code were to call into a function, um<00:08:04.720> it<00:08:04.840> steps<00:08:05.120> over<00:08:05.360> it.<00:08:05.640> But,<00:08:05.760> if<00:08:05.840> I<00:08:05.920> want<00:08:06.080> to" + }, + { + "start": 486.19, + "duration": 0.0, + "text": "um it steps over it. But, if I want to" + }, + { + "start": 486.2, + "duration": 0.0, + "text": "um it steps over it. But, if I want to step<00:08:06.480> into<00:08:06.720> a<00:08:06.800> function<00:08:07.160> call,<00:08:07.440> I<00:08:07.480> hit<00:08:07.680> F11<00:08:08.240> or" + }, + { + "start": 488.95, + "duration": 0.0, + "text": "step into a function call, I hit F11 or" + }, + { + "start": 488.96, + "duration": 0.0, + "text": "step into a function call, I hit F11 or uh<00:08:09.040> run<00:08:09.560> otherwise<00:08:10.000> just<00:08:10.160> run<00:08:10.280> the<00:08:10.360> step<00:08:10.560> into" + }, + { + "start": 490.75, + "duration": 0.0, + "text": "uh run otherwise just run the step into" + }, + { + "start": 490.76, + "duration": 0.0, + "text": "uh run otherwise just run the step into command." + }, + { + "start": 491.99, + "duration": 0.0, + "text": "command." + }, + { + "start": 492.0, + "duration": 0.0, + "text": "command. Um<00:08:12.400> and<00:08:12.520> then<00:08:12.640> it'll<00:08:13.200> it'll<00:08:13.400> jump<00:08:13.680> into<00:08:13.880> a" + }, + { + "start": 493.909, + "duration": 0.0, + "text": "Um and then it'll it'll jump into a" + }, + { + "start": 493.919, + "duration": 0.0, + "text": "Um and then it'll it'll jump into a function<00:08:14.240> call<00:08:14.400> that<00:08:14.560> way.<00:08:15.360> Um<00:08:15.720> if<00:08:15.880> I<00:08:15.919> want<00:08:16.200> to" + }, + { + "start": 496.51, + "duration": 0.0, + "text": "function call that way. Um if I want to" + }, + { + "start": 496.52, + "duration": 0.0, + "text": "function call that way. Um if I want to get<00:08:16.720> out<00:08:16.840> of<00:08:16.919> a<00:08:16.960> function<00:08:17.280> call,<00:08:17.440> I<00:08:17.480> have<00:08:17.600> to" + }, + { + "start": 497.67, + "duration": 0.0, + "text": "get out of a function call, I have to" + }, + { + "start": 497.68, + "duration": 0.0, + "text": "get out of a function call, I have to run<00:08:17.840> step<00:08:18.160> out,<00:08:18.640> which<00:08:18.800> is<00:08:18.919> shift<00:08:19.200> F11." + }, + { + "start": 500.909, + "duration": 0.0, + "text": "run step out, which is shift F11." + }, + { + "start": 500.919, + "duration": 0.0, + "text": "run step out, which is shift F11. That'll<00:08:21.120> pop<00:08:21.320> me<00:08:21.400> back.<00:08:21.919> It<00:08:21.960> basically<00:08:22.240> runs" + }, + { + "start": 502.43, + "duration": 0.0, + "text": "That'll pop me back. It basically runs" + }, + { + "start": 502.44, + "duration": 0.0, + "text": "That'll pop me back. It basically runs to<00:08:22.520> the<00:08:22.600> end<00:08:22.680> of<00:08:22.760> the<00:08:22.800> function<00:08:23.200> until<00:08:23.440> the" + }, + { + "start": 503.51, + "duration": 0.0, + "text": "to the end of the function until the" + }, + { + "start": 503.52, + "duration": 0.0, + "text": "to the end of the function until the function<00:08:23.840> exits<00:08:24.200> and<00:08:24.280> then<00:08:24.440> it<00:08:24.560> and<00:08:24.680> then<00:08:24.760> it" + }, + { + "start": 505.23, + "duration": 0.0, + "text": "function exits and then it and then it" + }, + { + "start": 505.24, + "duration": 0.0, + "text": "function exits and then it and then it pops<00:08:25.520> out<00:08:25.640> and<00:08:26.000> and<00:08:26.160> ends<00:08:26.760> wherever<00:08:27.520> wherever" + }, + { + "start": 507.75, + "duration": 0.0, + "text": "pops out and and ends wherever wherever" + }, + { + "start": 507.76, + "duration": 0.0, + "text": "pops out and and ends wherever wherever the<00:08:27.840> return<00:08:28.120> point<00:08:28.360> is." + }, + { + "start": 509.63, + "duration": 0.0, + "text": "the return point is." + }, + { + "start": 509.64, + "duration": 0.0, + "text": "the return point is. Um" + }, + { + "start": 510.71, + "duration": 0.0, + "text": "Um" + }, + { + "start": 510.72, + "duration": 0.0, + "text": "Um so,<00:08:30.840> I<00:08:30.880> can<00:08:30.905> [clears throat]<00:08:31.000> click<00:08:31.160> and<00:08:31.240> drag" + }, + { + "start": 511.51, + "duration": 0.0, + "text": "so, I can [clears throat] click and drag" + }, + { + "start": 511.52, + "duration": 0.0, + "text": "so, I can [clears throat] click and drag a<00:08:31.560> thread<00:08:31.800> as<00:08:31.919> well.<00:08:32.080> I<00:08:32.159> just<00:08:32.320> did<00:08:32.479> that.<00:08:32.800> So," + }, + { + "start": 513.07, + "duration": 0.0, + "text": "a thread as well. I just did that. So," + }, + { + "start": 513.08, + "duration": 0.0, + "text": "a thread as well. I just did that. So, if<00:08:33.200> I<00:08:33.280> want<00:08:33.400> to<00:08:33.479> reposition<00:08:34.000> a<00:08:34.039> thread,<00:08:34.400> this" + }, + { + "start": 514.55, + "duration": 0.0, + "text": "if I want to reposition a thread, this" + }, + { + "start": 514.56, + "duration": 0.0, + "text": "if I want to reposition a thread, this doesn't<00:08:34.919> do<00:08:35.080> any<00:08:35.280> timeline<00:08:35.680> debugging<00:08:36.000> stuff" + }, + { + "start": 516.23, + "duration": 0.0, + "text": "doesn't do any timeline debugging stuff" + }, + { + "start": 516.24, + "duration": 0.0, + "text": "doesn't do any timeline debugging stuff right<00:08:36.400> now.<00:08:36.599> So,<00:08:37.479> um<00:08:38.240> or<00:08:38.440> well,<00:08:38.599> this<00:08:38.760> feature" + }, + { + "start": 519.07, + "duration": 0.0, + "text": "right now. So, um or well, this feature" + }, + { + "start": 519.08, + "duration": 0.0, + "text": "right now. So, um or well, this feature would<00:08:39.200> never<00:08:39.400> do<00:08:39.520> that." + }, + { + "start": 519.99, + "duration": 0.0, + "text": "would never do that." + }, + { + "start": 520.0, + "duration": 0.0, + "text": "would never do that. >> Wait,<00:08:40.159> wait,<00:08:40.280> wait,<00:08:40.400> wait,<00:08:40.520> wait.<00:08:40.800> What<00:08:41.320> Wait," + }, + { + "start": 521.51, + "duration": 0.0, + "text": ">> Wait, wait, wait, wait, wait. What Wait," + }, + { + "start": 521.52, + "duration": 0.0, + "text": ">> Wait, wait, wait, wait, wait. What Wait, what<00:08:41.719> you<00:08:41.840> can<00:08:42.039> do?<00:08:42.400> What<00:08:42.760> would<00:08:43.039> you<00:08:43.120> can<00:08:43.599> you" + }, + { + "start": 523.67, + "duration": 0.0, + "text": "what you can do? What would you can you" + }, + { + "start": 523.68, + "duration": 0.0, + "text": "what you can do? What would you can you can<00:08:43.880> drag<00:08:44.280> a<00:08:44.360> thread?" + }, + { + "start": 526.19, + "duration": 0.0, + "text": "can drag a thread?" + }, + { + "start": 526.2, + "duration": 0.0, + "text": "can drag a thread? >> Oh,<00:08:46.440> yeah.<00:08:46.680> So,<00:08:46.839> here<00:08:47.000> So,<00:08:47.120> here<00:08:47.600> here's<00:08:47.880> the" + }, + { + "start": 527.95, + "duration": 0.0, + "text": ">> Oh, yeah. So, here So, here here's the" + }, + { + "start": 527.96, + "duration": 0.0, + "text": ">> Oh, yeah. So, here So, here here's the position<00:08:48.320> of<00:08:48.440> my<00:08:48.600> main<00:08:48.880> thread.<00:08:49.160> You<00:08:49.240> can<00:08:49.360> see" + }, + { + "start": 529.47, + "duration": 0.0, + "text": "position of my main thread. You can see" + }, + { + "start": 529.48, + "duration": 0.0, + "text": "position of my main thread. You can see it's<00:08:49.880> it's<00:08:50.000> got<00:08:50.160> the<00:08:50.240> name<00:08:50.640> mule<00:08:50.920> main<00:08:51.160> thread." + }, + { + "start": 531.67, + "duration": 0.0, + "text": "it's it's got the name mule main thread." + }, + { + "start": 531.68, + "duration": 0.0, + "text": "it's it's got the name mule main thread. And<00:08:51.760> this<00:08:51.880> is<00:08:52.000> its<00:08:52.120> call<00:08:52.360> stack,<00:08:52.640> too,<00:08:52.800> when<00:08:52.920> I" + }, + { + "start": 532.95, + "duration": 0.0, + "text": "And this is its call stack, too, when I" + }, + { + "start": 532.96, + "duration": 0.0, + "text": "And this is its call stack, too, when I hover<00:08:53.240> it.<00:08:53.400> So,<00:08:53.520> you<00:08:53.600> can<00:08:53.720> see<00:08:54.560> mule<00:08:54.839> main,<00:08:55.440> win" + }, + { + "start": 535.67, + "duration": 0.0, + "text": "hover it. So, you can see mule main, win" + }, + { + "start": 535.68, + "duration": 0.0, + "text": "hover it. So, you can see mule main, win main,<00:08:56.480> um" + }, + { + "start": 536.91, + "duration": 0.0, + "text": "main, um" + }, + { + "start": 536.92, + "duration": 0.0, + "text": "main, um >> Yeah." + }, + { + "start": 537.47, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 537.48, + "duration": 0.0, + "text": ">> Yeah. >> Basically,<00:08:57.960> there's<00:08:58.120> the<00:08:58.200> full<00:08:58.360> call<00:08:58.520> stack." + }, + { + "start": 538.67, + "duration": 0.0, + "text": ">> Basically, there's the full call stack." + }, + { + "start": 538.68, + "duration": 0.0, + "text": ">> Basically, there's the full call stack. So,<00:08:58.720> you<00:08:58.800> have<00:08:58.880> a<00:08:58.920> couple<00:08:59.120> things<00:08:59.360> in<00:08:59.600> in<00:08:59.760> like" + }, + { + "start": 539.99, + "duration": 0.0, + "text": "So, you have a couple things in in like" + }, + { + "start": 540.0, + "duration": 0.0, + "text": "So, you have a couple things in in like the<00:09:00.440> from<00:09:01.000> the<00:09:01.120> kernel,<00:09:01.760> um<00:09:02.200> not<00:09:02.400> literally" + }, + { + "start": 542.71, + "duration": 0.0, + "text": "the from the kernel, um not literally" + }, + { + "start": 542.72, + "duration": 0.0, + "text": "the from the kernel, um not literally the<00:09:02.800> kernel,<00:09:03.040> but<00:09:03.520> the<00:09:03.640> user<00:09:03.880> space<00:09:04.120> of<00:09:04.200> the" + }, + { + "start": 544.27, + "duration": 0.0, + "text": "the kernel, but the user space of the" + }, + { + "start": 544.28, + "duration": 0.0, + "text": "the kernel, but the user space of the kernel.<00:09:05.200> And<00:09:05.280> then<00:09:05.440> you<00:09:05.520> have<00:09:05.800> s<00:09:06.000> e<00:09:06.080> r<00:09:06.160> t<00:09:06.360> common" + }, + { + "start": 546.71, + "duration": 0.0, + "text": "kernel. And then you have s e r t common" + }, + { + "start": 546.72, + "duration": 0.0, + "text": "kernel. And then you have s e r t common main,<00:09:07.360> s<00:09:07.560> e<00:09:07.839> a<00:09:08.400> s<00:09:08.640> e<00:09:08.839> h,<00:09:09.200> and<00:09:09.320> then<00:09:09.480> invoke<00:09:09.920> main," + }, + { + "start": 550.11, + "duration": 0.0, + "text": "main, s e a s e h, and then invoke main," + }, + { + "start": 550.12, + "duration": 0.0, + "text": "main, s e a s e h, and then invoke main, which<00:09:10.280> is<00:09:10.400> an<00:09:10.520> inline<00:09:11.000> function.<00:09:11.600> And<00:09:11.680> then" + }, + { + "start": 551.99, + "duration": 0.0, + "text": "which is an inline function. And then" + }, + { + "start": 552.0, + "duration": 0.0, + "text": "which is an inline function. And then you<00:09:12.120> have<00:09:12.280> win<00:09:12.480> main,<00:09:12.720> which<00:09:12.839> is<00:09:12.960> actually<00:09:13.240> in" + }, + { + "start": 553.31, + "duration": 0.0, + "text": "you have win main, which is actually in" + }, + { + "start": 553.32, + "duration": 0.0, + "text": "you have win main, which is actually in this<00:09:13.440> program.<00:09:13.760> And<00:09:13.839> then<00:09:13.960> you<00:09:14.000> have<00:09:14.160> mule" + }, + { + "start": 554.43, + "duration": 0.0, + "text": "this program. And then you have mule" + }, + { + "start": 554.44, + "duration": 0.0, + "text": "this program. And then you have mule main,<00:09:15.240> which<00:09:15.440> is<00:09:15.520> just<00:09:15.760> this<00:09:15.920> function<00:09:16.240> right" + }, + { + "start": 556.35, + "duration": 0.0, + "text": "main, which is just this function right" + }, + { + "start": 556.36, + "duration": 0.0, + "text": "main, which is just this function right here." + }, + { + "start": 557.15, + "duration": 0.0, + "text": "here." + }, + { + "start": 557.16, + "duration": 0.0, + "text": "here. So,<00:09:17.240> that's<00:09:17.440> the<00:09:17.520> call<00:09:17.720> stack.<00:09:17.960> This<00:09:18.120> is<00:09:18.200> the" + }, + { + "start": 558.31, + "duration": 0.0, + "text": "So, that's the call stack. This is the" + }, + { + "start": 558.32, + "duration": 0.0, + "text": "So, that's the call stack. This is the thread.<00:09:18.760> And<00:09:18.880> if<00:09:19.000> I<00:09:19.040> want<00:09:19.280> to<00:09:19.440> reposition<00:09:20.480> the" + }, + { + "start": 560.63, + "duration": 0.0, + "text": "thread. And if I want to reposition the" + }, + { + "start": 560.64, + "duration": 0.0, + "text": "thread. And if I want to reposition the instruction<00:09:21.080> pointer<00:09:21.360> of<00:09:21.440> the<00:09:21.520> thread,<00:09:22.160> cuz" + }, + { + "start": 562.31, + "duration": 0.0, + "text": "instruction pointer of the thread, cuz" + }, + { + "start": 562.32, + "duration": 0.0, + "text": "instruction pointer of the thread, cuz this<00:09:22.680> arrow<00:09:23.000> is<00:09:23.080> showing<00:09:23.520> what<00:09:23.680> instruction" + }, + { + "start": 564.11, + "duration": 0.0, + "text": "this arrow is showing what instruction" + }, + { + "start": 564.12, + "duration": 0.0, + "text": "this arrow is showing what instruction is<00:09:24.200> going<00:09:24.320> to<00:09:24.400> execute<00:09:24.760> next,<00:09:25.080> right?<00:09:25.560> Or<00:09:25.680> what" + }, + { + "start": 565.87, + "duration": 0.0, + "text": "is going to execute next, right? Or what" + }, + { + "start": 565.88, + "duration": 0.0, + "text": "is going to execute next, right? Or what code<00:09:26.080> is<00:09:26.160> going<00:09:26.280> to<00:09:26.360> execute<00:09:26.720> next.<00:09:27.440> If<00:09:27.560> I" + }, + { + "start": 567.63, + "duration": 0.0, + "text": "code is going to execute next. If I" + }, + { + "start": 567.64, + "duration": 0.0, + "text": "code is going to execute next. If I wanted<00:09:27.880> to<00:09:27.960> change<00:09:28.280> that,<00:09:28.560> I<00:09:28.720> just<00:09:29.200> I<00:09:29.280> can" + }, + { + "start": 569.43, + "duration": 0.0, + "text": "wanted to change that, I just I can" + }, + { + "start": 569.44, + "duration": 0.0, + "text": "wanted to change that, I just I can click<00:09:29.640> and<00:09:29.720> drag<00:09:30.040> the<00:09:30.120> thread." + }, + { + "start": 571.35, + "duration": 0.0, + "text": "click and drag the thread." + }, + { + "start": 571.36, + "duration": 0.0, + "text": "click and drag the thread. But,<00:09:31.480> then<00:09:31.640> you<00:09:31.720> will" + }, + { + "start": 571.95, + "duration": 0.0, + "text": "But, then you will" + }, + { + "start": 571.96, + "duration": 0.0, + "text": "But, then you will >> say,<00:09:32.160> \"Hey,<00:09:32.360> I<00:09:32.440> actually<00:09:32.880> skip<00:09:33.360> the<00:09:33.720> the<00:09:33.800> ones" + }, + { + "start": 574.03, + "duration": 0.0, + "text": ">> say, \"Hey, I actually skip the the ones" + }, + { + "start": 574.04, + "duration": 0.0, + "text": ">> say, \"Hey, I actually skip the the ones in<00:09:34.160> between?\"" + }, + { + "start": 575.75, + "duration": 0.0, + "text": "in between?\"" + }, + { + "start": 575.76, + "duration": 0.0, + "text": "in between?\" No,<00:09:35.960> so<00:09:36.120> it<00:09:36.160> just<00:09:36.440> changes<00:09:36.800> the<00:09:36.920> position<00:09:37.360> of" + }, + { + "start": 577.43, + "duration": 0.0, + "text": "No, so it just changes the position of" + }, + { + "start": 577.44, + "duration": 0.0, + "text": "No, so it just changes the position of the<00:09:37.560> thread's<00:09:37.960> instruction<00:09:38.440> pointer.<00:09:38.840> So,<00:09:39.480> um" + }, + { + "start": 579.79, + "duration": 0.0, + "text": "the thread's instruction pointer. So, um" + }, + { + "start": 579.8, + "duration": 0.0, + "text": "the thread's instruction pointer. So, um all<00:09:40.000> the<00:09:40.440> like<00:09:40.640> it's<00:09:40.760> not<00:09:40.920> changing<00:09:41.200> any" + }, + { + "start": 581.35, + "duration": 0.0, + "text": "all the like it's not changing any" + }, + { + "start": 581.36, + "duration": 0.0, + "text": "all the like it's not changing any memory<00:09:41.880> or<00:09:42.040> anything.<00:09:42.320> It's<00:09:42.760> only<00:09:43.040> changing" + }, + { + "start": 583.35, + "duration": 0.0, + "text": "memory or anything. It's only changing" + }, + { + "start": 583.36, + "duration": 0.0, + "text": "memory or anything. It's only changing the<00:09:43.440> instruction<00:09:43.840> pointer<00:09:44.080> register," + }, + { + "start": 584.75, + "duration": 0.0, + "text": "the instruction pointer register," + }, + { + "start": 584.76, + "duration": 0.0, + "text": "the instruction pointer register, actually,<00:09:45.680> of<00:09:45.800> the<00:09:45.880> thread." + }, + { + "start": 586.95, + "duration": 0.0, + "text": "actually, of the thread." + }, + { + "start": 586.96, + "duration": 0.0, + "text": "actually, of the thread. Um<00:09:47.160> so,<00:09:47.280> you<00:09:47.360> can<00:09:47.520> rerun<00:09:47.920> code<00:09:48.480> this<00:09:48.720> way.<00:09:49.320> Um" + }, + { + "start": 590.47, + "duration": 0.0, + "text": "Um so, you can rerun code this way. Um" + }, + { + "start": 590.48, + "duration": 0.0, + "text": "Um so, you can rerun code this way. Um if<00:09:50.680> you<00:09:50.800> have<00:09:51.000> pretty<00:09:51.200> deterministic<00:09:51.800> code," + }, + { + "start": 592.11, + "duration": 0.0, + "text": "if you have pretty deterministic code," + }, + { + "start": 592.12, + "duration": 0.0, + "text": "if you have pretty deterministic code, this<00:09:52.280> actually<00:09:52.560> gets<00:09:52.800> you<00:09:52.960> like,<00:09:53.720> you<00:09:53.800> know," + }, + { + "start": 593.91, + "duration": 0.0, + "text": "this actually gets you like, you know," + }, + { + "start": 593.92, + "duration": 0.0, + "text": "this actually gets you like, you know, pretty<00:09:54.200> close<00:09:54.560> to<00:09:54.720> the<00:09:54.920> full,<00:09:55.800> uh" + }, + { + "start": 596.39, + "duration": 0.0, + "text": "pretty close to the full, uh" + }, + { + "start": 596.4, + "duration": 0.0, + "text": "pretty close to the full, uh like<00:09:56.560> this<00:09:56.760> is<00:09:57.040> a<00:09:57.120> lot<00:09:57.440> like<00:09:57.680> timeline" + }, + { + "start": 597.99, + "duration": 0.0, + "text": "like this is a lot like timeline" + }, + { + "start": 598.0, + "duration": 0.0, + "text": "like this is a lot like timeline debugging<00:09:58.560> if<00:09:58.840> you<00:09:59.320> have<00:09:59.600> pretty" + }, + { + "start": 599.83, + "duration": 0.0, + "text": "debugging if you have pretty" + }, + { + "start": 599.84, + "duration": 0.0, + "text": "debugging if you have pretty deterministic<00:10:00.480> code,<00:10:01.280> where<00:10:01.440> time<00:10:01.760> travel<00:10:02.120> or" + }, + { + "start": 602.43, + "duration": 0.0, + "text": "deterministic code, where time travel or" + }, + { + "start": 602.44, + "duration": 0.0, + "text": "deterministic code, where time travel or I<00:10:02.480> shouldn't<00:10:02.680> say<00:10:02.760> timeline<00:10:03.120> debugging.<00:10:03.400> I" + }, + { + "start": 603.43, + "duration": 0.0, + "text": "I shouldn't say timeline debugging. I" + }, + { + "start": 603.44, + "duration": 0.0, + "text": "I shouldn't say timeline debugging. I should<00:10:03.600> say<00:10:03.720> time<00:10:04.120> travel<00:10:04.440> debugging." + }, + { + "start": 605.47, + "duration": 0.0, + "text": "should say time travel debugging." + }, + { + "start": 605.48, + "duration": 0.0, + "text": "should say time travel debugging. Um<00:10:06.240> which<00:10:06.400> are<00:10:06.520> different<00:10:06.840> things,<00:10:07.120> but" + }, + { + "start": 608.35, + "duration": 0.0, + "text": "Um which are different things, but" + }, + { + "start": 608.36, + "duration": 0.0, + "text": "Um which are different things, but So,<00:10:08.720> time<00:10:09.040> travel<00:10:09.280> debugging<00:10:09.600> people<00:10:10.040> will" + }, + { + "start": 610.11, + "duration": 0.0, + "text": "So, time travel debugging people will" + }, + { + "start": 610.12, + "duration": 0.0, + "text": "So, time travel debugging people will often<00:10:10.360> think<00:10:10.520> of<00:10:10.720> features<00:10:11.040> like<00:10:11.160> step" + }, + { + "start": 611.47, + "duration": 0.0, + "text": "often think of features like step" + }, + { + "start": 611.48, + "duration": 0.0, + "text": "often think of features like step backwards,<00:10:12.080> for<00:10:12.200> example.<00:10:12.640> Like,<00:10:13.120> you<00:10:13.200> know," + }, + { + "start": 613.27, + "duration": 0.0, + "text": "backwards, for example. Like, you know," + }, + { + "start": 613.28, + "duration": 0.0, + "text": "backwards, for example. Like, you know, if<00:10:13.400> you<00:10:13.480> step<00:10:13.720> forward,<00:10:14.640> you<00:10:14.720> might<00:10:14.840> also<00:10:15.040> want" + }, + { + "start": 615.19, + "duration": 0.0, + "text": "if you step forward, you might also want" + }, + { + "start": 615.2, + "duration": 0.0, + "text": "if you step forward, you might also want to<00:10:15.280> say<00:10:15.440> like,<00:10:15.640> \"Hey,<00:10:16.160> like<00:10:16.320> I<00:10:16.360> want<00:10:16.520> to<00:10:16.560> go" + }, + { + "start": 616.71, + "duration": 0.0, + "text": "to say like, \"Hey, like I want to go" + }, + { + "start": 616.72, + "duration": 0.0, + "text": "to say like, \"Hey, like I want to go back<00:10:17.040> to<00:10:17.120> this<00:10:17.560> to<00:10:17.680> the<00:10:17.760> point<00:10:18.000> in<00:10:18.080> time<00:10:18.480> in" + }, + { + "start": 618.63, + "duration": 0.0, + "text": "back to this to the point in time in" + }, + { + "start": 618.64, + "duration": 0.0, + "text": "back to this to the point in time in history<00:10:19.720> where<00:10:19.920> my<00:10:20.040> thread<00:10:20.320> was<00:10:20.440> here.\"<00:10:21.440> Um" + }, + { + "start": 622.47, + "duration": 0.0, + "text": "history where my thread was here.\" Um" + }, + { + "start": 622.48, + "duration": 0.0, + "text": "history where my thread was here.\" Um that<00:10:22.800> that<00:10:23.440> feature's<00:10:23.920> pretty<00:10:24.360> complicated" + }, + { + "start": 624.83, + "duration": 0.0, + "text": "that that feature's pretty complicated" + }, + { + "start": 624.84, + "duration": 0.0, + "text": "that that feature's pretty complicated and<00:10:24.920> not<00:10:25.160> supported<00:10:25.560> by<00:10:25.640> the<00:10:25.720> debugger<00:10:25.960> right" + }, + { + "start": 626.11, + "duration": 0.0, + "text": "and not supported by the debugger right" + }, + { + "start": 626.12, + "duration": 0.0, + "text": "and not supported by the debugger right now.<00:10:26.280> But,<00:10:26.440> you<00:10:26.520> can<00:10:26.640> rerun<00:10:27.040> code<00:10:27.240> by" + }, + { + "start": 627.35, + "duration": 0.0, + "text": "now. But, you can rerun code by" + }, + { + "start": 627.36, + "duration": 0.0, + "text": "now. But, you can rerun code by repositioning<00:10:27.960> your<00:10:28.080> thread.<00:10:28.440> Anyways," + }, + { + "start": 628.75, + "duration": 0.0, + "text": "repositioning your thread. Anyways," + }, + { + "start": 628.76, + "duration": 0.0, + "text": "repositioning your thread. Anyways, that's<00:10:28.880> kind<00:10:29.040> of<00:10:29.120> a<00:10:29.160> tangent.<00:10:29.960> We're<00:10:30.080> still" + }, + { + "start": 630.27, + "duration": 0.0, + "text": "that's kind of a tangent. We're still" + }, + { + "start": 630.28, + "duration": 0.0, + "text": "that's kind of a tangent. We're still not<00:10:30.560> We're<00:10:30.680> still<00:10:30.800> doing<00:10:31.080> basic<00:10:31.400> usage<00:10:31.720> stuff." + }, + { + "start": 631.95, + "duration": 0.0, + "text": "not We're still doing basic usage stuff." + }, + { + "start": 631.96, + "duration": 0.0, + "text": "not We're still doing basic usage stuff. So,<00:10:32.080> I<00:10:32.120> should<00:10:32.560> I<00:10:32.600> should<00:10:33.080> maybe<00:10:33.360> hold<00:10:33.600> off<00:10:33.760> on" + }, + { + "start": 633.87, + "duration": 0.0, + "text": "So, I should I should maybe hold off on" + }, + { + "start": 633.88, + "duration": 0.0, + "text": "So, I should I should maybe hold off on this<00:10:34.000> stuff,<00:10:34.200> but<00:10:34.760> Anyways,<00:10:35.120> so<00:10:35.200> I<00:10:35.240> can<00:10:35.400> step" + }, + { + "start": 635.59, + "duration": 0.0, + "text": "this stuff, but Anyways, so I can step" + }, + { + "start": 635.6, + "duration": 0.0, + "text": "this stuff, but Anyways, so I can step through<00:10:36.440> and<00:10:36.880> if<00:10:37.000> I<00:10:37.080> have<00:10:37.200> like<00:10:37.320> a<00:10:37.400> variable" + }, + { + "start": 638.11, + "duration": 0.0, + "text": "through and if I have like a variable" + }, + { + "start": 638.12, + "duration": 0.0, + "text": "through and if I have like a variable that's<00:10:38.400> in<00:10:38.560> my<00:10:38.680> code<00:10:39.160> and<00:10:39.280> I<00:10:39.320> want<00:10:39.480> to<00:10:39.560> see<00:10:39.800> what" + }, + { + "start": 639.91, + "duration": 0.0, + "text": "that's in my code and I want to see what" + }, + { + "start": 639.92, + "duration": 0.0, + "text": "that's in my code and I want to see what the<00:10:40.000> value<00:10:40.400> is,<00:10:40.600> I<00:10:40.680> can<00:10:40.839> just<00:10:41.040> hover<00:10:41.720> the<00:10:41.839> name" + }, + { + "start": 641.99, + "duration": 0.0, + "text": "the value is, I can just hover the name" + }, + { + "start": 642.0, + "duration": 0.0, + "text": "the value is, I can just hover the name of<00:10:42.040> that<00:10:42.160> variable<00:10:42.520> in<00:10:42.640> the<00:10:42.720> code.<00:10:43.680> Um" + }, + { + "start": 644.11, + "duration": 0.0, + "text": "of that variable in the code. Um" + }, + { + "start": 644.12, + "duration": 0.0, + "text": "of that variable in the code. Um actually,<00:10:44.360> let<00:10:44.480> me<00:10:45.000> um" + }, + { + "start": 646.39, + "duration": 0.0, + "text": "actually, let me um" + }, + { + "start": 646.4, + "duration": 0.0, + "text": "actually, let me um All<00:10:46.600> this<00:10:46.760> stuff<00:10:47.120> because<00:10:47.440> I<00:10:47.560> ran<00:10:47.800> this" + }, + { + "start": 647.91, + "duration": 0.0, + "text": "All this stuff because I ran this" + }, + { + "start": 647.92, + "duration": 0.0, + "text": "All this stuff because I ran this function<00:10:48.240> once<00:10:48.480> already,<00:10:48.800> all<00:10:48.960> this<00:10:49.280> all" + }, + { + "start": 649.39, + "duration": 0.0, + "text": "function once already, all this all" + }, + { + "start": 649.4, + "duration": 0.0, + "text": "function once already, all this all these<00:10:49.520> variables<00:10:49.920> are<00:10:49.960> going<00:10:50.200> to<00:10:50.280> be" + }, + { + "start": 650.43, + "duration": 0.0, + "text": "these variables are going to be" + }, + { + "start": 650.44, + "duration": 0.0, + "text": "these variables are going to be initialized<00:10:51.040> because<00:10:51.680> the<00:10:51.760> function<00:10:52.080> will" + }, + { + "start": 652.19, + "duration": 0.0, + "text": "initialized because the function will" + }, + { + "start": 652.2, + "duration": 0.0, + "text": "initialized because the function will have<00:10:52.360> run.<00:10:52.600> So,<00:10:52.720> what<00:10:52.839> I'll<00:10:52.960> do<00:10:53.680> is<00:10:53.800> I'm<00:10:53.880> going" + }, + { + "start": 653.99, + "duration": 0.0, + "text": "have run. So, what I'll do is I'm going" + }, + { + "start": 654.0, + "duration": 0.0, + "text": "have run. So, what I'll do is I'm going to<00:10:54.520> I'm<00:10:54.640> going<00:10:54.760> to<00:10:54.839> restart<00:10:55.200> the<00:10:55.280> program.<00:10:55.880> I'm" + }, + { + "start": 655.99, + "duration": 0.0, + "text": "to I'm going to restart the program. I'm" + }, + { + "start": 656.0, + "duration": 0.0, + "text": "to I'm going to restart the program. I'm going<00:10:56.120> to<00:10:56.160> put<00:10:56.320> a<00:10:56.360> breakpoint<00:10:56.920> right<00:10:57.080> here." + }, + { + "start": 657.27, + "duration": 0.0, + "text": "going to put a breakpoint right here." + }, + { + "start": 657.28, + "duration": 0.0, + "text": "going to put a breakpoint right here. So,<00:10:57.440> a<00:10:57.480> breakpoint<00:10:57.920> is<00:10:58.040> basically<00:10:58.360> saying<00:10:58.680> any" + }, + { + "start": 658.87, + "duration": 0.0, + "text": "So, a breakpoint is basically saying any" + }, + { + "start": 658.88, + "duration": 0.0, + "text": "So, a breakpoint is basically saying any thread<00:10:59.200> that<00:10:59.360> hits<00:10:59.600> this<00:10:59.800> spot<00:11:00.160> in<00:11:00.240> the<00:11:00.320> code," + }, + { + "start": 661.59, + "duration": 0.0, + "text": "thread that hits this spot in the code," + }, + { + "start": 661.6, + "duration": 0.0, + "text": "thread that hits this spot in the code, let's<00:11:01.760> just<00:11:01.920> stop<00:11:02.120> the<00:11:02.200> program,<00:11:02.640> right?" + }, + { + "start": 663.87, + "duration": 0.0, + "text": "let's just stop the program, right?" + }, + { + "start": 663.88, + "duration": 0.0, + "text": "let's just stop the program, right? And<00:11:04.480> uh<00:11:04.600> so,<00:11:05.200> the<00:11:05.280> debugger<00:11:05.600> will<00:11:05.760> pause<00:11:06.320> the" + }, + { + "start": 666.43, + "duration": 0.0, + "text": "And uh so, the debugger will pause the" + }, + { + "start": 666.44, + "duration": 0.0, + "text": "And uh so, the debugger will pause the entire<00:11:06.800> program<00:11:07.280> when<00:11:07.520> one<00:11:07.720> thread<00:11:07.960> hits<00:11:08.200> this" + }, + { + "start": 668.35, + "duration": 0.0, + "text": "entire program when one thread hits this" + }, + { + "start": 668.36, + "duration": 0.0, + "text": "entire program when one thread hits this position.<00:11:09.120> Now,<00:11:09.200> I'm<00:11:09.320> going<00:11:09.440> to<00:11:09.520> kill<00:11:09.800> the" + }, + { + "start": 669.87, + "duration": 0.0, + "text": "position. Now, I'm going to kill the" + }, + { + "start": 669.88, + "duration": 0.0, + "text": "position. Now, I'm going to kill the program<00:11:10.920> by<00:11:11.040> hitting<00:11:11.320> the<00:11:11.760> the<00:11:11.839> kill<00:11:12.120> all" + }, + { + "start": 672.75, + "duration": 0.0, + "text": "program by hitting the the kill all" + }, + { + "start": 672.76, + "duration": 0.0, + "text": "program by hitting the the kill all thing<00:11:13.000> up<00:11:13.120> here." + }, + { + "start": 674.03, + "duration": 0.0, + "text": "thing up here." + }, + { + "start": 674.04, + "duration": 0.0, + "text": "thing up here. Um<00:11:14.560> and<00:11:14.680> then<00:11:14.760> I'm<00:11:14.839> going<00:11:14.960> to<00:11:15.000> just<00:11:15.200> run<00:11:15.360> again." + }, + { + "start": 676.15, + "duration": 0.0, + "text": "Um and then I'm going to just run again." + }, + { + "start": 676.16, + "duration": 0.0, + "text": "Um and then I'm going to just run again. I<00:11:16.240> could<00:11:16.360> have<00:11:16.480> done<00:11:16.640> the<00:11:16.720> same<00:11:16.960> thing<00:11:17.160> by" + }, + { + "start": 677.27, + "duration": 0.0, + "text": "I could have done the same thing by" + }, + { + "start": 677.28, + "duration": 0.0, + "text": "I could have done the same thing by doing<00:11:17.680> restart.<00:11:18.520> Just<00:11:18.880> no<00:11:19.000> difference." + }, + { + "start": 680.35, + "duration": 0.0, + "text": "doing restart. Just no difference." + }, + { + "start": 680.36, + "duration": 0.0, + "text": "doing restart. Just no difference. Anyways,<00:11:20.680> once<00:11:20.880> I'm<00:11:21.000> here," + }, + { + "start": 682.23, + "duration": 0.0, + "text": "Anyways, once I'm here," + }, + { + "start": 682.24, + "duration": 0.0, + "text": "Anyways, once I'm here, if<00:11:22.400> I<00:11:22.480> have<00:11:22.640> one<00:11:22.800> of<00:11:22.880> these<00:11:23.000> variables<00:11:23.400> like" + }, + { + "start": 683.51, + "duration": 0.0, + "text": "if I have one of these variables like" + }, + { + "start": 683.52, + "duration": 0.0, + "text": "if I have one of these variables like this<00:11:23.680> basics<00:11:24.240> structure,<00:11:24.640> you<00:11:24.720> can<00:11:24.839> see<00:11:24.960> it's" + }, + { + "start": 685.07, + "duration": 0.0, + "text": "this basics structure, you can see it's" + }, + { + "start": 685.08, + "duration": 0.0, + "text": "this basics structure, you can see it's just<00:11:25.200> filled<00:11:25.400> with<00:11:25.560> garbage.<00:11:26.440> Um" + }, + { + "start": 687.23, + "duration": 0.0, + "text": "just filled with garbage. Um" + }, + { + "start": 687.24, + "duration": 0.0, + "text": "just filled with garbage. Um but<00:11:27.360> if<00:11:27.440> I<00:11:27.520> step<00:11:27.760> over<00:11:27.880> the<00:11:27.960> initialization," + }, + { + "start": 688.63, + "duration": 0.0, + "text": "but if I step over the initialization," + }, + { + "start": 688.64, + "duration": 0.0, + "text": "but if I step over the initialization, you'll<00:11:28.800> see<00:11:28.960> that<00:11:29.520> uh<00:11:29.800> the<00:11:29.839> debugger<00:11:30.160> will" + }, + { + "start": 690.23, + "duration": 0.0, + "text": "you'll see that uh the debugger will" + }, + { + "start": 690.24, + "duration": 0.0, + "text": "you'll see that uh the debugger will tell<00:11:30.400> me<00:11:30.520> what's<00:11:30.720> changed." + }, + { + "start": 692.87, + "duration": 0.0, + "text": "tell me what's changed." + }, + { + "start": 692.88, + "duration": 0.0, + "text": "tell me what's changed. And<00:11:33.080> I<00:11:33.120> can<00:11:33.280> see<00:11:34.160> that<00:11:34.360> see<00:11:34.480> the<00:11:34.560> new<00:11:34.680> values<00:11:35.040> of" + }, + { + "start": 695.11, + "duration": 0.0, + "text": "And I can see that see the new values of" + }, + { + "start": 695.12, + "duration": 0.0, + "text": "And I can see that see the new values of all<00:11:35.240> these<00:11:35.360> things<00:11:36.320> uh" + }, + { + "start": 696.95, + "duration": 0.0, + "text": "all these things uh" + }, + { + "start": 696.96, + "duration": 0.0, + "text": "all these things uh immediately." + }, + { + "start": 698.75, + "duration": 0.0, + "text": "immediately." + }, + { + "start": 698.76, + "duration": 0.0, + "text": "immediately. So,<00:11:39.080> I<00:11:39.160> can<00:11:39.280> do<00:11:39.400> that<00:11:39.600> with<00:11:39.760> pretty<00:11:39.960> much" + }, + { + "start": 700.11, + "duration": 0.0, + "text": "So, I can do that with pretty much" + }, + { + "start": 700.12, + "duration": 0.0, + "text": "So, I can do that with pretty much anything<00:11:40.440> in<00:11:41.000> in<00:11:41.160> here.<00:11:41.360> We<00:11:41.440> have<00:11:41.560> strings" + }, + { + "start": 702.03, + "duration": 0.0, + "text": "anything in in here. We have strings" + }, + { + "start": 702.04, + "duration": 0.0, + "text": "anything in in here. We have strings right<00:11:42.200> here.<00:11:43.000> We<00:11:43.080> have<00:11:43.240> longer<00:11:43.640> text.<00:11:44.760> Um<00:11:44.960> this" + }, + { + "start": 705.11, + "duration": 0.0, + "text": "right here. We have longer text. Um this" + }, + { + "start": 705.12, + "duration": 0.0, + "text": "right here. We have longer text. Um this is<00:11:45.240> a<00:11:45.280> wide<00:11:45.560> string,<00:11:45.800> so<00:11:45.960> each<00:11:46.200> character<00:11:46.680> is" + }, + { + "start": 707.03, + "duration": 0.0, + "text": "is a wide string, so each character is" + }, + { + "start": 707.04, + "duration": 0.0, + "text": "is a wide string, so each character is uh" + }, + { + "start": 707.87, + "duration": 0.0, + "text": "uh" + }, + { + "start": 707.88, + "duration": 0.0, + "text": "uh a<00:11:47.960> U16<00:11:48.560> instead<00:11:48.880> of<00:11:49.000> a<00:11:49.400> instead<00:11:49.640> of<00:11:49.840> just<00:11:50.080> one" + }, + { + "start": 710.23, + "duration": 0.0, + "text": "a U16 instead of a instead of just one" + }, + { + "start": 710.24, + "duration": 0.0, + "text": "a U16 instead of a instead of just one byte<00:11:50.600> like<00:11:50.760> the<00:11:51.000> it's<00:11:51.160> UTF-16<00:11:51.880> instead<00:11:52.080> of" + }, + { + "start": 712.15, + "duration": 0.0, + "text": "byte like the it's UTF-16 instead of" + }, + { + "start": 712.16, + "duration": 0.0, + "text": "byte like the it's UTF-16 instead of UTF-8.<00:11:53.200> Um<00:11:53.520> so,<00:11:53.640> we<00:11:53.680> can<00:11:53.800> visualize<00:11:54.160> that.<00:11:55.080> Um" + }, + { + "start": 715.99, + "duration": 0.0, + "text": "UTF-8. Um so, we can visualize that. Um" + }, + { + "start": 716.0, + "duration": 0.0, + "text": "UTF-8. Um so, we can visualize that. Um There's<00:11:56.120> a<00:11:56.160> bunch<00:11:56.360> of<00:11:56.440> like<00:11:56.840> evaluation<00:11:57.440> tests" + }, + { + "start": 717.67, + "duration": 0.0, + "text": "There's a bunch of like evaluation tests" + }, + { + "start": 717.68, + "duration": 0.0, + "text": "There's a bunch of like evaluation tests in<00:11:57.800> here.<00:11:58.040> I've<00:11:58.160> got<00:11:58.320> this<00:11:58.480> fixed<00:11:58.760> array<00:11:59.000> right" + }, + { + "start": 719.19, + "duration": 0.0, + "text": "in here. I've got this fixed array right" + }, + { + "start": 719.2, + "duration": 0.0, + "text": "in here. I've got this fixed array right here." + }, + { + "start": 721.43, + "duration": 0.0, + "text": "here." + }, + { + "start": 721.44, + "duration": 0.0, + "text": "here. Um" + }, + { + "start": 722.55, + "duration": 0.0, + "text": "Um" + }, + { + "start": 722.56, + "duration": 0.0, + "text": "Um and<00:12:02.720> then<00:12:03.240> count<00:12:03.560> member<00:12:03.840> like<00:12:04.040> the<00:12:04.160> it's<00:12:04.320> just" + }, + { + "start": 724.47, + "duration": 0.0, + "text": "and then count member like the it's just" + }, + { + "start": 724.48, + "duration": 0.0, + "text": "and then count member like the it's just this<00:12:04.600> structure.<00:12:05.400> The<00:12:05.440> other<00:12:05.560> thing<00:12:05.720> you<00:12:05.800> can" + }, + { + "start": 725.87, + "duration": 0.0, + "text": "this structure. The other thing you can" + }, + { + "start": 725.88, + "duration": 0.0, + "text": "this structure. The other thing you can do<00:12:05.960> is<00:12:06.040> evaluate<00:12:06.400> type<00:12:06.640> info.<00:12:06.960> So,<00:12:07.120> if<00:12:07.240> I<00:12:07.280> want" + }, + { + "start": 727.39, + "duration": 0.0, + "text": "do is evaluate type info. So, if I want" + }, + { + "start": 727.4, + "duration": 0.0, + "text": "do is evaluate type info. So, if I want to<00:12:07.480> look<00:12:07.600> at<00:12:07.840> what<00:12:08.040> this<00:12:08.200> type<00:12:08.480> is,<00:12:09.040> I<00:12:09.120> can<00:12:09.600> uh<00:12:10.000> I" + }, + { + "start": 730.47, + "duration": 0.0, + "text": "to look at what this type is, I can uh I" + }, + { + "start": 730.48, + "duration": 0.0, + "text": "to look at what this type is, I can uh I just<00:12:10.680> selected<00:12:11.080> this<00:12:11.200> text<00:12:11.480> and<00:12:11.560> hovered<00:12:11.840> the" + }, + { + "start": 732.03, + "duration": 0.0, + "text": "just selected this text and hovered the" + }, + { + "start": 732.04, + "duration": 0.0, + "text": "just selected this text and hovered the selected<00:12:12.320> text.<00:12:13.160> Uh<00:12:13.240> by<00:12:13.400> default,<00:12:13.760> if<00:12:13.840> you" + }, + { + "start": 733.95, + "duration": 0.0, + "text": "selected text. Uh by default, if you" + }, + { + "start": 733.96, + "duration": 0.0, + "text": "selected text. Uh by default, if you hover<00:12:14.160> types,<00:12:14.480> it<00:12:14.560> won't<00:12:14.760> show<00:12:14.920> it<00:12:15.000> cuz<00:12:15.120> it" + }, + { + "start": 735.19, + "duration": 0.0, + "text": "hover types, it won't show it cuz it" + }, + { + "start": 735.2, + "duration": 0.0, + "text": "hover types, it won't show it cuz it just<00:12:15.440> becomes<00:12:15.760> a<00:12:15.800> little<00:12:15.920> bit<00:12:16.040> too<00:12:16.160> noisy." + }, + { + "start": 736.51, + "duration": 0.0, + "text": "just becomes a little bit too noisy." + }, + { + "start": 736.52, + "duration": 0.0, + "text": "just becomes a little bit too noisy. But,<00:12:17.000> if<00:12:17.080> you<00:12:17.160> want<00:12:17.280> to<00:12:17.360> evaluate<00:12:17.760> type,<00:12:18.000> you" + }, + { + "start": 738.07, + "duration": 0.0, + "text": "But, if you want to evaluate type, you" + }, + { + "start": 738.08, + "duration": 0.0, + "text": "But, if you want to evaluate type, you can<00:12:18.520> you<00:12:18.600> can<00:12:18.920> select<00:12:19.240> the<00:12:19.320> text,<00:12:19.640> hover<00:12:19.880> it." + }, + { + "start": 741.11, + "duration": 0.0, + "text": "can you can select the text, hover it." + }, + { + "start": 741.12, + "duration": 0.0, + "text": "can you can select the text, hover it. And<00:12:21.240> then<00:12:21.360> here<00:12:21.520> you<00:12:21.640> can<00:12:21.760> see<00:12:21.880> the<00:12:22.000> type<00:12:22.200> info," + }, + { + "start": 742.47, + "duration": 0.0, + "text": "And then here you can see the type info," + }, + { + "start": 742.48, + "duration": 0.0, + "text": "And then here you can see the type info, right?<00:12:22.720> So,<00:12:22.800> you<00:12:22.920> can<00:12:23.040> see<00:12:23.200> like<00:12:24.040> um<00:12:24.800> these" + }, + { + "start": 744.99, + "duration": 0.0, + "text": "right? So, you can see like um these" + }, + { + "start": 745.0, + "duration": 0.0, + "text": "right? So, you can see like um these blue<00:12:25.240> lines,<00:12:25.600> by<00:12:25.680> the<00:12:25.760> way,<00:12:25.920> are<00:12:26.040> cache<00:12:26.360> line" + }, + { + "start": 746.51, + "duration": 0.0, + "text": "blue lines, by the way, are cache line" + }, + { + "start": 746.52, + "duration": 0.0, + "text": "blue lines, by the way, are cache line boundaries.<00:12:27.160> So,<00:12:27.240> you<00:12:27.320> can<00:12:27.440> see<00:12:27.600> like,<00:12:27.760> \"Hey," + }, + { + "start": 747.87, + "duration": 0.0, + "text": "boundaries. So, you can see like, \"Hey," + }, + { + "start": 747.88, + "duration": 0.0, + "text": "boundaries. So, you can see like, \"Hey, here's<00:12:28.120> my<00:12:28.280> array<00:12:28.560> of<00:12:28.720> pair<00:12:29.080> structures.<00:12:30.040> Each" + }, + { + "start": 750.23, + "duration": 0.0, + "text": "here's my array of pair structures. Each" + }, + { + "start": 750.24, + "duration": 0.0, + "text": "here's my array of pair structures. Each pair<00:12:30.400> structure<00:12:30.680> has<00:12:30.760> an<00:12:30.960> X<00:12:31.240> in<00:12:31.400> 32<00:12:31.840> and<00:12:31.920> a<00:12:31.960> Y" + }, + { + "start": 752.19, + "duration": 0.0, + "text": "pair structure has an X in 32 and a Y" + }, + { + "start": 752.2, + "duration": 0.0, + "text": "pair structure has an X in 32 and a Y float.\"<00:12:33.120> Um<00:12:33.280> and<00:12:33.360> it's<00:12:33.480> got<00:12:34.000> um<00:12:34.520> you<00:12:34.600> know,<00:12:35.040> 10" + }, + { + "start": 755.23, + "duration": 0.0, + "text": "float.\" Um and it's got um you know, 10" + }, + { + "start": 755.24, + "duration": 0.0, + "text": "float.\" Um and it's got um you know, 10 of<00:12:35.360> those<00:12:35.839> and<00:12:36.400> uh<00:12:36.560> right<00:12:36.760> here<00:12:36.920> is<00:12:37.000> another" + }, + { + "start": 757.23, + "duration": 0.0, + "text": "of those and uh right here is another" + }, + { + "start": 757.24, + "duration": 0.0, + "text": "of those and uh right here is another cache<00:12:37.480> line<00:12:37.640> boundary.<00:12:38.760> Um<00:12:39.160> and<00:12:39.280> then<00:12:39.400> we've" + }, + { + "start": 759.55, + "duration": 0.0, + "text": "cache line boundary. Um and then we've" + }, + { + "start": 759.56, + "duration": 0.0, + "text": "cache line boundary. Um and then we've got<00:12:39.680> the<00:12:39.800> in<00:12:39.920> 32<00:12:40.280> count<00:12:40.640> at<00:12:40.720> the<00:12:40.839> end,<00:12:41.040> right?" + }, + { + "start": 761.23, + "duration": 0.0, + "text": "got the in 32 count at the end, right?" + }, + { + "start": 761.24, + "duration": 0.0, + "text": "got the in 32 count at the end, right? So,<00:12:41.320> we<00:12:41.440> can<00:12:41.520> evaluate<00:12:41.839> type<00:12:42.040> info<00:12:42.240> that<00:12:42.400> way." + }, + { + "start": 763.47, + "duration": 0.0, + "text": "So, we can evaluate type info that way." + }, + { + "start": 763.48, + "duration": 0.0, + "text": "So, we can evaluate type info that way. Um" + }, + { + "start": 765.35, + "duration": 0.0, + "text": "Um" + }, + { + "start": 765.36, + "duration": 0.0, + "text": "Um and" + }, + { + "start": 766.51, + "duration": 0.0, + "text": "and" + }, + { + "start": 766.52, + "duration": 0.0, + "text": "and uh" + }, + { + "start": 768.07, + "duration": 0.0, + "text": "uh" + }, + { + "start": 768.08, + "duration": 0.0, + "text": "uh that's<00:12:48.320> like<00:12:48.640> that's<00:12:48.839> like<00:12:49.000> super<00:12:49.320> basic" + }, + { + "start": 770.15, + "duration": 0.0, + "text": "that's like that's like super basic" + }, + { + "start": 770.16, + "duration": 0.0, + "text": "that's like that's like super basic early<00:12:50.520> usage.<00:12:51.000> So," + }, + { + "start": 772.35, + "duration": 0.0, + "text": "early usage. So," + }, + { + "start": 772.36, + "duration": 0.0, + "text": "early usage. So, um<00:12:52.680> now<00:12:53.000> I<00:12:53.040> can<00:12:53.160> focus<00:12:53.440> on<00:12:53.520> the<00:12:53.600> watch<00:12:53.839> window." + }, + { + "start": 774.67, + "duration": 0.0, + "text": "um now I can focus on the watch window." + }, + { + "start": 774.68, + "duration": 0.0, + "text": "um now I can focus on the watch window. So,<00:12:54.760> if<00:12:54.880> I<00:12:54.920> wanted<00:12:55.240> to<00:12:55.480> like<00:12:55.680> hovering<00:12:56.040> is" + }, + { + "start": 776.15, + "duration": 0.0, + "text": "So, if I wanted to like hovering is" + }, + { + "start": 776.16, + "duration": 0.0, + "text": "So, if I wanted to like hovering is nice,<00:12:56.760> but<00:12:56.880> sometimes<00:12:57.280> you<00:12:57.400> want<00:12:57.560> to<00:12:57.680> like" + }, + { + "start": 777.95, + "duration": 0.0, + "text": "nice, but sometimes you want to like" + }, + { + "start": 777.96, + "duration": 0.0, + "text": "nice, but sometimes you want to like actually<00:12:58.240> just<00:12:58.440> have<00:12:58.600> some<00:12:58.760> expressions<00:12:59.240> in" + }, + { + "start": 779.31, + "duration": 0.0, + "text": "actually just have some expressions in" + }, + { + "start": 779.32, + "duration": 0.0, + "text": "actually just have some expressions in here.<00:13:00.000> Um" + }, + { + "start": 780.71, + "duration": 0.0, + "text": "here. Um" + }, + { + "start": 780.72, + "duration": 0.0, + "text": "here. Um so,<00:13:01.240> in<00:13:01.360> the<00:13:01.440> watch<00:13:01.600> window,<00:13:01.839> I<00:13:01.880> can<00:13:02.080> add<00:13:02.280> new" + }, + { + "start": 782.39, + "duration": 0.0, + "text": "so, in the watch window, I can add new" + }, + { + "start": 782.4, + "duration": 0.0, + "text": "so, in the watch window, I can add new expressions<00:13:03.160> uh<00:13:03.320> just<00:13:03.480> by<00:13:03.600> typing<00:13:04.080> in<00:13:04.200> this" + }, + { + "start": 784.39, + "duration": 0.0, + "text": "expressions uh just by typing in this" + }, + { + "start": 784.4, + "duration": 0.0, + "text": "expressions uh just by typing in this little<00:13:04.640> expression<00:13:05.040> slot.<00:13:05.600> I<00:13:05.680> can<00:13:05.839> hit<00:13:06.080> F2<00:13:06.480> to" + }, + { + "start": 786.55, + "duration": 0.0, + "text": "little expression slot. I can hit F2 to" + }, + { + "start": 786.56, + "duration": 0.0, + "text": "little expression slot. I can hit F2 to edit<00:13:06.800> it,<00:13:06.920> or<00:13:07.000> I<00:13:07.040> can<00:13:07.200> double<00:13:07.440> click,<00:13:07.760> or<00:13:07.800> I<00:13:07.880> can" + }, + { + "start": 787.95, + "duration": 0.0, + "text": "edit it, or I can double click, or I can" + }, + { + "start": 787.96, + "duration": 0.0, + "text": "edit it, or I can double click, or I can just<00:13:08.080> start<00:13:08.280> typing,<00:13:08.600> too.<00:13:08.800> So,<00:13:08.920> I<00:13:08.960> can<00:13:09.080> do<00:13:09.920> um" + }, + { + "start": 790.71, + "duration": 0.0, + "text": "just start typing, too. So, I can do um" + }, + { + "start": 790.72, + "duration": 0.0, + "text": "just start typing, too. So, I can do um if<00:13:10.839> I<00:13:10.880> want<00:13:11.040> to<00:13:11.080> evaluate<00:13:11.440> basic<00:13:11.800> structure," + }, + { + "start": 793.11, + "duration": 0.0, + "text": "if I want to evaluate basic structure," + }, + { + "start": 793.12, + "duration": 0.0, + "text": "if I want to evaluate basic structure, um" + }, + { + "start": 794.31, + "duration": 0.0, + "text": "um" + }, + { + "start": 794.32, + "duration": 0.0, + "text": "um this<00:13:14.600> is<00:13:14.760> just<00:13:15.400> uh<00:13:15.640> I<00:13:15.720> can<00:13:15.839> put<00:13:16.000> this<00:13:16.200> in<00:13:16.400> and<00:13:16.680> it" + }, + { + "start": 796.75, + "duration": 0.0, + "text": "this is just uh I can put this in and it" + }, + { + "start": 796.76, + "duration": 0.0, + "text": "this is just uh I can put this in and it expands<00:13:17.240> just<00:13:17.480> like<00:13:17.680> what<00:13:17.800> the<00:13:17.880> hover" + }, + { + "start": 798.11, + "duration": 0.0, + "text": "expands just like what the hover" + }, + { + "start": 798.12, + "duration": 0.0, + "text": "expands just like what the hover evaluation<00:13:18.680> would<00:13:18.760> have<00:13:18.880> done.<00:13:19.720> Um" + }, + { + "start": 801.39, + "duration": 0.0, + "text": "evaluation would have done. Um" + }, + { + "start": 801.4, + "duration": 0.0, + "text": "evaluation would have done. Um uh" + }, + { + "start": 802.71, + "duration": 0.0, + "text": "uh" + }, + { + "start": 802.72, + "duration": 0.0, + "text": "uh Let's<00:13:22.880> see<00:13:22.960> what<00:13:23.080> else.<00:13:23.480> I<00:13:23.560> can<00:13:23.680> put<00:13:23.839> string<00:13:24.160> in" + }, + { + "start": 804.27, + "duration": 0.0, + "text": "Let's see what else. I can put string in" + }, + { + "start": 804.28, + "duration": 0.0, + "text": "Let's see what else. I can put string in here.<00:13:24.839> I<00:13:24.880> can<00:13:25.000> put<00:13:25.200> longer<00:13:25.600> text<00:13:26.040> in<00:13:26.160> here.<00:13:27.040> Um" + }, + { + "start": 809.64, + "duration": 0.0, + "text": "Uh<00:13:29.920> what<00:13:30.080> else?<00:13:30.560> Let's<00:13:30.720> see." + }, + { + "start": 811.71, + "duration": 0.0, + "text": "Uh what else? Let's see." + }, + { + "start": 811.72, + "duration": 0.0, + "text": "Uh what else? Let's see. Um" + }, + { + "start": 812.99, + "duration": 0.0, + "text": "Um" + }, + { + "start": 813.0, + "duration": 0.0, + "text": "Um So<00:13:33.160> that's<00:13:33.360> like<00:13:33.840> that's<00:13:34.040> a<00:13:34.080> few<00:13:34.640> kinds<00:13:34.920> of" + }, + { + "start": 815.03, + "duration": 0.0, + "text": "So that's like that's a few kinds of" + }, + { + "start": 815.04, + "duration": 0.0, + "text": "So that's like that's a few kinds of evaluation<00:13:35.520> things.<00:13:35.800> Now<00:13:35.920> something<00:13:36.240> that's" + }, + { + "start": 816.43, + "duration": 0.0, + "text": "evaluation things. Now something that's" + }, + { + "start": 816.44, + "duration": 0.0, + "text": "evaluation things. Now something that's unique<00:13:36.680> about<00:13:36.880> the<00:13:36.960> rad<00:13:37.120> debugger<00:13:37.520> is<00:13:37.680> that" + }, + { + "start": 818.27, + "duration": 0.0, + "text": "unique about the rad debugger is that" + }, + { + "start": 818.28, + "duration": 0.0, + "text": "unique about the rad debugger is that all<00:13:38.440> those<00:13:38.720> UIs<00:13:39.040> I<00:13:39.120> showed<00:13:39.320> before<00:13:39.680> like" + }, + { + "start": 819.95, + "duration": 0.0, + "text": "all those UIs I showed before like" + }, + { + "start": 819.96, + "duration": 0.0, + "text": "all those UIs I showed before like targets,<00:13:41.200> there's<00:13:41.360> also<00:13:41.600> UIs<00:13:41.880> like" + }, + { + "start": 822.11, + "duration": 0.0, + "text": "targets, there's also UIs like" + }, + { + "start": 822.12, + "duration": 0.0, + "text": "targets, there's also UIs like breakpoints." + }, + { + "start": 823.75, + "duration": 0.0, + "text": "breakpoints." + }, + { + "start": 823.76, + "duration": 0.0, + "text": "breakpoints. Um<00:13:44.360> these<00:13:44.480> are<00:13:44.560> some<00:13:44.720> breakpoints<00:13:45.280> that<00:13:45.440> I" + }, + { + "start": 825.47, + "duration": 0.0, + "text": "Um these are some breakpoints that I" + }, + { + "start": 825.48, + "duration": 0.0, + "text": "Um these are some breakpoints that I have.<00:13:46.040> Step<00:13:46.280> like<00:13:46.400> here's<00:13:46.560> the<00:13:46.640> one<00:13:46.760> I<00:13:46.800> just" + }, + { + "start": 827.03, + "duration": 0.0, + "text": "have. Step like here's the one I just" + }, + { + "start": 827.04, + "duration": 0.0, + "text": "have. Step like here's the one I just set,<00:13:47.600> which<00:13:47.800> is<00:13:48.520> right<00:13:48.720> here." + }, + { + "start": 831.03, + "duration": 0.0, + "text": "set, which is right here." + }, + { + "start": 831.04, + "duration": 0.0, + "text": "set, which is right here. Um<00:13:51.960> all<00:13:52.200> of<00:13:52.280> these<00:13:52.520> UIs<00:13:53.080> are<00:13:53.280> actually<00:13:54.120> uh<00:13:54.560> all" + }, + { + "start": 834.83, + "duration": 0.0, + "text": "Um all of these UIs are actually uh all" + }, + { + "start": 834.84, + "duration": 0.0, + "text": "Um all of these UIs are actually uh all I<00:13:54.920> guess<00:13:55.120> I'll<00:13:55.200> just<00:13:55.400> spoil<00:13:55.760> it.<00:13:55.920> These<00:13:56.480> are" + }, + { + "start": 836.63, + "duration": 0.0, + "text": "I guess I'll just spoil it. These are" + }, + { + "start": 836.64, + "duration": 0.0, + "text": "I guess I'll just spoil it. These are all<00:13:56.800> watch<00:13:57.040> windows.<00:13:57.800> Um<00:13:58.480> so<00:13:59.200> so<00:13:59.400> basically" + }, + { + "start": 839.87, + "duration": 0.0, + "text": "all watch windows. Um so so basically" + }, + { + "start": 839.88, + "duration": 0.0, + "text": "all watch windows. Um so so basically like<00:14:00.040> if<00:14:00.160> you<00:14:00.240> didn't<00:14:00.400> want<00:14:00.520> to<00:14:00.600> use<00:14:00.720> these" + }, + { + "start": 840.87, + "duration": 0.0, + "text": "like if you didn't want to use these" + }, + { + "start": 840.88, + "duration": 0.0, + "text": "like if you didn't want to use these tabs<00:14:01.160> at<00:14:01.280> all," + }, + { + "start": 842.59, + "duration": 0.0, + "text": "tabs at all," + }, + { + "start": 842.6, + "duration": 0.0, + "text": "tabs at all, you<00:14:02.680> could<00:14:02.800> just<00:14:02.960> say,<00:14:03.120> \"Hey,<00:14:03.280> I<00:14:03.360> want<00:14:03.480> to<00:14:03.520> look" + }, + { + "start": 843.67, + "duration": 0.0, + "text": "you could just say, \"Hey, I want to look" + }, + { + "start": 843.68, + "duration": 0.0, + "text": "you could just say, \"Hey, I want to look at<00:14:03.800> all<00:14:03.920> the<00:14:04.000> targets" + }, + { + "start": 845.47, + "duration": 0.0, + "text": "at all the targets" + }, + { + "start": 845.48, + "duration": 0.0, + "text": "at all the targets in<00:14:05.600> my<00:14:05.720> watch<00:14:05.960> window.\"<00:14:06.240> And<00:14:06.360> if<00:14:06.440> I<00:14:06.480> expand" + }, + { + "start": 846.87, + "duration": 0.0, + "text": "in my watch window.\" And if I expand" + }, + { + "start": 846.88, + "duration": 0.0, + "text": "in my watch window.\" And if I expand that,<00:14:07.040> then<00:14:07.200> I<00:14:07.240> just<00:14:07.480> see<00:14:07.600> something<00:14:07.880> that" + }, + { + "start": 848.03, + "duration": 0.0, + "text": "that, then I just see something that" + }, + { + "start": 848.04, + "duration": 0.0, + "text": "that, then I just see something that looks<00:14:08.600> quite<00:14:08.880> a<00:14:08.920> lot<00:14:09.320> like<00:14:09.640> the<00:14:09.760> targets<00:14:10.200> tab," + }, + { + "start": 850.75, + "duration": 0.0, + "text": "looks quite a lot like the targets tab," + }, + { + "start": 850.76, + "duration": 0.0, + "text": "looks quite a lot like the targets tab, right?<00:14:11.760> I<00:14:11.800> can<00:14:11.920> just<00:14:12.040> start<00:14:12.160> evaluating" + }, + { + "start": 852.59, + "duration": 0.0, + "text": "right? I can just start evaluating" + }, + { + "start": 852.6, + "duration": 0.0, + "text": "right? I can just start evaluating things<00:14:12.800> like<00:14:12.920> that.<00:14:13.200> If<00:14:13.320> I'm<00:14:13.440> like,<00:14:13.560> \"Hey,<00:14:13.680> I" + }, + { + "start": 853.71, + "duration": 0.0, + "text": "things like that. If I'm like, \"Hey, I" + }, + { + "start": 853.72, + "duration": 0.0, + "text": "things like that. If I'm like, \"Hey, I want<00:14:13.840> to<00:14:13.920> see<00:14:14.000> all<00:14:14.080> my<00:14:14.200> breakpoints.\"" + }, + { + "start": 855.75, + "duration": 0.0, + "text": "want to see all my breakpoints.\"" + }, + { + "start": 855.76, + "duration": 0.0, + "text": "want to see all my breakpoints.\" Uh<00:14:15.960> that<00:14:16.080> can<00:14:16.200> also<00:14:16.440> just<00:14:16.600> be<00:14:16.720> in<00:14:16.840> here." + }, + { + "start": 858.31, + "duration": 0.0, + "text": "Uh that can also just be in here." + }, + { + "start": 858.32, + "duration": 0.0, + "text": "Uh that can also just be in here. Um" + }, + { + "start": 859.59, + "duration": 0.0, + "text": "Um" + }, + { + "start": 859.6, + "duration": 0.0, + "text": "Um And<00:14:19.760> so<00:14:19.880> I<00:14:19.960> don't<00:14:20.440> necessarily<00:14:20.920> need<00:14:21.160> these" + }, + { + "start": 861.31, + "duration": 0.0, + "text": "And so I don't necessarily need these" + }, + { + "start": 861.32, + "duration": 0.0, + "text": "And so I don't necessarily need these things.<00:14:21.720> And<00:14:21.880> let<00:14:22.160> you<00:14:22.240> know,<00:14:22.360> let's<00:14:22.520> say<00:14:22.640> for" + }, + { + "start": 862.79, + "duration": 0.0, + "text": "things. And let you know, let's say for" + }, + { + "start": 862.8, + "duration": 0.0, + "text": "things. And let you know, let's say for example<00:14:23.200> that<00:14:23.360> like<00:14:24.160> you<00:14:24.240> know,<00:14:24.400> I<00:14:24.480> don't<00:14:24.640> want" + }, + { + "start": 864.75, + "duration": 0.0, + "text": "example that like you know, I don't want" + }, + { + "start": 864.76, + "duration": 0.0, + "text": "example that like you know, I don't want to<00:14:24.880> hover<00:14:25.200> my<00:14:25.360> thread<00:14:25.720> instruction<00:14:26.120> pointer" + }, + { + "start": 866.39, + "duration": 0.0, + "text": "to hover my thread instruction pointer" + }, + { + "start": 866.4, + "duration": 0.0, + "text": "to hover my thread instruction pointer every<00:14:26.640> time<00:14:26.840> I<00:14:26.880> want<00:14:27.000> to<00:14:27.080> see<00:14:27.160> the<00:14:27.240> call<00:14:27.440> stack." + }, + { + "start": 868.67, + "duration": 0.0, + "text": "every time I want to see the call stack." + }, + { + "start": 868.68, + "duration": 0.0, + "text": "every time I want to see the call stack. Um" + }, + { + "start": 869.71, + "duration": 0.0, + "text": "Um" + }, + { + "start": 869.72, + "duration": 0.0, + "text": "Um well,<00:14:30.000> like<00:14:30.440> what<00:14:30.600> can<00:14:30.720> I<00:14:30.800> do<00:14:31.120> to<00:14:31.240> start" + }, + { + "start": 871.55, + "duration": 0.0, + "text": "well, like what can I do to start" + }, + { + "start": 871.56, + "duration": 0.0, + "text": "well, like what can I do to start inspecting<00:14:32.600> the<00:14:32.720> state<00:14:33.040> of<00:14:33.160> a<00:14:33.200> particular" + }, + { + "start": 873.67, + "duration": 0.0, + "text": "inspecting the state of a particular" + }, + { + "start": 873.68, + "duration": 0.0, + "text": "inspecting the state of a particular thread?<00:14:34.040> Well,<00:14:34.440> I<00:14:34.520> know<00:14:34.680> I'm<00:14:34.760> debugging<00:14:35.120> a" + }, + { + "start": 875.15, + "duration": 0.0, + "text": "thread? Well, I know I'm debugging a" + }, + { + "start": 875.16, + "duration": 0.0, + "text": "thread? Well, I know I'm debugging a process.<00:14:35.720> So<00:14:35.800> let<00:14:35.920> me<00:14:36.040> let<00:14:36.200> me<00:14:36.480> maybe<00:14:36.720> look<00:14:36.880> at" + }, + { + "start": 876.95, + "duration": 0.0, + "text": "process. So let me let me maybe look at" + }, + { + "start": 876.96, + "duration": 0.0, + "text": "process. So let me let me maybe look at all<00:14:37.040> the<00:14:37.120> processes<00:14:37.680> I<00:14:37.720> have.<00:14:38.200> Okay,<00:14:38.440> so" + }, + { + "start": 878.55, + "duration": 0.0, + "text": "all the processes I have. Okay, so" + }, + { + "start": 878.56, + "duration": 0.0, + "text": "all the processes I have. Okay, so there's<00:14:38.800> all<00:14:38.839> the<00:14:38.920> processes<00:14:39.400> that<00:14:39.480> I'm" + }, + { + "start": 879.55, + "duration": 0.0, + "text": "there's all the processes that I'm" + }, + { + "start": 879.56, + "duration": 0.0, + "text": "there's all the processes that I'm attached<00:14:39.920> to." + }, + { + "start": 880.829, + "duration": 0.0, + "text": "attached to." + }, + { + "start": 880.839, + "duration": 0.0, + "text": "attached to. Um<00:14:41.400> if<00:14:41.520> I<00:14:41.560> expand<00:14:41.960> that,<00:14:42.120> it's<00:14:42.240> like,<00:14:42.400> \"Oh," + }, + { + "start": 882.51, + "duration": 0.0, + "text": "Um if I expand that, it's like, \"Oh," + }, + { + "start": 882.52, + "duration": 0.0, + "text": "Um if I expand that, it's like, \"Oh, I've<00:14:42.640> got<00:14:42.880> the<00:14:43.240> I've<00:14:43.360> got<00:14:43.560> threads<00:14:43.920> that<00:14:44.080> are" + }, + { + "start": 884.39, + "duration": 0.0, + "text": "I've got the I've got threads that are" + }, + { + "start": 884.4, + "duration": 0.0, + "text": "I've got the I've got threads that are in<00:14:44.520> this<00:14:44.680> process.\"<00:14:45.360> Uh<00:14:45.480> we<00:14:45.600> have<00:14:45.720> three<00:14:46.040> of" + }, + { + "start": 886.11, + "duration": 0.0, + "text": "in this process.\" Uh we have three of" + }, + { + "start": 886.12, + "duration": 0.0, + "text": "in this process.\" Uh we have three of these.<00:14:46.360> These<00:14:46.520> are<00:14:46.600> just<00:14:46.800> spawned.<00:14:47.400> The<00:14:47.520> these" + }, + { + "start": 887.71, + "duration": 0.0, + "text": "these. These are just spawned. The these" + }, + { + "start": 887.72, + "duration": 0.0, + "text": "these. These are just spawned. The these are<00:14:47.839> not<00:14:48.360> um" + }, + { + "start": 889.75, + "duration": 0.0, + "text": "are not um" + }, + { + "start": 889.76, + "duration": 0.0, + "text": "are not um these<00:14:49.880> are<00:14:49.920> not<00:14:50.080> spawned<00:14:50.360> by<00:14:50.640> this<00:14:50.880> program." + }, + { + "start": 891.23, + "duration": 0.0, + "text": "these are not spawned by this program." + }, + { + "start": 891.24, + "duration": 0.0, + "text": "these are not spawned by this program. They're<00:14:51.320> spawned<00:14:51.640> by<00:14:51.760> the<00:14:52.480> by<00:14:52.720> the<00:14:52.880> operating" + }, + { + "start": 893.23, + "duration": 0.0, + "text": "They're spawned by the by the operating" + }, + { + "start": 893.24, + "duration": 0.0, + "text": "They're spawned by the by the operating system<00:14:53.880> uh<00:14:54.360> for<00:14:55.040> for<00:14:55.200> reasons<00:14:55.520> that<00:14:55.640> are<00:14:56.000> uh" + }, + { + "start": 896.15, + "duration": 0.0, + "text": "system uh for for reasons that are uh" + }, + { + "start": 896.16, + "duration": 0.0, + "text": "system uh for for reasons that are uh you<00:14:56.240> could<00:14:56.360> probably<00:14:56.720> find<00:14:56.960> out,<00:14:57.160> but<00:14:57.360> we" + }, + { + "start": 897.71, + "duration": 0.0, + "text": "you could probably find out, but we" + }, + { + "start": 897.72, + "duration": 0.0, + "text": "you could probably find out, but we don't<00:14:57.960> know." + }, + { + "start": 898.829, + "duration": 0.0, + "text": "don't know." + }, + { + "start": 898.839, + "duration": 0.0, + "text": "don't know. Um" + }, + { + "start": 900.23, + "duration": 0.0, + "text": "Um" + }, + { + "start": 900.24, + "duration": 0.0, + "text": "Um but<00:15:00.360> anyways,<00:15:00.680> here's<00:15:00.880> my<00:15:01.040> thread.<00:15:01.320> I<00:15:01.360> can" + }, + { + "start": 901.47, + "duration": 0.0, + "text": "but anyways, here's my thread. I can" + }, + { + "start": 901.48, + "duration": 0.0, + "text": "but anyways, here's my thread. I can expand<00:15:01.880> it<00:15:02.320> and<00:15:02.400> it's<00:15:02.520> like,<00:15:02.680> \"Oh,<00:15:03.080> there's<00:15:03.280> my" + }, + { + "start": 903.39, + "duration": 0.0, + "text": "expand it and it's like, \"Oh, there's my" + }, + { + "start": 903.4, + "duration": 0.0, + "text": "expand it and it's like, \"Oh, there's my call<00:15:03.560> stack.\"<00:15:04.160> That's<00:15:04.320> just<00:15:04.560> in<00:15:04.680> here<00:15:05.480> um" + }, + { + "start": 906.15, + "duration": 0.0, + "text": "call stack.\" That's just in here um" + }, + { + "start": 906.16, + "duration": 0.0, + "text": "call stack.\" That's just in here um inside<00:15:06.520> of<00:15:06.600> this<00:15:06.760> process<00:15:07.160> tree.<00:15:07.880> Now<00:15:08.000> if<00:15:08.160> I" + }, + { + "start": 908.19, + "duration": 0.0, + "text": "inside of this process tree. Now if I" + }, + { + "start": 908.2, + "duration": 0.0, + "text": "inside of this process tree. Now if I wanted<00:15:08.480> to<00:15:08.560> like" + }, + { + "start": 909.51, + "duration": 0.0, + "text": "wanted to like" + }, + { + "start": 909.52, + "duration": 0.0, + "text": "wanted to like not<00:15:09.800> bother<00:15:10.560> expanding<00:15:11.320> that<00:15:11.480> every<00:15:11.600> time,<00:15:11.839> I" + }, + { + "start": 911.87, + "duration": 0.0, + "text": "not bother expanding that every time, I" + }, + { + "start": 911.88, + "duration": 0.0, + "text": "not bother expanding that every time, I could<00:15:12.000> also<00:15:12.200> just<00:15:12.360> do<00:15:12.480> like,<00:15:12.960> \"Okay,<00:15:13.320> well," + }, + { + "start": 913.47, + "duration": 0.0, + "text": "could also just do like, \"Okay, well," + }, + { + "start": 913.48, + "duration": 0.0, + "text": "could also just do like, \"Okay, well, can<00:15:13.640> I<00:15:13.680> do<00:15:13.839> threads?\"<00:15:14.400> Or<00:15:14.839> maybe<00:15:15.000> I<00:15:15.040> can<00:15:15.120> do" + }, + { + "start": 915.23, + "duration": 0.0, + "text": "can I do threads?\" Or maybe I can do" + }, + { + "start": 915.24, + "duration": 0.0, + "text": "can I do threads?\" Or maybe I can do processes<00:15:16.520> at<00:15:16.720> zero<00:15:17.440> dot<00:15:17.680> threads<00:15:18.920> um<00:15:19.280> at" + }, + { + "start": 919.47, + "duration": 0.0, + "text": "processes at zero dot threads um at" + }, + { + "start": 919.48, + "duration": 0.0, + "text": "processes at zero dot threads um at zero.<00:15:20.400> And<00:15:20.520> hey,<00:15:20.680> there's<00:15:20.880> my<00:15:21.000> mule<00:15:21.240> main.<00:15:21.720> And" + }, + { + "start": 921.829, + "duration": 0.0, + "text": "zero. And hey, there's my mule main. And" + }, + { + "start": 921.839, + "duration": 0.0, + "text": "zero. And hey, there's my mule main. And then<00:15:22.000> like<00:15:22.200> let's<00:15:22.400> do<00:15:22.520> like<00:15:22.680> dot<00:15:22.960> call<00:15:23.240> stack." + }, + { + "start": 924.63, + "duration": 0.0, + "text": "then like let's do like dot call stack." + }, + { + "start": 924.64, + "duration": 0.0, + "text": "then like let's do like dot call stack. There<00:15:24.760> we<00:15:24.840> go." + }, + { + "start": 925.83, + "duration": 0.0, + "text": "There we go." + }, + { + "start": 925.84, + "duration": 0.0, + "text": "There we go. Um<00:15:26.680> now<00:15:26.800> I<00:15:26.880> can<00:15:27.000> just<00:15:27.120> evaluate<00:15:27.400> the<00:15:27.480> call" + }, + { + "start": 927.67, + "duration": 0.0, + "text": "Um now I can just evaluate the call" + }, + { + "start": 927.68, + "duration": 0.0, + "text": "Um now I can just evaluate the call stack.<00:15:28.360> There's<00:15:28.760> a<00:15:29.440> a<00:15:29.520> fast<00:15:29.760> path<00:15:30.000> I<00:15:30.040> can<00:15:30.160> do" + }, + { + "start": 930.27, + "duration": 0.0, + "text": "stack. There's a a fast path I can do" + }, + { + "start": 930.28, + "duration": 0.0, + "text": "stack. There's a a fast path I can do for<00:15:30.400> that<00:15:30.680> is<00:15:30.800> just<00:15:31.040> current<00:15:31.360> thread<00:15:31.920> dot<00:15:32.120> call" + }, + { + "start": 932.35, + "duration": 0.0, + "text": "for that is just current thread dot call" + }, + { + "start": 932.36, + "duration": 0.0, + "text": "for that is just current thread dot call stack<00:15:32.920> or<00:15:33.040> even<00:15:33.200> more<00:15:33.360> succinctly<00:15:34.400> call" + }, + { + "start": 934.59, + "duration": 0.0, + "text": "stack or even more succinctly call" + }, + { + "start": 934.6, + "duration": 0.0, + "text": "stack or even more succinctly call stack.<00:15:35.400> Um<00:15:35.800> which<00:15:36.040> is<00:15:36.560> All<00:15:36.720> of<00:15:36.800> these<00:15:36.960> things" + }, + { + "start": 937.19, + "duration": 0.0, + "text": "stack. Um which is All of these things" + }, + { + "start": 937.2, + "duration": 0.0, + "text": "stack. Um which is All of these things mean<00:15:37.360> the<00:15:37.440> same<00:15:37.640> thing." + }, + { + "start": 938.67, + "duration": 0.0, + "text": "mean the same thing." + }, + { + "start": 938.68, + "duration": 0.0, + "text": "mean the same thing. And<00:15:38.800> sure<00:15:39.000> enough,<00:15:39.320> if<00:15:39.480> I<00:15:39.560> open<00:15:39.840> up<00:15:40.320> a<00:15:40.400> call" + }, + { + "start": 940.59, + "duration": 0.0, + "text": "And sure enough, if I open up a call" + }, + { + "start": 940.6, + "duration": 0.0, + "text": "And sure enough, if I open up a call stack<00:15:40.920> tab,<00:15:41.160> which<00:15:41.320> is<00:15:41.560> this<00:15:41.720> is<00:15:41.800> just<00:15:42.000> a<00:15:42.040> fast" + }, + { + "start": 942.35, + "duration": 0.0, + "text": "stack tab, which is this is just a fast" + }, + { + "start": 942.36, + "duration": 0.0, + "text": "stack tab, which is this is just a fast path,<00:15:42.680> right?<00:15:42.880> So<00:15:42.960> this<00:15:43.120> is<00:15:43.240> like" + }, + { + "start": 944.15, + "duration": 0.0, + "text": "path, right? So this is like" + }, + { + "start": 944.16, + "duration": 0.0, + "text": "path, right? So this is like um<00:15:44.600> this<00:15:44.720> is<00:15:44.840> like<00:15:45.160> very<00:15:45.440> similar<00:15:45.680> to<00:15:45.760> what" + }, + { + "start": 945.91, + "duration": 0.0, + "text": "um this is like very similar to what" + }, + { + "start": 945.92, + "duration": 0.0, + "text": "um this is like very similar to what you'd<00:15:46.040> see<00:15:46.160> in<00:15:46.240> Visual<00:15:46.520> Studio,<00:15:46.920> for<00:15:47.040> example." + }, + { + "start": 948.27, + "duration": 0.0, + "text": "you'd see in Visual Studio, for example." + }, + { + "start": 948.28, + "duration": 0.0, + "text": "you'd see in Visual Studio, for example. Um" + }, + { + "start": 949.23, + "duration": 0.0, + "text": "Um" + }, + { + "start": 949.24, + "duration": 0.0, + "text": "Um you<00:15:49.280> can<00:15:49.400> see<00:15:49.520> your<00:15:49.640> call<00:15:49.800> stack<00:15:50.080> here.<00:15:50.560> If<00:15:50.800> I" + }, + { + "start": 950.87, + "duration": 0.0, + "text": "you can see your call stack here. If I" + }, + { + "start": 950.88, + "duration": 0.0, + "text": "you can see your call stack here. If I actually<00:15:51.400> uh<00:15:51.840> go<00:15:52.000> to<00:15:52.080> this<00:15:52.240> tab<00:15:52.520> and<00:15:52.640> open<00:15:52.840> up" + }, + { + "start": 952.95, + "duration": 0.0, + "text": "actually uh go to this tab and open up" + }, + { + "start": 952.96, + "duration": 0.0, + "text": "actually uh go to this tab and open up the<00:15:53.120> options<00:15:53.600> for<00:15:53.720> this<00:15:53.880> tab,<00:15:54.360> you'll<00:15:54.560> see" + }, + { + "start": 954.75, + "duration": 0.0, + "text": "the options for this tab, you'll see" + }, + { + "start": 954.76, + "duration": 0.0, + "text": "the options for this tab, you'll see that<00:15:54.920> the<00:15:55.040> expression<00:15:56.000> that's<00:15:56.200> used<00:15:56.480> to" + }, + { + "start": 956.59, + "duration": 0.0, + "text": "that the expression that's used to" + }, + { + "start": 956.6, + "duration": 0.0, + "text": "that the expression that's used to create<00:15:57.000> this<00:15:57.480> tab<00:15:57.760> info<00:15:58.720> is<00:15:59.080> query<00:15:59.680> colon<00:16:00.160> call" + }, + { + "start": 960.39, + "duration": 0.0, + "text": "create this tab info is query colon call" + }, + { + "start": 960.4, + "duration": 0.0, + "text": "create this tab info is query colon call stack.<00:16:01.080> Now<00:16:01.320> the<00:16:01.400> query<00:16:01.720> colon<00:16:02.000> thing<00:16:02.160> is<00:16:02.280> just" + }, + { + "start": 962.47, + "duration": 0.0, + "text": "stack. Now the query colon thing is just" + }, + { + "start": 962.48, + "duration": 0.0, + "text": "stack. Now the query colon thing is just a<00:16:02.520> disambiguator.<00:16:03.360> This<00:16:03.560> is<00:16:03.640> just<00:16:03.840> in<00:16:03.920> case<00:16:04.440> if" + }, + { + "start": 964.55, + "duration": 0.0, + "text": "a disambiguator. This is just in case if" + }, + { + "start": 964.56, + "duration": 0.0, + "text": "a disambiguator. This is just in case if you<00:16:04.640> have<00:16:04.800> a<00:16:04.840> local<00:16:05.080> variable<00:16:05.480> called<00:16:05.800> call" + }, + { + "start": 965.99, + "duration": 0.0, + "text": "you have a local variable called call" + }, + { + "start": 966.0, + "duration": 0.0, + "text": "you have a local variable called call stack,<00:16:06.760> this<00:16:07.040> is<00:16:07.320> basically<00:16:07.720> telling<00:16:07.960> the" + }, + { + "start": 968.03, + "duration": 0.0, + "text": "stack, this is basically telling the" + }, + { + "start": 968.04, + "duration": 0.0, + "text": "stack, this is basically telling the debugger's<00:16:08.400> evaluation<00:16:08.920> system,<00:16:09.640> \"Hey,<00:16:10.280> I'm" + }, + { + "start": 970.47, + "duration": 0.0, + "text": "debugger's evaluation system, \"Hey, I'm" + }, + { + "start": 970.48, + "duration": 0.0, + "text": "debugger's evaluation system, \"Hey, I'm just<00:16:10.720> doing<00:16:10.920> a<00:16:10.960> debugger<00:16:11.320> query.<00:16:11.800> I<00:16:11.920> don't" + }, + { + "start": 972.19, + "duration": 0.0, + "text": "just doing a debugger query. I don't" + }, + { + "start": 972.2, + "duration": 0.0, + "text": "just doing a debugger query. I don't want<00:16:12.360> you<00:16:12.440> to<00:16:12.600> resolve<00:16:13.000> this<00:16:13.200> as<00:16:13.320> a<00:16:13.360> local" + }, + { + "start": 973.59, + "duration": 0.0, + "text": "want you to resolve this as a local" + }, + { + "start": 973.6, + "duration": 0.0, + "text": "want you to resolve this as a local variable,<00:16:14.000> right?\"<00:16:14.200> So<00:16:14.360> just<00:16:14.960> unambiguously" + }, + { + "start": 975.63, + "duration": 0.0, + "text": "variable, right?\" So just unambiguously" + }, + { + "start": 975.64, + "duration": 0.0, + "text": "variable, right?\" So just unambiguously referring<00:16:16.000> to<00:16:16.280> the<00:16:16.800> to<00:16:16.920> the<00:16:17.000> current<00:16:17.320> thread's" + }, + { + "start": 977.63, + "duration": 0.0, + "text": "referring to the to the current thread's" + }, + { + "start": 977.64, + "duration": 0.0, + "text": "referring to the to the current thread's call<00:16:17.800> stack,<00:16:18.080> basically." + }, + { + "start": 979.59, + "duration": 0.0, + "text": "call stack, basically." + }, + { + "start": 979.6, + "duration": 0.0, + "text": "call stack, basically. So<00:16:19.680> anyway,<00:16:20.000> it's<00:16:20.080> like<00:16:20.360> that's<00:16:20.600> just<00:16:20.760> all<00:16:20.880> the" + }, + { + "start": 980.95, + "duration": 0.0, + "text": "So anyway, it's like that's just all the" + }, + { + "start": 980.96, + "duration": 0.0, + "text": "So anyway, it's like that's just all the call<00:16:21.200> stack<00:16:22.240> tab<00:16:22.600> is.<00:16:23.040> And<00:16:23.160> sure<00:16:23.320> enough,<00:16:23.520> if<00:16:23.680> I" + }, + { + "start": 983.75, + "duration": 0.0, + "text": "call stack tab is. And sure enough, if I" + }, + { + "start": 983.76, + "duration": 0.0, + "text": "call stack tab is. And sure enough, if I open<00:16:23.960> up<00:16:24.080> like<00:16:24.480> the<00:16:24.600> targets<00:16:25.000> view,<00:16:25.920> query" + }, + { + "start": 986.15, + "duration": 0.0, + "text": "open up like the targets view, query" + }, + { + "start": 986.16, + "duration": 0.0, + "text": "open up like the targets view, query targets," + }, + { + "start": 988.829, + "duration": 0.0, + "text": "targets," + }, + { + "start": 988.839, + "duration": 0.0, + "text": "targets, query<00:16:29.120> breakpoints," + }, + { + "start": 990.91, + "duration": 0.0, + "text": "query breakpoints," + }, + { + "start": 990.92, + "duration": 0.0, + "text": "query breakpoints, uh" + }, + { + "start": 992.63, + "duration": 0.0, + "text": "uh" + }, + { + "start": 992.64, + "duration": 0.0, + "text": "uh I<00:16:32.680> don't<00:16:32.800> know.<00:16:33.280> That's<00:16:33.640> like" + }, + { + "start": 994.23, + "duration": 0.0, + "text": "I don't know. That's like" + }, + { + "start": 994.24, + "duration": 0.0, + "text": "I don't know. That's like >> It's<00:16:34.440> good<00:16:34.720> because<00:16:35.040> like<00:16:35.360> already<00:16:35.800> people" + }, + { + "start": 996.23, + "duration": 0.0, + "text": ">> It's good because like already people" + }, + { + "start": 996.24, + "duration": 0.0, + "text": ">> It's good because like already people three<00:16:36.880> separate<00:16:37.280> people<00:16:37.720> at<00:16:37.839> the<00:16:37.960> same<00:16:38.360> time" + }, + { + "start": 998.95, + "duration": 0.0, + "text": "three separate people at the same time" + }, + { + "start": 998.96, + "duration": 0.0, + "text": "three separate people at the same time asked<00:16:39.320> like,<00:16:39.480> \"What<00:16:39.680> if<00:16:39.839> you<00:16:40.000> have<00:16:40.320> a<00:16:40.400> variable" + }, + { + "start": 1001.03, + "duration": 0.0, + "text": "asked like, \"What if you have a variable" + }, + { + "start": 1001.04, + "duration": 0.0, + "text": "asked like, \"What if you have a variable named<00:16:41.520> targets<00:16:42.160> or<00:16:42.440> breakpoints?\"" + }, + { + "start": 1003.11, + "duration": 0.0, + "text": "named targets or breakpoints?\"" + }, + { + "start": 1003.12, + "duration": 0.0, + "text": "named targets or breakpoints?\" >> Yes.<00:16:43.600> Yes.<00:16:43.880> Yes.<00:16:44.120> Yes.<00:16:44.440> Of<00:16:44.560> course.<00:16:44.920> Yeah." + }, + { + "start": 1005.95, + "duration": 0.0, + "text": ">> Yes. Yes. Yes. Yes. Of course. Yeah." + }, + { + "start": 1005.96, + "duration": 0.0, + "text": ">> Yes. Yes. Yes. Yes. Of course. Yeah. Um<00:16:46.360> so<00:16:46.560> that's<00:16:46.920> that's<00:16:47.560> uh<00:16:47.760> that's<00:16:48.000> like" + }, + { + "start": 1009.55, + "duration": 0.0, + "text": "Um so that's that's uh that's like" + }, + { + "start": 1009.56, + "duration": 0.0, + "text": "Um so that's that's uh that's like interesting<00:16:49.960> thing<00:16:50.480> number<00:16:50.720> one.<00:16:50.960> So<00:16:51.040> that's" + }, + { + "start": 1011.19, + "duration": 0.0, + "text": "interesting thing number one. So that's" + }, + { + "start": 1011.2, + "duration": 0.0, + "text": "interesting thing number one. So that's some<00:16:51.320> basic<00:16:51.640> usage<00:16:52.120> and<00:16:52.280> showing<00:16:53.040> kind<00:16:53.200> of<00:16:53.280> how" + }, + { + "start": 1013.43, + "duration": 0.0, + "text": "some basic usage and showing kind of how" + }, + { + "start": 1013.44, + "duration": 0.0, + "text": "some basic usage and showing kind of how all<00:16:53.560> these<00:16:53.760> views<00:16:54.040> are<00:16:54.160> really<00:16:54.400> just<00:16:54.640> all" + }, + { + "start": 1014.87, + "duration": 0.0, + "text": "all these views are really just all" + }, + { + "start": 1014.88, + "duration": 0.0, + "text": "all these views are really just all different<00:16:55.160> versions<00:16:55.480> of<00:16:55.560> the<00:16:55.640> same<00:16:55.880> thing.<00:16:56.640> So" + }, + { + "start": 1016.75, + "duration": 0.0, + "text": "different versions of the same thing. So" + }, + { + "start": 1016.76, + "duration": 0.0, + "text": "different versions of the same thing. So another<00:16:57.000> thing<00:16:57.200> that<00:16:57.320> we<00:16:57.440> can<00:16:57.560> do,<00:16:57.800> so<00:16:57.920> we<00:16:58.040> have" + }, + { + "start": 1018.75, + "duration": 0.0, + "text": "another thing that we can do, so we have" + }, + { + "start": 1018.76, + "duration": 0.0, + "text": "another thing that we can do, so we have I<00:16:58.839> showed<00:16:59.080> breakpoints<00:16:59.520> already.<00:16:59.880> What<00:17:00.000> I<00:17:00.080> can" + }, + { + "start": 1020.23, + "duration": 0.0, + "text": "I showed breakpoints already. What I can" + }, + { + "start": 1020.24, + "duration": 0.0, + "text": "I showed breakpoints already. What I can do<00:17:00.560> is<00:17:01.320> um" + }, + { + "start": 1021.91, + "duration": 0.0, + "text": "do is um" + }, + { + "start": 1021.92, + "duration": 0.0, + "text": "do is um I<00:17:01.960> can<00:17:02.080> also<00:17:02.240> show<00:17:02.400> some<00:17:02.720> better<00:17:03.160> of<00:17:03.520> uh" + }, + { + "start": 1024.27, + "duration": 0.0, + "text": "I can also show some better of uh" + }, + { + "start": 1024.28, + "duration": 0.0, + "text": "I can also show some better of uh visualization<00:17:04.959> stuff." + }, + { + "start": 1026.55, + "duration": 0.0, + "text": "visualization stuff." + }, + { + "start": 1026.56, + "duration": 0.0, + "text": "visualization stuff. So<00:17:06.640> if<00:17:06.760> I<00:17:06.839> go<00:17:07.000> to<00:17:07.079> like<00:17:07.600> longer<00:17:08.040> text,<00:17:08.560> for" + }, + { + "start": 1028.67, + "duration": 0.0, + "text": "So if I go to like longer text, for" + }, + { + "start": 1028.68, + "duration": 0.0, + "text": "So if I go to like longer text, for example,<00:17:09.079> that<00:17:09.240> variable<00:17:09.680> up<00:17:09.760> here<00:17:09.959> that's" + }, + { + "start": 1030.069, + "duration": 0.0, + "text": "example, that variable up here that's" + }, + { + "start": 1030.079, + "duration": 0.0, + "text": "example, that variable up here that's just<00:17:10.280> a<00:17:10.319> big<00:17:10.920> string.<00:17:11.560> If<00:17:11.680> you're<00:17:11.760> trying<00:17:11.959> to" + }, + { + "start": 1031.99, + "duration": 0.0, + "text": "just a big string. If you're trying to" + }, + { + "start": 1032.0, + "duration": 0.0, + "text": "just a big string. If you're trying to like<00:17:12.199> look<00:17:12.360> at<00:17:12.480> this<00:17:12.680> text<00:17:12.959> and<00:17:13.040> like<00:17:13.640> um<00:17:14.120> I<00:17:14.199> In" + }, + { + "start": 1034.309, + "duration": 0.0, + "text": "like look at this text and like um I In" + }, + { + "start": 1034.319, + "duration": 0.0, + "text": "like look at this text and like um I In this<00:17:14.480> case<00:17:14.640> it's<00:17:14.800> short<00:17:15.040> enough<00:17:15.240> that<00:17:15.360> you<00:17:15.400> can" + }, + { + "start": 1035.51, + "duration": 0.0, + "text": "this case it's short enough that you can" + }, + { + "start": 1035.52, + "duration": 0.0, + "text": "this case it's short enough that you can actually<00:17:15.760> see<00:17:15.959> it,<00:17:16.160> but<00:17:16.520> uh<00:17:16.640> just<00:17:16.880> when<00:17:17.040> I" + }, + { + "start": 1037.11, + "duration": 0.0, + "text": "actually see it, but uh just when I" + }, + { + "start": 1037.12, + "duration": 0.0, + "text": "actually see it, but uh just when I hover.<00:17:17.839> But<00:17:17.959> if,<00:17:18.319> you<00:17:18.400> know,<00:17:18.560> like<00:17:18.880> looking<00:17:19.199> at" + }, + { + "start": 1039.309, + "duration": 0.0, + "text": "hover. But if, you know, like looking at" + }, + { + "start": 1039.319, + "duration": 0.0, + "text": "hover. But if, you know, like looking at the<00:17:19.400> string<00:17:19.680> this<00:17:19.880> way<00:17:20.720> is<00:17:20.880> not<00:17:21.040> necessarily" + }, + { + "start": 1041.63, + "duration": 0.0, + "text": "the string this way is not necessarily" + }, + { + "start": 1041.64, + "duration": 0.0, + "text": "the string this way is not necessarily what<00:17:21.800> you<00:17:21.920> want,<00:17:22.160> especially<00:17:22.520> like<00:17:22.720> it<00:17:22.880> has" + }, + { + "start": 1043.069, + "duration": 0.0, + "text": "what you want, especially like it has" + }, + { + "start": 1043.079, + "duration": 0.0, + "text": "what you want, especially like it has some<00:17:23.240> new<00:17:23.400> line<00:17:23.640> characters<00:17:24.120> in<00:17:24.240> there.<00:17:24.520> Like" + }, + { + "start": 1044.67, + "duration": 0.0, + "text": "some new line characters in there. Like" + }, + { + "start": 1044.68, + "duration": 0.0, + "text": "some new line characters in there. Like maybe<00:17:24.920> I<00:17:24.959> don't<00:17:25.199> want<00:17:25.360> the<00:17:25.439> single<00:17:25.760> line<00:17:26.560> um" + }, + { + "start": 1046.87, + "duration": 0.0, + "text": "maybe I don't want the single line um" + }, + { + "start": 1046.88, + "duration": 0.0, + "text": "maybe I don't want the single line um visualization<00:17:27.520> here.<00:17:28.160> What<00:17:28.280> I<00:17:28.319> can<00:17:28.439> actually" + }, + { + "start": 1048.67, + "duration": 0.0, + "text": "visualization here. What I can actually" + }, + { + "start": 1048.68, + "duration": 0.0, + "text": "visualization here. What I can actually do<00:17:29.000> is<00:17:29.360> uh" + }, + { + "start": 1049.99, + "duration": 0.0, + "text": "do is uh" + }, + { + "start": 1050.0, + "duration": 0.0, + "text": "do is uh use<00:17:30.520> uh<00:17:30.760> a<00:17:30.840> view<00:17:31.480> as" + }, + { + "start": 1052.39, + "duration": 0.0, + "text": "use uh a view as" + }, + { + "start": 1052.4, + "duration": 0.0, + "text": "use uh a view as in<00:17:32.760> in<00:17:33.000> the<00:17:33.200> Rad<00:17:33.360> Debugger's<00:17:33.720> parlance." + }, + { + "start": 1055.11, + "duration": 0.0, + "text": "in in the Rad Debugger's parlance." + }, + { + "start": 1055.12, + "duration": 0.0, + "text": "in in the Rad Debugger's parlance. And<00:17:35.240> I<00:17:35.320> can<00:17:35.440> just<00:17:35.560> say,<00:17:35.720> \"Hey,<00:17:35.880> I<00:17:35.960> want<00:17:36.120> to" + }, + { + "start": 1056.19, + "duration": 0.0, + "text": "And I can just say, \"Hey, I want to" + }, + { + "start": 1056.2, + "duration": 0.0, + "text": "And I can just say, \"Hey, I want to visualize<00:17:36.560> this<00:17:36.680> as<00:17:36.840> text.\"" + }, + { + "start": 1058.19, + "duration": 0.0, + "text": "visualize this as text.\"" + }, + { + "start": 1058.2, + "duration": 0.0, + "text": "visualize this as text.\" Um<00:17:38.360> and<00:17:38.480> here<00:17:38.680> I<00:17:38.720> can<00:17:38.880> put<00:17:39.040> in<00:17:39.160> a<00:17:39.200> bunch<00:17:39.400> of" + }, + { + "start": 1059.43, + "duration": 0.0, + "text": "Um and here I can put in a bunch of" + }, + { + "start": 1059.44, + "duration": 0.0, + "text": "Um and here I can put in a bunch of different<00:17:39.680> parameters.<00:17:40.120> So,<00:17:40.200> the<00:17:40.280> first" + }, + { + "start": 1060.51, + "duration": 0.0, + "text": "different parameters. So, the first" + }, + { + "start": 1060.52, + "duration": 0.0, + "text": "different parameters. So, the first thing<00:17:40.640> is<00:17:40.760> just<00:17:40.920> the<00:17:41.000> expression<00:17:41.600> to<00:17:41.720> describe" + }, + { + "start": 1062.75, + "duration": 0.0, + "text": "thing is just the expression to describe" + }, + { + "start": 1062.76, + "duration": 0.0, + "text": "thing is just the expression to describe whatever<00:17:43.120> text<00:17:43.840> I<00:17:43.960> would<00:17:44.120> like<00:17:44.440> like<00:17:44.640> whatever" + }, + { + "start": 1064.95, + "duration": 0.0, + "text": "whatever text I would like like whatever" + }, + { + "start": 1064.96, + "duration": 0.0, + "text": "whatever text I would like like whatever expression<00:17:45.480> that<00:17:45.600> will<00:17:45.760> refer<00:17:46.120> me<00:17:46.320> to<00:17:46.480> the" + }, + { + "start": 1066.55, + "duration": 0.0, + "text": "expression that will refer me to the" + }, + { + "start": 1066.56, + "duration": 0.0, + "text": "expression that will refer me to the text<00:17:46.800> that<00:17:46.920> I<00:17:46.960> want<00:17:47.200> to<00:17:47.240> visualize.<00:17:47.760> Like<00:17:47.920> to" + }, + { + "start": 1068.03, + "duration": 0.0, + "text": "text that I want to visualize. Like to" + }, + { + "start": 1068.04, + "duration": 0.0, + "text": "text that I want to visualize. Like to the<00:17:48.120> data<00:17:48.400> that<00:17:48.520> I<00:17:48.560> want<00:17:48.680> to<00:17:48.760> visualize<00:17:49.040> as" + }, + { + "start": 1069.15, + "duration": 0.0, + "text": "the data that I want to visualize as" + }, + { + "start": 1069.16, + "duration": 0.0, + "text": "the data that I want to visualize as text.<00:17:49.960> I<00:17:50.000> put<00:17:50.200> that<00:17:50.360> here.<00:17:51.120> Um<00:17:51.320> I<00:17:51.360> can<00:17:51.480> also" + }, + { + "start": 1071.71, + "duration": 0.0, + "text": "text. I put that here. Um I can also" + }, + { + "start": 1071.72, + "duration": 0.0, + "text": "text. I put that here. Um I can also supply<00:17:52.040> like<00:17:52.240> a<00:17:52.320> language.<00:17:53.160> So,<00:17:54.080> I<00:17:54.160> mean,<00:17:54.400> I" + }, + { + "start": 1074.43, + "duration": 0.0, + "text": "supply like a language. So, I mean, I" + }, + { + "start": 1074.44, + "duration": 0.0, + "text": "supply like a language. So, I mean, I don't<00:17:54.600> know<00:17:54.720> why<00:17:54.920> I<00:17:54.960> would<00:17:55.080> do<00:17:55.240> that<00:17:55.400> for<00:17:55.520> this" + }, + { + "start": 1075.71, + "duration": 0.0, + "text": "don't know why I would do that for this" + }, + { + "start": 1075.72, + "duration": 0.0, + "text": "don't know why I would do that for this longer<00:17:56.000> text<00:17:56.280> thing.<00:17:56.520> So,<00:17:56.880> you<00:17:56.960> know,<00:17:57.200> but" + }, + { + "start": 1077.63, + "duration": 0.0, + "text": "longer text thing. So, you know, but" + }, + { + "start": 1077.64, + "duration": 0.0, + "text": "longer text thing. So, you know, but this<00:17:57.840> is<00:17:57.920> optional.<00:17:58.880> Um<00:17:59.360> which<00:17:59.520> it<00:17:59.600> doesn't" + }, + { + "start": 1079.83, + "duration": 0.0, + "text": "this is optional. Um which it doesn't" + }, + { + "start": 1079.84, + "duration": 0.0, + "text": "this is optional. Um which it doesn't say<00:17:59.960> it's<00:18:00.120> optional.<00:18:00.640> It<00:18:00.760> should,<00:18:01.000> but" + }, + { + "start": 1081.67, + "duration": 0.0, + "text": "say it's optional. It should, but" + }, + { + "start": 1081.68, + "duration": 0.0, + "text": "say it's optional. It should, but whatever.<00:18:02.200> And<00:18:02.280> then<00:18:02.360> I<00:18:02.400> can<00:18:02.520> also<00:18:02.960> determine" + }, + { + "start": 1083.31, + "duration": 0.0, + "text": "whatever. And then I can also determine" + }, + { + "start": 1083.32, + "duration": 0.0, + "text": "whatever. And then I can also determine whether<00:18:03.880> or<00:18:04.000> not<00:18:04.200> line<00:18:04.360> numbers<00:18:04.640> are<00:18:04.720> shown." + }, + { + "start": 1086.43, + "duration": 0.0, + "text": "whether or not line numbers are shown." + }, + { + "start": 1086.44, + "duration": 0.0, + "text": "whether or not line numbers are shown. But<00:18:06.560> okay,<00:18:06.760> like<00:18:06.960> let<00:18:07.080> me<00:18:07.160> just<00:18:07.600> let<00:18:07.680> me<00:18:07.760> just" + }, + { + "start": 1087.91, + "duration": 0.0, + "text": "But okay, like let me just let me just" + }, + { + "start": 1087.92, + "duration": 0.0, + "text": "But okay, like let me just let me just do<00:18:08.600> just<00:18:09.000> text<00:18:10.040> uh<00:18:10.200> the<00:18:10.320> text<00:18:10.600> view<00:18:10.920> of<00:18:11.120> this" + }, + { + "start": 1091.27, + "duration": 0.0, + "text": "do just text uh the text view of this" + }, + { + "start": 1091.28, + "duration": 0.0, + "text": "do just text uh the text view of this longer<00:18:11.600> text<00:18:11.840> expression.<00:18:12.560> If<00:18:12.680> I<00:18:12.720> expand" + }, + { + "start": 1093.11, + "duration": 0.0, + "text": "longer text expression. If I expand" + }, + { + "start": 1093.12, + "duration": 0.0, + "text": "longer text expression. If I expand this,<00:18:13.320> then<00:18:13.560> I<00:18:13.600> actually<00:18:13.920> get<00:18:14.800> uh<00:18:15.000> like<00:18:15.200> a" + }, + { + "start": 1095.23, + "duration": 0.0, + "text": "this, then I actually get uh like a" + }, + { + "start": 1095.24, + "duration": 0.0, + "text": "this, then I actually get uh like a multi-line<00:18:16.040> string<00:18:16.360> view<00:18:16.920> right<00:18:17.120> here." + }, + { + "start": 1098.43, + "duration": 0.0, + "text": "multi-line string view right here." + }, + { + "start": 1098.44, + "duration": 0.0, + "text": "multi-line string view right here. Um" + }, + { + "start": 1099.79, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1099.8, + "duration": 0.0, + "text": "Um and<00:18:20.160> there's<00:18:20.320> actually<00:18:20.560> this<00:18:20.680> option<00:18:21.200> uh<00:18:21.400> to" + }, + { + "start": 1101.55, + "duration": 0.0, + "text": "and there's actually this option uh to" + }, + { + "start": 1101.56, + "duration": 0.0, + "text": "and there's actually this option uh to pull<00:18:21.800> this<00:18:21.960> out<00:18:22.080> as<00:18:22.200> a<00:18:22.240> new<00:18:22.400> tab.<00:18:22.640> So,<00:18:22.760> if<00:18:22.800> I" + }, + { + "start": 1102.87, + "duration": 0.0, + "text": "pull this out as a new tab. So, if I" + }, + { + "start": 1102.88, + "duration": 0.0, + "text": "pull this out as a new tab. So, if I click<00:18:23.080> and<00:18:23.160> drag<00:18:23.480> that,<00:18:23.880> I<00:18:23.960> can<00:18:24.160> create<00:18:24.520> a<00:18:24.600> tab" + }, + { + "start": 1105.47, + "duration": 0.0, + "text": "click and drag that, I can create a tab" + }, + { + "start": 1105.48, + "duration": 0.0, + "text": "click and drag that, I can create a tab uh<00:18:25.680> where<00:18:26.120> I<00:18:26.200> just<00:18:26.440> see,<00:18:26.760> \"Hey,<00:18:27.000> here's<00:18:27.520> here's" + }, + { + "start": 1107.79, + "duration": 0.0, + "text": "uh where I just see, \"Hey, here's here's" + }, + { + "start": 1107.8, + "duration": 0.0, + "text": "uh where I just see, \"Hey, here's here's the<00:18:27.880> text<00:18:28.240> data<00:18:29.040> visualized<00:18:29.480> as<00:18:29.600> text.\"<00:18:29.960> Now," + }, + { + "start": 1110.11, + "duration": 0.0, + "text": "the text data visualized as text.\" Now," + }, + { + "start": 1110.12, + "duration": 0.0, + "text": "the text data visualized as text.\" Now, you<00:18:30.240> may<00:18:30.360> be<00:18:30.520> wondering," + }, + { + "start": 1112.71, + "duration": 0.0, + "text": "you may be wondering," + }, + { + "start": 1112.72, + "duration": 0.0, + "text": "you may be wondering, \"Hey,<00:18:32.920> this<00:18:33.520> this<00:18:33.800> tab<00:18:34.360> UI<00:18:34.800> sure<00:18:35.120> looks<00:18:35.360> a<00:18:35.400> lot" + }, + { + "start": 1115.91, + "duration": 0.0, + "text": "\"Hey, this this tab UI sure looks a lot" + }, + { + "start": 1115.92, + "duration": 0.0, + "text": "\"Hey, this this tab UI sure looks a lot like<00:18:36.360> this<00:18:36.640> tab's<00:18:37.120> UI.\"<00:18:37.680> Like<00:18:37.960> if<00:18:38.120> we<00:18:38.240> look<00:18:38.440> at" + }, + { + "start": 1118.51, + "duration": 0.0, + "text": "like this tab's UI.\" Like if we look at" + }, + { + "start": 1118.52, + "duration": 0.0, + "text": "like this tab's UI.\" Like if we look at these<00:18:38.760> two<00:18:38.880> things<00:18:39.120> There's<00:18:39.280> a<00:18:39.320> couple<00:18:39.560> of" + }, + { + "start": 1119.63, + "duration": 0.0, + "text": "these two things There's a couple of" + }, + { + "start": 1119.64, + "duration": 0.0, + "text": "these two things There's a couple of differences.<00:18:40.040> Like<00:18:40.200> I<00:18:40.240> can't<00:18:40.520> seem<00:18:40.640> to<00:18:40.720> put" + }, + { + "start": 1120.87, + "duration": 0.0, + "text": "differences. Like I can't seem to put" + }, + { + "start": 1120.88, + "duration": 0.0, + "text": "differences. Like I can't seem to put breakpoints<00:18:41.440> here,<00:18:41.680> which<00:18:42.240> would<00:18:42.360> kind<00:18:42.520> of" + }, + { + "start": 1122.55, + "duration": 0.0, + "text": "breakpoints here, which would kind of" + }, + { + "start": 1122.56, + "duration": 0.0, + "text": "breakpoints here, which would kind of make<00:18:42.720> sense,<00:18:43.000> right?<00:18:43.160> Because<00:18:43.480> like<00:18:43.600> there's" + }, + { + "start": 1124.79, + "duration": 0.0, + "text": "make sense, right? Because like there's" + }, + { + "start": 1124.8, + "duration": 0.0, + "text": "make sense, right? Because like there's like<00:18:44.960> this<00:18:45.080> is<00:18:45.200> not<00:18:45.400> code.<00:18:45.840> Like<00:18:45.960> there's<00:18:46.160> no" + }, + { + "start": 1126.59, + "duration": 0.0, + "text": "like this is not code. Like there's no" + }, + { + "start": 1126.6, + "duration": 0.0, + "text": "like this is not code. Like there's no there's<00:18:46.720> no<00:18:47.080> This<00:18:47.240> was<00:18:47.360> not<00:18:47.480> compiled<00:18:47.960> to" + }, + { + "start": 1127.99, + "duration": 0.0, + "text": "there's no This was not compiled to" + }, + { + "start": 1128.0, + "duration": 0.0, + "text": "there's no This was not compiled to produce<00:18:48.240> instructions.<00:18:48.800> Like<00:18:48.920> none<00:18:49.040> of<00:18:49.120> that" + }, + { + "start": 1129.23, + "duration": 0.0, + "text": "produce instructions. Like none of that" + }, + { + "start": 1129.24, + "duration": 0.0, + "text": "produce instructions. Like none of that would<00:18:49.360> make<00:18:49.480> sense.<00:18:49.760> But,<00:18:50.600> um<00:18:50.920> we<00:18:51.000> have<00:18:51.160> line" + }, + { + "start": 1131.35, + "duration": 0.0, + "text": "would make sense. But, um we have line" + }, + { + "start": 1131.36, + "duration": 0.0, + "text": "would make sense. But, um we have line numbers.<00:18:51.800> We<00:18:51.840> have<00:18:52.000> line<00:18:52.200> numbers.<00:18:52.640> I<00:18:52.680> can" + }, + { + "start": 1132.79, + "duration": 0.0, + "text": "numbers. We have line numbers. I can" + }, + { + "start": 1132.8, + "duration": 0.0, + "text": "numbers. We have line numbers. I can click<00:18:53.000> and<00:18:53.080> drag.<00:18:53.680> I<00:18:53.760> can<00:18:54.320> uh<00:18:54.560> I<00:18:54.640> can<00:18:54.760> copy<00:18:55.080> and" + }, + { + "start": 1135.19, + "duration": 0.0, + "text": "click and drag. I can uh I can copy and" + }, + { + "start": 1135.2, + "duration": 0.0, + "text": "click and drag. I can uh I can copy and paste<00:18:55.560> like<00:18:55.760> what<00:18:56.000> ways<00:18:56.280> might<00:18:56.440> it<00:18:56.520> be" + }, + { + "start": 1136.63, + "duration": 0.0, + "text": "paste like what ways might it be" + }, + { + "start": 1136.64, + "duration": 0.0, + "text": "paste like what ways might it be rendered.<00:18:57.000> I<00:18:57.080> can<00:18:57.200> put<00:18:57.400> you<00:18:57.480> know,<00:18:57.560> put<00:18:57.720> that" + }, + { + "start": 1137.91, + "duration": 0.0, + "text": "rendered. I can put you know, put that" + }, + { + "start": 1137.92, + "duration": 0.0, + "text": "rendered. I can put you know, put that there,<00:18:58.080> whatever." + }, + { + "start": 1139.67, + "duration": 0.0, + "text": "there, whatever." + }, + { + "start": 1139.68, + "duration": 0.0, + "text": "there, whatever. And<00:19:00.000> the<00:19:00.120> short<00:19:00.480> story<00:19:00.840> is<00:19:00.960> that<00:19:01.080> these" + }, + { + "start": 1141.23, + "duration": 0.0, + "text": "And the short story is that these" + }, + { + "start": 1141.24, + "duration": 0.0, + "text": "And the short story is that these actually<00:19:01.520> are<00:19:01.600> the<00:19:01.720> same<00:19:01.960> UI." + }, + { + "start": 1143.55, + "duration": 0.0, + "text": "actually are the same UI." + }, + { + "start": 1143.56, + "duration": 0.0, + "text": "actually are the same UI. This<00:19:03.880> is<00:19:04.000> a<00:19:04.040> text<00:19:04.440> tab<00:19:04.960> um<00:19:05.200> and<00:19:05.360> this<00:19:05.520> is" + }, + { + "start": 1145.59, + "duration": 0.0, + "text": "This is a text tab um and this is" + }, + { + "start": 1145.6, + "duration": 0.0, + "text": "This is a text tab um and this is evaluating<00:19:06.120> longer<00:19:06.440> text,<00:19:06.880> which<00:19:07.200> should<00:19:07.400> be" + }, + { + "start": 1147.63, + "duration": 0.0, + "text": "evaluating longer text, which should be" + }, + { + "start": 1147.64, + "duration": 0.0, + "text": "evaluating longer text, which should be pretty<00:19:07.880> self-explanatory.<00:19:09.200> Um<00:19:09.400> and<00:19:09.480> then" + }, + { + "start": 1149.67, + "duration": 0.0, + "text": "pretty self-explanatory. Um and then" + }, + { + "start": 1149.68, + "duration": 0.0, + "text": "pretty self-explanatory. Um and then this<00:19:09.920> one" + }, + { + "start": 1151.03, + "duration": 0.0, + "text": "this one" + }, + { + "start": 1151.04, + "duration": 0.0, + "text": "this one um" + }, + { + "start": 1152.19, + "duration": 0.0, + "text": "um" + }, + { + "start": 1152.2, + "duration": 0.0, + "text": "um this<00:19:12.480> one<00:19:12.640> is<00:19:12.760> actually<00:19:13.520> evaluating<00:19:14.400> this" + }, + { + "start": 1154.63, + "duration": 0.0, + "text": "this one is actually evaluating this" + }, + { + "start": 1154.64, + "duration": 0.0, + "text": "this one is actually evaluating this expression,<00:19:15.360> which<00:19:15.520> is<00:19:15.720> file<00:19:16.120> colon" + }, + { + "start": 1157.35, + "duration": 0.0, + "text": "expression, which is file colon" + }, + { + "start": 1157.36, + "duration": 0.0, + "text": "expression, which is file colon uh<00:19:17.480> another<00:19:17.720> one<00:19:17.800> of<00:19:17.880> those<00:19:18.000> disambiguators," + }, + { + "start": 1158.99, + "duration": 0.0, + "text": "uh another one of those disambiguators," + }, + { + "start": 1159.0, + "duration": 0.0, + "text": "uh another one of those disambiguators, uh<00:19:19.160> C<00:19:19.760> devel<00:19:20.240> rad<00:19:20.440> bugger<00:19:20.680> source<00:19:21.000> mule<00:19:21.320> mule" + }, + { + "start": 1161.51, + "duration": 0.0, + "text": "uh C devel rad bugger source mule mule" + }, + { + "start": 1161.52, + "duration": 0.0, + "text": "uh C devel rad bugger source mule mule main.cpp.data." + }, + { + "start": 1164.19, + "duration": 0.0, + "text": "main.cpp.data." + }, + { + "start": 1164.2, + "duration": 0.0, + "text": "main.cpp.data. Um<00:19:24.360> and<00:19:24.440> you<00:19:24.520> can<00:19:24.600> see<00:19:24.720> some<00:19:24.880> of<00:19:24.920> the<00:19:25.000> members" + }, + { + "start": 1165.39, + "duration": 0.0, + "text": "Um and you can see some of the members" + }, + { + "start": 1165.4, + "duration": 0.0, + "text": "Um and you can see some of the members here<00:19:25.600> that<00:19:25.720> you<00:19:25.800> can<00:19:25.880> evaluate<00:19:26.480> for<00:19:26.640> any<00:19:26.800> file." + }, + { + "start": 1167.79, + "duration": 0.0, + "text": "here that you can evaluate for any file." + }, + { + "start": 1167.8, + "duration": 0.0, + "text": "here that you can evaluate for any file. But<00:19:27.880> anyways,<00:19:28.120> so<00:19:28.200> that's<00:19:28.400> just<00:19:28.520> evaluating" + }, + { + "start": 1168.99, + "duration": 0.0, + "text": "But anyways, so that's just evaluating" + }, + { + "start": 1169.0, + "duration": 0.0, + "text": "But anyways, so that's just evaluating the<00:19:29.080> file.<00:19:30.120> Um" + }, + { + "start": 1171.03, + "duration": 0.0, + "text": "the file. Um" + }, + { + "start": 1171.04, + "duration": 0.0, + "text": "the file. Um so<00:19:31.160> that's<00:19:31.480> kind<00:19:31.720> of<00:19:32.040> that's<00:19:32.200> kind<00:19:32.320> of" + }, + { + "start": 1172.35, + "duration": 0.0, + "text": "so that's kind of that's kind of" + }, + { + "start": 1172.36, + "duration": 0.0, + "text": "so that's kind of that's kind of interesting.<00:19:33.360> Um" + }, + { + "start": 1174.03, + "duration": 0.0, + "text": "interesting. Um" + }, + { + "start": 1174.04, + "duration": 0.0, + "text": "interesting. Um and<00:19:34.160> the<00:19:34.240> long<00:19:34.480> story<00:19:34.720> short<00:19:34.880> is<00:19:34.960> that<00:19:35.120> all" + }, + { + "start": 1175.23, + "duration": 0.0, + "text": "and the long story short is that all" + }, + { + "start": 1175.24, + "duration": 0.0, + "text": "and the long story short is that all these<00:19:35.440> visualizers<00:19:36.040> can<00:19:36.160> apply<00:19:36.560> to<00:19:36.800> both" + }, + { + "start": 1178.11, + "duration": 0.0, + "text": "these visualizers can apply to both" + }, + { + "start": 1178.12, + "duration": 0.0, + "text": "these visualizers can apply to both files,<00:19:38.520> they<00:19:38.600> can<00:19:38.720> apply<00:19:39.000> to<00:19:39.160> memory<00:19:39.520> from" + }, + { + "start": 1179.67, + "duration": 0.0, + "text": "files, they can apply to memory from" + }, + { + "start": 1179.68, + "duration": 0.0, + "text": "files, they can apply to memory from processes,<00:19:40.560> doesn't<00:19:40.840> matter." + }, + { + "start": 1181.91, + "duration": 0.0, + "text": "processes, doesn't matter." + }, + { + "start": 1181.92, + "duration": 0.0, + "text": "processes, doesn't matter. You<00:19:41.960> can<00:19:42.360> wherever<00:19:42.760> the<00:19:42.840> debugger<00:19:43.160> can<00:19:43.280> find" + }, + { + "start": 1183.51, + "duration": 0.0, + "text": "You can wherever the debugger can find" + }, + { + "start": 1183.52, + "duration": 0.0, + "text": "You can wherever the debugger can find data,<00:19:43.760> you<00:19:43.840> can<00:19:43.960> plug<00:19:44.160> them<00:19:44.320> into<00:19:44.480> these" + }, + { + "start": 1184.63, + "duration": 0.0, + "text": "data, you can plug them into these" + }, + { + "start": 1184.64, + "duration": 0.0, + "text": "data, you can plug them into these visualizers.<00:19:45.320> So,<00:19:45.760> to<00:19:45.880> demonstrate<00:19:46.360> that," + }, + { + "start": 1187.43, + "duration": 0.0, + "text": "visualizers. So, to demonstrate that," + }, + { + "start": 1187.44, + "duration": 0.0, + "text": "visualizers. So, to demonstrate that, let<00:19:47.520> me<00:19:47.600> show<00:19:47.720> another<00:19:48.240> debugger<00:19:48.520> visualizer." + }, + { + "start": 1189.03, + "duration": 0.0, + "text": "let me show another debugger visualizer." + }, + { + "start": 1189.04, + "duration": 0.0, + "text": "let me show another debugger visualizer. This<00:19:49.200> is<00:19:49.760> This<00:19:49.920> is<00:19:50.040> another<00:19:50.320> common<00:19:50.640> one.<00:19:50.880> So," + }, + { + "start": 1190.99, + "duration": 0.0, + "text": "This is This is another common one. So," + }, + { + "start": 1191.0, + "duration": 0.0, + "text": "This is This is another common one. So, if<00:19:51.120> we<00:19:51.240> have<00:19:52.040> basics,<00:19:52.760> this<00:19:53.080> structure," + }, + { + "start": 1194.39, + "duration": 0.0, + "text": "if we have basics, this structure," + }, + { + "start": 1194.4, + "duration": 0.0, + "text": "if we have basics, this structure, um" + }, + { + "start": 1195.51, + "duration": 0.0, + "text": "um" + }, + { + "start": 1195.52, + "duration": 0.0, + "text": "um let<00:19:55.560> me<00:19:55.680> open<00:19:55.840> up<00:19:55.960> the<00:19:56.040> memory<00:19:56.440> view,<00:19:56.840> which" + }, + { + "start": 1197.03, + "duration": 0.0, + "text": "let me open up the memory view, which" + }, + { + "start": 1197.04, + "duration": 0.0, + "text": "let me open up the memory view, which this<00:19:57.280> you'll<00:19:57.440> find<00:19:57.800> something<00:19:58.080> like<00:19:58.280> this<00:19:58.440> in" + }, + { + "start": 1198.51, + "duration": 0.0, + "text": "this you'll find something like this in" + }, + { + "start": 1198.52, + "duration": 0.0, + "text": "this you'll find something like this in Visual<00:19:58.760> Studio<00:19:59.320> and<00:19:59.560> in<00:19:59.680> lots<00:19:59.880> of<00:19:59.960> other" + }, + { + "start": 1200.11, + "duration": 0.0, + "text": "Visual Studio and in lots of other" + }, + { + "start": 1200.12, + "duration": 0.0, + "text": "Visual Studio and in lots of other debuggers." + }, + { + "start": 1201.79, + "duration": 0.0, + "text": "debuggers." + }, + { + "start": 1201.8, + "duration": 0.0, + "text": "debuggers. And<00:20:01.920> let<00:20:02.000> me<00:20:02.080> just<00:20:02.280> go<00:20:02.520> to<00:20:02.680> the<00:20:02.800> basics" + }, + { + "start": 1203.91, + "duration": 0.0, + "text": "And let me just go to the basics" + }, + { + "start": 1203.92, + "duration": 0.0, + "text": "And let me just go to the basics variable<00:20:04.320> here." + }, + { + "start": 1206.39, + "duration": 0.0, + "text": "variable here." + }, + { + "start": 1206.4, + "duration": 0.0, + "text": "variable here. Um<00:20:06.920> so,<00:20:07.080> here<00:20:07.400> is<00:20:07.560> where<00:20:08.160> uh<00:20:08.400> I<00:20:08.480> can<00:20:08.640> see<00:20:08.920> like" + }, + { + "start": 1209.51, + "duration": 0.0, + "text": "Um so, here is where uh I can see like" + }, + { + "start": 1209.52, + "duration": 0.0, + "text": "Um so, here is where uh I can see like uh<00:20:09.960> all<00:20:10.200> of<00:20:10.280> the<00:20:10.360> memory,<00:20:10.760> like<00:20:10.960> the<00:20:11.080> actual" + }, + { + "start": 1211.35, + "duration": 0.0, + "text": "uh all of the memory, like the actual" + }, + { + "start": 1211.36, + "duration": 0.0, + "text": "uh all of the memory, like the actual bytes" + }, + { + "start": 1212.63, + "duration": 0.0, + "text": "bytes" + }, + { + "start": 1212.64, + "duration": 0.0, + "text": "bytes that<00:20:12.720> are<00:20:12.840> used<00:20:13.160> to<00:20:13.400> to<00:20:13.880> encode<00:20:14.400> the<00:20:14.480> value<00:20:14.960> of" + }, + { + "start": 1215.07, + "duration": 0.0, + "text": "that are used to to encode the value of" + }, + { + "start": 1215.08, + "duration": 0.0, + "text": "that are used to to encode the value of this<00:20:15.240> basics<00:20:15.760> structure.<00:20:16.200> So,<00:20:16.320> we<00:20:16.400> can<00:20:16.520> see" + }, + { + "start": 1216.63, + "duration": 0.0, + "text": "this basics structure. So, we can see" + }, + { + "start": 1216.64, + "duration": 0.0, + "text": "this basics structure. So, we can see like<00:20:16.880> for<00:20:17.000> example,<00:20:17.880> um" + }, + { + "start": 1218.71, + "duration": 0.0, + "text": "like for example, um" + }, + { + "start": 1218.72, + "duration": 0.0, + "text": "like for example, um and<00:20:18.800> actually,<00:20:19.120> if<00:20:19.280> I" + }, + { + "start": 1220.03, + "duration": 0.0, + "text": "and actually, if I" + }, + { + "start": 1220.04, + "duration": 0.0, + "text": "and actually, if I uh" + }, + { + "start": 1221.11, + "duration": 0.0, + "text": "uh" + }, + { + "start": 1221.12, + "duration": 0.0, + "text": "uh you<00:20:21.200> can<00:20:21.320> see<00:20:21.480> that<00:20:21.680> there's<00:20:22.080> some" + }, + { + "start": 1222.31, + "duration": 0.0, + "text": "you can see that there's some" + }, + { + "start": 1222.32, + "duration": 0.0, + "text": "you can see that there's some visualization<00:20:22.840> features<00:20:23.080> in<00:20:23.160> the<00:20:23.200> debugger" + }, + { + "start": 1223.55, + "duration": 0.0, + "text": "visualization features in the debugger" + }, + { + "start": 1223.56, + "duration": 0.0, + "text": "visualization features in the debugger that<00:20:23.800> that<00:20:23.960> help<00:20:24.160> you<00:20:24.280> correlate<00:20:24.840> this<00:20:25.000> stuff." + }, + { + "start": 1225.19, + "duration": 0.0, + "text": "that that help you correlate this stuff." + }, + { + "start": 1225.2, + "duration": 0.0, + "text": "that that help you correlate this stuff. So,<00:20:25.320> if<00:20:25.400> I<00:20:25.480> hover<00:20:25.720> basics.a,<00:20:26.560> for<00:20:26.720> example," + }, + { + "start": 1227.51, + "duration": 0.0, + "text": "So, if I hover basics.a, for example," + }, + { + "start": 1227.52, + "duration": 0.0, + "text": "So, if I hover basics.a, for example, you<00:20:27.600> can<00:20:27.760> see<00:20:27.880> that<00:20:28.080> this<00:20:28.240> byte<00:20:28.440> gets" + }, + { + "start": 1228.63, + "duration": 0.0, + "text": "you can see that this byte gets" + }, + { + "start": 1228.64, + "duration": 0.0, + "text": "you can see that this byte gets highlighted.<00:20:29.160> And<00:20:29.280> vice<00:20:29.520> versa,<00:20:29.840> if<00:20:29.960> I<00:20:30.040> hover" + }, + { + "start": 1230.31, + "duration": 0.0, + "text": "highlighted. And vice versa, if I hover" + }, + { + "start": 1230.32, + "duration": 0.0, + "text": "highlighted. And vice versa, if I hover the<00:20:30.400> byte<00:20:30.640> here,<00:20:30.840> I<00:20:30.880> can<00:20:31.040> see" + }, + { + "start": 1232.07, + "duration": 0.0, + "text": "the byte here, I can see" + }, + { + "start": 1232.08, + "duration": 0.0, + "text": "the byte here, I can see the<00:20:32.120> member<00:20:32.520> that<00:20:32.920> that<00:20:33.120> byte<00:20:33.320> belong<00:20:33.640> that" + }, + { + "start": 1234.19, + "duration": 0.0, + "text": "the member that that byte belong that" + }, + { + "start": 1234.2, + "duration": 0.0, + "text": "the member that that byte belong that that<00:20:34.680> byte<00:20:34.960> falls<00:20:35.240> into<00:20:35.480> basically<00:20:35.960> in" + }, + { + "start": 1236.07, + "duration": 0.0, + "text": "that byte falls into basically in" + }, + { + "start": 1236.08, + "duration": 0.0, + "text": "that byte falls into basically in the<00:20:36.160> watch<00:20:36.400> window.<00:20:36.640> So,<00:20:37.400> um" + }, + { + "start": 1238.19, + "duration": 0.0, + "text": "the watch window. So, um" + }, + { + "start": 1238.2, + "duration": 0.0, + "text": "the watch window. So, um instead<00:20:38.440> of<00:20:38.520> doing<00:20:39.400> just<00:20:39.560> because<00:20:39.880> uh<00:20:40.240> I've" + }, + { + "start": 1240.35, + "duration": 0.0, + "text": "instead of doing just because uh I've" + }, + { + "start": 1240.36, + "duration": 0.0, + "text": "instead of doing just because uh I've got<00:20:40.480> my<00:20:40.600> font<00:20:40.840> size<00:20:41.080> turned<00:20:41.280> up<00:20:41.360> so<00:20:41.480> high,<00:20:41.600> let" + }, + { + "start": 1241.71, + "duration": 0.0, + "text": "got my font size turned up so high, let" + }, + { + "start": 1241.72, + "duration": 0.0, + "text": "got my font size turned up so high, let me<00:20:41.840> also<00:20:42.040> just<00:20:42.240> do<00:20:42.440> um" + }, + { + "start": 1244.15, + "duration": 0.0, + "text": "me also just do um" + }, + { + "start": 1244.16, + "duration": 0.0, + "text": "me also just do um let<00:20:44.240> me<00:20:44.320> just<00:20:44.720> do<00:20:44.960> two<00:20:45.160> panel,<00:20:45.640> one<00:20:45.800> with<00:20:45.920> the" + }, + { + "start": 1246.03, + "duration": 0.0, + "text": "let me just do two panel, one with the" + }, + { + "start": 1246.04, + "duration": 0.0, + "text": "let me just do two panel, one with the watch<00:20:46.280> window," + }, + { + "start": 1248.39, + "duration": 0.0, + "text": "watch window," + }, + { + "start": 1248.4, + "duration": 0.0, + "text": "watch window, and<00:20:48.560> one<00:20:48.720> with<00:20:49.080> the<00:20:49.480> memory<00:20:49.760> view." + }, + { + "start": 1251.27, + "duration": 0.0, + "text": "and one with the memory view." + }, + { + "start": 1251.28, + "duration": 0.0, + "text": "and one with the memory view. Um" + }, + { + "start": 1252.35, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1252.36, + "duration": 0.0, + "text": "Um so,<00:20:52.560> like<00:20:52.720> here's<00:20:52.920> a<00:20:52.960> memory<00:20:53.280> view.<00:20:53.520> I<00:20:53.600> can<00:20:53.920> I" + }, + { + "start": 1253.99, + "duration": 0.0, + "text": "so, like here's a memory view. I can I" + }, + { + "start": 1254.0, + "duration": 0.0, + "text": "so, like here's a memory view. I can I can,<00:20:54.600> you<00:20:54.680> know,<00:20:54.840> hover<00:20:55.080> bytes.<00:20:55.640> Um<00:20:55.840> I<00:20:55.920> can" + }, + { + "start": 1256.03, + "duration": 0.0, + "text": "can, you know, hover bytes. Um I can" + }, + { + "start": 1256.04, + "duration": 0.0, + "text": "can, you know, hover bytes. Um I can even<00:20:56.280> mutate<00:20:56.680> bytes,<00:20:56.960> like<00:20:57.080> if<00:20:57.200> I<00:20:57.280> wanted<00:20:57.480> to" + }, + { + "start": 1257.55, + "duration": 0.0, + "text": "even mutate bytes, like if I wanted to" + }, + { + "start": 1257.56, + "duration": 0.0, + "text": "even mutate bytes, like if I wanted to do" + }, + { + "start": 1258.55, + "duration": 0.0, + "text": "do" + }, + { + "start": 1258.56, + "duration": 0.0, + "text": "do uh<00:20:58.760> I<00:20:58.880> wanted<00:20:59.120> to<00:20:59.240> change<00:20:59.520> this<00:20:59.800> to<00:21:00.040> to<00:21:00.200> a<00:21:00.240> zero" + }, + { + "start": 1260.63, + "duration": 0.0, + "text": "uh I wanted to change this to to a zero" + }, + { + "start": 1260.64, + "duration": 0.0, + "text": "uh I wanted to change this to to a zero byte,<00:21:01.240> um" + }, + { + "start": 1262.03, + "duration": 0.0, + "text": "byte, um" + }, + { + "start": 1262.04, + "duration": 0.0, + "text": "byte, um I<00:21:02.120> can<00:21:02.240> just<00:21:02.400> type<00:21:02.600> that<00:21:02.800> in<00:21:02.920> there.<00:21:03.760> Uh<00:21:04.160> we<00:21:04.240> can" + }, + { + "start": 1264.35, + "duration": 0.0, + "text": "I can just type that in there. Uh we can" + }, + { + "start": 1264.36, + "duration": 0.0, + "text": "I can just type that in there. Uh we can go<00:21:04.440> back<00:21:04.600> to<00:21:04.680> -1<00:21:05.120> if<00:21:05.240> I<00:21:05.280> do<00:21:05.400> an<00:21:05.480> FF.<00:21:06.400> Uh<00:21:06.520> here's" + }, + { + "start": 1266.99, + "duration": 0.0, + "text": "go back to -1 if I do an FF. Uh here's" + }, + { + "start": 1267.0, + "duration": 0.0, + "text": "go back to -1 if I do an FF. Uh here's 01,<00:21:07.480> I<00:21:07.520> can<00:21:07.640> do<00:21:07.760> like<00:21:07.920> 23,<00:21:08.960> which<00:21:09.480> uh<00:21:09.560> hex<00:21:09.840> 23" + }, + { + "start": 1270.19, + "duration": 0.0, + "text": "01, I can do like 23, which uh hex 23" + }, + { + "start": 1270.2, + "duration": 0.0, + "text": "01, I can do like 23, which uh hex 23 turns<00:21:10.440> into<00:21:10.600> 35,<00:21:11.320> which<00:21:11.600> happens<00:21:11.880> to<00:21:11.920> be<00:21:12.040> that" + }, + { + "start": 1272.23, + "duration": 0.0, + "text": "turns into 35, which happens to be that" + }, + { + "start": 1272.24, + "duration": 0.0, + "text": "turns into 35, which happens to be that character." + }, + { + "start": 1273.43, + "duration": 0.0, + "text": "character." + }, + { + "start": 1273.44, + "duration": 0.0, + "text": "character. Um" + }, + { + "start": 1274.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1274.88, + "duration": 0.0, + "text": "Um So<00:21:15.000> yeah,<00:21:15.080> anyways,<00:21:15.400> here's<00:21:15.600> a<00:21:15.640> memory<00:21:15.920> view," + }, + { + "start": 1276.11, + "duration": 0.0, + "text": "So yeah, anyways, here's a memory view," + }, + { + "start": 1276.12, + "duration": 0.0, + "text": "So yeah, anyways, here's a memory view, right?" + }, + { + "start": 1277.59, + "duration": 0.0, + "text": "right?" + }, + { + "start": 1277.6, + "duration": 0.0, + "text": "right? And<00:21:17.760> I<00:21:17.800> can<00:21:17.920> dig<00:21:18.080> into<00:21:18.240> more<00:21:18.400> of<00:21:18.480> these" + }, + { + "start": 1278.63, + "duration": 0.0, + "text": "And I can dig into more of these" + }, + { + "start": 1278.64, + "duration": 0.0, + "text": "And I can dig into more of these features<00:21:19.600> if<00:21:20.200> you<00:21:20.280> know,<00:21:20.880> as<00:21:21.080> we<00:21:21.200> want<00:21:21.440> to." + }, + { + "start": 1282.19, + "duration": 0.0, + "text": "features if you know, as we want to." + }, + { + "start": 1282.2, + "duration": 0.0, + "text": "features if you know, as we want to. But<00:21:22.560> it's<00:21:22.720> like<00:21:22.960> I<00:21:23.040> just<00:21:23.240> told<00:21:23.480> you<00:21:23.560> that<00:21:23.760> I<00:21:23.800> can" + }, + { + "start": 1283.91, + "duration": 0.0, + "text": "But it's like I just told you that I can" + }, + { + "start": 1283.92, + "duration": 0.0, + "text": "But it's like I just told you that I can apply<00:21:24.240> these<00:21:24.440> visualizers<00:21:24.960> to<00:21:25.120> any" + }, + { + "start": 1285.35, + "duration": 0.0, + "text": "apply these visualizers to any" + }, + { + "start": 1285.36, + "duration": 0.0, + "text": "apply these visualizers to any expression,<00:21:26.120> right?<00:21:26.434> [clears throat]<00:21:26.800> In" + }, + { + "start": 1286.95, + "duration": 0.0, + "text": "expression, right? [clears throat] In" + }, + { + "start": 1286.96, + "duration": 0.0, + "text": "expression, right? [clears throat] In fact,<00:21:27.280> if<00:21:27.440> I<00:21:27.520> were<00:21:27.600> to<00:21:27.720> do<00:21:27.880> something<00:21:28.200> like" + }, + { + "start": 1288.59, + "duration": 0.0, + "text": "fact, if I were to do something like" + }, + { + "start": 1288.6, + "duration": 0.0, + "text": "fact, if I were to do something like memory<00:21:29.640> basics" + }, + { + "start": 1292.07, + "duration": 0.0, + "text": "memory basics" + }, + { + "start": 1292.08, + "duration": 0.0, + "text": "memory basics Um<00:21:32.720> sorry,<00:21:32.920> there's<00:21:33.080> tons<00:21:33.320> of<00:21:33.400> parameters" + }, + { + "start": 1293.75, + "duration": 0.0, + "text": "Um sorry, there's tons of parameters" + }, + { + "start": 1293.76, + "duration": 0.0, + "text": "Um sorry, there's tons of parameters here.<00:21:33.840> I<00:21:33.880> actually<00:21:34.160> fixed<00:21:34.480> this,<00:21:34.720> but<00:21:35.200> but<00:21:35.520> the" + }, + { + "start": 1295.99, + "duration": 0.0, + "text": "here. I actually fixed this, but but the" + }, + { + "start": 1296.0, + "duration": 0.0, + "text": "here. I actually fixed this, but but the stable<00:21:36.360> version<00:21:36.600> of<00:21:36.640> the<00:21:36.720> debugger<00:21:36.960> that<00:21:37.040> I'm" + }, + { + "start": 1297.15, + "duration": 0.0, + "text": "stable version of the debugger that I'm" + }, + { + "start": 1297.16, + "duration": 0.0, + "text": "stable version of the debugger that I'm using<00:21:37.560> doesn't<00:21:37.840> have<00:21:38.040> that<00:21:38.320> fixed,<00:21:38.680> but<00:21:38.880> this" + }, + { + "start": 1299.03, + "duration": 0.0, + "text": "using doesn't have that fixed, but this" + }, + { + "start": 1299.04, + "duration": 0.0, + "text": "using doesn't have that fixed, but this is<00:21:39.280> I<00:21:39.360> mean,<00:21:39.800> technically<00:21:40.200> these<00:21:40.400> are<00:21:40.520> all" + }, + { + "start": 1300.67, + "duration": 0.0, + "text": "is I mean, technically these are all" + }, + { + "start": 1300.68, + "duration": 0.0, + "text": "is I mean, technically these are all options,<00:21:41.080> but<00:21:41.200> it's<00:21:41.360> just<00:21:41.640> a<00:21:41.680> little<00:21:41.880> bit" + }, + { + "start": 1301.99, + "duration": 0.0, + "text": "options, but it's just a little bit" + }, + { + "start": 1302.0, + "duration": 0.0, + "text": "options, but it's just a little bit absurd<00:21:42.400> to<00:21:42.720> specify<00:21:43.080> this<00:21:43.240> in<00:21:43.320> the" + }, + { + "start": 1303.39, + "duration": 0.0, + "text": "absurd to specify this in the" + }, + { + "start": 1303.4, + "duration": 0.0, + "text": "absurd to specify this in the expression.<00:21:43.800> But<00:21:43.960> anyways," + }, + { + "start": 1304.91, + "duration": 0.0, + "text": "expression. But anyways," + }, + { + "start": 1304.92, + "duration": 0.0, + "text": "expression. But anyways, if<00:21:45.040> I<00:21:45.080> do<00:21:45.240> memory<00:21:45.520> of<00:21:45.640> basics,<00:21:46.080> you'll" + }, + { + "start": 1306.23, + "duration": 0.0, + "text": "if I do memory of basics, you'll" + }, + { + "start": 1306.24, + "duration": 0.0, + "text": "if I do memory of basics, you'll actually<00:21:46.520> see<00:21:47.480> that<00:21:47.800> um<00:21:48.120> I<00:21:48.200> get<00:21:48.320> a<00:21:48.360> memory<00:21:48.680> view" + }, + { + "start": 1308.91, + "duration": 0.0, + "text": "actually see that um I get a memory view" + }, + { + "start": 1308.92, + "duration": 0.0, + "text": "actually see that um I get a memory view and<00:21:49.040> it's<00:21:49.200> just<00:21:49.480> evaluating<00:21:50.000> the<00:21:50.120> address" + }, + { + "start": 1310.43, + "duration": 0.0, + "text": "and it's just evaluating the address" + }, + { + "start": 1310.44, + "duration": 0.0, + "text": "and it's just evaluating the address range<00:21:51.120> supplied<00:21:51.640> by<00:21:52.600> the<00:21:52.720> expression<00:21:53.400> basics." + }, + { + "start": 1314.19, + "duration": 0.0, + "text": "range supplied by the expression basics." + }, + { + "start": 1314.2, + "duration": 0.0, + "text": "range supplied by the expression basics. And<00:21:54.320> so<00:21:54.400> I<00:21:54.480> just<00:21:54.760> get<00:21:54.920> a<00:21:54.960> little<00:21:55.240> memory<00:21:55.480> view" + }, + { + "start": 1315.63, + "duration": 0.0, + "text": "And so I just get a little memory view" + }, + { + "start": 1315.64, + "duration": 0.0, + "text": "And so I just get a little memory view for<00:21:55.760> this.<00:21:56.400> In<00:21:56.480> the<00:21:56.560> case<00:21:56.720> when<00:21:56.840> you<00:21:56.880> don't" + }, + { + "start": 1317.03, + "duration": 0.0, + "text": "for this. In the case when you don't" + }, + { + "start": 1317.04, + "duration": 0.0, + "text": "for this. In the case when you don't have<00:21:57.200> any<00:21:57.360> expression,<00:21:57.880> it'll<00:21:58.120> prefer<00:21:58.680> to" + }, + { + "start": 1319.11, + "duration": 0.0, + "text": "have any expression, it'll prefer to" + }, + { + "start": 1319.12, + "duration": 0.0, + "text": "have any expression, it'll prefer to visualize<00:21:59.560> your<00:21:59.680> current<00:22:00.040> thread's<00:22:00.640> address" + }, + { + "start": 1320.99, + "duration": 0.0, + "text": "visualize your current thread's address" + }, + { + "start": 1321.0, + "duration": 0.0, + "text": "visualize your current thread's address space<00:22:01.360> or<00:22:01.480> your<00:22:01.600> current<00:22:01.920> thread's<00:22:02.280> process's" + }, + { + "start": 1322.79, + "duration": 0.0, + "text": "space or your current thread's process's" + }, + { + "start": 1322.8, + "duration": 0.0, + "text": "space or your current thread's process's address<00:22:03.120> space.<00:22:03.720> And<00:22:03.800> then<00:22:03.920> you<00:22:04.000> can<00:22:04.120> navigate" + }, + { + "start": 1324.55, + "duration": 0.0, + "text": "address space. And then you can navigate" + }, + { + "start": 1324.56, + "duration": 0.0, + "text": "address space. And then you can navigate to<00:22:04.800> basics<00:22:05.360> inside<00:22:05.760> of<00:22:05.840> that<00:22:06.000> address<00:22:06.240> space," + }, + { + "start": 1326.39, + "duration": 0.0, + "text": "to basics inside of that address space," + }, + { + "start": 1326.4, + "duration": 0.0, + "text": "to basics inside of that address space, but<00:22:06.520> you<00:22:06.600> can<00:22:06.680> also<00:22:06.840> just<00:22:07.000> get<00:22:07.160> one<00:22:07.440> that's" + }, + { + "start": 1327.75, + "duration": 0.0, + "text": "but you can also just get one that's" + }, + { + "start": 1327.76, + "duration": 0.0, + "text": "but you can also just get one that's narrowed<00:22:08.120> down<00:22:08.400> to<00:22:08.520> just<00:22:08.720> basics<00:22:09.480> um" + }, + { + "start": 1330.55, + "duration": 0.0, + "text": "narrowed down to just basics um" + }, + { + "start": 1330.56, + "duration": 0.0, + "text": "narrowed down to just basics um uh<00:22:11.000> like<00:22:11.200> this." + }, + { + "start": 1332.35, + "duration": 0.0, + "text": "uh like this." + }, + { + "start": 1332.36, + "duration": 0.0, + "text": "uh like this. So<00:22:12.560> anyways,<00:22:12.880> you<00:22:12.960> can<00:22:13.120> create<00:22:13.280> a<00:22:13.320> memory<00:22:13.600> view" + }, + { + "start": 1333.87, + "duration": 0.0, + "text": "So anyways, you can create a memory view" + }, + { + "start": 1333.88, + "duration": 0.0, + "text": "So anyways, you can create a memory view and<00:22:14.000> you<00:22:14.120> can<00:22:14.640> um<00:22:15.000> it<00:22:15.080> can<00:22:15.200> evaluate<00:22:15.640> any<00:22:16.240> any" + }, + { + "start": 1336.39, + "duration": 0.0, + "text": "and you can um it can evaluate any any" + }, + { + "start": 1336.4, + "duration": 0.0, + "text": "and you can um it can evaluate any any expression,<00:22:16.880> right?<00:22:17.520> So<00:22:17.760> what<00:22:17.960> we'll<00:22:18.080> do<00:22:18.760> is" + }, + { + "start": 1339.31, + "duration": 0.0, + "text": "expression, right? So what we'll do is" + }, + { + "start": 1339.32, + "duration": 0.0, + "text": "expression, right? So what we'll do is um<00:22:19.360> I'm<00:22:19.480> just<00:22:19.640> going<00:22:19.760> to<00:22:19.800> take<00:22:20.080> this" + }, + { + "start": 1340.43, + "duration": 0.0, + "text": "um I'm just going to take this" + }, + { + "start": 1340.44, + "duration": 0.0, + "text": "um I'm just going to take this expression<00:22:20.920> that<00:22:21.160> encodes<00:22:21.560> the<00:22:21.680> file" + }, + { + "start": 1343.75, + "duration": 0.0, + "text": "expression that encodes the file" + }, + { + "start": 1343.76, + "duration": 0.0, + "text": "expression that encodes the file uh<00:22:23.920> the<00:22:24.040> file<00:22:24.280> that's<00:22:24.480> viewing" + }, + { + "start": 1344.79, + "duration": 0.0, + "text": "uh the file that's viewing" + }, + { + "start": 1344.8, + "duration": 0.0, + "text": "uh the file that's viewing mule_main.cpp." + }, + { + "start": 1346.39, + "duration": 0.0, + "text": "mule_main.cpp." + }, + { + "start": 1346.4, + "duration": 0.0, + "text": "mule_main.cpp. And<00:22:26.520> I'm<00:22:26.600> just<00:22:26.760> going<00:22:26.880> to<00:22:26.920> create<00:22:27.080> a<00:22:27.120> new" + }, + { + "start": 1347.23, + "duration": 0.0, + "text": "And I'm just going to create a new" + }, + { + "start": 1347.24, + "duration": 0.0, + "text": "And I'm just going to create a new memory<00:22:27.520> tab<00:22:27.800> or<00:22:27.880> I<00:22:27.920> guess<00:22:28.080> I<00:22:28.400> I<00:22:28.440> can<00:22:28.560> just<00:22:28.720> use" + }, + { + "start": 1348.83, + "duration": 0.0, + "text": "memory tab or I guess I I can just use" + }, + { + "start": 1348.84, + "duration": 0.0, + "text": "memory tab or I guess I I can just use this<00:22:29.040> one." + }, + { + "start": 1350.03, + "duration": 0.0, + "text": "this one." + }, + { + "start": 1350.04, + "duration": 0.0, + "text": "this one. And<00:22:30.120> let<00:22:30.200> me<00:22:30.280> just<00:22:30.440> put<00:22:30.560> this<00:22:30.760> in" + }, + { + "start": 1351.67, + "duration": 0.0, + "text": "And let me just put this in" + }, + { + "start": 1351.68, + "duration": 0.0, + "text": "And let me just put this in um" + }, + { + "start": 1353.23, + "duration": 0.0, + "text": "um" + }, + { + "start": 1353.24, + "duration": 0.0, + "text": "um as<00:22:33.520> the<00:22:33.920> expression<00:22:34.320> that<00:22:34.440> this<00:22:34.600> memory<00:22:34.920> view" + }, + { + "start": 1355.07, + "duration": 0.0, + "text": "as the expression that this memory view" + }, + { + "start": 1355.08, + "duration": 0.0, + "text": "as the expression that this memory view is<00:22:35.200> evaluating." + }, + { + "start": 1356.59, + "duration": 0.0, + "text": "is evaluating." + }, + { + "start": 1356.6, + "duration": 0.0, + "text": "is evaluating. And<00:22:36.720> you<00:22:36.800> can<00:22:36.920> see<00:22:37.320> like<00:22:37.640> here's<00:22:37.960> the<00:22:38.040> byte" + }, + { + "start": 1358.35, + "duration": 0.0, + "text": "And you can see like here's the byte" + }, + { + "start": 1358.36, + "duration": 0.0, + "text": "And you can see like here's the byte representation<00:22:39.080> of<00:22:39.240> that<00:22:39.440> text<00:22:39.680> file.<00:22:40.120> So<00:22:40.760> um" + }, + { + "start": 1361.55, + "duration": 0.0, + "text": "representation of that text file. So um" + }, + { + "start": 1361.56, + "duration": 0.0, + "text": "representation of that text file. So um like<00:22:41.720> if<00:22:41.840> we<00:22:41.920> go<00:22:42.160> up<00:22:42.280> to<00:22:42.400> the<00:22:42.480> top<00:22:42.680> of<00:22:42.720> this<00:22:42.800> text" + }, + { + "start": 1362.95, + "duration": 0.0, + "text": "like if we go up to the top of this text" + }, + { + "start": 1362.96, + "duration": 0.0, + "text": "like if we go up to the top of this text file,<00:22:43.160> you<00:22:43.240> can<00:22:43.360> see" + }, + { + "start": 1364.43, + "duration": 0.0, + "text": "file, you can see" + }, + { + "start": 1364.44, + "duration": 0.0, + "text": "file, you can see //copyrights" + }, + { + "start": 1366.23, + "duration": 0.0, + "text": "//copyrights" + }, + { + "start": 1366.24, + "duration": 0.0, + "text": "//copyrights uh<00:22:46.680> (c)<00:22:47.680> Epic<00:22:48.000> Games<00:22:48.280> Tools<00:22:48.640> licensed<00:22:48.960> under" + }, + { + "start": 1369.11, + "duration": 0.0, + "text": "uh (c) Epic Games Tools licensed under" + }, + { + "start": 1369.12, + "duration": 0.0, + "text": "uh (c) Epic Games Tools licensed under the<00:22:49.240> MIT<00:22:49.600> license.<00:22:50.480> If<00:22:50.720> I<00:22:50.840> go<00:22:51.160> to<00:22:51.760> my<00:22:52.520> uh<00:22:52.600> memory" + }, + { + "start": 1372.83, + "duration": 0.0, + "text": "the MIT license. If I go to my uh memory" + }, + { + "start": 1372.84, + "duration": 0.0, + "text": "the MIT license. If I go to my uh memory view<00:22:53.040> here,<00:22:53.760> you<00:22:53.840> can<00:22:53.960> see<00:22:54.360> it's<00:22:54.520> just<00:22:54.720> like," + }, + { + "start": 1374.87, + "duration": 0.0, + "text": "view here, you can see it's just like," + }, + { + "start": 1374.88, + "duration": 0.0, + "text": "view here, you can see it's just like, \"Hey,<00:22:55.360> //copyright<00:22:56.760> (c)<00:22:57.400> Epic<00:22:57.760> Games<00:22:58.080> Tools.\"" + }, + { + "start": 1378.31, + "duration": 0.0, + "text": "\"Hey, //copyright (c) Epic Games Tools.\"" + }, + { + "start": 1378.32, + "duration": 0.0, + "text": "\"Hey, //copyright (c) Epic Games Tools.\" Like<00:22:58.560> it's<00:22:58.680> just<00:22:58.880> viewing<00:22:59.240> the<00:22:59.360> same<00:22:59.640> data<00:22:59.960> as" + }, + { + "start": 1380.19, + "duration": 0.0, + "text": "Like it's just viewing the same data as" + }, + { + "start": 1380.2, + "duration": 0.0, + "text": "Like it's just viewing the same data as text,<00:23:00.600> right?" + }, + { + "start": 1381.91, + "duration": 0.0, + "text": "text, right?" + }, + { + "start": 1381.92, + "duration": 0.0, + "text": "text, right? Or<00:23:02.080> sorry,<00:23:02.360> as<00:23:02.520> memory.<00:23:02.920> As<00:23:03.080> just<00:23:03.280> raw<00:23:03.920> bytes" + }, + { + "start": 1384.51, + "duration": 0.0, + "text": "Or sorry, as memory. As just raw bytes" + }, + { + "start": 1384.52, + "duration": 0.0, + "text": "Or sorry, as memory. As just raw bytes in<00:23:04.640> a<00:23:04.680> byte<00:23:04.920> grid." + }, + { + "start": 1385.99, + "duration": 0.0, + "text": "in a byte grid." + }, + { + "start": 1386.0, + "duration": 0.0, + "text": "in a byte grid. Um" + }, + { + "start": 1387.11, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1387.12, + "duration": 0.0, + "text": "Um So,<00:23:08.080> um" + }, + { + "start": 1389.59, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1389.6, + "duration": 0.0, + "text": "So, um that's<00:23:09.880> like<00:23:10.040> something<00:23:10.360> you<00:23:10.440> can<00:23:10.560> do.<00:23:11.120> It's" + }, + { + "start": 1391.31, + "duration": 0.0, + "text": "that's like something you can do. It's" + }, + { + "start": 1391.32, + "duration": 0.0, + "text": "that's like something you can do. It's kind<00:23:11.440> of<00:23:11.520> cool." + }, + { + "start": 1392.47, + "duration": 0.0, + "text": "kind of cool." + }, + { + "start": 1392.48, + "duration": 0.0, + "text": "kind of cool. Uh<00:23:13.160> I<00:23:13.280> guess<00:23:13.800> I<00:23:13.840> don't<00:23:14.080> know<00:23:14.360> what<00:23:14.520> to<00:23:14.600> show" + }, + { + "start": 1394.75, + "duration": 0.0, + "text": "Uh I guess I don't know what to show" + }, + { + "start": 1394.76, + "duration": 0.0, + "text": "Uh I guess I don't know what to show next.<00:23:15.000> I<00:23:15.040> could<00:23:15.200> I<00:23:15.280> guess<00:23:15.480> I<00:23:15.560> could<00:23:15.720> show<00:23:15.880> some" + }, + { + "start": 1396.03, + "duration": 0.0, + "text": "next. I could I guess I could show some" + }, + { + "start": 1396.04, + "duration": 0.0, + "text": "next. I could I guess I could show some of<00:23:16.080> the<00:23:16.160> more<00:23:16.320> sophisticated<00:23:16.920> visualizers<00:23:17.520> as" + }, + { + "start": 1397.67, + "duration": 0.0, + "text": "of the more sophisticated visualizers as" + }, + { + "start": 1397.68, + "duration": 0.0, + "text": "of the more sophisticated visualizers as well." + }, + { + "start": 1398.87, + "duration": 0.0, + "text": "well." + }, + { + "start": 1398.88, + "duration": 0.0, + "text": "well. Like<00:23:19.760> uh" + }, + { + "start": 1400.71, + "duration": 0.0, + "text": "Like uh" + }, + { + "start": 1400.72, + "duration": 0.0, + "text": "Like uh um" + }, + { + "start": 1402.67, + "duration": 0.0, + "text": "um" + }, + { + "start": 1402.68, + "duration": 0.0, + "text": "um I<00:23:22.720> guess<00:23:22.920> we'll<00:23:23.040> go<00:23:23.200> down<00:23:23.520> to" + }, + { + "start": 1407.92, + "duration": 0.0, + "text": "fancy<00:23:28.200> vizzy<00:23:28.480> val<00:23:28.680> tests." + }, + { + "start": 1411.84, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1414.4, + "duration": 0.0, + "text": "let's<00:23:34.720> do" + }, + { + "start": 1417.07, + "duration": 0.0, + "text": "let's do" + }, + { + "start": 1417.08, + "duration": 0.0, + "text": "let's do Okay,<00:23:37.280> so<00:23:37.360> these<00:23:37.520> are<00:23:37.600> kind<00:23:37.760> of<00:23:37.840> cool." + }, + { + "start": 1420.07, + "duration": 0.0, + "text": "Okay, so these are kind of cool." + }, + { + "start": 1420.08, + "duration": 0.0, + "text": "Okay, so these are kind of cool. If<00:23:40.160> we<00:23:40.280> have<00:23:41.120> like<00:23:41.240> a<00:23:41.320> float<00:23:41.680> here<00:23:42.160> that's<00:23:42.840> um" + }, + { + "start": 1424.19, + "duration": 0.0, + "text": "If we have like a float here that's um" + }, + { + "start": 1424.2, + "duration": 0.0, + "text": "If we have like a float here that's um you<00:23:44.240> know,<00:23:44.360> 500<00:23:45.080> and<00:23:45.200> let's<00:23:45.400> say<00:23:45.560> like<00:23:45.920> I<00:23:46.000> just" + }, + { + "start": 1426.23, + "duration": 0.0, + "text": "you know, 500 and let's say like I just" + }, + { + "start": 1426.24, + "duration": 0.0, + "text": "you know, 500 and let's say like I just happen<00:23:46.440> to<00:23:46.520> know<00:23:46.840> in<00:23:47.040> C,<00:23:47.360> we<00:23:47.480> don't<00:23:47.640> have<00:23:47.760> this" + }, + { + "start": 1427.91, + "duration": 0.0, + "text": "happen to know in C, we don't have this" + }, + { + "start": 1427.92, + "duration": 0.0, + "text": "happen to know in C, we don't have this in<00:23:48.040> type<00:23:48.280> info,<00:23:48.560> but<00:23:49.040> but<00:23:49.120> basically<00:23:49.440> like<00:23:50.200> um" + }, + { + "start": 1430.71, + "duration": 0.0, + "text": "in type info, but but basically like um" + }, + { + "start": 1430.72, + "duration": 0.0, + "text": "in type info, but but basically like um I've<00:23:50.840> got<00:23:50.960> a<00:23:51.000> float<00:23:51.320> here,<00:23:51.560> it's<00:23:51.920> set<00:23:52.120> to<00:23:52.200> 500," + }, + { + "start": 1432.99, + "duration": 0.0, + "text": "I've got a float here, it's set to 500," + }, + { + "start": 1433.0, + "duration": 0.0, + "text": "I've got a float here, it's set to 500, um<00:23:53.400> but<00:23:53.520> I<00:23:53.600> want<00:23:53.720> to<00:23:53.800> consider<00:23:54.080> this<00:23:54.200> thing<00:23:54.400> as" + }, + { + "start": 1434.51, + "duration": 0.0, + "text": "um but I want to consider this thing as" + }, + { + "start": 1434.52, + "duration": 0.0, + "text": "um but I want to consider this thing as between<00:23:54.920> the<00:23:55.040> range<00:23:55.360> of<00:23:55.640> like<00:23:55.880> I<00:23:56.080> I<00:23:56.120> want<00:23:56.240> to" + }, + { + "start": 1436.31, + "duration": 0.0, + "text": "between the range of like I I want to" + }, + { + "start": 1436.32, + "duration": 0.0, + "text": "between the range of like I I want to consider<00:23:56.560> this<00:23:56.680> thing<00:23:56.840> as<00:23:57.120> within<00:23:57.440> the<00:23:57.520> range" + }, + { + "start": 1437.79, + "duration": 0.0, + "text": "consider this thing as within the range" + }, + { + "start": 1437.8, + "duration": 0.0, + "text": "consider this thing as within the range of<00:23:57.920> 0<00:23:58.240> to<00:23:58.360> 1,000,<00:23:58.840> right?" + }, + { + "start": 1440.07, + "duration": 0.0, + "text": "of 0 to 1,000, right?" + }, + { + "start": 1440.08, + "duration": 0.0, + "text": "of 0 to 1,000, right? Um" + }, + { + "start": 1441.23, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1441.24, + "duration": 0.0, + "text": "Um So,<00:24:01.360> you<00:24:01.440> can<00:24:01.560> actually<00:24:01.880> specify<00:24:02.280> this<00:24:02.440> to<00:24:02.520> the" + }, + { + "start": 1442.59, + "duration": 0.0, + "text": "So, you can actually specify this to the" + }, + { + "start": 1442.6, + "duration": 0.0, + "text": "So, you can actually specify this to the debugger<00:24:02.920> and<00:24:03.000> you<00:24:03.080> can<00:24:03.200> say<00:24:03.360> range<00:24:03.720> one<00:24:04.560> for" + }, + { + "start": 1444.75, + "duration": 0.0, + "text": "debugger and you can say range one for" + }, + { + "start": 1444.76, + "duration": 0.0, + "text": "debugger and you can say range one for one<00:24:05.400> for<00:24:05.600> one<00:24:06.040> one<00:24:06.200> dimension." + }, + { + "start": 1447.35, + "duration": 0.0, + "text": "one for one one dimension." + }, + { + "start": 1447.36, + "duration": 0.0, + "text": "one for one one dimension. And<00:24:07.400> I<00:24:07.440> can<00:24:07.560> say<00:24:07.720> slide<00:24:08.120> one<00:24:08.440> and<00:24:08.560> I<00:24:08.640> want<00:24:08.840> this" + }, + { + "start": 1448.95, + "duration": 0.0, + "text": "And I can say slide one and I want this" + }, + { + "start": 1448.96, + "duration": 0.0, + "text": "And I can say slide one and I want this to<00:24:09.040> be<00:24:09.120> zero<00:24:09.960> between<00:24:10.186> [clears throat]<00:24:10.320> zero" + }, + { + "start": 1450.51, + "duration": 0.0, + "text": "to be zero between [clears throat] zero" + }, + { + "start": 1450.52, + "duration": 0.0, + "text": "to be zero between [clears throat] zero and<00:24:10.600> 1,000,<00:24:11.040> so<00:24:11.120> it<00:24:11.200> should<00:24:11.320> be<00:24:11.400> right<00:24:11.600> in<00:24:11.640> the" + }, + { + "start": 1451.71, + "duration": 0.0, + "text": "and 1,000, so it should be right in the" + }, + { + "start": 1451.72, + "duration": 0.0, + "text": "and 1,000, so it should be right in the middle." + }, + { + "start": 1452.47, + "duration": 0.0, + "text": "middle." + }, + { + "start": 1452.48, + "duration": 0.0, + "text": "middle. >> Nice." + }, + { + "start": 1453.27, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 1453.28, + "duration": 0.0, + "text": ">> Nice. >> And<00:24:13.360> sure<00:24:13.840> And<00:24:13.960> sure<00:24:14.120> enough" + }, + { + "start": 1455.23, + "duration": 0.0, + "text": ">> And sure And sure enough" + }, + { + "start": 1455.24, + "duration": 0.0, + "text": ">> And sure And sure enough you<00:24:15.280> get<00:24:15.440> this<00:24:16.000> and<00:24:16.480> if<00:24:16.680> I<00:24:16.920> change<00:24:17.240> the<00:24:17.320> value" + }, + { + "start": 1458.35, + "duration": 0.0, + "text": "you get this and if I change the value" + }, + { + "start": 1458.36, + "duration": 0.0, + "text": "you get this and if I change the value and<00:24:18.480> if<00:24:18.560> I<00:24:18.640> just<00:24:18.800> evaluate<00:24:19.200> the<00:24:19.280> float<00:24:19.600> itself," + }, + { + "start": 1459.95, + "duration": 0.0, + "text": "and if I just evaluate the float itself," + }, + { + "start": 1459.96, + "duration": 0.0, + "text": "and if I just evaluate the float itself, you'll<00:24:20.120> see<00:24:20.320> that<00:24:20.560> I'm<00:24:20.680> actually<00:24:20.960> changing" + }, + { + "start": 1461.43, + "duration": 0.0, + "text": "you'll see that I'm actually changing" + }, + { + "start": 1461.44, + "duration": 0.0, + "text": "you'll see that I'm actually changing the<00:24:21.520> memory<00:24:21.880> like<00:24:22.120> of<00:24:22.240> the<00:24:22.320> program<00:24:22.760> as<00:24:22.920> I<00:24:22.960> do" + }, + { + "start": 1463.11, + "duration": 0.0, + "text": "the memory like of the program as I do" + }, + { + "start": 1463.12, + "duration": 0.0, + "text": "the memory like of the program as I do this." + }, + { + "start": 1464.07, + "duration": 0.0, + "text": "this." + }, + { + "start": 1464.08, + "duration": 0.0, + "text": "this. Um" + }, + { + "start": 1467.48, + "duration": 0.0, + "text": "So," + }, + { + "start": 1468.47, + "duration": 0.0, + "text": "So," + }, + { + "start": 1468.48, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1469.43, + "duration": 0.0, + "text": "um" + }, + { + "start": 1469.44, + "duration": 0.0, + "text": "um and<00:24:29.520> then<00:24:29.680> it's<00:24:29.800> like<00:24:29.960> you<00:24:30.240> you<00:24:30.320> might<00:24:30.520> look<00:24:30.640> at" + }, + { + "start": 1470.71, + "duration": 0.0, + "text": "and then it's like you you might look at" + }, + { + "start": 1470.72, + "duration": 0.0, + "text": "and then it's like you you might look at this<00:24:30.840> and<00:24:30.920> you're<00:24:31.000> like,<00:24:31.120> \"Hey,<00:24:31.280> this<00:24:31.520> UI" + }, + { + "start": 1471.95, + "duration": 0.0, + "text": "this and you're like, \"Hey, this UI" + }, + { + "start": 1471.96, + "duration": 0.0, + "text": "this and you're like, \"Hey, this UI actually<00:24:32.280> looks<00:24:32.480> a<00:24:32.560> lot<00:24:32.920> like<00:24:33.120> if<00:24:33.280> I<00:24:33.360> hit<00:24:33.600> F1" + }, + { + "start": 1473.99, + "duration": 0.0, + "text": "actually looks a lot like if I hit F1" + }, + { + "start": 1474.0, + "duration": 0.0, + "text": "actually looks a lot like if I hit F1 and<00:24:34.120> type<00:24:34.360> font<00:24:34.720> size.\"<00:24:35.760> It's<00:24:35.920> so<00:24:36.080> strange" + }, + { + "start": 1476.55, + "duration": 0.0, + "text": "and type font size.\" It's so strange" + }, + { + "start": 1476.56, + "duration": 0.0, + "text": "and type font size.\" It's so strange because<00:24:36.800> I<00:24:36.880> actually<00:24:37.160> see<00:24:37.520> that<00:24:37.720> there's<00:24:37.920> all" + }, + { + "start": 1477.99, + "duration": 0.0, + "text": "because I actually see that there's all" + }, + { + "start": 1478.0, + "duration": 0.0, + "text": "because I actually see that there's all these<00:24:38.160> options<00:24:38.520> for<00:24:38.640> like<00:24:38.840> these<00:24:39.000> different" + }, + { + "start": 1479.23, + "duration": 0.0, + "text": "these options for like these different" + }, + { + "start": 1479.24, + "duration": 0.0, + "text": "these options for like these different kinds<00:24:39.480> of<00:24:39.560> like<00:24:39.720> sizes<00:24:40.280> and<00:24:40.400> font<00:24:40.640> sizes<00:24:41.000> and" + }, + { + "start": 1481.11, + "duration": 0.0, + "text": "kinds of like sizes and font sizes and" + }, + { + "start": 1481.12, + "duration": 0.0, + "text": "kinds of like sizes and font sizes and stuff<00:24:41.240> like<00:24:41.360> that.<00:24:41.800> It's<00:24:41.880> like,<00:24:42.320> \"That's" + }, + { + "start": 1482.47, + "duration": 0.0, + "text": "stuff like that. It's like, \"That's" + }, + { + "start": 1482.48, + "duration": 0.0, + "text": "stuff like that. It's like, \"That's pretty<00:24:42.640> interesting,<00:24:42.960> right?\"<00:24:43.080> It's<00:24:43.200> like," + }, + { + "start": 1483.35, + "duration": 0.0, + "text": "pretty interesting, right?\" It's like," + }, + { + "start": 1483.36, + "duration": 0.0, + "text": "pretty interesting, right?\" It's like, \"Yeah,<00:24:43.560> that's<00:24:43.960> evaluating<00:24:44.800> the<00:24:44.920> setting<00:24:45.440> of" + }, + { + "start": 1485.75, + "duration": 0.0, + "text": "\"Yeah, that's evaluating the setting of" + }, + { + "start": 1485.76, + "duration": 0.0, + "text": "\"Yeah, that's evaluating the setting of the<00:24:45.840> debugger.\"<00:24:46.320> Like<00:24:46.520> that's<00:24:47.000> So,<00:24:47.160> this<00:24:47.360> is" + }, + { + "start": 1487.51, + "duration": 0.0, + "text": "the debugger.\" Like that's So, this is" + }, + { + "start": 1487.52, + "duration": 0.0, + "text": "the debugger.\" Like that's So, this is literally<00:24:47.880> the<00:24:48.000> same<00:24:48.240> UI<00:24:48.840> as<00:24:49.080> this.<00:24:49.320> It's<00:24:49.440> not" + }, + { + "start": 1489.63, + "duration": 0.0, + "text": "literally the same UI as this. It's not" + }, + { + "start": 1489.64, + "duration": 0.0, + "text": "literally the same UI as this. It's not just<00:24:49.840> that<00:24:49.920> I'm<00:24:50.040> calling<00:24:50.320> the<00:24:50.400> same<00:24:50.600> helper" + }, + { + "start": 1490.87, + "duration": 0.0, + "text": "just that I'm calling the same helper" + }, + { + "start": 1490.88, + "duration": 0.0, + "text": "just that I'm calling the same helper function<00:24:51.240> in<00:24:51.320> two<00:24:51.480> places.<00:24:52.320> It's<00:24:52.600> literally" + }, + { + "start": 1492.99, + "duration": 0.0, + "text": "function in two places. It's literally" + }, + { + "start": 1493.0, + "duration": 0.0, + "text": "function in two places. It's literally the<00:24:53.120> same<00:24:53.360> path<00:24:54.080> uh<00:24:54.160> being<00:24:54.360> used<00:24:54.520> for<00:24:54.600> both." + }, + { + "start": 1494.99, + "duration": 0.0, + "text": "the same path uh being used for both." + }, + { + "start": 1495.0, + "duration": 0.0, + "text": "the same path uh being used for both. So,<00:24:55.680> that's<00:24:55.840> like<00:24:56.000> one<00:24:56.400> kind<00:24:56.600> of<00:24:57.040> fun<00:24:57.320> thing." + }, + { + "start": 1497.75, + "duration": 0.0, + "text": "So, that's like one kind of fun thing." + }, + { + "start": 1497.76, + "duration": 0.0, + "text": "So, that's like one kind of fun thing. It's<00:24:57.960> not<00:24:58.120> super<00:24:58.400> important<00:24:58.800> to<00:24:58.880> know<00:24:59.040> that," + }, + { + "start": 1499.27, + "duration": 0.0, + "text": "It's not super important to know that," + }, + { + "start": 1499.28, + "duration": 0.0, + "text": "It's not super important to know that, but<00:24:59.400> it's<00:24:59.560> just<00:24:59.720> like<00:24:59.880> a<00:24:59.960> cool<00:25:00.280> architectural" + }, + { + "start": 1500.87, + "duration": 0.0, + "text": "but it's just like a cool architectural" + }, + { + "start": 1500.88, + "duration": 0.0, + "text": "but it's just like a cool architectural aspect<00:25:01.280> of<00:25:01.640> the<00:25:01.720> debugger<00:25:02.120> is<00:25:02.280> that<00:25:02.720> I<00:25:02.840> found" + }, + { + "start": 1503.11, + "duration": 0.0, + "text": "aspect of the debugger is that I found" + }, + { + "start": 1503.12, + "duration": 0.0, + "text": "aspect of the debugger is that I found that<00:25:03.240> the<00:25:03.320> best<00:25:03.640> way<00:25:03.800> to<00:25:04.040> collapse<00:25:04.680> all<00:25:04.920> of" + }, + { + "start": 1504.99, + "duration": 0.0, + "text": "that the best way to collapse all of" + }, + { + "start": 1505.0, + "duration": 0.0, + "text": "that the best way to collapse all of this" + }, + { + "start": 1505.99, + "duration": 0.0, + "text": "this" + }, + { + "start": 1506.0, + "duration": 0.0, + "text": "this all<00:25:06.320> of<00:25:06.400> these<00:25:06.640> UIs<00:25:07.040> for<00:25:07.120> like<00:25:07.480> editing<00:25:07.800> the" + }, + { + "start": 1507.87, + "duration": 0.0, + "text": "all of these UIs for like editing the" + }, + { + "start": 1507.88, + "duration": 0.0, + "text": "all of these UIs for like editing the debugger<00:25:08.200> settings<00:25:08.760> and,<00:25:09.000> you<00:25:09.040> know,<00:25:09.200> tab" + }, + { + "start": 1509.55, + "duration": 0.0, + "text": "debugger settings and, you know, tab" + }, + { + "start": 1509.56, + "duration": 0.0, + "text": "debugger settings and, you know, tab settings<00:25:10.080> and<00:25:10.320> watch<00:25:10.600> window<00:25:10.800> stuff.<00:25:11.040> It's" + }, + { + "start": 1511.15, + "duration": 0.0, + "text": "settings and watch window stuff. It's" + }, + { + "start": 1511.16, + "duration": 0.0, + "text": "settings and watch window stuff. It's like" + }, + { + "start": 1512.27, + "duration": 0.0, + "text": "like" + }, + { + "start": 1512.28, + "duration": 0.0, + "text": "like I<00:25:12.840> I<00:25:12.920> found<00:25:13.080> that<00:25:13.200> the<00:25:13.240> best<00:25:13.480> way<00:25:13.640> to<00:25:13.760> actually" + }, + { + "start": 1513.99, + "duration": 0.0, + "text": "I I found that the best way to actually" + }, + { + "start": 1514.0, + "duration": 0.0, + "text": "I I found that the best way to actually collapse<00:25:14.360> all<00:25:14.480> of<00:25:14.560> it<00:25:14.640> down<00:25:14.880> was<00:25:15.120> to<00:25:15.240> make<00:25:15.520> the" + }, + { + "start": 1515.59, + "duration": 0.0, + "text": "collapse all of it down was to make the" + }, + { + "start": 1515.6, + "duration": 0.0, + "text": "collapse all of it down was to make the watch<00:25:15.800> window<00:25:16.040> super<00:25:16.280> super<00:25:16.520> powerful.<00:25:16.960> So," + }, + { + "start": 1518.19, + "duration": 0.0, + "text": "watch window super super powerful. So," + }, + { + "start": 1518.2, + "duration": 0.0, + "text": "watch window super super powerful. So, that's<00:25:18.560> what<00:25:18.720> ended<00:25:18.960> up<00:25:19.080> happening.<00:25:19.360> So," + }, + { + "start": 1519.47, + "duration": 0.0, + "text": "that's what ended up happening. So," + }, + { + "start": 1519.48, + "duration": 0.0, + "text": "that's what ended up happening. So, anyways,<00:25:20.160> we<00:25:20.240> have<00:25:20.360> sliders<00:25:20.840> here.<00:25:21.120> You<00:25:21.240> can" + }, + { + "start": 1521.31, + "duration": 0.0, + "text": "anyways, we have sliders here. You can" + }, + { + "start": 1521.32, + "duration": 0.0, + "text": "anyways, we have sliders here. You can do<00:25:21.440> this<00:25:21.640> with<00:25:21.920> integers<00:25:22.360> as<00:25:22.520> well.<00:25:22.760> So,<00:25:22.880> I" + }, + { + "start": 1522.91, + "duration": 0.0, + "text": "do this with integers as well. So, I" + }, + { + "start": 1522.92, + "duration": 0.0, + "text": "do this with integers as well. So, I could<00:25:23.040> do<00:25:23.160> range<00:25:23.480> one<00:25:24.160> uh<00:25:24.320> slide<00:25:24.680> three<00:25:25.000> is<00:25:25.040> an" + }, + { + "start": 1525.15, + "duration": 0.0, + "text": "could do range one uh slide three is an" + }, + { + "start": 1525.16, + "duration": 0.0, + "text": "could do range one uh slide three is an integer<00:25:25.560> and<00:25:25.680> I<00:25:25.720> can<00:25:25.840> say<00:25:26.000> this<00:25:26.200> is<00:25:26.320> also" + }, + { + "start": 1526.51, + "duration": 0.0, + "text": "integer and I can say this is also" + }, + { + "start": 1526.52, + "duration": 0.0, + "text": "integer and I can say this is also between<00:25:27.200> uh<00:25:27.280> this<00:25:27.480> is<00:25:27.560> between<00:25:27.880> zero<00:25:28.080> and<00:25:28.160> 100." + }, + { + "start": 1529.19, + "duration": 0.0, + "text": "between uh this is between zero and 100." + }, + { + "start": 1529.2, + "duration": 0.0, + "text": "between uh this is between zero and 100. Same<00:25:29.400> exact<00:25:29.680> thing<00:25:29.880> here,<00:25:30.360> right?<00:25:31.120> Um" + }, + { + "start": 1536.24, + "duration": 0.0, + "text": "So," + }, + { + "start": 1538.19, + "duration": 0.0, + "text": "So," + }, + { + "start": 1538.2, + "duration": 0.0, + "text": "So, uh<00:25:38.840> we<00:25:38.920> have<00:25:39.040> colors<00:25:40.120> um" + }, + { + "start": 1541.59, + "duration": 0.0, + "text": "uh we have colors um" + }, + { + "start": 1541.6, + "duration": 0.0, + "text": "uh we have colors um as<00:25:41.840> well.<00:25:42.120> So,<00:25:42.280> if<00:25:42.400> I've<00:25:42.560> got<00:25:42.920> um<00:25:43.440> example" + }, + { + "start": 1543.79, + "duration": 0.0, + "text": "as well. So, if I've got um example" + }, + { + "start": 1543.8, + "duration": 0.0, + "text": "as well. So, if I've got um example color<00:25:44.040> 4F32" + }, + { + "start": 1545.63, + "duration": 0.0, + "text": "color 4F32" + }, + { + "start": 1545.64, + "duration": 0.0, + "text": "color 4F32 um<00:25:46.400> which<00:25:46.640> I<00:25:46.720> think<00:25:47.080> I<00:25:47.120> think<00:25:47.320> some<00:25:47.520> of<00:25:47.600> these" + }, + { + "start": 1547.83, + "duration": 0.0, + "text": "um which I think I think some of these" + }, + { + "start": 1547.84, + "duration": 0.0, + "text": "um which I think I think some of these may<00:25:48.080> be<00:25:48.520> kind<00:25:48.720> of<00:25:48.840> work<00:25:49.040> in<00:25:49.120> progress.<00:25:49.600> So,<00:25:49.680> I" + }, + { + "start": 1549.71, + "duration": 0.0, + "text": "may be kind of work in progress. So, I" + }, + { + "start": 1549.72, + "duration": 0.0, + "text": "may be kind of work in progress. So, I don't<00:25:49.920> know<00:25:50.320> there<00:25:50.440> might<00:25:50.640> be<00:25:50.960> one<00:25:51.160> of<00:25:51.240> these" + }, + { + "start": 1551.47, + "duration": 0.0, + "text": "don't know there might be one of these" + }, + { + "start": 1551.48, + "duration": 0.0, + "text": "don't know there might be one of these that<00:25:51.640> doesn't<00:25:51.920> quite<00:25:52.200> work<00:25:52.400> yet,<00:25:52.560> but<00:25:52.720> let's" + }, + { + "start": 1552.87, + "duration": 0.0, + "text": "that doesn't quite work yet, but let's" + }, + { + "start": 1552.88, + "duration": 0.0, + "text": "that doesn't quite work yet, but let's try<00:25:53.840> let's<00:25:54.000> try<00:25:54.160> color<00:25:55.240> um<00:25:55.640> example<00:25:56.240> color" + }, + { + "start": 1556.59, + "duration": 0.0, + "text": "try let's try color um example color" + }, + { + "start": 1556.6, + "duration": 0.0, + "text": "try let's try color um example color U32.<00:25:57.920> Is<00:25:58.000> this<00:25:58.120> going<00:25:58.240> to<00:25:58.320> work?<00:25:58.760> Okay.<00:25:59.200> I" + }, + { + "start": 1559.27, + "duration": 0.0, + "text": "U32. Is this going to work? Okay. I" + }, + { + "start": 1559.28, + "duration": 0.0, + "text": "U32. Is this going to work? Okay. I don't<00:25:59.440> know<00:25:59.520> if<00:25:59.640> editing<00:26:00.040> will<00:26:00.160> work.<00:26:00.680> Okay," + }, + { + "start": 1560.83, + "duration": 0.0, + "text": "don't know if editing will work. Okay," + }, + { + "start": 1560.84, + "duration": 0.0, + "text": "don't know if editing will work. Okay, yeah,<00:26:01.040> editing<00:26:01.360> works.<00:26:01.560> So,<00:26:01.720> U32<00:26:02.280> seems<00:26:02.520> to<00:26:02.600> be" + }, + { + "start": 1562.71, + "duration": 0.0, + "text": "yeah, editing works. So, U32 seems to be" + }, + { + "start": 1562.72, + "duration": 0.0, + "text": "yeah, editing works. So, U32 seems to be the<00:26:02.960> one<00:26:03.200> that<00:26:03.360> I<00:26:03.840> I<00:26:03.920> think<00:26:04.120> the<00:26:04.240> four<00:26:04.480> float" + }, + { + "start": 1564.75, + "duration": 0.0, + "text": "the one that I I think the four float" + }, + { + "start": 1564.76, + "duration": 0.0, + "text": "the one that I I think the four float one<00:26:04.960> is<00:26:05.120> maybe" + }, + { + "start": 1566.43, + "duration": 0.0, + "text": "one is maybe" + }, + { + "start": 1566.44, + "duration": 0.0, + "text": "one is maybe there's<00:26:06.560> still<00:26:06.720> some<00:26:06.840> stuff<00:26:07.000> that's<00:26:07.160> in" + }, + { + "start": 1567.23, + "duration": 0.0, + "text": "there's still some stuff that's in" + }, + { + "start": 1567.24, + "duration": 0.0, + "text": "there's still some stuff that's in progress<00:26:07.680> here<00:26:07.840> with<00:26:08.160> with<00:26:08.400> some<00:26:08.520> of<00:26:08.600> these" + }, + { + "start": 1568.71, + "duration": 0.0, + "text": "progress here with with some of these" + }, + { + "start": 1568.72, + "duration": 0.0, + "text": "progress here with with some of these fancy<00:26:09.120> things.<00:26:09.400> Like<00:26:09.520> I<00:26:09.560> think<00:26:09.800> this<00:26:09.960> might" + }, + { + "start": 1570.47, + "duration": 0.0, + "text": "fancy things. Like I think this might" + }, + { + "start": 1570.48, + "duration": 0.0, + "text": "fancy things. Like I think this might work<00:26:10.920> for<00:26:11.080> the<00:26:11.200> visualization,<00:26:11.960> but<00:26:12.120> I<00:26:12.160> don't" + }, + { + "start": 1572.27, + "duration": 0.0, + "text": "work for the visualization, but I don't" + }, + { + "start": 1572.28, + "duration": 0.0, + "text": "work for the visualization, but I don't know<00:26:12.400> if<00:26:12.520> I<00:26:12.560> can<00:26:12.720> edit<00:26:13.000> it.<00:26:13.560> Yeah,<00:26:13.760> so<00:26:13.880> there's" + }, + { + "start": 1574.07, + "duration": 0.0, + "text": "know if I can edit it. Yeah, so there's" + }, + { + "start": 1574.08, + "duration": 0.0, + "text": "know if I can edit it. Yeah, so there's a<00:26:14.200> there's<00:26:14.320> a<00:26:14.360> couple<00:26:14.600> of<00:26:14.640> missing<00:26:14.920> features" + }, + { + "start": 1575.19, + "duration": 0.0, + "text": "a there's a couple of missing features" + }, + { + "start": 1575.2, + "duration": 0.0, + "text": "a there's a couple of missing features here,<00:26:15.360> but<00:26:16.000> in<00:26:16.080> the<00:26:16.120> case<00:26:16.320> of<00:26:16.400> the<00:26:16.480> U32" + }, + { + "start": 1578.07, + "duration": 0.0, + "text": "here, but in the case of the U32" + }, + { + "start": 1578.08, + "duration": 0.0, + "text": "here, but in the case of the U32 um<00:26:18.520> you<00:26:18.640> know,<00:26:18.760> we<00:26:18.880> can<00:26:19.040> edit<00:26:19.960> just<00:26:20.320> this<00:26:20.480> thing" + }, + { + "start": 1580.67, + "duration": 0.0, + "text": "um you know, we can edit just this thing" + }, + { + "start": 1580.68, + "duration": 0.0, + "text": "um you know, we can edit just this thing here.<00:26:21.120> We<00:26:21.200> can<00:26:21.320> change<00:26:21.800> whatever<00:26:22.000> the<00:26:22.080> color" + }, + { + "start": 1582.31, + "duration": 0.0, + "text": "here. We can change whatever the color" + }, + { + "start": 1582.32, + "duration": 0.0, + "text": "here. We can change whatever the color value<00:26:22.640> is.<00:26:23.480> Um<00:26:23.800> and<00:26:23.920> you<00:26:23.960> can<00:26:24.080> see<00:26:24.240> like<00:26:24.680> this" + }, + { + "start": 1584.91, + "duration": 0.0, + "text": "value is. Um and you can see like this" + }, + { + "start": 1584.92, + "duration": 0.0, + "text": "value is. Um and you can see like this U32<00:26:25.520> value<00:26:25.920> it's<00:26:26.080> being<00:26:26.640> uh<00:26:26.920> kind<00:26:27.080> of<00:26:27.600> peaked" + }, + { + "start": 1588.03, + "duration": 0.0, + "text": "U32 value it's being uh kind of peaked" + }, + { + "start": 1588.04, + "duration": 0.0, + "text": "U32 value it's being uh kind of peaked right<00:26:28.240> here<00:26:28.400> in<00:26:28.480> the<00:26:28.520> source<00:26:28.800> code.<00:26:29.720> Um<00:26:30.320> and" + }, + { + "start": 1590.63, + "duration": 0.0, + "text": "right here in the source code. Um and" + }, + { + "start": 1590.64, + "duration": 0.0, + "text": "right here in the source code. Um and you<00:26:30.720> can<00:26:30.840> see<00:26:30.960> it's<00:26:31.080> actually<00:26:31.360> changing<00:26:31.800> like" + }, + { + "start": 1591.99, + "duration": 0.0, + "text": "you can see it's actually changing like" + }, + { + "start": 1592.0, + "duration": 0.0, + "text": "you can see it's actually changing like as<00:26:32.200> I<00:26:32.280> just<00:26:32.440> drag<00:26:32.720> this<00:26:32.880> color<00:26:33.440> around.<00:26:34.160> Um" + }, + { + "start": 1595.39, + "duration": 0.0, + "text": "as I just drag this color around. Um" + }, + { + "start": 1595.4, + "duration": 0.0, + "text": "as I just drag this color around. Um So,<00:26:35.560> yeah." + }, + { + "start": 1597.31, + "duration": 0.0, + "text": "So, yeah." + }, + { + "start": 1597.32, + "duration": 0.0, + "text": "So, yeah. Um" + }, + { + "start": 1598.208, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1598.218, + "duration": 0.0, + "text": "Um >> [sighs]" + }, + { + "start": 1598.95, + "duration": 0.0, + "text": ">> [sighs]" + }, + { + "start": 1598.96, + "duration": 0.0, + "text": ">> [sighs] >> uh<00:26:39.160> multi-line<00:26:39.720> text<00:26:40.080> I<00:26:40.120> already<00:26:40.360> showed" + }, + { + "start": 1600.67, + "duration": 0.0, + "text": ">> uh multi-line text I already showed" + }, + { + "start": 1600.68, + "duration": 0.0, + "text": ">> uh multi-line text I already showed this,<00:26:40.960> but<00:26:41.240> we<00:26:41.320> can<00:26:41.440> do<00:26:41.800> text<00:26:42.320> of<00:26:43.120> uh" + }, + { + "start": 1603.67, + "duration": 0.0, + "text": "this, but we can do text of uh" + }, + { + "start": 1603.68, + "duration": 0.0, + "text": "this, but we can do text of uh long<00:26:44.080> string." + }, + { + "start": 1605.75, + "duration": 0.0, + "text": "long string." + }, + { + "start": 1605.76, + "duration": 0.0, + "text": "long string. We<00:26:45.880> can<00:26:46.000> do<00:26:46.360> text<00:26:47.360> um" + }, + { + "start": 1608.43, + "duration": 0.0, + "text": "We can do text um" + }, + { + "start": 1608.44, + "duration": 0.0, + "text": "We can do text um text<00:26:48.880> of<00:26:49.040> code<00:26:49.360> string.<00:26:50.000> The<00:26:50.120> language<00:26:50.720> and<00:26:51.040> in" + }, + { + "start": 1611.11, + "duration": 0.0, + "text": "text of code string. The language and in" + }, + { + "start": 1611.12, + "duration": 0.0, + "text": "text of code string. The language and in this<00:26:51.280> case<00:26:51.520> it's<00:26:51.680> like<00:26:51.840> we<00:26:51.920> have<00:26:52.080> some<00:26:52.280> C" + }, + { + "start": 1612.51, + "duration": 0.0, + "text": "this case it's like we have some C" + }, + { + "start": 1612.52, + "duration": 0.0, + "text": "this case it's like we have some C source<00:26:52.800> code<00:26:53.000> so<00:26:53.080> maybe<00:26:53.280> I<00:26:53.320> just<00:26:53.480> want<00:26:53.600> to<00:26:53.680> say" + }, + { + "start": 1613.83, + "duration": 0.0, + "text": "source code so maybe I just want to say" + }, + { + "start": 1613.84, + "duration": 0.0, + "text": "source code so maybe I just want to say C<00:26:54.760> Uh" + }, + { + "start": 1615.75, + "duration": 0.0, + "text": "C Uh" + }, + { + "start": 1615.76, + "duration": 0.0, + "text": "C Uh or<00:26:55.920> sorry" + }, + { + "start": 1616.79, + "duration": 0.0, + "text": "or sorry" + }, + { + "start": 1616.8, + "duration": 0.0, + "text": "or sorry that<00:26:57.400> not<00:26:57.640> shown<00:26:57.800> in<00:26:57.840> the<00:26:57.920> docs<00:26:58.160> but<00:26:58.280> that" + }, + { + "start": 1618.43, + "duration": 0.0, + "text": "that not shown in the docs but that" + }, + { + "start": 1618.44, + "duration": 0.0, + "text": "that not shown in the docs but that needs<00:26:58.640> to<00:26:58.720> be<00:26:58.760> a<00:26:58.800> named<00:26:59.080> parameter.<00:26:59.400> So" + }, + { + "start": 1619.51, + "duration": 0.0, + "text": "needs to be a named parameter. So" + }, + { + "start": 1619.52, + "duration": 0.0, + "text": "needs to be a named parameter. So anyways,<00:27:00.280> code<00:27:00.520> strain<00:27:00.840> lang<00:27:01.120> C" + }, + { + "start": 1622.27, + "duration": 0.0, + "text": "anyways, code strain lang C" + }, + { + "start": 1622.28, + "duration": 0.0, + "text": "anyways, code strain lang C I'm<00:27:02.440> still<00:27:02.600> working<00:27:02.840> on<00:27:02.960> the<00:27:03.080> in<00:27:03.480> application" + }, + { + "start": 1623.91, + "duration": 0.0, + "text": "I'm still working on the in application" + }, + { + "start": 1623.92, + "duration": 0.0, + "text": "I'm still working on the in application docs<00:27:04.240> so<00:27:04.360> it's<00:27:04.480> a<00:27:04.520> little<00:27:04.720> bit<00:27:05.080> it's<00:27:05.200> a<00:27:05.240> little" + }, + { + "start": 1625.35, + "duration": 0.0, + "text": "docs so it's a little bit it's a little" + }, + { + "start": 1625.36, + "duration": 0.0, + "text": "docs so it's a little bit it's a little bit<00:27:05.480> like<00:27:05.640> of<00:27:05.720> a<00:27:05.760> secret<00:27:06.240> thing<00:27:06.480> but" + }, + { + "start": 1628.15, + "duration": 0.0, + "text": "bit like of a secret thing but" + }, + { + "start": 1628.16, + "duration": 0.0, + "text": "bit like of a secret thing but lang<00:27:08.440> equals<00:27:08.720> C<00:27:08.880> and<00:27:08.960> then<00:27:09.080> you<00:27:09.160> can<00:27:09.240> see<00:27:09.640> oh<00:27:09.880> I" + }, + { + "start": 1629.95, + "duration": 0.0, + "text": "lang equals C and then you can see oh I" + }, + { + "start": 1629.96, + "duration": 0.0, + "text": "lang equals C and then you can see oh I actually<00:27:10.240> see<00:27:10.400> my<00:27:10.600> C<00:27:10.800> source<00:27:11.040> code<00:27:11.240> here" + }, + { + "start": 1632.67, + "duration": 0.0, + "text": "actually see my C source code here" + }, + { + "start": 1632.68, + "duration": 0.0, + "text": "actually see my C source code here syntax<00:27:13.080> highlighted<00:27:13.560> and<00:27:13.640> everything<00:27:14.040> and" + }, + { + "start": 1634.35, + "duration": 0.0, + "text": "syntax highlighted and everything and" + }, + { + "start": 1634.36, + "duration": 0.0, + "text": "syntax highlighted and everything and show<00:27:14.560> showing<00:27:14.800> me<00:27:14.880> the<00:27:15.000> scopes<00:27:15.320> and<00:27:15.400> stuff" + }, + { + "start": 1635.59, + "duration": 0.0, + "text": "show showing me the scopes and stuff" + }, + { + "start": 1635.6, + "duration": 0.0, + "text": "show showing me the scopes and stuff like<00:27:15.720> that.<00:27:16.560> Um" + }, + { + "start": 1638.47, + "duration": 0.0, + "text": "like that. Um" + }, + { + "start": 1638.48, + "duration": 0.0, + "text": "like that. Um So<00:27:18.600> let's<00:27:18.760> see<00:27:18.880> what<00:27:19.000> else.<00:27:19.640> This<00:27:19.880> is<00:27:19.960> assembly" + }, + { + "start": 1640.51, + "duration": 0.0, + "text": "So let's see what else. This is assembly" + }, + { + "start": 1640.52, + "duration": 0.0, + "text": "So let's see what else. This is assembly of<00:27:20.640> course.<00:27:21.000> So<00:27:21.440> if<00:27:21.640> I<00:27:21.720> open<00:27:21.960> up<00:27:22.040> like<00:27:22.200> a" + }, + { + "start": 1642.23, + "duration": 0.0, + "text": "of course. So if I open up like a" + }, + { + "start": 1642.24, + "duration": 0.0, + "text": "of course. So if I open up like a disassembly<00:27:22.840> view" + }, + { + "start": 1643.83, + "duration": 0.0, + "text": "disassembly view" + }, + { + "start": 1643.84, + "duration": 0.0, + "text": "disassembly view um" + }, + { + "start": 1645.19, + "duration": 0.0, + "text": "um" + }, + { + "start": 1645.2, + "duration": 0.0, + "text": "um and<00:27:25.920> uh" + }, + { + "start": 1648.0, + "duration": 0.0, + "text": "I<00:27:28.200> want<00:27:28.360> to<00:27:28.400> see<00:27:28.520> like<00:27:28.720> where<00:27:28.880> my<00:27:29.000> thread<00:27:29.280> is" + }, + { + "start": 1649.71, + "duration": 0.0, + "text": "I want to see like where my thread is" + }, + { + "start": 1649.72, + "duration": 0.0, + "text": "I want to see like where my thread is with<00:27:29.920> respect<00:27:30.200> to<00:27:30.280> the<00:27:30.440> actual<00:27:30.880> machine<00:27:31.160> code" + }, + { + "start": 1651.31, + "duration": 0.0, + "text": "with respect to the actual machine code" + }, + { + "start": 1651.32, + "duration": 0.0, + "text": "with respect to the actual machine code instructions" + }, + { + "start": 1652.75, + "duration": 0.0, + "text": "instructions" + }, + { + "start": 1652.76, + "duration": 0.0, + "text": "instructions um<00:27:33.360> I<00:27:33.440> can<00:27:33.560> open<00:27:33.720> up<00:27:33.800> a<00:27:33.880> disassembly<00:27:34.320> view<00:27:34.520> that" + }, + { + "start": 1654.83, + "duration": 0.0, + "text": "um I can open up a disassembly view that" + }, + { + "start": 1654.84, + "duration": 0.0, + "text": "um I can open up a disassembly view that takes<00:27:35.040> the<00:27:35.160> actual<00:27:35.480> code<00:27:35.840> that's<00:27:36.080> in<00:27:36.200> the" + }, + { + "start": 1656.27, + "duration": 0.0, + "text": "takes the actual code that's in the" + }, + { + "start": 1656.28, + "duration": 0.0, + "text": "takes the actual code that's in the process<00:27:36.720> that<00:27:36.880> the<00:27:36.960> thread<00:27:37.240> is<00:27:37.360> stopped<00:27:37.720> on" + }, + { + "start": 1658.27, + "duration": 0.0, + "text": "process that the thread is stopped on" + }, + { + "start": 1658.28, + "duration": 0.0, + "text": "process that the thread is stopped on and<00:27:38.480> it<00:27:38.600> just<00:27:39.200> disassembles<00:27:39.840> it.<00:27:40.640> Um<00:27:41.440> meaning" + }, + { + "start": 1661.71, + "duration": 0.0, + "text": "and it just disassembles it. Um meaning" + }, + { + "start": 1661.72, + "duration": 0.0, + "text": "and it just disassembles it. Um meaning it<00:27:41.800> interprets<00:27:42.280> it<00:27:42.400> how<00:27:42.480> the<00:27:42.560> CPU<00:27:42.920> would" + }, + { + "start": 1663.03, + "duration": 0.0, + "text": "it interprets it how the CPU would" + }, + { + "start": 1663.04, + "duration": 0.0, + "text": "it interprets it how the CPU would interpret<00:27:43.360> it<00:27:43.480> to<00:27:43.560> find<00:27:43.800> out<00:27:43.920> what<00:27:44.080> the" + }, + { + "start": 1664.15, + "duration": 0.0, + "text": "interpret it to find out what the" + }, + { + "start": 1664.16, + "duration": 0.0, + "text": "interpret it to find out what the instructions<00:27:44.600> are,<00:27:44.880> what<00:27:45.000> are<00:27:45.040> the" + }, + { + "start": 1665.11, + "duration": 0.0, + "text": "instructions are, what are the" + }, + { + "start": 1665.12, + "duration": 0.0, + "text": "instructions are, what are the parameters<00:27:45.560> to<00:27:45.640> the<00:27:45.680> instructions,<00:27:46.200> like<00:27:46.320> all" + }, + { + "start": 1666.43, + "duration": 0.0, + "text": "parameters to the instructions, like all" + }, + { + "start": 1666.44, + "duration": 0.0, + "text": "parameters to the instructions, like all these<00:27:46.600> things." + }, + { + "start": 1667.87, + "duration": 0.0, + "text": "these things." + }, + { + "start": 1667.88, + "duration": 0.0, + "text": "these things. And<00:27:48.360> uh<00:27:48.480> you<00:27:48.560> can<00:27:48.680> see<00:27:48.840> it<00:27:48.960> corre-<00:27:49.280> it" + }, + { + "start": 1669.35, + "duration": 0.0, + "text": "And uh you can see it corre- it" + }, + { + "start": 1669.36, + "duration": 0.0, + "text": "And uh you can see it corre- it automatically<00:27:49.800> correlates<00:27:50.320> like<00:27:50.520> with" + }, + { + "start": 1671.31, + "duration": 0.0, + "text": "automatically correlates like with" + }, + { + "start": 1671.32, + "duration": 0.0, + "text": "automatically correlates like with source<00:27:51.600> code<00:27:51.880> like<00:27:52.040> you<00:27:52.160> can<00:27:52.280> see<00:27:52.600> like<00:27:52.800> which" + }, + { + "start": 1673.03, + "duration": 0.0, + "text": "source code like you can see like which" + }, + { + "start": 1673.04, + "duration": 0.0, + "text": "source code like you can see like which instructions<00:27:53.600> map<00:27:53.800> to<00:27:53.880> which<00:27:54.080> line<00:27:54.280> of<00:27:54.360> source" + }, + { + "start": 1674.59, + "duration": 0.0, + "text": "instructions map to which line of source" + }, + { + "start": 1674.6, + "duration": 0.0, + "text": "instructions map to which line of source code<00:27:54.800> and<00:27:54.920> so<00:27:55.120> on.<00:27:55.840> Um<00:27:55.960> and<00:27:56.080> then<00:27:56.200> as<00:27:56.400> I<00:27:56.440> step" + }, + { + "start": 1676.87, + "duration": 0.0, + "text": "code and so on. Um and then as I step" + }, + { + "start": 1676.88, + "duration": 0.0, + "text": "code and so on. Um and then as I step like<00:27:57.040> you'll<00:27:57.200> see<00:27:57.360> that<00:27:57.520> the<00:27:57.640> thread<00:27:58.280> like" + }, + { + "start": 1678.39, + "duration": 0.0, + "text": "like you'll see that the thread like" + }, + { + "start": 1678.4, + "duration": 0.0, + "text": "like you'll see that the thread like goes<00:27:58.640> through<00:27:59.280> um" + }, + { + "start": 1680.39, + "duration": 0.0, + "text": "goes through um" + }, + { + "start": 1680.4, + "duration": 0.0, + "text": "goes through um goes<00:28:00.640> through<00:28:00.760> the<00:28:00.840> code<00:28:01.080> here." + }, + { + "start": 1681.91, + "duration": 0.0, + "text": "goes through the code here." + }, + { + "start": 1681.92, + "duration": 0.0, + "text": "goes through the code here. Um" + }, + { + "start": 1682.83, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1682.84, + "duration": 0.0, + "text": "Um this<00:28:03.080> is<00:28:03.200> also<00:28:03.440> just<00:28:03.640> a<00:28:03.680> visualizer,<00:28:04.400> right?" + }, + { + "start": 1684.59, + "duration": 0.0, + "text": "this is also just a visualizer, right?" + }, + { + "start": 1684.6, + "duration": 0.0, + "text": "this is also just a visualizer, right? So<00:28:04.720> I<00:28:04.760> could<00:28:04.920> just<00:28:05.320> do<00:28:05.760> like<00:28:06.280> disasm<00:28:06.960> and<00:28:07.080> I" + }, + { + "start": 1687.15, + "duration": 0.0, + "text": "So I could just do like disasm and I" + }, + { + "start": 1687.16, + "duration": 0.0, + "text": "So I could just do like disasm and I could<00:28:07.280> put<00:28:07.440> in<00:28:07.520> like<00:28:07.720> a<00:28:08.400> like<00:28:08.520> my<00:28:08.680> mule<00:28:08.920> main" + }, + { + "start": 1689.15, + "duration": 0.0, + "text": "could put in like a like my mule main" + }, + { + "start": 1689.16, + "duration": 0.0, + "text": "could put in like a like my mule main function" + }, + { + "start": 1690.63, + "duration": 0.0, + "text": "function" + }, + { + "start": 1690.64, + "duration": 0.0, + "text": "function and<00:28:11.320> if<00:28:11.480> I<00:28:12.160> go<00:28:12.360> to<00:28:12.520> mule<00:28:12.760> main<00:28:13.200> here" + }, + { + "start": 1695.15, + "duration": 0.0, + "text": "and if I go to mule main here" + }, + { + "start": 1695.16, + "duration": 0.0, + "text": "and if I go to mule main here uh<00:28:15.400> you<00:28:15.520> can<00:28:15.640> see<00:28:15.840> that" + }, + { + "start": 1696.91, + "duration": 0.0, + "text": "uh you can see that" + }, + { + "start": 1696.92, + "duration": 0.0, + "text": "uh you can see that uh<00:28:16.960> let<00:28:17.080> me<00:28:17.160> pull<00:28:17.320> this<00:28:17.440> out<00:28:17.560> as<00:28:17.680> its<00:28:17.800> own<00:28:17.960> tab." + }, + { + "start": 1698.15, + "duration": 0.0, + "text": "uh let me pull this out as its own tab." + }, + { + "start": 1698.16, + "duration": 0.0, + "text": "uh let me pull this out as its own tab. So<00:28:18.280> we're<00:28:18.360> just<00:28:18.600> viewing<00:28:18.840> the<00:28:18.920> disassembly<00:28:19.560> of" + }, + { + "start": 1699.87, + "duration": 0.0, + "text": "So we're just viewing the disassembly of" + }, + { + "start": 1699.88, + "duration": 0.0, + "text": "So we're just viewing the disassembly of mule<00:28:20.120> main" + }, + { + "start": 1701.03, + "duration": 0.0, + "text": "mule main" + }, + { + "start": 1701.04, + "duration": 0.0, + "text": "mule main and<00:28:21.680> we<00:28:21.840> can<00:28:22.000> see<00:28:22.200> like<00:28:22.720> that's<00:28:22.960> just<00:28:23.240> going<00:28:23.360> to" + }, + { + "start": 1703.47, + "duration": 0.0, + "text": "and we can see like that's just going to" + }, + { + "start": 1703.48, + "duration": 0.0, + "text": "and we can see like that's just going to do<00:28:23.720> exactly<00:28:24.120> what<00:28:24.200> I<00:28:24.240> told<00:28:24.480> it<00:28:24.600> to.<00:28:24.720> It's<00:28:24.880> like" + }, + { + "start": 1705.03, + "duration": 0.0, + "text": "do exactly what I told it to. It's like" + }, + { + "start": 1705.04, + "duration": 0.0, + "text": "do exactly what I told it to. It's like disassemble<00:28:25.560> mule<00:28:25.720> main<00:28:26.120> and<00:28:26.280> show<00:28:26.440> me<00:28:27.160> what" + }, + { + "start": 1707.27, + "duration": 0.0, + "text": "disassemble mule main and show me what" + }, + { + "start": 1707.28, + "duration": 0.0, + "text": "disassemble mule main and show me what it<00:28:27.360> looks<00:28:27.520> like<00:28:27.720> and<00:28:27.960> and" + }, + { + "start": 1709.11, + "duration": 0.0, + "text": "it looks like and and" + }, + { + "start": 1709.12, + "duration": 0.0, + "text": "it looks like and and here<00:28:29.320> it<00:28:29.400> is." + }, + { + "start": 1710.79, + "duration": 0.0, + "text": "here it is." + }, + { + "start": 1710.8, + "duration": 0.0, + "text": "here it is. Um" + }, + { + "start": 1712.63, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1712.64, + "duration": 0.0, + "text": "Um so" + }, + { + "start": 1714.47, + "duration": 0.0, + "text": "so" + }, + { + "start": 1714.48, + "duration": 0.0, + "text": "so then<00:28:35.760> the<00:28:36.000> next<00:28:36.280> thing<00:28:36.480> I<00:28:36.640> should<00:28:36.880> probably" + }, + { + "start": 1717.23, + "duration": 0.0, + "text": "then the next thing I should probably" + }, + { + "start": 1717.24, + "duration": 0.0, + "text": "then the next thing I should probably show<00:28:37.680> is" + }, + { + "start": 1719.23, + "duration": 0.0, + "text": "show is" + }, + { + "start": 1719.24, + "duration": 0.0, + "text": "show is uh<00:28:39.320> we've<00:28:39.400> got<00:28:39.560> other<00:28:39.720> kinds<00:28:39.960> of<00:28:40.000> visualizers" + }, + { + "start": 1720.47, + "duration": 0.0, + "text": "uh we've got other kinds of visualizers" + }, + { + "start": 1720.48, + "duration": 0.0, + "text": "uh we've got other kinds of visualizers like<00:28:40.880> um<00:28:41.360> like<00:28:41.480> a<00:28:41.520> bit<00:28:41.680> map<00:28:41.880> visualizer<00:28:42.320> for" + }, + { + "start": 1722.43, + "duration": 0.0, + "text": "like um like a bit map visualizer for" + }, + { + "start": 1722.44, + "duration": 0.0, + "text": "like um like a bit map visualizer for example.<00:28:42.800> So<00:28:42.880> if<00:28:42.960> I've<00:28:43.080> got<00:28:43.200> a<00:28:43.240> bunch<00:28:43.440> of<00:28:43.480> data" + }, + { + "start": 1723.83, + "duration": 0.0, + "text": "example. So if I've got a bunch of data" + }, + { + "start": 1723.84, + "duration": 0.0, + "text": "example. So if I've got a bunch of data like<00:28:44.200> U32s<00:28:44.880> that<00:28:45.000> that<00:28:45.200> to<00:28:45.400> interpret<00:28:45.800> as" + }, + { + "start": 1725.91, + "duration": 0.0, + "text": "like U32s that that to interpret as" + }, + { + "start": 1725.92, + "duration": 0.0, + "text": "like U32s that that to interpret as pixels" + }, + { + "start": 1727.15, + "duration": 0.0, + "text": "pixels" + }, + { + "start": 1727.16, + "duration": 0.0, + "text": "pixels I<00:28:47.240> can<00:28:47.440> say,<00:28:47.680> \"Hey,<00:28:47.960> like<00:28:48.200> I<00:28:48.280> actually<00:28:48.560> have<00:28:48.680> a" + }, + { + "start": 1728.71, + "duration": 0.0, + "text": "I can say, \"Hey, like I actually have a" + }, + { + "start": 1728.72, + "duration": 0.0, + "text": "I can say, \"Hey, like I actually have a bitmap<00:28:49.480> and<00:28:49.800> my" + }, + { + "start": 1731.51, + "duration": 0.0, + "text": "bitmap and my" + }, + { + "start": 1731.52, + "duration": 0.0, + "text": "bitmap and my my<00:28:51.760> pixels<00:28:52.240> for<00:28:52.440> for<00:28:52.560> this<00:28:52.680> bitmap<00:28:53.520> is<00:28:53.640> just" + }, + { + "start": 1733.83, + "duration": 0.0, + "text": "my pixels for for this bitmap is just" + }, + { + "start": 1733.84, + "duration": 0.0, + "text": "my pixels for for this bitmap is just this<00:28:54.040> big<00:28:54.280> array<00:28:54.560> of<00:28:54.840> of<00:28:55.200> U32s<00:28:55.760> called<00:28:55.960> pixels." + }, + { + "start": 1736.87, + "duration": 0.0, + "text": "this big array of of U32s called pixels." + }, + { + "start": 1736.88, + "duration": 0.0, + "text": "this big array of of U32s called pixels. I<00:28:56.960> happen<00:28:57.200> to<00:28:57.320> know<00:28:57.520> that<00:28:57.680> the<00:28:57.760> dimensions<00:28:58.200> of" + }, + { + "start": 1738.31, + "duration": 0.0, + "text": "I happen to know that the dimensions of" + }, + { + "start": 1738.32, + "duration": 0.0, + "text": "I happen to know that the dimensions of this<00:28:58.480> thing<00:28:58.840> are<00:28:59.040> 18<00:28:59.320> by<00:28:59.480> 18,<00:28:59.920> but<00:29:00.040> you<00:29:00.120> can<00:29:00.240> put" + }, + { + "start": 1740.35, + "duration": 0.0, + "text": "this thing are 18 by 18, but you can put" + }, + { + "start": 1740.36, + "duration": 0.0, + "text": "this thing are 18 by 18, but you can put in<00:29:00.480> whatever<00:29:00.720> you<00:29:00.800> want<00:29:01.000> there.\"" + }, + { + "start": 1741.99, + "duration": 0.0, + "text": "in whatever you want there.\"" + }, + { + "start": 1742.0, + "duration": 0.0, + "text": "in whatever you want there.\" And<00:29:02.080> then<00:29:02.160> if<00:29:02.280> you<00:29:02.360> open<00:29:02.600> that,<00:29:03.320> you<00:29:03.440> get<00:29:03.560> a" + }, + { + "start": 1743.59, + "duration": 0.0, + "text": "And then if you open that, you get a" + }, + { + "start": 1743.6, + "duration": 0.0, + "text": "And then if you open that, you get a little<00:29:03.840> bitmap<00:29:04.160> visualizer." + }, + { + "start": 1746.03, + "duration": 0.0, + "text": "little bitmap visualizer." + }, + { + "start": 1746.04, + "duration": 0.0, + "text": "little bitmap visualizer. Um<00:29:06.760> and<00:29:07.040> you<00:29:07.160> can<00:29:07.720> just<00:29:07.920> like<00:29:08.080> everything,<00:29:08.400> you" + }, + { + "start": 1748.47, + "duration": 0.0, + "text": "Um and you can just like everything, you" + }, + { + "start": 1748.48, + "duration": 0.0, + "text": "Um and you can just like everything, you can<00:29:08.600> pull<00:29:08.760> it<00:29:08.880> out<00:29:09.120> as<00:29:09.240> its<00:29:09.400> own<00:29:09.520> tab.<00:29:10.160> An" + }, + { + "start": 1750.23, + "duration": 0.0, + "text": "can pull it out as its own tab. An" + }, + { + "start": 1750.24, + "duration": 0.0, + "text": "can pull it out as its own tab. An alternative<00:29:10.800> way<00:29:10.960> of<00:29:11.080> creating<00:29:11.400> this<00:29:11.520> tab" + }, + { + "start": 1751.75, + "duration": 0.0, + "text": "alternative way of creating this tab" + }, + { + "start": 1751.76, + "duration": 0.0, + "text": "alternative way of creating this tab would<00:29:11.840> have<00:29:11.960> been<00:29:12.640> just<00:29:12.840> create<00:29:13.040> a<00:29:13.080> bitmap<00:29:13.480> tab" + }, + { + "start": 1753.87, + "duration": 0.0, + "text": "would have been just create a bitmap tab" + }, + { + "start": 1753.88, + "duration": 0.0, + "text": "would have been just create a bitmap tab and<00:29:14.040> put<00:29:14.160> in<00:29:14.280> here<00:29:15.040> pixels<00:29:15.720> 18<00:29:16.120> by<00:29:16.320> 18.<00:29:16.960> These" + }, + { + "start": 1757.11, + "duration": 0.0, + "text": "and put in here pixels 18 by 18. These" + }, + { + "start": 1757.12, + "duration": 0.0, + "text": "and put in here pixels 18 by 18. These are<00:29:17.240> two<00:29:17.880> things<00:29:18.360> that<00:29:18.520> mean<00:29:18.680> exactly<00:29:19.120> the" + }, + { + "start": 1759.19, + "duration": 0.0, + "text": "are two things that mean exactly the" + }, + { + "start": 1759.2, + "duration": 0.0, + "text": "are two things that mean exactly the same<00:29:19.440> thing." + }, + { + "start": 1760.47, + "duration": 0.0, + "text": "same thing." + }, + { + "start": 1760.48, + "duration": 0.0, + "text": "same thing. So," + }, + { + "start": 1761.47, + "duration": 0.0, + "text": "So," + }, + { + "start": 1761.48, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1762.23, + "duration": 0.0, + "text": "um" + }, + { + "start": 1762.24, + "duration": 0.0, + "text": "um you<00:29:22.280> can<00:29:22.400> see<00:29:22.520> it's<00:29:22.640> just<00:29:22.800> like<00:29:23.000> initialized" + }, + { + "start": 1763.43, + "duration": 0.0, + "text": "you can see it's just like initialized" + }, + { + "start": 1763.44, + "duration": 0.0, + "text": "you can see it's just like initialized as<00:29:23.560> basically<00:29:23.920> just<00:29:24.080> garbage<00:29:24.400> right<00:29:24.560> now,<00:29:24.880> but" + }, + { + "start": 1764.99, + "duration": 0.0, + "text": "as basically just garbage right now, but" + }, + { + "start": 1765.0, + "duration": 0.0, + "text": "as basically just garbage right now, but as<00:29:25.200> I<00:29:25.280> step,<00:29:25.920> you<00:29:26.040> can<00:29:26.200> see<00:29:26.440> these<00:29:26.680> things" + }, + { + "start": 1767.31, + "duration": 0.0, + "text": "as I step, you can see these things" + }, + { + "start": 1767.32, + "duration": 0.0, + "text": "as I step, you can see these things start<00:29:27.600> to<00:29:28.120> start<00:29:28.320> to<00:29:28.800> see<00:29:28.920> these<00:29:29.040> pixels<00:29:29.320> start" + }, + { + "start": 1769.51, + "duration": 0.0, + "text": "start to start to see these pixels start" + }, + { + "start": 1769.52, + "duration": 0.0, + "text": "start to start to see these pixels start to<00:29:29.600> fill<00:29:29.840> out.<00:29:30.520> Um" + }, + { + "start": 1772.11, + "duration": 0.0, + "text": "to fill out. Um" + }, + { + "start": 1772.12, + "duration": 0.0, + "text": "to fill out. Um and<00:29:33.000> here's<00:29:33.320> a<00:29:33.360> loop<00:29:33.720> which<00:29:33.920> does<00:29:34.120> something" + }, + { + "start": 1774.35, + "duration": 0.0, + "text": "and here's a loop which does something" + }, + { + "start": 1774.36, + "duration": 0.0, + "text": "and here's a loop which does something to<00:29:34.440> all<00:29:34.520> the<00:29:34.600> pixels,<00:29:35.000> so<00:29:35.120> I<00:29:35.160> can<00:29:35.280> set<00:29:35.440> a" + }, + { + "start": 1775.47, + "duration": 0.0, + "text": "to all the pixels, so I can set a" + }, + { + "start": 1775.48, + "duration": 0.0, + "text": "to all the pixels, so I can set a breakpoint<00:29:35.880> here.<00:29:36.120> I'll<00:29:36.200> hit<00:29:36.320> F5,<00:29:36.840> run<00:29:37.000> to" + }, + { + "start": 1777.07, + "duration": 0.0, + "text": "breakpoint here. I'll hit F5, run to" + }, + { + "start": 1777.08, + "duration": 0.0, + "text": "breakpoint here. I'll hit F5, run to that<00:29:37.240> breakpoint.<00:29:37.960> It<00:29:38.160> like<00:29:38.440> shifted<00:29:38.840> all<00:29:38.960> the" + }, + { + "start": 1779.03, + "duration": 0.0, + "text": "that breakpoint. It like shifted all the" + }, + { + "start": 1779.04, + "duration": 0.0, + "text": "that breakpoint. It like shifted all the pixels<00:29:39.400> over.<00:29:40.360> Um" + }, + { + "start": 1781.15, + "duration": 0.0, + "text": "pixels over. Um" + }, + { + "start": 1781.16, + "duration": 0.0, + "text": "pixels over. Um uh<00:29:41.440> shifted<00:29:41.800> the<00:29:41.880> components<00:29:42.360> of<00:29:42.440> the<00:29:42.520> color" + }, + { + "start": 1782.95, + "duration": 0.0, + "text": "uh shifted the components of the color" + }, + { + "start": 1782.96, + "duration": 0.0, + "text": "uh shifted the components of the color of<00:29:43.160> of<00:29:43.240> the<00:29:43.320> pixel<00:29:43.600> colors<00:29:43.880> over.<00:29:44.640> Does<00:29:44.920> same" + }, + { + "start": 1785.11, + "duration": 0.0, + "text": "of of the pixel colors over. Does same" + }, + { + "start": 1785.12, + "duration": 0.0, + "text": "of of the pixel colors over. Does same thing<00:29:45.320> here<00:29:45.800> and<00:29:45.920> then<00:29:46.080> finally<00:29:46.440> does<00:29:46.640> it<00:29:46.720> once" + }, + { + "start": 1786.87, + "duration": 0.0, + "text": "thing here and then finally does it once" + }, + { + "start": 1786.88, + "duration": 0.0, + "text": "thing here and then finally does it once again<00:29:47.200> to<00:29:47.320> return<00:29:47.600> it<00:29:47.680> back<00:29:47.880> to<00:29:47.960> its<00:29:48.080> original" + }, + { + "start": 1788.39, + "duration": 0.0, + "text": "again to return it back to its original" + }, + { + "start": 1788.4, + "duration": 0.0, + "text": "again to return it back to its original values." + }, + { + "start": 1789.47, + "duration": 0.0, + "text": "values." + }, + { + "start": 1789.48, + "duration": 0.0, + "text": "values. Um" + }, + { + "start": 1790.83, + "duration": 0.0, + "text": "Um" + }, + { + "start": 1790.84, + "duration": 0.0, + "text": "Um So,<00:29:50.960> yeah.<00:29:51.520> Finally,<00:29:52.600> um" + }, + { + "start": 1794.055, + "duration": 0.0, + "text": "So, yeah. Finally, um" + }, + { + "start": 1794.065, + "duration": 0.0, + "text": "So, yeah. Finally, um >> [laughter]" + }, + { + "start": 1794.91, + "duration": 0.0, + "text": ">> [laughter]" + }, + { + "start": 1794.92, + "duration": 0.0, + "text": ">> [laughter] >> there's<00:29:55.040> this<00:29:55.240> one<00:29:55.560> which<00:29:55.800> is<00:29:56.000> a<00:29:56.080> bunch<00:29:56.320> you" + }, + { + "start": 1796.43, + "duration": 0.0, + "text": ">> there's this one which is a bunch you" + }, + { + "start": 1796.44, + "duration": 0.0, + "text": ">> there's this one which is a bunch you can<00:29:56.560> tell<00:29:57.040> I<00:29:57.080> I" + }, + { + "start": 1797.75, + "duration": 0.0, + "text": "can tell I I" + }, + { + "start": 1797.76, + "duration": 0.0, + "text": "can tell I I I<00:29:57.880> say<00:29:58.080> 3D<00:29:58.440> geometry.<00:29:59.080> I've<00:29:59.200> got<00:29:59.320> a<00:29:59.360> bunch<00:29:59.520> of" + }, + { + "start": 1799.55, + "duration": 0.0, + "text": "I say 3D geometry. I've got a bunch of" + }, + { + "start": 1799.56, + "duration": 0.0, + "text": "I say 3D geometry. I've got a bunch of vertex<00:29:59.920> data." + }, + { + "start": 1800.95, + "duration": 0.0, + "text": "vertex data." + }, + { + "start": 1800.96, + "duration": 0.0, + "text": "vertex data. Um<00:30:01.000> I've<00:30:01.120> got<00:30:01.680> some<00:30:01.880> index<00:30:02.200> data<00:30:03.080> and<00:30:03.960> uh" + }, + { + "start": 1804.67, + "duration": 0.0, + "text": "Um I've got some index data and uh" + }, + { + "start": 1804.68, + "duration": 0.0, + "text": "Um I've got some index data and uh if<00:30:04.800> I<00:30:04.880> So,<00:30:05.040> if<00:30:05.160> I<00:30:05.280> want<00:30:05.520> to<00:30:05.640> run<00:30:05.920> through<00:30:06.520> the" + }, + { + "start": 1807.55, + "duration": 0.0, + "text": "if I So, if I want to run through the" + }, + { + "start": 1807.56, + "duration": 0.0, + "text": "if I So, if I want to run through the the<00:30:07.680> initialization<00:30:08.360> of<00:30:08.440> those<00:30:08.560> big<00:30:08.760> tables" + }, + { + "start": 1809.43, + "duration": 0.0, + "text": "the initialization of those big tables" + }, + { + "start": 1809.44, + "duration": 0.0, + "text": "the initialization of those big tables and<00:30:09.720> this<00:30:09.840> is<00:30:09.920> a<00:30:09.960> pretty<00:30:10.160> complicated" + }, + { + "start": 1810.59, + "duration": 0.0, + "text": "and this is a pretty complicated" + }, + { + "start": 1810.6, + "duration": 0.0, + "text": "and this is a pretty complicated expression,<00:30:11.040> so<00:30:11.160> we've<00:30:11.280> got<00:30:11.840> this<00:30:12.040> geo<00:30:12.400> 3D" + }, + { + "start": 1813.07, + "duration": 0.0, + "text": "expression, so we've got this geo 3D" + }, + { + "start": 1813.08, + "duration": 0.0, + "text": "expression, so we've got this geo 3D view<00:30:13.640> which<00:30:13.760> is<00:30:13.840> applied<00:30:14.160> to<00:30:14.240> the<00:30:14.360> index" + }, + { + "start": 1814.63, + "duration": 0.0, + "text": "view which is applied to the index" + }, + { + "start": 1814.64, + "duration": 0.0, + "text": "view which is applied to the index buffer<00:30:15.160> and<00:30:15.280> then<00:30:15.400> you<00:30:15.440> have<00:30:15.560> a<00:30:15.600> vertex" + }, + { + "start": 1815.95, + "duration": 0.0, + "text": "buffer and then you have a vertex" + }, + { + "start": 1815.96, + "duration": 0.0, + "text": "buffer and then you have a vertex buffer." + }, + { + "start": 1817.15, + "duration": 0.0, + "text": "buffer." + }, + { + "start": 1817.16, + "duration": 0.0, + "text": "buffer. But<00:30:17.240> anyways," + }, + { + "start": 1818.55, + "duration": 0.0, + "text": "But anyways," + }, + { + "start": 1818.56, + "duration": 0.0, + "text": "But anyways, uh<00:30:18.640> then<00:30:18.880> you<00:30:19.000> get<00:30:19.200> this<00:30:19.560> and<00:30:19.680> that's<00:30:19.880> the" + }, + { + "start": 1819.95, + "duration": 0.0, + "text": "uh then you get this and that's the" + }, + { + "start": 1819.96, + "duration": 0.0, + "text": "uh then you get this and that's the actual" + }, + { + "start": 1821.11, + "duration": 0.0, + "text": "actual" + }, + { + "start": 1821.12, + "duration": 0.0, + "text": "actual um<00:30:21.680> that's<00:30:21.880> the<00:30:21.960> actual<00:30:22.640> like<00:30:22.840> geometry<00:30:23.280> data." + }, + { + "start": 1823.75, + "duration": 0.0, + "text": "um that's the actual like geometry data." + }, + { + "start": 1823.76, + "duration": 0.0, + "text": "um that's the actual like geometry data. So," + }, + { + "start": 1825.11, + "duration": 0.0, + "text": "So," + }, + { + "start": 1825.12, + "duration": 0.0, + "text": "So, um" + }, + { + "start": 1826.63, + "duration": 0.0, + "text": "um" + }, + { + "start": 1826.64, + "duration": 0.0, + "text": "um So,<00:30:26.720> yeah,<00:30:26.840> those<00:30:27.040> are<00:30:27.120> the<00:30:27.200> fancier" + }, + { + "start": 1827.59, + "duration": 0.0, + "text": "So, yeah, those are the fancier" + }, + { + "start": 1827.6, + "duration": 0.0, + "text": "So, yeah, those are the fancier visualizers.<00:30:28.440> Um<00:30:28.840> the<00:30:28.960> geometry<00:30:29.400> one<00:30:29.520> is" + }, + { + "start": 1829.63, + "duration": 0.0, + "text": "visualizers. Um the geometry one is" + }, + { + "start": 1829.64, + "duration": 0.0, + "text": "visualizers. Um the geometry one is still<00:30:30.120> like<00:30:30.360> all<00:30:30.520> of<00:30:30.600> these<00:30:30.760> are<00:30:30.880> pretty<00:30:31.080> much" + }, + { + "start": 1831.27, + "duration": 0.0, + "text": "still like all of these are pretty much" + }, + { + "start": 1831.28, + "duration": 0.0, + "text": "still like all of these are pretty much heavily<00:30:31.560> in<00:30:31.680> progress.<00:30:32.360> The<00:30:32.440> ones<00:30:32.640> that<00:30:32.800> are" + }, + { + "start": 1833.47, + "duration": 0.0, + "text": "heavily in progress. The ones that are" + }, + { + "start": 1833.48, + "duration": 0.0, + "text": "heavily in progress. The ones that are not<00:30:33.840> as<00:30:33.960> heavily<00:30:34.200> in<00:30:34.320> progress<00:30:34.680> are<00:30:34.760> the<00:30:34.840> ones" + }, + { + "start": 1835.03, + "duration": 0.0, + "text": "not as heavily in progress are the ones" + }, + { + "start": 1835.04, + "duration": 0.0, + "text": "not as heavily in progress are the ones that<00:30:35.160> are<00:30:35.280> like<00:30:35.480> super<00:30:35.800> super<00:30:36.080> common.<00:30:36.440> Like" + }, + { + "start": 1836.59, + "duration": 0.0, + "text": "that are like super super common. Like" + }, + { + "start": 1836.6, + "duration": 0.0, + "text": "that are like super super common. Like obviously<00:30:36.880> the<00:30:36.960> watch<00:30:37.160> window,<00:30:37.960> I<00:30:38.040> put<00:30:38.160> a<00:30:38.200> lot" + }, + { + "start": 1838.35, + "duration": 0.0, + "text": "obviously the watch window, I put a lot" + }, + { + "start": 1838.36, + "duration": 0.0, + "text": "obviously the watch window, I put a lot of<00:30:38.440> work<00:30:38.560> into<00:30:38.720> the<00:30:38.800> memory<00:30:39.120> view<00:30:39.360> cuz<00:30:39.480> these" + }, + { + "start": 1839.63, + "duration": 0.0, + "text": "of work into the memory view cuz these" + }, + { + "start": 1839.64, + "duration": 0.0, + "text": "of work into the memory view cuz these are<00:30:39.720> really<00:30:39.920> common<00:30:40.240> debugging<00:30:40.640> features" + }, + { + "start": 1840.95, + "duration": 0.0, + "text": "are really common debugging features" + }, + { + "start": 1840.96, + "duration": 0.0, + "text": "are really common debugging features that<00:30:41.080> people<00:30:41.280> expect,<00:30:41.760> but<00:30:41.960> obviously<00:30:42.360> long" + }, + { + "start": 1842.59, + "duration": 0.0, + "text": "that people expect, but obviously long" + }, + { + "start": 1842.6, + "duration": 0.0, + "text": "that people expect, but obviously long term<00:30:42.920> the<00:30:43.160> the<00:30:43.280> idea<00:30:43.560> is<00:30:43.720> like,<00:30:43.920> \"Hey,<00:30:44.080> this" + }, + { + "start": 1844.23, + "duration": 0.0, + "text": "term the the idea is like, \"Hey, this" + }, + { + "start": 1844.24, + "duration": 0.0, + "text": "term the the idea is like, \"Hey, this bitmap<00:30:44.480> visualizer<00:30:44.880> will<00:30:45.000> just<00:30:45.160> end<00:30:45.320> up<00:30:45.400> being" + }, + { + "start": 1846.19, + "duration": 0.0, + "text": "bitmap visualizer will just end up being" + }, + { + "start": 1846.2, + "duration": 0.0, + "text": "bitmap visualizer will just end up being like<00:30:46.640> having<00:30:46.920> all<00:30:47.000> the<00:30:47.080> things<00:30:47.320> that<00:30:47.440> you" + }, + { + "start": 1847.51, + "duration": 0.0, + "text": "like having all the things that you" + }, + { + "start": 1847.52, + "duration": 0.0, + "text": "like having all the things that you really<00:30:47.720> want<00:30:48.240> um<00:30:48.680> for<00:30:49.040> for<00:30:49.600> dealing<00:30:49.840> with" + }, + { + "start": 1849.95, + "duration": 0.0, + "text": "really want um for for dealing with" + }, + { + "start": 1849.96, + "duration": 0.0, + "text": "really want um for for dealing with bitmap<00:30:50.280> data.\"" + }, + { + "start": 1851.27, + "duration": 0.0, + "text": "bitmap data.\"" + }, + { + "start": 1851.28, + "duration": 0.0, + "text": "bitmap data.\" Um<00:30:51.400> and<00:30:51.520> then<00:30:51.640> in<00:30:51.680> the<00:30:51.760> future<00:30:52.000> we'll<00:30:52.120> have" + }, + { + "start": 1852.27, + "duration": 0.0, + "text": "Um and then in the future we'll have" + }, + { + "start": 1852.28, + "duration": 0.0, + "text": "Um and then in the future we'll have tons<00:30:52.520> of<00:30:52.600> other<00:30:52.760> kinds<00:30:53.040> of<00:30:53.120> visualizers<00:30:53.720> like," + }, + { + "start": 1854.11, + "duration": 0.0, + "text": "tons of other kinds of visualizers like," + }, + { + "start": 1854.12, + "duration": 0.0, + "text": "tons of other kinds of visualizers like, you<00:30:54.200> know,<00:30:54.320> for<00:30:54.440> sound<00:30:54.800> data<00:30:55.240> and<00:30:55.640> the<00:30:55.840> 3D" + }, + { + "start": 1856.11, + "duration": 0.0, + "text": "you know, for sound data and the 3D" + }, + { + "start": 1856.12, + "duration": 0.0, + "text": "you know, for sound data and the 3D geometry<00:30:56.480> one<00:30:56.640> will<00:30:56.800> become<00:30:57.040> a<00:30:57.080> lot<00:30:57.240> more" + }, + { + "start": 1857.35, + "duration": 0.0, + "text": "geometry one will become a lot more" + }, + { + "start": 1857.36, + "duration": 0.0, + "text": "geometry one will become a lot more sophisticated<00:30:58.120> and<00:30:58.480> and<00:30:58.760> 2D<00:30:59.040> plots<00:30:59.480> and<00:30:59.560> like" + }, + { + "start": 1859.71, + "duration": 0.0, + "text": "sophisticated and and 2D plots and like" + }, + { + "start": 1859.72, + "duration": 0.0, + "text": "sophisticated and and 2D plots and like all<00:30:59.800> these<00:30:59.960> kinds<00:31:00.160> of<00:31:00.240> things<00:31:00.440> are<00:31:00.520> on<00:31:00.640> the" + }, + { + "start": 1860.71, + "duration": 0.0, + "text": "all these kinds of things are on the" + }, + { + "start": 1860.72, + "duration": 0.0, + "text": "all these kinds of things are on the table." + }, + { + "start": 1861.75, + "duration": 0.0, + "text": "table." + }, + { + "start": 1861.76, + "duration": 0.0, + "text": "table. Um<00:31:02.280> that's<00:31:02.440> what<00:31:02.520> the<00:31:02.600> whole<00:31:02.800> architecture<00:31:03.320> is" + }, + { + "start": 1863.43, + "duration": 0.0, + "text": "Um that's what the whole architecture is" + }, + { + "start": 1863.44, + "duration": 0.0, + "text": "Um that's what the whole architecture is for.<00:31:04.200> Um" + }, + { + "start": 1864.47, + "duration": 0.0, + "text": "for. Um" + }, + { + "start": 1864.48, + "duration": 0.0, + "text": "for. Um >> So,<00:31:04.640> it's<00:31:04.840> like<00:31:05.520> Rad<00:31:05.760> Debugger<00:31:06.240> is<00:31:06.400> like<00:31:06.800> like" + }, + { + "start": 1867.03, + "duration": 0.0, + "text": ">> So, it's like Rad Debugger is like like" + }, + { + "start": 1867.04, + "duration": 0.0, + "text": ">> So, it's like Rad Debugger is like like a<00:31:07.080> mini<00:31:07.440> game<00:31:07.840> engine." + }, + { + "start": 1870.036, + "duration": 0.0, + "text": "a mini game engine." + }, + { + "start": 1870.046, + "duration": 0.0, + "text": "a mini game engine. >> [laughter]" + }, + { + "start": 1870.79, + "duration": 0.0, + "text": ">> [laughter]" + }, + { + "start": 1870.8, + "duration": 0.0, + "text": ">> [laughter] >> You<00:31:10.920> could<00:31:11.320> You<00:31:11.440> could<00:31:11.760> think<00:31:11.960> of<00:31:12.040> it<00:31:12.120> that" + }, + { + "start": 1872.31, + "duration": 0.0, + "text": ">> You could You could think of it that" + }, + { + "start": 1872.32, + "duration": 0.0, + "text": ">> You could You could think of it that way,<00:31:12.560> maybe.<00:31:12.960> I<00:31:13.040> mean,<00:31:13.520> you<00:31:13.640> know,<00:31:13.800> I<00:31:13.840> I<00:31:14.560> I" + }, + { + "start": 1874.63, + "duration": 0.0, + "text": "way, maybe. I mean, you know, I I I" + }, + { + "start": 1874.64, + "duration": 0.0, + "text": "way, maybe. I mean, you know, I I I wouldn't<00:31:14.800> be<00:31:14.920> so<00:31:15.040> presumptuous<00:31:15.600> as<00:31:15.760> to<00:31:15.840> say" + }, + { + "start": 1876.03, + "duration": 0.0, + "text": "wouldn't be so presumptuous as to say" + }, + { + "start": 1876.04, + "duration": 0.0, + "text": "wouldn't be so presumptuous as to say that<00:31:16.280> unlike<00:31:16.640> the<00:31:16.920> people<00:31:17.200> at<00:31:17.320> Anthropic,<00:31:17.840> but" + }, + { + "start": 1878.75, + "duration": 0.0, + "text": "that unlike the people at Anthropic, but" + }, + { + "start": 1878.76, + "duration": 0.0, + "text": "that unlike the people at Anthropic, but um<00:31:19.680> about<00:31:20.040> Claude.<00:31:20.600> Uh<00:31:20.840> but<00:31:21.760> it<00:31:21.960> is<00:31:22.120> a<00:31:22.160> lot<00:31:22.480> I" + }, + { + "start": 1882.55, + "duration": 0.0, + "text": "um about Claude. Uh but it is a lot I" + }, + { + "start": 1882.56, + "duration": 0.0, + "text": "um about Claude. Uh but it is a lot I would<00:31:22.720> say<00:31:22.880> it's<00:31:23.000> a<00:31:23.040> lot<00:31:23.280> closer<00:31:23.640> to<00:31:23.800> a<00:31:23.880> little" + }, + { + "start": 1884.07, + "duration": 0.0, + "text": "would say it's a lot closer to a little" + }, + { + "start": 1884.08, + "duration": 0.0, + "text": "would say it's a lot closer to a little game<00:31:24.320> engine<00:31:24.640> than<00:31:25.120> than<00:31:25.440> maybe<00:31:25.680> Claude<00:31:25.960> Code" + }, + { + "start": 1886.19, + "duration": 0.0, + "text": "game engine than than maybe Claude Code" + }, + { + "start": 1886.2, + "duration": 0.0, + "text": "game engine than than maybe Claude Code is,<00:31:26.360> but" + }, + { + "start": 1888.11, + "duration": 0.0, + "text": "is, but" + }, + { + "start": 1888.12, + "duration": 0.0, + "text": "is, but but<00:31:28.240> anyways," + }, + { + "start": 1889.27, + "duration": 0.0, + "text": "but anyways," + }, + { + "start": 1889.28, + "duration": 0.0, + "text": "but anyways, um" + }, + { + "start": 1889.99, + "duration": 0.0, + "text": "um" + }, + { + "start": 1890.0, + "duration": 0.0, + "text": "um so<00:31:30.520> uh<00:31:30.640> I<00:31:30.680> guess<00:31:30.920> one<00:31:31.120> other<00:31:31.320> thing<00:31:31.520> that<00:31:31.640> I" + }, + { + "start": 1891.67, + "duration": 0.0, + "text": "so uh I guess one other thing that I" + }, + { + "start": 1891.68, + "duration": 0.0, + "text": "so uh I guess one other thing that I should<00:31:32.040> point<00:31:32.320> out<00:31:32.600> is<00:31:33.080> um<00:31:33.280> some<00:31:33.440> of<00:31:33.520> these" + }, + { + "start": 1893.67, + "duration": 0.0, + "text": "should point out is um some of these" + }, + { + "start": 1893.68, + "duration": 0.0, + "text": "should point out is um some of these things<00:31:33.880> which<00:31:34.000> I'm<00:31:34.120> sure<00:31:34.400> people<00:31:34.680> in<00:31:34.760> the<00:31:34.800> chat" + }, + { + "start": 1895.03, + "duration": 0.0, + "text": "things which I'm sure people in the chat" + }, + { + "start": 1895.04, + "duration": 0.0, + "text": "things which I'm sure people in the chat have<00:31:35.160> probably<00:31:35.560> already<00:31:35.720> spotted,<00:31:36.160> which<00:31:36.280> is" + }, + { + "start": 1896.43, + "duration": 0.0, + "text": "have probably already spotted, which is" + }, + { + "start": 1896.44, + "duration": 0.0, + "text": "have probably already spotted, which is like<00:31:36.640> these<00:31:37.160> uh" + }, + { + "start": 1898.75, + "duration": 0.0, + "text": "like these uh" + }, + { + "start": 1898.76, + "duration": 0.0, + "text": "like these uh these<00:31:39.000> like<00:31:39.280> in-source<00:31:39.960> annotations<00:31:40.800> of<00:31:41.080> Rad" + }, + { + "start": 1901.31, + "duration": 0.0, + "text": "these like in-source annotations of Rad" + }, + { + "start": 1901.32, + "duration": 0.0, + "text": "these like in-source annotations of Rad Debugger<00:31:41.840> info.<00:31:42.520> So,<00:31:42.640> you<00:31:42.720> can<00:31:42.840> see<00:31:43.040> right" + }, + { + "start": 1903.31, + "duration": 0.0, + "text": "Debugger info. So, you can see right" + }, + { + "start": 1903.32, + "duration": 0.0, + "text": "Debugger info. So, you can see right here<00:31:43.520> I'm<00:31:43.640> saying<00:31:43.880> Rad<00:31:44.080> DBG<00:31:44.440> entry<00:31:44.760> point<00:31:45.400> mule" + }, + { + "start": 1905.59, + "duration": 0.0, + "text": "here I'm saying Rad DBG entry point mule" + }, + { + "start": 1905.6, + "duration": 0.0, + "text": "here I'm saying Rad DBG entry point mule main.<00:31:46.440> Um<00:31:46.960> and<00:31:47.040> you<00:31:47.120> might<00:31:47.240> be<00:31:47.360> wondering" + }, + { + "start": 1907.67, + "duration": 0.0, + "text": "main. Um and you might be wondering" + }, + { + "start": 1907.68, + "duration": 0.0, + "text": "main. Um and you might be wondering like," + }, + { + "start": 1908.59, + "duration": 0.0, + "text": "like," + }, + { + "start": 1908.6, + "duration": 0.0, + "text": "like, \"What<00:31:48.800> is<00:31:48.920> that<00:31:49.040> about?\"<00:31:49.760> Well,<00:31:49.920> you<00:31:49.960> can<00:31:50.080> see" + }, + { + "start": 1910.19, + "duration": 0.0, + "text": "\"What is that about?\" Well, you can see" + }, + { + "start": 1910.2, + "duration": 0.0, + "text": "\"What is that about?\" Well, you can see like<00:31:50.440> when<00:31:50.560> I'm<00:31:50.680> not<00:31:50.920> debugging<00:31:51.280> this" + }, + { + "start": 1911.39, + "duration": 0.0, + "text": "like when I'm not debugging this" + }, + { + "start": 1911.4, + "duration": 0.0, + "text": "like when I'm not debugging this program," + }, + { + "start": 1913.03, + "duration": 0.0, + "text": "program," + }, + { + "start": 1913.04, + "duration": 0.0, + "text": "program, so<00:31:53.240> you<00:31:53.360> can<00:31:53.480> see<00:31:53.600> I'm<00:31:53.760> I'm<00:31:53.880> debugging<00:31:54.320> this" + }, + { + "start": 1914.59, + "duration": 0.0, + "text": "so you can see I'm I'm debugging this" + }, + { + "start": 1914.6, + "duration": 0.0, + "text": "so you can see I'm I'm debugging this mule<00:31:54.840> main.exe," + }, + { + "start": 1916.59, + "duration": 0.0, + "text": "mule main.exe," + }, + { + "start": 1916.6, + "duration": 0.0, + "text": "mule main.exe, and<00:31:57.160> um<00:31:57.680> if<00:31:57.800> I<00:31:57.880> step<00:31:58.160> into<00:31:58.400> it,<00:31:59.080> you'll<00:31:59.240> see" + }, + { + "start": 1919.43, + "duration": 0.0, + "text": "and um if I step into it, you'll see" + }, + { + "start": 1919.44, + "duration": 0.0, + "text": "and um if I step into it, you'll see that<00:31:59.680> my<00:31:59.880> thread<00:32:00.320> first<00:32:00.720> stops.<00:32:01.200> It<00:32:01.320> says," + }, + { + "start": 1921.47, + "duration": 0.0, + "text": "that my thread first stops. It says," + }, + { + "start": 1921.48, + "duration": 0.0, + "text": "that my thread first stops. It says, \"Stopped<00:32:01.840> at<00:32:01.920> entry<00:32:02.160> point.\"<00:32:02.440> And<00:32:02.520> you<00:32:02.560> might" + }, + { + "start": 1922.71, + "duration": 0.0, + "text": "\"Stopped at entry point.\" And you might" + }, + { + "start": 1922.72, + "duration": 0.0, + "text": "\"Stopped at entry point.\" And you might see,<00:32:02.920> \"Hey,<00:32:03.120> mule<00:32:03.360> main.\"<00:32:03.600> It's<00:32:03.720> like<00:32:03.880> weird" + }, + { + "start": 1924.39, + "duration": 0.0, + "text": "see, \"Hey, mule main.\" It's like weird" + }, + { + "start": 1924.4, + "duration": 0.0, + "text": "see, \"Hey, mule main.\" It's like weird cuz<00:32:04.560> when<00:32:04.680> I<00:32:04.760> learned<00:32:05.000> how<00:32:05.080> to<00:32:05.160> write<00:32:05.400> C,<00:32:05.720> it" + }, + { + "start": 1925.83, + "duration": 0.0, + "text": "cuz when I learned how to write C, it" + }, + { + "start": 1925.84, + "duration": 0.0, + "text": "cuz when I learned how to write C, it had<00:32:06.000> to<00:32:06.040> be<00:32:06.240> int<00:32:06.520> main" + }, + { + "start": 1928.07, + "duration": 0.0, + "text": "had to be int main" + }, + { + "start": 1928.08, + "duration": 0.0, + "text": "had to be int main uh<00:32:08.480> or,<00:32:08.880> you<00:32:08.960> know,<00:32:09.080> if<00:32:09.160> you're<00:32:09.240> on<00:32:09.360> Windows," + }, + { + "start": 1929.75, + "duration": 0.0, + "text": "uh or, you know, if you're on Windows," + }, + { + "start": 1929.76, + "duration": 0.0, + "text": "uh or, you know, if you're on Windows, it's<00:32:09.880> like<00:32:10.240> it's<00:32:10.440> like<00:32:10.640> WinMain,<00:32:11.240> it's<00:32:11.360> like" + }, + { + "start": 1931.47, + "duration": 0.0, + "text": "it's like it's like WinMain, it's like" + }, + { + "start": 1931.48, + "duration": 0.0, + "text": "it's like it's like WinMain, it's like the<00:32:11.560> WinMain<00:32:11.880> function.<00:32:12.480> And<00:32:12.640> sure<00:32:12.800> enough," + }, + { + "start": 1933.07, + "duration": 0.0, + "text": "the WinMain function. And sure enough," + }, + { + "start": 1933.08, + "duration": 0.0, + "text": "the WinMain function. And sure enough, it's<00:32:13.200> like,<00:32:13.360> \"Hey,<00:32:13.600> if<00:32:13.800> I<00:32:13.960> look<00:32:14.160> at<00:32:14.200> my<00:32:14.320> call" + }, + { + "start": 1934.55, + "duration": 0.0, + "text": "it's like, \"Hey, if I look at my call" + }, + { + "start": 1934.56, + "duration": 0.0, + "text": "it's like, \"Hey, if I look at my call stack,<00:32:14.880> I<00:32:14.960> see<00:32:15.280> I<00:32:15.360> have<00:32:15.640> WinMain<00:32:16.000> right<00:32:16.160> here.\"" + }, + { + "start": 1936.79, + "duration": 0.0, + "text": "stack, I see I have WinMain right here.\"" + }, + { + "start": 1936.8, + "duration": 0.0, + "text": "stack, I see I have WinMain right here.\" And<00:32:16.920> that<00:32:17.040> is<00:32:17.160> a<00:32:17.240> function.<00:32:17.600> Hey,<00:32:17.760> that's<00:32:17.960> even" + }, + { + "start": 1938.15, + "duration": 0.0, + "text": "And that is a function. Hey, that's even" + }, + { + "start": 1938.16, + "duration": 0.0, + "text": "And that is a function. Hey, that's even in<00:32:18.240> the<00:32:18.280> same<00:32:18.480> source<00:32:18.760> file.<00:32:19.000> So,<00:32:19.160> shouldn't" + }, + { + "start": 1939.99, + "duration": 0.0, + "text": "in the same source file. So, shouldn't" + }, + { + "start": 1940.0, + "duration": 0.0, + "text": "in the same source file. So, shouldn't in<00:32:20.200> most<00:32:20.440> debuggers<00:32:20.880> if<00:32:21.000> you<00:32:21.120> ran<00:32:21.400> this,<00:32:21.680> you" + }, + { + "start": 1941.75, + "duration": 0.0, + "text": "in most debuggers if you ran this, you" + }, + { + "start": 1941.76, + "duration": 0.0, + "text": "in most debuggers if you ran this, you would<00:32:21.880> end<00:32:22.160> you<00:32:22.360> your<00:32:22.520> thread<00:32:22.760> would<00:32:22.880> end<00:32:23.040> up" + }, + { + "start": 1943.15, + "duration": 0.0, + "text": "would end you your thread would end up" + }, + { + "start": 1943.16, + "duration": 0.0, + "text": "would end you your thread would end up here,<00:32:23.600> right?" + }, + { + "start": 1945.35, + "duration": 0.0, + "text": "here, right?" + }, + { + "start": 1945.36, + "duration": 0.0, + "text": "here, right? And<00:32:25.520> so,<00:32:25.720> that<00:32:26.320> little<00:32:26.760> Rad<00:32:26.960> DBG<00:32:27.280> entry<00:32:27.560> point" + }, + { + "start": 1947.79, + "duration": 0.0, + "text": "And so, that little Rad DBG entry point" + }, + { + "start": 1947.8, + "duration": 0.0, + "text": "And so, that little Rad DBG entry point thing<00:32:28.080> is<00:32:28.240> actually<00:32:28.560> sticking<00:32:29.000> something" + }, + { + "start": 1949.31, + "duration": 0.0, + "text": "thing is actually sticking something" + }, + { + "start": 1949.32, + "duration": 0.0, + "text": "thing is actually sticking something into<00:32:29.520> the<00:32:29.600> executable<00:32:30.480> that<00:32:30.640> the<00:32:30.720> debugger" + }, + { + "start": 1951.99, + "duration": 0.0, + "text": "into the executable that the debugger" + }, + { + "start": 1952.0, + "duration": 0.0, + "text": "into the executable that the debugger um<00:32:32.440> that<00:32:32.560> the<00:32:32.640> debugger<00:32:33.000> reads.<00:32:33.800> And<00:32:33.920> so,<00:32:34.040> the" + }, + { + "start": 1954.07, + "duration": 0.0, + "text": "um that the debugger reads. And so, the" + }, + { + "start": 1954.08, + "duration": 0.0, + "text": "um that the debugger reads. And so, the debugger<00:32:34.480> knows,<00:32:34.920> \"Hey,<00:32:35.640> for<00:32:35.800> this<00:32:36.000> program," + }, + { + "start": 1956.51, + "duration": 0.0, + "text": "debugger knows, \"Hey, for this program," + }, + { + "start": 1956.52, + "duration": 0.0, + "text": "debugger knows, \"Hey, for this program, the<00:32:36.640> entry<00:32:36.840> point<00:32:37.120> symbol<00:32:37.480> is<00:32:37.640> not<00:32:37.840> just" + }, + { + "start": 1958.03, + "duration": 0.0, + "text": "the entry point symbol is not just" + }, + { + "start": 1958.04, + "duration": 0.0, + "text": "the entry point symbol is not just WinMain,<00:32:38.800> it's<00:32:38.960> actually<00:32:39.280> mule<00:32:39.560> main.<00:32:40.160> So," + }, + { + "start": 1960.31, + "duration": 0.0, + "text": "WinMain, it's actually mule main. So," + }, + { + "start": 1960.32, + "duration": 0.0, + "text": "WinMain, it's actually mule main. So, this<00:32:40.560> it<00:32:40.680> sticks<00:32:40.960> this<00:32:41.120> thing<00:32:41.360> into<00:32:41.640> the" + }, + { + "start": 1961.75, + "duration": 0.0, + "text": "this it sticks this thing into the" + }, + { + "start": 1961.76, + "duration": 0.0, + "text": "this it sticks this thing into the actual<00:32:42.080> executable.<00:32:42.920> In<00:32:43.000> fact,<00:32:43.280> I<00:32:43.320> wonder<00:32:43.600> if" + }, + { + "start": 1963.75, + "duration": 0.0, + "text": "actual executable. In fact, I wonder if" + }, + { + "start": 1963.76, + "duration": 0.0, + "text": "actual executable. In fact, I wonder if I<00:32:43.800> can<00:32:43.920> even<00:32:44.120> show<00:32:45.040> like<00:32:45.200> let's<00:32:45.400> do" + }, + { + "start": 1966.87, + "duration": 0.0, + "text": "I can even show like let's do" + }, + { + "start": 1966.88, + "duration": 0.0, + "text": "I can even show like let's do radbg<00:32:47.400> markup<00:32:48.040> to<00:32:48.200> I<00:32:48.240> don't<00:32:48.400> have<00:32:48.680> it." + }, + { + "start": 1969.75, + "duration": 0.0, + "text": "radbg markup to I don't have it." + }, + { + "start": 1969.76, + "duration": 0.0, + "text": "radbg markup to I don't have it. Uh<00:32:49.960> markup.h,<00:32:50.680> yeah." + }, + { + "start": 1971.75, + "duration": 0.0, + "text": "Uh markup.h, yeah." + }, + { + "start": 1971.76, + "duration": 0.0, + "text": "Uh markup.h, yeah. If<00:32:51.880> we<00:32:52.080> look<00:32:52.440> at<00:32:52.600> like<00:32:52.840> what<00:32:53.000> this<00:32:53.160> thing<00:32:53.320> would" + }, + { + "start": 1973.43, + "duration": 0.0, + "text": "If we look at like what this thing would" + }, + { + "start": 1973.44, + "duration": 0.0, + "text": "If we look at like what this thing would actually<00:32:53.720> be<00:32:53.920> like<00:32:54.280> uh<00:32:54.800> entry<00:32:55.120> point," + }, + { + "start": 1976.75, + "duration": 0.0, + "text": "actually be like uh entry point," + }, + { + "start": 1976.76, + "duration": 0.0, + "text": "actually be like uh entry point, you<00:32:56.800> can<00:32:56.920> see<00:32:57.080> what<00:32:57.280> this<00:32:57.440> macro<00:32:57.800> actually" + }, + { + "start": 1978.07, + "duration": 0.0, + "text": "you can see what this macro actually" + }, + { + "start": 1978.08, + "duration": 0.0, + "text": "you can see what this macro actually does<00:32:58.520> is<00:32:58.840> it<00:32:59.000> says<00:32:59.240> radbg<00:33:00.160> exec<00:33:00.520> data,<00:33:00.800> which<00:33:00.960> I" + }, + { + "start": 1981.03, + "duration": 0.0, + "text": "does is it says radbg exec data, which I" + }, + { + "start": 1981.04, + "duration": 0.0, + "text": "does is it says radbg exec data, which I can<00:33:01.120> explain<00:33:01.400> what<00:33:01.480> that<00:33:01.720> is.<00:33:02.240> And<00:33:02.360> then<00:33:02.440> it's" + }, + { + "start": 1982.55, + "duration": 0.0, + "text": "can explain what that is. And then it's" + }, + { + "start": 1982.56, + "duration": 0.0, + "text": "can explain what that is. And then it's a<00:33:02.640> character<00:33:03.720> a<00:33:03.800> character<00:33:04.240> array,<00:33:04.520> so" + }, + { + "start": 1984.67, + "duration": 0.0, + "text": "a character a character array, so" + }, + { + "start": 1984.68, + "duration": 0.0, + "text": "a character a character array, so generates<00:33:05.360> uh<00:33:05.720> a<00:33:05.800> name<00:33:06.120> here<00:33:06.640> using<00:33:06.920> this" + }, + { + "start": 1987.03, + "duration": 0.0, + "text": "generates uh a name here using this" + }, + { + "start": 1987.04, + "duration": 0.0, + "text": "generates uh a name here using this thing,<00:33:07.240> but<00:33:07.360> it's<00:33:07.440> a<00:33:07.520> character<00:33:07.920> array,<00:33:08.800> has" + }, + { + "start": 1988.99, + "duration": 0.0, + "text": "thing, but it's a character array, has" + }, + { + "start": 1989.0, + "duration": 0.0, + "text": "thing, but it's a character array, has some<00:33:09.200> ID,<00:33:09.960> and<00:33:10.080> then<00:33:10.200> it<00:33:10.320> sticks<00:33:10.640> in<00:33:11.360> entry" + }, + { + "start": 1991.67, + "duration": 0.0, + "text": "some ID, and then it sticks in entry" + }, + { + "start": 1991.68, + "duration": 0.0, + "text": "some ID, and then it sticks in entry point<00:33:12.000> colon<00:33:12.400> and<00:33:12.480> then<00:33:12.640> whatever<00:33:12.880> the" + }, + { + "start": 1992.99, + "duration": 0.0, + "text": "point colon and then whatever the" + }, + { + "start": 1993.0, + "duration": 0.0, + "text": "point colon and then whatever the arguments<00:33:13.400> were<00:33:13.840> as<00:33:14.040> a<00:33:14.080> string<00:33:14.360> literal." + }, + { + "start": 1995.71, + "duration": 0.0, + "text": "arguments were as a string literal." + }, + { + "start": 1995.72, + "duration": 0.0, + "text": "arguments were as a string literal. Uh<00:33:15.960> so,<00:33:16.680> that<00:33:16.920> actually<00:33:17.160> gets<00:33:17.320> baked<00:33:17.560> into" + }, + { + "start": 1998.03, + "duration": 0.0, + "text": "Uh so, that actually gets baked into" + }, + { + "start": 1998.04, + "duration": 0.0, + "text": "Uh so, that actually gets baked into this<00:33:18.320> radbg<00:33:18.840> exec<00:33:19.200> data<00:33:19.520> thing.<00:33:20.440> That" + }, + { + "start": 2000.59, + "duration": 0.0, + "text": "this radbg exec data thing. That" + }, + { + "start": 2000.6, + "duration": 0.0, + "text": "this radbg exec data thing. That actually<00:33:21.320> tells<00:33:22.160> this<00:33:22.640> uh<00:33:22.720> tells<00:33:22.920> the<00:33:23.000> C" + }, + { + "start": 2003.07, + "duration": 0.0, + "text": "actually tells this uh tells the C" + }, + { + "start": 2003.08, + "duration": 0.0, + "text": "actually tells this uh tells the C compiler<00:33:23.480> to<00:33:23.600> stick<00:33:23.800> this<00:33:23.960> into<00:33:24.200> a<00:33:24.240> custom" + }, + { + "start": 2004.59, + "duration": 0.0, + "text": "compiler to stick this into a custom" + }, + { + "start": 2004.6, + "duration": 0.0, + "text": "compiler to stick this into a custom expression." + }, + { + "start": 2006.03, + "duration": 0.0, + "text": "expression." + }, + { + "start": 2006.04, + "duration": 0.0, + "text": "expression. Uh<00:33:26.200> or<00:33:26.320> sorry,<00:33:26.560> not<00:33:26.760> not<00:33:26.880> expression,<00:33:27.400> a" + }, + { + "start": 2007.47, + "duration": 0.0, + "text": "Uh or sorry, not not expression, a" + }, + { + "start": 2007.48, + "duration": 0.0, + "text": "Uh or sorry, not not expression, a custom<00:33:27.800> section.<00:33:28.920> And<00:33:29.560> uh<00:33:29.760> we<00:33:29.880> can<00:33:30.000> see<00:33:30.480> that" + }, + { + "start": 2011.15, + "duration": 0.0, + "text": "custom section. And uh we can see that" + }, + { + "start": 2011.16, + "duration": 0.0, + "text": "custom section. And uh we can see that uh" + }, + { + "start": 2012.03, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2012.04, + "duration": 0.0, + "text": "uh radbg<00:33:32.520> exec<00:33:32.920> data<00:33:33.560> is<00:33:33.720> right<00:33:33.880> here<00:33:34.040> specified" + }, + { + "start": 2014.55, + "duration": 0.0, + "text": "radbg exec data is right here specified" + }, + { + "start": 2014.56, + "duration": 0.0, + "text": "radbg exec data is right here specified as<00:33:35.000> we<00:33:35.080> have<00:33:35.840> uh<00:33:35.920> we<00:33:36.080> tell<00:33:36.400> basically<00:33:36.720> the" + }, + { + "start": 2016.79, + "duration": 0.0, + "text": "as we have uh we tell basically the" + }, + { + "start": 2016.8, + "duration": 0.0, + "text": "as we have uh we tell basically the compiler,<00:33:37.160> \"Hey,<00:33:37.280> I<00:33:37.320> need<00:33:37.480> a<00:33:37.520> section" + }, + { + "start": 2018.79, + "duration": 0.0, + "text": "compiler, \"Hey, I need a section" + }, + { + "start": 2018.8, + "duration": 0.0, + "text": "compiler, \"Hey, I need a section uh<00:33:39.000> .radbg<00:33:39.800> needs<00:33:40.000> to<00:33:40.080> be<00:33:40.200> readable<00:33:40.520> and" + }, + { + "start": 2020.59, + "duration": 0.0, + "text": "uh .radbg needs to be readable and" + }, + { + "start": 2020.6, + "duration": 0.0, + "text": "uh .radbg needs to be readable and writable.\"<00:33:41.440> And<00:33:41.560> then<00:33:42.120> radbg<00:33:42.560> exec<00:33:43.080> data<00:33:43.520> is" + }, + { + "start": 2023.67, + "duration": 0.0, + "text": "writable.\" And then radbg exec data is" + }, + { + "start": 2023.68, + "duration": 0.0, + "text": "writable.\" And then radbg exec data is just<00:33:43.840> a<00:33:43.880> declspec.<00:33:44.840> This<00:33:45.040> is<00:33:45.160> for<00:33:45.560> MSVC<00:33:45.960> and" + }, + { + "start": 2026.07, + "duration": 0.0, + "text": "just a declspec. This is for MSVC and" + }, + { + "start": 2026.08, + "duration": 0.0, + "text": "just a declspec. This is for MSVC and Clang<00:33:46.320> on<00:33:46.440> Windows,<00:33:46.840> but<00:33:46.960> you<00:33:47.040> can<00:33:47.120> do" + }, + { + "start": 2027.23, + "duration": 0.0, + "text": "Clang on Windows, but you can do" + }, + { + "start": 2027.24, + "duration": 0.0, + "text": "Clang on Windows, but you can do equivalent<00:33:47.640> things<00:33:47.880> on<00:33:48.200> on<00:33:48.480> the<00:33:48.560> other" + }, + { + "start": 2028.67, + "duration": 0.0, + "text": "equivalent things on on the other" + }, + { + "start": 2028.68, + "duration": 0.0, + "text": "equivalent things on on the other compilers.<00:33:49.640> Hey,<00:33:49.800> declspec,<00:33:50.360> make<00:33:50.520> sure<00:33:50.760> when" + }, + { + "start": 2030.87, + "duration": 0.0, + "text": "compilers. Hey, declspec, make sure when" + }, + { + "start": 2030.88, + "duration": 0.0, + "text": "compilers. Hey, declspec, make sure when you<00:33:51.000> allocate<00:33:51.360> this<00:33:51.480> global<00:33:51.720> variable<00:33:52.240> that" + }, + { + "start": 2032.39, + "duration": 0.0, + "text": "you allocate this global variable that" + }, + { + "start": 2032.4, + "duration": 0.0, + "text": "you allocate this global variable that you<00:33:52.480> put<00:33:52.640> it<00:33:52.760> inside<00:33:53.120> of<00:33:53.200> the<00:33:53.280> .radbg<00:33:54.000> section." + }, + { + "start": 2034.35, + "duration": 0.0, + "text": "you put it inside of the .radbg section." + }, + { + "start": 2034.36, + "duration": 0.0, + "text": "you put it inside of the .radbg section. That's<00:33:54.520> all<00:33:54.640> that<00:33:54.880> radbg<00:33:55.320> exec<00:33:55.680> data<00:33:55.960> is,<00:33:56.320> so" + }, + { + "start": 2036.47, + "duration": 0.0, + "text": "That's all that radbg exec data is, so" + }, + { + "start": 2036.48, + "duration": 0.0, + "text": "That's all that radbg exec data is, so it<00:33:56.600> sticks<00:33:56.880> that<00:33:57.120> info<00:33:57.560> into<00:33:57.800> the<00:33:57.880> executable." + }, + { + "start": 2038.87, + "duration": 0.0, + "text": "it sticks that info into the executable." + }, + { + "start": 2038.88, + "duration": 0.0, + "text": "it sticks that info into the executable. And<00:33:59.000> as<00:33:59.080> a<00:33:59.120> consequence," + }, + { + "start": 2040.67, + "duration": 0.0, + "text": "And as a consequence," + }, + { + "start": 2040.68, + "duration": 0.0, + "text": "And as a consequence, uh<00:34:00.840> the<00:34:00.920> debugger,<00:34:01.360> when<00:34:01.480> it<00:34:01.600> loads<00:34:01.800> your" + }, + { + "start": 2041.87, + "duration": 0.0, + "text": "uh the debugger, when it loads your" + }, + { + "start": 2041.88, + "duration": 0.0, + "text": "uh the debugger, when it loads your program,<00:34:02.240> can<00:34:02.400> know,<00:34:02.920> \"Hey,<00:34:03.200> the<00:34:03.280> entry<00:34:03.520> point" + }, + { + "start": 2043.71, + "duration": 0.0, + "text": "program, can know, \"Hey, the entry point" + }, + { + "start": 2043.72, + "duration": 0.0, + "text": "program, can know, \"Hey, the entry point is<00:34:03.800> actually<00:34:04.080> here.\"" + }, + { + "start": 2045.59, + "duration": 0.0, + "text": "is actually here.\"" + }, + { + "start": 2045.6, + "duration": 0.0, + "text": "is actually here.\" Um" + }, + { + "start": 2046.63, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2046.64, + "duration": 0.0, + "text": "Um So,<00:34:06.960> there's<00:34:07.160> other<00:34:07.480> kinds<00:34:07.760> of<00:34:08.159> interop<00:34:08.639> that" + }, + { + "start": 2048.79, + "duration": 0.0, + "text": "So, there's other kinds of interop that" + }, + { + "start": 2048.8, + "duration": 0.0, + "text": "So, there's other kinds of interop that your<00:34:08.919> program<00:34:09.240> can<00:34:09.360> do<00:34:09.520> with<00:34:09.679> the<00:34:09.720> debugger." + }, + { + "start": 2050.03, + "duration": 0.0, + "text": "your program can do with the debugger." + }, + { + "start": 2050.04, + "duration": 0.0, + "text": "your program can do with the debugger. You<00:34:10.120> can<00:34:10.240> see<00:34:10.399> a<00:34:10.440> few<00:34:10.639> of<00:34:10.720> them<00:34:10.879> right<00:34:11.080> here.<00:34:11.960> Um" + }, + { + "start": 2052.11, + "duration": 0.0, + "text": "You can see a few of them right here. Um" + }, + { + "start": 2052.12, + "duration": 0.0, + "text": "You can see a few of them right here. Um so,<00:34:12.240> by<00:34:12.399> default,<00:34:12.840> your<00:34:12.960> threads<00:34:13.240> will<00:34:13.320> just" + }, + { + "start": 2053.47, + "duration": 0.0, + "text": "so, by default, your threads will just" + }, + { + "start": 2053.48, + "duration": 0.0, + "text": "so, by default, your threads will just be<00:34:13.560> colored<00:34:13.840> with<00:34:13.960> this<00:34:14.080> like<00:34:14.240> little<00:34:14.440> yellow" + }, + { + "start": 2054.75, + "duration": 0.0, + "text": "be colored with this like little yellow" + }, + { + "start": 2054.76, + "duration": 0.0, + "text": "be colored with this like little yellow color.<00:34:15.600> Um" + }, + { + "start": 2056.31, + "duration": 0.0, + "text": "color. Um" + }, + { + "start": 2056.32, + "duration": 0.0, + "text": "color. Um but<00:34:16.440> if<00:34:16.560> I<00:34:16.639> want<00:34:16.800> to<00:34:16.879> And<00:34:17.120> also,<00:34:17.480> it'll<00:34:17.679> just" + }, + { + "start": 2058.31, + "duration": 0.0, + "text": "but if I want to And also, it'll just" + }, + { + "start": 2058.32, + "duration": 0.0, + "text": "but if I want to And also, it'll just the<00:34:18.440> debugger<00:34:18.760> assumes<00:34:19.120> this<00:34:19.240> thing<00:34:19.399> is<00:34:19.520> the" + }, + { + "start": 2059.59, + "duration": 0.0, + "text": "the debugger assumes this thing is the" + }, + { + "start": 2059.6, + "duration": 0.0, + "text": "the debugger assumes this thing is the main<00:34:19.840> thread<00:34:20.159> cuz<00:34:20.320> it<00:34:20.480> I<00:34:20.560> mean,<00:34:20.720> it<00:34:20.800> is<00:34:20.919> the" + }, + { + "start": 2060.99, + "duration": 0.0, + "text": "main thread cuz it I mean, it is the" + }, + { + "start": 2061.0, + "duration": 0.0, + "text": "main thread cuz it I mean, it is the main<00:34:21.159> thread,<00:34:21.399> but<00:34:21.520> it'll<00:34:21.679> just<00:34:21.919> name<00:34:22.159> it<00:34:22.360> main" + }, + { + "start": 2062.59, + "duration": 0.0, + "text": "main thread, but it'll just name it main" + }, + { + "start": 2062.6, + "duration": 0.0, + "text": "main thread, but it'll just name it main thread.<00:34:23.320> But<00:34:23.399> if<00:34:23.480> you<00:34:23.560> wanted<00:34:23.760> to<00:34:23.840> have<00:34:23.919> a" + }, + { + "start": 2063.95, + "duration": 0.0, + "text": "thread. But if you wanted to have a" + }, + { + "start": 2063.96, + "duration": 0.0, + "text": "thread. But if you wanted to have a custom<00:34:24.280> name,<00:34:24.480> you<00:34:24.520> could<00:34:24.639> say,<00:34:24.800> \"Hey,<00:34:25.399> uh" + }, + { + "start": 2065.47, + "duration": 0.0, + "text": "custom name, you could say, \"Hey, uh" + }, + { + "start": 2065.48, + "duration": 0.0, + "text": "custom name, you could say, \"Hey, uh radbg<00:34:25.960> thread<00:34:26.240> name.\"" + }, + { + "start": 2067.31, + "duration": 0.0, + "text": "radbg thread name.\"" + }, + { + "start": 2067.32, + "duration": 0.0, + "text": "radbg thread name.\" Um<00:34:27.679> right<00:34:27.879> there,<00:34:28.080> and<00:34:28.320> and<00:34:28.560> that's<00:34:28.720> going<00:34:28.840> to" + }, + { + "start": 2068.909, + "duration": 0.0, + "text": "Um right there, and and that's going to" + }, + { + "start": 2068.919, + "duration": 0.0, + "text": "Um right there, and and that's going to be<00:34:29.000> mule<00:34:29.280> main<00:34:29.520> thread,<00:34:29.800> and<00:34:29.879> that<00:34:30.040> shows<00:34:30.280> up" + }, + { + "start": 2070.59, + "duration": 0.0, + "text": "be mule main thread, and that shows up" + }, + { + "start": 2070.6, + "duration": 0.0, + "text": "be mule main thread, and that shows up here.<00:34:30.960> And<00:34:31.080> then<00:34:31.159> if<00:34:31.280> I<00:34:31.360> want<00:34:31.560> to<00:34:31.679> color<00:34:32.000> this" + }, + { + "start": 2072.149, + "duration": 0.0, + "text": "here. And then if I want to color this" + }, + { + "start": 2072.159, + "duration": 0.0, + "text": "here. And then if I want to color this thread<00:34:32.399> a<00:34:32.440> specific<00:34:32.879> way,<00:34:33.120> I<00:34:33.200> can<00:34:33.480> I<00:34:33.560> can<00:34:33.720> do" + }, + { + "start": 2073.83, + "duration": 0.0, + "text": "thread a specific way, I can I can do" + }, + { + "start": 2073.84, + "duration": 0.0, + "text": "thread a specific way, I can I can do that<00:34:34.159> also<00:34:34.879> with<00:34:35.040> this<00:34:35.200> markup<00:34:35.560> stuff.<00:34:36.320> And<00:34:36.440> so" + }, + { + "start": 2076.669, + "duration": 0.0, + "text": "that also with this markup stuff. And so" + }, + { + "start": 2076.679, + "duration": 0.0, + "text": "that also with this markup stuff. And so when<00:34:36.800> I<00:34:36.840> step<00:34:37.080> over<00:34:37.200> that,<00:34:37.440> it'll<00:34:37.840> color<00:34:38.120> my" + }, + { + "start": 2078.23, + "duration": 0.0, + "text": "when I step over that, it'll color my" + }, + { + "start": 2078.24, + "duration": 0.0, + "text": "when I step over that, it'll color my thread." + }, + { + "start": 2079.79, + "duration": 0.0, + "text": "thread." + }, + { + "start": 2079.8, + "duration": 0.0, + "text": "thread. Um" + }, + { + "start": 2081.59, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2081.6, + "duration": 0.0, + "text": "Um And<00:34:41.720> then<00:34:42.480> there's<00:34:42.679> other<00:34:42.840> stuff,<00:34:43.040> too.<00:34:43.280> So" + }, + { + "start": 2084.878, + "duration": 0.0, + "text": "And then there's other stuff, too. So" + }, + { + "start": 2084.888, + "duration": 0.0, + "text": "And then there's other stuff, too. So >> [clears throat]" + }, + { + "start": 2084.99, + "duration": 0.0, + "text": ">> [clears throat]" + }, + { + "start": 2085.0, + "duration": 0.0, + "text": ">> [clears throat] >> um" + }, + { + "start": 2087.509, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 2087.59, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 2087.6, + "duration": 0.0, + "text": ">> [snorts] >> For<00:34:47.760> example,<00:34:48.560> if<00:34:48.720> I<00:34:48.800> go<00:34:48.960> down<00:34:49.560> to" + }, + { + "start": 2090.75, + "duration": 0.0, + "text": ">> For example, if I go down to" + }, + { + "start": 2090.76, + "duration": 0.0, + "text": ">> For example, if I go down to uh" + }, + { + "start": 2091.669, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2091.679, + "duration": 0.0, + "text": "uh Let<00:34:51.760> me<00:34:51.879> look<00:34:52.120> at" + }, + { + "start": 2093.51, + "duration": 0.0, + "text": "Let me look at" + }, + { + "start": 2093.52, + "duration": 0.0, + "text": "Let me look at where<00:34:53.760> what<00:34:53.960> example<00:34:54.360> am<00:34:54.440> I<00:34:54.480> looking<00:34:54.760> for?<00:34:55.360> Uh" + }, + { + "start": 2095.51, + "duration": 0.0, + "text": "where what example am I looking for? Uh" + }, + { + "start": 2095.52, + "duration": 0.0, + "text": "where what example am I looking for? Uh dynamic<00:34:56.000> array." + }, + { + "start": 2097.23, + "duration": 0.0, + "text": "dynamic array." + }, + { + "start": 2097.24, + "duration": 0.0, + "text": "dynamic array. So<00:34:57.320> dynamic<00:34:57.840> array,<00:34:58.160> if<00:34:58.320> we<00:34:58.440> look<00:34:58.680> at<00:34:58.840> what" + }, + { + "start": 2099.11, + "duration": 0.0, + "text": "So dynamic array, if we look at what" + }, + { + "start": 2099.12, + "duration": 0.0, + "text": "So dynamic array, if we look at what this<00:34:59.440> type<00:34:59.760> is,<00:35:00.000> this<00:35:00.160> is<00:35:00.280> a<00:35:00.320> structure." + }, + { + "start": 2101.63, + "duration": 0.0, + "text": "this type is, this is a structure." + }, + { + "start": 2101.64, + "duration": 0.0, + "text": "this type is, this is a structure. Right?<00:35:01.880> And<00:35:02.000> this<00:35:02.120> structure<00:35:02.480> has<00:35:02.640> a<00:35:02.720> pointer" + }, + { + "start": 2103.87, + "duration": 0.0, + "text": "Right? And this structure has a pointer" + }, + { + "start": 2103.88, + "duration": 0.0, + "text": "Right? And this structure has a pointer to<00:35:04.480> a<00:35:04.560> pair" + }, + { + "start": 2105.67, + "duration": 0.0, + "text": "to a pair" + }, + { + "start": 2105.68, + "duration": 0.0, + "text": "to a pair and<00:35:05.800> it<00:35:05.880> has<00:35:06.040> a<00:35:06.080> count." + }, + { + "start": 2107.07, + "duration": 0.0, + "text": "and it has a count." + }, + { + "start": 2107.08, + "duration": 0.0, + "text": "and it has a count. So<00:35:07.240> like<00:35:07.920> usual<00:35:08.280> C<00:35:08.400> programs,<00:35:09.160> you<00:35:09.240> know,<00:35:09.360> if" + }, + { + "start": 2109.47, + "duration": 0.0, + "text": "So like usual C programs, you know, if" + }, + { + "start": 2109.48, + "duration": 0.0, + "text": "So like usual C programs, you know, if you<00:35:09.680> if<00:35:09.840> you<00:35:09.920> want<00:35:10.040> to<00:35:10.120> have<00:35:10.200> a<00:35:10.240> slice<00:35:10.640> type," + }, + { + "start": 2110.91, + "duration": 0.0, + "text": "you if you want to have a slice type," + }, + { + "start": 2110.92, + "duration": 0.0, + "text": "you if you want to have a slice type, you<00:35:11.000> need<00:35:11.120> a<00:35:11.200> pointer<00:35:11.520> and<00:35:11.600> a<00:35:11.640> size<00:35:12.080> or<00:35:12.400> you" + }, + { + "start": 2112.47, + "duration": 0.0, + "text": "you need a pointer and a size or you" + }, + { + "start": 2112.48, + "duration": 0.0, + "text": "you need a pointer and a size or you know,<00:35:12.560> two<00:35:12.760> pointers<00:35:13.160> that<00:35:13.280> form<00:35:13.520> a<00:35:13.840> that<00:35:13.960> form" + }, + { + "start": 2114.11, + "duration": 0.0, + "text": "know, two pointers that form a that form" + }, + { + "start": 2114.12, + "duration": 0.0, + "text": "know, two pointers that form a that form a<00:35:14.200> range<00:35:14.520> in<00:35:14.640> memory<00:35:14.920> or<00:35:15.000> whatever." + }, + { + "start": 2116.23, + "duration": 0.0, + "text": "a range in memory or whatever." + }, + { + "start": 2116.24, + "duration": 0.0, + "text": "a range in memory or whatever. Um<00:35:16.800> and<00:35:16.880> this<00:35:17.040> is<00:35:17.120> just<00:35:17.440> how<00:35:17.680> you<00:35:17.840> encode<00:35:18.200> a" + }, + { + "start": 2118.23, + "duration": 0.0, + "text": "Um and this is just how you encode a" + }, + { + "start": 2118.24, + "duration": 0.0, + "text": "Um and this is just how you encode a dynamic<00:35:18.720> array<00:35:19.160> inside<00:35:19.600> of<00:35:19.760> like<00:35:19.960> the<00:35:20.080> regular" + }, + { + "start": 2120.95, + "duration": 0.0, + "text": "dynamic array inside of like the regular" + }, + { + "start": 2120.96, + "duration": 0.0, + "text": "dynamic array inside of like the regular kind<00:35:21.160> of<00:35:21.600> uh<00:35:21.720> bare-bones<00:35:22.520> C<00:35:23.120> type<00:35:23.320> system." + }, + { + "start": 2124.55, + "duration": 0.0, + "text": "kind of uh bare-bones C type system." + }, + { + "start": 2124.56, + "duration": 0.0, + "text": "kind of uh bare-bones C type system. And<00:35:24.640> then<00:35:24.760> generally<00:35:25.160> if<00:35:25.280> you<00:35:25.560> visualize<00:35:26.000> this" + }, + { + "start": 2126.15, + "duration": 0.0, + "text": "And then generally if you visualize this" + }, + { + "start": 2126.16, + "duration": 0.0, + "text": "And then generally if you visualize this in<00:35:26.280> a<00:35:26.320> debugger,<00:35:27.120> what<00:35:27.280> you'll<00:35:27.400> see<00:35:28.280> is<00:35:28.960> um" + }, + { + "start": 2129.95, + "duration": 0.0, + "text": "in a debugger, what you'll see is um" + }, + { + "start": 2129.96, + "duration": 0.0, + "text": "in a debugger, what you'll see is um I'll<00:35:30.160> have<00:35:30.280> to<00:35:30.360> use<00:35:30.520> this<00:35:30.720> raw<00:35:30.960> thing,<00:35:31.720> this" + }, + { + "start": 2131.95, + "duration": 0.0, + "text": "I'll have to use this raw thing, this" + }, + { + "start": 2131.96, + "duration": 0.0, + "text": "I'll have to use this raw thing, this raw<00:35:32.520> view,<00:35:32.800> which<00:35:32.960> basically<00:35:33.200> turns<00:35:33.480> off<00:35:33.680> all" + }, + { + "start": 2133.79, + "duration": 0.0, + "text": "raw view, which basically turns off all" + }, + { + "start": 2133.8, + "duration": 0.0, + "text": "raw view, which basically turns off all the<00:35:33.880> special<00:35:34.160> views,<00:35:34.680> which<00:35:34.840> I'll<00:35:35.040> get<00:35:35.200> to<00:35:35.320> in" + }, + { + "start": 2135.39, + "duration": 0.0, + "text": "the special views, which I'll get to in" + }, + { + "start": 2135.4, + "duration": 0.0, + "text": "the special views, which I'll get to in a<00:35:35.440> second.<00:35:35.760> But<00:35:36.200> this<00:35:36.360> is<00:35:36.480> what<00:35:36.600> you<00:35:36.680> would" + }, + { + "start": 2136.79, + "duration": 0.0, + "text": "a second. But this is what you would" + }, + { + "start": 2136.8, + "duration": 0.0, + "text": "a second. But this is what you would normally<00:35:37.160> see<00:35:37.400> when<00:35:37.560> you<00:35:37.680> visualize<00:35:38.120> this" + }, + { + "start": 2138.23, + "duration": 0.0, + "text": "normally see when you visualize this" + }, + { + "start": 2138.24, + "duration": 0.0, + "text": "normally see when you visualize this thing<00:35:38.400> in<00:35:38.480> a<00:35:38.520> debugger.<00:35:38.920> It's<00:35:39.040> like,<00:35:39.200> \"Hey," + }, + { + "start": 2139.39, + "duration": 0.0, + "text": "thing in a debugger. It's like, \"Hey," + }, + { + "start": 2139.4, + "duration": 0.0, + "text": "thing in a debugger. It's like, \"Hey, it's<00:35:39.600> a<00:35:39.640> struct<00:35:40.040> with<00:35:40.160> two<00:35:40.320> members.<00:35:40.680> One's<00:35:40.880> a" + }, + { + "start": 2140.91, + "duration": 0.0, + "text": "it's a struct with two members. One's a" + }, + { + "start": 2140.92, + "duration": 0.0, + "text": "it's a struct with two members. One's a pointer<00:35:41.360> to<00:35:41.960> some<00:35:42.240> number<00:35:42.560> of<00:35:42.680> pairs<00:35:42.960> we<00:35:43.040> don't" + }, + { + "start": 2143.23, + "duration": 0.0, + "text": "pointer to some number of pairs we don't" + }, + { + "start": 2143.24, + "duration": 0.0, + "text": "pointer to some number of pairs we don't know,<00:35:43.480> but<00:35:43.840> we<00:35:43.960> can<00:35:44.080> only<00:35:44.240> assume<00:35:44.600> one<00:35:44.920> really" + }, + { + "start": 2145.67, + "duration": 0.0, + "text": "know, but we can only assume one really" + }, + { + "start": 2145.68, + "duration": 0.0, + "text": "know, but we can only assume one really in<00:35:45.880> general.\"<00:35:46.880> And<00:35:46.920> then<00:35:47.040> this<00:35:47.200> integer" + }, + { + "start": 2147.63, + "duration": 0.0, + "text": "in general.\" And then this integer" + }, + { + "start": 2147.64, + "duration": 0.0, + "text": "in general.\" And then this integer called<00:35:47.920> count<00:35:48.320> with<00:35:48.880> with<00:35:49.120> a<00:35:49.240> size<00:35:50.000> or<00:35:50.440> with<00:35:50.600> a" + }, + { + "start": 2150.63, + "duration": 0.0, + "text": "called count with with a size or with a" + }, + { + "start": 2150.64, + "duration": 0.0, + "text": "called count with with a size or with a value<00:35:50.920> of<00:35:51.040> six." + }, + { + "start": 2152.15, + "duration": 0.0, + "text": "value of six." + }, + { + "start": 2152.16, + "duration": 0.0, + "text": "value of six. Um<00:35:52.360> but<00:35:52.520> obviously<00:35:53.000> what<00:35:53.120> this<00:35:53.280> is<00:35:53.400> encoding" + }, + { + "start": 2154.47, + "duration": 0.0, + "text": "Um but obviously what this is encoding" + }, + { + "start": 2154.48, + "duration": 0.0, + "text": "Um but obviously what this is encoding um<00:35:55.000> and<00:35:55.280> what<00:35:55.480> the<00:35:55.640> name<00:35:55.880> should<00:35:56.040> imply<00:35:56.360> is" + }, + { + "start": 2156.43, + "duration": 0.0, + "text": "um and what the name should imply is" + }, + { + "start": 2156.44, + "duration": 0.0, + "text": "um and what the name should imply is that,<00:35:56.600> \"Hey,<00:35:56.840> this<00:35:57.040> is<00:35:57.240> six<00:35:57.680> of<00:35:57.840> these<00:35:58.040> pairs" + }, + { + "start": 2158.63, + "duration": 0.0, + "text": "that, \"Hey, this is six of these pairs" + }, + { + "start": 2158.64, + "duration": 0.0, + "text": "that, \"Hey, this is six of these pairs that<00:35:58.840> we're<00:35:58.920> pointing<00:35:59.320> to.\"" + }, + { + "start": 2161.39, + "duration": 0.0, + "text": "that we're pointing to.\"" + }, + { + "start": 2161.4, + "duration": 0.0, + "text": "that we're pointing to.\" And<00:36:01.520> so<00:36:01.640> what<00:36:01.760> we<00:36:01.840> can<00:36:01.960> actually<00:36:02.240> do<00:36:02.680> is<00:36:03.160> um" + }, + { + "start": 2164.15, + "duration": 0.0, + "text": "And so what we can actually do is um" + }, + { + "start": 2164.16, + "duration": 0.0, + "text": "And so what we can actually do is um uh<00:36:04.320> if<00:36:04.440> we<00:36:04.560> go" + }, + { + "start": 2167.68, + "duration": 0.0, + "text": "look<00:36:08.080> at<00:36:08.200> more<00:36:08.400> of<00:36:08.480> the<00:36:08.560> markup<00:36:08.920> in<00:36:09.000> this<00:36:09.440> in" + }, + { + "start": 2169.55, + "duration": 0.0, + "text": "look at more of the markup in this in" + }, + { + "start": 2169.56, + "duration": 0.0, + "text": "look at more of the markup in this in this<00:36:10.080> um<00:36:10.400> file,<00:36:10.760> we<00:36:10.840> can<00:36:10.960> see,<00:36:11.560> \"Hey,<00:36:11.680> here's" + }, + { + "start": 2171.91, + "duration": 0.0, + "text": "this um file, we can see, \"Hey, here's" + }, + { + "start": 2171.92, + "duration": 0.0, + "text": "this um file, we can see, \"Hey, here's my<00:36:12.040> structure.<00:36:13.080> Uh<00:36:13.200> it's<00:36:13.360> dynamic<00:36:13.760> array," + }, + { + "start": 2174.23, + "duration": 0.0, + "text": "my structure. Uh it's dynamic array," + }, + { + "start": 2174.24, + "duration": 0.0, + "text": "my structure. Uh it's dynamic array, pair<00:36:14.480> pointer,<00:36:15.280> and<00:36:15.560> int.\"" + }, + { + "start": 2177.27, + "duration": 0.0, + "text": "pair pointer, and int.\"" + }, + { + "start": 2177.28, + "duration": 0.0, + "text": "pair pointer, and int.\" And<00:36:18.000> right<00:36:18.200> here<00:36:18.440> I<00:36:18.480> just<00:36:18.680> say,<00:36:18.840> \"Hey,<00:36:19.600> I<00:36:19.720> want" + }, + { + "start": 2179.91, + "duration": 0.0, + "text": "And right here I just say, \"Hey, I want" + }, + { + "start": 2179.92, + "duration": 0.0, + "text": "And right here I just say, \"Hey, I want to<00:36:20.000> form<00:36:20.280> a<00:36:20.320> special<00:36:20.680> kind<00:36:20.840> of<00:36:20.920> view<00:36:21.240> that's" + }, + { + "start": 2181.43, + "duration": 0.0, + "text": "to form a special kind of view that's" + }, + { + "start": 2181.44, + "duration": 0.0, + "text": "to form a special kind of view that's associated<00:36:22.160> with<00:36:22.280> this<00:36:22.480> type" + }, + { + "start": 2183.43, + "duration": 0.0, + "text": "associated with this type" + }, + { + "start": 2183.44, + "duration": 0.0, + "text": "associated with this type uh<00:36:23.520> for<00:36:24.000> for<00:36:24.160> the<00:36:24.280> Render<00:36:24.480> Debugger.\"<00:36:24.720> So<00:36:24.840> it's" + }, + { + "start": 2184.91, + "duration": 0.0, + "text": "uh for for the Render Debugger.\" So it's" + }, + { + "start": 2184.92, + "duration": 0.0, + "text": "uh for for the Render Debugger.\" So it's a<00:36:24.960> Render<00:36:25.160> Debugger<00:36:25.400> type<00:36:25.640> view.<00:36:26.360> I<00:36:26.480> put<00:36:26.680> in" + }, + { + "start": 2186.75, + "duration": 0.0, + "text": "a Render Debugger type view. I put in" + }, + { + "start": 2186.76, + "duration": 0.0, + "text": "a Render Debugger type view. I put in the<00:36:26.840> name<00:36:27.040> of<00:36:27.120> the<00:36:27.200> type,<00:36:27.720> and<00:36:27.800> then<00:36:27.920> I<00:36:28.000> put<00:36:28.280> in" + }, + { + "start": 2189.03, + "duration": 0.0, + "text": "the name of the type, and then I put in" + }, + { + "start": 2189.04, + "duration": 0.0, + "text": "the name of the type, and then I put in the<00:36:29.240> expression<00:36:29.880> that<00:36:30.000> I'd<00:36:30.120> like<00:36:30.320> to" + }, + { + "start": 2190.39, + "duration": 0.0, + "text": "the expression that I'd like to" + }, + { + "start": 2190.4, + "duration": 0.0, + "text": "the expression that I'd like to visualize<00:36:31.520> instances<00:36:32.040> of<00:36:32.120> this<00:36:32.280> type<00:36:32.520> as.<00:36:33.320> So," + }, + { + "start": 2193.43, + "duration": 0.0, + "text": "visualize instances of this type as. So," + }, + { + "start": 2193.44, + "duration": 0.0, + "text": "visualize instances of this type as. So, in<00:36:33.480> this<00:36:33.640> case,<00:36:33.920> and<00:36:34.120> this<00:36:34.280> dollar<00:36:34.560> sign<00:36:35.080> is" + }, + { + "start": 2195.23, + "duration": 0.0, + "text": "in this case, and this dollar sign is" + }, + { + "start": 2195.24, + "duration": 0.0, + "text": "in this case, and this dollar sign is just<00:36:35.480> used<00:36:35.880> to<00:36:36.120> refer<00:36:36.520> to" + }, + { + "start": 2197.59, + "duration": 0.0, + "text": "just used to refer to" + }, + { + "start": 2197.6, + "duration": 0.0, + "text": "just used to refer to um<00:36:37.720> whatever's<00:36:38.080> being<00:36:38.280> evaluated.<00:36:39.280> So,<00:36:39.600> any" + }, + { + "start": 2200.51, + "duration": 0.0, + "text": "um whatever's being evaluated. So, any" + }, + { + "start": 2200.52, + "duration": 0.0, + "text": "um whatever's being evaluated. So, any whatever<00:36:40.880> expression<00:36:41.280> it<00:36:41.360> evaluates<00:36:41.800> to<00:36:41.920> this" + }, + { + "start": 2202.07, + "duration": 0.0, + "text": "whatever expression it evaluates to this" + }, + { + "start": 2202.08, + "duration": 0.0, + "text": "whatever expression it evaluates to this type,<00:36:42.520> that's<00:36:42.720> what<00:36:42.880> this<00:36:43.040> dollar<00:36:43.320> sign" + }, + { + "start": 2203.55, + "duration": 0.0, + "text": "type, that's what this dollar sign" + }, + { + "start": 2203.56, + "duration": 0.0, + "text": "type, that's what this dollar sign represents.<00:36:44.360> And<00:36:44.520> the<00:36:44.640> only<00:36:44.840> thing<00:36:44.960> I'm<00:36:45.080> going" + }, + { + "start": 2205.19, + "duration": 0.0, + "text": "represents. And the only thing I'm going" + }, + { + "start": 2205.2, + "duration": 0.0, + "text": "represents. And the only thing I'm going to<00:36:45.280> do<00:36:45.560> when<00:36:45.720> we're<00:36:45.840> evaluating<00:36:46.400> this<00:36:46.560> kind<00:36:46.760> of" + }, + { + "start": 2206.87, + "duration": 0.0, + "text": "to do when we're evaluating this kind of" + }, + { + "start": 2206.88, + "duration": 0.0, + "text": "to do when we're evaluating this kind of thing<00:36:47.400> is<00:36:47.480> I'm<00:36:47.560> just<00:36:47.680> going<00:36:47.800> to<00:36:47.880> wrap<00:36:48.120> it<00:36:48.200> in" + }, + { + "start": 2208.27, + "duration": 0.0, + "text": "thing is I'm just going to wrap it in" + }, + { + "start": 2208.28, + "duration": 0.0, + "text": "thing is I'm just going to wrap it in this<00:36:48.440> view<00:36:49.040> called<00:36:49.320> slice." + }, + { + "start": 2211.27, + "duration": 0.0, + "text": "this view called slice." + }, + { + "start": 2211.28, + "duration": 0.0, + "text": "this view called slice. And<00:36:51.400> so,<00:36:51.520> what<00:36:51.680> we<00:36:51.840> do" + }, + { + "start": 2213.03, + "duration": 0.0, + "text": "And so, what we do" + }, + { + "start": 2213.04, + "duration": 0.0, + "text": "And so, what we do uh<00:36:53.320> what<00:36:53.440> we<00:36:53.560> see<00:36:53.800> when<00:36:53.960> we<00:36:54.080> actually<00:36:54.640> like" + }, + { + "start": 2214.91, + "duration": 0.0, + "text": "uh what we see when we actually like" + }, + { + "start": 2214.92, + "duration": 0.0, + "text": "uh what we see when we actually like plug<00:36:55.120> that<00:36:55.320> in<00:36:55.520> and<00:36:55.680> evaluate<00:36:56.080> just<00:36:56.320> dynamic," + }, + { + "start": 2216.83, + "duration": 0.0, + "text": "plug that in and evaluate just dynamic," + }, + { + "start": 2216.84, + "duration": 0.0, + "text": "plug that in and evaluate just dynamic, we<00:36:57.000> see<00:36:57.200> that<00:36:57.360> the<00:36:57.480> evaluation<00:36:58.000> type<00:36:58.160> is" + }, + { + "start": 2218.23, + "duration": 0.0, + "text": "we see that the evaluation type is" + }, + { + "start": 2218.24, + "duration": 0.0, + "text": "we see that the evaluation type is actually<00:36:58.560> slice<00:36:59.480> the<00:36:59.600> slice<00:36:59.960> view<00:37:00.760> applied<00:37:01.200> to" + }, + { + "start": 2221.75, + "duration": 0.0, + "text": "actually slice the slice view applied to" + }, + { + "start": 2221.76, + "duration": 0.0, + "text": "actually slice the slice view applied to a<00:37:01.840> dynamic<00:37:02.280> array<00:37:02.440> type." + }, + { + "start": 2223.83, + "duration": 0.0, + "text": "a dynamic array type." + }, + { + "start": 2223.84, + "duration": 0.0, + "text": "a dynamic array type. And<00:37:03.960> that<00:37:04.160> will<00:37:04.320> actually<00:37:04.640> expand<00:37:05.280> with<00:37:05.480> the" + }, + { + "start": 2225.59, + "duration": 0.0, + "text": "And that will actually expand with the" + }, + { + "start": 2225.6, + "duration": 0.0, + "text": "And that will actually expand with the exact<00:37:05.960> number<00:37:06.200> of<00:37:06.320> things<00:37:06.560> that<00:37:06.680> I<00:37:06.720> actually" + }, + { + "start": 2226.99, + "duration": 0.0, + "text": "exact number of things that I actually" + }, + { + "start": 2227.0, + "duration": 0.0, + "text": "exact number of things that I actually expect.<00:37:07.440> So,<00:37:07.560> this<00:37:07.760> is<00:37:07.880> like<00:37:08.080> just<00:37:08.800> hit" + }, + { + "start": 2228.91, + "duration": 0.0, + "text": "expect. So, this is like just hit" + }, + { + "start": 2228.92, + "duration": 0.0, + "text": "expect. So, this is like just hit saying,<00:37:09.200> \"Hey,<00:37:09.360> here's<00:37:09.600> a<00:37:09.640> structure.<00:37:10.000> It's" + }, + { + "start": 2230.07, + "duration": 0.0, + "text": "saying, \"Hey, here's a structure. It's" + }, + { + "start": 2230.08, + "duration": 0.0, + "text": "saying, \"Hey, here's a structure. It's got<00:37:10.200> a<00:37:10.240> pointer<00:37:10.520> and<00:37:10.600> a<00:37:10.640> count.<00:37:11.600> You<00:37:11.760> know<00:37:11.880> what" + }, + { + "start": 2231.99, + "duration": 0.0, + "text": "got a pointer and a count. You know what" + }, + { + "start": 2232.0, + "duration": 0.0, + "text": "got a pointer and a count. You know what to<00:37:12.080> do<00:37:12.200> with<00:37:12.360> this<00:37:13.080> if<00:37:13.280> I<00:37:13.360> tell<00:37:13.600> you<00:37:13.680> that<00:37:13.840> it's" + }, + { + "start": 2233.95, + "duration": 0.0, + "text": "to do with this if I tell you that it's" + }, + { + "start": 2233.96, + "duration": 0.0, + "text": "to do with this if I tell you that it's a<00:37:14.000> slice.\"<00:37:14.560> So,<00:37:15.000> the<00:37:15.120> debugger<00:37:15.440> does<00:37:15.680> know<00:37:15.800> how" + }, + { + "start": 2235.87, + "duration": 0.0, + "text": "a slice.\" So, the debugger does know how" + }, + { + "start": 2235.88, + "duration": 0.0, + "text": "a slice.\" So, the debugger does know how to<00:37:16.000> do<00:37:16.120> it<00:37:16.520> do<00:37:16.680> with<00:37:16.800> it,<00:37:16.960> and<00:37:17.040> then<00:37:17.160> this<00:37:17.280> write" + }, + { + "start": 2237.43, + "duration": 0.0, + "text": "to do it do with it, and then this write" + }, + { + "start": 2237.44, + "duration": 0.0, + "text": "to do it do with it, and then this write a<00:37:17.480> view<00:37:17.600> type<00:37:17.920> view<00:37:18.080> is<00:37:18.160> just<00:37:18.360> saying," + }, + { + "start": 2239.47, + "duration": 0.0, + "text": "a view type view is just saying," + }, + { + "start": 2239.48, + "duration": 0.0, + "text": "a view type view is just saying, \"If<00:37:19.600> you<00:37:19.720> have<00:37:19.960> this<00:37:20.120> type,<00:37:20.600> just<00:37:20.840> do<00:37:20.960> that" + }, + { + "start": 2241.15, + "duration": 0.0, + "text": "\"If you have this type, just do that" + }, + { + "start": 2241.16, + "duration": 0.0, + "text": "\"If you have this type, just do that automatically<00:37:21.680> for<00:37:21.880> me.\"<00:37:22.000> So,<00:37:22.080> you<00:37:22.120> don't" + }, + { + "start": 2242.27, + "duration": 0.0, + "text": "automatically for me.\" So, you don't" + }, + { + "start": 2242.28, + "duration": 0.0, + "text": "automatically for me.\" So, you don't have<00:37:22.400> to<00:37:22.480> do<00:37:23.080> slice" + }, + { + "start": 2244.31, + "duration": 0.0, + "text": "have to do slice" + }, + { + "start": 2244.32, + "duration": 0.0, + "text": "have to do slice at<00:37:24.840> uh<00:37:24.920> all<00:37:25.000> dynamic<00:37:25.640> every<00:37:25.800> single<00:37:26.040> time<00:37:26.240> you" + }, + { + "start": 2246.31, + "duration": 0.0, + "text": "at uh all dynamic every single time you" + }, + { + "start": 2246.32, + "duration": 0.0, + "text": "at uh all dynamic every single time you want<00:37:26.440> to<00:37:26.480> evaluate<00:37:26.880> something." + }, + { + "start": 2247.99, + "duration": 0.0, + "text": "want to evaluate something." + }, + { + "start": 2248.0, + "duration": 0.0, + "text": "want to evaluate something. Um" + }, + { + "start": 2249.47, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2249.48, + "duration": 0.0, + "text": "Um And<00:37:29.600> you<00:37:29.640> can<00:37:29.760> see<00:37:29.960> you<00:37:30.080> do<00:37:30.200> it<00:37:30.240> with<00:37:30.360> templates" + }, + { + "start": 2250.75, + "duration": 0.0, + "text": "And you can see you do it with templates" + }, + { + "start": 2250.76, + "duration": 0.0, + "text": "And you can see you do it with templates as<00:37:30.880> well.<00:37:31.080> Like<00:37:31.280> I<00:37:31.320> have<00:37:31.400> a<00:37:31.440> templated<00:37:31.880> dynamic" + }, + { + "start": 2252.31, + "duration": 0.0, + "text": "as well. Like I have a templated dynamic" + }, + { + "start": 2252.32, + "duration": 0.0, + "text": "as well. Like I have a templated dynamic array.<00:37:33.120> Um<00:37:33.880> and<00:37:34.240> here<00:37:34.520> I<00:37:34.560> actually<00:37:34.800> put<00:37:34.960> in<00:37:35.040> the" + }, + { + "start": 2255.11, + "duration": 0.0, + "text": "array. Um and here I actually put in the" + }, + { + "start": 2255.12, + "duration": 0.0, + "text": "array. Um and here I actually put in the count.<00:37:35.720> So,<00:37:35.880> if<00:37:36.000> we<00:37:36.120> look<00:37:36.360> at<00:37:36.680> uh<00:37:37.000> let<00:37:37.080> me<00:37:37.200> look" + }, + { + "start": 2257.43, + "duration": 0.0, + "text": "count. So, if we look at uh let me look" + }, + { + "start": 2257.44, + "duration": 0.0, + "text": "count. So, if we look at uh let me look at<00:37:37.560> where<00:37:37.720> this<00:37:37.880> is<00:37:38.000> used." + }, + { + "start": 2259.71, + "duration": 0.0, + "text": "at where this is used." + }, + { + "start": 2259.72, + "duration": 0.0, + "text": "at where this is used. Uh<00:37:39.880> templated<00:37:40.280> dynamic,<00:37:40.800> so<00:37:40.920> we'll<00:37:41.040> do" + }, + { + "start": 2262.03, + "duration": 0.0, + "text": "Uh templated dynamic, so we'll do" + }, + { + "start": 2262.04, + "duration": 0.0, + "text": "Uh templated dynamic, so we'll do templated" + }, + { + "start": 2263.67, + "duration": 0.0, + "text": "templated" + }, + { + "start": 2263.68, + "duration": 0.0, + "text": "templated dynamic<00:37:44.120> here." + }, + { + "start": 2265.91, + "duration": 0.0, + "text": "dynamic here." + }, + { + "start": 2265.92, + "duration": 0.0, + "text": "dynamic here. And<00:37:45.960> we<00:37:46.040> can<00:37:46.160> see<00:37:46.320> we<00:37:46.440> get<00:37:47.160> uh<00:37:47.400> the<00:37:47.520> count" + }, + { + "start": 2267.95, + "duration": 0.0, + "text": "And we can see we get uh the count" + }, + { + "start": 2267.96, + "duration": 0.0, + "text": "And we can see we get uh the count visualized<00:37:48.360> here<00:37:48.520> and<00:37:48.600> then<00:37:48.800> array<00:37:49.360> of<00:37:49.600> the" + }, + { + "start": 2269.67, + "duration": 0.0, + "text": "visualized here and then array of the" + }, + { + "start": 2269.68, + "duration": 0.0, + "text": "visualized here and then array of the base<00:37:49.920> pointer<00:37:50.320> with<00:37:50.520> the<00:37:50.600> count" + }, + { + "start": 2272.19, + "duration": 0.0, + "text": "base pointer with the count" + }, + { + "start": 2272.2, + "duration": 0.0, + "text": "base pointer with the count right<00:37:52.360> here." + }, + { + "start": 2273.43, + "duration": 0.0, + "text": "right here." + }, + { + "start": 2273.44, + "duration": 0.0, + "text": "right here. Um" + }, + { + "start": 2274.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2274.88, + "duration": 0.0, + "text": "Um And<00:37:55.000> that<00:37:55.120> actually<00:37:55.360> applies<00:37:55.640> for" + }, + { + "start": 2275.75, + "duration": 0.0, + "text": "And that actually applies for" + }, + { + "start": 2275.76, + "duration": 0.0, + "text": "And that actually applies for everything.<00:37:56.120> So,<00:37:56.360> if<00:37:56.560> I<00:37:56.600> go<00:37:56.720> back<00:37:56.920> to<00:37:57.000> that" + }, + { + "start": 2277.15, + "duration": 0.0, + "text": "everything. So, if I go back to that" + }, + { + "start": 2277.16, + "duration": 0.0, + "text": "everything. So, if I go back to that fancy<00:37:57.520> visualizer," + }, + { + "start": 2279.07, + "duration": 0.0, + "text": "fancy visualizer," + }, + { + "start": 2279.08, + "duration": 0.0, + "text": "fancy visualizer, uh" + }, + { + "start": 2279.99, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2280.0, + "duration": 0.0, + "text": "uh eval<00:38:00.320> test,<00:38:01.080> um" + }, + { + "start": 2282.11, + "duration": 0.0, + "text": "eval test, um" + }, + { + "start": 2282.12, + "duration": 0.0, + "text": "eval test, um if<00:38:02.280> I<00:38:02.320> go<00:38:02.440> down<00:38:02.640> to<00:38:02.720> this<00:38:02.880> bitmap<00:38:03.280> type," + }, + { + "start": 2284.91, + "duration": 0.0, + "text": "if I go down to this bitmap type," + }, + { + "start": 2284.92, + "duration": 0.0, + "text": "if I go down to this bitmap type, you'll<00:38:05.120> see<00:38:05.280> that<00:38:05.600> it's<00:38:05.800> just<00:38:06.240> uh<00:38:06.640> this<00:38:06.840> is<00:38:06.960> a" + }, + { + "start": 2286.99, + "duration": 0.0, + "text": "you'll see that it's just uh this is a" + }, + { + "start": 2287.0, + "duration": 0.0, + "text": "you'll see that it's just uh this is a structure,<00:38:08.040> this<00:38:08.200> bitmap,<00:38:08.640> which<00:38:08.840> has<00:38:08.960> a<00:38:09.040> base" + }, + { + "start": 2289.23, + "duration": 0.0, + "text": "structure, this bitmap, which has a base" + }, + { + "start": 2289.24, + "duration": 0.0, + "text": "structure, this bitmap, which has a base pointer<00:38:09.600> and<00:38:09.720> a<00:38:09.760> width<00:38:09.960> and<00:38:10.040> a<00:38:10.080> height.<00:38:10.800> And" + }, + { + "start": 2290.91, + "duration": 0.0, + "text": "pointer and a width and a height. And" + }, + { + "start": 2290.92, + "duration": 0.0, + "text": "pointer and a width and a height. And there's<00:38:11.120> just<00:38:11.280> a<00:38:11.360> rule<00:38:11.600> somewhere<00:38:12.360> that<00:38:12.600> says" + }, + { + "start": 2293.95, + "duration": 0.0, + "text": "there's just a rule somewhere that says" + }, + { + "start": 2293.96, + "duration": 0.0, + "text": "there's just a rule somewhere that says um" + }, + { + "start": 2294.87, + "duration": 0.0, + "text": "um" + }, + { + "start": 2294.88, + "duration": 0.0, + "text": "um \"Hey,<00:38:15.640> if<00:38:15.800> you<00:38:15.920> have<00:38:16.080> a<00:38:16.120> type<00:38:16.560> if<00:38:16.680> you<00:38:16.760> have<00:38:16.840> an" + }, + { + "start": 2296.91, + "duration": 0.0, + "text": "\"Hey, if you have a type if you have an" + }, + { + "start": 2296.92, + "duration": 0.0, + "text": "\"Hey, if you have a type if you have an instance<00:38:17.240> of<00:38:17.320> type<00:38:17.520> bitmap,<00:38:18.440> visualize<00:38:18.920> this" + }, + { + "start": 2299.55, + "duration": 0.0, + "text": "instance of type bitmap, visualize this" + }, + { + "start": 2299.56, + "duration": 0.0, + "text": "instance of type bitmap, visualize this with<00:38:19.800> the<00:38:19.880> bitmap<00:38:20.240> view<00:38:20.920> applied<00:38:21.720> uh<00:38:21.800> the<00:38:21.840> base" + }, + { + "start": 2302.07, + "duration": 0.0, + "text": "with the bitmap view applied uh the base" + }, + { + "start": 2302.08, + "duration": 0.0, + "text": "with the bitmap view applied uh the base pointer<00:38:22.800> to<00:38:22.920> the<00:38:23.040> pixels<00:38:23.400> being<00:38:23.600> the<00:38:23.680> base<00:38:24.240> the" + }, + { + "start": 2304.31, + "duration": 0.0, + "text": "pointer to the pixels being the base the" + }, + { + "start": 2304.32, + "duration": 0.0, + "text": "pointer to the pixels being the base the base<00:38:24.520> member<00:38:24.880> and<00:38:25.000> then<00:38:25.120> the<00:38:25.240> width<00:38:25.400> and" + }, + { + "start": 2305.51, + "duration": 0.0, + "text": "base member and then the width and" + }, + { + "start": 2305.52, + "duration": 0.0, + "text": "base member and then the width and height<00:38:25.720> being<00:38:25.880> the<00:38:25.960> dimensions,<00:38:26.440> right?" + }, + { + "start": 2306.59, + "duration": 0.0, + "text": "height being the dimensions, right?" + }, + { + "start": 2306.6, + "duration": 0.0, + "text": "height being the dimensions, right? That's<00:38:26.800> all<00:38:27.520> That's<00:38:27.720> the<00:38:27.800> only<00:38:28.000> thing<00:38:28.200> that's" + }, + { + "start": 2308.39, + "duration": 0.0, + "text": "That's all That's the only thing that's" + }, + { + "start": 2308.4, + "duration": 0.0, + "text": "That's all That's the only thing that's in<00:38:28.520> there<00:38:28.920> and<00:38:29.320> and<00:38:29.800> that<00:38:29.920> gets<00:38:30.080> baked<00:38:30.320> into" + }, + { + "start": 2310.47, + "duration": 0.0, + "text": "in there and and that gets baked into" + }, + { + "start": 2310.48, + "duration": 0.0, + "text": "in there and and that gets baked into the<00:38:30.560> executable,<00:38:31.040> so<00:38:31.160> the<00:38:31.240> debugger<00:38:31.560> plugs<00:38:31.840> it" + }, + { + "start": 2311.91, + "duration": 0.0, + "text": "the executable, so the debugger plugs it" + }, + { + "start": 2311.92, + "duration": 0.0, + "text": "the executable, so the debugger plugs it into<00:38:32.160> its<00:38:32.600> evaluation<00:38:33.120> system." + }, + { + "start": 2314.43, + "duration": 0.0, + "text": "into its evaluation system." + }, + { + "start": 2314.44, + "duration": 0.0, + "text": "into its evaluation system. And<00:38:34.560> then<00:38:34.720> anytime<00:38:35.200> I<00:38:35.280> evaluate,<00:38:36.400> uh,<00:38:36.480> for" + }, + { + "start": 2316.59, + "duration": 0.0, + "text": "And then anytime I evaluate, uh, for" + }, + { + "start": 2316.6, + "duration": 0.0, + "text": "And then anytime I evaluate, uh, for example,<00:38:37.000> a<00:38:37.040> variable<00:38:37.400> called<00:38:37.640> foo<00:38:38.360> of<00:38:38.560> type" + }, + { + "start": 2318.79, + "duration": 0.0, + "text": "example, a variable called foo of type" + }, + { + "start": 2318.8, + "duration": 0.0, + "text": "example, a variable called foo of type of<00:38:38.880> it<00:38:39.000> map,<00:38:39.600> then<00:38:39.800> we<00:38:39.920> see<00:38:40.720> it's<00:38:40.920> just<00:38:41.320> the" + }, + { + "start": 2321.91, + "duration": 0.0, + "text": "of it map, then we see it's just the" + }, + { + "start": 2321.92, + "duration": 0.0, + "text": "of it map, then we see it's just the it's<00:38:42.080> just<00:38:42.240> the<00:38:42.280> bitmap<00:38:42.880> thing.<00:38:43.120> And<00:38:43.200> if<00:38:43.320> I" + }, + { + "start": 2323.39, + "duration": 0.0, + "text": "it's just the bitmap thing. And if I" + }, + { + "start": 2323.4, + "duration": 0.0, + "text": "it's just the bitmap thing. And if I want<00:38:43.600> to<00:38:43.680> get<00:38:43.800> back<00:38:43.960> to<00:38:44.040> the<00:38:44.160> original<00:38:44.600> view," + }, + { + "start": 2325.87, + "duration": 0.0, + "text": "want to get back to the original view," + }, + { + "start": 2325.88, + "duration": 0.0, + "text": "want to get back to the original view, then<00:38:46.000> I<00:38:46.080> just<00:38:46.240> do<00:38:46.400> raw.<00:38:46.960> It's<00:38:47.200> That's<00:38:47.440> what<00:38:47.520> the" + }, + { + "start": 2327.63, + "duration": 0.0, + "text": "then I just do raw. It's That's what the" + }, + { + "start": 2327.64, + "duration": 0.0, + "text": "then I just do raw. It's That's what the raw<00:38:47.840> thing<00:38:48.000> is<00:38:48.120> for,<00:38:48.360> right?<00:38:48.520> That's<00:38:49.080> That's" + }, + { + "start": 2329.27, + "duration": 0.0, + "text": "raw thing is for, right? That's That's" + }, + { + "start": 2329.28, + "duration": 0.0, + "text": "raw thing is for, right? That's That's me<00:38:49.400> saying,<00:38:49.640> \"Hey,<00:38:49.920> I<00:38:50.080> just<00:38:50.520> I<00:38:50.640> just<00:38:50.960> want<00:38:51.120> to" + }, + { + "start": 2331.43, + "duration": 0.0, + "text": "me saying, \"Hey, I just I just want to" + }, + { + "start": 2331.44, + "duration": 0.0, + "text": "me saying, \"Hey, I just I just want to look<00:38:51.640> at<00:38:51.720> this<00:38:51.880> how<00:38:52.000> the<00:38:52.080> debugger<00:38:52.400> would" + }, + { + "start": 2332.51, + "duration": 0.0, + "text": "look at this how the debugger would" + }, + { + "start": 2332.52, + "duration": 0.0, + "text": "look at this how the debugger would normally<00:38:52.920> look<00:38:53.160> at<00:38:53.240> it<00:38:53.320> without<00:38:53.560> any<00:38:53.720> of<00:38:53.800> the" + }, + { + "start": 2333.87, + "duration": 0.0, + "text": "normally look at it without any of the" + }, + { + "start": 2333.88, + "duration": 0.0, + "text": "normally look at it without any of the type<00:38:54.080> view<00:38:54.200> stuff.<00:38:54.440> Just<00:38:54.640> turn<00:38:54.800> it<00:38:54.920> all<00:38:55.080> off," + }, + { + "start": 2335.59, + "duration": 0.0, + "text": "type view stuff. Just turn it all off," + }, + { + "start": 2335.6, + "duration": 0.0, + "text": "type view stuff. Just turn it all off, get<00:38:55.720> a<00:38:55.760> base<00:38:55.960> pointer<00:38:56.320> with<00:38:56.520> and<00:38:56.640> height.\"" + }, + { + "start": 2337.59, + "duration": 0.0, + "text": "get a base pointer with and height.\"" + }, + { + "start": 2337.6, + "duration": 0.0, + "text": "get a base pointer with and height.\" Um," + }, + { + "start": 2338.67, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2338.68, + "duration": 0.0, + "text": "Um, but<00:38:58.760> by<00:38:58.880> default,<00:38:59.280> obviously,<00:38:59.640> it's<00:38:59.800> more<00:39:00.200> if" + }, + { + "start": 2340.31, + "duration": 0.0, + "text": "but by default, obviously, it's more if" + }, + { + "start": 2340.32, + "duration": 0.0, + "text": "but by default, obviously, it's more if you<00:39:00.360> have<00:39:00.440> something<00:39:00.640> called<00:39:00.800> bitmap,<00:39:01.240> it" + }, + { + "start": 2341.27, + "duration": 0.0, + "text": "you have something called bitmap, it" + }, + { + "start": 2341.28, + "duration": 0.0, + "text": "you have something called bitmap, it might<00:39:01.400> be<00:39:01.480> convenient<00:39:01.880> to<00:39:01.960> look<00:39:02.120> at<00:39:02.200> it<00:39:02.320> as" + }, + { + "start": 2342.47, + "duration": 0.0, + "text": "might be convenient to look at it as" + }, + { + "start": 2342.48, + "duration": 0.0, + "text": "might be convenient to look at it as bitmap<00:39:02.840> by<00:39:02.920> default.<00:39:03.560> So," + }, + { + "start": 2346.32, + "duration": 0.0, + "text": "hopefully,<00:39:07.360> that<00:39:08.160> is<00:39:08.280> a<00:39:08.320> pretty<00:39:08.520> good" + }, + { + "start": 2348.67, + "duration": 0.0, + "text": "hopefully, that is a pretty good" + }, + { + "start": 2348.68, + "duration": 0.0, + "text": "hopefully, that is a pretty good overview.<00:39:09.400> Um,<00:39:10.160> there's<00:39:10.320> lots<00:39:10.480> of<00:39:10.560> other" + }, + { + "start": 2350.71, + "duration": 0.0, + "text": "overview. Um, there's lots of other" + }, + { + "start": 2350.72, + "duration": 0.0, + "text": "overview. Um, there's lots of other things<00:39:11.080> like<00:39:11.840> more<00:39:12.040> traditional<00:39:12.480> debugger" + }, + { + "start": 2352.83, + "duration": 0.0, + "text": "things like more traditional debugger" + }, + { + "start": 2352.84, + "duration": 0.0, + "text": "things like more traditional debugger things<00:39:13.080> like<00:39:13.240> I<00:39:13.280> can<00:39:13.600> I<00:39:13.680> can<00:39:13.800> debug<00:39:14.040> multiple" + }, + { + "start": 2354.35, + "duration": 0.0, + "text": "things like I can I can debug multiple" + }, + { + "start": 2354.36, + "duration": 0.0, + "text": "things like I can I can debug multiple processes<00:39:14.880> at<00:39:15.000> once.<00:39:16.000> Um,<00:39:16.520> there's" + }, + { + "start": 2356.71, + "duration": 0.0, + "text": "processes at once. Um, there's" + }, + { + "start": 2356.72, + "duration": 0.0, + "text": "processes at once. Um, there's conditional<00:39:17.120> breakpoints,<00:39:17.760> there's<00:39:18.120> address" + }, + { + "start": 2358.47, + "duration": 0.0, + "text": "conditional breakpoints, there's address" + }, + { + "start": 2358.48, + "duration": 0.0, + "text": "conditional breakpoints, there's address breakpoints,<00:39:19.040> there's,<00:39:19.560> uh,<00:39:19.680> data" + }, + { + "start": 2359.95, + "duration": 0.0, + "text": "breakpoints, there's, uh, data" + }, + { + "start": 2359.96, + "duration": 0.0, + "text": "breakpoints, there's, uh, data breakpoints<00:39:20.480> as<00:39:20.600> well.<00:39:21.480> Um,<00:39:21.920> so<00:39:22.000> I<00:39:22.080> can<00:39:22.200> cover" + }, + { + "start": 2362.47, + "duration": 0.0, + "text": "breakpoints as well. Um, so I can cover" + }, + { + "start": 2362.48, + "duration": 0.0, + "text": "breakpoints as well. Um, so I can cover any<00:39:22.640> of<00:39:22.720> those,<00:39:22.960> but<00:39:23.080> those<00:39:23.240> are<00:39:23.320> all<00:39:23.400> kind<00:39:23.560> of" + }, + { + "start": 2363.63, + "duration": 0.0, + "text": "any of those, but those are all kind of" + }, + { + "start": 2363.64, + "duration": 0.0, + "text": "any of those, but those are all kind of common<00:39:23.960> debugger<00:39:24.280> functionality.<00:39:25.480> Um," + }, + { + "start": 2366.55, + "duration": 0.0, + "text": "common debugger functionality. Um," + }, + { + "start": 2366.56, + "duration": 0.0, + "text": "common debugger functionality. Um, but,<00:39:26.920> uh,<00:39:27.080> hopefully,<00:39:27.360> that's<00:39:27.480> a<00:39:27.520> good" + }, + { + "start": 2367.67, + "duration": 0.0, + "text": "but, uh, hopefully, that's a good" + }, + { + "start": 2367.68, + "duration": 0.0, + "text": "but, uh, hopefully, that's a good overview." + }, + { + "start": 2368.67, + "duration": 0.0, + "text": "overview." + }, + { + "start": 2368.68, + "duration": 0.0, + "text": "overview. Um," + }, + { + "start": 2369.51, + "duration": 0.0, + "text": "Um," + }, + { + "start": 2369.52, + "duration": 0.0, + "text": "Um, >> Nice." + }, + { + "start": 2370.03, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2370.04, + "duration": 0.0, + "text": ">> Nice. >> Yeah." + }, + { + "start": 2371.63, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2371.64, + "duration": 0.0, + "text": ">> Yeah. >> Uh,<00:39:32.120> there<00:39:32.520> there<00:39:32.680> were<00:39:32.760> a<00:39:32.840> couple<00:39:33.280> of<00:39:33.600> wows<00:39:34.200> in" + }, + { + "start": 2374.39, + "duration": 0.0, + "text": ">> Uh, there there were a couple of wows in" + }, + { + "start": 2374.4, + "duration": 0.0, + "text": ">> Uh, there there were a couple of wows in the<00:39:34.640> chat<00:39:35.040> in<00:39:35.160> the<00:39:35.280> meantime<00:39:36.160> when<00:39:36.360> you<00:39:36.440> were" + }, + { + "start": 2376.55, + "duration": 0.0, + "text": "the chat in the meantime when you were" + }, + { + "start": 2376.56, + "duration": 0.0, + "text": "the chat in the meantime when you were doing<00:39:36.920> the<00:39:37.280> everything<00:39:37.680> is<00:39:37.800> a<00:39:37.880> watch<00:39:38.120> window" + }, + { + "start": 2379.11, + "duration": 0.0, + "text": "doing the everything is a watch window" + }, + { + "start": 2379.12, + "duration": 0.0, + "text": "doing the everything is a watch window uh,<00:39:39.560> reveals." + }, + { + "start": 2380.75, + "duration": 0.0, + "text": "uh, reveals." + }, + { + "start": 2380.76, + "duration": 0.0, + "text": "uh, reveals. And<00:39:40.840> there<00:39:40.960> were<00:39:41.040> also<00:39:41.240> a<00:39:41.280> couple<00:39:41.600> of" + }, + { + "start": 2381.71, + "duration": 0.0, + "text": "And there were also a couple of" + }, + { + "start": 2381.72, + "duration": 0.0, + "text": "And there were also a couple of questions<00:39:42.480> like<00:39:42.800> how<00:39:43.320> rad<00:39:43.600> debugger<00:39:43.960> works" + }, + { + "start": 2384.31, + "duration": 0.0, + "text": "questions like how rad debugger works" + }, + { + "start": 2384.32, + "duration": 0.0, + "text": "questions like how rad debugger works with,<00:39:44.840> uh,<00:39:45.160> sources<00:39:45.640> that<00:39:45.760> only<00:39:46.000> have,<00:39:46.200> for" + }, + { + "start": 2386.31, + "duration": 0.0, + "text": "with, uh, sources that only have, for" + }, + { + "start": 2386.32, + "duration": 0.0, + "text": "with, uh, sources that only have, for example,<00:39:47.040> debug<00:39:47.360> information<00:39:48.000> or<00:39:48.200> don't<00:39:49.200> and" + }, + { + "start": 2389.43, + "duration": 0.0, + "text": "example, debug information or don't and" + }, + { + "start": 2389.44, + "duration": 0.0, + "text": "example, debug information or don't and how<00:39:49.560> does<00:39:49.800> it<00:39:49.920> interplay<00:39:50.440> with<00:39:50.640> like,<00:39:51.240> um," + }, + { + "start": 2391.59, + "duration": 0.0, + "text": "how does it interplay with like, um," + }, + { + "start": 2391.6, + "duration": 0.0, + "text": "how does it interplay with like, um, other<00:39:51.840> libraries<00:39:52.360> and<00:39:52.520> other<00:39:52.720> source<00:39:53.000> code?" + }, + { + "start": 2395.6, + "duration": 0.0, + "text": ">> Uh,<00:39:56.160> I<00:39:56.240> guess<00:39:56.440> I'm<00:39:56.560> not<00:39:56.880> 100%<00:39:57.400> sure<00:39:57.520> about<00:39:57.680> the" + }, + { + "start": 2397.75, + "duration": 0.0, + "text": ">> Uh, I guess I'm not 100% sure about the" + }, + { + "start": 2397.76, + "duration": 0.0, + "text": ">> Uh, I guess I'm not 100% sure about the question.<00:39:58.280> Like<00:39:58.440> if<00:39:58.560> you<00:39:58.640> don't<00:39:58.880> have<00:39:59.040> debug" + }, + { + "start": 2399.35, + "duration": 0.0, + "text": "question. Like if you don't have debug" + }, + { + "start": 2399.36, + "duration": 0.0, + "text": "question. Like if you don't have debug info,<00:40:00.040> then<00:40:00.560> what<00:40:00.880> The<00:40:01.040> only<00:40:01.200> thing<00:40:01.360> you<00:40:01.440> can" + }, + { + "start": 2401.55, + "duration": 0.0, + "text": "info, then what The only thing you can" + }, + { + "start": 2401.56, + "duration": 0.0, + "text": "info, then what The only thing you can really<00:40:01.760> do," + }, + { + "start": 2402.79, + "duration": 0.0, + "text": "really do," + }, + { + "start": 2402.8, + "duration": 0.0, + "text": "really do, um,<00:40:03.280> obviously,<00:40:03.600> there's<00:40:04.000> there<00:40:04.200> there's<00:40:04.520> a" + }, + { + "start": 2404.55, + "duration": 0.0, + "text": "um, obviously, there's there there's a" + }, + { + "start": 2404.56, + "duration": 0.0, + "text": "um, obviously, there's there there's a whole<00:40:04.800> family<00:40:05.280> of<00:40:05.440> reverse<00:40:05.760> engineering" + }, + { + "start": 2406.19, + "duration": 0.0, + "text": "whole family of reverse engineering" + }, + { + "start": 2406.2, + "duration": 0.0, + "text": "whole family of reverse engineering features<00:40:06.640> that<00:40:06.760> people<00:40:07.160> have<00:40:07.800> can<00:40:08.080> and<00:40:08.200> do<00:40:08.440> put" + }, + { + "start": 2408.59, + "duration": 0.0, + "text": "features that people have can and do put" + }, + { + "start": 2408.6, + "duration": 0.0, + "text": "features that people have can and do put into<00:40:08.800> their<00:40:08.920> debuggers.<00:40:09.960> Um,<00:40:10.320> the<00:40:10.400> rad" + }, + { + "start": 2410.55, + "duration": 0.0, + "text": "into their debuggers. Um, the rad" + }, + { + "start": 2410.56, + "duration": 0.0, + "text": "into their debuggers. Um, the rad debugger<00:40:10.800> is<00:40:10.920> more<00:40:11.480> more<00:40:11.760> focused<00:40:12.160> on<00:40:12.280> like" + }, + { + "start": 2412.51, + "duration": 0.0, + "text": "debugger is more more focused on like" + }, + { + "start": 2412.52, + "duration": 0.0, + "text": "debugger is more more focused on like the<00:40:12.600> cases<00:40:12.920> where<00:40:13.040> you<00:40:13.120> have<00:40:13.360> debug<00:40:13.640> info<00:40:13.960> cuz" + }, + { + "start": 2414.11, + "duration": 0.0, + "text": "the cases where you have debug info cuz" + }, + { + "start": 2414.12, + "duration": 0.0, + "text": "the cases where you have debug info cuz this<00:40:14.320> is,<00:40:14.520> you<00:40:14.600> know,<00:40:14.760> obviously,<00:40:15.040> it's<00:40:15.200> for" + }, + { + "start": 2415.35, + "duration": 0.0, + "text": "this is, you know, obviously, it's for" + }, + { + "start": 2415.36, + "duration": 0.0, + "text": "this is, you know, obviously, it's for game<00:40:15.600> developers.<00:40:16.320> Um,<00:40:16.640> as<00:40:16.800> a<00:40:16.960> first<00:40:18.040> as<00:40:18.200> kind" + }, + { + "start": 2418.39, + "duration": 0.0, + "text": "game developers. Um, as a first as kind" + }, + { + "start": 2418.4, + "duration": 0.0, + "text": "game developers. Um, as a first as kind of<00:40:18.440> like<00:40:18.640> the<00:40:19.160> intended<00:40:19.800> audience<00:40:20.240> or<00:40:20.440> just" + }, + { + "start": 2420.67, + "duration": 0.0, + "text": "of like the intended audience or just" + }, + { + "start": 2420.68, + "duration": 0.0, + "text": "of like the intended audience or just system<00:40:20.960> developers<00:40:21.440> working<00:40:21.720> on<00:40:21.840> system" + }, + { + "start": 2422.11, + "duration": 0.0, + "text": "system developers working on system" + }, + { + "start": 2422.12, + "duration": 0.0, + "text": "system developers working on system software.<00:40:23.200> And<00:40:23.400> so,<00:40:23.640> in<00:40:23.800> that<00:40:24.120> in<00:40:24.240> that" + }, + { + "start": 2424.39, + "duration": 0.0, + "text": "software. And so, in that in that" + }, + { + "start": 2424.4, + "duration": 0.0, + "text": "software. And so, in that in that context,<00:40:24.760> you<00:40:24.880> do<00:40:25.080> have<00:40:25.200> debug<00:40:25.480> info.<00:40:25.760> So,<00:40:25.920> we" + }, + { + "start": 2426.07, + "duration": 0.0, + "text": "context, you do have debug info. So, we" + }, + { + "start": 2426.08, + "duration": 0.0, + "text": "context, you do have debug info. So, we haven't<00:40:26.400> spent<00:40:26.600> a<00:40:26.640> lot<00:40:26.800> of<00:40:26.880> time<00:40:27.080> doing" + }, + { + "start": 2427.35, + "duration": 0.0, + "text": "haven't spent a lot of time doing" + }, + { + "start": 2427.36, + "duration": 0.0, + "text": "haven't spent a lot of time doing reverse<00:40:27.680> engineering<00:40:28.120> type<00:40:28.320> stuff<00:40:28.640> where<00:40:28.760> you" + }, + { + "start": 2428.95, + "duration": 0.0, + "text": "reverse engineering type stuff where you" + }, + { + "start": 2428.96, + "duration": 0.0, + "text": "reverse engineering type stuff where you cannot<00:40:29.320> be<00:40:29.520> guaranteed<00:40:30.000> to<00:40:30.080> have<00:40:30.280> debug<00:40:30.560> info." + }, + { + "start": 2431.59, + "duration": 0.0, + "text": "cannot be guaranteed to have debug info." + }, + { + "start": 2431.6, + "duration": 0.0, + "text": "cannot be guaranteed to have debug info. Um<00:40:32.200> you<00:40:32.320> can<00:40:32.440> still<00:40:32.600> debug,<00:40:33.240> but<00:40:33.400> it's<00:40:33.520> just" + }, + { + "start": 2433.67, + "duration": 0.0, + "text": "Um you can still debug, but it's just" + }, + { + "start": 2433.68, + "duration": 0.0, + "text": "Um you can still debug, but it's just going<00:40:33.800> to<00:40:33.880> be<00:40:34.040> hey,<00:40:34.280> you<00:40:34.360> have<00:40:34.520> disassembly," + }, + { + "start": 2435.39, + "duration": 0.0, + "text": "going to be hey, you have disassembly," + }, + { + "start": 2435.4, + "duration": 0.0, + "text": "going to be hey, you have disassembly, you<00:40:35.480> can<00:40:35.600> look<00:40:35.760> at<00:40:35.840> memory,<00:40:36.600> but<00:40:36.840> there's<00:40:37.040> no" + }, + { + "start": 2437.27, + "duration": 0.0, + "text": "you can look at memory, but there's no" + }, + { + "start": 2437.28, + "duration": 0.0, + "text": "you can look at memory, but there's no information<00:40:37.720> about<00:40:37.960> like<00:40:38.160> what<00:40:38.320> variables" + }, + { + "start": 2438.79, + "duration": 0.0, + "text": "information about like what variables" + }, + { + "start": 2438.8, + "duration": 0.0, + "text": "information about like what variables are<00:40:38.880> there<00:40:39.160> or<00:40:39.240> type<00:40:39.560> info<00:40:39.960> or<00:40:40.040> like<00:40:40.240> any<00:40:40.400> of" + }, + { + "start": 2440.47, + "duration": 0.0, + "text": "are there or type info or like any of" + }, + { + "start": 2440.48, + "duration": 0.0, + "text": "are there or type info or like any of that.<00:40:40.840> All<00:40:41.000> of<00:40:41.040> that's<00:40:41.240> not<00:40:41.440> in<00:40:41.560> there.<00:40:42.120> Um" + }, + { + "start": 2442.19, + "duration": 0.0, + "text": "that. All of that's not in there. Um" + }, + { + "start": 2442.2, + "duration": 0.0, + "text": "that. All of that's not in there. Um there's<00:40:42.360> no<00:40:42.480> line<00:40:42.760> info.<00:40:43.880> Um" + }, + { + "start": 2445.11, + "duration": 0.0, + "text": "there's no line info. Um" + }, + { + "start": 2445.12, + "duration": 0.0, + "text": "there's no line info. Um anything<00:40:45.440> like<00:40:45.600> that.<00:40:45.800> So,<00:40:46.080> if<00:40:46.200> you<00:40:46.280> don't" + }, + { + "start": 2446.43, + "duration": 0.0, + "text": "anything like that. So, if you don't" + }, + { + "start": 2446.44, + "duration": 0.0, + "text": "anything like that. So, if you don't have<00:40:46.560> debug<00:40:46.840> info,<00:40:47.160> it's<00:40:47.320> going<00:40:47.440> to<00:40:47.480> be<00:40:47.560> pretty" + }, + { + "start": 2447.83, + "duration": 0.0, + "text": "have debug info, it's going to be pretty" + }, + { + "start": 2447.84, + "duration": 0.0, + "text": "have debug info, it's going to be pretty bare-bones.<00:40:48.800> Uh<00:40:49.120> we<00:40:49.240> don't<00:40:49.400> have<00:40:49.520> a<00:40:49.560> whole<00:40:49.760> lot" + }, + { + "start": 2449.91, + "duration": 0.0, + "text": "bare-bones. Uh we don't have a whole lot" + }, + { + "start": 2449.92, + "duration": 0.0, + "text": "bare-bones. Uh we don't have a whole lot of<00:40:50.400> um" + }, + { + "start": 2451.43, + "duration": 0.0, + "text": "of um" + }, + { + "start": 2451.44, + "duration": 0.0, + "text": "of um whole<00:40:51.600> lot<00:40:51.800> of<00:40:51.960> like<00:40:52.320> reverse<00:40:52.600> engineering" + }, + { + "start": 2453.03, + "duration": 0.0, + "text": "whole lot of like reverse engineering" + }, + { + "start": 2453.04, + "duration": 0.0, + "text": "whole lot of like reverse engineering type<00:40:53.240> stuff." + }, + { + "start": 2454.27, + "duration": 0.0, + "text": "type stuff." + }, + { + "start": 2454.28, + "duration": 0.0, + "text": "type stuff. Um" + }, + { + "start": 2455.19, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2455.2, + "duration": 0.0, + "text": "Um but<00:40:55.560> uh" + }, + { + "start": 2456.75, + "duration": 0.0, + "text": "but uh" + }, + { + "start": 2456.76, + "duration": 0.0, + "text": "but uh Uh<00:40:56.960> what<00:40:57.120> was<00:40:57.200> the<00:40:57.280> other<00:40:57.400> part<00:40:57.520> of<00:40:57.600> the" + }, + { + "start": 2457.63, + "duration": 0.0, + "text": "Uh what was the other part of the" + }, + { + "start": 2457.64, + "duration": 0.0, + "text": "Uh what was the other part of the question?<00:40:58.160> I<00:40:58.560> think<00:40:58.800> that<00:40:58.920> might<00:40:59.160> have" + }, + { + "start": 2459.27, + "duration": 0.0, + "text": "question? I think that might have" + }, + { + "start": 2459.28, + "duration": 0.0, + "text": "question? I think that might have covered<00:40:59.560> it,<00:40:59.640> but<00:40:59.840> if<00:41:00.000> not,<00:41:00.600> uh<00:41:00.880> let<00:41:01.000> me<00:41:01.080> know." + }, + { + "start": 2461.59, + "duration": 0.0, + "text": "covered it, but if not, uh let me know." + }, + { + "start": 2461.6, + "duration": 0.0, + "text": "covered it, but if not, uh let me know. >> I<00:41:01.680> think<00:41:01.960> that's<00:41:02.200> it.<00:41:02.600> The<00:41:03.240> that<00:41:03.440> was<00:41:03.600> the<00:41:04.040> like" + }, + { + "start": 2464.27, + "duration": 0.0, + "text": ">> I think that's it. The that was the like" + }, + { + "start": 2464.28, + "duration": 0.0, + "text": ">> I think that's it. The that was the like how<00:41:04.520> how<00:41:04.680> to<00:41:04.840> interface<00:41:05.320> with<00:41:05.520> other<00:41:05.760> things." + }, + { + "start": 2466.35, + "duration": 0.0, + "text": "how how to interface with other things." + }, + { + "start": 2466.36, + "duration": 0.0, + "text": "how how to interface with other things. I<00:41:06.520> also<00:41:06.880> put<00:41:07.080> it" + }, + { + "start": 2467.87, + "duration": 0.0, + "text": "I also put it" + }, + { + "start": 2467.88, + "duration": 0.0, + "text": "I also put it a<00:41:08.240> I<00:41:08.320> put<00:41:08.640> a<00:41:08.760> link<00:41:09.160> in<00:41:09.280> the<00:41:09.400> chat<00:41:10.160> regarding<00:41:10.600> the" + }, + { + "start": 2470.83, + "duration": 0.0, + "text": "a I put a link in the chat regarding the" + }, + { + "start": 2470.84, + "duration": 0.0, + "text": "a I put a link in the chat regarding the Q&A.<00:41:11.560> If<00:41:11.800> there's<00:41:12.120> something<00:41:12.440> that<00:41:12.640> we<00:41:12.760> missed" + }, + { + "start": 2473.75, + "duration": 0.0, + "text": "Q&A. If there's something that we missed" + }, + { + "start": 2473.76, + "duration": 0.0, + "text": "Q&A. If there's something that we missed uh<00:41:14.560> and<00:41:14.680> I<00:41:14.720> missed<00:41:15.000> through<00:41:15.120> during<00:41:15.360> the<00:41:15.480> chat," + }, + { + "start": 2475.95, + "duration": 0.0, + "text": "uh and I missed through during the chat," + }, + { + "start": 2475.96, + "duration": 0.0, + "text": "uh and I missed through during the chat, people<00:41:16.280> can<00:41:16.760> put<00:41:16.960> it<00:41:17.080> there." + }, + { + "start": 2478.23, + "duration": 0.0, + "text": "people can put it there." + }, + { + "start": 2478.24, + "duration": 0.0, + "text": "people can put it there. And" + }, + { + "start": 2478.99, + "duration": 0.0, + "text": "And" + }, + { + "start": 2479.0, + "duration": 0.0, + "text": "And >> Cool." + }, + { + "start": 2480.19, + "duration": 0.0, + "text": ">> Cool." + }, + { + "start": 2480.2, + "duration": 0.0, + "text": ">> Cool. >> Oh,<00:41:20.360> I<00:41:20.440> actually<00:41:20.760> missed<00:41:20.960> like<00:41:21.320> 50<00:41:22.240> messages" + }, + { + "start": 2482.71, + "duration": 0.0, + "text": ">> Oh, I actually missed like 50 messages" + }, + { + "start": 2482.72, + "duration": 0.0, + "text": ">> Oh, I actually missed like 50 messages now<00:41:22.880> because<00:41:23.240> my<00:41:23.840> my<00:41:24.000> YouTube<00:41:24.520> my<00:41:24.640> YouTube" + }, + { + "start": 2484.95, + "duration": 0.0, + "text": "now because my my YouTube my YouTube" + }, + { + "start": 2484.96, + "duration": 0.0, + "text": "now because my my YouTube my YouTube chat<00:41:25.200> was<00:41:25.360> frozen.<00:41:26.160> So," + }, + { + "start": 2487.35, + "duration": 0.0, + "text": "chat was frozen. So," + }, + { + "start": 2487.36, + "duration": 0.0, + "text": "chat was frozen. So, you<00:41:27.480> can<00:41:27.800> you<00:41:27.880> can<00:41:28.080> put<00:41:28.320> those<00:41:28.600> in<00:41:29.120> and" + }, + { + "start": 2490.15, + "duration": 0.0, + "text": "you can you can put those in and" + }, + { + "start": 2490.16, + "duration": 0.0, + "text": "you can you can put those in and uh<00:41:30.280> we<00:41:30.440> will<00:41:30.560> come<00:41:30.800> back<00:41:31.200> maybe<00:41:31.440> in<00:41:31.560> the<00:41:31.680> end." + }, + { + "start": 2492.51, + "duration": 0.0, + "text": "uh we will come back maybe in the end." + }, + { + "start": 2492.52, + "duration": 0.0, + "text": "uh we will come back maybe in the end. >> Um" + }, + { + "start": 2493.07, + "duration": 0.0, + "text": ">> Um" + }, + { + "start": 2493.08, + "duration": 0.0, + "text": ">> Um >> Cool." + }, + { + "start": 2494.258, + "duration": 0.0, + "text": ">> Cool." + }, + { + "start": 2494.268, + "duration": 0.0, + "text": ">> Cool. >> [snorts]" + }, + { + "start": 2494.27, + "duration": 0.0, + "text": ">> [snorts]" + }, + { + "start": 2494.28, + "duration": 0.0, + "text": ">> [snorts] >> Nice." + }, + { + "start": 2495.55, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2495.56, + "duration": 0.0, + "text": ">> Nice. Now," + }, + { + "start": 2496.35, + "duration": 0.0, + "text": "Now," + }, + { + "start": 2496.36, + "duration": 0.0, + "text": "Now, >> Yeah." + }, + { + "start": 2496.87, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2496.88, + "duration": 0.0, + "text": ">> Yeah. >> is<00:41:37.080> this" + }, + { + "start": 2497.43, + "duration": 0.0, + "text": ">> is this" + }, + { + "start": 2497.44, + "duration": 0.0, + "text": ">> is this >> Oh,<00:41:37.520> I<00:41:37.560> guess<00:41:37.760> I<00:41:37.840> should" + }, + { + "start": 2498.47, + "duration": 0.0, + "text": ">> Oh, I guess I should" + }, + { + "start": 2498.48, + "duration": 0.0, + "text": ">> Oh, I guess I should >> Yeah." + }, + { + "start": 2499.15, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2499.16, + "duration": 0.0, + "text": ">> Yeah. >> Well,<00:41:39.560> yes.<00:41:39.960> Okay,<00:41:40.200> so<00:41:40.400> one<00:41:40.640> more<00:41:40.840> thing<00:41:41.120> I" + }, + { + "start": 2501.19, + "duration": 0.0, + "text": ">> Well, yes. Okay, so one more thing I" + }, + { + "start": 2501.2, + "duration": 0.0, + "text": ">> Well, yes. Okay, so one more thing I should<00:41:41.400> probably<00:41:41.760> do<00:41:42.480> is<00:41:42.680> show<00:41:43.400> one<00:41:43.760> Maybe" + }, + { + "start": 2503.99, + "duration": 0.0, + "text": "should probably do is show one Maybe" + }, + { + "start": 2504.0, + "duration": 0.0, + "text": "should probably do is show one Maybe this<00:41:44.160> is<00:41:44.240> related<00:41:44.560> to<00:41:44.640> that<00:41:44.800> question,<00:41:45.160> but<00:41:45.480> um" + }, + { + "start": 2505.71, + "duration": 0.0, + "text": "this is related to that question, but um" + }, + { + "start": 2505.72, + "duration": 0.0, + "text": "this is related to that question, but um cross-language<00:41:46.480> support.<00:41:47.560> Um<00:41:48.360> so,<00:41:48.960> uh" + }, + { + "start": 2509.51, + "duration": 0.0, + "text": "cross-language support. Um so, uh" + }, + { + "start": 2509.52, + "duration": 0.0, + "text": "cross-language support. Um so, uh like<00:41:49.720> for<00:41:49.880> example,<00:41:50.240> if<00:41:50.320> I<00:41:50.400> wanted<00:41:50.600> to<00:41:50.680> debug" + }, + { + "start": 2511.15, + "duration": 0.0, + "text": "like for example, if I wanted to debug" + }, + { + "start": 2511.16, + "duration": 0.0, + "text": "like for example, if I wanted to debug like<00:41:51.440> JAI,<00:41:52.240> for<00:41:52.360> example,<00:41:53.400> um<00:41:54.280> this<00:41:54.440> uses<00:41:54.760> the" + }, + { + "start": 2514.87, + "duration": 0.0, + "text": "like JAI, for example, um this uses the" + }, + { + "start": 2514.88, + "duration": 0.0, + "text": "like JAI, for example, um this uses the same<00:41:55.240> type<00:41:55.520> of<00:41:55.600> debug<00:41:55.880> info<00:41:56.200> that<00:41:57.040> uh<00:41:57.440> like<00:41:57.720> C" + }, + { + "start": 2517.95, + "duration": 0.0, + "text": "same type of debug info that uh like C" + }, + { + "start": 2517.96, + "duration": 0.0, + "text": "same type of debug info that uh like C and<00:41:58.080> C++<00:41:58.520> do.<00:41:59.120> So,<00:41:59.440> the<00:41:59.880> the<00:41:59.960> JAI<00:42:00.280> compiler" + }, + { + "start": 2521.67, + "duration": 0.0, + "text": "and C++ do. So, the the JAI compiler" + }, + { + "start": 2521.68, + "duration": 0.0, + "text": "and C++ do. So, the the JAI compiler produces<00:42:02.520> uh<00:42:02.720> code<00:42:02.960> view<00:42:03.080> data,<00:42:03.440> which<00:42:03.920> um<00:42:04.280> I" + }, + { + "start": 2524.31, + "duration": 0.0, + "text": "produces uh code view data, which um I" + }, + { + "start": 2524.32, + "duration": 0.0, + "text": "produces uh code view data, which um I think<00:42:04.520> it<00:42:04.640> uses<00:42:05.160> the<00:42:05.280> MSVC<00:42:05.720> linker.<00:42:06.520> And<00:42:06.640> so," + }, + { + "start": 2526.75, + "duration": 0.0, + "text": "think it uses the MSVC linker. And so," + }, + { + "start": 2526.76, + "duration": 0.0, + "text": "think it uses the MSVC linker. And so, the<00:42:06.840> linker<00:42:07.160> will<00:42:07.400> stitch<00:42:07.680> those<00:42:07.880> together" + }, + { + "start": 2528.11, + "duration": 0.0, + "text": "the linker will stitch those together" + }, + { + "start": 2528.12, + "duration": 0.0, + "text": "the linker will stitch those together and<00:42:08.240> form<00:42:08.440> a<00:42:08.480> PDB,<00:42:09.000> which<00:42:09.200> the<00:42:09.280> debugger<00:42:09.600> knows" + }, + { + "start": 2529.75, + "duration": 0.0, + "text": "and form a PDB, which the debugger knows" + }, + { + "start": 2529.76, + "duration": 0.0, + "text": "and form a PDB, which the debugger knows how<00:42:09.840> to<00:42:09.920> work<00:42:10.120> with.<00:42:10.320> So,<00:42:11.080> if<00:42:11.200> I<00:42:11.240> have<00:42:11.360> a<00:42:11.400> JAI" + }, + { + "start": 2531.83, + "duration": 0.0, + "text": "how to work with. So, if I have a JAI" + }, + { + "start": 2531.84, + "duration": 0.0, + "text": "how to work with. So, if I have a JAI executable,<00:42:12.400> like<00:42:12.560> this<00:42:12.680> is<00:42:12.760> the<00:42:12.880> JAI" + }, + { + "start": 2533.31, + "duration": 0.0, + "text": "executable, like this is the JAI" + }, + { + "start": 2533.32, + "duration": 0.0, + "text": "executable, like this is the JAI Invaders,<00:42:14.200> um" + }, + { + "start": 2535.63, + "duration": 0.0, + "text": "Invaders, um" + }, + { + "start": 2535.64, + "duration": 0.0, + "text": "Invaders, um this<00:42:16.200> uh<00:42:16.320> this<00:42:16.480> also<00:42:16.680> just<00:42:16.920> works." + }, + { + "start": 2537.87, + "duration": 0.0, + "text": "this uh this also just works." + }, + { + "start": 2537.88, + "duration": 0.0, + "text": "this uh this also just works. Um<00:42:18.280> so,<00:42:18.640> here's<00:42:19.000> just<00:42:19.200> the<00:42:19.280> JAI<00:42:19.680> code,<00:42:20.080> and" + }, + { + "start": 2540.19, + "duration": 0.0, + "text": "Um so, here's just the JAI code, and" + }, + { + "start": 2540.2, + "duration": 0.0, + "text": "Um so, here's just the JAI code, and here's<00:42:20.840> me<00:42:21.040> stepping<00:42:21.360> through<00:42:21.600> it,<00:42:21.880> you<00:42:21.920> know," + }, + { + "start": 2542.27, + "duration": 0.0, + "text": "here's me stepping through it, you know," + }, + { + "start": 2542.28, + "duration": 0.0, + "text": "here's me stepping through it, you know, normal<00:42:22.560> stuff." + }, + { + "start": 2543.71, + "duration": 0.0, + "text": "normal stuff." + }, + { + "start": 2543.72, + "duration": 0.0, + "text": "normal stuff. And<00:42:23.840> those<00:42:24.000> type<00:42:24.280> views<00:42:24.560> come<00:42:24.720> in<00:42:24.840> handy<00:42:25.200> with" + }, + { + "start": 2545.67, + "duration": 0.0, + "text": "And those type views come in handy with" + }, + { + "start": 2545.68, + "duration": 0.0, + "text": "And those type views come in handy with uh<00:42:25.920> with<00:42:26.360> languages<00:42:26.800> like<00:42:27.000> JAI<00:42:27.640> because<00:42:28.240> um<00:42:28.840> if" + }, + { + "start": 2548.99, + "duration": 0.0, + "text": "uh with languages like JAI because um if" + }, + { + "start": 2549.0, + "duration": 0.0, + "text": "uh with languages like JAI because um if I<00:42:29.080> were<00:42:29.200> to<00:42:29.280> evaluate<00:42:29.760> strings<00:42:30.200> like<00:42:30.520> uh<00:42:30.600> we" + }, + { + "start": 2550.71, + "duration": 0.0, + "text": "I were to evaluate strings like uh we" + }, + { + "start": 2550.72, + "duration": 0.0, + "text": "I were to evaluate strings like uh we have<00:42:30.800> this<00:42:30.960> base<00:42:31.480> base<00:42:31.760> path<00:42:32.640> thing,<00:42:33.000> you<00:42:33.080> can" + }, + { + "start": 2553.19, + "duration": 0.0, + "text": "have this base base path thing, you can" + }, + { + "start": 2553.2, + "duration": 0.0, + "text": "have this base base path thing, you can see<00:42:33.360> it's<00:42:33.520> like<00:42:34.280> the<00:42:34.360> way<00:42:34.480> these<00:42:34.720> languages" + }, + { + "start": 2555.15, + "duration": 0.0, + "text": "see it's like the way these languages" + }, + { + "start": 2555.16, + "duration": 0.0, + "text": "see it's like the way these languages generate<00:42:35.760> these<00:42:36.560> uh<00:42:36.680> like" + }, + { + "start": 2557.43, + "duration": 0.0, + "text": "generate these uh like" + }, + { + "start": 2557.44, + "duration": 0.0, + "text": "generate these uh like string<00:42:37.720> variables,<00:42:38.040> like<00:42:38.160> generally<00:42:38.480> these" + }, + { + "start": 2558.59, + "duration": 0.0, + "text": "string variables, like generally these" + }, + { + "start": 2558.6, + "duration": 0.0, + "text": "string variables, like generally these languages<00:42:38.960> will<00:42:39.080> first-class<00:42:39.600> strings,<00:42:39.960> but" + }, + { + "start": 2560.63, + "duration": 0.0, + "text": "languages will first-class strings, but" + }, + { + "start": 2560.64, + "duration": 0.0, + "text": "languages will first-class strings, but because<00:42:40.880> they're<00:42:41.040> not<00:42:41.480> um<00:42:41.960> living<00:42:42.600> under<00:42:43.000> a" + }, + { + "start": 2563.07, + "duration": 0.0, + "text": "because they're not um living under a" + }, + { + "start": 2563.08, + "duration": 0.0, + "text": "because they're not um living under a rock,<00:42:43.360> they<00:42:43.480> know<00:42:43.640> to<00:42:43.760> make<00:42:43.960> them" + }, + { + "start": 2564.59, + "duration": 0.0, + "text": "rock, they know to make them" + }, + { + "start": 2564.6, + "duration": 0.0, + "text": "rock, they know to make them length-based<00:42:45.280> strings,<00:42:45.720> right?<00:42:45.920> So,<00:42:46.480> uh<00:42:46.600> JAI" + }, + { + "start": 2566.95, + "duration": 0.0, + "text": "length-based strings, right? So, uh JAI" + }, + { + "start": 2566.96, + "duration": 0.0, + "text": "length-based strings, right? So, uh JAI does<00:42:47.160> this.<00:42:47.360> It's<00:42:47.480> like<00:42:47.640> when<00:42:47.800> you<00:42:47.920> use<00:42:48.120> string" + }, + { + "start": 2568.35, + "duration": 0.0, + "text": "does this. It's like when you use string" + }, + { + "start": 2568.36, + "duration": 0.0, + "text": "does this. It's like when you use string literals,<00:42:48.760> it<00:42:48.840> just<00:42:49.040> returns<00:42:49.400> you<00:42:49.560> a<00:42:49.600> type<00:42:49.960> of" + }, + { + "start": 2570.19, + "duration": 0.0, + "text": "literals, it just returns you a type of" + }, + { + "start": 2570.2, + "duration": 0.0, + "text": "literals, it just returns you a type of this<00:42:50.600> string<00:42:50.920> structure.<00:42:51.880> And<00:42:51.960> that<00:42:52.080> has<00:42:52.200> a" + }, + { + "start": 2572.23, + "duration": 0.0, + "text": "this string structure. And that has a" + }, + { + "start": 2572.24, + "duration": 0.0, + "text": "this string structure. And that has a count<00:42:52.920> and<00:42:53.040> a<00:42:53.080> data,<00:42:53.720> which<00:42:53.920> means<00:42:54.480> we<00:42:54.600> can<00:42:54.720> do" + }, + { + "start": 2575.43, + "duration": 0.0, + "text": "count and a data, which means we can do" + }, + { + "start": 2575.44, + "duration": 0.0, + "text": "count and a data, which means we can do um" + }, + { + "start": 2576.35, + "duration": 0.0, + "text": "um" + }, + { + "start": 2576.36, + "duration": 0.0, + "text": "um uh<00:42:56.600> we<00:42:56.720> can<00:42:56.840> basically<00:42:57.240> do,<00:42:57.560> \"Hey,<00:42:57.840> array" + }, + { + "start": 2578.39, + "duration": 0.0, + "text": "uh we can basically do, \"Hey, array" + }, + { + "start": 2578.4, + "duration": 0.0, + "text": "uh we can basically do, \"Hey, array basepath.data.\"" + }, + { + "start": 2580.15, + "duration": 0.0, + "text": "basepath.data.\"" + }, + { + "start": 2580.16, + "duration": 0.0, + "text": "basepath.data.\" Um" + }, + { + "start": 2581.43, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2581.44, + "duration": 0.0, + "text": "Um and<00:43:01.560> then<00:43:01.720> basepath.count" + }, + { + "start": 2583.27, + "duration": 0.0, + "text": "and then basepath.count" + }, + { + "start": 2583.28, + "duration": 0.0, + "text": "and then basepath.count if<00:43:03.400> we<00:43:03.520> want<00:43:03.720> to,<00:43:04.440> and<00:43:04.560> that'll<00:43:04.760> just<00:43:04.960> show<00:43:05.200> us" + }, + { + "start": 2585.43, + "duration": 0.0, + "text": "if we want to, and that'll just show us" + }, + { + "start": 2585.44, + "duration": 0.0, + "text": "if we want to, and that'll just show us just<00:43:05.640> the<00:43:05.720> string<00:43:05.960> literal<00:43:06.880> when<00:43:07.080> we<00:43:07.160> evaluate" + }, + { + "start": 2587.63, + "duration": 0.0, + "text": "just the string literal when we evaluate" + }, + { + "start": 2587.64, + "duration": 0.0, + "text": "just the string literal when we evaluate it<00:43:07.840> in<00:43:07.960> the<00:43:08.040> watch<00:43:08.240> window." + }, + { + "start": 2589.51, + "duration": 0.0, + "text": "it in the watch window." + }, + { + "start": 2589.52, + "duration": 0.0, + "text": "it in the watch window. And<00:43:09.680> then,<00:43:10.040> so<00:43:10.760> I<00:43:10.880> showed<00:43:11.200> how<00:43:11.320> to<00:43:11.440> embed<00:43:11.960> type" + }, + { + "start": 2592.19, + "duration": 0.0, + "text": "And then, so I showed how to embed type" + }, + { + "start": 2592.2, + "duration": 0.0, + "text": "And then, so I showed how to embed type views<00:43:12.480> into<00:43:12.760> the<00:43:12.960> executables<00:43:13.480> themselves," + }, + { + "start": 2594.03, + "duration": 0.0, + "text": "views into the executables themselves," + }, + { + "start": 2594.04, + "duration": 0.0, + "text": "views into the executables themselves, but<00:43:14.160> you<00:43:14.200> can<00:43:14.320> also<00:43:14.480> do<00:43:14.600> this<00:43:14.720> dynamically<00:43:15.240> in" + }, + { + "start": 2595.35, + "duration": 0.0, + "text": "but you can also do this dynamically in" + }, + { + "start": 2595.36, + "duration": 0.0, + "text": "but you can also do this dynamically in the<00:43:15.440> debugger<00:43:15.800> UI.<00:43:16.440> So,<00:43:16.560> if<00:43:16.680> I<00:43:16.760> did<00:43:17.200> uh<00:43:17.280> I<00:43:17.360> can" + }, + { + "start": 2597.47, + "duration": 0.0, + "text": "the debugger UI. So, if I did uh I can" + }, + { + "start": 2597.48, + "duration": 0.0, + "text": "the debugger UI. So, if I did uh I can open<00:43:17.640> up<00:43:17.720> the<00:43:17.800> type<00:43:18.040> views<00:43:18.280> tab," + }, + { + "start": 2599.47, + "duration": 0.0, + "text": "open up the type views tab," + }, + { + "start": 2599.48, + "duration": 0.0, + "text": "open up the type views tab, which<00:43:19.680> is<00:43:19.760> also<00:43:20.000> a<00:43:20.040> watch<00:43:20.240> window,<00:43:20.920> and<00:43:21.040> we<00:43:21.120> can" + }, + { + "start": 2601.23, + "duration": 0.0, + "text": "which is also a watch window, and we can" + }, + { + "start": 2601.24, + "duration": 0.0, + "text": "which is also a watch window, and we can say,<00:43:21.560> \"Hey,<00:43:21.800> like<00:43:22.000> this<00:43:22.240> string<00:43:22.920> type,<00:43:23.280> I<00:43:23.360> just" + }, + { + "start": 2603.63, + "duration": 0.0, + "text": "say, \"Hey, like this string type, I just" + }, + { + "start": 2603.64, + "duration": 0.0, + "text": "say, \"Hey, like this string type, I just always<00:43:24.000> want<00:43:24.120> to<00:43:24.200> do<00:43:24.440> array,<00:43:25.080> and<00:43:25.200> then<00:43:25.360> what" + }, + { + "start": 2605.47, + "duration": 0.0, + "text": "always want to do array, and then what" + }, + { + "start": 2605.48, + "duration": 0.0, + "text": "always want to do array, and then what is<00:43:25.680> the<00:43:25.920> what<00:43:26.040> is<00:43:26.120> the<00:43:26.200> member<00:43:26.480> called<00:43:26.760> here?\"" + }, + { + "start": 2607.51, + "duration": 0.0, + "text": "is the what is the member called here?\"" + }, + { + "start": 2607.52, + "duration": 0.0, + "text": "is the what is the member called here?\" It's<00:43:27.800> um" + }, + { + "start": 2608.55, + "duration": 0.0, + "text": "It's um" + }, + { + "start": 2608.56, + "duration": 0.0, + "text": "It's um >> Data<00:43:29.200> and<00:43:29.320> count." + }, + { + "start": 2610.35, + "duration": 0.0, + "text": ">> Data and count." + }, + { + "start": 2610.36, + "duration": 0.0, + "text": ">> Data and count. >> Data<00:43:30.640> and<00:43:30.760> count,<00:43:31.040> so<00:43:31.120> I<00:43:31.160> can<00:43:31.280> do,<00:43:31.440> \"Hey,<00:43:31.760> array" + }, + { + "start": 2612.19, + "duration": 0.0, + "text": ">> Data and count, so I can do, \"Hey, array" + }, + { + "start": 2612.2, + "duration": 0.0, + "text": ">> Data and count, so I can do, \"Hey, array data<00:43:32.760> count.\"" + }, + { + "start": 2615.07, + "duration": 0.0, + "text": "data count.\"" + }, + { + "start": 2615.08, + "duration": 0.0, + "text": "data count.\" And<00:43:35.280> so,<00:43:35.520> now<00:43:35.920> if<00:43:36.080> I<00:43:36.160> do,<00:43:36.480> \"Hey,<00:43:36.640> basepath," + }, + { + "start": 2617.39, + "duration": 0.0, + "text": "And so, now if I do, \"Hey, basepath," + }, + { + "start": 2617.4, + "duration": 0.0, + "text": "And so, now if I do, \"Hey, basepath, what<00:43:37.520> is<00:43:37.640> that?\"<00:43:38.080> It's<00:43:38.200> just<00:43:38.360> going<00:43:38.480> to<00:43:38.560> show" + }, + { + "start": 2618.75, + "duration": 0.0, + "text": "what is that?\" It's just going to show" + }, + { + "start": 2618.76, + "duration": 0.0, + "text": "what is that?\" It's just going to show me<00:43:38.960> the<00:43:39.080> string.<00:43:39.880> Um" + }, + { + "start": 2622.19, + "duration": 0.0, + "text": "me the string. Um" + }, + { + "start": 2622.2, + "duration": 0.0, + "text": "me the string. Um uh" + }, + { + "start": 2622.75, + "duration": 0.0, + "text": "uh" + }, + { + "start": 2622.76, + "duration": 0.0, + "text": "uh Same<00:43:43.000> thing<00:43:43.120> with<00:43:43.200> like<00:43:43.360> slices,<00:43:43.880> for" + }, + { + "start": 2623.99, + "duration": 0.0, + "text": "Same thing with like slices, for" + }, + { + "start": 2624.0, + "duration": 0.0, + "text": "Same thing with like slices, for example,<00:43:44.400> like<00:43:44.560> if<00:43:44.680> I<00:43:44.720> wanted<00:43:44.960> to<00:43:45.040> do,<00:43:45.200> \"Hey," + }, + { + "start": 2625.43, + "duration": 0.0, + "text": "example, like if I wanted to do, \"Hey," + }, + { + "start": 2625.44, + "duration": 0.0, + "text": "example, like if I wanted to do, \"Hey, like<00:43:45.680> let's<00:43:45.920> do<00:43:46.200> every<00:43:46.440> time<00:43:46.720> we<00:43:46.840> have<00:43:47.920> a<00:43:48.960> uh<00:43:49.320> a" + }, + { + "start": 2629.39, + "duration": 0.0, + "text": "like let's do every time we have a uh a" + }, + { + "start": 2629.4, + "duration": 0.0, + "text": "like let's do every time we have a uh a slice<00:43:49.880> type," + }, + { + "start": 2633.4, + "duration": 0.0, + "text": "um<00:43:54.080> now<00:43:54.200> I<00:43:54.240> don't<00:43:54.440> actually<00:43:54.680> know<00:43:54.840> what<00:43:54.920> the" + }, + { + "start": 2634.99, + "duration": 0.0, + "text": "um now I don't actually know what the" + }, + { + "start": 2635.0, + "duration": 0.0, + "text": "um now I don't actually know what the type<00:43:55.200> info<00:43:55.440> for<00:43:55.560> these<00:43:55.800> look<00:43:56.000> like,<00:43:56.200> so<00:43:56.720> I<00:43:56.800> feel" + }, + { + "start": 2637.11, + "duration": 0.0, + "text": "type info for these look like, so I feel" + }, + { + "start": 2637.12, + "duration": 0.0, + "text": "type info for these look like, so I feel >> Slice<00:43:57.520> slice<00:43:58.000> is<00:43:58.200> just<00:43:58.640> the<00:43:59.000> brackets<00:43:59.720> without" + }, + { + "start": 2640.07, + "duration": 0.0, + "text": ">> Slice slice is just the brackets without" + }, + { + "start": 2640.08, + "duration": 0.0, + "text": ">> Slice slice is just the brackets without anything,<00:44:00.720> and<00:44:00.880> if<00:44:01.000> you<00:44:01.120> put<00:44:01.320> in" + }, + { + "start": 2641.71, + "duration": 0.0, + "text": "anything, and if you put in" + }, + { + "start": 2641.72, + "duration": 0.0, + "text": "anything, and if you put in >> Oh,<00:44:01.840> you<00:44:02.040> thought<00:44:02.280> yeah,<00:44:02.480> you<00:44:02.600> thought<00:44:03.160> you" + }, + { + "start": 2643.19, + "duration": 0.0, + "text": ">> Oh, you thought yeah, you thought you" + }, + { + "start": 2643.2, + "duration": 0.0, + "text": ">> Oh, you thought yeah, you thought you thought<00:44:03.360> JAI,<00:44:03.880> yeah." + }, + { + "start": 2644.03, + "duration": 0.0, + "text": "thought JAI, yeah." + }, + { + "start": 2644.04, + "duration": 0.0, + "text": "thought JAI, yeah. >> It's<00:44:04.200> the<00:44:04.265> [laughter]<00:44:04.320> dynamic." + }, + { + "start": 2644.99, + "duration": 0.0, + "text": ">> It's the [laughter] dynamic." + }, + { + "start": 2645.0, + "duration": 0.0, + "text": ">> It's the [laughter] dynamic. >> Yeah,<00:44:05.120> but<00:44:05.320> is<00:44:05.440> dynamic,<00:44:05.920> actually.<00:44:06.200> Okay," + }, + { + "start": 2646.47, + "duration": 0.0, + "text": ">> Yeah, but is dynamic, actually. Okay," + }, + { + "start": 2646.48, + "duration": 0.0, + "text": ">> Yeah, but is dynamic, actually. Okay, yeah.<00:44:06.720> So,<00:44:07.120> if<00:44:07.240> I<00:44:07.320> did<00:44:07.560> this,<00:44:08.560> uh<00:44:08.640> I<00:44:08.680> don't<00:44:08.920> know" + }, + { + "start": 2649.03, + "duration": 0.0, + "text": "yeah. So, if I did this, uh I don't know" + }, + { + "start": 2649.04, + "duration": 0.0, + "text": "yeah. So, if I did this, uh I don't know if<00:44:09.160> this<00:44:09.400> is<00:44:09.560> a<00:44:09.640> good<00:44:09.760> example<00:44:10.240> in<00:44:10.320> this." + }, + { + "start": 2651.47, + "duration": 0.0, + "text": "if this is a good example in this." + }, + { + "start": 2651.48, + "duration": 0.0, + "text": "if this is a good example in this. Uh<00:44:11.960> oh,<00:44:12.120> like<00:44:12.400> invader<00:44:12.800> maps.<00:44:13.680> I<00:44:13.760> guess<00:44:13.920> that's" + }, + { + "start": 2654.07, + "duration": 0.0, + "text": "Uh oh, like invader maps. I guess that's" + }, + { + "start": 2654.08, + "duration": 0.0, + "text": "Uh oh, like invader maps. I guess that's a<00:44:14.120> dynamic<00:44:14.560> array.<00:44:14.720> So,<00:44:14.880> invader" + }, + { + "start": 2656.87, + "duration": 0.0, + "text": "a dynamic array. So, invader" + }, + { + "start": 2656.88, + "duration": 0.0, + "text": "a dynamic array. So, invader invader<00:44:17.200> maps.<00:44:17.480> Let<00:44:17.600> me<00:44:17.680> just<00:44:17.800> make<00:44:17.960> sure<00:44:18.080> that" + }, + { + "start": 2658.19, + "duration": 0.0, + "text": "invader maps. Let me just make sure that" + }, + { + "start": 2658.2, + "duration": 0.0, + "text": "invader maps. Let me just make sure that this<00:44:18.360> is<00:44:18.480> non-zero<00:44:19.120> at<00:44:19.240> some<00:44:19.440> point.<00:44:20.080> Um" + }, + { + "start": 2662.76, + "duration": 0.0, + "text": "Like<00:44:22.840> if<00:44:22.960> I<00:44:23.080> go<00:44:23.320> through<00:44:23.560> here," + }, + { + "start": 2664.71, + "duration": 0.0, + "text": "Like if I go through here," + }, + { + "start": 2664.72, + "duration": 0.0, + "text": "Like if I go through here, is<00:44:24.760> it<00:44:24.840> going<00:44:24.960> to<00:44:25.040> load<00:44:25.280> the<00:44:25.360> maps<00:44:25.680> at<00:44:25.760> some" + }, + { + "start": 2665.91, + "duration": 0.0, + "text": "is it going to load the maps at some" + }, + { + "start": 2665.92, + "duration": 0.0, + "text": "is it going to load the maps at some point?" + }, + { + "start": 2668.19, + "duration": 0.0, + "text": "point?" + }, + { + "start": 2668.2, + "duration": 0.0, + "text": "point? Oh,<00:44:28.400> yeah,<00:44:28.640> okay.<00:44:28.880> Invader<00:44:29.160> maps<00:44:29.440> count<00:44:29.760> for" + }, + { + "start": 2670.19, + "duration": 0.0, + "text": "Oh, yeah, okay. Invader maps count for" + }, + { + "start": 2670.2, + "duration": 0.0, + "text": "Oh, yeah, okay. Invader maps count for Okay,<00:44:30.400> so<00:44:30.520> we'll<00:44:30.640> do" + }, + { + "start": 2671.63, + "duration": 0.0, + "text": "Okay, so we'll do" + }, + { + "start": 2671.64, + "duration": 0.0, + "text": "Okay, so we'll do um" + }, + { + "start": 2672.87, + "duration": 0.0, + "text": "um" + }, + { + "start": 2672.88, + "duration": 0.0, + "text": "um data<00:44:33.160> and<00:44:33.280> count<00:44:33.680> is<00:44:34.040> all<00:44:34.160> we<00:44:34.280> need.<00:44:34.680> So,<00:44:34.800> we" + }, + { + "start": 2674.87, + "duration": 0.0, + "text": "data and count is all we need. So, we" + }, + { + "start": 2674.88, + "duration": 0.0, + "text": "data and count is all we need. So, we can<00:44:35.000> go<00:44:35.120> ahead<00:44:35.280> and<00:44:35.400> do,<00:44:35.640> \"Hey," + }, + { + "start": 2678.32, + "duration": 0.0, + "text": "um" + }, + { + "start": 2679.55, + "duration": 0.0, + "text": "um" + }, + { + "start": 2679.56, + "duration": 0.0, + "text": "um we'll<00:44:39.640> do<00:44:39.800> array" + }, + { + "start": 2680.99, + "duration": 0.0, + "text": "we'll do array" + }, + { + "start": 2681.0, + "duration": 0.0, + "text": "we'll do array data" + }, + { + "start": 2682.07, + "duration": 0.0, + "text": "data" + }, + { + "start": 2682.08, + "duration": 0.0, + "text": "data and<00:44:42.160> count." + }, + { + "start": 2683.55, + "duration": 0.0, + "text": "and count." + }, + { + "start": 2683.56, + "duration": 0.0, + "text": "and count. And<00:44:43.600> there<00:44:43.720> we<00:44:43.800> go." + }, + { + "start": 2685.51, + "duration": 0.0, + "text": "And there we go." + }, + { + "start": 2685.52, + "duration": 0.0, + "text": "And there we go. So,<00:44:45.600> now<00:44:45.760> we<00:44:45.840> just<00:44:46.040> get<00:44:46.160> the<00:44:46.240> array<00:44:46.440> view." + }, + { + "start": 2687.39, + "duration": 0.0, + "text": "So, now we just get the array view." + }, + { + "start": 2687.4, + "duration": 0.0, + "text": "So, now we just get the array view. Nice." + }, + { + "start": 2687.95, + "duration": 0.0, + "text": "Nice." + }, + { + "start": 2687.96, + "duration": 0.0, + "text": "Nice. >> So," + }, + { + "start": 2689.35, + "duration": 0.0, + "text": ">> So," + }, + { + "start": 2689.36, + "duration": 0.0, + "text": ">> So, Uh<00:44:49.640> so,<00:44:49.800> yeah.<00:44:50.320> That's<00:44:50.640> um" + }, + { + "start": 2692.03, + "duration": 0.0, + "text": "Uh so, yeah. That's um" + }, + { + "start": 2692.04, + "duration": 0.0, + "text": "Uh so, yeah. That's um You<00:44:52.080> can<00:44:52.200> see<00:44:52.360> unit<00:44:52.640> color." + }, + { + "start": 2694.03, + "duration": 0.0, + "text": "You can see unit color." + }, + { + "start": 2694.04, + "duration": 0.0, + "text": "You can see unit color. Uh<00:44:54.120> well,<00:44:54.440> I<00:44:54.520> don't<00:44:54.760> want<00:44:54.880> to<00:44:54.920> put<00:44:55.080> it<00:44:55.200> that" + }, + { + "start": 2695.43, + "duration": 0.0, + "text": "Uh well, I don't want to put it that" + }, + { + "start": 2695.44, + "duration": 0.0, + "text": "Uh well, I don't want to put it that onto<00:44:55.640> a<00:44:55.680> vector<00:44:55.960> four,<00:44:56.200> cuz<00:44:56.320> that's<00:44:56.520> a<00:44:56.600> general" + }, + { + "start": 2697.39, + "duration": 0.0, + "text": "onto a vector four, cuz that's a general" + }, + { + "start": 2697.4, + "duration": 0.0, + "text": "onto a vector four, cuz that's a general general<00:44:57.720> type.<00:44:58.000> But,<00:44:58.400> yeah,<00:44:58.600> anyways." + }, + { + "start": 2699.55, + "duration": 0.0, + "text": "general type. But, yeah, anyways." + }, + { + "start": 2699.56, + "duration": 0.0, + "text": "general type. But, yeah, anyways. Um" + }, + { + "start": 2700.11, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2700.12, + "duration": 0.0, + "text": "Um So,<00:45:00.240> yeah,<00:45:00.320> that's<00:45:00.480> probably<00:45:00.680> a<00:45:00.720> good<00:45:00.840> place" + }, + { + "start": 2700.99, + "duration": 0.0, + "text": "So, yeah, that's probably a good place" + }, + { + "start": 2701.0, + "duration": 0.0, + "text": "So, yeah, that's probably a good place to<00:45:01.120> stop.<00:45:01.480> Um<00:45:01.680> I<00:45:01.760> guess<00:45:02.000> the<00:45:02.400> the" + }, + { + "start": 2704.67, + "duration": 0.0, + "text": "to stop. Um I guess the the" + }, + { + "start": 2704.68, + "duration": 0.0, + "text": "to stop. Um I guess the the I<00:45:04.720> can<00:45:04.840> also<00:45:05.040> do<00:45:05.200> Odin<00:45:05.720> as<00:45:05.880> well.<00:45:06.000> Since<00:45:06.200> I" + }, + { + "start": 2706.23, + "duration": 0.0, + "text": "I can also do Odin as well. Since I" + }, + { + "start": 2706.24, + "duration": 0.0, + "text": "I can also do Odin as well. Since I showed<00:45:06.440> Jai,<00:45:06.680> I<00:45:06.800> can<00:45:06.960> show<00:45:07.120> Odin." + }, + { + "start": 2708.15, + "duration": 0.0, + "text": "showed Jai, I can show Odin." + }, + { + "start": 2708.16, + "duration": 0.0, + "text": "showed Jai, I can show Odin. Here's<00:45:08.320> the<00:45:08.400> Odin<00:45:08.880> example<00:45:09.240> program." + }, + { + "start": 2710.47, + "duration": 0.0, + "text": "Here's the Odin example program." + }, + { + "start": 2710.48, + "duration": 0.0, + "text": "Here's the Odin example program. Um" + }, + { + "start": 2711.35, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2711.36, + "duration": 0.0, + "text": "Um yeah.<00:45:11.680> Same<00:45:11.920> stuff.<00:45:12.840> Usual<00:45:13.520> debugging" + }, + { + "start": 2713.87, + "duration": 0.0, + "text": "yeah. Same stuff. Usual debugging" + }, + { + "start": 2713.88, + "duration": 0.0, + "text": "yeah. Same stuff. Usual debugging features<00:45:14.280> just<00:45:14.440> available" + }, + { + "start": 2715.59, + "duration": 0.0, + "text": "features just available" + }, + { + "start": 2715.6, + "duration": 0.0, + "text": "features just available for<00:45:15.680> all<00:45:15.760> these<00:45:15.920> languages.<00:45:16.360> So," + }, + { + "start": 2717.27, + "duration": 0.0, + "text": "for all these languages. So," + }, + { + "start": 2717.28, + "duration": 0.0, + "text": "for all these languages. So, >> Nice." + }, + { + "start": 2717.71, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2717.72, + "duration": 0.0, + "text": ">> Nice. >> Yeah." + }, + { + "start": 2719.71, + "duration": 0.0, + "text": ">> Yeah." + }, + { + "start": 2719.72, + "duration": 0.0, + "text": ">> Yeah. >> Nice." + }, + { + "start": 2721.87, + "duration": 0.0, + "text": ">> Nice." + }, + { + "start": 2721.88, + "duration": 0.0, + "text": ">> Nice. All<00:45:21.960> right." + }, + { + "start": 2723.35, + "duration": 0.0, + "text": "All right." + }, + { + "start": 2723.36, + "duration": 0.0, + "text": "All right. Then," + }, + { + "start": 2724.91, + "duration": 0.0, + "text": "Then," + }, + { + "start": 2724.92, + "duration": 0.0, + "text": "Then, we're<00:45:25.040> going<00:45:25.200> to<00:45:25.280> switch<00:45:25.600> to<00:45:25.720> source<00:45:26.120> code." + }, + { + "start": 2726.35, + "duration": 0.0, + "text": "we're going to switch to source code." + }, + { + "start": 2726.36, + "duration": 0.0, + "text": "we're going to switch to source code. Now,<00:45:26.640> do<00:45:26.760> you<00:45:26.880> want<00:45:27.160> a<00:45:27.240> little<00:45:27.400> bit<00:45:27.520> of<00:45:27.640> break?" + }, + { + "start": 2728.07, + "duration": 0.0, + "text": "Now, do you want a little bit of break?" + }, + { + "start": 2728.08, + "duration": 0.0, + "text": "Now, do you want a little bit of break? >> Sweet." + }, + { + "start": 2728.87, + "duration": 0.0, + "text": ">> Sweet." + }, + { + "start": 2728.88, + "duration": 0.0, + "text": ">> Sweet. >> Or" + }, + { + "start": 2729.51, + "duration": 0.0, + "text": ">> Or" + }, + { + "start": 2729.52, + "duration": 0.0, + "text": ">> Or >> Uh<00:45:30.000> I'm<00:45:30.200> okay<00:45:30.480> to<00:45:30.560> keep<00:45:30.720> going.<00:45:31.040> I<00:45:31.080> mean,<00:45:31.280> we" + }, + { + "start": 2731.35, + "duration": 0.0, + "text": ">> Uh I'm okay to keep going. I mean, we" + }, + { + "start": 2731.36, + "duration": 0.0, + "text": ">> Uh I'm okay to keep going. I mean, we can<00:45:31.480> take<00:45:31.640> a<00:45:31.680> break<00:45:31.840> if<00:45:31.960> you<00:45:32.080> if<00:45:32.200> that<00:45:32.360> helps." + }, + { + "start": 2733.07, + "duration": 0.0, + "text": "can take a break if you if that helps." + }, + { + "start": 2733.08, + "duration": 0.0, + "text": "can take a break if you if that helps. Um" + }, + { + "start": 2733.87, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2733.88, + "duration": 0.0, + "text": "Um I<00:45:33.960> don't<00:45:34.160> need<00:45:34.320> it<00:45:34.520> necessarily." + }, + { + "start": 2735.75, + "duration": 0.0, + "text": "I don't need it necessarily." + }, + { + "start": 2735.76, + "duration": 0.0, + "text": "I don't need it necessarily. >> Uh" + }, + { + "start": 2736.47, + "duration": 0.0, + "text": ">> Uh" + }, + { + "start": 2736.48, + "duration": 0.0, + "text": ">> Uh if<00:45:36.720> you<00:45:37.280> can<00:45:37.480> keep<00:45:37.720> going,<00:45:38.000> then<00:45:38.160> let's<00:45:38.440> keep" + }, + { + "start": 2738.63, + "duration": 0.0, + "text": "if you can keep going, then let's keep" + }, + { + "start": 2738.64, + "duration": 0.0, + "text": "if you can keep going, then let's keep going." + }, + { + "start": 2739.67, + "duration": 0.0, + "text": "going." + }, + { + "start": 2739.68, + "duration": 0.0, + "text": "going. I'm<00:45:40.080> looking<00:45:40.480> taking<00:45:40.760> a<00:45:40.800> look<00:45:40.960> at<00:45:41.080> the<00:45:41.680> chat." + }, + { + "start": 2742.67, + "duration": 0.0, + "text": "I'm looking taking a look at the chat." + }, + { + "start": 2742.68, + "duration": 0.0, + "text": "I'm looking taking a look at the chat. My<00:45:43.320> idea<00:45:44.000> would<00:45:44.240> be<00:45:44.440> to<00:45:44.680> sort<00:45:44.920> of<00:45:45.160> do<00:45:45.920> first" + }, + { + "start": 2746.27, + "duration": 0.0, + "text": "My idea would be to sort of do first" + }, + { + "start": 2746.28, + "duration": 0.0, + "text": "My idea would be to sort of do first like<00:45:46.440> a<00:45:46.480> bit<00:45:46.640> of<00:45:46.760> a<00:45:46.840> high<00:45:47.040> level,<00:45:47.640> and<00:45:47.800> then" + }, + { + "start": 2747.99, + "duration": 0.0, + "text": "like a bit of a high level, and then" + }, + { + "start": 2748.0, + "duration": 0.0, + "text": "like a bit of a high level, and then we'll<00:45:48.120> pick<00:45:48.360> some<00:45:48.560> parts<00:45:48.920> where<00:45:49.080> we<00:45:49.200> can<00:45:49.320> dive" + }, + { + "start": 2749.55, + "duration": 0.0, + "text": "we'll pick some parts where we can dive" + }, + { + "start": 2749.56, + "duration": 0.0, + "text": "we'll pick some parts where we can dive into.<00:45:50.360> So," + }, + { + "start": 2750.91, + "duration": 0.0, + "text": "into. So," + }, + { + "start": 2750.92, + "duration": 0.0, + "text": "into. So, >> Okay,<00:45:51.120> sure." + }, + { + "start": 2751.51, + "duration": 0.0, + "text": ">> Okay, sure." + }, + { + "start": 2751.52, + "duration": 0.0, + "text": ">> Okay, sure. >> you<00:45:51.600> know.<00:45:52.160> I<00:45:52.280> think<00:45:52.520> the<00:45:52.640> first<00:45:53.720> uh<00:45:54.560> first" + }, + { + "start": 2755.07, + "duration": 0.0, + "text": ">> you know. I think the first uh first" + }, + { + "start": 2755.08, + "duration": 0.0, + "text": ">> you know. I think the first uh first part<00:45:55.640> could<00:45:55.920> be<00:45:56.240> a<00:45:56.360> little<00:45:56.520> bit<00:45:56.640> about<00:45:57.000> like" + }, + { + "start": 2757.19, + "duration": 0.0, + "text": "part could be a little bit about like" + }, + { + "start": 2757.2, + "duration": 0.0, + "text": "part could be a little bit about like high<00:45:57.360> level<00:45:57.760> structure,<00:45:58.880> what<00:45:59.120> is<00:45:59.280> where<00:45:59.640> in" + }, + { + "start": 2759.79, + "duration": 0.0, + "text": "high level structure, what is where in" + }, + { + "start": 2759.8, + "duration": 0.0, + "text": "high level structure, what is where in terms<00:46:00.080> of<00:46:00.720> source<00:46:01.120> code,<00:46:01.440> so<00:46:01.520> that<00:46:01.760> we<00:46:01.840> don't" + }, + { + "start": 2762.11, + "duration": 0.0, + "text": "terms of source code, so that we don't" + }, + { + "start": 2762.12, + "duration": 0.0, + "text": "terms of source code, so that we don't get<00:46:02.680> too<00:46:02.960> too<00:46:03.200> lost<00:46:04.160> immediately." + }, + { + "start": 2764.75, + "duration": 0.0, + "text": "get too too lost immediately." + }, + { + "start": 2764.76, + "duration": 0.0, + "text": "get too too lost immediately. >> Got<00:46:04.800> it." + }, + { + "start": 2765.79, + "duration": 0.0, + "text": ">> Got it." + }, + { + "start": 2765.8, + "duration": 0.0, + "text": ">> Got it. Okay." + }, + { + "start": 2767.11, + "duration": 0.0, + "text": "Okay." + }, + { + "start": 2767.12, + "duration": 0.0, + "text": "Okay. Um" + }, + { + "start": 2769.31, + "duration": 0.0, + "text": "Um" + }, + { + "start": 2769.32, + "duration": 0.0, + "text": "Um >> Oh,<00:46:10.080> there<00:46:10.240> was<00:46:10.480> there<00:46:10.640> was<00:46:10.840> one<00:46:11.160> there<00:46:11.320> was" + }, + { + "start": 2771.43, + "duration": 0.0, + "text": ">> Oh, there was there was one there was" + }, + { + "start": 2771.44, + "duration": 0.0, + "text": ">> Oh, there was there was one there was one<00:46:11.640> question<00:46:12.120> that<00:46:12.240> was<00:46:12.440> repeated<00:46:13.320> a<00:46:13.360> lot<00:46:13.640> of" + }, + { + "start": 2773.75, + "duration": 0.0, + "text": "one question that was repeated a lot of" + }, + { + "start": 2773.76, + "duration": 0.0, + "text": "one question that was repeated a lot of times<00:46:14.120> in<00:46:14.200> the<00:46:14.320> chat.<00:46:15.160> When<00:46:15.640> uh<00:46:15.920> the<00:46:16.080> debugger" + }, + { + "start": 2776.55, + "duration": 0.0, + "text": "times in the chat. When uh the debugger" + }, + { + "start": 2776.56, + "duration": 0.0, + "text": "times in the chat. When uh the debugger will<00:46:16.720> become<00:46:17.240> a<00:46:17.360> code<00:46:17.720> editor?" + }, + { + "start": 2779.841, + "duration": 0.0, + "text": "will become a code editor?" + }, + { + "start": 2779.851, + "duration": 0.0, + "text": "will become a code editor? >> [laughter]" + }, + { + "start": 2780.55, + "duration": 0.0, + "text": ">> [laughter]" + }, + { + "start": 2780.56, + "duration": 0.0, + "text": ">> [laughter] >> Uh<00:46:20.960> so,<00:46:21.640> that's<00:46:21.920> like<00:46:22.080> very<00:46:22.360> long<00:46:22.640> term.<00:46:23.320> If<00:46:23.480> we" + }, + { + "start": 2783.59, + "duration": 0.0, + "text": ">> Uh so, that's like very long term. If we" + }, + { + "start": 2783.6, + "duration": 0.0, + "text": ">> Uh so, that's like very long term. If we ever<00:46:23.760> decide<00:46:24.080> to<00:46:24.160> do<00:46:24.320> that,<00:46:24.640> it's<00:46:24.760> just<00:46:24.960> that" + }, + { + "start": 2785.35, + "duration": 0.0, + "text": "ever decide to do that, it's just that" + }, + { + "start": 2785.36, + "duration": 0.0, + "text": "ever decide to do that, it's just that there's<00:46:25.520> so<00:46:25.680> much<00:46:25.960> debugging<00:46:26.400> stuff<00:46:26.640> we<00:46:26.720> need" + }, + { + "start": 2786.87, + "duration": 0.0, + "text": "there's so much debugging stuff we need" + }, + { + "start": 2786.88, + "duration": 0.0, + "text": "there's so much debugging stuff we need to<00:46:26.960> do<00:46:27.120> first<00:46:27.560> that<00:46:28.040> we're<00:46:28.360> going<00:46:28.520> to<00:46:28.920> we're" + }, + { + "start": 2789.03, + "duration": 0.0, + "text": "to do first that we're going to we're" + }, + { + "start": 2789.04, + "duration": 0.0, + "text": "to do first that we're going to we're focusing<00:46:29.360> on<00:46:29.440> debugger<00:46:29.720> stuff<00:46:30.000> first<00:46:30.200> because" + }, + { + "start": 2790.47, + "duration": 0.0, + "text": "focusing on debugger stuff first because" + }, + { + "start": 2790.48, + "duration": 0.0, + "text": "focusing on debugger stuff first because it's<00:46:30.640> more<00:46:30.840> important.<00:46:31.680> Like<00:46:31.840> there<00:46:31.960> are" + }, + { + "start": 2792.03, + "duration": 0.0, + "text": "it's more important. Like there are" + }, + { + "start": 2792.04, + "duration": 0.0, + "text": "it's more important. Like there are plenty<00:46:32.320> of<00:46:32.400> editors<00:46:32.800> available<00:46:33.280> on<00:46:33.400> Linux," + }, + { + "start": 2793.79, + "duration": 0.0, + "text": "plenty of editors available on Linux," + }, + { + "start": 2793.8, + "duration": 0.0, + "text": "plenty of editors available on Linux, right?<00:46:34.080> But<00:46:34.280> there's<00:46:34.520> really<00:46:34.720> not<00:46:34.880> that<00:46:35.040> many" + }, + { + "start": 2795.19, + "duration": 0.0, + "text": "right? But there's really not that many" + }, + { + "start": 2795.2, + "duration": 0.0, + "text": "right? But there's really not that many graphical<00:46:35.880> like<00:46:36.120> good<00:46:36.360> graphical<00:46:36.720> editors<00:46:37.080> on" + }, + { + "start": 2797.19, + "duration": 0.0, + "text": "graphical like good graphical editors on" + }, + { + "start": 2797.2, + "duration": 0.0, + "text": "graphical like good graphical editors on Linux.<00:46:38.040> And<00:46:38.160> so,<00:46:38.280> the<00:46:38.400> debugger's<00:46:38.920> really<00:46:39.120> the" + }, + { + "start": 2799.23, + "duration": 0.0, + "text": "Linux. And so, the debugger's really the" + }, + { + "start": 2799.24, + "duration": 0.0, + "text": "Linux. And so, the debugger's really the high<00:46:39.440> value<00:46:39.760> thing<00:46:39.880> we<00:46:40.000> want<00:46:40.120> to<00:46:40.200> provide" + }, + { + "start": 2800.99, + "duration": 0.0, + "text": "high value thing we want to provide" + }, + { + "start": 2801.0, + "duration": 0.0, + "text": "high value thing we want to provide first.<00:46:41.480> I<00:46:41.560> think<00:46:41.800> someday<00:46:42.200> it'll<00:46:42.400> make<00:46:42.560> a" + }, + { + "start": 2802.63, + "duration": 0.0, + "text": "first. I think someday it'll make a" + }, + { + "start": 2802.64, + "duration": 0.0, + "text": "first. I think someday it'll make a whole<00:46:42.840> lot<00:46:43.000> of<00:46:43.080> sense<00:46:43.320> to<00:46:43.440> put<00:46:43.640> editing" + }, + { + "start": 2803.95, + "duration": 0.0, + "text": "whole lot of sense to put editing" + }, + { + "start": 2803.96, + "duration": 0.0, + "text": "whole lot of sense to put editing functionality<00:46:44.520> inside<00:46:44.960> because<00:46:45.560> it's<00:46:45.640> not" + }, + { + "start": 2805.83, + "duration": 0.0, + "text": "functionality inside because it's not" + }, + { + "start": 2805.84, + "duration": 0.0, + "text": "functionality inside because it's not even<00:46:46.360> it's<00:46:46.480> not<00:46:46.640> even<00:46:46.800> for<00:46:47.080> the<00:46:47.280> purposes<00:46:47.680> of" + }, + { + "start": 2807.75, + "duration": 0.0, + "text": "even it's not even for the purposes of" + }, + { + "start": 2807.76, + "duration": 0.0, + "text": "even it's not even for the purposes of being<00:46:47.960> a<00:46:48.000> code<00:46:48.200> editor.<00:46:49.000> It's<00:46:49.160> really<00:46:49.360> because" + }, + { + "start": 2809.83, + "duration": 0.0, + "text": "being a code editor. It's really because" + }, + { + "start": 2809.84, + "duration": 0.0, + "text": "being a code editor. It's really because with<00:46:50.120> multi-line<00:46:50.720> string<00:46:51.000> visualization,<00:46:51.960> so" + }, + { + "start": 2812.11, + "duration": 0.0, + "text": "with multi-line string visualization, so" + }, + { + "start": 2812.12, + "duration": 0.0, + "text": "with multi-line string visualization, so if<00:46:52.240> I,<00:46:52.360> you<00:46:52.480> know,<00:46:52.680> if<00:46:52.840> I<00:46:52.880> go<00:46:53.000> back<00:46:53.200> to<00:46:53.280> those" + }, + { + "start": 2813.43, + "duration": 0.0, + "text": "if I, you know, if I go back to those" + }, + { + "start": 2813.44, + "duration": 0.0, + "text": "if I, you know, if I go back to those examples<00:46:53.840> where<00:46:53.920> I<00:46:53.960> had<00:46:54.080> that<00:46:54.240> long<00:46:54.520> string" + }, + { + "start": 2814.83, + "duration": 0.0, + "text": "examples where I had that long string" + }, + { + "start": 2814.84, + "duration": 0.0, + "text": "examples where I had that long string that<00:46:55.000> I<00:46:55.040> showed<00:46:55.760> in<00:46:55.880> the<00:46:55.960> text<00:46:56.160> visualizer" + }, + { + "start": 2816.67, + "duration": 0.0, + "text": "that I showed in the text visualizer" + }, + { + "start": 2816.68, + "duration": 0.0, + "text": "that I showed in the text visualizer just<00:46:56.840> like<00:46:57.040> the<00:46:57.280> just<00:46:57.440> like<00:46:57.520> the<00:46:57.600> source<00:46:57.800> code." + }, + { + "start": 2819.03, + "duration": 0.0, + "text": "just like the just like the source code." + }, + { + "start": 2819.04, + "duration": 0.0, + "text": "just like the just like the source code. If<00:46:59.160> you're<00:46:59.320> working<00:46:59.640> with<00:46:59.760> a<00:46:59.800> lot<00:47:00.000> of<00:47:00.040> text" + }, + { + "start": 2820.47, + "duration": 0.0, + "text": "If you're working with a lot of text" + }, + { + "start": 2820.48, + "duration": 0.0, + "text": "If you're working with a lot of text data<00:47:01.280> and<00:47:01.400> you're<00:47:01.520> debugging,<00:47:01.960> like<00:47:02.080> we<00:47:02.200> can" + }, + { + "start": 2822.31, + "duration": 0.0, + "text": "data and you're debugging, like we can" + }, + { + "start": 2822.32, + "duration": 0.0, + "text": "data and you're debugging, like we can edit<00:47:02.520> things<00:47:02.720> in<00:47:02.800> the<00:47:02.840> memory<00:47:03.200> view,<00:47:03.680> we<00:47:03.800> can" + }, + { + "start": 2823.91, + "duration": 0.0, + "text": "edit things in the memory view, we can" + }, + { + "start": 2823.92, + "duration": 0.0, + "text": "edit things in the memory view, we can edit<00:47:04.200> the<00:47:04.320> colors,<00:47:04.840> we<00:47:04.960> can<00:47:05.080> edit<00:47:05.400> like<00:47:06.000> we<00:47:06.120> can" + }, + { + "start": 2826.23, + "duration": 0.0, + "text": "edit the colors, we can edit like we can" + }, + { + "start": 2826.24, + "duration": 0.0, + "text": "edit the colors, we can edit like we can edit<00:47:06.400> values<00:47:06.760> inside<00:47:06.960> the<00:47:07.040> watch<00:47:07.240> window." + }, + { + "start": 2827.83, + "duration": 0.0, + "text": "edit values inside the watch window." + }, + { + "start": 2827.84, + "duration": 0.0, + "text": "edit values inside the watch window. It's<00:47:08.000> like<00:47:08.200> really<00:47:08.440> all<00:47:08.560> these<00:47:08.720> visualizers" + }, + { + "start": 2829.27, + "duration": 0.0, + "text": "It's like really all these visualizers" + }, + { + "start": 2829.28, + "duration": 0.0, + "text": "It's like really all these visualizers should<00:47:09.480> also<00:47:09.680> have<00:47:09.840> editing<00:47:10.120> functionality" + }, + { + "start": 2830.79, + "duration": 0.0, + "text": "should also have editing functionality" + }, + { + "start": 2830.8, + "duration": 0.0, + "text": "should also have editing functionality at<00:47:10.960> the<00:47:11.080> limit.<00:47:11.440> So,<00:47:11.560> I<00:47:11.640> think<00:47:11.840> that<00:47:12.120> should" + }, + { + "start": 2832.31, + "duration": 0.0, + "text": "at the limit. So, I think that should" + }, + { + "start": 2832.32, + "duration": 0.0, + "text": "at the limit. So, I think that should apply<00:47:12.600> also<00:47:12.840> to<00:47:12.960> the<00:47:13.040> text<00:47:13.280> visualizer,<00:47:14.160> which" + }, + { + "start": 2834.39, + "duration": 0.0, + "text": "apply also to the text visualizer, which" + }, + { + "start": 2834.4, + "duration": 0.0, + "text": "apply also to the text visualizer, which means<00:47:14.800> it<00:47:14.960> necessarily<00:47:15.560> also<00:47:15.800> has<00:47:15.960> to<00:47:16.080> apply" + }, + { + "start": 2836.95, + "duration": 0.0, + "text": "means it necessarily also has to apply" + }, + { + "start": 2836.96, + "duration": 0.0, + "text": "means it necessarily also has to apply to<00:47:17.240> source<00:47:17.560> code<00:47:17.800> views,<00:47:18.480> right?<00:47:18.800> So,<00:47:19.080> it's" + }, + { + "start": 2839.43, + "duration": 0.0, + "text": "to source code views, right? So, it's" + }, + { + "start": 2839.44, + "duration": 0.0, + "text": "to source code views, right? So, it's it's<00:47:19.880> I<00:47:19.960> think<00:47:20.160> eventually<00:47:20.600> it'll<00:47:20.760> become" + }, + { + "start": 2841.03, + "duration": 0.0, + "text": "it's I think eventually it'll become" + }, + { + "start": 2841.04, + "duration": 0.0, + "text": "it's I think eventually it'll become that.<00:47:21.760> Um" + }, + { + "start": 2842.51, + "duration": 0.0, + "text": "that. Um" + }, + { + "start": 2842.52, + "duration": 0.0, + "text": "that. Um but<00:47:22.640> it's<00:47:22.760> just<00:47:22.920> not<00:47:23.360> the<00:47:23.440> high<00:47:23.680> priority" + }, + { + "start": 2844.27, + "duration": 0.0, + "text": "but it's just not the high priority" + }, + { + "start": 2844.28, + "duration": 0.0, + "text": "but it's just not the high priority right<00:47:24.440> now<00:47:24.560> cuz<00:47:24.760> obviously<00:47:25.040> we<00:47:25.120> have<00:47:25.240> the" + }, + { + "start": 2845.31, + "duration": 0.0, + "text": "right now cuz obviously we have the" + }, + { + "start": 2845.32, + "duration": 0.0, + "text": "right now cuz obviously we have the porting<00:47:25.720> stuff<00:47:25.960> to<00:47:26.040> do<00:47:26.240> before<00:47:26.440> we<00:47:26.520> get<00:47:26.640> to<00:47:26.760> all" + }, + { + "start": 2846.95, + "duration": 0.0, + "text": "porting stuff to do before we get to all" + }, + { + "start": 2846.96, + "duration": 0.0, + "text": "porting stuff to do before we get to all the<00:47:27.040> fancy<00:47:27.440> stuff.<00:47:27.800> We<00:47:27.880> have<00:47:28.000> porting<00:47:28.400> to<00:47:28.520> do" + }, + { + "start": 2849.11, + "duration": 0.0, + "text": "the fancy stuff. We have porting to do" + }, + { + "start": 2849.12, + "duration": 0.0, + "text": "the fancy stuff. We have porting to do both<00:47:29.320> to<00:47:29.560> Linux<00:47:29.920> but<00:47:30.040> also<00:47:30.400> to<00:47:30.600> from<00:47:30.800> x64<00:47:31.440> to" + }, + { + "start": 2851.59, + "duration": 0.0, + "text": "both to Linux but also to from x64 to" + }, + { + "start": 2851.6, + "duration": 0.0, + "text": "both to Linux but also to from x64 to arm,<00:47:32.520> um<00:47:32.880> and<00:47:32.960> then<00:47:33.080> probably<00:47:33.520> like<00:47:33.720> risk<00:47:34.000> five" + }, + { + "start": 2854.39, + "duration": 0.0, + "text": "arm, um and then probably like risk five" + }, + { + "start": 2854.4, + "duration": 0.0, + "text": "arm, um and then probably like risk five or<00:47:34.480> whatever,<00:47:34.960> and<00:47:35.080> then<00:47:35.360> like<00:47:35.840> we<00:47:35.920> just<00:47:36.080> want" + }, + { + "start": 2856.19, + "duration": 0.0, + "text": "or whatever, and then like we just want" + }, + { + "start": 2856.2, + "duration": 0.0, + "text": "or whatever, and then like we just want to<00:47:36.280> start<00:47:36.480> doing<00:47:36.720> all<00:47:36.840> the<00:47:37.080> we<00:47:37.200> want<00:47:37.320> to<00:47:37.400> cover" + }, + { + "start": 2857.63, + "duration": 0.0, + "text": "to start doing all the we want to cover" + }, + { + "start": 2857.64, + "duration": 0.0, + "text": "to start doing all the we want to cover those<00:47:37.880> bases<00:47:38.320> first<00:47:38.800> so<00:47:38.920> that<00:47:39.080> we<00:47:39.160> don't<00:47:39.480> get" + }, + { + "start": 2859.67, + "duration": 0.0, + "text": "those bases first so that we don't get" + }, + { + "start": 2859.68, + "duration": 0.0, + "text": "those bases first so that we don't get ahead<00:47:39.840> of<00:47:39.960> ourselves,<00:47:40.960> um<00:47:41.280> and<00:47:41.400> build<00:47:42.080> all" + }, + { + "start": 2862.23, + "duration": 0.0, + "text": "ahead of ourselves, um and build all" + }, + { + "start": 2862.24, + "duration": 0.0, + "text": "ahead of ourselves, um and build all those<00:47:42.440> kinds<00:47:42.680> of<00:47:42.760> crazy<00:47:43.040> features<00:47:43.400> on<00:47:43.520> a" + }, + { + "start": 2863.59, + "duration": 0.0, + "text": "those kinds of crazy features on a" + }, + { + "start": 2863.6, + "duration": 0.0, + "text": "those kinds of crazy features on a really<00:47:43.960> unstable<00:47:44.440> foundation.<00:47:44.960> So,<00:47:45.040> we<00:47:45.160> want" + }, + { + "start": 2865.27, + "duration": 0.0, + "text": "really unstable foundation. So, we want" + }, + { + "start": 2865.28, + "duration": 0.0, + "text": "really unstable foundation. So, we want to<00:47:45.360> make<00:47:45.440> sure<00:47:45.560> to<00:47:45.640> do<00:47:45.760> it<00:47:45.920> really<00:47:46.440> really<00:47:46.800> uh" + }, + { + "start": 2867.51, + "duration": 0.0, + "text": "to make sure to do it really really uh" + }, + { + "start": 2867.52, + "duration": 0.0, + "text": "to make sure to do it really really uh um" + }, + { + "start": 2868.91, + "duration": 0.0, + "text": "um" + }, + { + "start": 2868.92, + "duration": 0.0, + "text": "um really<00:47:49.120> appropriately,<00:47:50.080> I<00:47:50.160> guess<00:47:50.320> is<00:47:50.440> what<00:47:50.560> I" + }, + { + "start": 2870.59, + "duration": 0.0, + "text": "really appropriately, I guess is what I" + }, + { + "start": 2870.6, + "duration": 0.0, + "text": "really appropriately, I guess is what I would<00:47:50.720> say.<00:47:51.200> Um<00:47:51.520> so,<00:47:51.840> not<00:47:52.160> anytime<00:47:52.560> soon,<00:47:53.080> but" + }, + { + "start": 2873.43, + "duration": 0.0, + "text": "would say. Um so, not anytime soon, but" + }, + { + "start": 2873.44, + "duration": 0.0, + "text": "would say. Um so, not anytime soon, but there<00:47:53.600> are<00:47:53.800> a<00:47:53.840> lot<00:47:54.040> of<00:47:54.120> features<00:47:54.480> in<00:47:54.560> the<00:47:54.640> rad" + }, + { + "start": 2874.79, + "duration": 0.0, + "text": "there are a lot of features in the rad" + }, + { + "start": 2874.8, + "duration": 0.0, + "text": "there are a lot of features in the rad debugger<00:47:55.120> to<00:47:56.000> hook<00:47:56.200> up<00:47:56.360> to<00:47:56.480> an<00:47:56.600> editor," + }, + { + "start": 2877.95, + "duration": 0.0, + "text": "debugger to hook up to an editor," + }, + { + "start": 2877.96, + "duration": 0.0, + "text": "debugger to hook up to an editor, which<00:47:58.120> I<00:47:58.160> could<00:47:58.320> talk<00:47:58.480> about,<00:47:58.680> too,<00:47:58.840> but<00:47:59.640> um" + }, + { + "start": 2880.39, + "duration": 0.0, + "text": "which I could talk about, too, but um" + }, + { + "start": 2880.4, + "duration": 0.0, + "text": "which I could talk about, too, but um anyways." + }, + { + "start": 2881.368, + "duration": 0.0, + "text": "anyways." + }, + { + "start": 2881.378, + "duration": 0.0, + "text": "anyways. >> [music]" + }, + { + "start": 2893.823, + "duration": 0.0, + "text": "[music]" + }, + { + "start": 2899.718, + "duration": 0.0, + "text": "[music]" + } + ], + "plain": "For<00:00:00.520> everybody<00:00:00.960> who<00:00:01.120> is<00:00:01.240> joining,<00:00:02.000> we<00:00:02.200> are\nFor everybody who is joining, we are\nFor everybody who is joining, we are gathered<00:00:02.760> here<00:00:03.000> today<00:00:03.760> for<00:00:04.040> Ryan<00:00:04.800> to<00:00:04.960> show<00:00:05.200> us\ngathered here today for Ryan to show us\ngathered here today for Ryan to show us radare2<00:00:06.120> debugger<00:00:06.440> code<00:00:06.720> base.\nradare2 debugger code base.\nradare2 debugger code base. Hello<00:00:08.200> Ryan,<00:00:08.760> how<00:00:08.880> are<00:00:08.960> you<00:00:09.000> doing?\nHello Ryan, how are you doing?\nHello Ryan, how are you doing? >> Hello.<00:00:10.400> Good,<00:00:10.640> how<00:00:10.760> are<00:00:10.840> you?\n>> Hello. Good, how are you?\n>> Hello. Good, how are you? >> Great.\n>> Great.\n>> Great. And<00:00:13.720> after<00:00:13.960> this<00:00:14.160> a<00:00:14.200> little<00:00:14.400> bit<00:00:14.600> awkward\nAnd after this a little bit awkward\nAnd after this a little bit awkward introduction<00:00:15.920> interchange,\nintroduction interchange,\nintroduction interchange, uh<00:00:17.600> Ryan<00:00:18.600> will<00:00:18.840> first<00:00:19.280> start<00:00:19.760> with<00:00:19.960> showing<00:00:20.280> us\nuh Ryan will first start with showing us\nuh Ryan will first start with showing us how<00:00:20.880> radare2<00:00:21.200> debugger<00:00:21.520> works<00:00:22.000> in<00:00:22.200> general<00:00:22.960> in\nhow radare2 debugger works in general in\nhow radare2 debugger works in general in terms<00:00:23.440> of<00:00:23.640> what's<00:00:23.800> the<00:00:24.160> product<00:00:25.240> how<00:00:25.480> the\nterms of what's the product how the\nterms of what's the product how the users<00:00:26.280> could<00:00:26.640> use<00:00:27.000> radare2<00:00:27.320> debugger<00:00:28.040> and\nusers could use radare2 debugger and\nusers could use radare2 debugger and then<00:00:28.320> we're<00:00:28.400> going<00:00:28.520> to<00:00:28.600> dive<00:00:28.840> in<00:00:29.000> into<00:00:29.400> source\nthen we're going to dive in into source\nthen we're going to dive in into source code.\ncode.\ncode. >> So,<00:00:30.960> unfortunately<00:00:31.440> I<00:00:31.480> can't<00:00:31.720> show<00:00:32.240> what<00:00:32.400> it's\n>> So, unfortunately I can't show what it's\n>> So, unfortunately I can't show what it's like<00:00:32.759> to<00:00:32.960> get<00:00:33.360> the<00:00:33.440> debugger\nlike to get the debugger\nlike to get the debugger um<00:00:35.400> because<00:00:36.080> I<00:00:36.280> can<00:00:36.440> only<00:00:36.680> share<00:00:37.040> share<00:00:37.320> the\num because I can only share share the\num because I can only share share the debugger<00:00:37.720> itself,<00:00:38.080> but<00:00:38.200> I<00:00:38.240> mean<00:00:38.400> it's<00:00:38.520> very\ndebugger itself, but I mean it's very\ndebugger itself, but I mean it's very straightforward.<00:00:39.320> Like<00:00:39.480> you<00:00:39.600> go<00:00:39.800> to<00:00:39.960> the\nstraightforward. Like you go to the\nstraightforward. Like you go to the debugger<00:00:41.160> GitHub<00:00:41.480> page,<00:00:42.120> you<00:00:42.240> click<00:00:42.480> on<00:00:42.600> the\ndebugger GitHub page, you click on the\ndebugger GitHub page, you click on the releases<00:00:43.320> section,<00:00:44.080> and<00:00:44.200> then<00:00:44.280> you<00:00:44.480> get\nreleases section, and then you get\nreleases section, and then you get radare2<00:00:45.400> .exe,<00:00:46.200> and<00:00:46.280> that's<00:00:46.480> it.<00:00:46.640> And<00:00:46.720> then\nradare2 .exe, and that's it. And then\nradare2 .exe, and that's it. And then you<00:00:46.920> run<00:00:47.080> that.<00:00:47.520> And<00:00:47.600> then<00:00:47.720> this<00:00:47.880> is<00:00:48.000> what<00:00:48.120> will\nyou run that. And then this is what will\nyou run that. And then this is what will pop<00:00:48.400> up<00:00:48.760> or<00:00:48.840> something<00:00:49.120> like<00:00:49.280> this.\npop up or something like this.\npop up or something like this. Um\nUm\nUm so<00:00:53.055> [clears throat]\nso [clears throat]\nso [clears throat] anyways,<00:00:54.600> if<00:00:54.720> you<00:00:54.880> open<00:00:55.120> the<00:00:55.200> program<00:00:55.560> like\nanyways, if you open the program like\nanyways, if you open the program like this,<00:00:55.960> so<00:00:56.120> there's<00:00:56.400> there's<00:00:56.640> one<00:00:56.840> thing<00:00:57.000> you\nthis, so there's there's one thing you\nthis, so there's there's one thing you can<00:00:57.240> do<00:00:57.640> and<00:00:57.760> because<00:00:58.040> I<00:00:58.120> can't<00:00:58.760> because<00:00:59.000> I\ncan do and because I can't because I\ncan do and because I can't because I can't<00:00:59.360> share<00:00:59.720> my<00:01:00.560> my<00:01:00.720> screen,<00:01:01.000> I<00:01:01.040> can't<00:01:01.320> show\ncan't share my my screen, I can't show\ncan't share my my screen, I can't show what<00:01:01.680> the<00:01:01.760> command<00:01:02.120> line<00:01:02.760> usage<00:01:03.160> looks<00:01:03.320> like.\nwhat the command line usage looks like.\nwhat the command line usage looks like. But<00:01:04.280> basically<00:01:04.680> there's<00:01:04.879> one<00:01:05.080> thing<00:01:05.239> you<00:01:05.320> can\nBut basically there's one thing you can\nBut basically there's one thing you can do,<00:01:06.160> let<00:01:06.280> me<00:01:06.320> just<00:01:06.480> open<00:01:06.640> a<00:01:06.680> watch<00:01:06.960> window<00:01:07.200> and\ndo, let me just open a watch window and\ndo, let me just open a watch window and then<00:01:07.400> I<00:01:07.440> can<00:01:07.960> uh\nthen I can uh\nthen I can uh put<00:01:08.680> a<00:01:08.720> little<00:01:08.880> string<00:01:09.120> in<00:01:09.200> here.<00:01:09.400> So,<00:01:10.000> um\nput a little string in here. So, um\nput a little string in here. So, um actually<00:01:10.880> let<00:01:11.000> me<00:01:11.160> unload<00:01:11.600> a<00:01:11.640> bunch<00:01:11.840> of<00:01:11.920> debug\nactually let me unload a bunch of debug\nactually let me unload a bunch of debug info<00:01:12.920> that<00:01:13.000> I<00:01:13.040> don't<00:01:13.240> need<00:01:13.360> loaded<00:01:13.640> right<00:01:13.800> now.\ninfo that I don't need loaded right now.\ninfo that I don't need loaded right now. So,\nSo,\nSo, >> [clears throat]\n>> [clears throat]\n>> [clears throat] >> on<00:01:15.960> command<00:01:16.240> line<00:01:16.440> what<00:01:16.560> you<00:01:16.640> can<00:01:16.720> do<00:01:16.920> is<00:01:17.000> like\n>> on command line what you can do is like\n>> on command line what you can do is like you<00:01:17.440> you<00:01:17.520> can<00:01:17.640> run<00:01:18.480> radare2<00:01:19.160> and<00:01:19.280> then<00:01:19.920> um<00:01:20.360> so\nyou you can run radare2 and then um so\nyou you can run radare2 and then um so if<00:01:20.680> you're<00:01:20.800> running<00:01:21.120> a<00:01:21.200> program<00:01:21.760> that<00:01:21.920> you're\nif you're running a program that you're\nif you're running a program that you're that<00:01:23.000> you're<00:01:23.360> actively<00:01:23.720> developing,<00:01:24.200> you\nthat you're actively developing, you\nthat you're actively developing, you might<00:01:24.520> run<00:01:24.720> something<00:01:25.000> like<00:01:25.200> foo.exe.\nmight run something like foo.exe.\nmight run something like foo.exe. Um<00:01:28.040> and<00:01:28.160> then<00:01:28.280> you<00:01:28.360> might<00:01:28.600> say<00:01:28.800> like<00:01:29.080> {dash}<00:01:29.720> a\nUm and then you might say like {dash} a\nUm and then you might say like {dash} a {dash}<00:01:30.320> b<00:01:31.200> uh\n{dash} b uh\n{dash} b uh {dash}<00:01:32.600> some<00:01:33.000> other<00:01:33.360> option<00:01:34.480> equals\n{dash} some other option equals\n{dash} some other option equals whatever,<00:01:35.560> like<00:01:35.680> something<00:01:35.880> like<00:01:36.000> this.\nwhatever, like something like this.\nwhatever, like something like this. Whatever<00:01:36.360> your<00:01:36.440> command<00:01:36.720> line<00:01:36.880> arguments<00:01:37.240> are\nWhatever your command line arguments are\nWhatever your command line arguments are if<00:01:37.480> you<00:01:37.600> have<00:01:37.760> them.\nif you have them.\nif you have them. To<00:01:39.360> run<00:01:39.520> this<00:01:39.920> within<00:01:40.200> the<00:01:40.280> context<00:01:40.640> of<00:01:40.720> the\nTo run this within the context of the\nTo run this within the context of the debugger,<00:01:41.200> all<00:01:41.360> you<00:01:41.440> have<00:01:41.560> to<00:01:41.640> do<00:01:42.000> is<00:01:42.280> prefix\ndebugger, all you have to do is prefix\ndebugger, all you have to do is prefix that<00:01:42.760> with<00:01:42.920> radare2\nthat with radare2\nthat with radare2 as<00:01:43.960> long<00:01:44.160> as<00:01:44.280> you<00:01:44.320> can<00:01:44.480> access<00:01:45.360> this<00:01:45.600> in<00:01:45.720> your\nas long as you can access this in your\nas long as you can access this in your path.<00:01:46.120> Like<00:01:46.240> you<00:01:46.320> put<00:01:46.480> it,<00:01:46.920> you<00:01:47.000> know,<00:01:47.600> when\npath. Like you put it, you know, when\npath. Like you put it, you know, when you<00:01:48.080> get<00:01:48.280> the<00:01:48.360> executable,<00:01:48.840> you<00:01:48.920> put<00:01:49.080> it\nyou get the executable, you put it\nyou get the executable, you put it wherever<00:01:49.360> you<00:01:49.400> can<00:01:49.520> find<00:01:49.760> it<00:01:49.840> in<00:01:49.880> your<00:01:50.000> path<00:01:50.280> if\nwherever you can find it in your path if\nwherever you can find it in your path if you<00:01:50.480> want<00:01:50.600> to<00:01:50.680> run<00:01:50.760> it<00:01:50.840> from<00:01:50.960> command<00:01:51.280> line.\nyou want to run it from command line.\nyou want to run it from command line. Um\nUm\nUm and<00:01:54.040> then<00:01:54.120> if<00:01:54.240> you<00:01:54.400> open<00:01:54.920> if<00:01:55.000> If<00:01:55.080> run<00:01:55.280> this,\nand then if you open if If run this,\nand then if you open if If run this, it'll<00:01:56.920> open<00:01:57.160> the<00:01:57.240> debugger.\nit'll open the debugger.\nit'll open the debugger. And<00:01:58.720> what<00:01:58.840> it'll<00:01:59.040> do<00:01:59.240> is<00:01:59.360> it'll<00:01:59.520> pre-fill\nAnd what it'll do is it'll pre-fill\nAnd what it'll do is it'll pre-fill um\num\num it'll<00:02:02.280> create<00:02:02.520> a<00:02:02.560> target,<00:02:03.040> a<00:02:03.080> temporary\nit'll create a target, a temporary\nit'll create a target, a temporary target<00:02:03.880> for<00:02:04.360> for<00:02:04.680> the<00:02:05.240> executable<00:02:05.760> you<00:02:05.840> just\ntarget for for the executable you just\ntarget for for the executable you just passed.\npassed.\npassed. So,<00:02:07.720> targets<00:02:08.080> are<00:02:08.160> basically\nSo, targets are basically\nSo, targets are basically um<00:02:09.960> how<00:02:10.160> the<00:02:10.280> debugger<00:02:10.640> knows<00:02:11.760> uh<00:02:12.000> how<00:02:12.320> to\num how the debugger knows uh how to\num how the debugger knows uh how to launch<00:02:13.080> an<00:02:13.200> executable.<00:02:14.240> Um\nlaunch an executable. Um\nlaunch an executable. Um so,<00:02:15.160> I've<00:02:15.280> got<00:02:15.400> a<00:02:15.440> bunch<00:02:15.640> of<00:02:15.720> options<00:02:16.080> here.\nso, I've got a bunch of options here.\nso, I've got a bunch of options here. I've<00:02:16.880> got<00:02:17.080> this<00:02:17.360> for<00:02:17.480> example,<00:02:17.840> this<00:02:18.000> mule\nI've got this for example, this mule\nI've got this for example, this mule main.<00:02:18.640> This<00:02:18.800> is<00:02:18.959> what<00:02:19.280> something<00:02:19.560> we<00:02:19.640> use<00:02:19.800> for\nmain. This is what something we use for\nmain. This is what something we use for testing<00:02:20.240> in<00:02:20.360> the<00:02:20.400> debugger\ntesting in the debugger\ntesting in the debugger um<00:02:21.800> project.<00:02:22.959> And<00:02:23.320> you<00:02:23.400> can<00:02:23.520> see<00:02:23.600> it's<00:02:23.720> got<00:02:23.840> a\num project. And you can see it's got a\num project. And you can see it's got a bunch<00:02:24.040> of<00:02:24.120> options<00:02:24.480> here.<00:02:25.080> Um\nbunch of options here. Um\nbunch of options here. Um label<00:02:26.680> is<00:02:27.080> uh\nlabel is uh\nlabel is uh not<00:02:27.920> super<00:02:28.160> important.<00:02:28.440> It's<00:02:28.640> it's<00:02:29.360> um\nnot super important. It's it's um\nnot super important. It's it's um it's<00:02:30.200> just<00:02:30.320> something<00:02:30.520> you<00:02:30.600> can<00:02:30.720> tag<00:02:31.360> this\nit's just something you can tag this\nit's just something you can tag this target<00:02:32.200> with.<00:02:32.440> But\ntarget with. But\ntarget with. But um<00:02:34.000> you<00:02:34.120> supply<00:02:34.400> the<00:02:34.520> executable<00:02:35.000> path.<00:02:35.520> You\num you supply the executable path. You\num you supply the executable path. You can<00:02:35.720> put<00:02:35.840> in<00:02:36.000> arguments<00:02:36.480> here.<00:02:36.720> So,<00:02:36.800> you<00:02:36.840> can\ncan put in arguments here. So, you can\ncan put in arguments here. So, you can do<00:02:37.040> like<00:02:37.200> {dash}foo<00:02:37.680> {dash}bar<00:02:38.240> whatever,\ndo like {dash}foo {dash}bar whatever,\ndo like {dash}foo {dash}bar whatever, whatever<00:02:39.040> you<00:02:39.120> want<00:02:39.280> it<00:02:39.360> to<00:02:39.440> do.<00:02:39.959> And<00:02:40.040> the\nwhatever you want it to do. And the\nwhatever you want it to do. And the arguments<00:02:40.480> you<00:02:40.560> put<00:02:40.720> those<00:02:40.920> here.\narguments you put those here.\narguments you put those here. Whatever<00:02:42.480> working<00:02:42.840> directory<00:02:43.240> you<00:02:43.360> want<00:02:43.560> it\nWhatever working directory you want it\nWhatever working directory you want it to<00:02:43.760> start<00:02:44.120> the<00:02:44.240> executable<00:02:45.160> like<00:02:45.360> within<00:02:45.600> the\nto start the executable like within the\nto start the executable like within the context<00:02:46.160> of.<00:02:46.800> And<00:02:46.880> then<00:02:47.000> you<00:02:47.080> can<00:02:47.160> also\ncontext of. And then you can also\ncontext of. And then you can also specify<00:02:47.680> things<00:02:47.920> like<00:02:48.040> a<00:02:48.120> custom<00:02:48.520> entry\nspecify things like a custom entry\nspecify things like a custom entry point.<00:02:49.800> Um<00:02:50.560> a<00:02:50.680> file<00:02:51.040> path<00:02:51.360> for<00:02:51.480> standard<00:02:51.880> out,\npoint. Um a file path for standard out,\npoint. Um a file path for standard out, standard<00:02:52.640> error,<00:02:52.959> and<00:02:53.120> standard<00:02:53.520> in.<00:02:53.920> You<00:02:54.000> can\nstandard error, and standard in. You can\nstandard error, and standard in. You can put<00:02:54.320> file<00:02:54.520> paths<00:02:54.760> here<00:02:55.000> and<00:02:55.120> then<00:02:55.240> it'll<00:02:55.720> use\nput file paths here and then it'll use\nput file paths here and then it'll use those<00:02:56.200> instead<00:02:56.520> of<00:02:57.120> um\nthose instead of um\nthose instead of um instead<00:02:58.120> of<00:02:58.160> the<00:02:58.280> defaults.<00:02:59.280> You<00:02:59.360> can<00:02:59.480> add\ninstead of the defaults. You can add\ninstead of the defaults. You can add custom<00:02:59.920> environment<00:03:00.400> strings.<00:03:01.200> And<00:03:01.320> then<00:03:01.480> you\ncustom environment strings. And then you\ncustom environment strings. And then you can<00:03:01.680> also\ncan also\ncan also enable<00:03:03.200> or<00:03:03.280> disable<00:03:03.920> debugging<00:03:04.280> of<00:03:04.400> sub\nenable or disable debugging of sub\nenable or disable debugging of sub processes.<00:03:05.280> Meaning<00:03:05.519> if<00:03:05.680> this<00:03:05.959> executable\nprocesses. Meaning if this executable\nprocesses. Meaning if this executable launched<00:03:06.840> another<00:03:07.160> process,<00:03:08.120> would<00:03:08.280> the\nlaunched another process, would the\nlaunched another process, would the debugger<00:03:08.720> automatically<00:03:09.160> attach<00:03:09.480> to<00:03:09.640> it<00:03:09.840> or\ndebugger automatically attach to it or\ndebugger automatically attach to it or not?<00:03:10.800> Um<00:03:10.880> sometimes<00:03:11.280> you<00:03:11.320> want<00:03:11.480> one,\nnot? Um sometimes you want one,\nnot? Um sometimes you want one, sometimes<00:03:12.000> you<00:03:12.080> want<00:03:12.880> uh\nsometimes you want uh\nsometimes you want uh the<00:03:13.600> other.<00:03:14.200> So,<00:03:14.400> that's<00:03:14.640> why<00:03:14.959> it's<00:03:15.120> this<00:03:15.519> uh\nthe other. So, that's why it's this uh\nthe other. So, that's why it's this uh per<00:03:15.720> target<00:03:16.000> option<00:03:16.280> here.\nper target option here.\nper target option here. >> Hi<00:03:17.680> everyone.<00:03:18.440> Let<00:03:18.720> me<00:03:18.800> take<00:03:19.040> a<00:03:19.080> break<00:03:19.360> to\n>> Hi everyone. Let me take a break to\n>> Hi everyone. Let me take a break to thank<00:03:19.720> members<00:03:20.239> of<00:03:20.400> the<00:03:20.560> show<00:03:20.920> who<00:03:21.120> made<00:03:21.400> this\nthank members of the show who made this\nthank members of the show who made this conversation<00:03:22.280> possible.<00:03:23.239> Members<00:03:23.720> get\nconversation possible. Members get\nconversation possible. Members get earlier<00:03:24.360> access<00:03:24.760> to<00:03:24.880> videos<00:03:25.519> including\nearlier access to videos including\nearlier access to videos including longer<00:03:26.600> unedited<00:03:27.360> footage<00:03:27.880> from<00:03:28.160> live\nlonger unedited footage from live\nlonger unedited footage from live streams<00:03:29.120> as<00:03:29.400> well<00:03:29.600> as<00:03:29.760> they're<00:03:30.000> invited<00:03:30.760> to\nstreams as well as they're invited to\nstreams as well as they're invited to our<00:03:31.040> private<00:03:31.600> Discord<00:03:32.080> server.<00:03:32.880> If<00:03:33.080> you<00:03:33.239> want\nour private Discord server. If you want\nour private Discord server. If you want to<00:03:33.600> support<00:03:33.959> the<00:03:34.080> show,<00:03:34.400> there<00:03:34.600> is<00:03:34.800> no<00:03:35.040> better\nto support the show, there is no better\nto support the show, there is no better way<00:03:35.600> than<00:03:35.840> becoming<00:03:36.400> a<00:03:36.480> member<00:03:37.040> on<00:03:37.280> YouTube<00:03:37.800> or\nway than becoming a member on YouTube or\nway than becoming a member on YouTube or Patreon.<00:03:38.959> Thank<00:03:39.280> you<00:03:39.600> so<00:03:39.840> much.\nPatreon. Thank you so much.\nPatreon. Thank you so much. >> So,<00:03:41.480> anyways,<00:03:42.360> when<00:03:42.519> you<00:03:42.640> run<00:03:43.360> the<00:03:43.920> debugger\n>> So, anyways, when you run the debugger\n>> So, anyways, when you run the debugger with<00:03:45.280> that<00:03:45.440> command<00:03:45.760> line,<00:03:46.000> it'll<00:03:46.280> create<00:03:46.519> one\nwith that command line, it'll create one\nwith that command line, it'll create one of<00:03:46.720> these<00:03:47.120> just<00:03:47.360> for<00:03:47.600> you.<00:03:48.440> Um<00:03:48.519> it'll<00:03:48.640> be\nof these just for you. Um it'll be\nof these just for you. Um it'll be thrown<00:03:49.000> away<00:03:49.239> when<00:03:49.400> you<00:03:49.519> exit<00:03:49.800> the<00:03:49.880> debugger.\nthrown away when you exit the debugger.\nthrown away when you exit the debugger. So,<00:03:50.440> it<00:03:50.519> won't<00:03:51.160> uh<00:03:51.320> like<00:03:51.680> stick<00:03:51.880> around.<00:03:52.160> You\nSo, it won't uh like stick around. You\nSo, it won't uh like stick around. You can<00:03:52.360> run<00:03:52.960> the<00:03:53.040> debugger<00:03:53.360> that<00:03:53.520> way<00:03:53.680> every\ncan run the debugger that way every\ncan run the debugger that way every single<00:03:54.080> time<00:03:54.320> if<00:03:54.440> you<00:03:54.520> want<00:03:54.720> to.\nsingle time if you want to.\nsingle time if you want to. Um\nUm\nUm Or<00:03:57.040> you<00:03:57.120> can<00:03:57.280> create<00:03:57.480> a<00:03:57.520> target<00:03:57.840> within<00:03:58.080> the\nOr you can create a target within the\nOr you can create a target within the context<00:03:58.880> of<00:03:59.680> the<00:03:59.800> debugger's<00:04:00.240> UI.<00:04:00.560> So,<00:04:00.720> to<00:04:00.840> do\ncontext of the debugger's UI. So, to do\ncontext of the debugger's UI. So, to do that,<00:04:01.240> all<00:04:01.320> you<00:04:01.440> do<00:04:01.840> is<00:04:02.720> you<00:04:02.800> can<00:04:02.920> click<00:04:03.120> this\nthat, all you do is you can click this\nthat, all you do is you can click this add<00:04:03.520> target<00:04:03.840> thing.<00:04:04.160> Actually,<00:04:04.680> maybe<00:04:04.920> what<00:04:05.080> I\nadd target thing. Actually, maybe what I\nadd target thing. Actually, maybe what I should<00:04:05.280> do<00:04:05.560> is<00:04:05.720> show<00:04:05.920> how<00:04:06.040> the<00:04:06.160> UI<00:04:07.120> paneling\nshould do is show how the UI paneling\nshould do is show how the UI paneling works<00:04:07.760> first.<00:04:08.160> So,<00:04:08.320> like<00:04:09.160> um<00:04:09.560> cuz\nworks first. So, like um cuz\nworks first. So, like um cuz it<00:04:10.680> comes<00:04:11.000> like<00:04:11.160> preloaded<00:04:11.640> with<00:04:11.760> a<00:04:11.800> bunch<00:04:12.000> of\nit comes like preloaded with a bunch of\nit comes like preloaded with a bunch of default<00:04:12.520> layouts<00:04:12.920> or<00:04:13.000> three<00:04:13.320> default\ndefault layouts or three default\ndefault layouts or three default layouts.<00:04:14.560> And<00:04:14.680> I<00:04:14.760> can<00:04:14.880> show<00:04:15.080> people<00:04:15.400> how<00:04:15.680> to\nlayouts. And I can show people how to\nlayouts. And I can show people how to get<00:04:17.000> to<00:04:17.079> this<00:04:17.239> tab<00:04:17.560> if<00:04:17.640> they<00:04:17.720> don't<00:04:17.959> see<00:04:18.160> it<00:04:18.320> or\nget to this tab if they don't see it or\nget to this tab if they don't see it or or<00:04:18.799> have<00:04:19.000> it<00:04:19.079> or<00:04:19.160> something<00:04:19.400> like<00:04:19.519> that.<00:04:19.760> So,\nor have it or something like that. So,\nor have it or something like that. So, um<00:04:21.000> obviously<00:04:21.880> um\num obviously um\num obviously um uh<00:04:23.720> when<00:04:24.400> this<00:04:24.600> is<00:04:24.720> one<00:04:24.840> of<00:04:24.919> the<00:04:25.000> default\nuh when this is one of the default\nuh when this is one of the default layouts,<00:04:26.280> uh<00:04:26.680> and<00:04:26.840> I<00:04:26.919> pick<00:04:27.160> one<00:04:27.280> of<00:04:27.320> these\nlayouts, uh and I pick one of these\nlayouts, uh and I pick one of these depending<00:04:27.800> on<00:04:27.919> screen<00:04:28.240> size.<00:04:28.520> So,<00:04:29.080> the\ndepending on screen size. So, the\ndepending on screen size. So, the default<00:04:29.600> layout<00:04:29.840> is<00:04:29.960> like<00:04:30.160> this,<00:04:30.400> but<00:04:30.520> you<00:04:30.600> can\ndefault layout is like this, but you can\ndefault layout is like this, but you can see<00:04:30.840> it<00:04:30.960> doesn't<00:04:31.240> work<00:04:31.440> super<00:04:31.720> well<00:04:31.960> when<00:04:32.080> you\nsee it doesn't work super well when you\nsee it doesn't work super well when you have<00:04:32.320> like<00:04:32.480> a<00:04:32.560> larger<00:04:32.880> font<00:04:33.120> size.<00:04:33.360> Like,<00:04:33.480> if\nhave like a larger font size. Like, if\nhave like a larger font size. Like, if you're<00:04:33.680> on<00:04:33.760> a<00:04:33.800> super<00:04:34.080> high<00:04:34.240> DPI<00:04:35.360> monitor,<00:04:35.840> this\nyou're on a super high DPI monitor, this\nyou're on a super high DPI monitor, this is<00:04:36.080> just<00:04:36.320> a<00:04:36.360> little<00:04:36.560> bit<00:04:36.919> like<00:04:37.560> chaotic.<00:04:38.280> Um\nis just a little bit like chaotic. Um\nis just a little bit like chaotic. Um in<00:04:38.919> fact,<00:04:39.120> I<00:04:39.160> think<00:04:39.320> it<00:04:39.360> might<00:04:39.480> be<00:04:39.560> a<00:04:39.600> little\nin fact, I think it might be a little\nin fact, I think it might be a little bit<00:04:40.080> too<00:04:40.240> chaotic<00:04:40.680> anyways,<00:04:41.080> but<00:04:41.200> it's\nbit too chaotic anyways, but it's\nbit too chaotic anyways, but it's especially<00:04:41.840> chaotic<00:04:42.200> if<00:04:42.320> you<00:04:42.400> have<00:04:42.560> like<00:04:42.720> a\nespecially chaotic if you have like a\nespecially chaotic if you have like a smaller\nsmaller\nsmaller um<00:04:44.720> if<00:04:44.880> you<00:04:44.919> have<00:04:45.040> a<00:04:45.080> larger<00:04:45.320> font<00:04:45.560> size,\num if you have a larger font size,\num if you have a larger font size, basically,<00:04:46.440> um<00:04:46.840> on<00:04:47.080> a<00:04:47.400> higher<00:04:47.600> DPI<00:04:47.919> screen.\nbasically, um on a higher DPI screen.\nbasically, um on a higher DPI screen. So,\nSo,\nSo, um<00:04:49.960> many<00:04:50.160> times<00:04:50.400> it'll<00:04:50.560> pick<00:04:50.720> this<00:04:50.880> compact\num many times it'll pick this compact\num many times it'll pick this compact layout.\nlayout.\nlayout. This<00:04:52.840> still<00:04:53.040> has<00:04:53.200> a<00:04:53.280> lot<00:04:53.440> of<00:04:53.520> stuff<00:04:53.800> that<00:04:53.919> you\nThis still has a lot of stuff that you\nThis still has a lot of stuff that you might<00:04:54.120> just<00:04:54.280> not<00:04:54.440> care<00:04:54.640> about.<00:04:55.040> And<00:04:55.120> then\nmight just not care about. And then\nmight just not care about. And then there's<00:04:55.440> this<00:04:55.640> simple<00:04:55.960> panel<00:04:56.280> layout,<00:04:56.520> which\nthere's this simple panel layout, which\nthere's this simple panel layout, which is<00:04:56.800> literally<00:04:57.280> an<00:04:57.400> area<00:04:57.640> for<00:04:57.760> source<00:04:58.000> code<00:04:58.560> and\nis literally an area for source code and\nis literally an area for source code and an<00:04:58.760> area<00:04:59.080> for\nan area for\nan area for uh<00:05:00.360> a<00:05:00.440> watch<00:05:00.680> window.<00:05:01.040> Now,\nuh a watch window. Now,\nuh a watch window. Now, I<00:05:02.919> could<00:05:03.120> start<00:05:03.280> with<00:05:03.400> this.<00:05:04.080> Um<00:05:04.880> what<00:05:05.040> I\nI could start with this. Um what I\nI could start with this. Um what I should<00:05:05.400> say<00:05:05.560> first<00:05:05.880> is<00:05:05.960> that<00:05:06.200> no-<00:05:06.440> nothing\nshould say first is that no- nothing\nshould say first is that no- nothing about<00:05:06.880> these<00:05:07.000> panels<00:05:07.320> are<00:05:07.400> special,<00:05:08.040> so<00:05:08.240> I<00:05:08.280> can\nabout these panels are special, so I can\nabout these panels are special, so I can I<00:05:08.600> can<00:05:08.840> rearrange<00:05:09.360> these<00:05:09.600> however<00:05:09.880> I<00:05:09.960> want.<00:05:10.680> Um\nI can rearrange these however I want. Um\nI can rearrange these however I want. Um it's<00:05:11.360> just<00:05:11.880> I<00:05:11.919> can<00:05:12.000> put<00:05:12.120> them<00:05:12.200> both<00:05:12.360> on<00:05:12.440> the\nit's just I can put them both on the\nit's just I can put them both on the same<00:05:12.720> tab<00:05:12.960> if<00:05:13.080> I<00:05:13.120> want<00:05:13.400> to.<00:05:13.560> I<00:05:13.640> can<00:05:13.760> do<00:05:14.480> like\nsame tab if I want to. I can do like\nsame tab if I want to. I can do like whatever<00:05:14.919> kind<00:05:15.120> of<00:05:15.200> organization<00:05:15.760> I<00:05:15.840> want,\nwhatever kind of organization I want,\nwhatever kind of organization I want, that'll<00:05:16.800> just<00:05:17.240> be<00:05:17.400> fine.<00:05:18.240> Um\nthat'll just be fine. Um\nthat'll just be fine. Um So,<00:05:19.880> if<00:05:20.120> I<00:05:20.160> have<00:05:20.400> nothing,\nSo, if I have nothing,\nSo, if I have nothing, um<00:05:22.000> it'll<00:05:22.160> just<00:05:22.360> have<00:05:22.480> this<00:05:22.680> empty<00:05:22.960> panel\num it'll just have this empty panel\num it'll just have this empty panel here.<00:05:24.000> I<00:05:24.080> can<00:05:24.600> uh<00:05:24.680> I<00:05:24.760> can<00:05:24.880> click<00:05:25.080> this<00:05:25.240> plus<00:05:25.480> to\nhere. I can uh I can click this plus to\nhere. I can uh I can click this plus to add<00:05:25.720> a<00:05:25.760> new<00:05:25.919> tab.<00:05:26.600> I<00:05:26.640> can<00:05:26.760> add<00:05:26.880> a<00:05:26.919> watch<00:05:27.200> window.\nadd a new tab. I can add a watch window.\nadd a new tab. I can add a watch window. Um<00:05:28.560> and<00:05:28.680> then<00:05:28.760> if<00:05:28.880> I<00:05:28.919> want<00:05:29.120> to<00:05:29.160> look<00:05:29.280> at<00:05:29.360> my\nUm and then if I want to look at my\nUm and then if I want to look at my targets,<00:05:30.000> I<00:05:30.080> can<00:05:30.840> uh<00:05:30.960> I<00:05:31.000> can<00:05:31.160> search<00:05:31.600> by\ntargets, I can uh I can search by\ntargets, I can uh I can search by typing,<00:05:32.320> and<00:05:32.480> there's<00:05:32.680> just<00:05:32.840> a<00:05:32.880> targets<00:05:33.200> tab\ntyping, and there's just a targets tab\ntyping, and there's just a targets tab that<00:05:33.520> I<00:05:33.560> can<00:05:33.680> open<00:05:33.880> up,<00:05:33.960> and<00:05:34.080> there's<00:05:34.320> all<00:05:34.400> my\nthat I can open up, and there's all my\nthat I can open up, and there's all my targets.\ntargets.\ntargets. Um\nUm\nUm So,<00:05:38.200> anyways,\nSo, anyways,\nSo, anyways, we're<00:05:39.520> at<00:05:39.600> the<00:05:39.680> list<00:05:39.840> of<00:05:39.919> targets.<00:05:40.240> We<00:05:40.280> have\nwe're at the list of targets. We have\nwe're at the list of targets. We have all<00:05:40.520> these<00:05:40.760> executables<00:05:41.280> we<00:05:41.400> can<00:05:41.560> launch<00:05:41.840> and\nall these executables we can launch and\nall these executables we can launch and debug.\ndebug.\ndebug. Um<00:05:44.840> if<00:05:45.040> I<00:05:45.160> don't<00:05:45.640> have<00:05:46.400> the<00:05:46.520> one<00:05:46.720> I<00:05:46.800> want<00:05:47.120> to<00:05:47.400> run\nUm if I don't have the one I want to run\nUm if I don't have the one I want to run from<00:05:47.800> here,<00:05:48.360> I<00:05:48.440> can<00:05:48.600> click<00:05:48.800> add<00:05:49.000> target,\nfrom here, I can click add target,\nfrom here, I can click add target, brings<00:05:49.960> up<00:05:50.080> this<00:05:50.200> little<00:05:50.440> file,<00:05:51.600> um\nbrings up this little file, um\nbrings up this little file, um this<00:05:52.880> this<00:05:53.080> like<00:05:53.400> file<00:05:53.720> browser,<00:05:54.760> um\nthis this like file browser, um\nthis this like file browser, um and<00:05:56.720> I<00:05:56.760> don't<00:05:56.960> know.<00:05:57.080> I<00:05:57.120> mean,<00:05:57.280> I've<00:05:57.400> added<00:05:57.600> all\nand I don't know. I mean, I've added all\nand I don't know. I mean, I've added all the<00:05:57.800> executables<00:05:58.360> I<00:05:58.400> care<00:05:58.640> to<00:05:58.760> show,<00:05:59.120> but<00:05:59.880> I\nthe executables I care to show, but I\nthe executables I care to show, but I can<00:06:00.160> just<00:06:00.320> go<00:06:00.520> to<00:06:00.680> like\ncan just go to like\ncan just go to like like,<00:06:02.040> you<00:06:02.120> know,<00:06:02.240> you<00:06:02.320> can<00:06:02.440> just<00:06:02.600> type\nlike, you know, you can just type\nlike, you know, you can just type find<00:06:03.960> whatever<00:06:04.200> path<00:06:04.480> you<00:06:04.600> want,<00:06:05.200> um\nfind whatever path you want, um\nfind whatever path you want, um >> at<00:06:06.040> the<00:06:06.120> debugger<00:06:06.520> itself.\n>> at the debugger itself.\n>> at the debugger itself. >> I<00:06:08.560> I<00:06:08.640> already<00:06:08.880> have<00:06:09.040> that<00:06:09.200> one<00:06:09.560> right<00:06:09.760> here.\n>> I I already have that one right here.\n>> I I already have that one right here. This<00:06:10.480> is<00:06:10.600> the<00:06:10.680> This<00:06:10.840> is<00:06:10.920> the<00:06:10.960> one<00:06:11.080> I<00:06:11.120> use<00:06:11.320> for\nThis is the This is the one I use for\nThis is the This is the one I use for actually<00:06:12.080> working<00:06:12.360> on<00:06:12.440> the<00:06:12.480> debugger,<00:06:12.800> but\nactually working on the debugger, but\nactually working on the debugger, but yeah,<00:06:13.480> I<00:06:13.520> mean,<00:06:13.680> if<00:06:13.800> I<00:06:13.880> wanted<00:06:14.200> to<00:06:14.400> do<00:06:14.600> that,\nyeah, I mean, if I wanted to do that,\nyeah, I mean, if I wanted to do that, I'd<00:06:14.920> just<00:06:15.080> do<00:06:15.840> radare2.exe,\nI'd just do radare2.exe,\nI'd just do radare2.exe, opens<00:06:17.760> up<00:06:17.880> the<00:06:17.960> editor<00:06:18.320> for<00:06:18.520> it.<00:06:18.600> I<00:06:18.640> can<00:06:18.760> say\nopens up the editor for it. I can say\nopens up the editor for it. I can say like<00:06:19.200> dash<00:06:19.480> foo,<00:06:19.720> dash<00:06:20.000> bar,<00:06:20.960> um<00:06:21.040> whatever<00:06:21.280> I\nlike dash foo, dash bar, um whatever I\nlike dash foo, dash bar, um whatever I want<00:06:21.640> here,<00:06:22.360> um<00:06:22.640> and<00:06:22.760> then\nwant here, um and then\nwant here, um and then this<00:06:24.240> is<00:06:24.320> something<00:06:24.560> I<00:06:24.600> can<00:06:24.720> now<00:06:24.919> launch.<00:06:25.440> So,\nthis is something I can now launch. So,\nthis is something I can now launch. So, I'll<00:06:25.960> remove<00:06:26.240> it<00:06:26.360> cuz<00:06:26.560> I<00:06:26.640> already<00:06:26.880> have<00:06:27.080> one\nI'll remove it cuz I already have one\nI'll remove it cuz I already have one for<00:06:27.440> it.\nfor it.\nfor it. Um\nUm\nUm but<00:06:30.280> anyways,<00:06:30.640> I've<00:06:30.760> got<00:06:31.200> an<00:06:31.280> executable<00:06:31.760> that\nbut anyways, I've got an executable that\nbut anyways, I've got an executable that I<00:06:31.919> want<00:06:32.080> to<00:06:32.160> debug.<00:06:33.120> Um<00:06:33.640> I<00:06:33.919> can<00:06:34.280> either<00:06:34.720> run<00:06:35.000> it.\nI want to debug. Um I can either run it.\nI want to debug. Um I can either run it. Um<00:06:35.840> in<00:06:35.960> this<00:06:36.080> case,<00:06:36.240> it's<00:06:36.360> a<00:06:36.400> test<00:06:36.720> executable\nUm in this case, it's a test executable\nUm in this case, it's a test executable that<00:06:37.520> you<00:06:37.640> want<00:06:37.840> to<00:06:37.919> step<00:06:38.160> through,<00:06:38.480> so<00:06:38.640> I\nthat you want to step through, so I\nthat you want to step through, so I won't<00:06:39.080> I<00:06:39.120> won't<00:06:39.280> do<00:06:39.360> that.<00:06:40.080> Um<00:06:40.560> but<00:06:40.640> I<00:06:40.680> can<00:06:40.760> also\nwon't I won't do that. Um but I can also\nwon't I won't do that. Um but I can also step<00:06:41.240> into<00:06:41.480> it<00:06:41.600> using<00:06:41.960> either<00:06:42.160> step<00:06:42.400> over<00:06:42.600> step\nstep into it using either step over step\nstep into it using either step over step uh<00:06:43.440> into.<00:06:43.760> It<00:06:43.840> doesn't<00:06:44.120> matter<00:06:44.360> which\nuh into. It doesn't matter which\nuh into. It doesn't matter which command,<00:06:45.000> but<00:06:45.760> um\ncommand, but um\ncommand, but um so<00:06:47.000> I<00:06:47.040> can<00:06:47.160> run<00:06:47.360> either<00:06:47.560> one<00:06:47.680> of<00:06:47.760> these<00:06:47.919> to<00:06:48.000> get\nso I can run either one of these to get\nso I can run either one of these to get into<00:06:48.280> the<00:06:48.360> program.<00:06:48.960> Now,<00:06:49.720> another<00:06:50.080> thing<00:06:50.240> I\ninto the program. Now, another thing I\ninto the program. Now, another thing I should<00:06:50.440> mention<00:06:50.680> about<00:06:50.880> the<00:06:50.960> UI<00:06:51.320> before\nshould mention about the UI before\nshould mention about the UI before getting<00:06:52.360> into<00:06:52.480> the<00:06:52.600> actual<00:06:52.840> debugging,\ngetting into the actual debugging,\ngetting into the actual debugging, 100%<00:06:55.440> of<00:06:55.520> the<00:06:55.600> operations<00:06:56.160> I've<00:06:56.600> covered<00:06:56.919> so\n100% of the operations I've covered so\n100% of the operations I've covered so far<00:06:57.480> can<00:06:57.760> be<00:06:58.000> done<00:06:58.560> through<00:06:59.240> uh<00:06:59.680> generalized\nfar can be done through uh generalized\nfar can be done through uh generalized command<00:07:01.040> lister.<00:07:01.400> So,<00:07:01.600> basically,<00:07:02.120> if<00:07:02.240> you\ncommand lister. So, basically, if you\ncommand lister. So, basically, if you hit<00:07:02.560> the<00:07:02.680> help<00:07:03.440> menu<00:07:03.720> up<00:07:03.840> here,<00:07:04.520> it's<00:07:04.720> got<00:07:04.960> a\nhit the help menu up here, it's got a\nhit the help menu up here, it's got a search<00:07:05.320> for<00:07:05.440> commands<00:07:05.760> and<00:07:05.880> settings,<00:07:06.360> and\nsearch for commands and settings, and\nsearch for commands and settings, and you<00:07:06.560> can<00:07:06.640> see<00:07:06.800> you<00:07:06.919> can<00:07:07.160> you<00:07:07.280> can<00:07:08.000> trigger<00:07:08.240> this\nyou can see you can you can trigger this\nyou can see you can you can trigger this quickly<00:07:08.760> by<00:07:08.880> hitting<00:07:09.120> F1.<00:07:10.080> But<00:07:10.160> if<00:07:10.240> I<00:07:10.320> click\nquickly by hitting F1. But if I click\nquickly by hitting F1. But if I click that,<00:07:10.720> it<00:07:10.800> opens<00:07:11.160> up<00:07:11.480> this\nthat, it opens up this\nthat, it opens up this uh<00:07:12.880> lister<00:07:13.240> here,<00:07:13.520> and<00:07:13.600> this<00:07:13.720> shows<00:07:13.960> all<00:07:14.160> of\nuh lister here, and this shows all of\nuh lister here, and this shows all of the<00:07:14.360> commands<00:07:14.680> that<00:07:14.800> you<00:07:14.880> can<00:07:15.000> do<00:07:15.160> in<00:07:15.240> the\nthe commands that you can do in the\nthe commands that you can do in the debugger.<00:07:15.680> So,<00:07:15.800> I<00:07:15.840> can<00:07:16.000> say<00:07:16.200> like<00:07:17.040> a<00:07:17.200> launch\ndebugger. So, I can say like a launch\ndebugger. So, I can say like a launch and<00:07:17.919> step<00:07:18.200> into\nand step into\nand step into um<00:07:19.760> if<00:07:19.919> I<00:07:19.960> run<00:07:20.200> that,<00:07:20.560> it'll<00:07:20.720> ask<00:07:20.919> me<00:07:21.000> for<00:07:21.120> a\num if I run that, it'll ask me for a\num if I run that, it'll ask me for a target,<00:07:21.840> and<00:07:21.919> then<00:07:22.040> if<00:07:22.160> I<00:07:22.240> click<00:07:22.480> one,\ntarget, and then if I click one,\ntarget, and then if I click one, uh<00:07:23.480> it'll<00:07:24.360> step<00:07:24.680> into<00:07:24.919> that<00:07:25.280> target<00:07:25.600> that<00:07:25.720> I\nuh it'll step into that target that I\nuh it'll step into that target that I that<00:07:26.080> I<00:07:26.120> picked.<00:07:26.400> That's<00:07:27.080> uh<00:07:27.160> that's<00:07:27.760> a<00:07:27.840> slower\nthat I picked. That's uh that's a slower\nthat I picked. That's uh that's a slower path<00:07:28.600> for<00:07:28.760> just<00:07:28.960> like<00:07:29.160> if<00:07:29.320> I've<00:07:29.440> got<00:07:29.640> this\npath for just like if I've got this\npath for just like if I've got this target<00:07:30.120> selected,<00:07:30.880> and<00:07:30.960> if<00:07:31.080> I<00:07:31.120> hit<00:07:31.360> F10<00:07:32.000> or\ntarget selected, and if I hit F10 or\ntarget selected, and if I hit F10 or F11,<00:07:33.160> then<00:07:33.360> it'll<00:07:33.560> just<00:07:33.800> get<00:07:33.960> me<00:07:34.360> to<00:07:34.480> the<00:07:34.560> same\nF11, then it'll just get me to the same\nF11, then it'll just get me to the same spot.<00:07:34.960> So,<00:07:35.040> I've<00:07:35.160> stepped<00:07:35.520> into<00:07:35.760> the<00:07:35.840> program.\nspot. So, I've stepped into the program.\nspot. So, I've stepped into the program. Um<00:07:37.680> and<00:07:37.760> now<00:07:37.919> that<00:07:38.080> I'm<00:07:38.400> now<00:07:38.520> that<00:07:38.640> I'm<00:07:38.760> here,\nUm and now that I'm now that I'm here,\nUm and now that I'm now that I'm here, let<00:07:39.840> me<00:07:39.960> do\nlet me do\nlet me do um\num\num this<00:07:42.840> layout<00:07:43.120> here.\nthis layout here.\nthis layout here. >> [snorts]\n>> [snorts]\n>> [snorts] >> So,<00:07:44.840> uh<00:07:44.920> um\n>> So, uh um\n>> So, uh um So,<00:07:47.040> yeah,<00:07:47.200> I've<00:07:47.320> got<00:07:47.480> my<00:07:47.600> watch<00:07:47.800> window<00:07:48.120> and\nSo, yeah, I've got my watch window and\nSo, yeah, I've got my watch window and I've<00:07:48.400> got<00:07:48.680> my<00:07:49.080> source<00:07:49.400> view.<00:07:49.600> In<00:07:49.680> the<00:07:49.760> source\nI've got my source view. In the source\nI've got my source view. In the source view,<00:07:50.200> obviously,<00:07:50.520> I<00:07:50.560> can<00:07:50.720> see<00:07:50.920> where<00:07:51.200> my\nview, obviously, I can see where my\nview, obviously, I can see where my thread<00:07:51.680> happens<00:07:52.000> to<00:07:52.080> be.\nthread happens to be.\nthread happens to be. Um\nUm\nUm with<00:07:54.320> the<00:07:54.400> step<00:07:54.640> over<00:07:54.840> step<00:07:55.080> into<00:07:55.280> commands\nwith the step over step into commands\nwith the step over step into commands and<00:07:56.000> step<00:07:56.280> out,<00:07:56.600> these<00:07:56.840> are<00:07:56.960> three<00:07:57.560> super\nand step out, these are three super\nand step out, these are three super common<00:07:58.080> debugger<00:07:58.400> commands.<00:07:58.720> Step<00:07:58.920> over\ncommon debugger commands. Step over\ncommon debugger commands. Step over means<00:07:59.320> stepping<00:07:59.680> over<00:07:59.920> a<00:07:59.960> line<00:08:00.160> of<00:08:00.240> source\nmeans stepping over a line of source\nmeans stepping over a line of source code<00:08:00.760> even<00:08:00.960> if<00:08:01.080> that\ncode even if that\ncode even if that code<00:08:02.400> were<00:08:02.520> to<00:08:02.640> call<00:08:03.000> into<00:08:03.240> a<00:08:03.280> function,\ncode were to call into a function,\ncode were to call into a function, um<00:08:04.720> it<00:08:04.840> steps<00:08:05.120> over<00:08:05.360> it.<00:08:05.640> But,<00:08:05.760> if<00:08:05.840> I<00:08:05.920> want<00:08:06.080> to\num it steps over it. But, if I want to\num it steps over it. But, if I want to step<00:08:06.480> into<00:08:06.720> a<00:08:06.800> function<00:08:07.160> call,<00:08:07.440> I<00:08:07.480> hit<00:08:07.680> F11<00:08:08.240> or\nstep into a function call, I hit F11 or\nstep into a function call, I hit F11 or uh<00:08:09.040> run<00:08:09.560> otherwise<00:08:10.000> just<00:08:10.160> run<00:08:10.280> the<00:08:10.360> step<00:08:10.560> into\nuh run otherwise just run the step into\nuh run otherwise just run the step into command.\ncommand.\ncommand. Um<00:08:12.400> and<00:08:12.520> then<00:08:12.640> it'll<00:08:13.200> it'll<00:08:13.400> jump<00:08:13.680> into<00:08:13.880> a\nUm and then it'll it'll jump into a\nUm and then it'll it'll jump into a function<00:08:14.240> call<00:08:14.400> that<00:08:14.560> way.<00:08:15.360> Um<00:08:15.720> if<00:08:15.880> I<00:08:15.919> want<00:08:16.200> to\nfunction call that way. Um if I want to\nfunction call that way. Um if I want to get<00:08:16.720> out<00:08:16.840> of<00:08:16.919> a<00:08:16.960> function<00:08:17.280> call,<00:08:17.440> I<00:08:17.480> have<00:08:17.600> to\nget out of a function call, I have to\nget out of a function call, I have to run<00:08:17.840> step<00:08:18.160> out,<00:08:18.640> which<00:08:18.800> is<00:08:18.919> shift<00:08:19.200> F11.\nrun step out, which is shift F11.\nrun step out, which is shift F11. That'll<00:08:21.120> pop<00:08:21.320> me<00:08:21.400> back.<00:08:21.919> It<00:08:21.960> basically<00:08:22.240> runs\nThat'll pop me back. It basically runs\nThat'll pop me back. It basically runs to<00:08:22.520> the<00:08:22.600> end<00:08:22.680> of<00:08:22.760> the<00:08:22.800> function<00:08:23.200> until<00:08:23.440> the\nto the end of the function until the\nto the end of the function until the function<00:08:23.840> exits<00:08:24.200> and<00:08:24.280> then<00:08:24.440> it<00:08:24.560> and<00:08:24.680> then<00:08:24.760> it\nfunction exits and then it and then it\nfunction exits and then it and then it pops<00:08:25.520> out<00:08:25.640> and<00:08:26.000> and<00:08:26.160> ends<00:08:26.760> wherever<00:08:27.520> wherever\npops out and and ends wherever wherever\npops out and and ends wherever wherever the<00:08:27.840> return<00:08:28.120> point<00:08:28.360> is.\nthe return point is.\nthe return point is. Um\nUm\nUm so,<00:08:30.840> I<00:08:30.880> can<00:08:30.905> [clears throat]<00:08:31.000> click<00:08:31.160> and<00:08:31.240> drag\nso, I can [clears throat] click and drag\nso, I can [clears throat] click and drag a<00:08:31.560> thread<00:08:31.800> as<00:08:31.919> well.<00:08:32.080> I<00:08:32.159> just<00:08:32.320> did<00:08:32.479> that.<00:08:32.800> So,\na thread as well. I just did that. So,\na thread as well. I just did that. So, if<00:08:33.200> I<00:08:33.280> want<00:08:33.400> to<00:08:33.479> reposition<00:08:34.000> a<00:08:34.039> thread,<00:08:34.400> this\nif I want to reposition a thread, this\nif I want to reposition a thread, this doesn't<00:08:34.919> do<00:08:35.080> any<00:08:35.280> timeline<00:08:35.680> debugging<00:08:36.000> stuff\ndoesn't do any timeline debugging stuff\ndoesn't do any timeline debugging stuff right<00:08:36.400> now.<00:08:36.599> So,<00:08:37.479> um<00:08:38.240> or<00:08:38.440> well,<00:08:38.599> this<00:08:38.760> feature\nright now. So, um or well, this feature\nright now. So, um or well, this feature would<00:08:39.200> never<00:08:39.400> do<00:08:39.520> that.\nwould never do that.\nwould never do that. >> Wait,<00:08:40.159> wait,<00:08:40.280> wait,<00:08:40.400> wait,<00:08:40.520> wait.<00:08:40.800> What<00:08:41.320> Wait,\n>> Wait, wait, wait, wait, wait. What Wait,\n>> Wait, wait, wait, wait, wait. What Wait, what<00:08:41.719> you<00:08:41.840> can<00:08:42.039> do?<00:08:42.400> What<00:08:42.760> would<00:08:43.039> you<00:08:43.120> can<00:08:43.599> you\nwhat you can do? What would you can you\nwhat you can do? What would you can you can<00:08:43.880> drag<00:08:44.280> a<00:08:44.360> thread?\ncan drag a thread?\ncan drag a thread? >> Oh,<00:08:46.440> yeah.<00:08:46.680> So,<00:08:46.839> here<00:08:47.000> So,<00:08:47.120> here<00:08:47.600> here's<00:08:47.880> the\n>> Oh, yeah. So, here So, here here's the\n>> Oh, yeah. So, here So, here here's the position<00:08:48.320> of<00:08:48.440> my<00:08:48.600> main<00:08:48.880> thread.<00:08:49.160> You<00:08:49.240> can<00:08:49.360> see\nposition of my main thread. You can see\nposition of my main thread. You can see it's<00:08:49.880> it's<00:08:50.000> got<00:08:50.160> the<00:08:50.240> name<00:08:50.640> mule<00:08:50.920> main<00:08:51.160> thread.\nit's it's got the name mule main thread.\nit's it's got the name mule main thread. And<00:08:51.760> this<00:08:51.880> is<00:08:52.000> its<00:08:52.120> call<00:08:52.360> stack,<00:08:52.640> too,<00:08:52.800> when<00:08:52.920> I\nAnd this is its call stack, too, when I\nAnd this is its call stack, too, when I hover<00:08:53.240> it.<00:08:53.400> So,<00:08:53.520> you<00:08:53.600> can<00:08:53.720> see<00:08:54.560> mule<00:08:54.839> main,<00:08:55.440> win\nhover it. So, you can see mule main, win\nhover it. So, you can see mule main, win main,<00:08:56.480> um\nmain, um\nmain, um >> Yeah.\n>> Yeah.\n>> Yeah. >> Basically,<00:08:57.960> there's<00:08:58.120> the<00:08:58.200> full<00:08:58.360> call<00:08:58.520> stack.\n>> Basically, there's the full call stack.\n>> Basically, there's the full call stack. So,<00:08:58.720> you<00:08:58.800> have<00:08:58.880> a<00:08:58.920> couple<00:08:59.120> things<00:08:59.360> in<00:08:59.600> in<00:08:59.760> like\nSo, you have a couple things in in like\nSo, you have a couple things in in like the<00:09:00.440> from<00:09:01.000> the<00:09:01.120> kernel,<00:09:01.760> um<00:09:02.200> not<00:09:02.400> literally\nthe from the kernel, um not literally\nthe from the kernel, um not literally the<00:09:02.800> kernel,<00:09:03.040> but<00:09:03.520> the<00:09:03.640> user<00:09:03.880> space<00:09:04.120> of<00:09:04.200> the\nthe kernel, but the user space of the\nthe kernel, but the user space of the kernel.<00:09:05.200> And<00:09:05.280> then<00:09:05.440> you<00:09:05.520> have<00:09:05.800> s<00:09:06.000> e<00:09:06.080> r<00:09:06.160> t<00:09:06.360> common\nkernel. And then you have s e r t common\nkernel. And then you have s e r t common main,<00:09:07.360> s<00:09:07.560> e<00:09:07.839> a<00:09:08.400> s<00:09:08.640> e<00:09:08.839> h,<00:09:09.200> and<00:09:09.320> then<00:09:09.480> invoke<00:09:09.920> main,\nmain, s e a s e h, and then invoke main,\nmain, s e a s e h, and then invoke main, which<00:09:10.280> is<00:09:10.400> an<00:09:10.520> inline<00:09:11.000> function.<00:09:11.600> And<00:09:11.680> then\nwhich is an inline function. And then\nwhich is an inline function. And then you<00:09:12.120> have<00:09:12.280> win<00:09:12.480> main,<00:09:12.720> which<00:09:12.839> is<00:09:12.960> actually<00:09:13.240> in\nyou have win main, which is actually in\nyou have win main, which is actually in this<00:09:13.440> program.<00:09:13.760> And<00:09:13.839> then<00:09:13.960> you<00:09:14.000> have<00:09:14.160> mule\nthis program. And then you have mule\nthis program. And then you have mule main,<00:09:15.240> which<00:09:15.440> is<00:09:15.520> just<00:09:15.760> this<00:09:15.920> function<00:09:16.240> right\nmain, which is just this function right\nmain, which is just this function right here.\nhere.\nhere. So,<00:09:17.240> that's<00:09:17.440> the<00:09:17.520> call<00:09:17.720> stack.<00:09:17.960> This<00:09:18.120> is<00:09:18.200> the\nSo, that's the call stack. This is the\nSo, that's the call stack. This is the thread.<00:09:18.760> And<00:09:18.880> if<00:09:19.000> I<00:09:19.040> want<00:09:19.280> to<00:09:19.440> reposition<00:09:20.480> the\nthread. And if I want to reposition the\nthread. And if I want to reposition the instruction<00:09:21.080> pointer<00:09:21.360> of<00:09:21.440> the<00:09:21.520> thread,<00:09:22.160> cuz\ninstruction pointer of the thread, cuz\ninstruction pointer of the thread, cuz this<00:09:22.680> arrow<00:09:23.000> is<00:09:23.080> showing<00:09:23.520> what<00:09:23.680> instruction\nthis arrow is showing what instruction\nthis arrow is showing what instruction is<00:09:24.200> going<00:09:24.320> to<00:09:24.400> execute<00:09:24.760> next,<00:09:25.080> right?<00:09:25.560> Or<00:09:25.680> what\nis going to execute next, right? Or what\nis going to execute next, right? Or what code<00:09:26.080> is<00:09:26.160> going<00:09:26.280> to<00:09:26.360> execute<00:09:26.720> next.<00:09:27.440> If<00:09:27.560> I\ncode is going to execute next. If I\ncode is going to execute next. If I wanted<00:09:27.880> to<00:09:27.960> change<00:09:28.280> that,<00:09:28.560> I<00:09:28.720> just<00:09:29.200> I<00:09:29.280> can\nwanted to change that, I just I can\nwanted to change that, I just I can click<00:09:29.640> and<00:09:29.720> drag<00:09:30.040> the<00:09:30.120> thread.\nclick and drag the thread.\nclick and drag the thread. But,<00:09:31.480> then<00:09:31.640> you<00:09:31.720> will\nBut, then you will\nBut, then you will >> say,<00:09:32.160> \"Hey,<00:09:32.360> I<00:09:32.440> actually<00:09:32.880> skip<00:09:33.360> the<00:09:33.720> the<00:09:33.800> ones\n>> say, \"Hey, I actually skip the the ones\n>> say, \"Hey, I actually skip the the ones in<00:09:34.160> between?\"\nin between?\"\nin between?\" No,<00:09:35.960> so<00:09:36.120> it<00:09:36.160> just<00:09:36.440> changes<00:09:36.800> the<00:09:36.920> position<00:09:37.360> of\nNo, so it just changes the position of\nNo, so it just changes the position of the<00:09:37.560> thread's<00:09:37.960> instruction<00:09:38.440> pointer.<00:09:38.840> So,<00:09:39.480> um\nthe thread's instruction pointer. So, um\nthe thread's instruction pointer. So, um all<00:09:40.000> the<00:09:40.440> like<00:09:40.640> it's<00:09:40.760> not<00:09:40.920> changing<00:09:41.200> any\nall the like it's not changing any\nall the like it's not changing any memory<00:09:41.880> or<00:09:42.040> anything.<00:09:42.320> It's<00:09:42.760> only<00:09:43.040> changing\nmemory or anything. It's only changing\nmemory or anything. It's only changing the<00:09:43.440> instruction<00:09:43.840> pointer<00:09:44.080> register,\nthe instruction pointer register,\nthe instruction pointer register, actually,<00:09:45.680> of<00:09:45.800> the<00:09:45.880> thread.\nactually, of the thread.\nactually, of the thread. Um<00:09:47.160> so,<00:09:47.280> you<00:09:47.360> can<00:09:47.520> rerun<00:09:47.920> code<00:09:48.480> this<00:09:48.720> way.<00:09:49.320> Um\nUm so, you can rerun code this way. Um\nUm so, you can rerun code this way. Um if<00:09:50.680> you<00:09:50.800> have<00:09:51.000> pretty<00:09:51.200> deterministic<00:09:51.800> code,\nif you have pretty deterministic code,\nif you have pretty deterministic code, this<00:09:52.280> actually<00:09:52.560> gets<00:09:52.800> you<00:09:52.960> like,<00:09:53.720> you<00:09:53.800> know,\nthis actually gets you like, you know,\nthis actually gets you like, you know, pretty<00:09:54.200> close<00:09:54.560> to<00:09:54.720> the<00:09:54.920> full,<00:09:55.800> uh\npretty close to the full, uh\npretty close to the full, uh like<00:09:56.560> this<00:09:56.760> is<00:09:57.040> a<00:09:57.120> lot<00:09:57.440> like<00:09:57.680> timeline\nlike this is a lot like timeline\nlike this is a lot like timeline debugging<00:09:58.560> if<00:09:58.840> you<00:09:59.320> have<00:09:59.600> pretty\ndebugging if you have pretty\ndebugging if you have pretty deterministic<00:10:00.480> code,<00:10:01.280> where<00:10:01.440> time<00:10:01.760> travel<00:10:02.120> or\ndeterministic code, where time travel or\ndeterministic code, where time travel or I<00:10:02.480> shouldn't<00:10:02.680> say<00:10:02.760> timeline<00:10:03.120> debugging.<00:10:03.400> I\nI shouldn't say timeline debugging. I\nI shouldn't say timeline debugging. I should<00:10:03.600> say<00:10:03.720> time<00:10:04.120> travel<00:10:04.440> debugging.\nshould say time travel debugging.\nshould say time travel debugging. Um<00:10:06.240> which<00:10:06.400> are<00:10:06.520> different<00:10:06.840> things,<00:10:07.120> but\nUm which are different things, but\nUm which are different things, but So,<00:10:08.720> time<00:10:09.040> travel<00:10:09.280> debugging<00:10:09.600> people<00:10:10.040> will\nSo, time travel debugging people will\nSo, time travel debugging people will often<00:10:10.360> think<00:10:10.520> of<00:10:10.720> features<00:10:11.040> like<00:10:11.160> step\noften think of features like step\noften think of features like step backwards,<00:10:12.080> for<00:10:12.200> example.<00:10:12.640> Like,<00:10:13.120> you<00:10:13.200> know,\nbackwards, for example. Like, you know,\nbackwards, for example. Like, you know, if<00:10:13.400> you<00:10:13.480> step<00:10:13.720> forward,<00:10:14.640> you<00:10:14.720> might<00:10:14.840> also<00:10:15.040> want\nif you step forward, you might also want\nif you step forward, you might also want to<00:10:15.280> say<00:10:15.440> like,<00:10:15.640> \"Hey,<00:10:16.160> like<00:10:16.320> I<00:10:16.360> want<00:10:16.520> to<00:10:16.560> go\nto say like, \"Hey, like I want to go\nto say like, \"Hey, like I want to go back<00:10:17.040> to<00:10:17.120> this<00:10:17.560> to<00:10:17.680> the<00:10:17.760> point<00:10:18.000> in<00:10:18.080> time<00:10:18.480> in\nback to this to the point in time in\nback to this to the point in time in history<00:10:19.720> where<00:10:19.920> my<00:10:20.040> thread<00:10:20.320> was<00:10:20.440> here.\"<00:10:21.440> Um\nhistory where my thread was here.\" Um\nhistory where my thread was here.\" Um that<00:10:22.800> that<00:10:23.440> feature's<00:10:23.920> pretty<00:10:24.360> complicated\nthat that feature's pretty complicated\nthat that feature's pretty complicated and<00:10:24.920> not<00:10:25.160> supported<00:10:25.560> by<00:10:25.640> the<00:10:25.720> debugger<00:10:25.960> right\nand not supported by the debugger right\nand not supported by the debugger right now.<00:10:26.280> But,<00:10:26.440> you<00:10:26.520> can<00:10:26.640> rerun<00:10:27.040> code<00:10:27.240> by\nnow. But, you can rerun code by\nnow. But, you can rerun code by repositioning<00:10:27.960> your<00:10:28.080> thread.<00:10:28.440> Anyways,\nrepositioning your thread. Anyways,\nrepositioning your thread. Anyways, that's<00:10:28.880> kind<00:10:29.040> of<00:10:29.120> a<00:10:29.160> tangent.<00:10:29.960> We're<00:10:30.080> still\nthat's kind of a tangent. We're still\nthat's kind of a tangent. We're still not<00:10:30.560> We're<00:10:30.680> still<00:10:30.800> doing<00:10:31.080> basic<00:10:31.400> usage<00:10:31.720> stuff.\nnot We're still doing basic usage stuff.\nnot We're still doing basic usage stuff. So,<00:10:32.080> I<00:10:32.120> should<00:10:32.560> I<00:10:32.600> should<00:10:33.080> maybe<00:10:33.360> hold<00:10:33.600> off<00:10:33.760> on\nSo, I should I should maybe hold off on\nSo, I should I should maybe hold off on this<00:10:34.000> stuff,<00:10:34.200> but<00:10:34.760> Anyways,<00:10:35.120> so<00:10:35.200> I<00:10:35.240> can<00:10:35.400> step\nthis stuff, but Anyways, so I can step\nthis stuff, but Anyways, so I can step through<00:10:36.440> and<00:10:36.880> if<00:10:37.000> I<00:10:37.080> have<00:10:37.200> like<00:10:37.320> a<00:10:37.400> variable\nthrough and if I have like a variable\nthrough and if I have like a variable that's<00:10:38.400> in<00:10:38.560> my<00:10:38.680> code<00:10:39.160> and<00:10:39.280> I<00:10:39.320> want<00:10:39.480> to<00:10:39.560> see<00:10:39.800> what\nthat's in my code and I want to see what\nthat's in my code and I want to see what the<00:10:40.000> value<00:10:40.400> is,<00:10:40.600> I<00:10:40.680> can<00:10:40.839> just<00:10:41.040> hover<00:10:41.720> the<00:10:41.839> name\nthe value is, I can just hover the name\nthe value is, I can just hover the name of<00:10:42.040> that<00:10:42.160> variable<00:10:42.520> in<00:10:42.640> the<00:10:42.720> code.<00:10:43.680> Um\nof that variable in the code. Um\nof that variable in the code. Um actually,<00:10:44.360> let<00:10:44.480> me<00:10:45.000> um\nactually, let me um\nactually, let me um All<00:10:46.600> this<00:10:46.760> stuff<00:10:47.120> because<00:10:47.440> I<00:10:47.560> ran<00:10:47.800> this\nAll this stuff because I ran this\nAll this stuff because I ran this function<00:10:48.240> once<00:10:48.480> already,<00:10:48.800> all<00:10:48.960> this<00:10:49.280> all\nfunction once already, all this all\nfunction once already, all this all these<00:10:49.520> variables<00:10:49.920> are<00:10:49.960> going<00:10:50.200> to<00:10:50.280> be\nthese variables are going to be\nthese variables are going to be initialized<00:10:51.040> because<00:10:51.680> the<00:10:51.760> function<00:10:52.080> will\ninitialized because the function will\ninitialized because the function will have<00:10:52.360> run.<00:10:52.600> So,<00:10:52.720> what<00:10:52.839> I'll<00:10:52.960> do<00:10:53.680> is<00:10:53.800> I'm<00:10:53.880> going\nhave run. So, what I'll do is I'm going\nhave run. So, what I'll do is I'm going to<00:10:54.520> I'm<00:10:54.640> going<00:10:54.760> to<00:10:54.839> restart<00:10:55.200> the<00:10:55.280> program.<00:10:55.880> I'm\nto I'm going to restart the program. I'm\nto I'm going to restart the program. I'm going<00:10:56.120> to<00:10:56.160> put<00:10:56.320> a<00:10:56.360> breakpoint<00:10:56.920> right<00:10:57.080> here.\ngoing to put a breakpoint right here.\ngoing to put a breakpoint right here. So,<00:10:57.440> a<00:10:57.480> breakpoint<00:10:57.920> is<00:10:58.040> basically<00:10:58.360> saying<00:10:58.680> any\nSo, a breakpoint is basically saying any\nSo, a breakpoint is basically saying any thread<00:10:59.200> that<00:10:59.360> hits<00:10:59.600> this<00:10:59.800> spot<00:11:00.160> in<00:11:00.240> the<00:11:00.320> code,\nthread that hits this spot in the code,\nthread that hits this spot in the code, let's<00:11:01.760> just<00:11:01.920> stop<00:11:02.120> the<00:11:02.200> program,<00:11:02.640> right?\nlet's just stop the program, right?\nlet's just stop the program, right? And<00:11:04.480> uh<00:11:04.600> so,<00:11:05.200> the<00:11:05.280> debugger<00:11:05.600> will<00:11:05.760> pause<00:11:06.320> the\nAnd uh so, the debugger will pause the\nAnd uh so, the debugger will pause the entire<00:11:06.800> program<00:11:07.280> when<00:11:07.520> one<00:11:07.720> thread<00:11:07.960> hits<00:11:08.200> this\nentire program when one thread hits this\nentire program when one thread hits this position.<00:11:09.120> Now,<00:11:09.200> I'm<00:11:09.320> going<00:11:09.440> to<00:11:09.520> kill<00:11:09.800> the\nposition. Now, I'm going to kill the\nposition. Now, I'm going to kill the program<00:11:10.920> by<00:11:11.040> hitting<00:11:11.320> the<00:11:11.760> the<00:11:11.839> kill<00:11:12.120> all\nprogram by hitting the the kill all\nprogram by hitting the the kill all thing<00:11:13.000> up<00:11:13.120> here.\nthing up here.\nthing up here. Um<00:11:14.560> and<00:11:14.680> then<00:11:14.760> I'm<00:11:14.839> going<00:11:14.960> to<00:11:15.000> just<00:11:15.200> run<00:11:15.360> again.\nUm and then I'm going to just run again.\nUm and then I'm going to just run again. I<00:11:16.240> could<00:11:16.360> have<00:11:16.480> done<00:11:16.640> the<00:11:16.720> same<00:11:16.960> thing<00:11:17.160> by\nI could have done the same thing by\nI could have done the same thing by doing<00:11:17.680> restart.<00:11:18.520> Just<00:11:18.880> no<00:11:19.000> difference.\ndoing restart. Just no difference.\ndoing restart. Just no difference. Anyways,<00:11:20.680> once<00:11:20.880> I'm<00:11:21.000> here,\nAnyways, once I'm here,\nAnyways, once I'm here, if<00:11:22.400> I<00:11:22.480> have<00:11:22.640> one<00:11:22.800> of<00:11:22.880> these<00:11:23.000> variables<00:11:23.400> like\nif I have one of these variables like\nif I have one of these variables like this<00:11:23.680> basics<00:11:24.240> structure,<00:11:24.640> you<00:11:24.720> can<00:11:24.839> see<00:11:24.960> it's\nthis basics structure, you can see it's\nthis basics structure, you can see it's just<00:11:25.200> filled<00:11:25.400> with<00:11:25.560> garbage.<00:11:26.440> Um\njust filled with garbage. Um\njust filled with garbage. Um but<00:11:27.360> if<00:11:27.440> I<00:11:27.520> step<00:11:27.760> over<00:11:27.880> the<00:11:27.960> initialization,\nbut if I step over the initialization,\nbut if I step over the initialization, you'll<00:11:28.800> see<00:11:28.960> that<00:11:29.520> uh<00:11:29.800> the<00:11:29.839> debugger<00:11:30.160> will\nyou'll see that uh the debugger will\nyou'll see that uh the debugger will tell<00:11:30.400> me<00:11:30.520> what's<00:11:30.720> changed.\ntell me what's changed.\ntell me what's changed. And<00:11:33.080> I<00:11:33.120> can<00:11:33.280> see<00:11:34.160> that<00:11:34.360> see<00:11:34.480> the<00:11:34.560> new<00:11:34.680> values<00:11:35.040> of\nAnd I can see that see the new values of\nAnd I can see that see the new values of all<00:11:35.240> these<00:11:35.360> things<00:11:36.320> uh\nall these things uh\nall these things uh immediately.\nimmediately.\nimmediately. So,<00:11:39.080> I<00:11:39.160> can<00:11:39.280> do<00:11:39.400> that<00:11:39.600> with<00:11:39.760> pretty<00:11:39.960> much\nSo, I can do that with pretty much\nSo, I can do that with pretty much anything<00:11:40.440> in<00:11:41.000> in<00:11:41.160> here.<00:11:41.360> We<00:11:41.440> have<00:11:41.560> strings\nanything in in here. We have strings\nanything in in here. We have strings right<00:11:42.200> here.<00:11:43.000> We<00:11:43.080> have<00:11:43.240> longer<00:11:43.640> text.<00:11:44.760> Um<00:11:44.960> this\nright here. We have longer text. Um this\nright here. We have longer text. Um this is<00:11:45.240> a<00:11:45.280> wide<00:11:45.560> string,<00:11:45.800> so<00:11:45.960> each<00:11:46.200> character<00:11:46.680> is\nis a wide string, so each character is\nis a wide string, so each character is uh\nuh\nuh a<00:11:47.960> U16<00:11:48.560> instead<00:11:48.880> of<00:11:49.000> a<00:11:49.400> instead<00:11:49.640> of<00:11:49.840> just<00:11:50.080> one\na U16 instead of a instead of just one\na U16 instead of a instead of just one byte<00:11:50.600> like<00:11:50.760> the<00:11:51.000> it's<00:11:51.160> UTF-16<00:11:51.880> instead<00:11:52.080> of\nbyte like the it's UTF-16 instead of\nbyte like the it's UTF-16 instead of UTF-8.<00:11:53.200> Um<00:11:53.520> so,<00:11:53.640> we<00:11:53.680> can<00:11:53.800> visualize<00:11:54.160> that.<00:11:55.080> Um\nUTF-8. Um so, we can visualize that. Um\nUTF-8. Um so, we can visualize that. Um There's<00:11:56.120> a<00:11:56.160> bunch<00:11:56.360> of<00:11:56.440> like<00:11:56.840> evaluation<00:11:57.440> tests\nThere's a bunch of like evaluation tests\nThere's a bunch of like evaluation tests in<00:11:57.800> here.<00:11:58.040> I've<00:11:58.160> got<00:11:58.320> this<00:11:58.480> fixed<00:11:58.760> array<00:11:59.000> right\nin here. I've got this fixed array right\nin here. I've got this fixed array right here.\nhere.\nhere. Um\nUm\nUm and<00:12:02.720> then<00:12:03.240> count<00:12:03.560> member<00:12:03.840> like<00:12:04.040> the<00:12:04.160> it's<00:12:04.320> just\nand then count member like the it's just\nand then count member like the it's just this<00:12:04.600> structure.<00:12:05.400> The<00:12:05.440> other<00:12:05.560> thing<00:12:05.720> you<00:12:05.800> can\nthis structure. The other thing you can\nthis structure. The other thing you can do<00:12:05.960> is<00:12:06.040> evaluate<00:12:06.400> type<00:12:06.640> info.<00:12:06.960> So,<00:12:07.120> if<00:12:07.240> I<00:12:07.280> want\ndo is evaluate type info. So, if I want\ndo is evaluate type info. So, if I want to<00:12:07.480> look<00:12:07.600> at<00:12:07.840> what<00:12:08.040> this<00:12:08.200> type<00:12:08.480> is,<00:12:09.040> I<00:12:09.120> can<00:12:09.600> uh<00:12:10.000> I\nto look at what this type is, I can uh I\nto look at what this type is, I can uh I just<00:12:10.680> selected<00:12:11.080> this<00:12:11.200> text<00:12:11.480> and<00:12:11.560> hovered<00:12:11.840> the\njust selected this text and hovered the\njust selected this text and hovered the selected<00:12:12.320> text.<00:12:13.160> Uh<00:12:13.240> by<00:12:13.400> default,<00:12:13.760> if<00:12:13.840> you\nselected text. Uh by default, if you\nselected text. Uh by default, if you hover<00:12:14.160> types,<00:12:14.480> it<00:12:14.560> won't<00:12:14.760> show<00:12:14.920> it<00:12:15.000> cuz<00:12:15.120> it\nhover types, it won't show it cuz it\nhover types, it won't show it cuz it just<00:12:15.440> becomes<00:12:15.760> a<00:12:15.800> little<00:12:15.920> bit<00:12:16.040> too<00:12:16.160> noisy.\njust becomes a little bit too noisy.\njust becomes a little bit too noisy. But,<00:12:17.000> if<00:12:17.080> you<00:12:17.160> want<00:12:17.280> to<00:12:17.360> evaluate<00:12:17.760> type,<00:12:18.000> you\nBut, if you want to evaluate type, you\nBut, if you want to evaluate type, you can<00:12:18.520> you<00:12:18.600> can<00:12:18.920> select<00:12:19.240> the<00:12:19.320> text,<00:12:19.640> hover<00:12:19.880> it.\ncan you can select the text, hover it.\ncan you can select the text, hover it. And<00:12:21.240> then<00:12:21.360> here<00:12:21.520> you<00:12:21.640> can<00:12:21.760> see<00:12:21.880> the<00:12:22.000> type<00:12:22.200> info,\nAnd then here you can see the type info,\nAnd then here you can see the type info, right?<00:12:22.720> So,<00:12:22.800> you<00:12:22.920> can<00:12:23.040> see<00:12:23.200> like<00:12:24.040> um<00:12:24.800> these\nright? So, you can see like um these\nright? So, you can see like um these blue<00:12:25.240> lines,<00:12:25.600> by<00:12:25.680> the<00:12:25.760> way,<00:12:25.920> are<00:12:26.040> cache<00:12:26.360> line\nblue lines, by the way, are cache line\nblue lines, by the way, are cache line boundaries.<00:12:27.160> So,<00:12:27.240> you<00:12:27.320> can<00:12:27.440> see<00:12:27.600> like,<00:12:27.760> \"Hey,\nboundaries. So, you can see like, \"Hey,\nboundaries. So, you can see like, \"Hey, here's<00:12:28.120> my<00:12:28.280> array<00:12:28.560> of<00:12:28.720> pair<00:12:29.080> structures.<00:12:30.040> Each\nhere's my array of pair structures. Each\nhere's my array of pair structures. Each pair<00:12:30.400> structure<00:12:30.680> has<00:12:30.760> an<00:12:30.960> X<00:12:31.240> in<00:12:31.400> 32<00:12:31.840> and<00:12:31.920> a<00:12:31.960> Y\npair structure has an X in 32 and a Y\npair structure has an X in 32 and a Y float.\"<00:12:33.120> Um<00:12:33.280> and<00:12:33.360> it's<00:12:33.480> got<00:12:34.000> um<00:12:34.520> you<00:12:34.600> know,<00:12:35.040> 10\nfloat.\" Um and it's got um you know, 10\nfloat.\" Um and it's got um you know, 10 of<00:12:35.360> those<00:12:35.839> and<00:12:36.400> uh<00:12:36.560> right<00:12:36.760> here<00:12:36.920> is<00:12:37.000> another\nof those and uh right here is another\nof those and uh right here is another cache<00:12:37.480> line<00:12:37.640> boundary.<00:12:38.760> Um<00:12:39.160> and<00:12:39.280> then<00:12:39.400> we've\ncache line boundary. Um and then we've\ncache line boundary. Um and then we've got<00:12:39.680> the<00:12:39.800> in<00:12:39.920> 32<00:12:40.280> count<00:12:40.640> at<00:12:40.720> the<00:12:40.839> end,<00:12:41.040> right?\ngot the in 32 count at the end, right?\ngot the in 32 count at the end, right? So,<00:12:41.320> we<00:12:41.440> can<00:12:41.520> evaluate<00:12:41.839> type<00:12:42.040> info<00:12:42.240> that<00:12:42.400> way.\nSo, we can evaluate type info that way.\nSo, we can evaluate type info that way. Um\nUm\nUm and\nand\nand uh\nuh\nuh that's<00:12:48.320> like<00:12:48.640> that's<00:12:48.839> like<00:12:49.000> super<00:12:49.320> basic\nthat's like that's like super basic\nthat's like that's like super basic early<00:12:50.520> usage.<00:12:51.000> So,\nearly usage. So,\nearly usage. So, um<00:12:52.680> now<00:12:53.000> I<00:12:53.040> can<00:12:53.160> focus<00:12:53.440> on<00:12:53.520> the<00:12:53.600> watch<00:12:53.839> window.\num now I can focus on the watch window.\num now I can focus on the watch window. So,<00:12:54.760> if<00:12:54.880> I<00:12:54.920> wanted<00:12:55.240> to<00:12:55.480> like<00:12:55.680> hovering<00:12:56.040> is\nSo, if I wanted to like hovering is\nSo, if I wanted to like hovering is nice,<00:12:56.760> but<00:12:56.880> sometimes<00:12:57.280> you<00:12:57.400> want<00:12:57.560> to<00:12:57.680> like\nnice, but sometimes you want to like\nnice, but sometimes you want to like actually<00:12:58.240> just<00:12:58.440> have<00:12:58.600> some<00:12:58.760> expressions<00:12:59.240> in\nactually just have some expressions in\nactually just have some expressions in here.<00:13:00.000> Um\nhere. Um\nhere. Um so,<00:13:01.240> in<00:13:01.360> the<00:13:01.440> watch<00:13:01.600> window,<00:13:01.839> I<00:13:01.880> can<00:13:02.080> add<00:13:02.280> new\nso, in the watch window, I can add new\nso, in the watch window, I can add new expressions<00:13:03.160> uh<00:13:03.320> just<00:13:03.480> by<00:13:03.600> typing<00:13:04.080> in<00:13:04.200> this\nexpressions uh just by typing in this\nexpressions uh just by typing in this little<00:13:04.640> expression<00:13:05.040> slot.<00:13:05.600> I<00:13:05.680> can<00:13:05.839> hit<00:13:06.080> F2<00:13:06.480> to\nlittle expression slot. I can hit F2 to\nlittle expression slot. I can hit F2 to edit<00:13:06.800> it,<00:13:06.920> or<00:13:07.000> I<00:13:07.040> can<00:13:07.200> double<00:13:07.440> click,<00:13:07.760> or<00:13:07.800> I<00:13:07.880> can\nedit it, or I can double click, or I can\nedit it, or I can double click, or I can just<00:13:08.080> start<00:13:08.280> typing,<00:13:08.600> too.<00:13:08.800> So,<00:13:08.920> I<00:13:08.960> can<00:13:09.080> do<00:13:09.920> um\njust start typing, too. So, I can do um\njust start typing, too. So, I can do um if<00:13:10.839> I<00:13:10.880> want<00:13:11.040> to<00:13:11.080> evaluate<00:13:11.440> basic<00:13:11.800> structure,\nif I want to evaluate basic structure,\nif I want to evaluate basic structure, um\num\num this<00:13:14.600> is<00:13:14.760> just<00:13:15.400> uh<00:13:15.640> I<00:13:15.720> can<00:13:15.839> put<00:13:16.000> this<00:13:16.200> in<00:13:16.400> and<00:13:16.680> it\nthis is just uh I can put this in and it\nthis is just uh I can put this in and it expands<00:13:17.240> just<00:13:17.480> like<00:13:17.680> what<00:13:17.800> the<00:13:17.880> hover\nexpands just like what the hover\nexpands just like what the hover evaluation<00:13:18.680> would<00:13:18.760> have<00:13:18.880> done.<00:13:19.720> Um\nevaluation would have done. Um\nevaluation would have done. Um uh\nuh\nuh Let's<00:13:22.880> see<00:13:22.960> what<00:13:23.080> else.<00:13:23.480> I<00:13:23.560> can<00:13:23.680> put<00:13:23.839> string<00:13:24.160> in\nLet's see what else. I can put string in\nLet's see what else. I can put string in here.<00:13:24.839> I<00:13:24.880> can<00:13:25.000> put<00:13:25.200> longer<00:13:25.600> text<00:13:26.040> in<00:13:26.160> here.<00:13:27.040> Um\nUh<00:13:29.920> what<00:13:30.080> else?<00:13:30.560> Let's<00:13:30.720> see.\nUh what else? Let's see.\nUh what else? Let's see. Um\nUm\nUm So<00:13:33.160> that's<00:13:33.360> like<00:13:33.840> that's<00:13:34.040> a<00:13:34.080> few<00:13:34.640> kinds<00:13:34.920> of\nSo that's like that's a few kinds of\nSo that's like that's a few kinds of evaluation<00:13:35.520> things.<00:13:35.800> Now<00:13:35.920> something<00:13:36.240> that's\nevaluation things. Now something that's\nevaluation things. Now something that's unique<00:13:36.680> about<00:13:36.880> the<00:13:36.960> rad<00:13:37.120> debugger<00:13:37.520> is<00:13:37.680> that\nunique about the rad debugger is that\nunique about the rad debugger is that all<00:13:38.440> those<00:13:38.720> UIs<00:13:39.040> I<00:13:39.120> showed<00:13:39.320> before<00:13:39.680> like\nall those UIs I showed before like\nall those UIs I showed before like targets,<00:13:41.200> there's<00:13:41.360> also<00:13:41.600> UIs<00:13:41.880> like\ntargets, there's also UIs like\ntargets, there's also UIs like breakpoints.\nbreakpoints.\nbreakpoints. Um<00:13:44.360> these<00:13:44.480> are<00:13:44.560> some<00:13:44.720> breakpoints<00:13:45.280> that<00:13:45.440> I\nUm these are some breakpoints that I\nUm these are some breakpoints that I have.<00:13:46.040> Step<00:13:46.280> like<00:13:46.400> here's<00:13:46.560> the<00:13:46.640> one<00:13:46.760> I<00:13:46.800> just\nhave. Step like here's the one I just\nhave. Step like here's the one I just set,<00:13:47.600> which<00:13:47.800> is<00:13:48.520> right<00:13:48.720> here.\nset, which is right here.\nset, which is right here. Um<00:13:51.960> all<00:13:52.200> of<00:13:52.280> these<00:13:52.520> UIs<00:13:53.080> are<00:13:53.280> actually<00:13:54.120> uh<00:13:54.560> all\nUm all of these UIs are actually uh all\nUm all of these UIs are actually uh all I<00:13:54.920> guess<00:13:55.120> I'll<00:13:55.200> just<00:13:55.400> spoil<00:13:55.760> it.<00:13:55.920> These<00:13:56.480> are\nI guess I'll just spoil it. These are\nI guess I'll just spoil it. These are all<00:13:56.800> watch<00:13:57.040> windows.<00:13:57.800> Um<00:13:58.480> so<00:13:59.200> so<00:13:59.400> basically\nall watch windows. Um so so basically\nall watch windows. Um so so basically like<00:14:00.040> if<00:14:00.160> you<00:14:00.240> didn't<00:14:00.400> want<00:14:00.520> to<00:14:00.600> use<00:14:00.720> these\nlike if you didn't want to use these\nlike if you didn't want to use these tabs<00:14:01.160> at<00:14:01.280> all,\ntabs at all,\ntabs at all, you<00:14:02.680> could<00:14:02.800> just<00:14:02.960> say,<00:14:03.120> \"Hey,<00:14:03.280> I<00:14:03.360> want<00:14:03.480> to<00:14:03.520> look\nyou could just say, \"Hey, I want to look\nyou could just say, \"Hey, I want to look at<00:14:03.800> all<00:14:03.920> the<00:14:04.000> targets\nat all the targets\nat all the targets in<00:14:05.600> my<00:14:05.720> watch<00:14:05.960> window.\"<00:14:06.240> And<00:14:06.360> if<00:14:06.440> I<00:14:06.480> expand\nin my watch window.\" And if I expand\nin my watch window.\" And if I expand that,<00:14:07.040> then<00:14:07.200> I<00:14:07.240> just<00:14:07.480> see<00:14:07.600> something<00:14:07.880> that\nthat, then I just see something that\nthat, then I just see something that looks<00:14:08.600> quite<00:14:08.880> a<00:14:08.920> lot<00:14:09.320> like<00:14:09.640> the<00:14:09.760> targets<00:14:10.200> tab,\nlooks quite a lot like the targets tab,\nlooks quite a lot like the targets tab, right?<00:14:11.760> I<00:14:11.800> can<00:14:11.920> just<00:14:12.040> start<00:14:12.160> evaluating\nright? I can just start evaluating\nright? I can just start evaluating things<00:14:12.800> like<00:14:12.920> that.<00:14:13.200> If<00:14:13.320> I'm<00:14:13.440> like,<00:14:13.560> \"Hey,<00:14:13.680> I\nthings like that. If I'm like, \"Hey, I\nthings like that. If I'm like, \"Hey, I want<00:14:13.840> to<00:14:13.920> see<00:14:14.000> all<00:14:14.080> my<00:14:14.200> breakpoints.\"\nwant to see all my breakpoints.\"\nwant to see all my breakpoints.\" Uh<00:14:15.960> that<00:14:16.080> can<00:14:16.200> also<00:14:16.440> just<00:14:16.600> be<00:14:16.720> in<00:14:16.840> here.\nUh that can also just be in here.\nUh that can also just be in here. Um\nUm\nUm And<00:14:19.760> so<00:14:19.880> I<00:14:19.960> don't<00:14:20.440> necessarily<00:14:20.920> need<00:14:21.160> these\nAnd so I don't necessarily need these\nAnd so I don't necessarily need these things.<00:14:21.720> And<00:14:21.880> let<00:14:22.160> you<00:14:22.240> know,<00:14:22.360> let's<00:14:22.520> say<00:14:22.640> for\nthings. And let you know, let's say for\nthings. And let you know, let's say for example<00:14:23.200> that<00:14:23.360> like<00:14:24.160> you<00:14:24.240> know,<00:14:24.400> I<00:14:24.480> don't<00:14:24.640> want\nexample that like you know, I don't want\nexample that like you know, I don't want to<00:14:24.880> hover<00:14:25.200> my<00:14:25.360> thread<00:14:25.720> instruction<00:14:26.120> pointer\nto hover my thread instruction pointer\nto hover my thread instruction pointer every<00:14:26.640> time<00:14:26.840> I<00:14:26.880> want<00:14:27.000> to<00:14:27.080> see<00:14:27.160> the<00:14:27.240> call<00:14:27.440> stack.\nevery time I want to see the call stack.\nevery time I want to see the call stack. Um\nUm\nUm well,<00:14:30.000> like<00:14:30.440> what<00:14:30.600> can<00:14:30.720> I<00:14:30.800> do<00:14:31.120> to<00:14:31.240> start\nwell, like what can I do to start\nwell, like what can I do to start inspecting<00:14:32.600> the<00:14:32.720> state<00:14:33.040> of<00:14:33.160> a<00:14:33.200> particular\ninspecting the state of a particular\ninspecting the state of a particular thread?<00:14:34.040> Well,<00:14:34.440> I<00:14:34.520> know<00:14:34.680> I'm<00:14:34.760> debugging<00:14:35.120> a\nthread? Well, I know I'm debugging a\nthread? Well, I know I'm debugging a process.<00:14:35.720> So<00:14:35.800> let<00:14:35.920> me<00:14:36.040> let<00:14:36.200> me<00:14:36.480> maybe<00:14:36.720> look<00:14:36.880> at\nprocess. So let me let me maybe look at\nprocess. So let me let me maybe look at all<00:14:37.040> the<00:14:37.120> processes<00:14:37.680> I<00:14:37.720> have.<00:14:38.200> Okay,<00:14:38.440> so\nall the processes I have. Okay, so\nall the processes I have. Okay, so there's<00:14:38.800> all<00:14:38.839> the<00:14:38.920> processes<00:14:39.400> that<00:14:39.480> I'm\nthere's all the processes that I'm\nthere's all the processes that I'm attached<00:14:39.920> to.\nattached to.\nattached to. Um<00:14:41.400> if<00:14:41.520> I<00:14:41.560> expand<00:14:41.960> that,<00:14:42.120> it's<00:14:42.240> like,<00:14:42.400> \"Oh,\nUm if I expand that, it's like, \"Oh,\nUm if I expand that, it's like, \"Oh, I've<00:14:42.640> got<00:14:42.880> the<00:14:43.240> I've<00:14:43.360> got<00:14:43.560> threads<00:14:43.920> that<00:14:44.080> are\nI've got the I've got threads that are\nI've got the I've got threads that are in<00:14:44.520> this<00:14:44.680> process.\"<00:14:45.360> Uh<00:14:45.480> we<00:14:45.600> have<00:14:45.720> three<00:14:46.040> of\nin this process.\" Uh we have three of\nin this process.\" Uh we have three of these.<00:14:46.360> These<00:14:46.520> are<00:14:46.600> just<00:14:46.800> spawned.<00:14:47.400> The<00:14:47.520> these\nthese. These are just spawned. The these\nthese. These are just spawned. The these are<00:14:47.839> not<00:14:48.360> um\nare not um\nare not um these<00:14:49.880> are<00:14:49.920> not<00:14:50.080> spawned<00:14:50.360> by<00:14:50.640> this<00:14:50.880> program.\nthese are not spawned by this program.\nthese are not spawned by this program. They're<00:14:51.320> spawned<00:14:51.640> by<00:14:51.760> the<00:14:52.480> by<00:14:52.720> the<00:14:52.880> operating\nThey're spawned by the by the operating\nThey're spawned by the by the operating system<00:14:53.880> uh<00:14:54.360> for<00:14:55.040> for<00:14:55.200> reasons<00:14:55.520> that<00:14:55.640> are<00:14:56.000> uh\nsystem uh for for reasons that are uh\nsystem uh for for reasons that are uh you<00:14:56.240> could<00:14:56.360> probably<00:14:56.720> find<00:14:56.960> out,<00:14:57.160> but<00:14:57.360> we\nyou could probably find out, but we\nyou could probably find out, but we don't<00:14:57.960> know.\ndon't know.\ndon't know. Um\nUm\nUm but<00:15:00.360> anyways,<00:15:00.680> here's<00:15:00.880> my<00:15:01.040> thread.<00:15:01.320> I<00:15:01.360> can\nbut anyways, here's my thread. I can\nbut anyways, here's my thread. I can expand<00:15:01.880> it<00:15:02.320> and<00:15:02.400> it's<00:15:02.520> like,<00:15:02.680> \"Oh,<00:15:03.080> there's<00:15:03.280> my\nexpand it and it's like, \"Oh, there's my\nexpand it and it's like, \"Oh, there's my call<00:15:03.560> stack.\"<00:15:04.160> That's<00:15:04.320> just<00:15:04.560> in<00:15:04.680> here<00:15:05.480> um\ncall stack.\" That's just in here um\ncall stack.\" That's just in here um inside<00:15:06.520> of<00:15:06.600> this<00:15:06.760> process<00:15:07.160> tree.<00:15:07.880> Now<00:15:08.000> if<00:15:08.160> I\ninside of this process tree. Now if I\ninside of this process tree. Now if I wanted<00:15:08.480> to<00:15:08.560> like\nwanted to like\nwanted to like not<00:15:09.800> bother<00:15:10.560> expanding<00:15:11.320> that<00:15:11.480> every<00:15:11.600> time,<00:15:11.839> I\nnot bother expanding that every time, I\nnot bother expanding that every time, I could<00:15:12.000> also<00:15:12.200> just<00:15:12.360> do<00:15:12.480> like,<00:15:12.960> \"Okay,<00:15:13.320> well,\ncould also just do like, \"Okay, well,\ncould also just do like, \"Okay, well, can<00:15:13.640> I<00:15:13.680> do<00:15:13.839> threads?\"<00:15:14.400> Or<00:15:14.839> maybe<00:15:15.000> I<00:15:15.040> can<00:15:15.120> do\ncan I do threads?\" Or maybe I can do\ncan I do threads?\" Or maybe I can do processes<00:15:16.520> at<00:15:16.720> zero<00:15:17.440> dot<00:15:17.680> threads<00:15:18.920> um<00:15:19.280> at\nprocesses at zero dot threads um at\nprocesses at zero dot threads um at zero.<00:15:20.400> And<00:15:20.520> hey,<00:15:20.680> there's<00:15:20.880> my<00:15:21.000> mule<00:15:21.240> main.<00:15:21.720> And\nzero. And hey, there's my mule main. And\nzero. And hey, there's my mule main. And then<00:15:22.000> like<00:15:22.200> let's<00:15:22.400> do<00:15:22.520> like<00:15:22.680> dot<00:15:22.960> call<00:15:23.240> stack.\nthen like let's do like dot call stack.\nthen like let's do like dot call stack. There<00:15:24.760> we<00:15:24.840> go.\nThere we go.\nThere we go. Um<00:15:26.680> now<00:15:26.800> I<00:15:26.880> can<00:15:27.000> just<00:15:27.120> evaluate<00:15:27.400> the<00:15:27.480> call\nUm now I can just evaluate the call\nUm now I can just evaluate the call stack.<00:15:28.360> There's<00:15:28.760> a<00:15:29.440> a<00:15:29.520> fast<00:15:29.760> path<00:15:30.000> I<00:15:30.040> can<00:15:30.160> do\nstack. There's a a fast path I can do\nstack. There's a a fast path I can do for<00:15:30.400> that<00:15:30.680> is<00:15:30.800> just<00:15:31.040> current<00:15:31.360> thread<00:15:31.920> dot<00:15:32.120> call\nfor that is just current thread dot call\nfor that is just current thread dot call stack<00:15:32.920> or<00:15:33.040> even<00:15:33.200> more<00:15:33.360> succinctly<00:15:34.400> call\nstack or even more succinctly call\nstack or even more succinctly call stack.<00:15:35.400> Um<00:15:35.800> which<00:15:36.040> is<00:15:36.560> All<00:15:36.720> of<00:15:36.800> these<00:15:36.960> things\nstack. Um which is All of these things\nstack. Um which is All of these things mean<00:15:37.360> the<00:15:37.440> same<00:15:37.640> thing.\nmean the same thing.\nmean the same thing. And<00:15:38.800> sure<00:15:39.000> enough,<00:15:39.320> if<00:15:39.480> I<00:15:39.560> open<00:15:39.840> up<00:15:40.320> a<00:15:40.400> call\nAnd sure enough, if I open up a call\nAnd sure enough, if I open up a call stack<00:15:40.920> tab,<00:15:41.160> which<00:15:41.320> is<00:15:41.560> this<00:15:41.720> is<00:15:41.800> just<00:15:42.000> a<00:15:42.040> fast\nstack tab, which is this is just a fast\nstack tab, which is this is just a fast path,<00:15:42.680> right?<00:15:42.880> So<00:15:42.960> this<00:15:43.120> is<00:15:43.240> like\npath, right? So this is like\npath, right? So this is like um<00:15:44.600> this<00:15:44.720> is<00:15:44.840> like<00:15:45.160> very<00:15:45.440> similar<00:15:45.680> to<00:15:45.760> what\num this is like very similar to what\num this is like very similar to what you'd<00:15:46.040> see<00:15:46.160> in<00:15:46.240> Visual<00:15:46.520> Studio,<00:15:46.920> for<00:15:47.040> example.\nyou'd see in Visual Studio, for example.\nyou'd see in Visual Studio, for example. Um\nUm\nUm you<00:15:49.280> can<00:15:49.400> see<00:15:49.520> your<00:15:49.640> call<00:15:49.800> stack<00:15:50.080> here.<00:15:50.560> If<00:15:50.800> I\nyou can see your call stack here. If I\nyou can see your call stack here. If I actually<00:15:51.400> uh<00:15:51.840> go<00:15:52.000> to<00:15:52.080> this<00:15:52.240> tab<00:15:52.520> and<00:15:52.640> open<00:15:52.840> up\nactually uh go to this tab and open up\nactually uh go to this tab and open up the<00:15:53.120> options<00:15:53.600> for<00:15:53.720> this<00:15:53.880> tab,<00:15:54.360> you'll<00:15:54.560> see\nthe options for this tab, you'll see\nthe options for this tab, you'll see that<00:15:54.920> the<00:15:55.040> expression<00:15:56.000> that's<00:15:56.200> used<00:15:56.480> to\nthat the expression that's used to\nthat the expression that's used to create<00:15:57.000> this<00:15:57.480> tab<00:15:57.760> info<00:15:58.720> is<00:15:59.080> query<00:15:59.680> colon<00:16:00.160> call\ncreate this tab info is query colon call\ncreate this tab info is query colon call stack.<00:16:01.080> Now<00:16:01.320> the<00:16:01.400> query<00:16:01.720> colon<00:16:02.000> thing<00:16:02.160> is<00:16:02.280> just\nstack. Now the query colon thing is just\nstack. Now the query colon thing is just a<00:16:02.520> disambiguator.<00:16:03.360> This<00:16:03.560> is<00:16:03.640> just<00:16:03.840> in<00:16:03.920> case<00:16:04.440> if\na disambiguator. This is just in case if\na disambiguator. This is just in case if you<00:16:04.640> have<00:16:04.800> a<00:16:04.840> local<00:16:05.080> variable<00:16:05.480> called<00:16:05.800> call\nyou have a local variable called call\nyou have a local variable called call stack,<00:16:06.760> this<00:16:07.040> is<00:16:07.320> basically<00:16:07.720> telling<00:16:07.960> the\nstack, this is basically telling the\nstack, this is basically telling the debugger's<00:16:08.400> evaluation<00:16:08.920> system,<00:16:09.640> \"Hey,<00:16:10.280> I'm\ndebugger's evaluation system, \"Hey, I'm\ndebugger's evaluation system, \"Hey, I'm just<00:16:10.720> doing<00:16:10.920> a<00:16:10.960> debugger<00:16:11.320> query.<00:16:11.800> I<00:16:11.920> don't\njust doing a debugger query. I don't\njust doing a debugger query. I don't want<00:16:12.360> you<00:16:12.440> to<00:16:12.600> resolve<00:16:13.000> this<00:16:13.200> as<00:16:13.320> a<00:16:13.360> local\nwant you to resolve this as a local\nwant you to resolve this as a local variable,<00:16:14.000> right?\"<00:16:14.200> So<00:16:14.360> just<00:16:14.960> unambiguously\nvariable, right?\" So just unambiguously\nvariable, right?\" So just unambiguously referring<00:16:16.000> to<00:16:16.280> the<00:16:16.800> to<00:16:16.920> the<00:16:17.000> current<00:16:17.320> thread's\nreferring to the to the current thread's\nreferring to the to the current thread's call<00:16:17.800> stack,<00:16:18.080> basically.\ncall stack, basically.\ncall stack, basically. So<00:16:19.680> anyway,<00:16:20.000> it's<00:16:20.080> like<00:16:20.360> that's<00:16:20.600> just<00:16:20.760> all<00:16:20.880> the\nSo anyway, it's like that's just all the\nSo anyway, it's like that's just all the call<00:16:21.200> stack<00:16:22.240> tab<00:16:22.600> is.<00:16:23.040> And<00:16:23.160> sure<00:16:23.320> enough,<00:16:23.520> if<00:16:23.680> I\ncall stack tab is. And sure enough, if I\ncall stack tab is. And sure enough, if I open<00:16:23.960> up<00:16:24.080> like<00:16:24.480> the<00:16:24.600> targets<00:16:25.000> view,<00:16:25.920> query\nopen up like the targets view, query\nopen up like the targets view, query targets,\ntargets,\ntargets, query<00:16:29.120> breakpoints,\nquery breakpoints,\nquery breakpoints, uh\nuh\nuh I<00:16:32.680> don't<00:16:32.800> know.<00:16:33.280> That's<00:16:33.640> like\nI don't know. That's like\nI don't know. That's like >> It's<00:16:34.440> good<00:16:34.720> because<00:16:35.040> like<00:16:35.360> already<00:16:35.800> people\n>> It's good because like already people\n>> It's good because like already people three<00:16:36.880> separate<00:16:37.280> people<00:16:37.720> at<00:16:37.839> the<00:16:37.960> same<00:16:38.360> time\nthree separate people at the same time\nthree separate people at the same time asked<00:16:39.320> like,<00:16:39.480> \"What<00:16:39.680> if<00:16:39.839> you<00:16:40.000> have<00:16:40.320> a<00:16:40.400> variable\nasked like, \"What if you have a variable\nasked like, \"What if you have a variable named<00:16:41.520> targets<00:16:42.160> or<00:16:42.440> breakpoints?\"\nnamed targets or breakpoints?\"\nnamed targets or breakpoints?\" >> Yes.<00:16:43.600> Yes.<00:16:43.880> Yes.<00:16:44.120> Yes.<00:16:44.440> Of<00:16:44.560> course.<00:16:44.920> Yeah.\n>> Yes. Yes. Yes. Yes. Of course. Yeah.\n>> Yes. Yes. Yes. Yes. Of course. Yeah. Um<00:16:46.360> so<00:16:46.560> that's<00:16:46.920> that's<00:16:47.560> uh<00:16:47.760> that's<00:16:48.000> like\nUm so that's that's uh that's like\nUm so that's that's uh that's like interesting<00:16:49.960> thing<00:16:50.480> number<00:16:50.720> one.<00:16:50.960> So<00:16:51.040> that's\ninteresting thing number one. So that's\ninteresting thing number one. So that's some<00:16:51.320> basic<00:16:51.640> usage<00:16:52.120> and<00:16:52.280> showing<00:16:53.040> kind<00:16:53.200> of<00:16:53.280> how\nsome basic usage and showing kind of how\nsome basic usage and showing kind of how all<00:16:53.560> these<00:16:53.760> views<00:16:54.040> are<00:16:54.160> really<00:16:54.400> just<00:16:54.640> all\nall these views are really just all\nall these views are really just all different<00:16:55.160> versions<00:16:55.480> of<00:16:55.560> the<00:16:55.640> same<00:16:55.880> thing.<00:16:56.640> So\ndifferent versions of the same thing. So\ndifferent versions of the same thing. So another<00:16:57.000> thing<00:16:57.200> that<00:16:57.320> we<00:16:57.440> can<00:16:57.560> do,<00:16:57.800> so<00:16:57.920> we<00:16:58.040> have\nanother thing that we can do, so we have\nanother thing that we can do, so we have I<00:16:58.839> showed<00:16:59.080> breakpoints<00:16:59.520> already.<00:16:59.880> What<00:17:00.000> I<00:17:00.080> can\nI showed breakpoints already. What I can\nI showed breakpoints already. What I can do<00:17:00.560> is<00:17:01.320> um\ndo is um\ndo is um I<00:17:01.960> can<00:17:02.080> also<00:17:02.240> show<00:17:02.400> some<00:17:02.720> better<00:17:03.160> of<00:17:03.520> uh\nI can also show some better of uh\nI can also show some better of uh visualization<00:17:04.959> stuff.\nvisualization stuff.\nvisualization stuff. So<00:17:06.640> if<00:17:06.760> I<00:17:06.839> go<00:17:07.000> to<00:17:07.079> like<00:17:07.600> longer<00:17:08.040> text,<00:17:08.560> for\nSo if I go to like longer text, for\nSo if I go to like longer text, for example,<00:17:09.079> that<00:17:09.240> variable<00:17:09.680> up<00:17:09.760> here<00:17:09.959> that's\nexample, that variable up here that's\nexample, that variable up here that's just<00:17:10.280> a<00:17:10.319> big<00:17:10.920> string.<00:17:11.560> If<00:17:11.680> you're<00:17:11.760> trying<00:17:11.959> to\njust a big string. If you're trying to\njust a big string. If you're trying to like<00:17:12.199> look<00:17:12.360> at<00:17:12.480> this<00:17:12.680> text<00:17:12.959> and<00:17:13.040> like<00:17:13.640> um<00:17:14.120> I<00:17:14.199> In\nlike look at this text and like um I In\nlike look at this text and like um I In this<00:17:14.480> case<00:17:14.640> it's<00:17:14.800> short<00:17:15.040> enough<00:17:15.240> that<00:17:15.360> you<00:17:15.400> can\nthis case it's short enough that you can\nthis case it's short enough that you can actually<00:17:15.760> see<00:17:15.959> it,<00:17:16.160> but<00:17:16.520> uh<00:17:16.640> just<00:17:16.880> when<00:17:17.040> I\nactually see it, but uh just when I\nactually see it, but uh just when I hover.<00:17:17.839> But<00:17:17.959> if,<00:17:18.319> you<00:17:18.400> know,<00:17:18.560> like<00:17:18.880> looking<00:17:19.199> at\nhover. But if, you know, like looking at\nhover. But if, you know, like looking at the<00:17:19.400> string<00:17:19.680> this<00:17:19.880> way<00:17:20.720> is<00:17:20.880> not<00:17:21.040> necessarily\nthe string this way is not necessarily\nthe string this way is not necessarily what<00:17:21.800> you<00:17:21.920> want,<00:17:22.160> especially<00:17:22.520> like<00:17:22.720> it<00:17:22.880> has\nwhat you want, especially like it has\nwhat you want, especially like it has some<00:17:23.240> new<00:17:23.400> line<00:17:23.640> characters<00:17:24.120> in<00:17:24.240> there.<00:17:24.520> Like\nsome new line characters in there. Like\nsome new line characters in there. Like maybe<00:17:24.920> I<00:17:24.959> don't<00:17:25.199> want<00:17:25.360> the<00:17:25.439> single<00:17:25.760> line<00:17:26.560> um\nmaybe I don't want the single line um\nmaybe I don't want the single line um visualization<00:17:27.520> here.<00:17:28.160> What<00:17:28.280> I<00:17:28.319> can<00:17:28.439> actually\nvisualization here. What I can actually\nvisualization here. What I can actually do<00:17:29.000> is<00:17:29.360> uh\ndo is uh\ndo is uh use<00:17:30.520> uh<00:17:30.760> a<00:17:30.840> view<00:17:31.480> as\nuse uh a view as\nuse uh a view as in<00:17:32.760> in<00:17:33.000> the<00:17:33.200> Rad<00:17:33.360> Debugger's<00:17:33.720> parlance.\nin in the Rad Debugger's parlance.\nin in the Rad Debugger's parlance. And<00:17:35.240> I<00:17:35.320> can<00:17:35.440> just<00:17:35.560> say,<00:17:35.720> \"Hey,<00:17:35.880> I<00:17:35.960> want<00:17:36.120> to\nAnd I can just say, \"Hey, I want to\nAnd I can just say, \"Hey, I want to visualize<00:17:36.560> this<00:17:36.680> as<00:17:36.840> text.\"\nvisualize this as text.\"\nvisualize this as text.\" Um<00:17:38.360> and<00:17:38.480> here<00:17:38.680> I<00:17:38.720> can<00:17:38.880> put<00:17:39.040> in<00:17:39.160> a<00:17:39.200> bunch<00:17:39.400> of\nUm and here I can put in a bunch of\nUm and here I can put in a bunch of different<00:17:39.680> parameters.<00:17:40.120> So,<00:17:40.200> the<00:17:40.280> first\ndifferent parameters. So, the first\ndifferent parameters. So, the first thing<00:17:40.640> is<00:17:40.760> just<00:17:40.920> the<00:17:41.000> expression<00:17:41.600> to<00:17:41.720> describe\nthing is just the expression to describe\nthing is just the expression to describe whatever<00:17:43.120> text<00:17:43.840> I<00:17:43.960> would<00:17:44.120> like<00:17:44.440> like<00:17:44.640> whatever\nwhatever text I would like like whatever\nwhatever text I would like like whatever expression<00:17:45.480> that<00:17:45.600> will<00:17:45.760> refer<00:17:46.120> me<00:17:46.320> to<00:17:46.480> the\nexpression that will refer me to the\nexpression that will refer me to the text<00:17:46.800> that<00:17:46.920> I<00:17:46.960> want<00:17:47.200> to<00:17:47.240> visualize.<00:17:47.760> Like<00:17:47.920> to\ntext that I want to visualize. Like to\ntext that I want to visualize. Like to the<00:17:48.120> data<00:17:48.400> that<00:17:48.520> I<00:17:48.560> want<00:17:48.680> to<00:17:48.760> visualize<00:17:49.040> as\nthe data that I want to visualize as\nthe data that I want to visualize as text.<00:17:49.960> I<00:17:50.000> put<00:17:50.200> that<00:17:50.360> here.<00:17:51.120> Um<00:17:51.320> I<00:17:51.360> can<00:17:51.480> also\ntext. I put that here. Um I can also\ntext. I put that here. Um I can also supply<00:17:52.040> like<00:17:52.240> a<00:17:52.320> language.<00:17:53.160> So,<00:17:54.080> I<00:17:54.160> mean,<00:17:54.400> I\nsupply like a language. So, I mean, I\nsupply like a language. So, I mean, I don't<00:17:54.600> know<00:17:54.720> why<00:17:54.920> I<00:17:54.960> would<00:17:55.080> do<00:17:55.240> that<00:17:55.400> for<00:17:55.520> this\ndon't know why I would do that for this\ndon't know why I would do that for this longer<00:17:56.000> text<00:17:56.280> thing.<00:17:56.520> So,<00:17:56.880> you<00:17:56.960> know,<00:17:57.200> but\nlonger text thing. So, you know, but\nlonger text thing. So, you know, but this<00:17:57.840> is<00:17:57.920> optional.<00:17:58.880> Um<00:17:59.360> which<00:17:59.520> it<00:17:59.600> doesn't\nthis is optional. Um which it doesn't\nthis is optional. Um which it doesn't say<00:17:59.960> it's<00:18:00.120> optional.<00:18:00.640> It<00:18:00.760> should,<00:18:01.000> but\nsay it's optional. It should, but\nsay it's optional. It should, but whatever.<00:18:02.200> And<00:18:02.280> then<00:18:02.360> I<00:18:02.400> can<00:18:02.520> also<00:18:02.960> determine\nwhatever. And then I can also determine\nwhatever. And then I can also determine whether<00:18:03.880> or<00:18:04.000> not<00:18:04.200> line<00:18:04.360> numbers<00:18:04.640> are<00:18:04.720> shown.\nwhether or not line numbers are shown.\nwhether or not line numbers are shown. But<00:18:06.560> okay,<00:18:06.760> like<00:18:06.960> let<00:18:07.080> me<00:18:07.160> just<00:18:07.600> let<00:18:07.680> me<00:18:07.760> just\nBut okay, like let me just let me just\nBut okay, like let me just let me just do<00:18:08.600> just<00:18:09.000> text<00:18:10.040> uh<00:18:10.200> the<00:18:10.320> text<00:18:10.600> view<00:18:10.920> of<00:18:11.120> this\ndo just text uh the text view of this\ndo just text uh the text view of this longer<00:18:11.600> text<00:18:11.840> expression.<00:18:12.560> If<00:18:12.680> I<00:18:12.720> expand\nlonger text expression. If I expand\nlonger text expression. If I expand this,<00:18:13.320> then<00:18:13.560> I<00:18:13.600> actually<00:18:13.920> get<00:18:14.800> uh<00:18:15.000> like<00:18:15.200> a\nthis, then I actually get uh like a\nthis, then I actually get uh like a multi-line<00:18:16.040> string<00:18:16.360> view<00:18:16.920> right<00:18:17.120> here.\nmulti-line string view right here.\nmulti-line string view right here. Um\nUm\nUm and<00:18:20.160> there's<00:18:20.320> actually<00:18:20.560> this<00:18:20.680> option<00:18:21.200> uh<00:18:21.400> to\nand there's actually this option uh to\nand there's actually this option uh to pull<00:18:21.800> this<00:18:21.960> out<00:18:22.080> as<00:18:22.200> a<00:18:22.240> new<00:18:22.400> tab.<00:18:22.640> So,<00:18:22.760> if<00:18:22.800> I\npull this out as a new tab. So, if I\npull this out as a new tab. So, if I click<00:18:23.080> and<00:18:23.160> drag<00:18:23.480> that,<00:18:23.880> I<00:18:23.960> can<00:18:24.160> create<00:18:24.520> a<00:18:24.600> tab\nclick and drag that, I can create a tab\nclick and drag that, I can create a tab uh<00:18:25.680> where<00:18:26.120> I<00:18:26.200> just<00:18:26.440> see,<00:18:26.760> \"Hey,<00:18:27.000> here's<00:18:27.520> here's\nuh where I just see, \"Hey, here's here's\nuh where I just see, \"Hey, here's here's the<00:18:27.880> text<00:18:28.240> data<00:18:29.040> visualized<00:18:29.480> as<00:18:29.600> text.\"<00:18:29.960> Now,\nthe text data visualized as text.\" Now,\nthe text data visualized as text.\" Now, you<00:18:30.240> may<00:18:30.360> be<00:18:30.520> wondering,\nyou may be wondering,\nyou may be wondering, \"Hey,<00:18:32.920> this<00:18:33.520> this<00:18:33.800> tab<00:18:34.360> UI<00:18:34.800> sure<00:18:35.120> looks<00:18:35.360> a<00:18:35.400> lot\n\"Hey, this this tab UI sure looks a lot\n\"Hey, this this tab UI sure looks a lot like<00:18:36.360> this<00:18:36.640> tab's<00:18:37.120> UI.\"<00:18:37.680> Like<00:18:37.960> if<00:18:38.120> we<00:18:38.240> look<00:18:38.440> at\nlike this tab's UI.\" Like if we look at\nlike this tab's UI.\" Like if we look at these<00:18:38.760> two<00:18:38.880> things<00:18:39.120> There's<00:18:39.280> a<00:18:39.320> couple<00:18:39.560> of\nthese two things There's a couple of\nthese two things There's a couple of differences.<00:18:40.040> Like<00:18:40.200> I<00:18:40.240> can't<00:18:40.520> seem<00:18:40.640> to<00:18:40.720> put\ndifferences. Like I can't seem to put\ndifferences. Like I can't seem to put breakpoints<00:18:41.440> here,<00:18:41.680> which<00:18:42.240> would<00:18:42.360> kind<00:18:42.520> of\nbreakpoints here, which would kind of\nbreakpoints here, which would kind of make<00:18:42.720> sense,<00:18:43.000> right?<00:18:43.160> Because<00:18:43.480> like<00:18:43.600> there's\nmake sense, right? Because like there's\nmake sense, right? Because like there's like<00:18:44.960> this<00:18:45.080> is<00:18:45.200> not<00:18:45.400> code.<00:18:45.840> Like<00:18:45.960> there's<00:18:46.160> no\nlike this is not code. Like there's no\nlike this is not code. Like there's no there's<00:18:46.720> no<00:18:47.080> This<00:18:47.240> was<00:18:47.360> not<00:18:47.480> compiled<00:18:47.960> to\nthere's no This was not compiled to\nthere's no This was not compiled to produce<00:18:48.240> instructions.<00:18:48.800> Like<00:18:48.920> none<00:18:49.040> of<00:18:49.120> that\nproduce instructions. Like none of that\nproduce instructions. Like none of that would<00:18:49.360> make<00:18:49.480> sense.<00:18:49.760> But,<00:18:50.600> um<00:18:50.920> we<00:18:51.000> have<00:18:51.160> line\nwould make sense. But, um we have line\nwould make sense. But, um we have line numbers.<00:18:51.800> We<00:18:51.840> have<00:18:52.000> line<00:18:52.200> numbers.<00:18:52.640> I<00:18:52.680> can\nnumbers. We have line numbers. I can\nnumbers. We have line numbers. I can click<00:18:53.000> and<00:18:53.080> drag.<00:18:53.680> I<00:18:53.760> can<00:18:54.320> uh<00:18:54.560> I<00:18:54.640> can<00:18:54.760> copy<00:18:55.080> and\nclick and drag. I can uh I can copy and\nclick and drag. I can uh I can copy and paste<00:18:55.560> like<00:18:55.760> what<00:18:56.000> ways<00:18:56.280> might<00:18:56.440> it<00:18:56.520> be\npaste like what ways might it be\npaste like what ways might it be rendered.<00:18:57.000> I<00:18:57.080> can<00:18:57.200> put<00:18:57.400> you<00:18:57.480> know,<00:18:57.560> put<00:18:57.720> that\nrendered. I can put you know, put that\nrendered. I can put you know, put that there,<00:18:58.080> whatever.\nthere, whatever.\nthere, whatever. And<00:19:00.000> the<00:19:00.120> short<00:19:00.480> story<00:19:00.840> is<00:19:00.960> that<00:19:01.080> these\nAnd the short story is that these\nAnd the short story is that these actually<00:19:01.520> are<00:19:01.600> the<00:19:01.720> same<00:19:01.960> UI.\nactually are the same UI.\nactually are the same UI. This<00:19:03.880> is<00:19:04.000> a<00:19:04.040> text<00:19:04.440> tab<00:19:04.960> um<00:19:05.200> and<00:19:05.360> this<00:19:05.520> is\nThis is a text tab um and this is\nThis is a text tab um and this is evaluating<00:19:06.120> longer<00:19:06.440> text,<00:19:06.880> which<00:19:07.200> should<00:19:07.400> be\nevaluating longer text, which should be\nevaluating longer text, which should be pretty<00:19:07.880> self-explanatory.<00:19:09.200> Um<00:19:09.400> and<00:19:09.480> then\npretty self-explanatory. Um and then\npretty self-explanatory. Um and then this<00:19:09.920> one\nthis one\nthis one um\num\num this<00:19:12.480> one<00:19:12.640> is<00:19:12.760> actually<00:19:13.520> evaluating<00:19:14.400> this\nthis one is actually evaluating this\nthis one is actually evaluating this expression,<00:19:15.360> which<00:19:15.520> is<00:19:15.720> file<00:19:16.120> colon\nexpression, which is file colon\nexpression, which is file colon uh<00:19:17.480> another<00:19:17.720> one<00:19:17.800> of<00:19:17.880> those<00:19:18.000> disambiguators,\nuh another one of those disambiguators,\nuh another one of those disambiguators, uh<00:19:19.160> C<00:19:19.760> devel<00:19:20.240> rad<00:19:20.440> bugger<00:19:20.680> source<00:19:21.000> mule<00:19:21.320> mule\nuh C devel rad bugger source mule mule\nuh C devel rad bugger source mule mule main.cpp.data.\nmain.cpp.data.\nmain.cpp.data. Um<00:19:24.360> and<00:19:24.440> you<00:19:24.520> can<00:19:24.600> see<00:19:24.720> some<00:19:24.880> of<00:19:24.920> the<00:19:25.000> members\nUm and you can see some of the members\nUm and you can see some of the members here<00:19:25.600> that<00:19:25.720> you<00:19:25.800> can<00:19:25.880> evaluate<00:19:26.480> for<00:19:26.640> any<00:19:26.800> file.\nhere that you can evaluate for any file.\nhere that you can evaluate for any file. But<00:19:27.880> anyways,<00:19:28.120> so<00:19:28.200> that's<00:19:28.400> just<00:19:28.520> evaluating\nBut anyways, so that's just evaluating\nBut anyways, so that's just evaluating the<00:19:29.080> file.<00:19:30.120> Um\nthe file. Um\nthe file. Um so<00:19:31.160> that's<00:19:31.480> kind<00:19:31.720> of<00:19:32.040> that's<00:19:32.200> kind<00:19:32.320> of\nso that's kind of that's kind of\nso that's kind of that's kind of interesting.<00:19:33.360> Um\ninteresting. Um\ninteresting. Um and<00:19:34.160> the<00:19:34.240> long<00:19:34.480> story<00:19:34.720> short<00:19:34.880> is<00:19:34.960> that<00:19:35.120> all\nand the long story short is that all\nand the long story short is that all these<00:19:35.440> visualizers<00:19:36.040> can<00:19:36.160> apply<00:19:36.560> to<00:19:36.800> both\nthese visualizers can apply to both\nthese visualizers can apply to both files,<00:19:38.520> they<00:19:38.600> can<00:19:38.720> apply<00:19:39.000> to<00:19:39.160> memory<00:19:39.520> from\nfiles, they can apply to memory from\nfiles, they can apply to memory from processes,<00:19:40.560> doesn't<00:19:40.840> matter.\nprocesses, doesn't matter.\nprocesses, doesn't matter. You<00:19:41.960> can<00:19:42.360> wherever<00:19:42.760> the<00:19:42.840> debugger<00:19:43.160> can<00:19:43.280> find\nYou can wherever the debugger can find\nYou can wherever the debugger can find data,<00:19:43.760> you<00:19:43.840> can<00:19:43.960> plug<00:19:44.160> them<00:19:44.320> into<00:19:44.480> these\ndata, you can plug them into these\ndata, you can plug them into these visualizers.<00:19:45.320> So,<00:19:45.760> to<00:19:45.880> demonstrate<00:19:46.360> that,\nvisualizers. So, to demonstrate that,\nvisualizers. So, to demonstrate that, let<00:19:47.520> me<00:19:47.600> show<00:19:47.720> another<00:19:48.240> debugger<00:19:48.520> visualizer.\nlet me show another debugger visualizer.\nlet me show another debugger visualizer. This<00:19:49.200> is<00:19:49.760> This<00:19:49.920> is<00:19:50.040> another<00:19:50.320> common<00:19:50.640> one.<00:19:50.880> So,\nThis is This is another common one. So,\nThis is This is another common one. So, if<00:19:51.120> we<00:19:51.240> have<00:19:52.040> basics,<00:19:52.760> this<00:19:53.080> structure,\nif we have basics, this structure,\nif we have basics, this structure, um\num\num let<00:19:55.560> me<00:19:55.680> open<00:19:55.840> up<00:19:55.960> the<00:19:56.040> memory<00:19:56.440> view,<00:19:56.840> which\nlet me open up the memory view, which\nlet me open up the memory view, which this<00:19:57.280> you'll<00:19:57.440> find<00:19:57.800> something<00:19:58.080> like<00:19:58.280> this<00:19:58.440> in\nthis you'll find something like this in\nthis you'll find something like this in Visual<00:19:58.760> Studio<00:19:59.320> and<00:19:59.560> in<00:19:59.680> lots<00:19:59.880> of<00:19:59.960> other\nVisual Studio and in lots of other\nVisual Studio and in lots of other debuggers.\ndebuggers.\ndebuggers. And<00:20:01.920> let<00:20:02.000> me<00:20:02.080> just<00:20:02.280> go<00:20:02.520> to<00:20:02.680> the<00:20:02.800> basics\nAnd let me just go to the basics\nAnd let me just go to the basics variable<00:20:04.320> here.\nvariable here.\nvariable here. Um<00:20:06.920> so,<00:20:07.080> here<00:20:07.400> is<00:20:07.560> where<00:20:08.160> uh<00:20:08.400> I<00:20:08.480> can<00:20:08.640> see<00:20:08.920> like\nUm so, here is where uh I can see like\nUm so, here is where uh I can see like uh<00:20:09.960> all<00:20:10.200> of<00:20:10.280> the<00:20:10.360> memory,<00:20:10.760> like<00:20:10.960> the<00:20:11.080> actual\nuh all of the memory, like the actual\nuh all of the memory, like the actual bytes\nbytes\nbytes that<00:20:12.720> are<00:20:12.840> used<00:20:13.160> to<00:20:13.400> to<00:20:13.880> encode<00:20:14.400> the<00:20:14.480> value<00:20:14.960> of\nthat are used to to encode the value of\nthat are used to to encode the value of this<00:20:15.240> basics<00:20:15.760> structure.<00:20:16.200> So,<00:20:16.320> we<00:20:16.400> can<00:20:16.520> see\nthis basics structure. So, we can see\nthis basics structure. So, we can see like<00:20:16.880> for<00:20:17.000> example,<00:20:17.880> um\nlike for example, um\nlike for example, um and<00:20:18.800> actually,<00:20:19.120> if<00:20:19.280> I\nand actually, if I\nand actually, if I uh\nuh\nuh you<00:20:21.200> can<00:20:21.320> see<00:20:21.480> that<00:20:21.680> there's<00:20:22.080> some\nyou can see that there's some\nyou can see that there's some visualization<00:20:22.840> features<00:20:23.080> in<00:20:23.160> the<00:20:23.200> debugger\nvisualization features in the debugger\nvisualization features in the debugger that<00:20:23.800> that<00:20:23.960> help<00:20:24.160> you<00:20:24.280> correlate<00:20:24.840> this<00:20:25.000> stuff.\nthat that help you correlate this stuff.\nthat that help you correlate this stuff. So,<00:20:25.320> if<00:20:25.400> I<00:20:25.480> hover<00:20:25.720> basics.a,<00:20:26.560> for<00:20:26.720> example,\nSo, if I hover basics.a, for example,\nSo, if I hover basics.a, for example, you<00:20:27.600> can<00:20:27.760> see<00:20:27.880> that<00:20:28.080> this<00:20:28.240> byte<00:20:28.440> gets\nyou can see that this byte gets\nyou can see that this byte gets highlighted.<00:20:29.160> And<00:20:29.280> vice<00:20:29.520> versa,<00:20:29.840> if<00:20:29.960> I<00:20:30.040> hover\nhighlighted. And vice versa, if I hover\nhighlighted. And vice versa, if I hover the<00:20:30.400> byte<00:20:30.640> here,<00:20:30.840> I<00:20:30.880> can<00:20:31.040> see\nthe byte here, I can see\nthe byte here, I can see the<00:20:32.120> member<00:20:32.520> that<00:20:32.920> that<00:20:33.120> byte<00:20:33.320> belong<00:20:33.640> that\nthe member that that byte belong that\nthe member that that byte belong that that<00:20:34.680> byte<00:20:34.960> falls<00:20:35.240> into<00:20:35.480> basically<00:20:35.960> in\nthat byte falls into basically in\nthat byte falls into basically in the<00:20:36.160> watch<00:20:36.400> window.<00:20:36.640> So,<00:20:37.400> um\nthe watch window. So, um\nthe watch window. So, um instead<00:20:38.440> of<00:20:38.520> doing<00:20:39.400> just<00:20:39.560> because<00:20:39.880> uh<00:20:40.240> I've\ninstead of doing just because uh I've\ninstead of doing just because uh I've got<00:20:40.480> my<00:20:40.600> font<00:20:40.840> size<00:20:41.080> turned<00:20:41.280> up<00:20:41.360> so<00:20:41.480> high,<00:20:41.600> let\ngot my font size turned up so high, let\ngot my font size turned up so high, let me<00:20:41.840> also<00:20:42.040> just<00:20:42.240> do<00:20:42.440> um\nme also just do um\nme also just do um let<00:20:44.240> me<00:20:44.320> just<00:20:44.720> do<00:20:44.960> two<00:20:45.160> panel,<00:20:45.640> one<00:20:45.800> with<00:20:45.920> the\nlet me just do two panel, one with the\nlet me just do two panel, one with the watch<00:20:46.280> window,\nwatch window,\nwatch window, and<00:20:48.560> one<00:20:48.720> with<00:20:49.080> the<00:20:49.480> memory<00:20:49.760> view.\nand one with the memory view.\nand one with the memory view. Um\nUm\nUm so,<00:20:52.560> like<00:20:52.720> here's<00:20:52.920> a<00:20:52.960> memory<00:20:53.280> view.<00:20:53.520> I<00:20:53.600> can<00:20:53.920> I\nso, like here's a memory view. I can I\nso, like here's a memory view. I can I can,<00:20:54.600> you<00:20:54.680> know,<00:20:54.840> hover<00:20:55.080> bytes.<00:20:55.640> Um<00:20:55.840> I<00:20:55.920> can\ncan, you know, hover bytes. Um I can\ncan, you know, hover bytes. Um I can even<00:20:56.280> mutate<00:20:56.680> bytes,<00:20:56.960> like<00:20:57.080> if<00:20:57.200> I<00:20:57.280> wanted<00:20:57.480> to\neven mutate bytes, like if I wanted to\neven mutate bytes, like if I wanted to do\ndo\ndo uh<00:20:58.760> I<00:20:58.880> wanted<00:20:59.120> to<00:20:59.240> change<00:20:59.520> this<00:20:59.800> to<00:21:00.040> to<00:21:00.200> a<00:21:00.240> zero\nuh I wanted to change this to to a zero\nuh I wanted to change this to to a zero byte,<00:21:01.240> um\nbyte, um\nbyte, um I<00:21:02.120> can<00:21:02.240> just<00:21:02.400> type<00:21:02.600> that<00:21:02.800> in<00:21:02.920> there.<00:21:03.760> Uh<00:21:04.160> we<00:21:04.240> can\nI can just type that in there. Uh we can\nI can just type that in there. Uh we can go<00:21:04.440> back<00:21:04.600> to<00:21:04.680> -1<00:21:05.120> if<00:21:05.240> I<00:21:05.280> do<00:21:05.400> an<00:21:05.480> FF.<00:21:06.400> Uh<00:21:06.520> here's\ngo back to -1 if I do an FF. Uh here's\ngo back to -1 if I do an FF. Uh here's 01,<00:21:07.480> I<00:21:07.520> can<00:21:07.640> do<00:21:07.760> like<00:21:07.920> 23,<00:21:08.960> which<00:21:09.480> uh<00:21:09.560> hex<00:21:09.840> 23\n01, I can do like 23, which uh hex 23\n01, I can do like 23, which uh hex 23 turns<00:21:10.440> into<00:21:10.600> 35,<00:21:11.320> which<00:21:11.600> happens<00:21:11.880> to<00:21:11.920> be<00:21:12.040> that\nturns into 35, which happens to be that\nturns into 35, which happens to be that character.\ncharacter.\ncharacter. Um\nUm\nUm So<00:21:15.000> yeah,<00:21:15.080> anyways,<00:21:15.400> here's<00:21:15.600> a<00:21:15.640> memory<00:21:15.920> view,\nSo yeah, anyways, here's a memory view,\nSo yeah, anyways, here's a memory view, right?\nright?\nright? And<00:21:17.760> I<00:21:17.800> can<00:21:17.920> dig<00:21:18.080> into<00:21:18.240> more<00:21:18.400> of<00:21:18.480> these\nAnd I can dig into more of these\nAnd I can dig into more of these features<00:21:19.600> if<00:21:20.200> you<00:21:20.280> know,<00:21:20.880> as<00:21:21.080> we<00:21:21.200> want<00:21:21.440> to.\nfeatures if you know, as we want to.\nfeatures if you know, as we want to. But<00:21:22.560> it's<00:21:22.720> like<00:21:22.960> I<00:21:23.040> just<00:21:23.240> told<00:21:23.480> you<00:21:23.560> that<00:21:23.760> I<00:21:23.800> can\nBut it's like I just told you that I can\nBut it's like I just told you that I can apply<00:21:24.240> these<00:21:24.440> visualizers<00:21:24.960> to<00:21:25.120> any\napply these visualizers to any\napply these visualizers to any expression,<00:21:26.120> right?<00:21:26.434> [clears throat]<00:21:26.800> In\nexpression, right? [clears throat] In\nexpression, right? [clears throat] In fact,<00:21:27.280> if<00:21:27.440> I<00:21:27.520> were<00:21:27.600> to<00:21:27.720> do<00:21:27.880> something<00:21:28.200> like\nfact, if I were to do something like\nfact, if I were to do something like memory<00:21:29.640> basics\nmemory basics\nmemory basics Um<00:21:32.720> sorry,<00:21:32.920> there's<00:21:33.080> tons<00:21:33.320> of<00:21:33.400> parameters\nUm sorry, there's tons of parameters\nUm sorry, there's tons of parameters here.<00:21:33.840> I<00:21:33.880> actually<00:21:34.160> fixed<00:21:34.480> this,<00:21:34.720> but<00:21:35.200> but<00:21:35.520> the\nhere. I actually fixed this, but but the\nhere. I actually fixed this, but but the stable<00:21:36.360> version<00:21:36.600> of<00:21:36.640> the<00:21:36.720> debugger<00:21:36.960> that<00:21:37.040> I'm\nstable version of the debugger that I'm\nstable version of the debugger that I'm using<00:21:37.560> doesn't<00:21:37.840> have<00:21:38.040> that<00:21:38.320> fixed,<00:21:38.680> but<00:21:38.880> this\nusing doesn't have that fixed, but this\nusing doesn't have that fixed, but this is<00:21:39.280> I<00:21:39.360> mean,<00:21:39.800> technically<00:21:40.200> these<00:21:40.400> are<00:21:40.520> all\nis I mean, technically these are all\nis I mean, technically these are all options,<00:21:41.080> but<00:21:41.200> it's<00:21:41.360> just<00:21:41.640> a<00:21:41.680> little<00:21:41.880> bit\noptions, but it's just a little bit\noptions, but it's just a little bit absurd<00:21:42.400> to<00:21:42.720> specify<00:21:43.080> this<00:21:43.240> in<00:21:43.320> the\nabsurd to specify this in the\nabsurd to specify this in the expression.<00:21:43.800> But<00:21:43.960> anyways,\nexpression. But anyways,\nexpression. But anyways, if<00:21:45.040> I<00:21:45.080> do<00:21:45.240> memory<00:21:45.520> of<00:21:45.640> basics,<00:21:46.080> you'll\nif I do memory of basics, you'll\nif I do memory of basics, you'll actually<00:21:46.520> see<00:21:47.480> that<00:21:47.800> um<00:21:48.120> I<00:21:48.200> get<00:21:48.320> a<00:21:48.360> memory<00:21:48.680> view\nactually see that um I get a memory view\nactually see that um I get a memory view and<00:21:49.040> it's<00:21:49.200> just<00:21:49.480> evaluating<00:21:50.000> the<00:21:50.120> address\nand it's just evaluating the address\nand it's just evaluating the address range<00:21:51.120> supplied<00:21:51.640> by<00:21:52.600> the<00:21:52.720> expression<00:21:53.400> basics.\nrange supplied by the expression basics.\nrange supplied by the expression basics. And<00:21:54.320> so<00:21:54.400> I<00:21:54.480> just<00:21:54.760> get<00:21:54.920> a<00:21:54.960> little<00:21:55.240> memory<00:21:55.480> view\nAnd so I just get a little memory view\nAnd so I just get a little memory view for<00:21:55.760> this.<00:21:56.400> In<00:21:56.480> the<00:21:56.560> case<00:21:56.720> when<00:21:56.840> you<00:21:56.880> don't\nfor this. In the case when you don't\nfor this. In the case when you don't have<00:21:57.200> any<00:21:57.360> expression,<00:21:57.880> it'll<00:21:58.120> prefer<00:21:58.680> to\nhave any expression, it'll prefer to\nhave any expression, it'll prefer to visualize<00:21:59.560> your<00:21:59.680> current<00:22:00.040> thread's<00:22:00.640> address\nvisualize your current thread's address\nvisualize your current thread's address space<00:22:01.360> or<00:22:01.480> your<00:22:01.600> current<00:22:01.920> thread's<00:22:02.280> process's\nspace or your current thread's process's\nspace or your current thread's process's address<00:22:03.120> space.<00:22:03.720> And<00:22:03.800> then<00:22:03.920> you<00:22:04.000> can<00:22:04.120> navigate\naddress space. And then you can navigate\naddress space. And then you can navigate to<00:22:04.800> basics<00:22:05.360> inside<00:22:05.760> of<00:22:05.840> that<00:22:06.000> address<00:22:06.240> space,\nto basics inside of that address space,\nto basics inside of that address space, but<00:22:06.520> you<00:22:06.600> can<00:22:06.680> also<00:22:06.840> just<00:22:07.000> get<00:22:07.160> one<00:22:07.440> that's\nbut you can also just get one that's\nbut you can also just get one that's narrowed<00:22:08.120> down<00:22:08.400> to<00:22:08.520> just<00:22:08.720> basics<00:22:09.480> um\nnarrowed down to just basics um\nnarrowed down to just basics um uh<00:22:11.000> like<00:22:11.200> this.\nuh like this.\nuh like this. So<00:22:12.560> anyways,<00:22:12.880> you<00:22:12.960> can<00:22:13.120> create<00:22:13.280> a<00:22:13.320> memory<00:22:13.600> view\nSo anyways, you can create a memory view\nSo anyways, you can create a memory view and<00:22:14.000> you<00:22:14.120> can<00:22:14.640> um<00:22:15.000> it<00:22:15.080> can<00:22:15.200> evaluate<00:22:15.640> any<00:22:16.240> any\nand you can um it can evaluate any any\nand you can um it can evaluate any any expression,<00:22:16.880> right?<00:22:17.520> So<00:22:17.760> what<00:22:17.960> we'll<00:22:18.080> do<00:22:18.760> is\nexpression, right? So what we'll do is\nexpression, right? So what we'll do is um<00:22:19.360> I'm<00:22:19.480> just<00:22:19.640> going<00:22:19.760> to<00:22:19.800> take<00:22:20.080> this\num I'm just going to take this\num I'm just going to take this expression<00:22:20.920> that<00:22:21.160> encodes<00:22:21.560> the<00:22:21.680> file\nexpression that encodes the file\nexpression that encodes the file uh<00:22:23.920> the<00:22:24.040> file<00:22:24.280> that's<00:22:24.480> viewing\nuh the file that's viewing\nuh the file that's viewing mule_main.cpp.\nmule_main.cpp.\nmule_main.cpp. And<00:22:26.520> I'm<00:22:26.600> just<00:22:26.760> going<00:22:26.880> to<00:22:26.920> create<00:22:27.080> a<00:22:27.120> new\nAnd I'm just going to create a new\nAnd I'm just going to create a new memory<00:22:27.520> tab<00:22:27.800> or<00:22:27.880> I<00:22:27.920> guess<00:22:28.080> I<00:22:28.400> I<00:22:28.440> can<00:22:28.560> just<00:22:28.720> use\nmemory tab or I guess I I can just use\nmemory tab or I guess I I can just use this<00:22:29.040> one.\nthis one.\nthis one. And<00:22:30.120> let<00:22:30.200> me<00:22:30.280> just<00:22:30.440> put<00:22:30.560> this<00:22:30.760> in\nAnd let me just put this in\nAnd let me just put this in um\num\num as<00:22:33.520> the<00:22:33.920> expression<00:22:34.320> that<00:22:34.440> this<00:22:34.600> memory<00:22:34.920> view\nas the expression that this memory view\nas the expression that this memory view is<00:22:35.200> evaluating.\nis evaluating.\nis evaluating. And<00:22:36.720> you<00:22:36.800> can<00:22:36.920> see<00:22:37.320> like<00:22:37.640> here's<00:22:37.960> the<00:22:38.040> byte\nAnd you can see like here's the byte\nAnd you can see like here's the byte representation<00:22:39.080> of<00:22:39.240> that<00:22:39.440> text<00:22:39.680> file.<00:22:40.120> So<00:22:40.760> um\nrepresentation of that text file. So um\nrepresentation of that text file. So um like<00:22:41.720> if<00:22:41.840> we<00:22:41.920> go<00:22:42.160> up<00:22:42.280> to<00:22:42.400> the<00:22:42.480> top<00:22:42.680> of<00:22:42.720> this<00:22:42.800> text\nlike if we go up to the top of this text\nlike if we go up to the top of this text file,<00:22:43.160> you<00:22:43.240> can<00:22:43.360> see\nfile, you can see\nfile, you can see //copyrights\n//copyrights\n//copyrights uh<00:22:46.680> (c)<00:22:47.680> Epic<00:22:48.000> Games<00:22:48.280> Tools<00:22:48.640> licensed<00:22:48.960> under\nuh (c) Epic Games Tools licensed under\nuh (c) Epic Games Tools licensed under the<00:22:49.240> MIT<00:22:49.600> license.<00:22:50.480> If<00:22:50.720> I<00:22:50.840> go<00:22:51.160> to<00:22:51.760> my<00:22:52.520> uh<00:22:52.600> memory\nthe MIT license. If I go to my uh memory\nthe MIT license. If I go to my uh memory view<00:22:53.040> here,<00:22:53.760> you<00:22:53.840> can<00:22:53.960> see<00:22:54.360> it's<00:22:54.520> just<00:22:54.720> like,\nview here, you can see it's just like,\nview here, you can see it's just like, \"Hey,<00:22:55.360> //copyright<00:22:56.760> (c)<00:22:57.400> Epic<00:22:57.760> Games<00:22:58.080> Tools.\"\n\"Hey, //copyright (c) Epic Games Tools.\"\n\"Hey, //copyright (c) Epic Games Tools.\" Like<00:22:58.560> it's<00:22:58.680> just<00:22:58.880> viewing<00:22:59.240> the<00:22:59.360> same<00:22:59.640> data<00:22:59.960> as\nLike it's just viewing the same data as\nLike it's just viewing the same data as text,<00:23:00.600> right?\ntext, right?\ntext, right? Or<00:23:02.080> sorry,<00:23:02.360> as<00:23:02.520> memory.<00:23:02.920> As<00:23:03.080> just<00:23:03.280> raw<00:23:03.920> bytes\nOr sorry, as memory. As just raw bytes\nOr sorry, as memory. As just raw bytes in<00:23:04.640> a<00:23:04.680> byte<00:23:04.920> grid.\nin a byte grid.\nin a byte grid. Um\nUm\nUm So,<00:23:08.080> um\nSo, um\nSo, um that's<00:23:09.880> like<00:23:10.040> something<00:23:10.360> you<00:23:10.440> can<00:23:10.560> do.<00:23:11.120> It's\nthat's like something you can do. It's\nthat's like something you can do. It's kind<00:23:11.440> of<00:23:11.520> cool.\nkind of cool.\nkind of cool. Uh<00:23:13.160> I<00:23:13.280> guess<00:23:13.800> I<00:23:13.840> don't<00:23:14.080> know<00:23:14.360> what<00:23:14.520> to<00:23:14.600> show\nUh I guess I don't know what to show\nUh I guess I don't know what to show next.<00:23:15.000> I<00:23:15.040> could<00:23:15.200> I<00:23:15.280> guess<00:23:15.480> I<00:23:15.560> could<00:23:15.720> show<00:23:15.880> some\nnext. I could I guess I could show some\nnext. I could I guess I could show some of<00:23:16.080> the<00:23:16.160> more<00:23:16.320> sophisticated<00:23:16.920> visualizers<00:23:17.520> as\nof the more sophisticated visualizers as\nof the more sophisticated visualizers as well.\nwell.\nwell. Like<00:23:19.760> uh\nLike uh\nLike uh um\num\num I<00:23:22.720> guess<00:23:22.920> we'll<00:23:23.040> go<00:23:23.200> down<00:23:23.520> to\nfancy<00:23:28.200> vizzy<00:23:28.480> val<00:23:28.680> tests.\nUm\nlet's<00:23:34.720> do\nlet's do\nlet's do Okay,<00:23:37.280> so<00:23:37.360> these<00:23:37.520> are<00:23:37.600> kind<00:23:37.760> of<00:23:37.840> cool.\nOkay, so these are kind of cool.\nOkay, so these are kind of cool. If<00:23:40.160> we<00:23:40.280> have<00:23:41.120> like<00:23:41.240> a<00:23:41.320> float<00:23:41.680> here<00:23:42.160> that's<00:23:42.840> um\nIf we have like a float here that's um\nIf we have like a float here that's um you<00:23:44.240> know,<00:23:44.360> 500<00:23:45.080> and<00:23:45.200> let's<00:23:45.400> say<00:23:45.560> like<00:23:45.920> I<00:23:46.000> just\nyou know, 500 and let's say like I just\nyou know, 500 and let's say like I just happen<00:23:46.440> to<00:23:46.520> know<00:23:46.840> in<00:23:47.040> C,<00:23:47.360> we<00:23:47.480> don't<00:23:47.640> have<00:23:47.760> this\nhappen to know in C, we don't have this\nhappen to know in C, we don't have this in<00:23:48.040> type<00:23:48.280> info,<00:23:48.560> but<00:23:49.040> but<00:23:49.120> basically<00:23:49.440> like<00:23:50.200> um\nin type info, but but basically like um\nin type info, but but basically like um I've<00:23:50.840> got<00:23:50.960> a<00:23:51.000> float<00:23:51.320> here,<00:23:51.560> it's<00:23:51.920> set<00:23:52.120> to<00:23:52.200> 500,\nI've got a float here, it's set to 500,\nI've got a float here, it's set to 500, um<00:23:53.400> but<00:23:53.520> I<00:23:53.600> want<00:23:53.720> to<00:23:53.800> consider<00:23:54.080> this<00:23:54.200> thing<00:23:54.400> as\num but I want to consider this thing as\num but I want to consider this thing as between<00:23:54.920> the<00:23:55.040> range<00:23:55.360> of<00:23:55.640> like<00:23:55.880> I<00:23:56.080> I<00:23:56.120> want<00:23:56.240> to\nbetween the range of like I I want to\nbetween the range of like I I want to consider<00:23:56.560> this<00:23:56.680> thing<00:23:56.840> as<00:23:57.120> within<00:23:57.440> the<00:23:57.520> range\nconsider this thing as within the range\nconsider this thing as within the range of<00:23:57.920> 0<00:23:58.240> to<00:23:58.360> 1,000,<00:23:58.840> right?\nof 0 to 1,000, right?\nof 0 to 1,000, right? Um\nUm\nUm So,<00:24:01.360> you<00:24:01.440> can<00:24:01.560> actually<00:24:01.880> specify<00:24:02.280> this<00:24:02.440> to<00:24:02.520> the\nSo, you can actually specify this to the\nSo, you can actually specify this to the debugger<00:24:02.920> and<00:24:03.000> you<00:24:03.080> can<00:24:03.200> say<00:24:03.360> range<00:24:03.720> one<00:24:04.560> for\ndebugger and you can say range one for\ndebugger and you can say range one for one<00:24:05.400> for<00:24:05.600> one<00:24:06.040> one<00:24:06.200> dimension.\none for one one dimension.\none for one one dimension. And<00:24:07.400> I<00:24:07.440> can<00:24:07.560> say<00:24:07.720> slide<00:24:08.120> one<00:24:08.440> and<00:24:08.560> I<00:24:08.640> want<00:24:08.840> this\nAnd I can say slide one and I want this\nAnd I can say slide one and I want this to<00:24:09.040> be<00:24:09.120> zero<00:24:09.960> between<00:24:10.186> [clears throat]<00:24:10.320> zero\nto be zero between [clears throat] zero\nto be zero between [clears throat] zero and<00:24:10.600> 1,000,<00:24:11.040> so<00:24:11.120> it<00:24:11.200> should<00:24:11.320> be<00:24:11.400> right<00:24:11.600> in<00:24:11.640> the\nand 1,000, so it should be right in the\nand 1,000, so it should be right in the middle.\nmiddle.\nmiddle. >> Nice.\n>> Nice.\n>> Nice. >> And<00:24:13.360> sure<00:24:13.840> And<00:24:13.960> sure<00:24:14.120> enough\n>> And sure And sure enough\n>> And sure And sure enough you<00:24:15.280> get<00:24:15.440> this<00:24:16.000> and<00:24:16.480> if<00:24:16.680> I<00:24:16.920> change<00:24:17.240> the<00:24:17.320> value\nyou get this and if I change the value\nyou get this and if I change the value and<00:24:18.480> if<00:24:18.560> I<00:24:18.640> just<00:24:18.800> evaluate<00:24:19.200> the<00:24:19.280> float<00:24:19.600> itself,\nand if I just evaluate the float itself,\nand if I just evaluate the float itself, you'll<00:24:20.120> see<00:24:20.320> that<00:24:20.560> I'm<00:24:20.680> actually<00:24:20.960> changing\nyou'll see that I'm actually changing\nyou'll see that I'm actually changing the<00:24:21.520> memory<00:24:21.880> like<00:24:22.120> of<00:24:22.240> the<00:24:22.320> program<00:24:22.760> as<00:24:22.920> I<00:24:22.960> do\nthe memory like of the program as I do\nthe memory like of the program as I do this.\nthis.\nthis. Um\nSo,\nSo,\nSo, um\num\num and<00:24:29.520> then<00:24:29.680> it's<00:24:29.800> like<00:24:29.960> you<00:24:30.240> you<00:24:30.320> might<00:24:30.520> look<00:24:30.640> at\nand then it's like you you might look at\nand then it's like you you might look at this<00:24:30.840> and<00:24:30.920> you're<00:24:31.000> like,<00:24:31.120> \"Hey,<00:24:31.280> this<00:24:31.520> UI\nthis and you're like, \"Hey, this UI\nthis and you're like, \"Hey, this UI actually<00:24:32.280> looks<00:24:32.480> a<00:24:32.560> lot<00:24:32.920> like<00:24:33.120> if<00:24:33.280> I<00:24:33.360> hit<00:24:33.600> F1\nactually looks a lot like if I hit F1\nactually looks a lot like if I hit F1 and<00:24:34.120> type<00:24:34.360> font<00:24:34.720> size.\"<00:24:35.760> It's<00:24:35.920> so<00:24:36.080> strange\nand type font size.\" It's so strange\nand type font size.\" It's so strange because<00:24:36.800> I<00:24:36.880> actually<00:24:37.160> see<00:24:37.520> that<00:24:37.720> there's<00:24:37.920> all\nbecause I actually see that there's all\nbecause I actually see that there's all these<00:24:38.160> options<00:24:38.520> for<00:24:38.640> like<00:24:38.840> these<00:24:39.000> different\nthese options for like these different\nthese options for like these different kinds<00:24:39.480> of<00:24:39.560> like<00:24:39.720> sizes<00:24:40.280> and<00:24:40.400> font<00:24:40.640> sizes<00:24:41.000> and\nkinds of like sizes and font sizes and\nkinds of like sizes and font sizes and stuff<00:24:41.240> like<00:24:41.360> that.<00:24:41.800> It's<00:24:41.880> like,<00:24:42.320> \"That's\nstuff like that. It's like, \"That's\nstuff like that. It's like, \"That's pretty<00:24:42.640> interesting,<00:24:42.960> right?\"<00:24:43.080> It's<00:24:43.200> like,\npretty interesting, right?\" It's like,\npretty interesting, right?\" It's like, \"Yeah,<00:24:43.560> that's<00:24:43.960> evaluating<00:24:44.800> the<00:24:44.920> setting<00:24:45.440> of\n\"Yeah, that's evaluating the setting of\n\"Yeah, that's evaluating the setting of the<00:24:45.840> debugger.\"<00:24:46.320> Like<00:24:46.520> that's<00:24:47.000> So,<00:24:47.160> this<00:24:47.360> is\nthe debugger.\" Like that's So, this is\nthe debugger.\" Like that's So, this is literally<00:24:47.880> the<00:24:48.000> same<00:24:48.240> UI<00:24:48.840> as<00:24:49.080> this.<00:24:49.320> It's<00:24:49.440> not\nliterally the same UI as this. It's not\nliterally the same UI as this. It's not just<00:24:49.840> that<00:24:49.920> I'm<00:24:50.040> calling<00:24:50.320> the<00:24:50.400> same<00:24:50.600> helper\njust that I'm calling the same helper\njust that I'm calling the same helper function<00:24:51.240> in<00:24:51.320> two<00:24:51.480> places.<00:24:52.320> It's<00:24:52.600> literally\nfunction in two places. It's literally\nfunction in two places. It's literally the<00:24:53.120> same<00:24:53.360> path<00:24:54.080> uh<00:24:54.160> being<00:24:54.360> used<00:24:54.520> for<00:24:54.600> both.\nthe same path uh being used for both.\nthe same path uh being used for both. So,<00:24:55.680> that's<00:24:55.840> like<00:24:56.000> one<00:24:56.400> kind<00:24:56.600> of<00:24:57.040> fun<00:24:57.320> thing.\nSo, that's like one kind of fun thing.\nSo, that's like one kind of fun thing. It's<00:24:57.960> not<00:24:58.120> super<00:24:58.400> important<00:24:58.800> to<00:24:58.880> know<00:24:59.040> that,\nIt's not super important to know that,\nIt's not super important to know that, but<00:24:59.400> it's<00:24:59.560> just<00:24:59.720> like<00:24:59.880> a<00:24:59.960> cool<00:25:00.280> architectural\nbut it's just like a cool architectural\nbut it's just like a cool architectural aspect<00:25:01.280> of<00:25:01.640> the<00:25:01.720> debugger<00:25:02.120> is<00:25:02.280> that<00:25:02.720> I<00:25:02.840> found\naspect of the debugger is that I found\naspect of the debugger is that I found that<00:25:03.240> the<00:25:03.320> best<00:25:03.640> way<00:25:03.800> to<00:25:04.040> collapse<00:25:04.680> all<00:25:04.920> of\nthat the best way to collapse all of\nthat the best way to collapse all of this\nthis\nthis all<00:25:06.320> of<00:25:06.400> these<00:25:06.640> UIs<00:25:07.040> for<00:25:07.120> like<00:25:07.480> editing<00:25:07.800> the\nall of these UIs for like editing the\nall of these UIs for like editing the debugger<00:25:08.200> settings<00:25:08.760> and,<00:25:09.000> you<00:25:09.040> know,<00:25:09.200> tab\ndebugger settings and, you know, tab\ndebugger settings and, you know, tab settings<00:25:10.080> and<00:25:10.320> watch<00:25:10.600> window<00:25:10.800> stuff.<00:25:11.040> It's\nsettings and watch window stuff. It's\nsettings and watch window stuff. It's like\nlike\nlike I<00:25:12.840> I<00:25:12.920> found<00:25:13.080> that<00:25:13.200> the<00:25:13.240> best<00:25:13.480> way<00:25:13.640> to<00:25:13.760> actually\nI I found that the best way to actually\nI I found that the best way to actually collapse<00:25:14.360> all<00:25:14.480> of<00:25:14.560> it<00:25:14.640> down<00:25:14.880> was<00:25:15.120> to<00:25:15.240> make<00:25:15.520> the\ncollapse all of it down was to make the\ncollapse all of it down was to make the watch<00:25:15.800> window<00:25:16.040> super<00:25:16.280> super<00:25:16.520> powerful.<00:25:16.960> So,\nwatch window super super powerful. So,\nwatch window super super powerful. So, that's<00:25:18.560> what<00:25:18.720> ended<00:25:18.960> up<00:25:19.080> happening.<00:25:19.360> So,\nthat's what ended up happening. So,\nthat's what ended up happening. So, anyways,<00:25:20.160> we<00:25:20.240> have<00:25:20.360> sliders<00:25:20.840> here.<00:25:21.120> You<00:25:21.240> can\nanyways, we have sliders here. You can\nanyways, we have sliders here. You can do<00:25:21.440> this<00:25:21.640> with<00:25:21.920> integers<00:25:22.360> as<00:25:22.520> well.<00:25:22.760> So,<00:25:22.880> I\ndo this with integers as well. So, I\ndo this with integers as well. So, I could<00:25:23.040> do<00:25:23.160> range<00:25:23.480> one<00:25:24.160> uh<00:25:24.320> slide<00:25:24.680> three<00:25:25.000> is<00:25:25.040> an\ncould do range one uh slide three is an\ncould do range one uh slide three is an integer<00:25:25.560> and<00:25:25.680> I<00:25:25.720> can<00:25:25.840> say<00:25:26.000> this<00:25:26.200> is<00:25:26.320> also\ninteger and I can say this is also\ninteger and I can say this is also between<00:25:27.200> uh<00:25:27.280> this<00:25:27.480> is<00:25:27.560> between<00:25:27.880> zero<00:25:28.080> and<00:25:28.160> 100.\nbetween uh this is between zero and 100.\nbetween uh this is between zero and 100. Same<00:25:29.400> exact<00:25:29.680> thing<00:25:29.880> here,<00:25:30.360> right?<00:25:31.120> Um\nSo,\nSo,\nSo, uh<00:25:38.840> we<00:25:38.920> have<00:25:39.040> colors<00:25:40.120> um\nuh we have colors um\nuh we have colors um as<00:25:41.840> well.<00:25:42.120> So,<00:25:42.280> if<00:25:42.400> I've<00:25:42.560> got<00:25:42.920> um<00:25:43.440> example\nas well. So, if I've got um example\nas well. So, if I've got um example color<00:25:44.040> 4F32\ncolor 4F32\ncolor 4F32 um<00:25:46.400> which<00:25:46.640> I<00:25:46.720> think<00:25:47.080> I<00:25:47.120> think<00:25:47.320> some<00:25:47.520> of<00:25:47.600> these\num which I think I think some of these\num which I think I think some of these may<00:25:48.080> be<00:25:48.520> kind<00:25:48.720> of<00:25:48.840> work<00:25:49.040> in<00:25:49.120> progress.<00:25:49.600> So,<00:25:49.680> I\nmay be kind of work in progress. So, I\nmay be kind of work in progress. So, I don't<00:25:49.920> know<00:25:50.320> there<00:25:50.440> might<00:25:50.640> be<00:25:50.960> one<00:25:51.160> of<00:25:51.240> these\ndon't know there might be one of these\ndon't know there might be one of these that<00:25:51.640> doesn't<00:25:51.920> quite<00:25:52.200> work<00:25:52.400> yet,<00:25:52.560> but<00:25:52.720> let's\nthat doesn't quite work yet, but let's\nthat doesn't quite work yet, but let's try<00:25:53.840> let's<00:25:54.000> try<00:25:54.160> color<00:25:55.240> um<00:25:55.640> example<00:25:56.240> color\ntry let's try color um example color\ntry let's try color um example color U32.<00:25:57.920> Is<00:25:58.000> this<00:25:58.120> going<00:25:58.240> to<00:25:58.320> work?<00:25:58.760> Okay.<00:25:59.200> I\nU32. Is this going to work? Okay. I\nU32. Is this going to work? Okay. I don't<00:25:59.440> know<00:25:59.520> if<00:25:59.640> editing<00:26:00.040> will<00:26:00.160> work.<00:26:00.680> Okay,\ndon't know if editing will work. Okay,\ndon't know if editing will work. Okay, yeah,<00:26:01.040> editing<00:26:01.360> works.<00:26:01.560> So,<00:26:01.720> U32<00:26:02.280> seems<00:26:02.520> to<00:26:02.600> be\nyeah, editing works. So, U32 seems to be\nyeah, editing works. So, U32 seems to be the<00:26:02.960> one<00:26:03.200> that<00:26:03.360> I<00:26:03.840> I<00:26:03.920> think<00:26:04.120> the<00:26:04.240> four<00:26:04.480> float\nthe one that I I think the four float\nthe one that I I think the four float one<00:26:04.960> is<00:26:05.120> maybe\none is maybe\none is maybe there's<00:26:06.560> still<00:26:06.720> some<00:26:06.840> stuff<00:26:07.000> that's<00:26:07.160> in\nthere's still some stuff that's in\nthere's still some stuff that's in progress<00:26:07.680> here<00:26:07.840> with<00:26:08.160> with<00:26:08.400> some<00:26:08.520> of<00:26:08.600> these\nprogress here with with some of these\nprogress here with with some of these fancy<00:26:09.120> things.<00:26:09.400> Like<00:26:09.520> I<00:26:09.560> think<00:26:09.800> this<00:26:09.960> might\nfancy things. Like I think this might\nfancy things. Like I think this might work<00:26:10.920> for<00:26:11.080> the<00:26:11.200> visualization,<00:26:11.960> but<00:26:12.120> I<00:26:12.160> don't\nwork for the visualization, but I don't\nwork for the visualization, but I don't know<00:26:12.400> if<00:26:12.520> I<00:26:12.560> can<00:26:12.720> edit<00:26:13.000> it.<00:26:13.560> Yeah,<00:26:13.760> so<00:26:13.880> there's\nknow if I can edit it. Yeah, so there's\nknow if I can edit it. Yeah, so there's a<00:26:14.200> there's<00:26:14.320> a<00:26:14.360> couple<00:26:14.600> of<00:26:14.640> missing<00:26:14.920> features\na there's a couple of missing features\na there's a couple of missing features here,<00:26:15.360> but<00:26:16.000> in<00:26:16.080> the<00:26:16.120> case<00:26:16.320> of<00:26:16.400> the<00:26:16.480> U32\nhere, but in the case of the U32\nhere, but in the case of the U32 um<00:26:18.520> you<00:26:18.640> know,<00:26:18.760> we<00:26:18.880> can<00:26:19.040> edit<00:26:19.960> just<00:26:20.320> this<00:26:20.480> thing\num you know, we can edit just this thing\num you know, we can edit just this thing here.<00:26:21.120> We<00:26:21.200> can<00:26:21.320> change<00:26:21.800> whatever<00:26:22.000> the<00:26:22.080> color\nhere. We can change whatever the color\nhere. We can change whatever the color value<00:26:22.640> is.<00:26:23.480> Um<00:26:23.800> and<00:26:23.920> you<00:26:23.960> can<00:26:24.080> see<00:26:24.240> like<00:26:24.680> this\nvalue is. Um and you can see like this\nvalue is. Um and you can see like this U32<00:26:25.520> value<00:26:25.920> it's<00:26:26.080> being<00:26:26.640> uh<00:26:26.920> kind<00:26:27.080> of<00:26:27.600> peaked\nU32 value it's being uh kind of peaked\nU32 value it's being uh kind of peaked right<00:26:28.240> here<00:26:28.400> in<00:26:28.480> the<00:26:28.520> source<00:26:28.800> code.<00:26:29.720> Um<00:26:30.320> and\nright here in the source code. Um and\nright here in the source code. Um and you<00:26:30.720> can<00:26:30.840> see<00:26:30.960> it's<00:26:31.080> actually<00:26:31.360> changing<00:26:31.800> like\nyou can see it's actually changing like\nyou can see it's actually changing like as<00:26:32.200> I<00:26:32.280> just<00:26:32.440> drag<00:26:32.720> this<00:26:32.880> color<00:26:33.440> around.<00:26:34.160> Um\nas I just drag this color around. Um\nas I just drag this color around. Um So,<00:26:35.560> yeah.\nSo, yeah.\nSo, yeah. Um\nUm\nUm >> [sighs]\n>> [sighs]\n>> [sighs] >> uh<00:26:39.160> multi-line<00:26:39.720> text<00:26:40.080> I<00:26:40.120> already<00:26:40.360> showed\n>> uh multi-line text I already showed\n>> uh multi-line text I already showed this,<00:26:40.960> but<00:26:41.240> we<00:26:41.320> can<00:26:41.440> do<00:26:41.800> text<00:26:42.320> of<00:26:43.120> uh\nthis, but we can do text of uh\nthis, but we can do text of uh long<00:26:44.080> string.\nlong string.\nlong string. We<00:26:45.880> can<00:26:46.000> do<00:26:46.360> text<00:26:47.360> um\nWe can do text um\nWe can do text um text<00:26:48.880> of<00:26:49.040> code<00:26:49.360> string.<00:26:50.000> The<00:26:50.120> language<00:26:50.720> and<00:26:51.040> in\ntext of code string. The language and in\ntext of code string. The language and in this<00:26:51.280> case<00:26:51.520> it's<00:26:51.680> like<00:26:51.840> we<00:26:51.920> have<00:26:52.080> some<00:26:52.280> C\nthis case it's like we have some C\nthis case it's like we have some C source<00:26:52.800> code<00:26:53.000> so<00:26:53.080> maybe<00:26:53.280> I<00:26:53.320> just<00:26:53.480> want<00:26:53.600> to<00:26:53.680> say\nsource code so maybe I just want to say\nsource code so maybe I just want to say C<00:26:54.760> Uh\nC Uh\nC Uh or<00:26:55.920> sorry\nor sorry\nor sorry that<00:26:57.400> not<00:26:57.640> shown<00:26:57.800> in<00:26:57.840> the<00:26:57.920> docs<00:26:58.160> but<00:26:58.280> that\nthat not shown in the docs but that\nthat not shown in the docs but that needs<00:26:58.640> to<00:26:58.720> be<00:26:58.760> a<00:26:58.800> named<00:26:59.080> parameter.<00:26:59.400> So\nneeds to be a named parameter. So\nneeds to be a named parameter. So anyways,<00:27:00.280> code<00:27:00.520> strain<00:27:00.840> lang<00:27:01.120> C\nanyways, code strain lang C\nanyways, code strain lang C I'm<00:27:02.440> still<00:27:02.600> working<00:27:02.840> on<00:27:02.960> the<00:27:03.080> in<00:27:03.480> application\nI'm still working on the in application\nI'm still working on the in application docs<00:27:04.240> so<00:27:04.360> it's<00:27:04.480> a<00:27:04.520> little<00:27:04.720> bit<00:27:05.080> it's<00:27:05.200> a<00:27:05.240> little\ndocs so it's a little bit it's a little\ndocs so it's a little bit it's a little bit<00:27:05.480> like<00:27:05.640> of<00:27:05.720> a<00:27:05.760> secret<00:27:06.240> thing<00:27:06.480> but\nbit like of a secret thing but\nbit like of a secret thing but lang<00:27:08.440> equals<00:27:08.720> C<00:27:08.880> and<00:27:08.960> then<00:27:09.080> you<00:27:09.160> can<00:27:09.240> see<00:27:09.640> oh<00:27:09.880> I\nlang equals C and then you can see oh I\nlang equals C and then you can see oh I actually<00:27:10.240> see<00:27:10.400> my<00:27:10.600> C<00:27:10.800> source<00:27:11.040> code<00:27:11.240> here\nactually see my C source code here\nactually see my C source code here syntax<00:27:13.080> highlighted<00:27:13.560> and<00:27:13.640> everything<00:27:14.040> and\nsyntax highlighted and everything and\nsyntax highlighted and everything and show<00:27:14.560> showing<00:27:14.800> me<00:27:14.880> the<00:27:15.000> scopes<00:27:15.320> and<00:27:15.400> stuff\nshow showing me the scopes and stuff\nshow showing me the scopes and stuff like<00:27:15.720> that.<00:27:16.560> Um\nlike that. Um\nlike that. Um So<00:27:18.600> let's<00:27:18.760> see<00:27:18.880> what<00:27:19.000> else.<00:27:19.640> This<00:27:19.880> is<00:27:19.960> assembly\nSo let's see what else. This is assembly\nSo let's see what else. This is assembly of<00:27:20.640> course.<00:27:21.000> So<00:27:21.440> if<00:27:21.640> I<00:27:21.720> open<00:27:21.960> up<00:27:22.040> like<00:27:22.200> a\nof course. So if I open up like a\nof course. So if I open up like a disassembly<00:27:22.840> view\ndisassembly view\ndisassembly view um\num\num and<00:27:25.920> uh\nI<00:27:28.200> want<00:27:28.360> to<00:27:28.400> see<00:27:28.520> like<00:27:28.720> where<00:27:28.880> my<00:27:29.000> thread<00:27:29.280> is\nI want to see like where my thread is\nI want to see like where my thread is with<00:27:29.920> respect<00:27:30.200> to<00:27:30.280> the<00:27:30.440> actual<00:27:30.880> machine<00:27:31.160> code\nwith respect to the actual machine code\nwith respect to the actual machine code instructions\ninstructions\ninstructions um<00:27:33.360> I<00:27:33.440> can<00:27:33.560> open<00:27:33.720> up<00:27:33.800> a<00:27:33.880> disassembly<00:27:34.320> view<00:27:34.520> that\num I can open up a disassembly view that\num I can open up a disassembly view that takes<00:27:35.040> the<00:27:35.160> actual<00:27:35.480> code<00:27:35.840> that's<00:27:36.080> in<00:27:36.200> the\ntakes the actual code that's in the\ntakes the actual code that's in the process<00:27:36.720> that<00:27:36.880> the<00:27:36.960> thread<00:27:37.240> is<00:27:37.360> stopped<00:27:37.720> on\nprocess that the thread is stopped on\nprocess that the thread is stopped on and<00:27:38.480> it<00:27:38.600> just<00:27:39.200> disassembles<00:27:39.840> it.<00:27:40.640> Um<00:27:41.440> meaning\nand it just disassembles it. Um meaning\nand it just disassembles it. Um meaning it<00:27:41.800> interprets<00:27:42.280> it<00:27:42.400> how<00:27:42.480> the<00:27:42.560> CPU<00:27:42.920> would\nit interprets it how the CPU would\nit interprets it how the CPU would interpret<00:27:43.360> it<00:27:43.480> to<00:27:43.560> find<00:27:43.800> out<00:27:43.920> what<00:27:44.080> the\ninterpret it to find out what the\ninterpret it to find out what the instructions<00:27:44.600> are,<00:27:44.880> what<00:27:45.000> are<00:27:45.040> the\ninstructions are, what are the\ninstructions are, what are the parameters<00:27:45.560> to<00:27:45.640> the<00:27:45.680> instructions,<00:27:46.200> like<00:27:46.320> all\nparameters to the instructions, like all\nparameters to the instructions, like all these<00:27:46.600> things.\nthese things.\nthese things. And<00:27:48.360> uh<00:27:48.480> you<00:27:48.560> can<00:27:48.680> see<00:27:48.840> it<00:27:48.960> corre-<00:27:49.280> it\nAnd uh you can see it corre- it\nAnd uh you can see it corre- it automatically<00:27:49.800> correlates<00:27:50.320> like<00:27:50.520> with\nautomatically correlates like with\nautomatically correlates like with source<00:27:51.600> code<00:27:51.880> like<00:27:52.040> you<00:27:52.160> can<00:27:52.280> see<00:27:52.600> like<00:27:52.800> which\nsource code like you can see like which\nsource code like you can see like which instructions<00:27:53.600> map<00:27:53.800> to<00:27:53.880> which<00:27:54.080> line<00:27:54.280> of<00:27:54.360> source\ninstructions map to which line of source\ninstructions map to which line of source code<00:27:54.800> and<00:27:54.920> so<00:27:55.120> on.<00:27:55.840> Um<00:27:55.960> and<00:27:56.080> then<00:27:56.200> as<00:27:56.400> I<00:27:56.440> step\ncode and so on. Um and then as I step\ncode and so on. Um and then as I step like<00:27:57.040> you'll<00:27:57.200> see<00:27:57.360> that<00:27:57.520> the<00:27:57.640> thread<00:27:58.280> like\nlike you'll see that the thread like\nlike you'll see that the thread like goes<00:27:58.640> through<00:27:59.280> um\ngoes through um\ngoes through um goes<00:28:00.640> through<00:28:00.760> the<00:28:00.840> code<00:28:01.080> here.\ngoes through the code here.\ngoes through the code here. Um\nUm\nUm this<00:28:03.080> is<00:28:03.200> also<00:28:03.440> just<00:28:03.640> a<00:28:03.680> visualizer,<00:28:04.400> right?\nthis is also just a visualizer, right?\nthis is also just a visualizer, right? So<00:28:04.720> I<00:28:04.760> could<00:28:04.920> just<00:28:05.320> do<00:28:05.760> like<00:28:06.280> disasm<00:28:06.960> and<00:28:07.080> I\nSo I could just do like disasm and I\nSo I could just do like disasm and I could<00:28:07.280> put<00:28:07.440> in<00:28:07.520> like<00:28:07.720> a<00:28:08.400> like<00:28:08.520> my<00:28:08.680> mule<00:28:08.920> main\ncould put in like a like my mule main\ncould put in like a like my mule main function\nfunction\nfunction and<00:28:11.320> if<00:28:11.480> I<00:28:12.160> go<00:28:12.360> to<00:28:12.520> mule<00:28:12.760> main<00:28:13.200> here\nand if I go to mule main here\nand if I go to mule main here uh<00:28:15.400> you<00:28:15.520> can<00:28:15.640> see<00:28:15.840> that\nuh you can see that\nuh you can see that uh<00:28:16.960> let<00:28:17.080> me<00:28:17.160> pull<00:28:17.320> this<00:28:17.440> out<00:28:17.560> as<00:28:17.680> its<00:28:17.800> own<00:28:17.960> tab.\nuh let me pull this out as its own tab.\nuh let me pull this out as its own tab. So<00:28:18.280> we're<00:28:18.360> just<00:28:18.600> viewing<00:28:18.840> the<00:28:18.920> disassembly<00:28:19.560> of\nSo we're just viewing the disassembly of\nSo we're just viewing the disassembly of mule<00:28:20.120> main\nmule main\nmule main and<00:28:21.680> we<00:28:21.840> can<00:28:22.000> see<00:28:22.200> like<00:28:22.720> that's<00:28:22.960> just<00:28:23.240> going<00:28:23.360> to\nand we can see like that's just going to\nand we can see like that's just going to do<00:28:23.720> exactly<00:28:24.120> what<00:28:24.200> I<00:28:24.240> told<00:28:24.480> it<00:28:24.600> to.<00:28:24.720> It's<00:28:24.880> like\ndo exactly what I told it to. It's like\ndo exactly what I told it to. It's like disassemble<00:28:25.560> mule<00:28:25.720> main<00:28:26.120> and<00:28:26.280> show<00:28:26.440> me<00:28:27.160> what\ndisassemble mule main and show me what\ndisassemble mule main and show me what it<00:28:27.360> looks<00:28:27.520> like<00:28:27.720> and<00:28:27.960> and\nit looks like and and\nit looks like and and here<00:28:29.320> it<00:28:29.400> is.\nhere it is.\nhere it is. Um\nUm\nUm so\nso\nso then<00:28:35.760> the<00:28:36.000> next<00:28:36.280> thing<00:28:36.480> I<00:28:36.640> should<00:28:36.880> probably\nthen the next thing I should probably\nthen the next thing I should probably show<00:28:37.680> is\nshow is\nshow is uh<00:28:39.320> we've<00:28:39.400> got<00:28:39.560> other<00:28:39.720> kinds<00:28:39.960> of<00:28:40.000> visualizers\nuh we've got other kinds of visualizers\nuh we've got other kinds of visualizers like<00:28:40.880> um<00:28:41.360> like<00:28:41.480> a<00:28:41.520> bit<00:28:41.680> map<00:28:41.880> visualizer<00:28:42.320> for\nlike um like a bit map visualizer for\nlike um like a bit map visualizer for example.<00:28:42.800> So<00:28:42.880> if<00:28:42.960> I've<00:28:43.080> got<00:28:43.200> a<00:28:43.240> bunch<00:28:43.440> of<00:28:43.480> data\nexample. So if I've got a bunch of data\nexample. So if I've got a bunch of data like<00:28:44.200> U32s<00:28:44.880> that<00:28:45.000> that<00:28:45.200> to<00:28:45.400> interpret<00:28:45.800> as\nlike U32s that that to interpret as\nlike U32s that that to interpret as pixels\npixels\npixels I<00:28:47.240> can<00:28:47.440> say,<00:28:47.680> \"Hey,<00:28:47.960> like<00:28:48.200> I<00:28:48.280> actually<00:28:48.560> have<00:28:48.680> a\nI can say, \"Hey, like I actually have a\nI can say, \"Hey, like I actually have a bitmap<00:28:49.480> and<00:28:49.800> my\nbitmap and my\nbitmap and my my<00:28:51.760> pixels<00:28:52.240> for<00:28:52.440> for<00:28:52.560> this<00:28:52.680> bitmap<00:28:53.520> is<00:28:53.640> just\nmy pixels for for this bitmap is just\nmy pixels for for this bitmap is just this<00:28:54.040> big<00:28:54.280> array<00:28:54.560> of<00:28:54.840> of<00:28:55.200> U32s<00:28:55.760> called<00:28:55.960> pixels.\nthis big array of of U32s called pixels.\nthis big array of of U32s called pixels. I<00:28:56.960> happen<00:28:57.200> to<00:28:57.320> know<00:28:57.520> that<00:28:57.680> the<00:28:57.760> dimensions<00:28:58.200> of\nI happen to know that the dimensions of\nI happen to know that the dimensions of this<00:28:58.480> thing<00:28:58.840> are<00:28:59.040> 18<00:28:59.320> by<00:28:59.480> 18,<00:28:59.920> but<00:29:00.040> you<00:29:00.120> can<00:29:00.240> put\nthis thing are 18 by 18, but you can put\nthis thing are 18 by 18, but you can put in<00:29:00.480> whatever<00:29:00.720> you<00:29:00.800> want<00:29:01.000> there.\"\nin whatever you want there.\"\nin whatever you want there.\" And<00:29:02.080> then<00:29:02.160> if<00:29:02.280> you<00:29:02.360> open<00:29:02.600> that,<00:29:03.320> you<00:29:03.440> get<00:29:03.560> a\nAnd then if you open that, you get a\nAnd then if you open that, you get a little<00:29:03.840> bitmap<00:29:04.160> visualizer.\nlittle bitmap visualizer.\nlittle bitmap visualizer. Um<00:29:06.760> and<00:29:07.040> you<00:29:07.160> can<00:29:07.720> just<00:29:07.920> like<00:29:08.080> everything,<00:29:08.400> you\nUm and you can just like everything, you\nUm and you can just like everything, you can<00:29:08.600> pull<00:29:08.760> it<00:29:08.880> out<00:29:09.120> as<00:29:09.240> its<00:29:09.400> own<00:29:09.520> tab.<00:29:10.160> An\ncan pull it out as its own tab. An\ncan pull it out as its own tab. An alternative<00:29:10.800> way<00:29:10.960> of<00:29:11.080> creating<00:29:11.400> this<00:29:11.520> tab\nalternative way of creating this tab\nalternative way of creating this tab would<00:29:11.840> have<00:29:11.960> been<00:29:12.640> just<00:29:12.840> create<00:29:13.040> a<00:29:13.080> bitmap<00:29:13.480> tab\nwould have been just create a bitmap tab\nwould have been just create a bitmap tab and<00:29:14.040> put<00:29:14.160> in<00:29:14.280> here<00:29:15.040> pixels<00:29:15.720> 18<00:29:16.120> by<00:29:16.320> 18.<00:29:16.960> These\nand put in here pixels 18 by 18. These\nand put in here pixels 18 by 18. These are<00:29:17.240> two<00:29:17.880> things<00:29:18.360> that<00:29:18.520> mean<00:29:18.680> exactly<00:29:19.120> the\nare two things that mean exactly the\nare two things that mean exactly the same<00:29:19.440> thing.\nsame thing.\nsame thing. So,\nSo,\nSo, um\num\num you<00:29:22.280> can<00:29:22.400> see<00:29:22.520> it's<00:29:22.640> just<00:29:22.800> like<00:29:23.000> initialized\nyou can see it's just like initialized\nyou can see it's just like initialized as<00:29:23.560> basically<00:29:23.920> just<00:29:24.080> garbage<00:29:24.400> right<00:29:24.560> now,<00:29:24.880> but\nas basically just garbage right now, but\nas basically just garbage right now, but as<00:29:25.200> I<00:29:25.280> step,<00:29:25.920> you<00:29:26.040> can<00:29:26.200> see<00:29:26.440> these<00:29:26.680> things\nas I step, you can see these things\nas I step, you can see these things start<00:29:27.600> to<00:29:28.120> start<00:29:28.320> to<00:29:28.800> see<00:29:28.920> these<00:29:29.040> pixels<00:29:29.320> start\nstart to start to see these pixels start\nstart to start to see these pixels start to<00:29:29.600> fill<00:29:29.840> out.<00:29:30.520> Um\nto fill out. Um\nto fill out. Um and<00:29:33.000> here's<00:29:33.320> a<00:29:33.360> loop<00:29:33.720> which<00:29:33.920> does<00:29:34.120> something\nand here's a loop which does something\nand here's a loop which does something to<00:29:34.440> all<00:29:34.520> the<00:29:34.600> pixels,<00:29:35.000> so<00:29:35.120> I<00:29:35.160> can<00:29:35.280> set<00:29:35.440> a\nto all the pixels, so I can set a\nto all the pixels, so I can set a breakpoint<00:29:35.880> here.<00:29:36.120> I'll<00:29:36.200> hit<00:29:36.320> F5,<00:29:36.840> run<00:29:37.000> to\nbreakpoint here. I'll hit F5, run to\nbreakpoint here. I'll hit F5, run to that<00:29:37.240> breakpoint.<00:29:37.960> It<00:29:38.160> like<00:29:38.440> shifted<00:29:38.840> all<00:29:38.960> the\nthat breakpoint. It like shifted all the\nthat breakpoint. It like shifted all the pixels<00:29:39.400> over.<00:29:40.360> Um\npixels over. Um\npixels over. Um uh<00:29:41.440> shifted<00:29:41.800> the<00:29:41.880> components<00:29:42.360> of<00:29:42.440> the<00:29:42.520> color\nuh shifted the components of the color\nuh shifted the components of the color of<00:29:43.160> of<00:29:43.240> the<00:29:43.320> pixel<00:29:43.600> colors<00:29:43.880> over.<00:29:44.640> Does<00:29:44.920> same\nof of the pixel colors over. Does same\nof of the pixel colors over. Does same thing<00:29:45.320> here<00:29:45.800> and<00:29:45.920> then<00:29:46.080> finally<00:29:46.440> does<00:29:46.640> it<00:29:46.720> once\nthing here and then finally does it once\nthing here and then finally does it once again<00:29:47.200> to<00:29:47.320> return<00:29:47.600> it<00:29:47.680> back<00:29:47.880> to<00:29:47.960> its<00:29:48.080> original\nagain to return it back to its original\nagain to return it back to its original values.\nvalues.\nvalues. Um\nUm\nUm So,<00:29:50.960> yeah.<00:29:51.520> Finally,<00:29:52.600> um\nSo, yeah. Finally, um\nSo, yeah. Finally, um >> [laughter]\n>> [laughter]\n>> [laughter] >> there's<00:29:55.040> this<00:29:55.240> one<00:29:55.560> which<00:29:55.800> is<00:29:56.000> a<00:29:56.080> bunch<00:29:56.320> you\n>> there's this one which is a bunch you\n>> there's this one which is a bunch you can<00:29:56.560> tell<00:29:57.040> I<00:29:57.080> I\ncan tell I I\ncan tell I I I<00:29:57.880> say<00:29:58.080> 3D<00:29:58.440> geometry.<00:29:59.080> I've<00:29:59.200> got<00:29:59.320> a<00:29:59.360> bunch<00:29:59.520> of\nI say 3D geometry. I've got a bunch of\nI say 3D geometry. I've got a bunch of vertex<00:29:59.920> data.\nvertex data.\nvertex data. Um<00:30:01.000> I've<00:30:01.120> got<00:30:01.680> some<00:30:01.880> index<00:30:02.200> data<00:30:03.080> and<00:30:03.960> uh\nUm I've got some index data and uh\nUm I've got some index data and uh if<00:30:04.800> I<00:30:04.880> So,<00:30:05.040> if<00:30:05.160> I<00:30:05.280> want<00:30:05.520> to<00:30:05.640> run<00:30:05.920> through<00:30:06.520> the\nif I So, if I want to run through the\nif I So, if I want to run through the the<00:30:07.680> initialization<00:30:08.360> of<00:30:08.440> those<00:30:08.560> big<00:30:08.760> tables\nthe initialization of those big tables\nthe initialization of those big tables and<00:30:09.720> this<00:30:09.840> is<00:30:09.920> a<00:30:09.960> pretty<00:30:10.160> complicated\nand this is a pretty complicated\nand this is a pretty complicated expression,<00:30:11.040> so<00:30:11.160> we've<00:30:11.280> got<00:30:11.840> this<00:30:12.040> geo<00:30:12.400> 3D\nexpression, so we've got this geo 3D\nexpression, so we've got this geo 3D view<00:30:13.640> which<00:30:13.760> is<00:30:13.840> applied<00:30:14.160> to<00:30:14.240> the<00:30:14.360> index\nview which is applied to the index\nview which is applied to the index buffer<00:30:15.160> and<00:30:15.280> then<00:30:15.400> you<00:30:15.440> have<00:30:15.560> a<00:30:15.600> vertex\nbuffer and then you have a vertex\nbuffer and then you have a vertex buffer.\nbuffer.\nbuffer. But<00:30:17.240> anyways,\nBut anyways,\nBut anyways, uh<00:30:18.640> then<00:30:18.880> you<00:30:19.000> get<00:30:19.200> this<00:30:19.560> and<00:30:19.680> that's<00:30:19.880> the\nuh then you get this and that's the\nuh then you get this and that's the actual\nactual\nactual um<00:30:21.680> that's<00:30:21.880> the<00:30:21.960> actual<00:30:22.640> like<00:30:22.840> geometry<00:30:23.280> data.\num that's the actual like geometry data.\num that's the actual like geometry data. So,\nSo,\nSo, um\num\num So,<00:30:26.720> yeah,<00:30:26.840> those<00:30:27.040> are<00:30:27.120> the<00:30:27.200> fancier\nSo, yeah, those are the fancier\nSo, yeah, those are the fancier visualizers.<00:30:28.440> Um<00:30:28.840> the<00:30:28.960> geometry<00:30:29.400> one<00:30:29.520> is\nvisualizers. Um the geometry one is\nvisualizers. Um the geometry one is still<00:30:30.120> like<00:30:30.360> all<00:30:30.520> of<00:30:30.600> these<00:30:30.760> are<00:30:30.880> pretty<00:30:31.080> much\nstill like all of these are pretty much\nstill like all of these are pretty much heavily<00:30:31.560> in<00:30:31.680> progress.<00:30:32.360> The<00:30:32.440> ones<00:30:32.640> that<00:30:32.800> are\nheavily in progress. The ones that are\nheavily in progress. The ones that are not<00:30:33.840> as<00:30:33.960> heavily<00:30:34.200> in<00:30:34.320> progress<00:30:34.680> are<00:30:34.760> the<00:30:34.840> ones\nnot as heavily in progress are the ones\nnot as heavily in progress are the ones that<00:30:35.160> are<00:30:35.280> like<00:30:35.480> super<00:30:35.800> super<00:30:36.080> common.<00:30:36.440> Like\nthat are like super super common. Like\nthat are like super super common. Like obviously<00:30:36.880> the<00:30:36.960> watch<00:30:37.160> window,<00:30:37.960> I<00:30:38.040> put<00:30:38.160> a<00:30:38.200> lot\nobviously the watch window, I put a lot\nobviously the watch window, I put a lot of<00:30:38.440> work<00:30:38.560> into<00:30:38.720> the<00:30:38.800> memory<00:30:39.120> view<00:30:39.360> cuz<00:30:39.480> these\nof work into the memory view cuz these\nof work into the memory view cuz these are<00:30:39.720> really<00:30:39.920> common<00:30:40.240> debugging<00:30:40.640> features\nare really common debugging features\nare really common debugging features that<00:30:41.080> people<00:30:41.280> expect,<00:30:41.760> but<00:30:41.960> obviously<00:30:42.360> long\nthat people expect, but obviously long\nthat people expect, but obviously long term<00:30:42.920> the<00:30:43.160> the<00:30:43.280> idea<00:30:43.560> is<00:30:43.720> like,<00:30:43.920> \"Hey,<00:30:44.080> this\nterm the the idea is like, \"Hey, this\nterm the the idea is like, \"Hey, this bitmap<00:30:44.480> visualizer<00:30:44.880> will<00:30:45.000> just<00:30:45.160> end<00:30:45.320> up<00:30:45.400> being\nbitmap visualizer will just end up being\nbitmap visualizer will just end up being like<00:30:46.640> having<00:30:46.920> all<00:30:47.000> the<00:30:47.080> things<00:30:47.320> that<00:30:47.440> you\nlike having all the things that you\nlike having all the things that you really<00:30:47.720> want<00:30:48.240> um<00:30:48.680> for<00:30:49.040> for<00:30:49.600> dealing<00:30:49.840> with\nreally want um for for dealing with\nreally want um for for dealing with bitmap<00:30:50.280> data.\"\nbitmap data.\"\nbitmap data.\" Um<00:30:51.400> and<00:30:51.520> then<00:30:51.640> in<00:30:51.680> the<00:30:51.760> future<00:30:52.000> we'll<00:30:52.120> have\nUm and then in the future we'll have\nUm and then in the future we'll have tons<00:30:52.520> of<00:30:52.600> other<00:30:52.760> kinds<00:30:53.040> of<00:30:53.120> visualizers<00:30:53.720> like,\ntons of other kinds of visualizers like,\ntons of other kinds of visualizers like, you<00:30:54.200> know,<00:30:54.320> for<00:30:54.440> sound<00:30:54.800> data<00:30:55.240> and<00:30:55.640> the<00:30:55.840> 3D\nyou know, for sound data and the 3D\nyou know, for sound data and the 3D geometry<00:30:56.480> one<00:30:56.640> will<00:30:56.800> become<00:30:57.040> a<00:30:57.080> lot<00:30:57.240> more\ngeometry one will become a lot more\ngeometry one will become a lot more sophisticated<00:30:58.120> and<00:30:58.480> and<00:30:58.760> 2D<00:30:59.040> plots<00:30:59.480> and<00:30:59.560> like\nsophisticated and and 2D plots and like\nsophisticated and and 2D plots and like all<00:30:59.800> these<00:30:59.960> kinds<00:31:00.160> of<00:31:00.240> things<00:31:00.440> are<00:31:00.520> on<00:31:00.640> the\nall these kinds of things are on the\nall these kinds of things are on the table.\ntable.\ntable. Um<00:31:02.280> that's<00:31:02.440> what<00:31:02.520> the<00:31:02.600> whole<00:31:02.800> architecture<00:31:03.320> is\nUm that's what the whole architecture is\nUm that's what the whole architecture is for.<00:31:04.200> Um\nfor. Um\nfor. Um >> So,<00:31:04.640> it's<00:31:04.840> like<00:31:05.520> Rad<00:31:05.760> Debugger<00:31:06.240> is<00:31:06.400> like<00:31:06.800> like\n>> So, it's like Rad Debugger is like like\n>> So, it's like Rad Debugger is like like a<00:31:07.080> mini<00:31:07.440> game<00:31:07.840> engine.\na mini game engine.\na mini game engine. >> [laughter]\n>> [laughter]\n>> [laughter] >> You<00:31:10.920> could<00:31:11.320> You<00:31:11.440> could<00:31:11.760> think<00:31:11.960> of<00:31:12.040> it<00:31:12.120> that\n>> You could You could think of it that\n>> You could You could think of it that way,<00:31:12.560> maybe.<00:31:12.960> I<00:31:13.040> mean,<00:31:13.520> you<00:31:13.640> know,<00:31:13.800> I<00:31:13.840> I<00:31:14.560> I\nway, maybe. I mean, you know, I I I\nway, maybe. I mean, you know, I I I wouldn't<00:31:14.800> be<00:31:14.920> so<00:31:15.040> presumptuous<00:31:15.600> as<00:31:15.760> to<00:31:15.840> say\nwouldn't be so presumptuous as to say\nwouldn't be so presumptuous as to say that<00:31:16.280> unlike<00:31:16.640> the<00:31:16.920> people<00:31:17.200> at<00:31:17.320> Anthropic,<00:31:17.840> but\nthat unlike the people at Anthropic, but\nthat unlike the people at Anthropic, but um<00:31:19.680> about<00:31:20.040> Claude.<00:31:20.600> Uh<00:31:20.840> but<00:31:21.760> it<00:31:21.960> is<00:31:22.120> a<00:31:22.160> lot<00:31:22.480> I\num about Claude. Uh but it is a lot I\num about Claude. Uh but it is a lot I would<00:31:22.720> say<00:31:22.880> it's<00:31:23.000> a<00:31:23.040> lot<00:31:23.280> closer<00:31:23.640> to<00:31:23.800> a<00:31:23.880> little\nwould say it's a lot closer to a little\nwould say it's a lot closer to a little game<00:31:24.320> engine<00:31:24.640> than<00:31:25.120> than<00:31:25.440> maybe<00:31:25.680> Claude<00:31:25.960> Code\ngame engine than than maybe Claude Code\ngame engine than than maybe Claude Code is,<00:31:26.360> but\nis, but\nis, but but<00:31:28.240> anyways,\nbut anyways,\nbut anyways, um\num\num so<00:31:30.520> uh<00:31:30.640> I<00:31:30.680> guess<00:31:30.920> one<00:31:31.120> other<00:31:31.320> thing<00:31:31.520> that<00:31:31.640> I\nso uh I guess one other thing that I\nso uh I guess one other thing that I should<00:31:32.040> point<00:31:32.320> out<00:31:32.600> is<00:31:33.080> um<00:31:33.280> some<00:31:33.440> of<00:31:33.520> these\nshould point out is um some of these\nshould point out is um some of these things<00:31:33.880> which<00:31:34.000> I'm<00:31:34.120> sure<00:31:34.400> people<00:31:34.680> in<00:31:34.760> the<00:31:34.800> chat\nthings which I'm sure people in the chat\nthings which I'm sure people in the chat have<00:31:35.160> probably<00:31:35.560> already<00:31:35.720> spotted,<00:31:36.160> which<00:31:36.280> is\nhave probably already spotted, which is\nhave probably already spotted, which is like<00:31:36.640> these<00:31:37.160> uh\nlike these uh\nlike these uh these<00:31:39.000> like<00:31:39.280> in-source<00:31:39.960> annotations<00:31:40.800> of<00:31:41.080> Rad\nthese like in-source annotations of Rad\nthese like in-source annotations of Rad Debugger<00:31:41.840> info.<00:31:42.520> So,<00:31:42.640> you<00:31:42.720> can<00:31:42.840> see<00:31:43.040> right\nDebugger info. So, you can see right\nDebugger info. So, you can see right here<00:31:43.520> I'm<00:31:43.640> saying<00:31:43.880> Rad<00:31:44.080> DBG<00:31:44.440> entry<00:31:44.760> point<00:31:45.400> mule\nhere I'm saying Rad DBG entry point mule\nhere I'm saying Rad DBG entry point mule main.<00:31:46.440> Um<00:31:46.960> and<00:31:47.040> you<00:31:47.120> might<00:31:47.240> be<00:31:47.360> wondering\nmain. Um and you might be wondering\nmain. Um and you might be wondering like,\nlike,\nlike, \"What<00:31:48.800> is<00:31:48.920> that<00:31:49.040> about?\"<00:31:49.760> Well,<00:31:49.920> you<00:31:49.960> can<00:31:50.080> see\n\"What is that about?\" Well, you can see\n\"What is that about?\" Well, you can see like<00:31:50.440> when<00:31:50.560> I'm<00:31:50.680> not<00:31:50.920> debugging<00:31:51.280> this\nlike when I'm not debugging this\nlike when I'm not debugging this program,\nprogram,\nprogram, so<00:31:53.240> you<00:31:53.360> can<00:31:53.480> see<00:31:53.600> I'm<00:31:53.760> I'm<00:31:53.880> debugging<00:31:54.320> this\nso you can see I'm I'm debugging this\nso you can see I'm I'm debugging this mule<00:31:54.840> main.exe,\nmule main.exe,\nmule main.exe, and<00:31:57.160> um<00:31:57.680> if<00:31:57.800> I<00:31:57.880> step<00:31:58.160> into<00:31:58.400> it,<00:31:59.080> you'll<00:31:59.240> see\nand um if I step into it, you'll see\nand um if I step into it, you'll see that<00:31:59.680> my<00:31:59.880> thread<00:32:00.320> first<00:32:00.720> stops.<00:32:01.200> It<00:32:01.320> says,\nthat my thread first stops. It says,\nthat my thread first stops. It says, \"Stopped<00:32:01.840> at<00:32:01.920> entry<00:32:02.160> point.\"<00:32:02.440> And<00:32:02.520> you<00:32:02.560> might\n\"Stopped at entry point.\" And you might\n\"Stopped at entry point.\" And you might see,<00:32:02.920> \"Hey,<00:32:03.120> mule<00:32:03.360> main.\"<00:32:03.600> It's<00:32:03.720> like<00:32:03.880> weird\nsee, \"Hey, mule main.\" It's like weird\nsee, \"Hey, mule main.\" It's like weird cuz<00:32:04.560> when<00:32:04.680> I<00:32:04.760> learned<00:32:05.000> how<00:32:05.080> to<00:32:05.160> write<00:32:05.400> C,<00:32:05.720> it\ncuz when I learned how to write C, it\ncuz when I learned how to write C, it had<00:32:06.000> to<00:32:06.040> be<00:32:06.240> int<00:32:06.520> main\nhad to be int main\nhad to be int main uh<00:32:08.480> or,<00:32:08.880> you<00:32:08.960> know,<00:32:09.080> if<00:32:09.160> you're<00:32:09.240> on<00:32:09.360> Windows,\nuh or, you know, if you're on Windows,\nuh or, you know, if you're on Windows, it's<00:32:09.880> like<00:32:10.240> it's<00:32:10.440> like<00:32:10.640> WinMain,<00:32:11.240> it's<00:32:11.360> like\nit's like it's like WinMain, it's like\nit's like it's like WinMain, it's like the<00:32:11.560> WinMain<00:32:11.880> function.<00:32:12.480> And<00:32:12.640> sure<00:32:12.800> enough,\nthe WinMain function. And sure enough,\nthe WinMain function. And sure enough, it's<00:32:13.200> like,<00:32:13.360> \"Hey,<00:32:13.600> if<00:32:13.800> I<00:32:13.960> look<00:32:14.160> at<00:32:14.200> my<00:32:14.320> call\nit's like, \"Hey, if I look at my call\nit's like, \"Hey, if I look at my call stack,<00:32:14.880> I<00:32:14.960> see<00:32:15.280> I<00:32:15.360> have<00:32:15.640> WinMain<00:32:16.000> right<00:32:16.160> here.\"\nstack, I see I have WinMain right here.\"\nstack, I see I have WinMain right here.\" And<00:32:16.920> that<00:32:17.040> is<00:32:17.160> a<00:32:17.240> function.<00:32:17.600> Hey,<00:32:17.760> that's<00:32:17.960> even\nAnd that is a function. Hey, that's even\nAnd that is a function. Hey, that's even in<00:32:18.240> the<00:32:18.280> same<00:32:18.480> source<00:32:18.760> file.<00:32:19.000> So,<00:32:19.160> shouldn't\nin the same source file. So, shouldn't\nin the same source file. So, shouldn't in<00:32:20.200> most<00:32:20.440> debuggers<00:32:20.880> if<00:32:21.000> you<00:32:21.120> ran<00:32:21.400> this,<00:32:21.680> you\nin most debuggers if you ran this, you\nin most debuggers if you ran this, you would<00:32:21.880> end<00:32:22.160> you<00:32:22.360> your<00:32:22.520> thread<00:32:22.760> would<00:32:22.880> end<00:32:23.040> up\nwould end you your thread would end up\nwould end you your thread would end up here,<00:32:23.600> right?\nhere, right?\nhere, right? And<00:32:25.520> so,<00:32:25.720> that<00:32:26.320> little<00:32:26.760> Rad<00:32:26.960> DBG<00:32:27.280> entry<00:32:27.560> point\nAnd so, that little Rad DBG entry point\nAnd so, that little Rad DBG entry point thing<00:32:28.080> is<00:32:28.240> actually<00:32:28.560> sticking<00:32:29.000> something\nthing is actually sticking something\nthing is actually sticking something into<00:32:29.520> the<00:32:29.600> executable<00:32:30.480> that<00:32:30.640> the<00:32:30.720> debugger\ninto the executable that the debugger\ninto the executable that the debugger um<00:32:32.440> that<00:32:32.560> the<00:32:32.640> debugger<00:32:33.000> reads.<00:32:33.800> And<00:32:33.920> so,<00:32:34.040> the\num that the debugger reads. And so, the\num that the debugger reads. And so, the debugger<00:32:34.480> knows,<00:32:34.920> \"Hey,<00:32:35.640> for<00:32:35.800> this<00:32:36.000> program,\ndebugger knows, \"Hey, for this program,\ndebugger knows, \"Hey, for this program, the<00:32:36.640> entry<00:32:36.840> point<00:32:37.120> symbol<00:32:37.480> is<00:32:37.640> not<00:32:37.840> just\nthe entry point symbol is not just\nthe entry point symbol is not just WinMain,<00:32:38.800> it's<00:32:38.960> actually<00:32:39.280> mule<00:32:39.560> main.<00:32:40.160> So,\nWinMain, it's actually mule main. So,\nWinMain, it's actually mule main. So, this<00:32:40.560> it<00:32:40.680> sticks<00:32:40.960> this<00:32:41.120> thing<00:32:41.360> into<00:32:41.640> the\nthis it sticks this thing into the\nthis it sticks this thing into the actual<00:32:42.080> executable.<00:32:42.920> In<00:32:43.000> fact,<00:32:43.280> I<00:32:43.320> wonder<00:32:43.600> if\nactual executable. In fact, I wonder if\nactual executable. In fact, I wonder if I<00:32:43.800> can<00:32:43.920> even<00:32:44.120> show<00:32:45.040> like<00:32:45.200> let's<00:32:45.400> do\nI can even show like let's do\nI can even show like let's do radbg<00:32:47.400> markup<00:32:48.040> to<00:32:48.200> I<00:32:48.240> don't<00:32:48.400> have<00:32:48.680> it.\nradbg markup to I don't have it.\nradbg markup to I don't have it. Uh<00:32:49.960> markup.h,<00:32:50.680> yeah.\nUh markup.h, yeah.\nUh markup.h, yeah. If<00:32:51.880> we<00:32:52.080> look<00:32:52.440> at<00:32:52.600> like<00:32:52.840> what<00:32:53.000> this<00:32:53.160> thing<00:32:53.320> would\nIf we look at like what this thing would\nIf we look at like what this thing would actually<00:32:53.720> be<00:32:53.920> like<00:32:54.280> uh<00:32:54.800> entry<00:32:55.120> point,\nactually be like uh entry point,\nactually be like uh entry point, you<00:32:56.800> can<00:32:56.920> see<00:32:57.080> what<00:32:57.280> this<00:32:57.440> macro<00:32:57.800> actually\nyou can see what this macro actually\nyou can see what this macro actually does<00:32:58.520> is<00:32:58.840> it<00:32:59.000> says<00:32:59.240> radbg<00:33:00.160> exec<00:33:00.520> data,<00:33:00.800> which<00:33:00.960> I\ndoes is it says radbg exec data, which I\ndoes is it says radbg exec data, which I can<00:33:01.120> explain<00:33:01.400> what<00:33:01.480> that<00:33:01.720> is.<00:33:02.240> And<00:33:02.360> then<00:33:02.440> it's\ncan explain what that is. And then it's\ncan explain what that is. And then it's a<00:33:02.640> character<00:33:03.720> a<00:33:03.800> character<00:33:04.240> array,<00:33:04.520> so\na character a character array, so\na character a character array, so generates<00:33:05.360> uh<00:33:05.720> a<00:33:05.800> name<00:33:06.120> here<00:33:06.640> using<00:33:06.920> this\ngenerates uh a name here using this\ngenerates uh a name here using this thing,<00:33:07.240> but<00:33:07.360> it's<00:33:07.440> a<00:33:07.520> character<00:33:07.920> array,<00:33:08.800> has\nthing, but it's a character array, has\nthing, but it's a character array, has some<00:33:09.200> ID,<00:33:09.960> and<00:33:10.080> then<00:33:10.200> it<00:33:10.320> sticks<00:33:10.640> in<00:33:11.360> entry\nsome ID, and then it sticks in entry\nsome ID, and then it sticks in entry point<00:33:12.000> colon<00:33:12.400> and<00:33:12.480> then<00:33:12.640> whatever<00:33:12.880> the\npoint colon and then whatever the\npoint colon and then whatever the arguments<00:33:13.400> were<00:33:13.840> as<00:33:14.040> a<00:33:14.080> string<00:33:14.360> literal.\narguments were as a string literal.\narguments were as a string literal. Uh<00:33:15.960> so,<00:33:16.680> that<00:33:16.920> actually<00:33:17.160> gets<00:33:17.320> baked<00:33:17.560> into\nUh so, that actually gets baked into\nUh so, that actually gets baked into this<00:33:18.320> radbg<00:33:18.840> exec<00:33:19.200> data<00:33:19.520> thing.<00:33:20.440> That\nthis radbg exec data thing. That\nthis radbg exec data thing. That actually<00:33:21.320> tells<00:33:22.160> this<00:33:22.640> uh<00:33:22.720> tells<00:33:22.920> the<00:33:23.000> C\nactually tells this uh tells the C\nactually tells this uh tells the C compiler<00:33:23.480> to<00:33:23.600> stick<00:33:23.800> this<00:33:23.960> into<00:33:24.200> a<00:33:24.240> custom\ncompiler to stick this into a custom\ncompiler to stick this into a custom expression.\nexpression.\nexpression. Uh<00:33:26.200> or<00:33:26.320> sorry,<00:33:26.560> not<00:33:26.760> not<00:33:26.880> expression,<00:33:27.400> a\nUh or sorry, not not expression, a\nUh or sorry, not not expression, a custom<00:33:27.800> section.<00:33:28.920> And<00:33:29.560> uh<00:33:29.760> we<00:33:29.880> can<00:33:30.000> see<00:33:30.480> that\ncustom section. And uh we can see that\ncustom section. And uh we can see that uh\nuh\nuh radbg<00:33:32.520> exec<00:33:32.920> data<00:33:33.560> is<00:33:33.720> right<00:33:33.880> here<00:33:34.040> specified\nradbg exec data is right here specified\nradbg exec data is right here specified as<00:33:35.000> we<00:33:35.080> have<00:33:35.840> uh<00:33:35.920> we<00:33:36.080> tell<00:33:36.400> basically<00:33:36.720> the\nas we have uh we tell basically the\nas we have uh we tell basically the compiler,<00:33:37.160> \"Hey,<00:33:37.280> I<00:33:37.320> need<00:33:37.480> a<00:33:37.520> section\ncompiler, \"Hey, I need a section\ncompiler, \"Hey, I need a section uh<00:33:39.000> .radbg<00:33:39.800> needs<00:33:40.000> to<00:33:40.080> be<00:33:40.200> readable<00:33:40.520> and\nuh .radbg needs to be readable and\nuh .radbg needs to be readable and writable.\"<00:33:41.440> And<00:33:41.560> then<00:33:42.120> radbg<00:33:42.560> exec<00:33:43.080> data<00:33:43.520> is\nwritable.\" And then radbg exec data is\nwritable.\" And then radbg exec data is just<00:33:43.840> a<00:33:43.880> declspec.<00:33:44.840> This<00:33:45.040> is<00:33:45.160> for<00:33:45.560> MSVC<00:33:45.960> and\njust a declspec. This is for MSVC and\njust a declspec. This is for MSVC and Clang<00:33:46.320> on<00:33:46.440> Windows,<00:33:46.840> but<00:33:46.960> you<00:33:47.040> can<00:33:47.120> do\nClang on Windows, but you can do\nClang on Windows, but you can do equivalent<00:33:47.640> things<00:33:47.880> on<00:33:48.200> on<00:33:48.480> the<00:33:48.560> other\nequivalent things on on the other\nequivalent things on on the other compilers.<00:33:49.640> Hey,<00:33:49.800> declspec,<00:33:50.360> make<00:33:50.520> sure<00:33:50.760> when\ncompilers. Hey, declspec, make sure when\ncompilers. Hey, declspec, make sure when you<00:33:51.000> allocate<00:33:51.360> this<00:33:51.480> global<00:33:51.720> variable<00:33:52.240> that\nyou allocate this global variable that\nyou allocate this global variable that you<00:33:52.480> put<00:33:52.640> it<00:33:52.760> inside<00:33:53.120> of<00:33:53.200> the<00:33:53.280> .radbg<00:33:54.000> section.\nyou put it inside of the .radbg section.\nyou put it inside of the .radbg section. That's<00:33:54.520> all<00:33:54.640> that<00:33:54.880> radbg<00:33:55.320> exec<00:33:55.680> data<00:33:55.960> is,<00:33:56.320> so\nThat's all that radbg exec data is, so\nThat's all that radbg exec data is, so it<00:33:56.600> sticks<00:33:56.880> that<00:33:57.120> info<00:33:57.560> into<00:33:57.800> the<00:33:57.880> executable.\nit sticks that info into the executable.\nit sticks that info into the executable. And<00:33:59.000> as<00:33:59.080> a<00:33:59.120> consequence,\nAnd as a consequence,\nAnd as a consequence, uh<00:34:00.840> the<00:34:00.920> debugger,<00:34:01.360> when<00:34:01.480> it<00:34:01.600> loads<00:34:01.800> your\nuh the debugger, when it loads your\nuh the debugger, when it loads your program,<00:34:02.240> can<00:34:02.400> know,<00:34:02.920> \"Hey,<00:34:03.200> the<00:34:03.280> entry<00:34:03.520> point\nprogram, can know, \"Hey, the entry point\nprogram, can know, \"Hey, the entry point is<00:34:03.800> actually<00:34:04.080> here.\"\nis actually here.\"\nis actually here.\" Um\nUm\nUm So,<00:34:06.960> there's<00:34:07.160> other<00:34:07.480> kinds<00:34:07.760> of<00:34:08.159> interop<00:34:08.639> that\nSo, there's other kinds of interop that\nSo, there's other kinds of interop that your<00:34:08.919> program<00:34:09.240> can<00:34:09.360> do<00:34:09.520> with<00:34:09.679> the<00:34:09.720> debugger.\nyour program can do with the debugger.\nyour program can do with the debugger. You<00:34:10.120> can<00:34:10.240> see<00:34:10.399> a<00:34:10.440> few<00:34:10.639> of<00:34:10.720> them<00:34:10.879> right<00:34:11.080> here.<00:34:11.960> Um\nYou can see a few of them right here. Um\nYou can see a few of them right here. Um so,<00:34:12.240> by<00:34:12.399> default,<00:34:12.840> your<00:34:12.960> threads<00:34:13.240> will<00:34:13.320> just\nso, by default, your threads will just\nso, by default, your threads will just be<00:34:13.560> colored<00:34:13.840> with<00:34:13.960> this<00:34:14.080> like<00:34:14.240> little<00:34:14.440> yellow\nbe colored with this like little yellow\nbe colored with this like little yellow color.<00:34:15.600> Um\ncolor. Um\ncolor. Um but<00:34:16.440> if<00:34:16.560> I<00:34:16.639> want<00:34:16.800> to<00:34:16.879> And<00:34:17.120> also,<00:34:17.480> it'll<00:34:17.679> just\nbut if I want to And also, it'll just\nbut if I want to And also, it'll just the<00:34:18.440> debugger<00:34:18.760> assumes<00:34:19.120> this<00:34:19.240> thing<00:34:19.399> is<00:34:19.520> the\nthe debugger assumes this thing is the\nthe debugger assumes this thing is the main<00:34:19.840> thread<00:34:20.159> cuz<00:34:20.320> it<00:34:20.480> I<00:34:20.560> mean,<00:34:20.720> it<00:34:20.800> is<00:34:20.919> the\nmain thread cuz it I mean, it is the\nmain thread cuz it I mean, it is the main<00:34:21.159> thread,<00:34:21.399> but<00:34:21.520> it'll<00:34:21.679> just<00:34:21.919> name<00:34:22.159> it<00:34:22.360> main\nmain thread, but it'll just name it main\nmain thread, but it'll just name it main thread.<00:34:23.320> But<00:34:23.399> if<00:34:23.480> you<00:34:23.560> wanted<00:34:23.760> to<00:34:23.840> have<00:34:23.919> a\nthread. But if you wanted to have a\nthread. But if you wanted to have a custom<00:34:24.280> name,<00:34:24.480> you<00:34:24.520> could<00:34:24.639> say,<00:34:24.800> \"Hey,<00:34:25.399> uh\ncustom name, you could say, \"Hey, uh\ncustom name, you could say, \"Hey, uh radbg<00:34:25.960> thread<00:34:26.240> name.\"\nradbg thread name.\"\nradbg thread name.\" Um<00:34:27.679> right<00:34:27.879> there,<00:34:28.080> and<00:34:28.320> and<00:34:28.560> that's<00:34:28.720> going<00:34:28.840> to\nUm right there, and and that's going to\nUm right there, and and that's going to be<00:34:29.000> mule<00:34:29.280> main<00:34:29.520> thread,<00:34:29.800> and<00:34:29.879> that<00:34:30.040> shows<00:34:30.280> up\nbe mule main thread, and that shows up\nbe mule main thread, and that shows up here.<00:34:30.960> And<00:34:31.080> then<00:34:31.159> if<00:34:31.280> I<00:34:31.360> want<00:34:31.560> to<00:34:31.679> color<00:34:32.000> this\nhere. And then if I want to color this\nhere. And then if I want to color this thread<00:34:32.399> a<00:34:32.440> specific<00:34:32.879> way,<00:34:33.120> I<00:34:33.200> can<00:34:33.480> I<00:34:33.560> can<00:34:33.720> do\nthread a specific way, I can I can do\nthread a specific way, I can I can do that<00:34:34.159> also<00:34:34.879> with<00:34:35.040> this<00:34:35.200> markup<00:34:35.560> stuff.<00:34:36.320> And<00:34:36.440> so\nthat also with this markup stuff. And so\nthat also with this markup stuff. And so when<00:34:36.800> I<00:34:36.840> step<00:34:37.080> over<00:34:37.200> that,<00:34:37.440> it'll<00:34:37.840> color<00:34:38.120> my\nwhen I step over that, it'll color my\nwhen I step over that, it'll color my thread.\nthread.\nthread. Um\nUm\nUm And<00:34:41.720> then<00:34:42.480> there's<00:34:42.679> other<00:34:42.840> stuff,<00:34:43.040> too.<00:34:43.280> So\nAnd then there's other stuff, too. So\nAnd then there's other stuff, too. So >> [clears throat]\n>> [clears throat]\n>> [clears throat] >> um\n>> [snorts]\n>> [snorts]\n>> [snorts] >> For<00:34:47.760> example,<00:34:48.560> if<00:34:48.720> I<00:34:48.800> go<00:34:48.960> down<00:34:49.560> to\n>> For example, if I go down to\n>> For example, if I go down to uh\nuh\nuh Let<00:34:51.760> me<00:34:51.879> look<00:34:52.120> at\nLet me look at\nLet me look at where<00:34:53.760> what<00:34:53.960> example<00:34:54.360> am<00:34:54.440> I<00:34:54.480> looking<00:34:54.760> for?<00:34:55.360> Uh\nwhere what example am I looking for? Uh\nwhere what example am I looking for? Uh dynamic<00:34:56.000> array.\ndynamic array.\ndynamic array. So<00:34:57.320> dynamic<00:34:57.840> array,<00:34:58.160> if<00:34:58.320> we<00:34:58.440> look<00:34:58.680> at<00:34:58.840> what\nSo dynamic array, if we look at what\nSo dynamic array, if we look at what this<00:34:59.440> type<00:34:59.760> is,<00:35:00.000> this<00:35:00.160> is<00:35:00.280> a<00:35:00.320> structure.\nthis type is, this is a structure.\nthis type is, this is a structure. Right?<00:35:01.880> And<00:35:02.000> this<00:35:02.120> structure<00:35:02.480> has<00:35:02.640> a<00:35:02.720> pointer\nRight? And this structure has a pointer\nRight? And this structure has a pointer to<00:35:04.480> a<00:35:04.560> pair\nto a pair\nto a pair and<00:35:05.800> it<00:35:05.880> has<00:35:06.040> a<00:35:06.080> count.\nand it has a count.\nand it has a count. So<00:35:07.240> like<00:35:07.920> usual<00:35:08.280> C<00:35:08.400> programs,<00:35:09.160> you<00:35:09.240> know,<00:35:09.360> if\nSo like usual C programs, you know, if\nSo like usual C programs, you know, if you<00:35:09.680> if<00:35:09.840> you<00:35:09.920> want<00:35:10.040> to<00:35:10.120> have<00:35:10.200> a<00:35:10.240> slice<00:35:10.640> type,\nyou if you want to have a slice type,\nyou if you want to have a slice type, you<00:35:11.000> need<00:35:11.120> a<00:35:11.200> pointer<00:35:11.520> and<00:35:11.600> a<00:35:11.640> size<00:35:12.080> or<00:35:12.400> you\nyou need a pointer and a size or you\nyou need a pointer and a size or you know,<00:35:12.560> two<00:35:12.760> pointers<00:35:13.160> that<00:35:13.280> form<00:35:13.520> a<00:35:13.840> that<00:35:13.960> form\nknow, two pointers that form a that form\nknow, two pointers that form a that form a<00:35:14.200> range<00:35:14.520> in<00:35:14.640> memory<00:35:14.920> or<00:35:15.000> whatever.\na range in memory or whatever.\na range in memory or whatever. Um<00:35:16.800> and<00:35:16.880> this<00:35:17.040> is<00:35:17.120> just<00:35:17.440> how<00:35:17.680> you<00:35:17.840> encode<00:35:18.200> a\nUm and this is just how you encode a\nUm and this is just how you encode a dynamic<00:35:18.720> array<00:35:19.160> inside<00:35:19.600> of<00:35:19.760> like<00:35:19.960> the<00:35:20.080> regular\ndynamic array inside of like the regular\ndynamic array inside of like the regular kind<00:35:21.160> of<00:35:21.600> uh<00:35:21.720> bare-bones<00:35:22.520> C<00:35:23.120> type<00:35:23.320> system.\nkind of uh bare-bones C type system.\nkind of uh bare-bones C type system. And<00:35:24.640> then<00:35:24.760> generally<00:35:25.160> if<00:35:25.280> you<00:35:25.560> visualize<00:35:26.000> this\nAnd then generally if you visualize this\nAnd then generally if you visualize this in<00:35:26.280> a<00:35:26.320> debugger,<00:35:27.120> what<00:35:27.280> you'll<00:35:27.400> see<00:35:28.280> is<00:35:28.960> um\nin a debugger, what you'll see is um\nin a debugger, what you'll see is um I'll<00:35:30.160> have<00:35:30.280> to<00:35:30.360> use<00:35:30.520> this<00:35:30.720> raw<00:35:30.960> thing,<00:35:31.720> this\nI'll have to use this raw thing, this\nI'll have to use this raw thing, this raw<00:35:32.520> view,<00:35:32.800> which<00:35:32.960> basically<00:35:33.200> turns<00:35:33.480> off<00:35:33.680> all\nraw view, which basically turns off all\nraw view, which basically turns off all the<00:35:33.880> special<00:35:34.160> views,<00:35:34.680> which<00:35:34.840> I'll<00:35:35.040> get<00:35:35.200> to<00:35:35.320> in\nthe special views, which I'll get to in\nthe special views, which I'll get to in a<00:35:35.440> second.<00:35:35.760> But<00:35:36.200> this<00:35:36.360> is<00:35:36.480> what<00:35:36.600> you<00:35:36.680> would\na second. But this is what you would\na second. But this is what you would normally<00:35:37.160> see<00:35:37.400> when<00:35:37.560> you<00:35:37.680> visualize<00:35:38.120> this\nnormally see when you visualize this\nnormally see when you visualize this thing<00:35:38.400> in<00:35:38.480> a<00:35:38.520> debugger.<00:35:38.920> It's<00:35:39.040> like,<00:35:39.200> \"Hey,\nthing in a debugger. It's like, \"Hey,\nthing in a debugger. It's like, \"Hey, it's<00:35:39.600> a<00:35:39.640> struct<00:35:40.040> with<00:35:40.160> two<00:35:40.320> members.<00:35:40.680> One's<00:35:40.880> a\nit's a struct with two members. One's a\nit's a struct with two members. One's a pointer<00:35:41.360> to<00:35:41.960> some<00:35:42.240> number<00:35:42.560> of<00:35:42.680> pairs<00:35:42.960> we<00:35:43.040> don't\npointer to some number of pairs we don't\npointer to some number of pairs we don't know,<00:35:43.480> but<00:35:43.840> we<00:35:43.960> can<00:35:44.080> only<00:35:44.240> assume<00:35:44.600> one<00:35:44.920> really\nknow, but we can only assume one really\nknow, but we can only assume one really in<00:35:45.880> general.\"<00:35:46.880> And<00:35:46.920> then<00:35:47.040> this<00:35:47.200> integer\nin general.\" And then this integer\nin general.\" And then this integer called<00:35:47.920> count<00:35:48.320> with<00:35:48.880> with<00:35:49.120> a<00:35:49.240> size<00:35:50.000> or<00:35:50.440> with<00:35:50.600> a\ncalled count with with a size or with a\ncalled count with with a size or with a value<00:35:50.920> of<00:35:51.040> six.\nvalue of six.\nvalue of six. Um<00:35:52.360> but<00:35:52.520> obviously<00:35:53.000> what<00:35:53.120> this<00:35:53.280> is<00:35:53.400> encoding\nUm but obviously what this is encoding\nUm but obviously what this is encoding um<00:35:55.000> and<00:35:55.280> what<00:35:55.480> the<00:35:55.640> name<00:35:55.880> should<00:35:56.040> imply<00:35:56.360> is\num and what the name should imply is\num and what the name should imply is that,<00:35:56.600> \"Hey,<00:35:56.840> this<00:35:57.040> is<00:35:57.240> six<00:35:57.680> of<00:35:57.840> these<00:35:58.040> pairs\nthat, \"Hey, this is six of these pairs\nthat, \"Hey, this is six of these pairs that<00:35:58.840> we're<00:35:58.920> pointing<00:35:59.320> to.\"\nthat we're pointing to.\"\nthat we're pointing to.\" And<00:36:01.520> so<00:36:01.640> what<00:36:01.760> we<00:36:01.840> can<00:36:01.960> actually<00:36:02.240> do<00:36:02.680> is<00:36:03.160> um\nAnd so what we can actually do is um\nAnd so what we can actually do is um uh<00:36:04.320> if<00:36:04.440> we<00:36:04.560> go\nlook<00:36:08.080> at<00:36:08.200> more<00:36:08.400> of<00:36:08.480> the<00:36:08.560> markup<00:36:08.920> in<00:36:09.000> this<00:36:09.440> in\nlook at more of the markup in this in\nlook at more of the markup in this in this<00:36:10.080> um<00:36:10.400> file,<00:36:10.760> we<00:36:10.840> can<00:36:10.960> see,<00:36:11.560> \"Hey,<00:36:11.680> here's\nthis um file, we can see, \"Hey, here's\nthis um file, we can see, \"Hey, here's my<00:36:12.040> structure.<00:36:13.080> Uh<00:36:13.200> it's<00:36:13.360> dynamic<00:36:13.760> array,\nmy structure. Uh it's dynamic array,\nmy structure. Uh it's dynamic array, pair<00:36:14.480> pointer,<00:36:15.280> and<00:36:15.560> int.\"\npair pointer, and int.\"\npair pointer, and int.\" And<00:36:18.000> right<00:36:18.200> here<00:36:18.440> I<00:36:18.480> just<00:36:18.680> say,<00:36:18.840> \"Hey,<00:36:19.600> I<00:36:19.720> want\nAnd right here I just say, \"Hey, I want\nAnd right here I just say, \"Hey, I want to<00:36:20.000> form<00:36:20.280> a<00:36:20.320> special<00:36:20.680> kind<00:36:20.840> of<00:36:20.920> view<00:36:21.240> that's\nto form a special kind of view that's\nto form a special kind of view that's associated<00:36:22.160> with<00:36:22.280> this<00:36:22.480> type\nassociated with this type\nassociated with this type uh<00:36:23.520> for<00:36:24.000> for<00:36:24.160> the<00:36:24.280> Render<00:36:24.480> Debugger.\"<00:36:24.720> So<00:36:24.840> it's\nuh for for the Render Debugger.\" So it's\nuh for for the Render Debugger.\" So it's a<00:36:24.960> Render<00:36:25.160> Debugger<00:36:25.400> type<00:36:25.640> view.<00:36:26.360> I<00:36:26.480> put<00:36:26.680> in\na Render Debugger type view. I put in\na Render Debugger type view. I put in the<00:36:26.840> name<00:36:27.040> of<00:36:27.120> the<00:36:27.200> type,<00:36:27.720> and<00:36:27.800> then<00:36:27.920> I<00:36:28.000> put<00:36:28.280> in\nthe name of the type, and then I put in\nthe name of the type, and then I put in the<00:36:29.240> expression<00:36:29.880> that<00:36:30.000> I'd<00:36:30.120> like<00:36:30.320> to\nthe expression that I'd like to\nthe expression that I'd like to visualize<00:36:31.520> instances<00:36:32.040> of<00:36:32.120> this<00:36:32.280> type<00:36:32.520> as.<00:36:33.320> So,\nvisualize instances of this type as. So,\nvisualize instances of this type as. So, in<00:36:33.480> this<00:36:33.640> case,<00:36:33.920> and<00:36:34.120> this<00:36:34.280> dollar<00:36:34.560> sign<00:36:35.080> is\nin this case, and this dollar sign is\nin this case, and this dollar sign is just<00:36:35.480> used<00:36:35.880> to<00:36:36.120> refer<00:36:36.520> to\njust used to refer to\njust used to refer to um<00:36:37.720> whatever's<00:36:38.080> being<00:36:38.280> evaluated.<00:36:39.280> So,<00:36:39.600> any\num whatever's being evaluated. So, any\num whatever's being evaluated. So, any whatever<00:36:40.880> expression<00:36:41.280> it<00:36:41.360> evaluates<00:36:41.800> to<00:36:41.920> this\nwhatever expression it evaluates to this\nwhatever expression it evaluates to this type,<00:36:42.520> that's<00:36:42.720> what<00:36:42.880> this<00:36:43.040> dollar<00:36:43.320> sign\ntype, that's what this dollar sign\ntype, that's what this dollar sign represents.<00:36:44.360> And<00:36:44.520> the<00:36:44.640> only<00:36:44.840> thing<00:36:44.960> I'm<00:36:45.080> going\nrepresents. And the only thing I'm going\nrepresents. And the only thing I'm going to<00:36:45.280> do<00:36:45.560> when<00:36:45.720> we're<00:36:45.840> evaluating<00:36:46.400> this<00:36:46.560> kind<00:36:46.760> of\nto do when we're evaluating this kind of\nto do when we're evaluating this kind of thing<00:36:47.400> is<00:36:47.480> I'm<00:36:47.560> just<00:36:47.680> going<00:36:47.800> to<00:36:47.880> wrap<00:36:48.120> it<00:36:48.200> in\nthing is I'm just going to wrap it in\nthing is I'm just going to wrap it in this<00:36:48.440> view<00:36:49.040> called<00:36:49.320> slice.\nthis view called slice.\nthis view called slice. And<00:36:51.400> so,<00:36:51.520> what<00:36:51.680> we<00:36:51.840> do\nAnd so, what we do\nAnd so, what we do uh<00:36:53.320> what<00:36:53.440> we<00:36:53.560> see<00:36:53.800> when<00:36:53.960> we<00:36:54.080> actually<00:36:54.640> like\nuh what we see when we actually like\nuh what we see when we actually like plug<00:36:55.120> that<00:36:55.320> in<00:36:55.520> and<00:36:55.680> evaluate<00:36:56.080> just<00:36:56.320> dynamic,\nplug that in and evaluate just dynamic,\nplug that in and evaluate just dynamic, we<00:36:57.000> see<00:36:57.200> that<00:36:57.360> the<00:36:57.480> evaluation<00:36:58.000> type<00:36:58.160> is\nwe see that the evaluation type is\nwe see that the evaluation type is actually<00:36:58.560> slice<00:36:59.480> the<00:36:59.600> slice<00:36:59.960> view<00:37:00.760> applied<00:37:01.200> to\nactually slice the slice view applied to\nactually slice the slice view applied to a<00:37:01.840> dynamic<00:37:02.280> array<00:37:02.440> type.\na dynamic array type.\na dynamic array type. And<00:37:03.960> that<00:37:04.160> will<00:37:04.320> actually<00:37:04.640> expand<00:37:05.280> with<00:37:05.480> the\nAnd that will actually expand with the\nAnd that will actually expand with the exact<00:37:05.960> number<00:37:06.200> of<00:37:06.320> things<00:37:06.560> that<00:37:06.680> I<00:37:06.720> actually\nexact number of things that I actually\nexact number of things that I actually expect.<00:37:07.440> So,<00:37:07.560> this<00:37:07.760> is<00:37:07.880> like<00:37:08.080> just<00:37:08.800> hit\nexpect. So, this is like just hit\nexpect. So, this is like just hit saying,<00:37:09.200> \"Hey,<00:37:09.360> here's<00:37:09.600> a<00:37:09.640> structure.<00:37:10.000> It's\nsaying, \"Hey, here's a structure. It's\nsaying, \"Hey, here's a structure. It's got<00:37:10.200> a<00:37:10.240> pointer<00:37:10.520> and<00:37:10.600> a<00:37:10.640> count.<00:37:11.600> You<00:37:11.760> know<00:37:11.880> what\ngot a pointer and a count. You know what\ngot a pointer and a count. You know what to<00:37:12.080> do<00:37:12.200> with<00:37:12.360> this<00:37:13.080> if<00:37:13.280> I<00:37:13.360> tell<00:37:13.600> you<00:37:13.680> that<00:37:13.840> it's\nto do with this if I tell you that it's\nto do with this if I tell you that it's a<00:37:14.000> slice.\"<00:37:14.560> So,<00:37:15.000> the<00:37:15.120> debugger<00:37:15.440> does<00:37:15.680> know<00:37:15.800> how\na slice.\" So, the debugger does know how\na slice.\" So, the debugger does know how to<00:37:16.000> do<00:37:16.120> it<00:37:16.520> do<00:37:16.680> with<00:37:16.800> it,<00:37:16.960> and<00:37:17.040> then<00:37:17.160> this<00:37:17.280> write\nto do it do with it, and then this write\nto do it do with it, and then this write a<00:37:17.480> view<00:37:17.600> type<00:37:17.920> view<00:37:18.080> is<00:37:18.160> just<00:37:18.360> saying,\na view type view is just saying,\na view type view is just saying, \"If<00:37:19.600> you<00:37:19.720> have<00:37:19.960> this<00:37:20.120> type,<00:37:20.600> just<00:37:20.840> do<00:37:20.960> that\n\"If you have this type, just do that\n\"If you have this type, just do that automatically<00:37:21.680> for<00:37:21.880> me.\"<00:37:22.000> So,<00:37:22.080> you<00:37:22.120> don't\nautomatically for me.\" So, you don't\nautomatically for me.\" So, you don't have<00:37:22.400> to<00:37:22.480> do<00:37:23.080> slice\nhave to do slice\nhave to do slice at<00:37:24.840> uh<00:37:24.920> all<00:37:25.000> dynamic<00:37:25.640> every<00:37:25.800> single<00:37:26.040> time<00:37:26.240> you\nat uh all dynamic every single time you\nat uh all dynamic every single time you want<00:37:26.440> to<00:37:26.480> evaluate<00:37:26.880> something.\nwant to evaluate something.\nwant to evaluate something. Um\nUm\nUm And<00:37:29.600> you<00:37:29.640> can<00:37:29.760> see<00:37:29.960> you<00:37:30.080> do<00:37:30.200> it<00:37:30.240> with<00:37:30.360> templates\nAnd you can see you do it with templates\nAnd you can see you do it with templates as<00:37:30.880> well.<00:37:31.080> Like<00:37:31.280> I<00:37:31.320> have<00:37:31.400> a<00:37:31.440> templated<00:37:31.880> dynamic\nas well. Like I have a templated dynamic\nas well. Like I have a templated dynamic array.<00:37:33.120> Um<00:37:33.880> and<00:37:34.240> here<00:37:34.520> I<00:37:34.560> actually<00:37:34.800> put<00:37:34.960> in<00:37:35.040> the\narray. Um and here I actually put in the\narray. Um and here I actually put in the count.<00:37:35.720> So,<00:37:35.880> if<00:37:36.000> we<00:37:36.120> look<00:37:36.360> at<00:37:36.680> uh<00:37:37.000> let<00:37:37.080> me<00:37:37.200> look\ncount. So, if we look at uh let me look\ncount. So, if we look at uh let me look at<00:37:37.560> where<00:37:37.720> this<00:37:37.880> is<00:37:38.000> used.\nat where this is used.\nat where this is used. Uh<00:37:39.880> templated<00:37:40.280> dynamic,<00:37:40.800> so<00:37:40.920> we'll<00:37:41.040> do\nUh templated dynamic, so we'll do\nUh templated dynamic, so we'll do templated\ntemplated\ntemplated dynamic<00:37:44.120> here.\ndynamic here.\ndynamic here. And<00:37:45.960> we<00:37:46.040> can<00:37:46.160> see<00:37:46.320> we<00:37:46.440> get<00:37:47.160> uh<00:37:47.400> the<00:37:47.520> count\nAnd we can see we get uh the count\nAnd we can see we get uh the count visualized<00:37:48.360> here<00:37:48.520> and<00:37:48.600> then<00:37:48.800> array<00:37:49.360> of<00:37:49.600> the\nvisualized here and then array of the\nvisualized here and then array of the base<00:37:49.920> pointer<00:37:50.320> with<00:37:50.520> the<00:37:50.600> count\nbase pointer with the count\nbase pointer with the count right<00:37:52.360> here.\nright here.\nright here. Um\nUm\nUm And<00:37:55.000> that<00:37:55.120> actually<00:37:55.360> applies<00:37:55.640> for\nAnd that actually applies for\nAnd that actually applies for everything.<00:37:56.120> So,<00:37:56.360> if<00:37:56.560> I<00:37:56.600> go<00:37:56.720> back<00:37:56.920> to<00:37:57.000> that\neverything. So, if I go back to that\neverything. So, if I go back to that fancy<00:37:57.520> visualizer,\nfancy visualizer,\nfancy visualizer, uh\nuh\nuh eval<00:38:00.320> test,<00:38:01.080> um\neval test, um\neval test, um if<00:38:02.280> I<00:38:02.320> go<00:38:02.440> down<00:38:02.640> to<00:38:02.720> this<00:38:02.880> bitmap<00:38:03.280> type,\nif I go down to this bitmap type,\nif I go down to this bitmap type, you'll<00:38:05.120> see<00:38:05.280> that<00:38:05.600> it's<00:38:05.800> just<00:38:06.240> uh<00:38:06.640> this<00:38:06.840> is<00:38:06.960> a\nyou'll see that it's just uh this is a\nyou'll see that it's just uh this is a structure,<00:38:08.040> this<00:38:08.200> bitmap,<00:38:08.640> which<00:38:08.840> has<00:38:08.960> a<00:38:09.040> base\nstructure, this bitmap, which has a base\nstructure, this bitmap, which has a base pointer<00:38:09.600> and<00:38:09.720> a<00:38:09.760> width<00:38:09.960> and<00:38:10.040> a<00:38:10.080> height.<00:38:10.800> And\npointer and a width and a height. And\npointer and a width and a height. And there's<00:38:11.120> just<00:38:11.280> a<00:38:11.360> rule<00:38:11.600> somewhere<00:38:12.360> that<00:38:12.600> says\nthere's just a rule somewhere that says\nthere's just a rule somewhere that says um\num\num \"Hey,<00:38:15.640> if<00:38:15.800> you<00:38:15.920> have<00:38:16.080> a<00:38:16.120> type<00:38:16.560> if<00:38:16.680> you<00:38:16.760> have<00:38:16.840> an\n\"Hey, if you have a type if you have an\n\"Hey, if you have a type if you have an instance<00:38:17.240> of<00:38:17.320> type<00:38:17.520> bitmap,<00:38:18.440> visualize<00:38:18.920> this\ninstance of type bitmap, visualize this\ninstance of type bitmap, visualize this with<00:38:19.800> the<00:38:19.880> bitmap<00:38:20.240> view<00:38:20.920> applied<00:38:21.720> uh<00:38:21.800> the<00:38:21.840> base\nwith the bitmap view applied uh the base\nwith the bitmap view applied uh the base pointer<00:38:22.800> to<00:38:22.920> the<00:38:23.040> pixels<00:38:23.400> being<00:38:23.600> the<00:38:23.680> base<00:38:24.240> the\npointer to the pixels being the base the\npointer to the pixels being the base the base<00:38:24.520> member<00:38:24.880> and<00:38:25.000> then<00:38:25.120> the<00:38:25.240> width<00:38:25.400> and\nbase member and then the width and\nbase member and then the width and height<00:38:25.720> being<00:38:25.880> the<00:38:25.960> dimensions,<00:38:26.440> right?\nheight being the dimensions, right?\nheight being the dimensions, right? That's<00:38:26.800> all<00:38:27.520> That's<00:38:27.720> the<00:38:27.800> only<00:38:28.000> thing<00:38:28.200> that's\nThat's all That's the only thing that's\nThat's all That's the only thing that's in<00:38:28.520> there<00:38:28.920> and<00:38:29.320> and<00:38:29.800> that<00:38:29.920> gets<00:38:30.080> baked<00:38:30.320> into\nin there and and that gets baked into\nin there and and that gets baked into the<00:38:30.560> executable,<00:38:31.040> so<00:38:31.160> the<00:38:31.240> debugger<00:38:31.560> plugs<00:38:31.840> it\nthe executable, so the debugger plugs it\nthe executable, so the debugger plugs it into<00:38:32.160> its<00:38:32.600> evaluation<00:38:33.120> system.\ninto its evaluation system.\ninto its evaluation system. And<00:38:34.560> then<00:38:34.720> anytime<00:38:35.200> I<00:38:35.280> evaluate,<00:38:36.400> uh,<00:38:36.480> for\nAnd then anytime I evaluate, uh, for\nAnd then anytime I evaluate, uh, for example,<00:38:37.000> a<00:38:37.040> variable<00:38:37.400> called<00:38:37.640> foo<00:38:38.360> of<00:38:38.560> type\nexample, a variable called foo of type\nexample, a variable called foo of type of<00:38:38.880> it<00:38:39.000> map,<00:38:39.600> then<00:38:39.800> we<00:38:39.920> see<00:38:40.720> it's<00:38:40.920> just<00:38:41.320> the\nof it map, then we see it's just the\nof it map, then we see it's just the it's<00:38:42.080> just<00:38:42.240> the<00:38:42.280> bitmap<00:38:42.880> thing.<00:38:43.120> And<00:38:43.200> if<00:38:43.320> I\nit's just the bitmap thing. And if I\nit's just the bitmap thing. And if I want<00:38:43.600> to<00:38:43.680> get<00:38:43.800> back<00:38:43.960> to<00:38:44.040> the<00:38:44.160> original<00:38:44.600> view,\nwant to get back to the original view,\nwant to get back to the original view, then<00:38:46.000> I<00:38:46.080> just<00:38:46.240> do<00:38:46.400> raw.<00:38:46.960> It's<00:38:47.200> That's<00:38:47.440> what<00:38:47.520> the\nthen I just do raw. It's That's what the\nthen I just do raw. It's That's what the raw<00:38:47.840> thing<00:38:48.000> is<00:38:48.120> for,<00:38:48.360> right?<00:38:48.520> That's<00:38:49.080> That's\nraw thing is for, right? That's That's\nraw thing is for, right? That's That's me<00:38:49.400> saying,<00:38:49.640> \"Hey,<00:38:49.920> I<00:38:50.080> just<00:38:50.520> I<00:38:50.640> just<00:38:50.960> want<00:38:51.120> to\nme saying, \"Hey, I just I just want to\nme saying, \"Hey, I just I just want to look<00:38:51.640> at<00:38:51.720> this<00:38:51.880> how<00:38:52.000> the<00:38:52.080> debugger<00:38:52.400> would\nlook at this how the debugger would\nlook at this how the debugger would normally<00:38:52.920> look<00:38:53.160> at<00:38:53.240> it<00:38:53.320> without<00:38:53.560> any<00:38:53.720> of<00:38:53.800> the\nnormally look at it without any of the\nnormally look at it without any of the type<00:38:54.080> view<00:38:54.200> stuff.<00:38:54.440> Just<00:38:54.640> turn<00:38:54.800> it<00:38:54.920> all<00:38:55.080> off,\ntype view stuff. Just turn it all off,\ntype view stuff. Just turn it all off, get<00:38:55.720> a<00:38:55.760> base<00:38:55.960> pointer<00:38:56.320> with<00:38:56.520> and<00:38:56.640> height.\"\nget a base pointer with and height.\"\nget a base pointer with and height.\" Um,\nUm,\nUm, but<00:38:58.760> by<00:38:58.880> default,<00:38:59.280> obviously,<00:38:59.640> it's<00:38:59.800> more<00:39:00.200> if\nbut by default, obviously, it's more if\nbut by default, obviously, it's more if you<00:39:00.360> have<00:39:00.440> something<00:39:00.640> called<00:39:00.800> bitmap,<00:39:01.240> it\nyou have something called bitmap, it\nyou have something called bitmap, it might<00:39:01.400> be<00:39:01.480> convenient<00:39:01.880> to<00:39:01.960> look<00:39:02.120> at<00:39:02.200> it<00:39:02.320> as\nmight be convenient to look at it as\nmight be convenient to look at it as bitmap<00:39:02.840> by<00:39:02.920> default.<00:39:03.560> So,\nhopefully,<00:39:07.360> that<00:39:08.160> is<00:39:08.280> a<00:39:08.320> pretty<00:39:08.520> good\nhopefully, that is a pretty good\nhopefully, that is a pretty good overview.<00:39:09.400> Um,<00:39:10.160> there's<00:39:10.320> lots<00:39:10.480> of<00:39:10.560> other\noverview. Um, there's lots of other\noverview. Um, there's lots of other things<00:39:11.080> like<00:39:11.840> more<00:39:12.040> traditional<00:39:12.480> debugger\nthings like more traditional debugger\nthings like more traditional debugger things<00:39:13.080> like<00:39:13.240> I<00:39:13.280> can<00:39:13.600> I<00:39:13.680> can<00:39:13.800> debug<00:39:14.040> multiple\nthings like I can I can debug multiple\nthings like I can I can debug multiple processes<00:39:14.880> at<00:39:15.000> once.<00:39:16.000> Um,<00:39:16.520> there's\nprocesses at once. Um, there's\nprocesses at once. Um, there's conditional<00:39:17.120> breakpoints,<00:39:17.760> there's<00:39:18.120> address\nconditional breakpoints, there's address\nconditional breakpoints, there's address breakpoints,<00:39:19.040> there's,<00:39:19.560> uh,<00:39:19.680> data\nbreakpoints, there's, uh, data\nbreakpoints, there's, uh, data breakpoints<00:39:20.480> as<00:39:20.600> well.<00:39:21.480> Um,<00:39:21.920> so<00:39:22.000> I<00:39:22.080> can<00:39:22.200> cover\nbreakpoints as well. Um, so I can cover\nbreakpoints as well. Um, so I can cover any<00:39:22.640> of<00:39:22.720> those,<00:39:22.960> but<00:39:23.080> those<00:39:23.240> are<00:39:23.320> all<00:39:23.400> kind<00:39:23.560> of\nany of those, but those are all kind of\nany of those, but those are all kind of common<00:39:23.960> debugger<00:39:24.280> functionality.<00:39:25.480> Um,\ncommon debugger functionality. Um,\ncommon debugger functionality. Um, but,<00:39:26.920> uh,<00:39:27.080> hopefully,<00:39:27.360> that's<00:39:27.480> a<00:39:27.520> good\nbut, uh, hopefully, that's a good\nbut, uh, hopefully, that's a good overview.\noverview.\noverview. Um,\nUm,\nUm, >> Nice.\n>> Nice.\n>> Nice. >> Yeah.\n>> Yeah.\n>> Yeah. >> Uh,<00:39:32.120> there<00:39:32.520> there<00:39:32.680> were<00:39:32.760> a<00:39:32.840> couple<00:39:33.280> of<00:39:33.600> wows<00:39:34.200> in\n>> Uh, there there were a couple of wows in\n>> Uh, there there were a couple of wows in the<00:39:34.640> chat<00:39:35.040> in<00:39:35.160> the<00:39:35.280> meantime<00:39:36.160> when<00:39:36.360> you<00:39:36.440> were\nthe chat in the meantime when you were\nthe chat in the meantime when you were doing<00:39:36.920> the<00:39:37.280> everything<00:39:37.680> is<00:39:37.800> a<00:39:37.880> watch<00:39:38.120> window\ndoing the everything is a watch window\ndoing the everything is a watch window uh,<00:39:39.560> reveals.\nuh, reveals.\nuh, reveals. And<00:39:40.840> there<00:39:40.960> were<00:39:41.040> also<00:39:41.240> a<00:39:41.280> couple<00:39:41.600> of\nAnd there were also a couple of\nAnd there were also a couple of questions<00:39:42.480> like<00:39:42.800> how<00:39:43.320> rad<00:39:43.600> debugger<00:39:43.960> works\nquestions like how rad debugger works\nquestions like how rad debugger works with,<00:39:44.840> uh,<00:39:45.160> sources<00:39:45.640> that<00:39:45.760> only<00:39:46.000> have,<00:39:46.200> for\nwith, uh, sources that only have, for\nwith, uh, sources that only have, for example,<00:39:47.040> debug<00:39:47.360> information<00:39:48.000> or<00:39:48.200> don't<00:39:49.200> and\nexample, debug information or don't and\nexample, debug information or don't and how<00:39:49.560> does<00:39:49.800> it<00:39:49.920> interplay<00:39:50.440> with<00:39:50.640> like,<00:39:51.240> um,\nhow does it interplay with like, um,\nhow does it interplay with like, um, other<00:39:51.840> libraries<00:39:52.360> and<00:39:52.520> other<00:39:52.720> source<00:39:53.000> code?\n>> Uh,<00:39:56.160> I<00:39:56.240> guess<00:39:56.440> I'm<00:39:56.560> not<00:39:56.880> 100%<00:39:57.400> sure<00:39:57.520> about<00:39:57.680> the\n>> Uh, I guess I'm not 100% sure about the\n>> Uh, I guess I'm not 100% sure about the question.<00:39:58.280> Like<00:39:58.440> if<00:39:58.560> you<00:39:58.640> don't<00:39:58.880> have<00:39:59.040> debug\nquestion. Like if you don't have debug\nquestion. Like if you don't have debug info,<00:40:00.040> then<00:40:00.560> what<00:40:00.880> The<00:40:01.040> only<00:40:01.200> thing<00:40:01.360> you<00:40:01.440> can\ninfo, then what The only thing you can\ninfo, then what The only thing you can really<00:40:01.760> do,\nreally do,\nreally do, um,<00:40:03.280> obviously,<00:40:03.600> there's<00:40:04.000> there<00:40:04.200> there's<00:40:04.520> a\num, obviously, there's there there's a\num, obviously, there's there there's a whole<00:40:04.800> family<00:40:05.280> of<00:40:05.440> reverse<00:40:05.760> engineering\nwhole family of reverse engineering\nwhole family of reverse engineering features<00:40:06.640> that<00:40:06.760> people<00:40:07.160> have<00:40:07.800> can<00:40:08.080> and<00:40:08.200> do<00:40:08.440> put\nfeatures that people have can and do put\nfeatures that people have can and do put into<00:40:08.800> their<00:40:08.920> debuggers.<00:40:09.960> Um,<00:40:10.320> the<00:40:10.400> rad\ninto their debuggers. Um, the rad\ninto their debuggers. Um, the rad debugger<00:40:10.800> is<00:40:10.920> more<00:40:11.480> more<00:40:11.760> focused<00:40:12.160> on<00:40:12.280> like\ndebugger is more more focused on like\ndebugger is more more focused on like the<00:40:12.600> cases<00:40:12.920> where<00:40:13.040> you<00:40:13.120> have<00:40:13.360> debug<00:40:13.640> info<00:40:13.960> cuz\nthe cases where you have debug info cuz\nthe cases where you have debug info cuz this<00:40:14.320> is,<00:40:14.520> you<00:40:14.600> know,<00:40:14.760> obviously,<00:40:15.040> it's<00:40:15.200> for\nthis is, you know, obviously, it's for\nthis is, you know, obviously, it's for game<00:40:15.600> developers.<00:40:16.320> Um,<00:40:16.640> as<00:40:16.800> a<00:40:16.960> first<00:40:18.040> as<00:40:18.200> kind\ngame developers. Um, as a first as kind\ngame developers. Um, as a first as kind of<00:40:18.440> like<00:40:18.640> the<00:40:19.160> intended<00:40:19.800> audience<00:40:20.240> or<00:40:20.440> just\nof like the intended audience or just\nof like the intended audience or just system<00:40:20.960> developers<00:40:21.440> working<00:40:21.720> on<00:40:21.840> system\nsystem developers working on system\nsystem developers working on system software.<00:40:23.200> And<00:40:23.400> so,<00:40:23.640> in<00:40:23.800> that<00:40:24.120> in<00:40:24.240> that\nsoftware. And so, in that in that\nsoftware. And so, in that in that context,<00:40:24.760> you<00:40:24.880> do<00:40:25.080> have<00:40:25.200> debug<00:40:25.480> info.<00:40:25.760> So,<00:40:25.920> we\ncontext, you do have debug info. So, we\ncontext, you do have debug info. So, we haven't<00:40:26.400> spent<00:40:26.600> a<00:40:26.640> lot<00:40:26.800> of<00:40:26.880> time<00:40:27.080> doing\nhaven't spent a lot of time doing\nhaven't spent a lot of time doing reverse<00:40:27.680> engineering<00:40:28.120> type<00:40:28.320> stuff<00:40:28.640> where<00:40:28.760> you\nreverse engineering type stuff where you\nreverse engineering type stuff where you cannot<00:40:29.320> be<00:40:29.520> guaranteed<00:40:30.000> to<00:40:30.080> have<00:40:30.280> debug<00:40:30.560> info.\ncannot be guaranteed to have debug info.\ncannot be guaranteed to have debug info. Um<00:40:32.200> you<00:40:32.320> can<00:40:32.440> still<00:40:32.600> debug,<00:40:33.240> but<00:40:33.400> it's<00:40:33.520> just\nUm you can still debug, but it's just\nUm you can still debug, but it's just going<00:40:33.800> to<00:40:33.880> be<00:40:34.040> hey,<00:40:34.280> you<00:40:34.360> have<00:40:34.520> disassembly,\ngoing to be hey, you have disassembly,\ngoing to be hey, you have disassembly, you<00:40:35.480> can<00:40:35.600> look<00:40:35.760> at<00:40:35.840> memory,<00:40:36.600> but<00:40:36.840> there's<00:40:37.040> no\nyou can look at memory, but there's no\nyou can look at memory, but there's no information<00:40:37.720> about<00:40:37.960> like<00:40:38.160> what<00:40:38.320> variables\ninformation about like what variables\ninformation about like what variables are<00:40:38.880> there<00:40:39.160> or<00:40:39.240> type<00:40:39.560> info<00:40:39.960> or<00:40:40.040> like<00:40:40.240> any<00:40:40.400> of\nare there or type info or like any of\nare there or type info or like any of that.<00:40:40.840> All<00:40:41.000> of<00:40:41.040> that's<00:40:41.240> not<00:40:41.440> in<00:40:41.560> there.<00:40:42.120> Um\nthat. All of that's not in there. Um\nthat. All of that's not in there. Um there's<00:40:42.360> no<00:40:42.480> line<00:40:42.760> info.<00:40:43.880> Um\nthere's no line info. Um\nthere's no line info. Um anything<00:40:45.440> like<00:40:45.600> that.<00:40:45.800> So,<00:40:46.080> if<00:40:46.200> you<00:40:46.280> don't\nanything like that. So, if you don't\nanything like that. So, if you don't have<00:40:46.560> debug<00:40:46.840> info,<00:40:47.160> it's<00:40:47.320> going<00:40:47.440> to<00:40:47.480> be<00:40:47.560> pretty\nhave debug info, it's going to be pretty\nhave debug info, it's going to be pretty bare-bones.<00:40:48.800> Uh<00:40:49.120> we<00:40:49.240> don't<00:40:49.400> have<00:40:49.520> a<00:40:49.560> whole<00:40:49.760> lot\nbare-bones. Uh we don't have a whole lot\nbare-bones. Uh we don't have a whole lot of<00:40:50.400> um\nof um\nof um whole<00:40:51.600> lot<00:40:51.800> of<00:40:51.960> like<00:40:52.320> reverse<00:40:52.600> engineering\nwhole lot of like reverse engineering\nwhole lot of like reverse engineering type<00:40:53.240> stuff.\ntype stuff.\ntype stuff. Um\nUm\nUm but<00:40:55.560> uh\nbut uh\nbut uh Uh<00:40:56.960> what<00:40:57.120> was<00:40:57.200> the<00:40:57.280> other<00:40:57.400> part<00:40:57.520> of<00:40:57.600> the\nUh what was the other part of the\nUh what was the other part of the question?<00:40:58.160> I<00:40:58.560> think<00:40:58.800> that<00:40:58.920> might<00:40:59.160> have\nquestion? I think that might have\nquestion? I think that might have covered<00:40:59.560> it,<00:40:59.640> but<00:40:59.840> if<00:41:00.000> not,<00:41:00.600> uh<00:41:00.880> let<00:41:01.000> me<00:41:01.080> know.\ncovered it, but if not, uh let me know.\ncovered it, but if not, uh let me know. >> I<00:41:01.680> think<00:41:01.960> that's<00:41:02.200> it.<00:41:02.600> The<00:41:03.240> that<00:41:03.440> was<00:41:03.600> the<00:41:04.040> like\n>> I think that's it. The that was the like\n>> I think that's it. The that was the like how<00:41:04.520> how<00:41:04.680> to<00:41:04.840> interface<00:41:05.320> with<00:41:05.520> other<00:41:05.760> things.\nhow how to interface with other things.\nhow how to interface with other things. I<00:41:06.520> also<00:41:06.880> put<00:41:07.080> it\nI also put it\nI also put it a<00:41:08.240> I<00:41:08.320> put<00:41:08.640> a<00:41:08.760> link<00:41:09.160> in<00:41:09.280> the<00:41:09.400> chat<00:41:10.160> regarding<00:41:10.600> the\na I put a link in the chat regarding the\na I put a link in the chat regarding the Q&A.<00:41:11.560> If<00:41:11.800> there's<00:41:12.120> something<00:41:12.440> that<00:41:12.640> we<00:41:12.760> missed\nQ&A. If there's something that we missed\nQ&A. If there's something that we missed uh<00:41:14.560> and<00:41:14.680> I<00:41:14.720> missed<00:41:15.000> through<00:41:15.120> during<00:41:15.360> the<00:41:15.480> chat,\nuh and I missed through during the chat,\nuh and I missed through during the chat, people<00:41:16.280> can<00:41:16.760> put<00:41:16.960> it<00:41:17.080> there.\npeople can put it there.\npeople can put it there. And\nAnd\nAnd >> Cool.\n>> Cool.\n>> Cool. >> Oh,<00:41:20.360> I<00:41:20.440> actually<00:41:20.760> missed<00:41:20.960> like<00:41:21.320> 50<00:41:22.240> messages\n>> Oh, I actually missed like 50 messages\n>> Oh, I actually missed like 50 messages now<00:41:22.880> because<00:41:23.240> my<00:41:23.840> my<00:41:24.000> YouTube<00:41:24.520> my<00:41:24.640> YouTube\nnow because my my YouTube my YouTube\nnow because my my YouTube my YouTube chat<00:41:25.200> was<00:41:25.360> frozen.<00:41:26.160> So,\nchat was frozen. So,\nchat was frozen. So, you<00:41:27.480> can<00:41:27.800> you<00:41:27.880> can<00:41:28.080> put<00:41:28.320> those<00:41:28.600> in<00:41:29.120> and\nyou can you can put those in and\nyou can you can put those in and uh<00:41:30.280> we<00:41:30.440> will<00:41:30.560> come<00:41:30.800> back<00:41:31.200> maybe<00:41:31.440> in<00:41:31.560> the<00:41:31.680> end.\nuh we will come back maybe in the end.\nuh we will come back maybe in the end. >> Um\n>> Um\n>> Um >> Cool.\n>> Cool.\n>> Cool. >> [snorts]\n>> [snorts]\n>> [snorts] >> Nice.\n>> Nice.\n>> Nice. Now,\nNow,\nNow, >> Yeah.\n>> Yeah.\n>> Yeah. >> is<00:41:37.080> this\n>> is this\n>> is this >> Oh,<00:41:37.520> I<00:41:37.560> guess<00:41:37.760> I<00:41:37.840> should\n>> Oh, I guess I should\n>> Oh, I guess I should >> Yeah.\n>> Yeah.\n>> Yeah. >> Well,<00:41:39.560> yes.<00:41:39.960> Okay,<00:41:40.200> so<00:41:40.400> one<00:41:40.640> more<00:41:40.840> thing<00:41:41.120> I\n>> Well, yes. Okay, so one more thing I\n>> Well, yes. Okay, so one more thing I should<00:41:41.400> probably<00:41:41.760> do<00:41:42.480> is<00:41:42.680> show<00:41:43.400> one<00:41:43.760> Maybe\nshould probably do is show one Maybe\nshould probably do is show one Maybe this<00:41:44.160> is<00:41:44.240> related<00:41:44.560> to<00:41:44.640> that<00:41:44.800> question,<00:41:45.160> but<00:41:45.480> um\nthis is related to that question, but um\nthis is related to that question, but um cross-language<00:41:46.480> support.<00:41:47.560> Um<00:41:48.360> so,<00:41:48.960> uh\ncross-language support. Um so, uh\ncross-language support. Um so, uh like<00:41:49.720> for<00:41:49.880> example,<00:41:50.240> if<00:41:50.320> I<00:41:50.400> wanted<00:41:50.600> to<00:41:50.680> debug\nlike for example, if I wanted to debug\nlike for example, if I wanted to debug like<00:41:51.440> JAI,<00:41:52.240> for<00:41:52.360> example,<00:41:53.400> um<00:41:54.280> this<00:41:54.440> uses<00:41:54.760> the\nlike JAI, for example, um this uses the\nlike JAI, for example, um this uses the same<00:41:55.240> type<00:41:55.520> of<00:41:55.600> debug<00:41:55.880> info<00:41:56.200> that<00:41:57.040> uh<00:41:57.440> like<00:41:57.720> C\nsame type of debug info that uh like C\nsame type of debug info that uh like C and<00:41:58.080> C++<00:41:58.520> do.<00:41:59.120> So,<00:41:59.440> the<00:41:59.880> the<00:41:59.960> JAI<00:42:00.280> compiler\nand C++ do. So, the the JAI compiler\nand C++ do. So, the the JAI compiler produces<00:42:02.520> uh<00:42:02.720> code<00:42:02.960> view<00:42:03.080> data,<00:42:03.440> which<00:42:03.920> um<00:42:04.280> I\nproduces uh code view data, which um I\nproduces uh code view data, which um I think<00:42:04.520> it<00:42:04.640> uses<00:42:05.160> the<00:42:05.280> MSVC<00:42:05.720> linker.<00:42:06.520> And<00:42:06.640> so,\nthink it uses the MSVC linker. And so,\nthink it uses the MSVC linker. And so, the<00:42:06.840> linker<00:42:07.160> will<00:42:07.400> stitch<00:42:07.680> those<00:42:07.880> together\nthe linker will stitch those together\nthe linker will stitch those together and<00:42:08.240> form<00:42:08.440> a<00:42:08.480> PDB,<00:42:09.000> which<00:42:09.200> the<00:42:09.280> debugger<00:42:09.600> knows\nand form a PDB, which the debugger knows\nand form a PDB, which the debugger knows how<00:42:09.840> to<00:42:09.920> work<00:42:10.120> with.<00:42:10.320> So,<00:42:11.080> if<00:42:11.200> I<00:42:11.240> have<00:42:11.360> a<00:42:11.400> JAI\nhow to work with. So, if I have a JAI\nhow to work with. So, if I have a JAI executable,<00:42:12.400> like<00:42:12.560> this<00:42:12.680> is<00:42:12.760> the<00:42:12.880> JAI\nexecutable, like this is the JAI\nexecutable, like this is the JAI Invaders,<00:42:14.200> um\nInvaders, um\nInvaders, um this<00:42:16.200> uh<00:42:16.320> this<00:42:16.480> also<00:42:16.680> just<00:42:16.920> works.\nthis uh this also just works.\nthis uh this also just works. Um<00:42:18.280> so,<00:42:18.640> here's<00:42:19.000> just<00:42:19.200> the<00:42:19.280> JAI<00:42:19.680> code,<00:42:20.080> and\nUm so, here's just the JAI code, and\nUm so, here's just the JAI code, and here's<00:42:20.840> me<00:42:21.040> stepping<00:42:21.360> through<00:42:21.600> it,<00:42:21.880> you<00:42:21.920> know,\nhere's me stepping through it, you know,\nhere's me stepping through it, you know, normal<00:42:22.560> stuff.\nnormal stuff.\nnormal stuff. And<00:42:23.840> those<00:42:24.000> type<00:42:24.280> views<00:42:24.560> come<00:42:24.720> in<00:42:24.840> handy<00:42:25.200> with\nAnd those type views come in handy with\nAnd those type views come in handy with uh<00:42:25.920> with<00:42:26.360> languages<00:42:26.800> like<00:42:27.000> JAI<00:42:27.640> because<00:42:28.240> um<00:42:28.840> if\nuh with languages like JAI because um if\nuh with languages like JAI because um if I<00:42:29.080> were<00:42:29.200> to<00:42:29.280> evaluate<00:42:29.760> strings<00:42:30.200> like<00:42:30.520> uh<00:42:30.600> we\nI were to evaluate strings like uh we\nI were to evaluate strings like uh we have<00:42:30.800> this<00:42:30.960> base<00:42:31.480> base<00:42:31.760> path<00:42:32.640> thing,<00:42:33.000> you<00:42:33.080> can\nhave this base base path thing, you can\nhave this base base path thing, you can see<00:42:33.360> it's<00:42:33.520> like<00:42:34.280> the<00:42:34.360> way<00:42:34.480> these<00:42:34.720> languages\nsee it's like the way these languages\nsee it's like the way these languages generate<00:42:35.760> these<00:42:36.560> uh<00:42:36.680> like\ngenerate these uh like\ngenerate these uh like string<00:42:37.720> variables,<00:42:38.040> like<00:42:38.160> generally<00:42:38.480> these\nstring variables, like generally these\nstring variables, like generally these languages<00:42:38.960> will<00:42:39.080> first-class<00:42:39.600> strings,<00:42:39.960> but\nlanguages will first-class strings, but\nlanguages will first-class strings, but because<00:42:40.880> they're<00:42:41.040> not<00:42:41.480> um<00:42:41.960> living<00:42:42.600> under<00:42:43.000> a\nbecause they're not um living under a\nbecause they're not um living under a rock,<00:42:43.360> they<00:42:43.480> know<00:42:43.640> to<00:42:43.760> make<00:42:43.960> them\nrock, they know to make them\nrock, they know to make them length-based<00:42:45.280> strings,<00:42:45.720> right?<00:42:45.920> So,<00:42:46.480> uh<00:42:46.600> JAI\nlength-based strings, right? So, uh JAI\nlength-based strings, right? So, uh JAI does<00:42:47.160> this.<00:42:47.360> It's<00:42:47.480> like<00:42:47.640> when<00:42:47.800> you<00:42:47.920> use<00:42:48.120> string\ndoes this. It's like when you use string\ndoes this. It's like when you use string literals,<00:42:48.760> it<00:42:48.840> just<00:42:49.040> returns<00:42:49.400> you<00:42:49.560> a<00:42:49.600> type<00:42:49.960> of\nliterals, it just returns you a type of\nliterals, it just returns you a type of this<00:42:50.600> string<00:42:50.920> structure.<00:42:51.880> And<00:42:51.960> that<00:42:52.080> has<00:42:52.200> a\nthis string structure. And that has a\nthis string structure. And that has a count<00:42:52.920> and<00:42:53.040> a<00:42:53.080> data,<00:42:53.720> which<00:42:53.920> means<00:42:54.480> we<00:42:54.600> can<00:42:54.720> do\ncount and a data, which means we can do\ncount and a data, which means we can do um\num\num uh<00:42:56.600> we<00:42:56.720> can<00:42:56.840> basically<00:42:57.240> do,<00:42:57.560> \"Hey,<00:42:57.840> array\nuh we can basically do, \"Hey, array\nuh we can basically do, \"Hey, array basepath.data.\"\nbasepath.data.\"\nbasepath.data.\" Um\nUm\nUm and<00:43:01.560> then<00:43:01.720> basepath.count\nand then basepath.count\nand then basepath.count if<00:43:03.400> we<00:43:03.520> want<00:43:03.720> to,<00:43:04.440> and<00:43:04.560> that'll<00:43:04.760> just<00:43:04.960> show<00:43:05.200> us\nif we want to, and that'll just show us\nif we want to, and that'll just show us just<00:43:05.640> the<00:43:05.720> string<00:43:05.960> literal<00:43:06.880> when<00:43:07.080> we<00:43:07.160> evaluate\njust the string literal when we evaluate\njust the string literal when we evaluate it<00:43:07.840> in<00:43:07.960> the<00:43:08.040> watch<00:43:08.240> window.\nit in the watch window.\nit in the watch window. And<00:43:09.680> then,<00:43:10.040> so<00:43:10.760> I<00:43:10.880> showed<00:43:11.200> how<00:43:11.320> to<00:43:11.440> embed<00:43:11.960> type\nAnd then, so I showed how to embed type\nAnd then, so I showed how to embed type views<00:43:12.480> into<00:43:12.760> the<00:43:12.960> executables<00:43:13.480> themselves,\nviews into the executables themselves,\nviews into the executables themselves, but<00:43:14.160> you<00:43:14.200> can<00:43:14.320> also<00:43:14.480> do<00:43:14.600> this<00:43:14.720> dynamically<00:43:15.240> in\nbut you can also do this dynamically in\nbut you can also do this dynamically in the<00:43:15.440> debugger<00:43:15.800> UI.<00:43:16.440> So,<00:43:16.560> if<00:43:16.680> I<00:43:16.760> did<00:43:17.200> uh<00:43:17.280> I<00:43:17.360> can\nthe debugger UI. So, if I did uh I can\nthe debugger UI. So, if I did uh I can open<00:43:17.640> up<00:43:17.720> the<00:43:17.800> type<00:43:18.040> views<00:43:18.280> tab,\nopen up the type views tab,\nopen up the type views tab, which<00:43:19.680> is<00:43:19.760> also<00:43:20.000> a<00:43:20.040> watch<00:43:20.240> window,<00:43:20.920> and<00:43:21.040> we<00:43:21.120> can\nwhich is also a watch window, and we can\nwhich is also a watch window, and we can say,<00:43:21.560> \"Hey,<00:43:21.800> like<00:43:22.000> this<00:43:22.240> string<00:43:22.920> type,<00:43:23.280> I<00:43:23.360> just\nsay, \"Hey, like this string type, I just\nsay, \"Hey, like this string type, I just always<00:43:24.000> want<00:43:24.120> to<00:43:24.200> do<00:43:24.440> array,<00:43:25.080> and<00:43:25.200> then<00:43:25.360> what\nalways want to do array, and then what\nalways want to do array, and then what is<00:43:25.680> the<00:43:25.920> what<00:43:26.040> is<00:43:26.120> the<00:43:26.200> member<00:43:26.480> called<00:43:26.760> here?\"\nis the what is the member called here?\"\nis the what is the member called here?\" It's<00:43:27.800> um\nIt's um\nIt's um >> Data<00:43:29.200> and<00:43:29.320> count.\n>> Data and count.\n>> Data and count. >> Data<00:43:30.640> and<00:43:30.760> count,<00:43:31.040> so<00:43:31.120> I<00:43:31.160> can<00:43:31.280> do,<00:43:31.440> \"Hey,<00:43:31.760> array\n>> Data and count, so I can do, \"Hey, array\n>> Data and count, so I can do, \"Hey, array data<00:43:32.760> count.\"\ndata count.\"\ndata count.\" And<00:43:35.280> so,<00:43:35.520> now<00:43:35.920> if<00:43:36.080> I<00:43:36.160> do,<00:43:36.480> \"Hey,<00:43:36.640> basepath,\nAnd so, now if I do, \"Hey, basepath,\nAnd so, now if I do, \"Hey, basepath, what<00:43:37.520> is<00:43:37.640> that?\"<00:43:38.080> It's<00:43:38.200> just<00:43:38.360> going<00:43:38.480> to<00:43:38.560> show\nwhat is that?\" It's just going to show\nwhat is that?\" It's just going to show me<00:43:38.960> the<00:43:39.080> string.<00:43:39.880> Um\nme the string. Um\nme the string. Um uh\nuh\nuh Same<00:43:43.000> thing<00:43:43.120> with<00:43:43.200> like<00:43:43.360> slices,<00:43:43.880> for\nSame thing with like slices, for\nSame thing with like slices, for example,<00:43:44.400> like<00:43:44.560> if<00:43:44.680> I<00:43:44.720> wanted<00:43:44.960> to<00:43:45.040> do,<00:43:45.200> \"Hey,\nexample, like if I wanted to do, \"Hey,\nexample, like if I wanted to do, \"Hey, like<00:43:45.680> let's<00:43:45.920> do<00:43:46.200> every<00:43:46.440> time<00:43:46.720> we<00:43:46.840> have<00:43:47.920> a<00:43:48.960> uh<00:43:49.320> a\nlike let's do every time we have a uh a\nlike let's do every time we have a uh a slice<00:43:49.880> type,\num<00:43:54.080> now<00:43:54.200> I<00:43:54.240> don't<00:43:54.440> actually<00:43:54.680> know<00:43:54.840> what<00:43:54.920> the\num now I don't actually know what the\num now I don't actually know what the type<00:43:55.200> info<00:43:55.440> for<00:43:55.560> these<00:43:55.800> look<00:43:56.000> like,<00:43:56.200> so<00:43:56.720> I<00:43:56.800> feel\ntype info for these look like, so I feel\ntype info for these look like, so I feel >> Slice<00:43:57.520> slice<00:43:58.000> is<00:43:58.200> just<00:43:58.640> the<00:43:59.000> brackets<00:43:59.720> without\n>> Slice slice is just the brackets without\n>> Slice slice is just the brackets without anything,<00:44:00.720> and<00:44:00.880> if<00:44:01.000> you<00:44:01.120> put<00:44:01.320> in\nanything, and if you put in\nanything, and if you put in >> Oh,<00:44:01.840> you<00:44:02.040> thought<00:44:02.280> yeah,<00:44:02.480> you<00:44:02.600> thought<00:44:03.160> you\n>> Oh, you thought yeah, you thought you\n>> Oh, you thought yeah, you thought you thought<00:44:03.360> JAI,<00:44:03.880> yeah.\nthought JAI, yeah.\nthought JAI, yeah. >> It's<00:44:04.200> the<00:44:04.265> [laughter]<00:44:04.320> dynamic.\n>> It's the [laughter] dynamic.\n>> It's the [laughter] dynamic. >> Yeah,<00:44:05.120> but<00:44:05.320> is<00:44:05.440> dynamic,<00:44:05.920> actually.<00:44:06.200> Okay,\n>> Yeah, but is dynamic, actually. Okay,\n>> Yeah, but is dynamic, actually. Okay, yeah.<00:44:06.720> So,<00:44:07.120> if<00:44:07.240> I<00:44:07.320> did<00:44:07.560> this,<00:44:08.560> uh<00:44:08.640> I<00:44:08.680> don't<00:44:08.920> know\nyeah. So, if I did this, uh I don't know\nyeah. So, if I did this, uh I don't know if<00:44:09.160> this<00:44:09.400> is<00:44:09.560> a<00:44:09.640> good<00:44:09.760> example<00:44:10.240> in<00:44:10.320> this.\nif this is a good example in this.\nif this is a good example in this. Uh<00:44:11.960> oh,<00:44:12.120> like<00:44:12.400> invader<00:44:12.800> maps.<00:44:13.680> I<00:44:13.760> guess<00:44:13.920> that's\nUh oh, like invader maps. I guess that's\nUh oh, like invader maps. I guess that's a<00:44:14.120> dynamic<00:44:14.560> array.<00:44:14.720> So,<00:44:14.880> invader\na dynamic array. So, invader\na dynamic array. So, invader invader<00:44:17.200> maps.<00:44:17.480> Let<00:44:17.600> me<00:44:17.680> just<00:44:17.800> make<00:44:17.960> sure<00:44:18.080> that\ninvader maps. Let me just make sure that\ninvader maps. Let me just make sure that this<00:44:18.360> is<00:44:18.480> non-zero<00:44:19.120> at<00:44:19.240> some<00:44:19.440> point.<00:44:20.080> Um\nLike<00:44:22.840> if<00:44:22.960> I<00:44:23.080> go<00:44:23.320> through<00:44:23.560> here,\nLike if I go through here,\nLike if I go through here, is<00:44:24.760> it<00:44:24.840> going<00:44:24.960> to<00:44:25.040> load<00:44:25.280> the<00:44:25.360> maps<00:44:25.680> at<00:44:25.760> some\nis it going to load the maps at some\nis it going to load the maps at some point?\npoint?\npoint? Oh,<00:44:28.400> yeah,<00:44:28.640> okay.<00:44:28.880> Invader<00:44:29.160> maps<00:44:29.440> count<00:44:29.760> for\nOh, yeah, okay. Invader maps count for\nOh, yeah, okay. Invader maps count for Okay,<00:44:30.400> so<00:44:30.520> we'll<00:44:30.640> do\nOkay, so we'll do\nOkay, so we'll do um\num\num data<00:44:33.160> and<00:44:33.280> count<00:44:33.680> is<00:44:34.040> all<00:44:34.160> we<00:44:34.280> need.<00:44:34.680> So,<00:44:34.800> we\ndata and count is all we need. So, we\ndata and count is all we need. So, we can<00:44:35.000> go<00:44:35.120> ahead<00:44:35.280> and<00:44:35.400> do,<00:44:35.640> \"Hey,\num\num\num we'll<00:44:39.640> do<00:44:39.800> array\nwe'll do array\nwe'll do array data\ndata\ndata and<00:44:42.160> count.\nand count.\nand count. And<00:44:43.600> there<00:44:43.720> we<00:44:43.800> go.\nAnd there we go.\nAnd there we go. So,<00:44:45.600> now<00:44:45.760> we<00:44:45.840> just<00:44:46.040> get<00:44:46.160> the<00:44:46.240> array<00:44:46.440> view.\nSo, now we just get the array view.\nSo, now we just get the array view. Nice.\nNice.\nNice. >> So,\n>> So,\n>> So, Uh<00:44:49.640> so,<00:44:49.800> yeah.<00:44:50.320> That's<00:44:50.640> um\nUh so, yeah. That's um\nUh so, yeah. That's um You<00:44:52.080> can<00:44:52.200> see<00:44:52.360> unit<00:44:52.640> color.\nYou can see unit color.\nYou can see unit color. Uh<00:44:54.120> well,<00:44:54.440> I<00:44:54.520> don't<00:44:54.760> want<00:44:54.880> to<00:44:54.920> put<00:44:55.080> it<00:44:55.200> that\nUh well, I don't want to put it that\nUh well, I don't want to put it that onto<00:44:55.640> a<00:44:55.680> vector<00:44:55.960> four,<00:44:56.200> cuz<00:44:56.320> that's<00:44:56.520> a<00:44:56.600> general\nonto a vector four, cuz that's a general\nonto a vector four, cuz that's a general general<00:44:57.720> type.<00:44:58.000> But,<00:44:58.400> yeah,<00:44:58.600> anyways.\ngeneral type. But, yeah, anyways.\ngeneral type. But, yeah, anyways. Um\nUm\nUm So,<00:45:00.240> yeah,<00:45:00.320> that's<00:45:00.480> probably<00:45:00.680> a<00:45:00.720> good<00:45:00.840> place\nSo, yeah, that's probably a good place\nSo, yeah, that's probably a good place to<00:45:01.120> stop.<00:45:01.480> Um<00:45:01.680> I<00:45:01.760> guess<00:45:02.000> the<00:45:02.400> the\nto stop. Um I guess the the\nto stop. Um I guess the the I<00:45:04.720> can<00:45:04.840> also<00:45:05.040> do<00:45:05.200> Odin<00:45:05.720> as<00:45:05.880> well.<00:45:06.000> Since<00:45:06.200> I\nI can also do Odin as well. Since I\nI can also do Odin as well. Since I showed<00:45:06.440> Jai,<00:45:06.680> I<00:45:06.800> can<00:45:06.960> show<00:45:07.120> Odin.\nshowed Jai, I can show Odin.\nshowed Jai, I can show Odin. Here's<00:45:08.320> the<00:45:08.400> Odin<00:45:08.880> example<00:45:09.240> program.\nHere's the Odin example program.\nHere's the Odin example program. Um\nUm\nUm yeah.<00:45:11.680> Same<00:45:11.920> stuff.<00:45:12.840> Usual<00:45:13.520> debugging\nyeah. Same stuff. Usual debugging\nyeah. Same stuff. Usual debugging features<00:45:14.280> just<00:45:14.440> available\nfeatures just available\nfeatures just available for<00:45:15.680> all<00:45:15.760> these<00:45:15.920> languages.<00:45:16.360> So,\nfor all these languages. So,\nfor all these languages. So, >> Nice.\n>> Nice.\n>> Nice. >> Yeah.\n>> Yeah.\n>> Yeah. >> Nice.\n>> Nice.\n>> Nice. All<00:45:21.960> right.\nAll right.\nAll right. Then,\nThen,\nThen, we're<00:45:25.040> going<00:45:25.200> to<00:45:25.280> switch<00:45:25.600> to<00:45:25.720> source<00:45:26.120> code.\nwe're going to switch to source code.\nwe're going to switch to source code. Now,<00:45:26.640> do<00:45:26.760> you<00:45:26.880> want<00:45:27.160> a<00:45:27.240> little<00:45:27.400> bit<00:45:27.520> of<00:45:27.640> break?\nNow, do you want a little bit of break?\nNow, do you want a little bit of break? >> Sweet.\n>> Sweet.\n>> Sweet. >> Or\n>> Or\n>> Or >> Uh<00:45:30.000> I'm<00:45:30.200> okay<00:45:30.480> to<00:45:30.560> keep<00:45:30.720> going.<00:45:31.040> I<00:45:31.080> mean,<00:45:31.280> we\n>> Uh I'm okay to keep going. I mean, we\n>> Uh I'm okay to keep going. I mean, we can<00:45:31.480> take<00:45:31.640> a<00:45:31.680> break<00:45:31.840> if<00:45:31.960> you<00:45:32.080> if<00:45:32.200> that<00:45:32.360> helps.\ncan take a break if you if that helps.\ncan take a break if you if that helps. Um\nUm\nUm I<00:45:33.960> don't<00:45:34.160> need<00:45:34.320> it<00:45:34.520> necessarily.\nI don't need it necessarily.\nI don't need it necessarily. >> Uh\n>> Uh\n>> Uh if<00:45:36.720> you<00:45:37.280> can<00:45:37.480> keep<00:45:37.720> going,<00:45:38.000> then<00:45:38.160> let's<00:45:38.440> keep\nif you can keep going, then let's keep\nif you can keep going, then let's keep going.\ngoing.\ngoing. I'm<00:45:40.080> looking<00:45:40.480> taking<00:45:40.760> a<00:45:40.800> look<00:45:40.960> at<00:45:41.080> the<00:45:41.680> chat.\nI'm looking taking a look at the chat.\nI'm looking taking a look at the chat. My<00:45:43.320> idea<00:45:44.000> would<00:45:44.240> be<00:45:44.440> to<00:45:44.680> sort<00:45:44.920> of<00:45:45.160> do<00:45:45.920> first\nMy idea would be to sort of do first\nMy idea would be to sort of do first like<00:45:46.440> a<00:45:46.480> bit<00:45:46.640> of<00:45:46.760> a<00:45:46.840> high<00:45:47.040> level,<00:45:47.640> and<00:45:47.800> then\nlike a bit of a high level, and then\nlike a bit of a high level, and then we'll<00:45:48.120> pick<00:45:48.360> some<00:45:48.560> parts<00:45:48.920> where<00:45:49.080> we<00:45:49.200> can<00:45:49.320> dive\nwe'll pick some parts where we can dive\nwe'll pick some parts where we can dive into.<00:45:50.360> So,\ninto. So,\ninto. So, >> Okay,<00:45:51.120> sure.\n>> Okay, sure.\n>> Okay, sure. >> you<00:45:51.600> know.<00:45:52.160> I<00:45:52.280> think<00:45:52.520> the<00:45:52.640> first<00:45:53.720> uh<00:45:54.560> first\n>> you know. I think the first uh first\n>> you know. I think the first uh first part<00:45:55.640> could<00:45:55.920> be<00:45:56.240> a<00:45:56.360> little<00:45:56.520> bit<00:45:56.640> about<00:45:57.000> like\npart could be a little bit about like\npart could be a little bit about like high<00:45:57.360> level<00:45:57.760> structure,<00:45:58.880> what<00:45:59.120> is<00:45:59.280> where<00:45:59.640> in\nhigh level structure, what is where in\nhigh level structure, what is where in terms<00:46:00.080> of<00:46:00.720> source<00:46:01.120> code,<00:46:01.440> so<00:46:01.520> that<00:46:01.760> we<00:46:01.840> don't\nterms of source code, so that we don't\nterms of source code, so that we don't get<00:46:02.680> too<00:46:02.960> too<00:46:03.200> lost<00:46:04.160> immediately.\nget too too lost immediately.\nget too too lost immediately. >> Got<00:46:04.800> it.\n>> Got it.\n>> Got it. Okay.\nOkay.\nOkay. Um\nUm\nUm >> Oh,<00:46:10.080> there<00:46:10.240> was<00:46:10.480> there<00:46:10.640> was<00:46:10.840> one<00:46:11.160> there<00:46:11.320> was\n>> Oh, there was there was one there was\n>> Oh, there was there was one there was one<00:46:11.640> question<00:46:12.120> that<00:46:12.240> was<00:46:12.440> repeated<00:46:13.320> a<00:46:13.360> lot<00:46:13.640> of\none question that was repeated a lot of\none question that was repeated a lot of times<00:46:14.120> in<00:46:14.200> the<00:46:14.320> chat.<00:46:15.160> When<00:46:15.640> uh<00:46:15.920> the<00:46:16.080> debugger\ntimes in the chat. When uh the debugger\ntimes in the chat. When uh the debugger will<00:46:16.720> become<00:46:17.240> a<00:46:17.360> code<00:46:17.720> editor?\nwill become a code editor?\nwill become a code editor? >> [laughter]\n>> [laughter]\n>> [laughter] >> Uh<00:46:20.960> so,<00:46:21.640> that's<00:46:21.920> like<00:46:22.080> very<00:46:22.360> long<00:46:22.640> term.<00:46:23.320> If<00:46:23.480> we\n>> Uh so, that's like very long term. If we\n>> Uh so, that's like very long term. If we ever<00:46:23.760> decide<00:46:24.080> to<00:46:24.160> do<00:46:24.320> that,<00:46:24.640> it's<00:46:24.760> just<00:46:24.960> that\never decide to do that, it's just that\never decide to do that, it's just that there's<00:46:25.520> so<00:46:25.680> much<00:46:25.960> debugging<00:46:26.400> stuff<00:46:26.640> we<00:46:26.720> need\nthere's so much debugging stuff we need\nthere's so much debugging stuff we need to<00:46:26.960> do<00:46:27.120> first<00:46:27.560> that<00:46:28.040> we're<00:46:28.360> going<00:46:28.520> to<00:46:28.920> we're\nto do first that we're going to we're\nto do first that we're going to we're focusing<00:46:29.360> on<00:46:29.440> debugger<00:46:29.720> stuff<00:46:30.000> first<00:46:30.200> because\nfocusing on debugger stuff first because\nfocusing on debugger stuff first because it's<00:46:30.640> more<00:46:30.840> important.<00:46:31.680> Like<00:46:31.840> there<00:46:31.960> are\nit's more important. Like there are\nit's more important. Like there are plenty<00:46:32.320> of<00:46:32.400> editors<00:46:32.800> available<00:46:33.280> on<00:46:33.400> Linux,\nplenty of editors available on Linux,\nplenty of editors available on Linux, right?<00:46:34.080> But<00:46:34.280> there's<00:46:34.520> really<00:46:34.720> not<00:46:34.880> that<00:46:35.040> many\nright? But there's really not that many\nright? But there's really not that many graphical<00:46:35.880> like<00:46:36.120> good<00:46:36.360> graphical<00:46:36.720> editors<00:46:37.080> on\ngraphical like good graphical editors on\ngraphical like good graphical editors on Linux.<00:46:38.040> And<00:46:38.160> so,<00:46:38.280> the<00:46:38.400> debugger's<00:46:38.920> really<00:46:39.120> the\nLinux. And so, the debugger's really the\nLinux. And so, the debugger's really the high<00:46:39.440> value<00:46:39.760> thing<00:46:39.880> we<00:46:40.000> want<00:46:40.120> to<00:46:40.200> provide\nhigh value thing we want to provide\nhigh value thing we want to provide first.<00:46:41.480> I<00:46:41.560> think<00:46:41.800> someday<00:46:42.200> it'll<00:46:42.400> make<00:46:42.560> a\nfirst. I think someday it'll make a\nfirst. I think someday it'll make a whole<00:46:42.840> lot<00:46:43.000> of<00:46:43.080> sense<00:46:43.320> to<00:46:43.440> put<00:46:43.640> editing\nwhole lot of sense to put editing\nwhole lot of sense to put editing functionality<00:46:44.520> inside<00:46:44.960> because<00:46:45.560> it's<00:46:45.640> not\nfunctionality inside because it's not\nfunctionality inside because it's not even<00:46:46.360> it's<00:46:46.480> not<00:46:46.640> even<00:46:46.800> for<00:46:47.080> the<00:46:47.280> purposes<00:46:47.680> of\neven it's not even for the purposes of\neven it's not even for the purposes of being<00:46:47.960> a<00:46:48.000> code<00:46:48.200> editor.<00:46:49.000> It's<00:46:49.160> really<00:46:49.360> because\nbeing a code editor. It's really because\nbeing a code editor. It's really because with<00:46:50.120> multi-line<00:46:50.720> string<00:46:51.000> visualization,<00:46:51.960> so\nwith multi-line string visualization, so\nwith multi-line string visualization, so if<00:46:52.240> I,<00:46:52.360> you<00:46:52.480> know,<00:46:52.680> if<00:46:52.840> I<00:46:52.880> go<00:46:53.000> back<00:46:53.200> to<00:46:53.280> those\nif I, you know, if I go back to those\nif I, you know, if I go back to those examples<00:46:53.840> where<00:46:53.920> I<00:46:53.960> had<00:46:54.080> that<00:46:54.240> long<00:46:54.520> string\nexamples where I had that long string\nexamples where I had that long string that<00:46:55.000> I<00:46:55.040> showed<00:46:55.760> in<00:46:55.880> the<00:46:55.960> text<00:46:56.160> visualizer\nthat I showed in the text visualizer\nthat I showed in the text visualizer just<00:46:56.840> like<00:46:57.040> the<00:46:57.280> just<00:46:57.440> like<00:46:57.520> the<00:46:57.600> source<00:46:57.800> code.\njust like the just like the source code.\njust like the just like the source code. If<00:46:59.160> you're<00:46:59.320> working<00:46:59.640> with<00:46:59.760> a<00:46:59.800> lot<00:47:00.000> of<00:47:00.040> text\nIf you're working with a lot of text\nIf you're working with a lot of text data<00:47:01.280> and<00:47:01.400> you're<00:47:01.520> debugging,<00:47:01.960> like<00:47:02.080> we<00:47:02.200> can\ndata and you're debugging, like we can\ndata and you're debugging, like we can edit<00:47:02.520> things<00:47:02.720> in<00:47:02.800> the<00:47:02.840> memory<00:47:03.200> view,<00:47:03.680> we<00:47:03.800> can\nedit things in the memory view, we can\nedit things in the memory view, we can edit<00:47:04.200> the<00:47:04.320> colors,<00:47:04.840> we<00:47:04.960> can<00:47:05.080> edit<00:47:05.400> like<00:47:06.000> we<00:47:06.120> can\nedit the colors, we can edit like we can\nedit the colors, we can edit like we can edit<00:47:06.400> values<00:47:06.760> inside<00:47:06.960> the<00:47:07.040> watch<00:47:07.240> window.\nedit values inside the watch window.\nedit values inside the watch window. It's<00:47:08.000> like<00:47:08.200> really<00:47:08.440> all<00:47:08.560> these<00:47:08.720> visualizers\nIt's like really all these visualizers\nIt's like really all these visualizers should<00:47:09.480> also<00:47:09.680> have<00:47:09.840> editing<00:47:10.120> functionality\nshould also have editing functionality\nshould also have editing functionality at<00:47:10.960> the<00:47:11.080> limit.<00:47:11.440> So,<00:47:11.560> I<00:47:11.640> think<00:47:11.840> that<00:47:12.120> should\nat the limit. So, I think that should\nat the limit. So, I think that should apply<00:47:12.600> also<00:47:12.840> to<00:47:12.960> the<00:47:13.040> text<00:47:13.280> visualizer,<00:47:14.160> which\napply also to the text visualizer, which\napply also to the text visualizer, which means<00:47:14.800> it<00:47:14.960> necessarily<00:47:15.560> also<00:47:15.800> has<00:47:15.960> to<00:47:16.080> apply\nmeans it necessarily also has to apply\nmeans it necessarily also has to apply to<00:47:17.240> source<00:47:17.560> code<00:47:17.800> views,<00:47:18.480> right?<00:47:18.800> So,<00:47:19.080> it's\nto source code views, right? So, it's\nto source code views, right? So, it's it's<00:47:19.880> I<00:47:19.960> think<00:47:20.160> eventually<00:47:20.600> it'll<00:47:20.760> become\nit's I think eventually it'll become\nit's I think eventually it'll become that.<00:47:21.760> Um\nthat. Um\nthat. Um but<00:47:22.640> it's<00:47:22.760> just<00:47:22.920> not<00:47:23.360> the<00:47:23.440> high<00:47:23.680> priority\nbut it's just not the high priority\nbut it's just not the high priority right<00:47:24.440> now<00:47:24.560> cuz<00:47:24.760> obviously<00:47:25.040> we<00:47:25.120> have<00:47:25.240> the\nright now cuz obviously we have the\nright now cuz obviously we have the porting<00:47:25.720> stuff<00:47:25.960> to<00:47:26.040> do<00:47:26.240> before<00:47:26.440> we<00:47:26.520> get<00:47:26.640> to<00:47:26.760> all\nporting stuff to do before we get to all\nporting stuff to do before we get to all the<00:47:27.040> fancy<00:47:27.440> stuff.<00:47:27.800> We<00:47:27.880> have<00:47:28.000> porting<00:47:28.400> to<00:47:28.520> do\nthe fancy stuff. We have porting to do\nthe fancy stuff. We have porting to do both<00:47:29.320> to<00:47:29.560> Linux<00:47:29.920> but<00:47:30.040> also<00:47:30.400> to<00:47:30.600> from<00:47:30.800> x64<00:47:31.440> to\nboth to Linux but also to from x64 to\nboth to Linux but also to from x64 to arm,<00:47:32.520> um<00:47:32.880> and<00:47:32.960> then<00:47:33.080> probably<00:47:33.520> like<00:47:33.720> risk<00:47:34.000> five\narm, um and then probably like risk five\narm, um and then probably like risk five or<00:47:34.480> whatever,<00:47:34.960> and<00:47:35.080> then<00:47:35.360> like<00:47:35.840> we<00:47:35.920> just<00:47:36.080> want\nor whatever, and then like we just want\nor whatever, and then like we just want to<00:47:36.280> start<00:47:36.480> doing<00:47:36.720> all<00:47:36.840> the<00:47:37.080> we<00:47:37.200> want<00:47:37.320> to<00:47:37.400> cover\nto start doing all the we want to cover\nto start doing all the we want to cover those<00:47:37.880> bases<00:47:38.320> first<00:47:38.800> so<00:47:38.920> that<00:47:39.080> we<00:47:39.160> don't<00:47:39.480> get\nthose bases first so that we don't get\nthose bases first so that we don't get ahead<00:47:39.840> of<00:47:39.960> ourselves,<00:47:40.960> um<00:47:41.280> and<00:47:41.400> build<00:47:42.080> all\nahead of ourselves, um and build all\nahead of ourselves, um and build all those<00:47:42.440> kinds<00:47:42.680> of<00:47:42.760> crazy<00:47:43.040> features<00:47:43.400> on<00:47:43.520> a\nthose kinds of crazy features on a\nthose kinds of crazy features on a really<00:47:43.960> unstable<00:47:44.440> foundation.<00:47:44.960> So,<00:47:45.040> we<00:47:45.160> want\nreally unstable foundation. So, we want\nreally unstable foundation. So, we want to<00:47:45.360> make<00:47:45.440> sure<00:47:45.560> to<00:47:45.640> do<00:47:45.760> it<00:47:45.920> really<00:47:46.440> really<00:47:46.800> uh\nto make sure to do it really really uh\nto make sure to do it really really uh um\num\num really<00:47:49.120> appropriately,<00:47:50.080> I<00:47:50.160> guess<00:47:50.320> is<00:47:50.440> what<00:47:50.560> I\nreally appropriately, I guess is what I\nreally appropriately, I guess is what I would<00:47:50.720> say.<00:47:51.200> Um<00:47:51.520> so,<00:47:51.840> not<00:47:52.160> anytime<00:47:52.560> soon,<00:47:53.080> but\nwould say. Um so, not anytime soon, but\nwould say. Um so, not anytime soon, but there<00:47:53.600> are<00:47:53.800> a<00:47:53.840> lot<00:47:54.040> of<00:47:54.120> features<00:47:54.480> in<00:47:54.560> the<00:47:54.640> rad\nthere are a lot of features in the rad\nthere are a lot of features in the rad debugger<00:47:55.120> to<00:47:56.000> hook<00:47:56.200> up<00:47:56.360> to<00:47:56.480> an<00:47:56.600> editor,\ndebugger to hook up to an editor,\ndebugger to hook up to an editor, which<00:47:58.120> I<00:47:58.160> could<00:47:58.320> talk<00:47:58.480> about,<00:47:58.680> too,<00:47:58.840> but<00:47:59.640> um\nwhich I could talk about, too, but um\nwhich I could talk about, too, but um anyways.\nanyways.\nanyways. >> [music]\n[music]\n[music]", + "fetched_at": "2026-06-29T15:02:02.515849+00:00" +} \ No newline at end of file