LEGO Scenes Plan – Static vs Dynamic Frameworks Dispatching

Visual illustrations using LEGO figures to make technical concepts tangible and engaging.

Візуальні ілюстрації з LEGO фігурками для наочного пояснення технічних концепцій.


Available LEGO Inventory / Доступний LEGO інвентар

Category / Категорія Items / Предмети
The Office (21336) Michael Scott, Dwight Schrute, Jim Halpert, Pam Beesly + офісне оточення
Figures / Фігурки Зомбі з інструментами, робітники (один з них робот), 12 різних жуків
Text / Текст LEGO букви та цифри
Furniture / Меблі Піаніно, акваріум з рибкою, книжкова шафа, шафа для документів, сейф, дартс, більярд
Tech / Техніка Комп’ютерний стіл з 2 моніторами, набір телефонів + планшет, відеокамера на триногі, стіл з мікроскопом
Retro / Ретро Вимірювальні стелажі з бабінами (стиль вінтажних комп’ютерів/осцилографів)
Other / Інше Банкомат

Selected Scenes (6 total) / Обрані сцени (6 штук)

Scene 3 – Stub + Trampoline / Сцена 3 – Стаб + Трамплін

  • Article / Стаття: 1 (Dispatching Model)
  • Section / Секція: Stub / Trampoline (aka dyld resolver)
  • Illustration / Ілюстрація: Content-data-preparation/scene-sketches/scene_3_stub_trampoline_illustrated.png

Scene 3 – Stub + Trampoline

Concept / Концепт: Michael (the caller) stands at a desk/shelf with a red STUB label. A ramp (trampoline) sits in the center of the scene. Dwight (dyld resolver) stands on a pedestal on the other side, pointing toward the real function target. Measurement racks in the background give a retro computer/runtime vibe.

Michael (caller/викликаючий код) стоїть біля полиці з монітором та червоним написом STUB. В центрі сцени – рампа (трамплін). Dwight (dyld resolver) стоїть на п’єдесталі з іншого боку і вказує напрямок до реальної функції. Вимірювальні стелажі на фоні створюють атмосферу ретро-комп’ютера.

Layout (left to right) / Розкладка (зліва направо):

  1. Michael at the left, near the shelf with monitors – he is the caller / Michael зліва, біля полиці з моніторами – він є caller
  2. Red STUB label attached to the shelf – the entry point / Червоний напис STUB на полиці – точка входу
  3. Yellow arrow from STUB across the scene – “where do I jump?” / Жовта стрілка від STUB через сцену – “куди стрибати?”
  4. Brown LEGO ramp in the center – the trampoline / Коричнева LEGO рампа в центрі – трамплін
  5. Dwight standing on a small pedestal to the right – dyld resolver / Dwight на невеличкому п’єдесталі справа – dyld resolver
  6. Green labeled build (REAL FUNC) at far right – the target function / Зелена конструкція з написом (REAL FUNC) праворуч – цільова функція
  7. Measurement rack in background right – runtime environment / Вимірювальний стелаж на фоні справа – середовище виконання

Props / Реквізит:

  • Michael figure = caller code / фігурка Michael = код що викликає
  • LEGO ramp/wedge = the trampoline / LEGO рампа = трамплін
  • Dwight on pedestal = dyld resolver / Dwight на п’єдесталі = dyld resolver
  • Green build with label = target function add(Int,Int)->Int / зелена конструкція = цільова функція
  • Measurement racks = retro runtime vibe / вимірювальні стелажі = ретро атмосфера runtime
  • Shelf with monitors = the calling context / полиця з моніторами = контекст виклику

Caption idea / Ідея підпису:

“The stub asks dyld: ‘Where do I jump?’ – dyld resolves the address.” “Стаб питає dyld: ‘Куди стрибати?’ – dyld знаходить адресу.”

Photo count / К-сть фото: 1 фото


