Files
at-large/talks.html
T
2026-05-01 15:29:05 +02:00

346 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Workshops, talks, and publications by Veit Heller on threat modelling, ISMS, SSDLC, network automation, and programming languages.">
<meta name="author" content="Veit Heller">
<link rel="canonical" href="https://veitheller.de/talks.html">
<meta property="og:type" content="website">
<meta property="og:url" content="https://veitheller.de/talks.html">
<meta property="og:title" content="Talks & Publications — Veit Heller">
<meta property="og:description" content="Workshops, talks, and publications by Veit Heller on threat modelling, ISMS, SSDLC, network automation, and programming languages.">
<meta property="og:locale" content="en_US">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Talks & Publications — Veit Heller">
<meta name="twitter:description" content="Workshops, talks, and publications by Veit Heller on threat modelling, ISMS, SSDLC, network automation, and programming languages.">
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script defer data-domain="veitheller.de" src="https://plausible.io/js/script.tagged-events.outbound-links.js"></script>
<title>Talks & Publications — Veit Heller</title>
<style>
@font-face {
font-family: 'charterregular';
src: url('charter_regular-webfont.woff') format('woff');
font-weight: normal;
font-style: normal;
font-display: swap;
}
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
body {
font-family: 'charterregular', Georgia, serif;
font-size: 18px;
width: 100vw;
margin: 0;
background-color: #fafaf7;
}
.description {
color: #444;
}
.main {
max-width: 800px;
padding: 2em;
margin: auto;
padding-top: 1em;
}
.main h1 {
font-size: 28px;
font-weight: 400;
}
.main h2 {
font-size: 22px;
font-weight: 400;
margin-top: 2em;
}
.main h3 {
font-size: 18px;
font-weight: 600;
margin-bottom: 0.2em;
}
.main a {
color: #000;
text-decoration: none;
border-bottom: 2px solid #d6dde3;
}
.main p {
margin-top: 0.3em;
margin-bottom: 1.2em;
}
.main em {
color: #444;
}
.main .rule {
border-top: 1px solid #aaa;
width: calc(100% - 6em);
margin-left: 3em;
margin-right: 3em;
height: 0px;
}
article {
margin-bottom: 2em;
}
.tab-input {
position: absolute;
opacity: 0;
pointer-events: none;
}
nav.tabs {
display: flex;
gap: 2em;
border-bottom: 1px solid #aaa;
margin: 1.5em 0 1.5em;
}
nav.tabs label {
padding: 0.6em 0;
margin-bottom: -1px;
font-size: 16px;
color: #444;
border-bottom: 2px solid transparent;
cursor: pointer;
}
nav.tabs label:hover {
color: #000;
}
.panel { display: none; }
#tab-bookable:checked ~ #bookable,
#tab-talks:checked ~ #talks,
#tab-publications:checked ~ #publications {
display: block;
}
#tab-bookable:checked ~ nav.tabs label[for="tab-bookable"],
#tab-talks:checked ~ nav.tabs label[for="tab-talks"],
#tab-publications:checked ~ nav.tabs label[for="tab-publications"] {
color: #000;
border-bottom-color: #000;
}
.site-link {
font-size: 16px;
color: #444;
margin-bottom: 0.5em;
}
.site-link a {
border-bottom: none;
color: #444;
}
.legal {
margin-top: 2.5em;
padding-top: 1em;
border-top: 1px solid #d6dde3;
font-size: 14px;
color: #444;
}
.legal a {
margin-right: 1em;
}
@media(max-width: 700px) {
.main h1 {
font-size: 20px;
}
}
</style>
</head>
<body>
<main class="main">
<p class="site-link"><a href="/">← Veit Heller</a></p>
<h1>Workshops, Talks, Publications</h1>
<p class="description">I speak and write about systems of all shapes and
sizes.</p>
<input type="radio" name="tab" id="tab-bookable" class="tab-input" checked>
<input type="radio" name="tab" id="tab-talks" class="tab-input">
<input type="radio" name="tab" id="tab-publications" class="tab-input">
<nav class="tabs" role="tablist">
<label for="tab-bookable" id="label-bookable" role="tab" aria-controls="bookable" tabindex="0">Bookable</label>
<label for="tab-talks" id="label-talks" role="tab" aria-controls="talks" tabindex="0">Talks</label>
<label for="tab-publications" id="label-publications" role="tab" aria-controls="publications" tabindex="0">Publications</label>
</nav>
<section id="bookable" class="panel" role="tabpanel" aria-labelledby="label-bookable">
<h3>Practical threat modelling for engineering teams</h3>
<p>Lightweight, repeatable threat modelling you can actually run in sprint cadence. We cut jargon, pick a fit-for-purpose method, and get to work quickly. <a href="https://blog.veitheller.de/Threat_Modeling_For_the_Rest_of_Us.html">Read about it here.</a></p>
<ul>
<li><strong>Takeaways:</strong> initial model (only for workshops), playbook, templates, 30-day plan to make it stick.</li>
<li><strong>Formats:</strong> 4590min talk, ~3h half-day, 68h full-day (hands-on)</li>
</ul>
<p><a href="mailto:veit@veitheller.de?subject=Threat modelling workshop inquiry">Book this workshop</a></p>
<div class="rule"></div>
<h3>ISMS & SSDLC that you can work with</h3>
<p>Lets turn “we should do security” into a minimal ISMS and an SSDLC that actually holds up in practice. We map controls to your workflows (code, CI/CD, infra) and prove it with artifacts. <a href="https://blog.veitheller.de/Simple_SSDLCs.html">Read about it here.</a></p>
<ul>
<li><strong>Takeaways:</strong> control set, CI/CD hooks for evidence (workshop only), audit-ready checklists.</li>
<li><strong>Formats:</strong> 4590min talk, ~3h half-day, 68h full-day (hands-on)</li>
</ul>
<p><a href="mailto:veit@veitheller.de?subject=ISMS and SSDLC workshop inquiry">Book this workshop</a></p>
<div class="rule"></div>
<h3>Funding & buyer readiness</h3>
<p>What VCs, acquirers, and enterprise buyers actually check, and how to be ready to answer. Architecture narrative, risk posture, and processes that actually give you something in return. <a href="https://blog.veitheller.de/What_good_looks_like_in_a_data_room.html">Read about it here.</a></p>
<ul>
<li><strong>Takeaways:</strong> a DD checklist, a clean architecture one-pager, a 30-day prep plan including process refinements (workshop only).</li>
<li><strong>Formats:</strong> 4590min talk, ~3h half-day, 68h full-day (hands-on)</li>
</ul>
<p><a href="mailto:veit@veitheller.de?subject=Funding and buyer readiness workshop inquiry">Book this workshop</a></p>
<div class="rule"></div>
<p>Custom workshops are available; tell me your teams goals and Ill tell you if I can help you.</p>
</section>
<section id="talks" class="panel" role="tabpanel" aria-labelledby="label-talks">
<article>
<h3><i>Upcoming:</i> Type Systems You Might Not Know (But Will Love)</h3>
<p><em>WeAreDevelopers World Congress Europe, 2026</em><br>
A tour through beautiful but lesser-known type systems.</p>
</article>
<article>
<h3>Von der Cloud ins Rack Wie Netzautomatisierung souveräne RZ-Umgebungen ermöglicht</h3>
<p><em>Rack & Stack 2026</em><br>
A German talk on high fidelity network automation to drive the adoption of sovereign data infrastructure.</p>
<p><i>Recording pending</i></p>
</article>
<article>
<h3>Network Automation in the Modern Age</h3>
<p><em>DKNOG, 2026</em><br>
A talk about the future of network automation, and how to facilitate having your own model of the world.</p>
<p><a href="https://www.youtube.com/watch?v=zBW63nHiia8">Watch →</a></p>
</article>
<article>
<h3>gt4llm Software Development with LLMs in Glamorous Toolkit</h3>
<p><em>European Smalltalk User Group, 2024</em><br>
An overview of LLM integration into Glamorous Toolkit, with a focus on reproducibility and development workflows.</p>
<p><a href="https://www.youtube.com/watch?v=ukgsng9bIVw">Watch →</a></p>
</article>
<article>
<h3>gt4python Working with Python inside Glamorous Toolkit</h3>
<p><em>European Smalltalk User Group, 2024</em><br>
A talk on Python inside Glamorous Toolkit.</p>
<p><a href="https://www.youtube.com/watch?v=Lvtgk4w9zo4">Watch →</a></p>
</article>
<article>
<h3>gt4atproto A Programmable Environment for Social Media</h3>
<p><em>European Smalltalk User Group, 2023</em><br>
A demonstration of working with the AT Protocol inside Glamorous Toolkit, emphasizing customization and tooling.</p>
<p><a href="https://www.youtube.com/watch?v=azSz7fkY7jU">Watch →</a></p>
</article>
<article>
<h3>Implementing an IDE in GT</h3>
<p><em>European Smalltalk User Group, 2022</em><br>
A talk on building an IDE for Carp inside Glamorous Toolkit.</p>
<p><a href="https://www.youtube.com/watch?v=G-0Vic9fQU0">Watch →</a></p>
</article>
<article>
<h3>Brainfuck, Carp, Macros, and Futamura Projections</h3>
<p><em>LambdaLounge, 2021</em><br>
A technical presentation connecting minimal languages, metaprogramming, and interpreter folding techniques.</p>
<p><a href="https://www.youtube.com/watch?v=wwwa5TG70UA">Watch →</a></p>
</article>
<article>
<h3>All I Have is a Hammer, Now Give Me All Your Nails!</h3>
<p><em>EnthusiastiCon, 2020</em><br>
A short talk on abstractions as axioms.</p>
<p><a href="https://www.youtube.com/live/EkbcI3KgUuY?feature=shared&t=8360">Watch →</a></p>
</article>
<article>
<h3>Programming Languages and Trust</h3>
<p><em>Datengarten 96</em><br>
On compilers, interpreters, and safety.</p>
<p><a href="https://media.ccc.de/v/dg-96">Watch →</a></p>
</article>
<article>
<h3>Automate Yourself Within Six Months</h3>
<p><em>DeNOG, 2019 (w/ Christian Dieckhoff)</em><br>
A retrospective on automating an ISPs network infrastructure.</p>
<p><a href="https://media.ccc.de/v/denog11-26-automate-yourself-within-six-months">Watch →</a></p>
</article>
<article>
<h3>Abstractions! How Do I Even?</h3>
<p><em>EnthusiastiCon, 2019</em><br>
A short reflection on abstractions and philosophy.</p>
<p><a href="https://www.youtube.com/watch?v=71FQXcC6RL8">Watch →</a></p>
</article>
<article>
<h3>Carp—A Language for the 21st Century</h3>
<p><em>clojuTRE, 2018</em><br>
An introduction to Carp.</p>
<p><a href="https://www.youtube.com/watch?v=BQeG6fXMk28">Watch →</a></p>
</article>
</section>
<section id="publications" class="panel" role="tabpanel" aria-labelledby="label-publications">
<article>
<h3>Efficient Module-Level Dynamic Analysis for Dynamic Languages with Module Recontextualization</h3>
<p><em>ESEC/FSE 2021 — Distinguished Paper Award</em><br>
Describes a method for performing dynamic analysis at the module level to enable module-level execution security. I only worked on the Racket implementation, not the JavaScript part.</p>
<p><a href="https://dl.acm.org/doi/10.1145/3468264.3468574">Read →</a></p>
</article>
<article>
<h3>Eventually Consistent Partying</h3>
<p><em>SIGBOVIK, 2019</em><br>
This one might be a joke.</p>
<p><a href="https://sigbovik.org/2019/proceedings.pdf">Read →</a></p>
</article>
</section>
<footer class="legal">
<a href="./imprint.html">Imprint</a>
<a href="./gdpr_notice.html">GDPR Notice</a>
</footer>
</main>
<script>
(function() {
var tabs = ['bookable', 'talks', 'publications'];
var labels = document.querySelectorAll('nav.tabs label');
function syncAria(active) {
labels.forEach(function(l) {
l.setAttribute('aria-selected', l.getAttribute('for') === 'tab-' + active ? 'true' : 'false');
});
}
var hash = location.hash.substring(1);
if (tabs.indexOf(hash) !== -1) {
var input = document.getElementById('tab-' + hash);
if (input) input.checked = true;
syncAria(hash);
} else {
syncAria('bookable');
}
labels.forEach(function(l) {
l.addEventListener('click', function() {
var name = l.getAttribute('for').replace('tab-', '');
history.replaceState(null, '', '#' + name);
syncAria(name);
});
l.addEventListener('keydown', function(e) {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
l.click();
}
});
});
})();
</script>
</body>
</html>