This commit is contained in:
Oliver Kennedy 2022-04-01 18:32:19 -04:00
parent ae5815d169
commit db703562a1
Signed by: okennedy
GPG key ID: 3E5F9B3ABD3FDB60
13 changed files with 3036 additions and 0 deletions

View file

@ -0,0 +1,222 @@
---
template: templates/talk_slides_v1.erb
title: "UB Hacking: Microkernel Notebooks"
---
<script>document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1"></' + 'script>')</script>
<section>
<h2>Microkernel Notebooks</h2>
<h4 style="margin-top: 20px;">Oliver Kennedy</h4>
<p style="font-size: 75%; width: 730px; margin-right: auto; margin-left: auto; margin-top: 100px;" >
<a href="https://vizierdb.info">
<img src="graphics/logos/vizier-blue.svg" height="80px" style="float: left; margin-right: 20px; vertical-align: middle;" />
</a>
Boris Glavic, Juliana Freire, Michael Brachmann, William Spoth, Poonam Kumari, Ying Yang, Su Feng, Heiko Mueller, Aaron Huber, and many more...</p>
</section>
<section>
<section>
<h2>But first...</h2>
</section>
<section>
<h3>Databases?</h3>
<img src="graphics/2022-04-02/er-diagrams.png" height="400px">
</section>
<section>
<img src="graphics/clipart/Female-or-Male-Unisex-Geek-or-Nerd-Light-Skin.svg">
</section>
<section>
<h2>250?</h2>
<img src="graphics/2022-04-02/250-textbook.png">
</section>
<section>
<img src="graphics/2022-04-02/Macintosh_classic_250.jpg">
<attribution>Adapted from <a href="http://creativecommons.org/licenses/by-sa/3.0/" title="Creative Commons Attribution-Share Alike 3.0">CC BY-SA 3.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=10101">Wikimedia Commons</a></attribution>
</section>
<section>
<img src="graphics/2022-04-02/nuclear_dino_db.png">
<attribution>Adapted from <a href="https://www.destroyallsoftware.com/talks/wat">Wat; Gary Bernhardt @ CodeMash 2012</a>
</section>
<section>
<h3>CSE 4/562</h3>
<ul>
<li>A bit of operating systems</li>
<li>A bit of hardware</li>
<li>A bit of compilers</li>
<li>A bit of distributed systems</li>
</ul>
<p class="fragment" style="font-weight: bold; margin-top: 50px">Applied Computer Science</p>
</section>
<section>
<img src="graphics/2022-04-02/db-convergence.svg">
</section>
</section>
<section>
<section>
<pre><code class="sql">
CREATE VIEW salesSinceLastMonth AS
SELECT l.*
FROM lineitem l, orders o
WHERE l.orderkey = o.orderkey
AND o.orderdate > DATE(NOW() - '1 Month')
</code></pre>
<div class="fragment" style="font-size: 70%;">
<pre><code class="sql">
SELECT partkey FROM salesSinceLastMonth
ORDER BY shipdate DESC LIMIT 10;
</code></pre>
<pre><code class="sql">
SELECT suppkey, COUNT(*)
FROM salesSinceLastMonth
GROUP BY suppkey;
</code></pre>
<pre><code class="sql">
SELECT partkey, COUNT(*)
FROM salesSinceLastMonth
GROUP BY partkey;
</code></pre>
</div>
</section>
<section>
<p><b>Opportunity:</b> Views exist to be queried frequently</p>
<p class="fragment"><b>Idea: </b> Pre-compute and save the views contents!<br/>
(like an index)</p>
</section>
<section>
<svg data-src="graphics/2022-04-02/DBToQ.svg" />
<attribution>openclipart.org</attribution>
</section>
<section>
<p>When the base data changes, <br/>the view needs to be updated too!</p>
</section>
<section>
<div style="font-size: 200%;">
$$\texttt{VIEW} \leftarrow Q(\mathcal D)$$
</div>
<p style="margin-top: 100px;">Our view starts off initialized</p>
</section>
<section>
<p style="margin-top: 100px;"><b>Idea:</b> Recompute the view from scratch when data changes.</p>
</section>
<section>
<div style="font-size: 200%;">
$$\texttt{WHEN } \mathcal D \leftarrow \mathcal D+\Delta\mathcal D \texttt{ DO: }\\
\texttt{VIEW} \leftarrow Q(\mathcal{D}+\Delta\mathcal{D})$$
</div>
</section>
<section>
<img src="graphics/clipart/Snail.jpg" height="400px">
<attribution><a href="http://creativecommons.org/licenses/by-sa/3.0/" title="Creative Commons Attribution-Share Alike 3.0">CC BY-SA 3.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=95926">Wikimedia Commons</a></attribution>
</section>
<section>
<div style="font-size: 200%;">
$$\texttt{WHEN } \mathcal D \leftarrow \mathcal{D}+\Delta\mathcal D \texttt{ DO: }\\
\texttt{VIEW} \leftarrow \texttt{VIEW} + \Delta Q(\mathcal D,\Delta\mathcal D)$$
</div>
<table style="margin-top: 50px;">
<tr class="fragment">
<td style="font-size: 150%;">$\Delta Q$</td>
<td>(ideally) Small &amp; fast query</td>
</tr>
<tr class="fragment">
<td style="font-size: 150%;">$+$</td>
<td>(ideally) Fast "merge" operation</td>
</tr>
</table>
</section>
<section>
<h3>Intuition</h3>
<div>
$$\mathcal{D} = \{\ 1,\ 2,\ 3,\ 4\ \} \hspace{1in} \Delta\mathcal{D} = \{\ 5\ \}$$
$$Q(\mathcal D) = \texttt{SUM}(\mathcal D)$$
</div>
<div style="margin-top: 50px;">
<div class="fragment">$$ 1 + 2 + 3 + 4 + 5 $$</div>
<div class="fragment">$$Q(\mathcal D+\Delta\mathcal D) \sim O(|\mathcal D| + |\Delta\mathcal D|)$$</div>
</div>
<div style="margin-top: 50px;">
<div class="fragment">$$ 10 + 5 $$</div>
<div class="fragment">$$\texttt{VIEW} + SUM(\Delta\mathcal D) \sim O(|\Delta\mathcal D|)$$</div>
</div>
</section>
<section>
<img src="graphics/2022-04-02/morpheus.jpeg">
<attribution>©1999 Warner Bros. Pictures</attribution>
</section>
</section>
<section>
<h2>Microkernel Notebooks</h2>
<h4 style="margin-top: 20px;">Oliver Kennedy</h4>
<p style="font-size: 75%; width: 730px; margin-right: auto; margin-left: auto; margin-top: 100px;" >
<a href="https://vizierdb.info">
<img src="graphics/logos/vizier-blue.svg" height="80px" style="float: left; margin-right: 20px; vertical-align: middle;" />
</a>
Boris Glavic, Juliana Freire, Michael Brachmann, William Spoth, Poonam Kumari, Ying Yang, Su Feng, Heiko Mueller, Aaron Huber, and many more...</p>
</section>
<section>
<section>
Jupyter / Monokernel Notebooks
- remind people what jupyter is
- behind the scenes look (cut/paste, monolithic kernel)
- problems (c.f., Joel Grus)
- Order of execution is unclear
- stale and edited cells not visible
</section>
</section>
<section>
<section>
Vizier
- Basic Model
- Behind the Scenes (Microkernel)
- Demo
- Basic UI
- Revise/Update
- Spreadsheet
- Replay on new data
- Caveats
- New Architecture
- Websockets
- Workflow Deltas ("Reactive" API rant, tie back to DBs)
</section>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View file