Scene 4 – Lazy Binding (two frames) / Сцена 4 – Лінива прив’язка (два кадри)

  • Article / Стаття: 1 (Dispatching Model)
  • Section / Секція: Apple-style dispatch path / Lazy Symbol Pointer Table
  • Illustration / Ілюстрація: Content-data-preparation/scene-sketches/scene_4_lazy_binding_illustrated.png

Scene 4 – Lazy Binding

Concept (two photos – comic strip style) / Концепт (два фото – стиль коміксу):

Frame 1 – First Call (GOT = nil) / Кадр 1 – Перший виклик (GOT = nil): Michael sits at the computer desk (2 monitors). The desk surface is EMPTY – no phone, no tablet, nothing useful. He looks confused with “?” marks around him. Filing cabinet behind him is closed (symbols not yet resolved).

Michael сидить за комп’ютерним столом (2 монітори). Стіл ПОРОЖНІЙ – ні телефону, ні планшету, нічого. Він розгублений, навколо нього знаки “?”. Шафа для документів за ним закрита (символи ще не знайдені).

Frame 2 – After Resolution (GOT = address) / Кадр 2 – Після знаходження (GOT = адреса): Same scene, same desk. Now a green PHONE sits on the desk (= the resolved pointer). Michael is happy. Dwight stands nearby (he just resolved it). Filing cabinet is now open with a green drawer visible.

Та сама сцена, той самий стіл. Тепер зелений ТЕЛЕФОН лежить на столі (= знайдений вказівник). Michael задоволений. Dwight стоїть поруч (він щойно все вирішив). Шафа тепер відкрита, видно зелену шухляду.

Layout (side by side, divided by vertical line) / Розкладка (поруч, розділені вертикальною лінією):

  • Left half / Ліва частина: Michael confused + empty desk + closed cabinet / Michael розгублений + порожній стіл + закрита шафа
  • Right half / Права частина: Michael happy + phone on desk + Dwight nearby + open cabinet / Michael щасливий + телефон на столі + Dwight поруч + відкрита шафа

Props / Реквізит:

  • Computer desk with 2 monitors = the GOT (Global Offset Table) / комп’ютерний стіл з 2 моніторами = GOT
  • Phone/tablet placed on desk = the resolved function pointer / телефон/планшет на столі = знайдений вказівник на функцію
  • Filing cabinet = symbol table (closed in Frame 1, open in Frame 2) / шафа для документів = таблиця символів (закрита в кадрі 1, відкрита в кадрі 2)
  • Dwight = dyld resolver (appears only in Frame 2) / Dwight = dyld resolver (з’являється тільки в кадрі 2)
  • Microscope on side table (optional) = debugging/inspecting / мікроскоп на бічному столі (опціонально) = дебаг/інспекція

Caption idea / Ідея підпису:

“First call: the GOT entry is empty – dyld resolves the address. Every call after that – it’s already there.” “Перший виклик: запис у GOT порожній – dyld шукає адресу. Кожен наступний виклик – адреса вже на місці.”

Photo count / К-сть фото: 2 фото (до/після, один і той самий ракурс камери)


Scene 5 – SPM vs Xcode Framework / Сцена 5 – SPM проти Xcode Framework

  • Article / Стаття: 2 (Hands-on Experiments)
  • Section / Секція: Test Projects (cover image candidate / кандидат на обкладинку)
  • Illustration / Ілюстрація: Content-data-preparation/scene-sketches/scene_5_spm_vs_xcode_illustrated.png

Scene 5 – SPM vs Xcode Framework

Concept (two workspaces side by side) / Концепт (два робочі місця поруч):

Left – SPM (clean) / Зліва – SPM (чисто): A clean, minimal desk. One monitor showing “Package.swift”. Robot worker figure stands calmly beside it. Only a few items on the desk. Everything is tidy and organized.

Чистий, мінімалістичний стіл. Один монітор з “Package.swift”. Фігурка робота-працівника спокійно стоїть поруч. Лише кілька предметів на столі. Все охайно і організовано.

