quiet redesign yo
This commit is contained in:
+19
-5
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="GDPR Notice | Veit Heller—Technologist at Large">
|
||||
@@ -12,6 +12,7 @@
|
||||
src: url('charter_regular-webfont.woff') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
@@ -25,7 +26,7 @@
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
background-color: #fafaf3;
|
||||
background-color: #fafaf7;
|
||||
}
|
||||
.main {
|
||||
max-width: 600px;
|
||||
@@ -37,16 +38,31 @@
|
||||
font-size: 28px;
|
||||
font-weight: 400;
|
||||
}
|
||||
.main h2 {
|
||||
font-size: 22px;
|
||||
font-weight: 400;
|
||||
margin-top: 2em;
|
||||
}
|
||||
.main a {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
border-bottom: 2px solid #d6dde3;
|
||||
}
|
||||
.site-link {
|
||||
font-size: 16px;
|
||||
color: #444;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.site-link a {
|
||||
border-bottom: none;
|
||||
color: #444;
|
||||
}
|
||||
</style>
|
||||
<title>GDPR Notice | Veit Heller—Technologist at Large</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<p class="site-link"><a href="/">← Veit Heller</a></p>
|
||||
<h1>GDPR Notice</h1>
|
||||
<p>
|
||||
This is the personal website of Veit Heller. I will provide a notice that
|
||||
@@ -83,9 +99,7 @@
|
||||
Germany
|
||||
</p>
|
||||
<p>Don't know what this is? This is a necessity dictated by European law.</p>
|
||||
<hr/>
|
||||
<a href="mailto:veit@veitheller.de">Shoot me an e-mail</a><br/>
|
||||
<a href="./">Head back home</a>
|
||||
<p>See also: <a href="./imprint.html">Imprint</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+12
-4
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="description" content="Imprint | Veit Heller—Technologist at Large">
|
||||
@@ -43,11 +43,21 @@
|
||||
text-decoration: none;
|
||||
border-bottom: 2px solid #d6dde3;
|
||||
}
|
||||
.site-link {
|
||||
font-size: 16px;
|
||||
color: #444;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.site-link a {
|
||||
border-bottom: none;
|
||||
color: #444;
|
||||
}
|
||||
</style>
|
||||
<title>Imprint | Veit Heller—Technologist at Large</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<p class="site-link"><a href="/">← Veit Heller</a></p>
|
||||
<h1>Imprint</h1>
|
||||
<p>Veit Heller<br/>
|
||||
Moltkestr. 5<br/>
|
||||
@@ -55,9 +65,7 @@
|
||||
Germany
|
||||
</p>
|
||||
<p>Don't know what this is? This is a necessity dictated by German law.</p>
|
||||
<hr/>
|
||||
<a href="mailto:veit@veitheller.de">Shoot me an e-mail</a><br/>
|
||||
<a href="./">Head back home</a>
|
||||
<p>See also: <a href="./gdpr_notice.html">GDPR Notice</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+1
-4
@@ -135,9 +135,6 @@
|
||||
.broken-up {
|
||||
display: block;
|
||||
}
|
||||
.broken-up li {
|
||||
list-style: circle;
|
||||
}
|
||||
.main h1 {
|
||||
font-size: 20px;
|
||||
}
|
||||
@@ -291,7 +288,7 @@
|
||||
<ul>
|
||||
<li>Community events: travel-only (free if remote)</li>
|
||||
<li>Corporate talks (45–60 min): 1,900€–2,400€</li>
|
||||
<li>Corporate talks (75–90 min): 2,400€-2,800€</li>
|
||||
<li>Corporate talks (75–90 min): 2,400€–2,800€</li>
|
||||
<li>Half-day workshop (2–4h): 2,500€–3,000€</li>
|
||||
<li>Full-day workshop (6–8h): 4,200€–4,800€</li>
|
||||
<li>Prep and post is included</li>
|
||||
|
||||
+71
-16
@@ -35,7 +35,6 @@
|
||||
font-family: 'charterregular', Georgia, serif;
|
||||
font-size: 18px;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
background-color: #fafaf7;
|
||||
}
|
||||
@@ -118,6 +117,25 @@
|
||||
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;
|
||||
@@ -127,6 +145,7 @@
|
||||
</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>
|
||||
@@ -135,21 +154,21 @@
|
||||
<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">
|
||||
<label for="tab-bookable">Bookable</label>
|
||||
<label for="tab-talks">Talks</label>
|
||||
<label for="tab-publications">Publications</label>
|
||||
<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">
|
||||
<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> 45–90min talk, ~3h half-day (guided exercise), 6–8h full-day (hands-on)</li>
|
||||
<li><strong>Formats:</strong> 45–90min talk, ~3h half-day, 6–8h full-day (hands-on)</li>
|
||||
</ul>
|
||||
<p><a href="mailto:veit@veitheller.de?subject=threat modelling workshop inquiry">Book this workshop</a></p>
|
||||
<p><a href="mailto:veit@veitheller.de?subject=Threat modelling workshop inquiry">Book this workshop</a></p>
|
||||
|
||||
<div class="rule"></div>
|
||||
|
||||
@@ -159,7 +178,7 @@
|
||||
<li><strong>Takeaways:</strong> control set, CI/CD hooks for evidence (workshop only), audit-ready checklists.</li>
|
||||
<li><strong>Formats:</strong> 45–90min talk, ~3h half-day, 6–8h full-day (hands-on)</li>
|
||||
</ul>
|
||||
<p><a href="mailto:veit@veitheller.de?subject=isms and ssdlc workshop inquiry">Book this workshop</a></p>
|
||||
<p><a href="mailto:veit@veitheller.de?subject=ISMS and SSDLC workshop inquiry">Book this workshop</a></p>
|
||||
|
||||
<div class="rule"></div>
|
||||
|
||||
@@ -167,9 +186,9 @@
|
||||
<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> 45–90min talk, ~3h workshop, 6-8h full-day (hands on)</li>
|
||||
<li><strong>Formats:</strong> 45–90min talk, ~3h half-day, 6–8h 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>
|
||||
<p><a href="mailto:veit@veitheller.de?subject=Funding and buyer readiness workshop inquiry">Book this workshop</a></p>
|
||||
|
||||
<div class="rule"></div>
|
||||
|
||||
@@ -177,17 +196,17 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section id="talks" class="panel">
|
||||
<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>
|
||||
<p>A tour through beautiful but lesser-known type systems.</p>
|
||||
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>
|
||||
<p>A German talk on high fidelity network automation to drive the adoption of sovereign data infrastructure.</p>
|
||||
A German talk on high fidelity network automation to drive the adoption of sovereign data infrastructure.</p>
|
||||
<p><i>Recording pending</i></p>
|
||||
</article>
|
||||
|
||||
@@ -230,7 +249,7 @@
|
||||
<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=G-0Vic9fQU0">Watch →</a></p>
|
||||
<p><a href="https://www.youtube.com/watch?v=wwwa5TG70UA">Watch →</a></p>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
@@ -269,7 +288,7 @@
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section id="publications" class="panel">
|
||||
<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>
|
||||
@@ -285,6 +304,42 @@
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user