@ -0,0 +1,382 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="157.54681mm"
height="68.870308mm"
viewBox="0 0 157.5468 68.870308"
version="1.1"
id="svg8"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
sodipodi:docname="db-convergence.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker2838"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path2836"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker2774"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path2772"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker2578"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path2576"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="marker2450"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path2448"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(0.8,0,0,0.8,10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker1814"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path1812"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="marker1774"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path1772"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(0.8,0,0,0.8,10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1474"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1472"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker1446"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lstart"
inkscape:collect="always">
<path
transform="matrix(0.8,0,0,0.8,10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path1444"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path860"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(0.8,0,0,0.8,10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path863"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70710678"
inkscape:cx="258.09398"
inkscape:cy="12.727922"
inkscape:document-units="mm"
inkscape:current-layer="g926"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="1347"
inkscape:window-x="2360"
inkscape:window-y="56"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:pagecheckerboard="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-24.634606,-75.057983)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="95.900543"
y="111.78075"
id="text12"><tspan
sodipodi:role="line"
id="tspan10"
x="95.900543"
y="111.78075"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.264583">Databases</tspan></text>
<g
id="g3396"
transform="translate(0,-3.1750001)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="24.56846"
y="88.73513"
id="text16"><tspan
id="tspan18"
sodipodi:role="line"
x="24.56846"
y="88.73513"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583">Algorithms</tspan></text>
<path
inkscape:connector-curvature="0"
id="path34"
d="M 70.908332,104.38333 55.562499,91.154167"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" />
</g>
<g
id="g3430"
transform="translate(0,-3.1750001)">
<text
id="text32"
y="88.73513"
x="128.22105"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
y="88.73513"
x="128.22105"
sodipodi:role="line"
id="tspan30">Systems</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker1446);marker-end:url(#marker1474)"
d="M 136.525,91.154167 121.17917,104.38333"
id="path1442"
inkscape:connector-curvature="0" />
</g>
<g
id="g3447"
transform="translate(0,3.1750001)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="131.71231"
y="134.24347"
id="text28"><tspan
id="tspan26"
sodipodi:role="line"
x="131.71231"
y="134.24347"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583">Theory</tspan></text>
<path
inkscape:connector-curvature="0"
id="path1770"
d="M 136.525,126.60847 121.17917,113.37926"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker1774);marker-end:url(#marker1814)" />
</g>
<g
id="g3413"
transform="translate(0,3.1750001)">
<text
id="text24"
y="134.24347"
x="26.678925"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583"
y="134.24347"
x="26.678925"
sodipodi:role="line"
id="tspan22">Hardware</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker2774);marker-end:url(#marker2838)"
d="M 70.90833,113.37926 55.5625,126.60847"
id="path2770"
inkscape:connector-curvature="0" />
</g>
<g
id="g926"
transform="translate(48.154169,-8.9958333)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="43.514935"
y="90.226051"
id="text922"><tspan
id="tspan920"
sodipodi:role="line"
x="43.514935"
y="90.226051"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583">PL</tspan></text>
<path
inkscape:connector-curvature="0"
id="path924"
d="M 47.889579,112.32084 V 93.270835"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="-16.280899"
y="120.38855"
id="text1422"><tspan
id="tspan1420"
sodipodi:role="line"
x="-16.280899"
y="120.38855"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583">HCI</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="36.635777"
y="152.13864"
id="text2950"><tspan
id="tspan2948"
sodipodi:role="line"
x="36.635777"
y="152.13864"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583">AI/ML</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="96.96077"
y="120.91771"
id="text3056"><tspan
id="tspan3054"
sodipodi:role="line"
x="96.96077"
y="120.91771"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.264583">Data Sci.</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4019"
d="M 47.889579,143.01252 V 123.96251"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path4021"
d="M 94.456256,118.14158 H 75.406246"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path4023"
d="M 20.372918,118.14158 H 1.3229086"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3.3;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)"
sodipodi:nodetypes="cc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View file