Right – Xcode Framework (busy) / Справа – Xcode Framework (хаос): A cluttered desk overflowing with settings. Two monitors, multiple red setting boxes (Mach-O Type, Embed opt, Link libs, Search path, Signing). Dwight stands next to it with “!” marks – he is stressed, juggling too many options. Filing cabinet nearby is stuffed.

Захаращений стіл, переповнений налаштуваннями. Два монітори, безліч червоних карток налаштувань (Mach-O Type, Embed opt, Link libs, Search path, Signing). Dwight стоїть поруч з “!” – він в стресі, жонглює занадто великою кількістю опцій. Шафа для документів поруч набита під зав’язку.

Layout (divided by vertical line) / Розкладка (розділені вертикальною лінією):

  • Left / Зліва: Robot worker + clean desk + Package.swift on monitor + green “clean” label / робот-працівник + чистий стіл + Package.swift на моніторі
  • Right / Справа: Dwight stressed + cluttered desk + many red config boxes + filing cabinet / Dwight в стресі + захаращений стіл + багато червоних карток + шафа

Props / Реквізит:

  • Robot worker figure = automated/simple SPM workflow / фігурка робота = автоматизований/простий процес SPM
  • Dwight = manual Xcode Framework configuration (overwhelmed) / Dwight = ручне налаштування Xcode Framework (перевантажений)
  • Computer desk with monitors = workspace / комп’ютерний стіл з моніторами = робоче місце
  • Filing cabinet = build settings storage / шафа для документів = сховище налаштувань збірки
  • Red LEGO bricks as “config cards” scattered on Xcode side / червоні LEGO цеглинки як “картки налаштувань” розкидані з боку Xcode
  • LEGO letters for labels (optional) / LEGO букви для написів (опціонально)

Caption ideas / Ідеї підписів:

SPM: “One file. One config. Build.” / “Один файл. Один конфіг. Збірка.” Xcode Framework: “Mach-O type, embed options, link settings, search paths, signing…” / “Mach-O тип, опції вбудовування, лінкування, шляхи пошуку, підписання…”

Photo count / К-сть фото: 1-2 фото (одна розділена сцена або дві окремі)


Scene 7 – otool Inspection / Сцена 7 – Інспекція otool

  • Article / Стаття: 2 (Hands-on Experiments)
  • Section / Секція: Inspecting what type of Linked Images we use (otool -L)
  • Illustration / Ілюстрація: Content-data-preparation/scene-sketches/scene_7_otool_inspection_illustrated.png

Scene 7 – otool Inspection

Concept / Концепт: CSI LEGO scene. Dwight as the inspector holds a magnifying glass up to a large red “APP BINARY” structure. The binary is “opened up” showing its internal segments (__TEXT, __DATA, LC_LOAD_DYLIB, LC_RPATH). A white “terminal output” panel at the bottom shows the otool -L results. Microscope and video camera nearby document the investigation.

Сцена в стилі CSI LEGO. Dwight як інспектор тримає лупу біля великої червоної конструкції “APP BINARY”. Бінарник “розкритий” і показує внутрішні сегменти (__TEXT, __DATA, LC_LOAD_DYLIB, LC_RPATH). Біла панель “термінального виводу” внизу показує результати otool -L. Мікроскоп та відеокамера поруч документують розслідування.

Layout / Розкладка:

  1. Dwight (left) holding magnifying glass aimed at the binary / Dwight (зліва) тримає лупу спрямовану на бінарник
  2. Large red APP BINARY structure (center) with visible internal segments / велика червона конструкція APP BINARY (центр) з видимими внутрішніми сегментами
  3. White panel at bottom of binary showing otool output text / біла панель внизу бінарника з текстом виводу otool
  4. Microscope on a table (right, upper) = detailed inspection tool / мікроскоп на столі (справа, зверху) = інструмент детальної інспекції
  5. Video camera on tripod (right, lower) = documenting the investigation / відеокамера на триногі (справа, знизу) = документування розслідування

