add build folder with generated slides
This commit is contained in:
1 parent
2b1994622a
commit
dfc6c794e8
1 file changed
+346
@@ -0,0 +1,346 @@
|
|||||||
|
<!DOCTYPE html><html lang="de-DE"><head><title>Digital Independence Day - Reclaiming Our Digital Autonomy</title><meta property="og:title" content="Digital Independence Day - Reclaiming Our Digital Autonomy"><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>@media screen{body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button{appearance:none;background-color:initial;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear;-webkit-tap-highlight-color:transparent}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover{opacity:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover:active{opacity:.6}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:#0000 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJNNjggOTAgMjggNTBsNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:#0000 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBmaWxsPSJub25lIiBzdHJva2U9IiNmZmYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSI1IiBkPSJtMzIgOTAgNDAtNDAtNDAtNDAiLz48L3N2Zz4=") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:#0000 url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO3N0cm9rZTojZmZmO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2Utd2lkdGg6NXB4fTwvc3R5bGU+PC9kZWZzPjxyZWN0IHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgeD0iMTAiIHk9IjIwIiBjbGFzcz0iYSIgcng9IjUuNjciLz48cGF0aCBkPSJNNDAgNzBIMjBWNLine truncated
|
||||||
|
* Marp default theme.
|
||||||
|
*
|
||||||
|
* @theme default
|
||||||
|
* @author Yuki Hattori
|
||||||
|
*
|
||||||
|
* @auto-scaling true
|
||||||
|
* @size 16:9 1280px 720px
|
||||||
|
* @size 4:3 960px 720px
|
||||||
|
*/div#\:\$p > svg > foreignObject > section{--base-size-4:calc(var(--marpit-root-font-size, 1rem) * 0.25);--base-size-8:calc(var(--marpit-root-font-size, 1rem) * 0.5);--base-size-16:calc(var(--marpit-root-font-size, 1rem) * 1);--base-size-24:calc(var(--marpit-root-font-size, 1rem) * 1.5);--base-size-40:calc(var(--marpit-root-font-size, 1rem) * 2.5);--base-text-weight-normal:400;--base-text-weight-medium:500;--base-text-weight-semibold:600;--fontStack-monospace:ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;--fgColor-accent:Highlight;}div#\:\$p > svg > foreignObject > section [data-theme=light],div#\:\$p > svg > foreignObject > section{color-scheme:light;--focus-outlineColor:#0969da;--fgColor-default:#1f2328;--fgColor-muted:#59636e;--fgColor-accent:#0969da;--fgColor-success:#1a7f37;--fgColor-attention:#9a6700;--fgColor-danger:#d1242f;--fgColor-done:#8250df;--bgColor-default:#fff;--bgColor-muted:#f6f8fa;--bgColor-neutral-muted:#818b981f;--bgColor-attention-muted:#fff8c5;--borderColor-default:#d1d9e0;--borderColor-muted:#d1d9e0b3;--borderColor-neutral-muted:#d1d9e0b3;--borderColor-accent-emphasis:#0969da;--borderColor-success-emphasis:#1a7f37;--borderColor-attention-emphasis:#9a6700;--borderColor-danger-emphasis:#cf222e;--borderColor-done-emphasis:#8250df;--color-prettylights-syntax-comment:#59636e;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-prettylights-syntax-entity:#6639ba;--color-prettylights-syntax-storage-modifier-import:#1f2328;--color-prettylights-syntax-entity-tag:#0550ae;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-brackethighlighter-angle:#59636e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#1f2328;--color-prettylights-syntax-markup-bold:#1f2328;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#d1d9e0;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-sublimelinter-gutter-mark:#818b98;}div#\:\$p > svg > foreignObject > section [data-theme=dark],div#\:\$p > svg > foreignObject > section:where(.invert){color-scheme:dark;--focus-outlineColor:#1f6feb;--fgColor-default:#f0f6fc;--fgColor-muted:#9198a1;--fgColor-accent:#4493f8;--fgColor-success:#3fb950;--fgColor-attention:#d29922;--fgColor-danger:#f85149;--fgColor-done:#ab7df8;--bgColor-default:#0d1117;--bgColor-muted:#151b23;--bgColor-neutral-muted:#656c7633;--bgColor-attention-muted:#bb800926;--borderColor-default:#3d444d;--borderColor-muted:#3d444db3;--borderColor-neutral-muted:#3d444db3;--borderColor-accent-emphasis:#1f6feb;--borderColor-success-emphasis:#238636;--borderColor-attention-emphasis:#9e6a03;--borderColor-danger-emphasis:#da3633;--borderColor-done-emphasis:#8957e5;--color-prettylights-syntax-comment:#9198a1;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#f0f6fc;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-brackethighlighter-angle:#9198a1;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#f0f6fc;--color-prettylights-syntax-markup-bold:#f0f6fc;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-Line truncated
|
||||||
|
</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id=":$p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="1" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="digital-independence-day">Digital Independence Day</h1>
|
||||||
|
<h2 id="reclaiming-our-digital-autonomy">Reclaiming Our Digital Autonomy</h2>
|
||||||
|
<p><strong>Michał Czechowski</strong><br />
|
||||||
|
University Lecturer & Open Source Enthusiast<br />
|
||||||
|
Stuttgart, Germany</p>
|
||||||
|
<p><em>Science in the City Malta • September 17, 2025</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="2" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="about-me">About Me</h1>
|
||||||
|
<p><strong>Michał Czechowski</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>University Lecturer at DHBW Stuttgart & LFH Hannover</li>
|
||||||
|
<li>20+ years software engineering experience</li>
|
||||||
|
<li>FOSS transformation specialist</li>
|
||||||
|
<li>Polish-German background: generational experience with authoritarian control</li>
|
||||||
|
<li>Passionate about empowering digital independence through democratic technology</li>
|
||||||
|
</ul>
|
||||||
|
<p><em>"From surviving authoritarianism to building digital freedom"</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="3" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="what-is-digital-independence">What is Digital Independence?</h1>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="4" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="digital-independence">Digital Independence</h1>
|
||||||
|
<h2 id="democratic-control-over-information-systems">Democratic Control Over Information Systems</h2>
|
||||||
|
<p><strong>Digital Autonomy</strong>: The capacity for individuals and societies to make informed, voluntary decisions about their digital tools and data</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Individual Level</strong>: You control what software runs on your devices</li>
|
||||||
|
<li><strong>Societal Level</strong>: Communities govern their digital infrastructure</li>
|
||||||
|
<li><strong>Democratic Level</strong>: Transparent, accountable technology governance</li>
|
||||||
|
</ul>
|
||||||
|
<p><em>Democracy enhanced by autonomy leads to better societal outcomes</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="5" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="why-does-digital-autonomy-matter">Why Does Digital Autonomy Matter?</h1>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="6" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="the-fourth-revolution-living-in-the-infosphere">The Fourth Revolution: Living in the Infosphere</h1>
|
||||||
|
<p><strong>Luciano Floridi's Core Thesis</strong>: We now inhabit a "hyper-historical" world where the distinction between online and offline life has collapsed.</p>
|
||||||
|
<p>The <strong>infosphere</strong> - our combined digital and physical reality - means:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Information systems ARE the infrastructure of modern society</li>
|
||||||
|
<li>Digital dependencies create systemic vulnerabilities</li>
|
||||||
|
<li>Control over information systems equals control over society itself</li>
|
||||||
|
</ul>
|
||||||
|
<p><em>We are no longer users of digital tools - we are inhabitants of digital reality</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="7" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="critical-infrastructure-dependencies">Critical Infrastructure Dependencies</h1>
|
||||||
|
<p><strong>When information systems control:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Healthcare</strong>: Electronic records, diagnostic systems, life support</li>
|
||||||
|
<li><strong>Logistics</strong>: Supply chains, transportation networks, food distribution</li>
|
||||||
|
<li><strong>Finance</strong>: Payment systems, banking infrastructure, economic stability</li>
|
||||||
|
<li><strong>Democracy</strong>: Media platforms, electoral systems, public discourse</li>
|
||||||
|
<li><strong>Education</strong>: Learning platforms, research access, knowledge distribution</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>Single point of failure = societal breakdown</strong></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="8" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="when-digital-systems-fail-society-fails">When Digital Systems Fail, Society Fails</h1>
|
||||||
|
<p><strong>Recent Systemic Failures:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Hospital ransomware attacks → patients die from delayed care</li>
|
||||||
|
<li>Social media manipulation → electoral interference, democratic erosion</li>
|
||||||
|
<li>Supply chain attacks → economic disruption, infrastructure breakdown</li>
|
||||||
|
<li>Platform censorship → suppression of legitimate discourse</li>
|
||||||
|
<li>Algorithmic bias → systemic discrimination at scale</li>
|
||||||
|
</ul>
|
||||||
|
<p><em>Digital dependence without democratic control = societal vulnerability</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="9" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="who-opposes-digital-autonomy">Who Opposes Digital Autonomy?</h1>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="10" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="the-opposition-alliance">The Opposition Alliance</h1>
|
||||||
|
<p><strong>Surveillance Capitalism Model:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Extract behavioral data at unprecedented scale</li>
|
||||||
|
<li>Manipulate user behavior through algorithmic control</li>
|
||||||
|
<li>Create dependencies to maintain market dominance</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>Authoritarian State Interests:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Monitor and control population behavior</li>
|
||||||
|
<li>Suppress dissent through platform manipulation</li>
|
||||||
|
<li>Weaponize civilian technology infrastructure</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>Shared Goal: Centralized control over information systems</strong></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="11" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="real-world-digital-attacks">Real-World Digital Attacks</h1>
|
||||||
|
<p><strong>Cambridge Analytica (2018)</strong>: 87 million Facebook profiles harvested for election manipulation</p>
|
||||||
|
<p><strong>Meta's Teen Depression Experiments (2021)</strong>: Deliberately harmful algorithms tested on adolescents</p>
|
||||||
|
<p><strong>Israel-Lebanon Pager Attack (2024)</strong>: Consumer communication devices remotely weaponized</p>
|
||||||
|
<p><strong>Palantir Surveillance Infrastructure</strong>: Military-grade population monitoring sold to corporations and governments</p>
|
||||||
|
<p><strong>TikTok Algorithmic Influence</strong>: Foreign state influence over domestic youth culture and political discourse</p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="12" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="whos-fighting-back">Who's Fighting Back?</h1>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="13" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="digital-independence-success-stories">Digital Independence Success Stories</h1>
|
||||||
|
<p><strong><img class="emoji" draggable="false" alt="🇩🇪" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f1e9-1f1ea.svg" data-marp-twemoji=""/> Schleswig-Holstein</strong>: Complete state migration to Linux and LibreOffice, ending Microsoft dependency</p>
|
||||||
|
<p><strong><img class="emoji" draggable="false" alt="🇫🇷" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f1eb-1f1f7.svg" data-marp-twemoji=""/> Lyon</strong>: 17,000 government computers migrated to Ubuntu, saving €2M annually in licensing costs</p>
|
||||||
|
<p><strong><img class="emoji" draggable="false" alt="🇪🇸" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f1ea-1f1f8.svg" data-marp-twemoji=""/> Extremadura</strong>: 200,000 students educated on Linux-based systems, creating digital literacy without vendor lock-in</p>
|
||||||
|
<p><strong><img class="emoji" draggable="false" alt="🇮🇹" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f1ee-1f1f9.svg" data-marp-twemoji=""/> South Tyrol</strong>: Government-wide OpenOffice deployment, demonstrating scalable alternatives</p>
|
||||||
|
<p><strong><img class="emoji" draggable="false" alt="🇧🇷" src="https://cdn.jsdelivr.net/gh/jdecked/twemoji@16.0.1/assets/svg/1f1e7-1f1f7.svg" data-marp-twemoji=""/> Brazil</strong>: Constitutional requirement for open standards in government systems</p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="14" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="foss-vs-open-source-vs-proprietary">FOSS vs. "Open Source" vs. Proprietary</h1>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="15" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="software-models-compared">Software Models Compared</h1>
|
||||||
|
<p><strong>Proprietary Software:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Black box code, vendor control, only licenses</li>
|
||||||
|
<li>Surveillance capabilities built-in</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>"Open Source" (Silicon Valley):</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Source visible but corporate-controlled</li>
|
||||||
|
<li>"Open washing" marketing tactics</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>Free & Open Source Software (FOSS):</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Community governance, transparent code</li>
|
||||||
|
<li>Privacy by default, no surveillance by design</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="16" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="how-to-gain-digital-autonomy">How to Gain Digital Autonomy</h1>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-marpit-scope-CraCprKn="" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="17" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="your-liberation-toolkit">Your Liberation Toolkit</h1>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Category</th>
|
||||||
|
<th>Proprietary Tool</th>
|
||||||
|
<th>Primary Risk</th>
|
||||||
|
<th>FOSS Alternative</th>
|
||||||
|
<th>Implementation Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Communication</strong></td>
|
||||||
|
<td>WhatsApp</td>
|
||||||
|
<td>Meta surveillance</td>
|
||||||
|
<td>Signal</td>
|
||||||
|
<td>End-to-end encrypted, normie-friendly</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>WhatsApp</td>
|
||||||
|
<td>Meta surveillance</td>
|
||||||
|
<td>Element (Matrix)</td>
|
||||||
|
<td>Decentralized protocol, tech-savvy users</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Twitter/X</td>
|
||||||
|
<td>Manipulation, censorship</td>
|
||||||
|
<td>Mastodon</td>
|
||||||
|
<td>ActivityPub federation, choose instance wisely</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Discord</td>
|
||||||
|
<td>Gaming surveillance</td>
|
||||||
|
<td>Element/Matrix</td>
|
||||||
|
<td>Bridges available for Discord migration</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Web Browsing</strong></td>
|
||||||
|
<td>Chrome</td>
|
||||||
|
<td>Complete web tracking</td>
|
||||||
|
<td>Firefox</td>
|
||||||
|
<td>Mozilla Foundation, privacy-focused</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Chrome</td>
|
||||||
|
<td>Complete web tracking</td>
|
||||||
|
<td>LibreWolf</td>
|
||||||
|
<td>Firefox without telemetry, hardened</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Productivity</strong></td>
|
||||||
|
<td>Microsoft Office</td>
|
||||||
|
<td>Subscription bondage</td>
|
||||||
|
<td>LibreOffice</td>
|
||||||
|
<td>Full office suite, document compatibility</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Notion</td>
|
||||||
|
<td>Productivity surveillance</td>
|
||||||
|
<td>Logseq</td>
|
||||||
|
<td>Local-first knowledge graphs</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Slack</td>
|
||||||
|
<td>Workplace monitoring</td>
|
||||||
|
<td>Mattermost</td>
|
||||||
|
<td>Self-hosted team communication</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-marpit-scope-Z4OyPoMT="" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="18" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="your-liberation-toolkit-continued">Your Liberation Toolkit (continued)</h1>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Category</th>
|
||||||
|
<th>Proprietary Tool</th>
|
||||||
|
<th>Primary Risk</th>
|
||||||
|
<th>FOSS Alternative</th>
|
||||||
|
<th>Implementation Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Cloud & Storage</strong></td>
|
||||||
|
<td>Google Drive</td>
|
||||||
|
<td>Document surveillance</td>
|
||||||
|
<td>Nextcloud</td>
|
||||||
|
<td>Complete cloud replacement</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Google Photos</td>
|
||||||
|
<td>Face recognition mining</td>
|
||||||
|
<td>Immich</td>
|
||||||
|
<td>Self-hosted photo management</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>Dropbox</td>
|
||||||
|
<td>File access tracking</td>
|
||||||
|
<td>Syncthing</td>
|
||||||
|
<td>P2P file synchronization</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Media</strong></td>
|
||||||
|
<td>YouTube</td>
|
||||||
|
<td>Algorithm addiction</td>
|
||||||
|
<td>PeerTube</td>
|
||||||
|
<td>Federated video hosting</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>YouTube</td>
|
||||||
|
<td>Algorithm addiction</td>
|
||||||
|
<td>Invidious</td>
|
||||||
|
<td>Privacy-focused YouTube frontend</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Email</strong></td>
|
||||||
|
<td>Gmail</td>
|
||||||
|
<td>Email content scanning</td>
|
||||||
|
<td>Proton Mail</td>
|
||||||
|
<td>Swiss privacy laws protection</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Mobile OS</strong></td>
|
||||||
|
<td>Android (Google)</td>
|
||||||
|
<td>Life surveillance</td>
|
||||||
|
<td>GrapheneOS</td>
|
||||||
|
<td>Pixel devices only, maximum security</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>iOS</td>
|
||||||
|
<td>Apple ecosystem lock-in</td>
|
||||||
|
<td>LineageOS</td>
|
||||||
|
<td>Wider device support</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="19" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="implementation-strategy">Implementation Strategy</h1>
|
||||||
|
<p><strong>Phase 1 - Low Risk:</strong><br />
|
||||||
|
Browser, Search, Email migration</p>
|
||||||
|
<p><strong>Phase 2 - Productivity:</strong><br />
|
||||||
|
Office suite, Cloud storage, Communication tools</p>
|
||||||
|
<p><strong>Phase 3 - Infrastructure:</strong><br />
|
||||||
|
Operating system, Self-hosting, Complete sovereignty</p>
|
||||||
|
<p><em>Detailed migration paths available in workshop materials</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="20" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="workshop-implementation-guide">Workshop Implementation Guide</h1>
|
||||||
|
<p><strong>Today's Focus:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>GNU/Linux hands-on exploration</li>
|
||||||
|
<li>Installing essential FOSS alternatives</li>
|
||||||
|
<li>Building your personal migration roadmap</li>
|
||||||
|
</ul>
|
||||||
|
<p><strong>Take Home:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Bootable Linux USB drive</li>
|
||||||
|
<li>Curated software recommendations</li>
|
||||||
|
<li>Community connection for ongoing support</li>
|
||||||
|
</ul>
|
||||||
|
<p><em>Each participant leaves with practical next steps</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="21" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="call-to-action">Call to Action</h1>
|
||||||
|
<p><strong>Digital Independence is Democratic Necessity</strong></p>
|
||||||
|
<p>In Floridi's infosphere, our digital choices are political choices.</p>
|
||||||
|
<p><strong>Today's Workshop</strong>: Hands-on GNU/Linux exploration<br />
|
||||||
|
<strong>Your Mission</strong>: Begin your liberation journey<br />
|
||||||
|
<strong>Our Goal</strong>: Build digitally sovereign communities</p>
|
||||||
|
<p><em>The future of democracy depends on who controls our information systems</em></p>
|
||||||
|
</section>
|
||||||
|
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-paginate="true" data-background-color="#fff" lang="de-DE" data-marpit-pagination="22" style="--paginate:true;--background-color:#fff;background-color:#fff;background-image:none;" data-marpit-pagination-total="22">
|
||||||
|
<h1 id="questions--discussion">Questions & Discussion</h1>
|
||||||
|
<p><strong>Resources:</strong></p>
|
||||||
|
<ul>
|
||||||
|
<li>Event: malta-digital-independence.org</li>
|
||||||
|
<li>FOSS Alternatives: ossmalta.eu</li>
|
||||||
|
<li>Contact: <a href="mailto:michal@czechowski.de">michal@czechowski.de</a></li>
|
||||||
|
</ul>
|
||||||
|
<p><em>"The best time to plant a tree was 20 years ago. The second best time is now."</em><br />
|
||||||
|
<em>- Chinese Proverb</em></p>
|
||||||
|
</section>
|
||||||
|
<script>!function(){"use strict";const t={h1:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"1"},style:"display: block; font-size: 2em; margin-block-start: 0.67em; margin-block-end: 0.67em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h2:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"2"},style:"display: block; font-size: 1.5em; margin-block-start: 0.83em; margin-block-end: 0.83em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h3:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"3"},style:"display: block; font-size: 1.17em; margin-block-start: 1em; margin-block-end: 1em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h4:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"4"},style:"display: block; margin-block-start: 1.33em; margin-block-end: 1.33em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h5:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"5"},style:"display: block; font-size: 0.83em; margin-block-start: 1.67em; margin-block-end: 1.67em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},h6:{proto:()=>HTMLHeadingElement,attrs:{role:"heading","aria-level":"6"},style:"display: block; font-size: 0.67em; margin-block-start: 2.33em; margin-block-end: 2.33em; margin-inline-start: 0px; margin-inline-end: 0px; font-weight: bold;"},span:{proto:()=>HTMLSpanElement},pre:{proto:()=>HTMLElement,style:"display: block; font-family: monospace; white-space: pre; margin: 1em 0; --marp-auto-scaling-white-space: pre;"}},e="data-marp-auto-scaling-wrapper",i="data-marp-auto-scaling-svg",n="data-marp-auto-scaling-container";class s extends HTMLElement{container;containerSize;containerObserver;svg;svgComputedStyle;svgPreserveAspectRatio="xMinYMid meet";wrapper;wrapperSize;wrapperObserver;constructor(){super();const t=t=>([e])=>{const{width:i,height:n}=e.contentRect;this[t]={width:i,height:n},this.updateSVGRect()};this.attachShadow({mode:"open"}),this.containerObserver=new ResizeObserver(t("containerSize")),this.wrapperObserver=new ResizeObserver(((...e)=>{t("wrapperSize")(...e),this.flushSvgDisplay()}))}static get observedAttributes(){return["data-downscale-only"]}connectedCallback(){this.shadowRoot.innerHTML=`\n<style>\n svg[${i}] { display: block; width: 100%; height: auto; vertical-align: top; }\n span[${n}] { display: table; white-space: var(--marp-auto-scaling-white-space, nowrap); width: max-content; }\n</style>\n<div ${e}>\n <svg part="svg" ${i}>\n <foreignObject><span ${n}><slot></slot></span></foreignObject>\n </svg>\n</div>\n `.split(/\n\s*/).join(""),this.wrapper=this.shadowRoot.querySelector(`div[${e}]`)??void 0;const t=this.svg;this.svg=this.wrapper?.querySelector(`svg[${i}]`)??void 0,this.svg!==t&&(this.svgComputedStyle=this.svg?window.getComputedStyle(this.svg):void 0),this.container=this.svg?.querySelector(`span[${n}]`)??void 0,this.observe()}disconnectedCallback(){this.svg=void 0,this.svgComputedStyle=void 0,this.wrapper=void 0,this.container=void 0,this.observe()}attributeChangedCallback(){this.observe()}flushSvgDisplay(){const{svg:t}=this;t&&(t.style.display="inline",requestAnimationFrame((()=>{t.style.display=""})))}observe(){this.containerObserver.disconnect(),this.wrapperObserver.disconnect(),this.wrapper&&this.wrapperObserver.observe(this.wrapper),this.container&&this.containerObserver.observe(this.container),this.svgComputedStyle&&this.observeSVGStyle(this.svgComputedStyle)}observeSVGStyle(t){const e=()=>{const i=(()=>{const e=t.getPropertyValue("--preserve-aspect-ratio");if(e)return e.trim();return`x${(({textAlign:t,direction:e})=>{if(t.endsWith("left"))return"Min";if(t.endsWith("right"))return"Max";if("start"===t||"end"===t){let i="rtl"===e;return"end"===t&&(i=!i),i?"Max":"Min"}return"Mid"})(t)}YMid meet`})();i!==this.svgPreserveAspectRatio&&(this.svgPreserveAspectRatio=i,this.updateSVGRect()),t===this.svgComputedStyle&&requestAnimationFrame(e)};e()}updateSVGRect(){let t=Math.ceil(this.containerSize?.width??0);const e=Math.ceil(this.containerSize?.height??0);void 0!==this.dataset.downscaleOnly&&(t=Math.max(t,this.wrapperSize?.width??0));const i=this.svg?.querySelector(":scope > foreignObject");if(i?.setAttribute("width",`${t}`),i?.setAttribute("height",`${e}`),this.svg&&(this.svg.setAttribute("viewBox",`0 0 ${t} ${e}`),this.svg.setAttribute("preserveAspectRatio",this.svgPreserveAspectRatio),this.svg.style.height=t<=0||e<=0?"0":""),this.container){const t=this.svgPreserveAspectRatio.toLowerCase();this.container.style.marginLeft=t.startsWith("xmid")||t.startsWith("xmax")?"auto":"0",this.container.style.marginRight=t.startsWith("xmi")?"auto":"0"}}}const r=(t,{attrs:e={},style:i})=>class extends t{constructor(...t){super(...t);for(const[t,i]of Object.entries(e))this.hasAttribute(t)||this.setAttribute(t,i);this._shadow()}static get observedAttributes(){return["data-auto-scaling"]}connectedCallLine truncated
|
||||||
|
</script></foreignObject></svg></div><div class="bespoke-marp-note" data-index="3" tabindex="0"><p>Original thought: democracy minus (some) freedom - but we mean democratic control over technology, not corporate freedom</p></div><div class="bespoke-marp-note" data-index="5" tabindex="0"><p>Floridi, "The Fourth Revolution: How the Infosphere is Reshaping Human Reality" - this is the foundational argument for why digital autonomy matters existentially</p></div><div class="bespoke-marp-note" data-index="10" tabindex="0"><p>Additional examples: NSA PRISM program, Chinese social credit system, Russian election interference, facial recognition deployment</p></div><div class="bespoke-marp-note" data-index="12" tabindex="0"><p>Additional: Barcelona's decidim platform, Estonia's X-Road infrastructure, Taiwan's vTaiwan digital democracy</p></div><div class="bespoke-marp-note" data-index="16" tabindex="0"><p>Note: This will be a scrollable table in Marp</p></div><div class="bespoke-marp-note" data-index="17" tabindex="0"><p>Full table available in presentation notes with password managers, maps, video conferencing, etc.</p></div><script>/*!! License: https://unpkg.com/@marp-team/marp-cli@4.2.3/lib/bespoke.js.LICENSE.txt */
|
||||||
|
!function(){"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var t,n,r=(n||(n=1,t={from:function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),o=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,function(e){return"SCRIPT"!==e.nodeName}),a={},i=function(e,t){return(t=t||{}).index=o.indexOf(e),t.slide=e,t},s=function(e,t){a[e]=(a[e]||[]).filter(function(e){return e!==t})},c=function(e,t){return(a[e]||[]).reduce(function(e,n){return e&&!1!==n(t)},!0)},l=function(e,t){o[e]&&(n&&c("deactivate",i(n,t)),n=o[e],c("activate",i(n,t)))},d=function(e,t){var r=o.indexOf(n)+e;c(e>0?"next":"prev",i(n,t))&&l(r,t)},u={off:s,on:function(e,t){return(a[e]||(a[e]=[])).push(t),s.bind(null,e,t)},fire:c,slide:function(e,t){if(!arguments.length)return o.indexOf(n);c("slide",i(o[e],t))&&l(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:o,destroy:function(e){c("destroy",i(n,e)),a={}}};return(t||[]).forEach(function(e){e(u)}),n||l(0),u}}),t),o=e(r);const a=document.body,i=(...e)=>history.replaceState(...e),s="",c="presenter",l="next",d=["",c,l],u="bespoke-marp-",f=`data-${u}`,m=(e,{protocol:t,host:n,pathname:r,hash:o}=location)=>{const a=e.toString();return`${t}//${n}${r}${a?"?":""}${a}${o}`},g=()=>a.dataset.bespokeView,p=e=>new URLSearchParams(location.search).get(e),v=(e,t={})=>{const n={location,setter:i,...t},r=new URLSearchParams(n.location.search);for(const t of Object.keys(e)){const n=e[t];"string"==typeof n?r.set(t,n):r.delete(t)}try{n.setter({...window.history.state??{}},"",m(r,n.location))}catch(e){console.error(e)}},h=(()=>{const e="bespoke-marp";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch{return!1}})(),y=e=>{try{return localStorage.getItem(e)}catch{return null}},b=(e,t)=>{try{return localStorage.setItem(e,t),!0}catch{return!1}},w=e=>{try{return localStorage.removeItem(e),!0}catch{return!1}},x=(e,t)=>{const n="aria-hidden";t?e.setAttribute(n,"true"):e.removeAttribute(n)},k=e=>{e.parent.classList.add(`${u}parent`),e.slides.forEach(e=>e.classList.add(`${u}slide`)),e.on("activate",t=>{const n=`${u}active`,r=t.slide,o=r.classList,a=!o.contains(n);if(e.slides.forEach(e=>{e.classList.remove(n),x(e,!0)}),o.add(n),x(r,!1),a){const e=`${n}-ready`;o.add(e),document.body.clientHeight,o.remove(e)}})},$=e=>{let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map(e=>[null,...e.querySelectorAll("[data-marpit-fragment]")])});const r=r=>void 0!==e.fragments[t][n+r],o=(r,o)=>{t=r,n=o,e.fragments.forEach((e,t)=>{e.forEach((e,n)=>{if(null==e)return;const a=t<r||t===r&&n<=o;e.setAttribute(`${f}fragment`,(a?"":"in")+"active");const i=`${f}current-fragment`;t===r&&n===o?e.setAttribute(i,"current"):e.removeAttribute(i)})}),e.fragmentIndex=o;const a={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:o};e.fire("fragment",a)};e.on("next",({fragment:a=!0})=>{if(a){if(r(1))return o(t,n+1),!1;const a=t+1;e.fragments[a]&&o(a,0)}else{const r=e.fragments[t].length;if(n+1<r)return o(t,r-1),!1;const a=e.fragments[t+1];a&&o(t+1,a.length-1)}}),e.on("prev",({fragment:a=!0})=>{if(r(-1)&&a)return o(t,n-1),!1;const i=t-1;e.fragments[i]&&o(i,e.fragments[i].length-1)}),e.on("slide",({index:t,fragment:n})=>{let r=0;if(void 0!==n){const o=e.fragments[t];if(o){const{length:e}=o;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}o(t,r)}),o(0,0)},E=document,L=()=>!(!E.fullscreenEnabled&&!E.webkitFullscreenEnabled),S=()=>!(!E.fullscreenElement&&!E.webkitFullscreenElement),P=e=>{e.fullscreen=()=>{L()&&(async()=>{S()?(E.exitFullscreen||E.webkitExitFullscreen)?.call(E):((e=E.body)=>{(e.requestFullscreen||e.webkitRequestFullscreen)?.call(e)})()})()},document.addEventListener("keydown",t=>{"f"!==t.key&&"F11"!==t.key||t.altKey||t.ctrlKey||t.metaKey||!L()||(e.fullscreen(),t.preventDefault())})},_=`${u}inactive`,T=(e=2e3)=>({parent:t,fire:n})=>{const r=t.classList,o=e=>n(`marp-${e?"":"in"}active`);let a;const i=()=>{a&&clearTimeout(a),a=setTimeout(()=>{r.add(_),o()},e),r.contains(_)&&(r.remove(_),o(!0))};for(const e of["mousedown","mousemove","touchend"])document.addEventListener(e,i);setTimeout(i,0)},I=["AUDIO","BUTTON","INPUT","SELECT","TEXTAREA","VIDEO"],M=e=>{e.parent.addEventListener("keydown",e=>{if(!e.target)return;const t=e.target;(I.includes(t.nodeName)||"true"===t.contentEditable)&&e.stopPropagation()})},O=e=>{window.addEventListener("load",()=>{for(const t of e.slides){const e=t.querySelector("marp-auto-scaling, [data-auto-scaling], [data-marp-fitting]");t.setAttribute(`${f}load`,e?"":"hideable")}})},A=({interval:e=250}={})=>t=>{document.addEventListener("keydown",e=>{if(" "===e.key&&e.shiftKey)t.prev();else if("ArrowLeft"===e.key||"ArrowUp"===e.key||"PageUp"===e.key)t.prev({fragment:!e.shiftKey});else if(" "!==e.key||e.shiftKey)if("ArrowRight"===e.key||"ArrowDown"===e.key||"PageDown"===e.key)t.next({fragment:!e.shiftKey});else if("End"===e.key)t.slLine truncated
|
||||||
Reference in new issue
Block a user