PageSourceSearch

https://dorlugasigal.netlify.app/

html dorlugasigal.netlify.app collected 2026-10-03 10:39:43 UTC 22,508 bytes, 180 lines download raw bytes

1<!doctype html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8" />
5<!-- This site is hosted on Netlify. Anyone can build and deploy a site
6     like this one for free: https://netlify.new/?utm_campaign=loops&utm_source=ai-legible&utm_medium=owned&utm_content=comment&utm_id=6dac97f9-817a-412e-8b98-e65f75067ac8
7     Netlify hosting facts for this site: static/SSR served via Netlify Edge. -->
8    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
9    <meta name="theme-color" content="#101b23" />
10    <meta name="description" content="Dor Lugasi-Gal, Senior Software Engineer &amp; Forward Deployed Engineer. Explore the workspace, music, writing, and ways to get in touch." />
11    <title>Dor Lugasi-Gal | The workspace</title>
12    <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
13    
13<script type="module" crossorigin src="/assets/index-DU56Y06u.js"></script>
13
14    <link rel="stylesheet" crossorigin href="/assets/index-BMNO2iR_.css">
15  </head>
16  <body data-model-state="loading" data-view="entry" data-camera-mode="look" data-mouse-locked="false" data-guides="false" data-intro="loading" data-paused="false">
17    <a class="skip-link" href="#links-toggle">Skip to portfolio links</a>
18    <header class="masthead">
19      <a class="identity" href="/" aria-label="Dor Lugasi-Gal, Senior Software Engineer and Forward Deployed Engineer, return to the entrance"><span class="monogram" aria-hidden="true">d.</span><h1><span id="identity-name">Dor Lugasi-Gal</span><span class="identity-role">Senior Software Engineer <span>&amp; Forward Deployed Engineer</span></span></h1></a>
20      <nav class="navigation" aria-label="Portfolio">
21        <button id="quick-overview" class="hud-button" data-shortcut="V" aria-keyshortcuts="V" title="Overview / seat">Overview</button>
22        <details id="link-menu">
23          <summary id="links-toggle" data-shortcut="L" aria-keyshortcuts="L">Links <span aria-hidden="true">+</span></summary>
24          <div class="link-sheet">
25            <p class="menu-caption">A direct route out of the room.</p>
26            <section aria-labelledby="active-label"><h2 id="active-label">On the monitor</h2>
27              <a data-link="github" href="https://github.com/dorlugasigal" target="_blank" rel="noopener noreferrer">GitHub <span>Code &amp; projects &#8599;</span></a>
28              <a data-link="linkedin" href="https://www.linkedin.com/in/dor-lugasi-gal/" target="_blank" rel="noopener noreferrer">LinkedIn <span>Professional profile &#8599;</span></a>
29            </section>
30            <section aria-labelledby="room-links-label"><h2 id="room-links-label">In the room</h2>
31              <a data-link="cv" href="mailto:[email protected]?subject=CV%20request">Want my CV? <span>Send me an email &#8599;</span></a>
32              <a data-link="whatsapp" href="https://api.whatsapp.com/send?phone=972526889753&amp;text=Hi%20Dor!" target="_blank" rel="noopener noreferrer">WhatsApp <span>The iPhone &#8599;</span></a>
33              <a data-link="youtube" href="https://www.youtube.com/channel/UCM-rav7cI8i8KFQ6HgjKszA" target="_blank" rel="noopener noreferrer">YouTube <span>The music book &#8599;</span></a>
34              <a data-link="medium" href="https://medium.com/@dorlugasigal" target="_blank" rel="noopener noreferrer">Medium <span>Writing &#8599;</span></a>
35              <a data-link="microsoft" href="https://devblogs.microsoft.com/ise/author/dorlugasigal/" target="_blank" rel="noopener noreferrer">Microsoft blog <span>Engineering stories &#8599;</span></a>
36            </section>
37            <section aria-labelledby="contact-label"><h2 id="contact-label">Say hello</h2>
38              <a data-link="email" href="mailto:[email protected]">Email <span>Get in touch &#8599;</span></a>
39              <button class="copy-email" data-copy-email>Copy email address</button>
40              <a data-link="instagram" href="https://www.instagram.com/dorlugasigal/" target="_blank" rel="noopener noreferrer">Instagram <span>Beyond the desk &#8599;</span></a>
41            </section>
42            <details class="legacy-menu"><summary>legacy/ <span>Out for coffee</span></summary>
43              <a data-link="stackoverflow" href="https://stackoverflow.com/users/9615185/dor-lugasi-gal?tab=profile" target="_blank" rel="noopener noreferrer">Stack Overflow <span>Past answers &#8599;</span></a>
44            </details>
45            <p class="menu-footnote">External profiles open in a new tab. The CV is available by email only.</p>
46          </div>
47        </details>
48      </nav>
49    </header>
50    <main id="workspace" aria-label="Dor's interactive workspace">
51      <div id="intro" aria-hidden="true"><div class="intro-type"><div id="intro-name">Dor Lugasi-Gal</div><div id="intro-subtitle">Senior Software Engineer <span>&amp; Forward Deployed Engineer</span></div></div></div>
52      <img class="poster" src="/images/studio-preview.webp" alt="A modeled workspace with desks, music instruments, and books." />
53      <div id="room"></div>
54      <section id="pause-overlay" aria-labelledby="pause-title" hidden>
55        <div class="pause-card">
56          <p class="eyebrow">ROOM PAUSED</p><h2 id="pause-title">Beyond the workspace.</h2>
57          <div id="pause-links"><nav id="pause-professional" aria-label="Professional profiles and writing"></nav><nav id="pause-social" aria-label="Music and social links"></nav></div>
58          <div class="pause-extras"><a id="pause-email" data-link="email"><img class="platform-icon" src="/icons/email.svg" alt="" /> Email me &#8599;</a><a id="pause-cv" data-link="cv">Want my CV? Email me &#8599;</a><a id="pause-legacy" data-link="stackoverflow" target="_blank" rel="noopener noreferrer">Stack Overflow <span>/ legacy &#8599;</span></a></div>
59          <button class="copy-email" data-copy-email>Copy email address</button>
60          <button id="resume-room">Back to the room <span aria-hidden="true">&#8594;</span></button>
61        </div>
62      </section>
63      <div id="world-markers" role="navigation" aria-label="Optional room hints"></div>
64      <button id="open-room-menu" class="destination-toggle" data-shortcut="M" aria-keyshortcuts="M" aria-controls="room-menu" aria-expanded="false" aria-label="Open destinations sidebar"><span aria-hidden="true">&#9776;</span><span>Places</span></button>
65      <div id="crosshair" aria-hidden="true"></div>
66      <section id="egg-controls" aria-label="Window egg throwing" hidden>
67        <div class="egg-copy"><strong>EGG DROP</strong><span>An optional courtyard challenge.</span></div>
68        <button id="egg-open-challenge" data-shortcut="E" aria-keyshortcuts="E">Take the challenge</button>
69      </section>
70      <section id="egg-game-hud" aria-label="Egg Drop scoreboard" hidden>
71        <div class="egg-hud-top"><span>EGG DROP</span><span id="egg-combo">RANKED RUN</span><button id="egg-pause" data-shortcut="P" aria-keyshortcuts="P">Pause</button><button id="egg-quit" data-shortcut="Q" aria-keyshortcuts="Q">End run</button></div>
72        <div class="egg-hud-numbers"><div><small>SCORE</small><strong id="egg-live-score">00000</strong></div><div><small>WAVE</small><strong id="egg-wave">1/10</strong></div><div><small>EGGS</small><strong id="egg-ammo">12</strong></div><div><small>CHANCES</small><strong id="egg-lives">3</strong></div></div>
73        <p id="egg-wave-notice" role="status">5 TO GO</p>
74        <div id="egg-points" role="status" hidden><strong id="egg-points-value"></strong><span id="egg-points-label"></span></div>
75      </section>
76      <div id="egg-charge" hidden><div class="egg-power-track"><span id="egg-power-fill"></span></div><button id="throw-egg" aria-label="Hold to charge an egg, release to throw" aria-pressed="false"><span class="egg-icon" aria-hidden="true"></span><span><b id="egg-charge-hint">HOLD FOR POWER</b><small><span class="keyboard-only">Mouse / <kbd>G</kbd></span><span class="touch-only">Aim with another finger</span></small></span><strong id="egg-power-value">0%</strong></button></div>
77      <div id="egg-complaints" aria-live="polite" aria-atomic="false"></div>
78      <dialog id="egg-dialog" aria-labelledby="egg-dialog-title">
79        <button id="egg-close-dialog" aria-label="Close Egg Drop challenge" aria-keyshortcuts="Escape">&#215;</button>
80        <h2 id="egg-dialog-title">EGG DROP</h2>
81        <p id="egg-dialog-copy">Hold mouse or G for power. Release to throw. Survive ten waves.</p>
82        <details id="egg-rules"><summary>Rules &amp; scoring</summary><p>Follow the dotted arc and lead moving targets. Three escapees end your run.</p><div class="egg-target-types"><span>NEIGHBOR <b>100</b></span><span>BIG NEIGHBOR <b>220 / 2 hits</b></span><span>JOGGER <b>180 / fast</b></span><span>CHAIR RACER <b>350 / bonus</b></span></div><p class="egg-rule-detail">Consecutive hits build up to 4x. Bullseyes, long shots and spare eggs earn bonuses. Later waves add speed and wind. From wave 2, an optional balcony resident is worth 300 points; letting them leave costs no chance.</p></details>
83        <div id="egg-result" hidden><strong id="egg-final-score">0</strong><span>POINTS</span><p id="egg-final-detail"></p></div>
84        <div id="egg-start-controls"><button id="egg-accept" data-shortcut="E" aria-keyshortcuts="E" disabled>Accept challenge</button><button id="egg-offline" hidden>Play offline / unranked</button><button id="egg-retry-ticket" hidden>Retry connection</button></div>
85        <form id="egg-score-form" hidden><label for="egg-nickname">Public nickname</label><div><input id="egg-nickname" name="nickname" placeholder="Your nickname" minlength="2" maxlength="18" pattern="[a-zA-Z0-9 _.\-]{2,18}" autocomplete="off" required />
85<button id="egg-submit-score" type="submit">Post score</button></div></form>
86        <p id="egg-network" role="status"></p>
87        <button id="egg-play-again" data-shortcut="E" aria-keyshortcuts="E" hidden>One more round</button>
88        <details class="egg-board"><summary data-shortcut="B">Leaderboard</summary><div class="egg-board-heading"><button id="egg-refresh-board">Refresh</button></div><table><thead><tr><th scope="col">#</th><th scope="col">Nickname</th><th scope="col">Score</th><th scope="col">Wave</th></tr></thead><tbody id="egg-board-rows"></tbody></table><p id="egg-board-empty" hidden>The first spot could be yours.</p><p id="egg-board-status" role="status">Loading scores...</p></details>
89      </dialog>
90      <div class="heading-hud" aria-hidden="true"><span>WORKSPACE</span><span id="heading">0&#176;</span></div>
91      <div class="load-notice" id="load-notice" role="status"><span class="status-dot" aria-hidden="true"></span><span id="load-message">Opening the room...</span></div>
92      <div class="error-notice" id="error-notice" role="alert" hidden>
93        <h2>The room couldn't open.</h2><p id="error-message">All portfolio links and the CV email request are still available.</p>
94        <button id="error-links">Open portfolio links</button><button id="retry">Try again</button>
95      </div>
96      <div id="object-label" role="status" hidden></div>
97      <button id="enter-room" class="enter-room">Enter workspace <span>click to look freely</span></button>
98      <div id="interaction-prompt" hidden><kbd>E</kbd><span id="prompt-label">Interact</span></div>
99      <div id="move-stick" role="group" aria-label="Touch movement joystick"><span id="stick-knob"></span><span class="stick-caption">MOVE</span></div>
100      <aside id="focus-info" aria-label="Object interaction" hidden>
101        <section data-panel="cv" hidden>
102          <p class="eyebrow">CV / PRIVATE</p><h2>Want my CV?</h2>
103          <p id="cv-description" role="status">Send me an email. The full document is not embedded here.</p>
104          <a class="document-link" href="mailto:[email protected]?subject=CV%20request">Send me an email <span>&#8599;</span></a>
105          <button class="copy-email" data-copy-email>Copy email address</button>
106          <div class="focus-actions"><button id="cv-closer">Zoom +</button><button id="cv-fit">Fit page</button></div>
107        </section>
108        <section data-panel="phone" hidden>
109          <p class="eyebrow">PHONE / WHATSAPP</p><h2>Say hello.</h2>
110          <div class="focus-actions"><a href="https://api.whatsapp.com/send?phone=972526889753&amp;text=Hi%20Dor!" target="_blank" rel="noopener noreferrer">Open WhatsApp <span>&#8599;</span></a></div>
111        </section>
112        <section data-panel="songbook" hidden>
113          <p class="eyebrow">JAZZ / ORIGINAL LEAD SHEETS <span id="songbook-page"></span></p><h2>The Room Book.</h2>
114          <div class="songbook-paging"><button id="songbook-prev" aria-label="Previous jazz tune">&#8592;</button><select id="songbook-tune" aria-label="Choose a jazz tune"></select><button id="songbook-next" aria-label="Next jazz tune">&#8594;</button></div>
115          <div class="songbook-transport"><button id="songbook-play" aria-pressed="false">Play tune</button><button data-view="piano">Play the piano</button></div>
116          <label class="songbook-tempo"><span id="songbook-tempo-label">112 BPM</span><input id="songbook-tempo" aria-label="Jazz playback tempo" type="range" min="50" max="200" value="112" /></label>
117          <p id="songbook-status" role="status">Play a bar, or listen to the whole tune.</p>
118          <details class="songbook-bar-list"><summary>Play individual bars</summary><div id="songbook-chords"></div></details>
119          <div class="focus-actions"><a href="https://www.youtube.com/channel/UCM-rav7cI8i8KFQ6HgjKszA" target="_blank" rel="noopener noreferrer">More music on YouTube <span>&#8599;</span></a><button data-view="music">Back to the seat</button></div>
120        </section>
121        <section data-panel="books" hidden>
122          <p class="eyebrow">WRITING / THE BOOKSHELF</p>
123          <div class="focus-actions"><a href="https://medium.com/@dorlugasigal" target="_blank" rel="noopener noreferrer">Medium <span>&#8599;</span></a><a href="https://devblogs.microsoft.com/ise/author/dorlugasigal/" target="_blank" rel="noopener noreferrer">Microsoft blog <span>&#8599;</span></a></div>
124        </section>
125      </aside>
126      <nav id="screen-links" aria-label="Monitor links, keyboard accessible" hidden><span id="screen-location">Active profiles</span><div id="screen-actions"></div><button id="screen-section">Open legacy/</button><button id="screen-terminal" aria-label="Open monitor terminal">&gt;_</button></nav>
127      <form id="terminal-form" hidden autocomplete="off">
128        <label for="terminal-command">Monitor terminal command</label><input id="terminal-command" aria-label="Monitor terminal command" placeholder="login or stats" spellcheck="false" autocapitalize="off" enterkeyhint="send" maxlength="256" />
129        <button type="submit" aria-label="Run terminal command">&#8629;</button>
130        <pre id="terminal-accessible" class="sr-only" role="status" aria-l
130ive="polite"></pre>
131      </form>
132      <section id="piano-controls" aria-label="Playable piano controls" hidden>
133        <div><span class="eyebrow">PIANO / LIVE</span><span id="piano-status" role="status">Play a key</span></div>
134        <button id="piano-octave-down" aria-label="Lower keyboard octave">&minus;</button><span id="piano-octave">C4</span><button id="piano-octave-up" aria-label="Raise keyboard octave">+</button>
135        <button id="piano-sustain" aria-pressed="false">Sustain</button><button data-view="music">Back</button>
136        <p class="piano-keyboard-help">A W S E D F T G Y H U J K O L P ; ' &nbsp; / &nbsp; Space: sustain &nbsp; Z / X: octave</p>
137        <a class="piano-credit" href="/audio/piano/LICENSE-SOURCE.txt" target="_blank" rel="noopener noreferrer">Samples: Alexander Holm / CC BY 3.0</a>
138      </section>
139      <aside id="room-menu" aria-labelledby="room-menu-title" hidden>
140        <div class="room-menu-heading"><div><span class="eyebrow">GO TO / EXPLORE</span><h2 id="room-menu-title">Choose a place</h2></div><button id="close-room-menu" aria-label="Close destinations sidebar">&#215;</button></div>
141        <div class="view-controls" aria-label="Room views">
142          <button data-view="entry" data-shortcut="Shift+1" aria-keyshortcuts="Shift+1" aria-pressed="true" disabled>Door</button><button data-view="home" data-shortcut="Shift+2" aria-keyshortcuts="Shift+2" aria-pressed="false" disabled>Overview</button><button data-view="desk" data-shortcut="Shift+3" aria-keyshortcuts="Shift+3" aria-pressed="false" disabled>Desk seat</button><button data-view="music" data-shortcut="Shift+4" aria-keyshortcuts="Shift+4" aria-pressed="false" disabled>Piano seat</button>
143          <button id="zoom-out" aria-label="Zoom out (-)" aria-keyshortcuts="-" disabled>&minus;</button><button id="zoom-in" aria-label="Zoom in (+)" aria-keyshortcuts="+" disabled>+</button>
144        </div>
145        <div id="object-controls-slot"></div>
146        <nav id="destination-nav" class="destination-nav" aria-label="Find links in the room">
147          <button data-view="monitor" disabled><span>01</span> Monitor / profiles</button><button data-view="cv" disabled><span>02</span> Paper / request CV</button>
148          <button data-view="songbook" disabled><span>03</span> Jazz book / play &amp; listen</button><button data-view="books" disabled><span>04</span> Books / writing</button>
149          <button data-view="phone" disabled><span>05</span> iPhone / WhatsApp</button>
150          <button data-view="piano" disabled><span>06</span> Play the piano</button>
151          <button data-view="window" disabled><span>07</span> Window / Egg Drop challenge</button>
152        </nav>
153        <section id="room-controls" aria-label="Desk and lighting" hidden>
154          <div class="desk-control"><span class="eyebrow">Make yourself at home</span><button id="desk-height-toggle" data-shortcut="R" aria-keyshortcuts="R" aria-pressed="false">Raise to standing</button><span id="desk-height-status" role="status"></span></div>
155          <div id="tube-colors" aria-label="Individual tube light colors"></div>
156        </section>
157        <label class="guide-option"><input id="guide-toggle" type="checkbox" /> Show object hints <kbd>H</kbd></label>
158        <label class="look-sensitivity">Look sensitivity <kbd>[ / ]</kbd><span id="look-sensitivity-value">100%</span>
158<input id="look-sensitivity" aria-label="Look sensitivity" type="range" min="0.5" max="2" step="0.05" value="1" /></label>
159        <button id="mouse-look" data-shortcut="F" aria-keyshortcuts="F" aria-pressed="false" hidden disabled>Mouse look</button>
160        <details id="controls-help"><summary data-shortcut="?" aria-keyshortcuts="?">Controls</summary><div class="help-sheet">
161          <p class="keyboard-only"><b>Without a cursor</b><br /><kbd>L</kbd> Links, <kbd>V</kbd> Overview, <kbd>M</kbd> Places, <kbd>F</kbd> mouse capture, <kbd>T</kbd> terminal, <kbd>?</kbd> help. In Places: <kbd>1</kbd>&ndash;<kbd>7</kbd> destinations; <kbd>Shift+1</kbd>&ndash;<kbd>Shift+4</kbd> door / overview / desk / piano seat; <kbd>R</kbd> desk height; <kbd>B</kbd>/<kbd>O</kbd> cycle tube colors; <kbd>[</kbd>/<kbd>]</kbd> sensitivity; <kbd>+</kbd>/<kbd>-</kbd> zoom; <kbd>X</kbd> monitor profile section. Links and the pause hub show number shortcuts. <kbd>Tab</kbd> and <kbd>Enter</kbd> reach every remaining control. Piano keys and typing keep their normal behavior; <kbd>M</kbd> opens Places from the piano.</p>
162          <p class="keyboard-only"><b>First-person</b><br />Click the room to capture the mouse. <kbd>WASD</kbd> moves, the mouse looks freely, <kbd>Space</kbd> jumps, hold <kbd>C</kbd> to crouch, and <kbd>E</kbd> interacts. Moving or pressing <kbd>Esc</kbd> leaves an inspection and stands up. Otherwise, <kbd>Esc</kbd> toggles the pause/link hub. <kbd>V</kbd> switches overview.</p>
163          <p><b>Touch</b><br />The bottom-left stick stands up and moves, including from an inspection. Drag elsewhere to look, also when seated at the monitor. Tap an object to interact. Pinch to zoom.</p>
164          <p><b>Egg Drop</b><br />Choose Window in Places, then accept the optional challenge. <span class="keyboard-only">Hold the mouse button or <kbd>G</kbd> to charge.</span><span class="touch-only">Hold the throw button with one finger. Drag on the room with another finger to aim; lifting that aiming finger keeps the throw charged.</span> The dotted arc previews gravity and wind; release <span class="touch-only">the throw button </span>to throw. Big neighbors need two hits. Chain hits, tag fast runners and chair racers, and save eggs for bonus points. Three escapees end the run. Submit your score under a public nickname if you want to join the leaderboard.</p>
165          <p><b>Overview / inspection</b><br />Drag to orbit or pan. <span class="keyboard-only">Scroll/pinch to zoom. Browser zoom shortcuts still work.</span><span class="touch-only">Pinch to zoom.</span></p>
166          <p><b>Piano</b><br /><span class="keyboard-only">Play the modeled keys, or use A W S E D F... on your keyboard. Space sustains; Z/X change the keyboard octave.</span><span class="touch-only">Tap or slide across the piano keys. Use Sustain and the octave buttons; tap Back to finish.</span> Samples: <a href="/audio/piano/LICENSE-SOURCE.txt" target="_blank" rel="noopener noreferrer">Alexander Holm, CC BY 3.0</a>.</p>
167        </div></details>
168      </aside>
169    </main>
170    <footer class="room-footer">
171      <div class="sr-only"><span id="mode-label">ENTRANCE</span><p id="interaction-hint" aria-live="polite">WASD move. E interact. Use the side drawer for destinations.</p></div>
172      <div id="movement-hints" class="fps-keyboard" role="img" aria-label="W A S D move. Space jumps. C crouches. Escape leaves an interaction or pauses. H toggles object hints.">
173        <div class="movement-keys" aria-hidden="true"><kbd class="key-w">W</kbd><kbd>A</kbd><kbd>S</kbd><kbd>D</kbd><span>MOVE</span></div>
174        <div class="stance-keys" aria-hidden="true"><div><kbd class="space-key">SPACE</kbd><span>JUMP</span></div><div><kbd>C</kbd><span>CROUCH</span></div><div><kbd>ESC</kbd><span id="escape-hint">PAUSE</span></div><div><kbd class="hint-key">H</kbd><span>HINTS</span></div></div>
175      </div>
176      <div class="mini-map" aria-hidden="true"><svg viewBox="0 0 110 89"><rect class="map-room" x="8" y="8" width="94" height="73" /><g id="map-furniture"></g><path id="map-player" d="M0,-5 L4,4 L0,2 L-4,4 Z" /></svg></div>
177    </footer>
178    <noscript><p class="noscript-notice">3D needs JavaScript. Open <strong>Links</strong> above for profiles and the CV email request.</p></noscript>
179  </body>
180</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.