Props / Реквізит:

  • Dwight figure = the inspector/developer / фігурка Dwight = інспектор/розробник
  • Magnifying glass accessory (or built from LEGO) / лупа (аксесуар або зібрана з LEGO)
  • Large red LEGO build = APP BINARY with labeled sections / велика червона LEGO конструкція = APP BINARY з підписаними секціями
  • LEGO letters/labels for segment names / LEGO букви/написи для назв сегментів
  • Microscope = detailed binary inspection / мікроскоп = детальна інспекція бінарника
  • Video camera on tripod = documenting the investigation / відеокамера на триногі = документування розслідування
  • White paper/tile = otool terminal output / білий папір/плитка = термінальний вивід otool

Caption idea / Ідея підпису:

“otool -L: cracking open the binary to see what’s really linked inside.” “otool -L: розкриваємо бінарник, щоб побачити, що насправді злінковано всередині.”

Photo count / К-сть фото: 1 фото


Scene 9 – Debug Lies to You / Сцена 9 – Debug бреше тобі

  • Article / Стаття: 3 (Debug vs Release)
  • Section / Секція: The Symptom / What Is .debug.dylib
  • Illustration / Ілюстрація: Content-data-preparation/scene-sketches/scene_9_debug_lies_illustrated.png

Scene 9 – Debug Lies to You

Concept / Концепт: Michael sits at the computer desk (2 monitors, phone and tablet on desk) – everything works, he is happy. BUT: a bookshelf acts as a “wall” dividing the scene. Behind the wall (visible to the reader but NOT to Michael), Dwight is physically holding a stack of red framework blocks together with both hands. He IS the .debug.dylib. Without him, the blocks would scatter. Measurement rack in the far background adds retro tech atmosphere.

Michael сидить за комп’ютерним столом (2 монітори, телефон і планшет на столі) – все працює, він задоволений. АЛЕ: книжкова шафа виступає “стіною”, що розділяє сцену. За стіною (видно читачу, але НЕ видно Michael), Dwight фізично тримає купу червоних блоків фреймворку обома руками. Він І Є .debug.dylib. Без нього блоки б розсипались. Вимірювальний стелаж на дальньому фоні додає атмосферу ретро-техніки.

Layout (left to right) / Розкладка (зліва направо):

  1. Michael (happy, :-)) at left, facing desk / Michael (щасливий) зліва, обличчям до столу
  2. Computer desk with 2 monitors, phone, tablet – “ALL WORKS” label / комп’ютерний стіл з 2 моніторами, телефон, планшет – напис “ALL WORKS”
  3. Bookshelf acting as a WALL (divider) in the center / книжкова шафа як СТІНА (розділювач) в центрі
  4. Dwight behind the wall, arms extended holding red framework blocks / Dwight за стіною, руки витягнуті, тримає червоні блоки фреймворку
  5. Red framework block structure he is supporting / червона конструкція з блоків, яку він підтримує
  6. Measurement rack in far right background / вимірювальний стелаж на фоні справа

Key visual trick / Ключовий візуальний трюк: The reader/photographer sees both sides. Michael only sees his side. The bookshelf wall hides Dwight from Michael’s perspective. Caption at bottom: “Reader sees Dwight behind the wall. Michael does NOT see him.”

Читач/фотограф бачить обидва боки. Michael бачить тільки свій бік. Книжкова шафа-стіна ховає Dwight від Michael. Підпис внизу: “Читач бачить Dwight за стіною. Michael його НЕ бачить.”

Props / Реквізит:

  • Michael figure = developer in DEBUG mode (blissfully unaware) / фігурка Michael = розробник в DEBUG режимі (блаженно необізнаний)
  • Computer desk with 2 monitors = running app / комп’ютерний стіл з 2 моніторами = запущений додаток
  • Phone + tablet on desk = everything is working / телефон + планшет на столі = все працює
  • Bookshelf = the “wall” / abstraction layer / книжкова шафа = “стіна” / шар абстракції
  • Dwight = .debug.dylib (Xcode’s hidden support) / Dwight = .debug.dylib (прихована підтримка Xcode)
  • Red LEGO blocks = framework code Dwight is holding together / червоні LEGO блоки = код фреймворку, який Dwight тримає разом
  • Measurement rack = runtime/debug equipment background / вимірювальний стелаж = обладнання runtime/debug на фоні