@ -0,0 +1,406 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ns1="http://sozi.baierouge.fr"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
id="svg2"
sodipodi:docname="Female or Male Unisex Geek or Nerd.svg"
viewBox="0 0 356.65 939.59"
version="1.1"
inkscape:version="0.48.5 r10040"
>
<sodipodi:namedview
id="base"
bordercolor="#666666"
inkscape:pageshadow="2"
inkscape:window-y="19"
fit-margin-left="0"
pagecolor="#ffffff"
fit-margin-top="0"
inkscape:window-maximized="0"
inkscape:zoom="0.70710678"
inkscape:window-x="0"
inkscape:window-height="1181"
showgrid="false"
borderopacity="1.0"
inkscape:current-layer="g4003"
inkscape:cx="195.59949"
inkscape:cy="507.77228"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1163"
inkscape:pageopacity="0.0"
inkscape:document-units="px"
/>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(-370.84 -120.37)"
>
<g
id="g4033"
transform="matrix(7.2888 0 0 7.2888 -3453.5 -3711)"
>
<path
id="path3790"
d="m552.39 526.14c-19.996-0.3204-22.172 31.389-23.462 41.326l5.9312-2.8491 1.125 3.9375 5.3732-3.3794 1.339 3.9229 6.8881-4.2131 1.3375 4.0086 7.5568-4.2973 2.1554 3.9245 5.1709-3.8787 1.6544 4.3914 3.6483-2.9578s1.278-39.615-18.718-39.936z"
sodipodi:nodetypes="zccccccccccccz"
style="stroke:#ae8c70;fill:#b49076"
inkscape:connector-curvature="0"
/>
<path
id="path3817"
sodipodi:rx="3.4471455"
sodipodi:ry="4.8613591"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:square;fill:#f6d2b2"
sodipodi:type="arc"
d="m2.9168 132.05c0 2.6848-1.5433 4.8614-3.4471 4.8614s-3.4471-2.1765-3.4471-4.8614 1.5433-4.8614 3.4471-4.8614 3.4471 2.1765 3.4471 4.8614z"
transform="translate(566.12 420.5)"
sodipodi:cy="132.04575"
sodipodi:cx="-0.53033006"
/>
<path
id="path3792"
style="stroke:#dcb794;stroke-width:1.457;fill:#f6d2b2"
d="m8.25 114.47c-2.5707 0.0471-4.0661 0.46803-6.6875 0.6875l-0.86765 1.4 1.6802 12.53c-0.61317-1.3106-1.6229-2.1562-2.75-2.1562-1.8645 0-3.375 2.34-3.375 5.2188 0 2.8787 1.5105 5.1875 3.375 5.1875 1.6242 0 2.9899-1.7656 3.3125-4.125l5.1803 24.528 5.4566 3.9991 5.8899-3.2946 10.429-38.97-0.705-1.92c-6.984-2.33-13.226-3.23-20.938-3.09z"
sodipodi:nodetypes="scccsssccccccs"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
<g
id="g4003"
style="stroke:#818181;stroke-width:.61579"
transform="matrix(1.6239 0 0 1.6239 -344.34 -349.52)"
>
<path
id="path3996"
style="stroke-linejoin:round;stroke:#656565;stroke-linecap:round;stroke-width:.30789;fill:#ffffff"
transform="translate(536.43 420.93)"
inkscape:connector-curvature="0"
d="m13.688 142.22c-0.58625 0.0263-1.1666 0.10831-1.75 0.1875l0.15625 2.5 2.9688 0.0937 0.21875-2.75c-0.52419-0.0173-1.0607-0.0551-1.5938-0.0312z"
/>
<path
id="path3994"
style="stroke-linejoin:round;stroke:#656565;stroke-linecap:round;stroke-width:.30789;fill:#ffffff"
d="m13.479 142.27-0.04414 2.6769"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
</g
>
<path
id="path3855"
style="stroke:#bb9371;fill:none"
d="m5.5243 144.84c4.7157-0.54 14.347-1.11 17.413-0.29"
sodipodi:nodetypes="cc"
transform="translate(536.43 420.93)"
inkscape:connector-curvature="0"
/>
<path
id="path3857"
style="stroke:#dcb794;stroke-width:1.457;fill:none"
d="m8.25 114.47c-2.5707 0.0471-4.0661 0.46803-6.6875 0.6875l-0.86765 1.4 1.6802 12.53c-0.61317-1.3106-1.6229-2.1562-2.75-2.1562-1.8645 0-3.375 2.34-3.375 5.2188 0 2.8787 1.5105 5.1875 3.375 5.1875 1.6242 0 2.9899-1.7656 3.3125-4.125l5.1803 24.528 5.4566 3.9991 5.8899-3.2946 10.429-38.97-0.705-1.92c-6.984-2.33-13.226-3.23-20.938-3.09z"
sodipodi:nodetypes="scccsssccccccs"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
<path
id="path3806"
d="m549.85 650.61-0.38217 3.2354c4.9895 0.40335 11.189 0.42244 13.17-2.1213 1.9807-2.5437 0.1968-3.5267-1.591-3.0936-1.7878 0.43307-6.7056 5.3046-8.2754 1.893l-0.50522-1.8205-1.9869 0.0945z"
sodipodi:nodetypes="cczzcccc"
style="stroke-linejoin:round;stroke:#685640;stroke-linecap:square;fill:#96785c"
inkscape:connector-curvature="0"
/>
<path
id="path3808"
sodipodi:nodetypes="cczzcccc"
style="stroke-linejoin:round;stroke:#685640;stroke-linecap:square;fill:#96785c"
inkscape:connector-curvature="0"
d="m544.39 650.6 0.41713 3.2529c-4.9895 0.40335-11.189 0.42244-13.17-2.1213-1.9807-2.5437-0.1968-3.5267 1.591-3.0936 1.7878 0.43307 6.7756 5.427 8.3454 2.0154l0.21994-2.1021 2.3116 0.095z"
/>
<path
id="path3804"
style="stroke-linejoin:round;stroke:#8398d5;stroke-linecap:round;fill:#add1ff"
d="m541.41 650.05 0.26105-34.369c-1.2282-2.135-1.266-4.27-1.3614-6.405l17.661 0.58544c-0.89307 2.4369-1.0963 3.9876-3.166 5.7185l-1.6694 34.395c-1.2345 0.29901-2.4493 0.36261-3.6372 0.10235l1.0459-34.485-3.6258 0.19583-2.3472 34.278c-1.0535 0.1592-2.1071 0.33729-3.1606-0.0165z"
sodipodi:nodetypes="ccccccccccc"
inkscape:transform-center-y="16.541974"
inkscape:connector-curvature="0"
inkscape:transform-center-x="1.856178"
/>
<path
id="path3802"
sodipodi:nodetypes="csccsccccc"
d="m543.85 577.57c-3.6025 6.4013-2.192 11.947-1.6634 17.513 0.43657 4.5971-2.2976 7.8572-1.8735 14.191l17.661 0.58544c0.82476-5.278-1.879-9.83-0.94822-14.592 1.1637-5.954 1.5481-11.875-0.0724-18.044l-5.136 0.97418-1.6827 2.8685-1.4401-2.786z"
inkscape:transform-center-x="1.856178"
inkscape:transform-center-y="16.541974"
inkscape:connector-curvature="0"
style="stroke:#9ebaa0;fill:#b1ffb7"
/>
<g
id="g3830"
transform="matrix(.34233 -.73041 .73041 .34233 -110.66 836.04)"
>
<path
id="path3821"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;stroke-width:1.2397;fill:#f6d2b2"
d="m60.281 173.47-5.0312 4.2188 0.4375 3.0312 0.5625 0.65625-1.5938 1.4375 4.8438 6.8125 6.625-2.8125 5.5-8.2187-5.0312-1.6562-2.1562 2.5625-2.6875-0.15625-0.40625-1.6875 1.2812-1.5938-2.3438-2.5938z"
sodipodi:nodetypes="ccccccccccccccc"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
<path
id="path3819"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;stroke-width:1.2397;fill:none"
d="m54.668 182.82 2.4588-2.1936 3.5958 4.8011 4.1672-1.0361"
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
<path
id="path3828"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;stroke-width:1.2397;fill:none"
d="m57.844 175.84 3.6875 6.7812 3.375-0.5625"
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
</g
>
<g
id="g3835"
transform="matrix(-.19348 -.78310 -.78310 .19348 1152 959.56)"
>
<path
id="path3837"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;stroke-width:1.2397;fill:#f6d2b2"
d="m60.281 173.47-5.0312 4.2188 0.4375 3.0312 0.5625 0.65625-1.5938 1.4375 4.8438 6.8125 6.625-2.8125 5.5-8.2187-5.0312-1.6562-2.1562 2.5625-2.6875-0.15625-0.40625-1.6875 1.2812-1.5938-2.3438-2.5938z"
sodipodi:nodetypes="ccccccccccccccc"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
<path
id="path3839"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;stroke-width:1.2397;fill:none"
d="m54.668 182.82 2.4588-2.1936 3.5958 4.8011 4.1672-1.0361"
sodipodi:nodetypes="cccc"
transform="translate(536.43 420.93)"
inkscape:connector-curvature="0"
/>
<path
id="path3841"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;stroke-width:1.2397;fill:none"
d="m57.844 175.84 3.6875 6.7812 3.375-0.5625"
sodipodi:nodetypes="ccc"
transform="translate(536.43 420.93)"
inkscape:connector-curvature="0"
/>
</g
>
<g
id="g3903"
style="fill:#b1ffb7"
>
<g
id="g3899"
style="fill:#b1ffb7"
>
<path
id="path3847"
sodipodi:nodetypes="cccccccccc"
style="fill:#b1ffb7"
inkscape:connector-curvature="0"
d="m543.52 577.53-18.337 9.4723 4.368 1.28 12.901-7.8854 0.44148-0.22491c0.0879 0.15737 0.0729 0.36047 0.0826 0.50806l3.3229 0.15926-2.1874-2.7202-0.67923-0.0499z"
/>
<path
id="path3843"
d="m543.52 577.53-18.337 9.4723 6.2333 14.626 5.0095-5.1738-6.8748-8.1721 12.901-7.8854"
sodipodi:nodetypes="cccccc"
style="stroke-linejoin:round;stroke:#9ebaa0;stroke-linecap:round;fill:#b1ffb7"
inkscape:connector-curvature="0"
/>
</g
>
<g
id="g3895"
style="fill:#b1ffb7"
>
<path
id="path3853"
d="m557.36 577.15 15.754 11.05-4.118 2.3425-11.187-10.481-0.40475-0.29307s-0.28768 0.35697-0.20174 1.2984l-0.30993-1.2846-1.0104-1.3824 0.70019-0.59209 1.0157-0.15083z"
sodipodi:nodetypes="ccccccccccc"
style="fill:#b1ffb7"
inkscape:connector-curvature="0"
/>
<path
id="path3845"
sodipodi:nodetypes="cccccc"
style="stroke-linejoin:round;stroke:#9ebaa0;stroke-linecap:round;fill:#b1ffb7"
inkscape:connector-curvature="0"
d="m557.36 577.15 15.754 11.05-5.2137 16.236-5.1345-5.4238 6.2302-8.4694-11.187-10.481"
/>
</g
>
</g
>
<g
id="g3886"
>
<path
id="path3866"
style="stroke-linejoin:round;stroke:#ae8c70;stroke-linecap:round;fill:#b49076"
d="m15.969 105.22c-9.3006-0.15-14.737 6.64-18.032 14.94l1.563 2.59 2.7215-2.6 3.716 3.41 4.1653-3.8883 5.8347 3.4508 2.5018-3.2374 5.6857 3.2999 2.4393-2.9098 4.2482 3.6598 1.5625-0.46875c-2.3445-9.302-7.023-18.1-16.406-18.25z"
sodipodi:nodetypes="scccccccccccs"
inkscape:connector-curvature="0"
transform="translate(536.43 420.93)"
/>
<path
id="path3871"
style="fill:#b49076"
inkscape:connector-curvature="0"
d="m-1.25 119.5c-0.36866 0.88076-0.74134 1.7726-1.0625 2.6875-0.03943 0.11233-0.05503 0.23112-0.09375 0.34375l0.34375 1.2812 3.0312 0.28125-0.5313-3.93-1.6875-0.66zm31.375 1.875-0.71875 2.7188 1.375 0.75 1.3438-0.25c-0.18032-0.7728-0.38113-1.5482-0.59375-2.3125l-1.406-0.91z"
transform="translate(536.43 420.93)"
/>
</g
>
<g
id="g4019"
transform="translate(-.35355 3.6239)"
>
<path
id="path3913"
style="stroke-linejoin:round;stroke:#685640;stroke-linecap:round;fill:#685640"
inkscape:connector-curvature="0"
d="m550.18 551.52h1.6669"
/>
<g
id="g4011"
transform="translate(.125)"
>
<path
id="path4007"
d="m543.96 547.12 4.5309 4.0891-5.0773-0.88533"
style="stroke-linejoin:round;stroke:#ae8c70;stroke-linecap:round;fill:none"
inkscape:connector-curvature="0"
/>
<path
id="path4009"
style="stroke-linejoin:round;stroke:#ae8c70;stroke-linecap:round;fill:none"
inkscape:connector-curvature="0"
d="m558.02 547.12-4.5309 4.0891 5.0773-0.88533"
/>
</g
>
<path
id="path3941"
sodipodi:rx="8.15625"
sodipodi:ry="9.34375"
style="fill-opacity:.27451;stroke:#685640;stroke-width:1.2561;fill:#bce8f2"
sodipodi:type="arc"
d="m27.5-28.719c0 5.1604-3.6517 9.3438-8.1562 9.3438-4.5046 0-8.1562-4.1833-8.1562-9.3438 0-5.1604 3.6517-9.3438 8.1562-9.3438 4.5046 0 8.1562 4.1833 8.1562 9.3438z"
transform="matrix(.79612 0 0 .79612 528.33 573.64)"
sodipodi:cy="-28.71875"
sodipodi:cx="19.34375"
/>
<path
id="path3943"
sodipodi:rx="8.15625"
sodipodi:ry="9.34375"
style="fill-opacity:.27451;stroke:#685640;stroke-width:1.2561;fill:#bce8f2"
sodipodi:type="arc"
d="m27.5-28.719c0 5.1604-3.6517 9.3438-8.1562 9.3438-4.5046 0-8.1562-4.1833-8.1562-9.3438 0-5.1604 3.6517-9.3438 8.1562-9.3438 4.5046 0 8.1562 4.1833 8.1562 9.3438z"
transform="matrix(.79612 0 0 .79612 543.14 573.64)"
sodipodi:cy="-28.71875"
sodipodi:cx="19.34375"
/>
<path
id="path4015"
sodipodi:nodetypes="cc"
style="stroke-linejoin:round;stroke:#816a4f;stroke-linecap:round;fill:none"
inkscape:connector-curvature="0"
d="m550.07 544.56c-4.6854-4.1817-8.8848-3.5534-12.816 0.57452"
/>
<path
id="path4017"
d="m564.95 543.33c-4.5865-4.7756-8.8185-3.9512-12.816 0.57452"
sodipodi:nodetypes="cc"
style="stroke-linejoin:round;stroke:#816a4f;stroke-linecap:round;fill:none"
inkscape:connector-curvature="0"
/>
</g
>
<path
id="path4029"
style="stroke-linejoin:round;stroke:#dcb794;stroke-linecap:round;fill:#f6d2b2"
d="m14.344 135.25s-3.5926-0.85683-3.7591 0.54407c-0.16644 1.4009 3.4128 1.3849 3.4128 1.3849"
sodipodi:nodetypes="czc"
transform="translate(536.43 420.93)"
inkscape:connector-curvature="0"
/>
<path
id="path4031"
d="m544.05 584.93c1.1898 0.26622 2.3617 0.56829 3.875 0.1875"
sodipodi:nodetypes="cc"
style="stroke-linejoin:round;stroke:#9ebaa0;stroke-linecap:round;fill:#fffb89"
inkscape:connector-curvature="0"
/>
</g
>
</g
>
<metadata
>
<rdf:RDF
>
<cc:Work
>
<dc:format
>image/svg+xml</dc:format
>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage"
/>
<cc:license
rdf:resource="http://creativecommons.org/licenses/publicdomain/"
/>
<dc:publisher
>
<cc:Agent
rdf:about="http://openclipart.org/"
>
<dc:title
>Openclipart</dc:title
>
</cc:Agent
>
</dc:publisher
>
</cc:Work
>
<cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/"
>
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction"
/>
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution"
/>
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks"
/>
</cc:License
>
</rdf:RDF
>
</metadata
>
</svg
>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB