Files
2026-10-13 12:25:54 +02:00

341 lines
12 KiB
HTML
Raw Permalink 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="Talks and publications by Veit Heller on programming languages, developer tooling, network automation, and security.">
<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="Talks and publications by Veit Heller on programming languages, developer tooling, network automation, and security.">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://veitheller.de/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Veit Heller—Technologist at Large">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Talks & Publications — Veit Heller">
<meta name="twitter:description" content="Talks and publications by Veit Heller on programming languages, developer tooling, network automation, and security.">
<meta name="twitter:image" content="https://veitheller.de/og.png">
<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 ul {
margin-top: 0.1em;
list-style: none;
padding: 0;
margin: 0 0 0.9rem;
}
.main ul li {
position: relative;
padding-left: 1.1rem;
margin-bottom: 0.35rem;
}
.main ul li::before {
content: "·";
position: absolute;
left: 0.3rem;
top: -0.05em;
color: #444;
}
.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-talks:checked ~ #talks,
#tab-publications:checked ~ #publications {
display: block;
}
#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>Talks &amp; Publications</h1>
<p class="description">I speak and write about systems of all shapes and
sizes.</p>
<p>For professional workshops, check out <a href="https://cyberwitchery.com/#h-talks">cyberwitchery</a>.
Our lab notes are on the <a href="https://cyberwitchery.com/papers.html">cyberwitchery papers page</a>.</p>
<input type="radio" name="tab" id="tab-talks" class="tab-input" checked>
<input type="radio" name="tab" id="tab-publications" class="tab-input">
<nav class="tabs" role="tablist">
<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="talks" class="panel" role="tabpanel" aria-labelledby="label-talks">
<article>
<h3>AI Architecture Katas: Learning by Building Small Models in Plain Python </h3>
<p><em>EuroPython, 2026</em><br>
A talk about how to build your own small but capable models for larning,
and how to approach the big and scary world of AI/LLM research. Also to
be given at <a href="https://www.kinavigator.eu/en/home/">KI Navigator</a>.</p>
<p><a href="https://www.youtube.com/watch?v=H2uNW_fzwlQ">Watch →</a></p>
</article>
<article>
<h3>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>
<p><a href="https://www.wearedevelopers.com/videos/100067-type-systems-you-might-not-know-but-will-love">Watch →</a></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>
</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 ISP’s 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. In other forms also given at <a href="https://www.youtube.com/watch?v=7F81OZg6yPY">EnthusiastiCon 2018</a>,
at <a href="https://www.recurse.com/blog/142-localhost-15-veit-heller-on-carp-a-programming-language-for-the-21st-century">Localhost #15</a> (invited by the Recurse Center), at <a href="https://www.youtube.com/watch?v=Q1BVfGIhwZI">CurryOn 2019</a>, and at the Clojure Meetup Berlin.</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 = ['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('talks');
}
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>