Caption idea / Ідея підпису:

“DEBUG mode: everything works… but only because Xcode (.debug.dylib) is holding it together behind the scenes.” “DEBUG режим: все працює… але тільки тому, що Xcode (.debug.dylib) тримає все разом за лаштунками.”

Photo count / К-сть фото: 1 фото (широкий кут, щоб показати обидва боки стіни)


Scene 10 – Release Crash / Сцена 10 – Краш в Release

  • Article / Стаття: 3 (Debug vs Release)
  • Section / Секція: Why RELEASE Does Not Forgive You
  • Illustration / Ілюстрація: Content-data-preparation/scene-sketches/scene_10_release_crash_illustrated.png

Scene 10 – Release Crash

Concept / Концепт: Same desk as Scene 9, but now: the bookshelf wall is GONE. Dwight is GONE (empty spot with “DWIGHT WAS HERE” label). Michael is knocked over on his side (X_X). The red framework blocks are SCATTERED across the floor/table. Two zombie figures approach from the right – they represent runtime bugs/crashes. Video camera on tripod documents the disaster. Measurement rack stands silently in the background.

Той самий стіл що в сцені 9, але тепер: книжкова шафа-стіна ЗНИКЛА. Dwight ЗНИК (порожнє місце з написом “DWIGHT WAS HERE”). Michael перекинутий набік (X_X). Червоні блоки фреймворку РОЗКИДАНІ по підлозі/столу. Дві фігурки зомбі наближаються справа – вони уособлюють runtime баги/краші. Відеокамера на триногі документує катастрофу. Вимірювальний стелаж мовчки стоїть на фоні.

Layout (left to right) / Розкладка (зліва направо):

  1. Video camera on tripod (far left) documenting the scene / відеокамера на триногі (зліва) документує сцену
  2. Michael knocked over (X_X) near the desk / Michael перекинутий (X_X) біля столу
  3. Computer desk with monitors still standing – but desk is EMPTY (no phone/tablet) / комп’ютерний стіл з моніторами ще стоїть – але стіл ПОРОЖНІЙ (ні телефону/планшету)
  4. “DWIGHT WAS HERE” empty spot where the bookshelf used to be / “DWIGHT WAS HERE” порожнє місце де була книжкова шафа
  5. Red framework blocks SCATTERED across the floor (random positions, fallen) / червоні блоки фреймворку РОЗКИДАНІ по підлозі (випадкові позиції, впали)
  6. Two zombie figures approaching from right with yellow arrows pointing at the mess / дві фігурки зомбі наближаються справа з жовтими стрілками до хаосу
  7. Measurement rack in far right background (silent witness) / вимірювальний стелаж на фоні справа (мовчазний свідок)

Props / Реквізит:

  • Michael figure (knocked over/fallen) = crashed app / фігурка Michael (перекинутий) = додаток що впав
  • Computer desk = still there but useless / комп’ютерний стіл = ще стоїть, але марний
  • Empty spot = Dwight (.debug.dylib) is gone / порожнє місце = Dwight (.debug.dylib) зник
  • Scattered red LEGO blocks = framework code that fell apart / розкидані червоні LEGO блоки = код фреймворку що розвалився
  • Zombie figures = runtime bugs/crashes arriving / фігурки зомбі = runtime баги/краші що наближаються
  • Video camera on tripod = evidence documentation / відеокамера на триногі = документування доказів
  • Measurement rack = runtime equipment (now useless) / вимірювальний стелаж = обладнання runtime (тепер марне)

Caption idea / Ідея підпису:

“RELEASE mode: no .debug.dylib, no safety net. dyld can’t find the framework. Crash.” “RELEASE режим: немає .debug.dylib, немає страховки. dyld не може знайти фреймворк. Краш.”

Photo count / К-сть фото: 1 фото


Additional Scene Ideas (Not Selected, Lower Priority) / Додаткові ідеї сцен (не обрані, нижчий пріоритет)

These can be added later if the selected scenes work well:

Їх можна додати пізніше, якщо обрані сцени спрацюють добре:

# Scene / Сцена Article / Стаття Section / Секція Concept / Концепт
1+2 Static vs Dynamic Linking / Статичне vs динамічне лінкування 1 Static/Dynamic linking Monolithic build vs two structures with a bridge / Моноліт vs дві конструкції з мостом
6 Embed & Sign vs Do Not Embed / Вбудувати vs не вбудувати 2 Framework embedding Dwight carries safe inside vs Jim leaves it outside / Dwight несе сейф всередину vs Jim залишає його зовні
8 Static vs Dynamic visual model / Візуальна модель static vs dynamic 2 Visual Model of Dispatching Monolith vs modular builds side by side / Моноліт vs модульні збірки поруч
11 @rpath resolution / Пошук @rpath 3 What Is @rpath Jim opening doors one by one, searching for the framework / Jim відкриває двері одну за одною, шукає фреймворк
12 Three Scenarios triptych / Триптих трьох сценаріїв 3 Three Realities, One Table Three mini-scenes: DEBUG dynamic, RELEASE dynamic, static / Три міні-сцени: DEBUG dynamic, RELEASE dynamic, static

Photography Notes / Нотатки для фотографування

  • Shoot on a neutral surface (gray LEGO baseplate or plain background) / Знімати на нейтральній поверхні (сіра LEGO базова плита або однотонний фон)
  • Consistent lighting across all scenes / Однакове освітлення для всіх сцен
  • Same camera angle for “before/after” pairs (Scenes 4, 9 vs 10) / Той самий ракурс камери для пар “до/після” (сцени 4, 9 vs 10)
  • Use LEGO letters for labels where possible (e.g., “APP”, “dylib”, “GOT”) / Використовувати LEGO букви для написів де можливо
  • Keep scenes compact – they will be displayed at ~700-900px width in the blog / Тримати сцени компактними – в блозі вони показуються ~700-900px шириною
  • For Scene 9 vs 10: shoot from the SAME position so the contrast is dramatic / Для сцен 9 vs 10: знімати з ОДНОЇ позиції для драматичного контрасту
  • Zombies in Scene 10 should approach from the same side Dwight was on in Scene 9 / Зомбі в сцені 10 мають наближатися з того ж боку, де був Dwight в сцені 9

Placement in Articles / Розміщення в статтях

Scene / Сцена Article / Стаття Insert after section / Вставити після секції
3 (Stub + Trampoline) 1 Trampoline (aka dyld resolver)
4 (Lazy Binding) 1 Lazy Symbol Pointer Table
5 (SPM vs Xcode Framework) 2 Test Projects (or use as cover / або як обкладинку)
7 (otool Inspection) 2 Inspecting linked images
9 (Debug Lies) 3 What Is .debug.dylib
10 (Release Crash) 3 Why RELEASE Does Not Forgive You

Scene Sketches Index / Індекс скетчів

All illustrated sketches are in Content-data-preparation/scene-sketches/:

Всі ілюстровані скетчі знаходяться в Content-data-preparation/scene-sketches/:

File / Файл Scene / Сцена
scene_3_stub_trampoline_illustrated.png Stub + Trampoline / Стаб + Трамплін
scene_4_lazy_binding_illustrated.png Lazy Binding (two frames) / Лінива прив’язка (два кадри)
scene_5_spm_vs_xcode_illustrated.png SPM vs Xcode Framework
scene_7_otool_inspection_illustrated.png otool Inspection (CSI LEGO) / Інспекція otool
scene_9_debug_lies_illustrated.png Debug Lies to You / Debug бреше тобі
scene_10_release_crash_illustrated.png Release Crash / Краш в Release
Last updated on