Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .eleventy.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ module.exports = function (config) {

// ----------------------- Layouts -----------------------
[
"default", "narrow", "post", "video", "page", "course", "newsletter",
"default", "narrow", "post", "video", "talk", "page", "course", "newsletter",
].forEach((layoutName) => {
config.addLayoutAlias(layoutName, `layouts/${layoutName}.html`);
});
Expand Down Expand Up @@ -57,6 +57,13 @@ module.exports = function (config) {
});
});

config.addCollection('talks', (collectionApi) => {
return collectionApi.getFilteredByGlob('src/site/talks/**/*.md')
.sort((a, b) => {
return b.date - a.date;
});
});

config.addCollection("tags", function (collection) {
const tags = new Set();
for (const item of collection.getAll()) {
Expand Down
26 changes: 26 additions & 0 deletions src/site/_includes/layouts/talk.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
layout: page
no_title: true
---

{% if videoId %}
<div class="mt-12">
{% render "youtube-embed.html", videoId:videoId, videoDescription: title %}
</div>
{% endif %}

<article class="prose dark:prose-dark max-w-none pt-12">
<p>
<a href="/talks/" class="no-underline">&larr; Back to talks</a>
</p>

<h1 class="mt-5 mb-2">{{ title | escape_once }}</h1>

<p class="text-savjeelightgrey3">
{{ conference }}{% if location %} • {{ location }}{% endif %}{% if date %} • {{ date | date: "%B %-d, %Y" }}{% endif %}
</p>

<div class="max-w-3xl">
{{ content }}
</div>
</article>
2 changes: 1 addition & 1 deletion src/site/sitemaps/sitemap.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
This was done so there is exactly 1 URL per line. Adding
more linebreaks will result in a file with empty lines.
{%- endcomment -%}
{%- assign collection_names = 'trivia,posts,videos,courses,newsletter' | split: ',' -%}
{%- assign collection_names = 'trivia,posts,videos,talks,courses,newsletter' | split: ',' -%}
{%- for collection_name in collection_names -%}
{%- for item in collections[collection_name] -%}
{% baseUrl %}{{ item.url }}
Expand Down
73 changes: 73 additions & 0 deletions src/site/speaker.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
layout: page
title: Speaking
description: Xavier Decuyper gives clear, practical talks that make complex tech understandable for broad audiences.
permalink: /talks/
---

<section class="mt-2 md:mt-4 mb-12 md:mb-14">
<div class="grid gap-8 md:gap-10 md:grid-cols-[1.8fr_1fr] items-start">
<div>
<p class="text-2xl md:text-3xl leading-tight font-semibold text-savjeeblack dark:text-savjeewhite m-0">
Simply Explained, but on stage.
</p>
<p class="text-lg md:text-xl leading-relaxed text-savjeelightgrey3 dark:text-savjeelightgrey3 mt-4 mb-6 md:mb-8">
I give practical talks that make complex technology understandable for broad audiences — without dumbing it down.
</p>

<p>What audiences can expect</p>

<ul class="list-none p-0 m-0 space-y-3">
<li class="flex items-start gap-2">
<span aria-hidden="true">✓</span>
<span>No jargon overload. Strong mental models people remember.</span>
</li>
<li class="flex items-start gap-2">
<span aria-hidden="true">✓</span>
<span>Concepts stay technically honest while remaining accessible.</span>
</li>
<li class="flex items-start gap-2">
<span aria-hidden="true">✓</span>
<span>Attendees leave with ideas they can apply immediately.</span>
</li>
</ul>
</div>

<div class="max-w-xs md:max-w-none mx-auto md:mx-0">
<img
src="/assets/img/about-me-2.webp"
alt="Xavier giving a conference talk"
class="w-full rounded-xl"
loading="lazy"
>
</div>
</div>
</section>

<section class="mb-14 md:mb-16">
<h2 class="text-3xl md:text-4xl font-bold mb-5 md:mb-6 mt-0">Past talks</h2>

<div class="space-y-5 md:space-y-6">
{% for talk in collections.talks %}
<article class="border border-savjeelightgrey4 dark:border-savjeelightgrey3/30 rounded-xl p-5 md:p-6">
<h3 class="text-xl md:text-2xl font-bold mt-0 mb-2 leading-tight">
<a href="{{ talk.url }}" class="no-underline hover:underline text-savjeered">{{ talk.data.title }}</a>
</h3>

<p class="text-savjeelightgrey3 mb-4">
{{ talk.data.conference }}{% if talk.data.location %} • {{ talk.data.location }}{% endif %} • {{ talk.date | date: "%B %-d, %Y" }}
</p>

<p class="mb-0 text-lg leading-relaxed">{{ talk.data.summary }}</p>
</article>
{% endfor %}
</div>
</section>

<section class="bg-savjeeblue dark:bg-savjeelightgrey3 text-savjeewhite rounded-xl p-8 md:p-10 text-center mb-6">
<h2 class="text-3xl font-bold mt-0 mb-3">Want me to speak at your event?</h2>
<p class="mb-6 text-lg">I’m available for keynotes, workshops, and conference talks.</p>
<a href="mailto:hello@savjee.be" class="inline-block bg-savjeered hover:bg-savjeewhite hover:text-savjeered text-savjeewhite font-bold py-3 px-8 rounded-md no-underline transition-colors">
Get in touch
</a>
</section>
14 changes: 14 additions & 0 deletions src/site/talks/2018-04-26-iotconf.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
layout: talk
title: Blockchain Fundamentals for Real-World Builders
conference: IoTConf
location: Malmö, Sweden
date: 2018-04-26
summary: A practical intro to blockchain and smart contracts, focused on what these systems are good at (and where they are not).
videoId: WecO7hGDx3Y
permalink: /talks/blockchain-fundamentals-for-real-world-builders/
---

In this talk, I break down blockchain from first principles and avoid buzzword-heavy explanations.

The focus is practical: what problems blockchains can solve, how smart contracts fit in, and what trade-offs teams should understand before building with them.
14 changes: 14 additions & 0 deletions src/site/talks/2018-10-04-digital-evolution-conference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
layout: talk
title: Blockchain & Smart Contracts, Clearly Explained
conference: Digital Evolution Conference
location: Malmö, Sweden
date: 2018-10-04
summary: A clear deep dive into distributed ledgers, immutability, trust models, and smart contracts with practical examples.
videoId: HNCwbKAY7AM
permalink: /talks/blockchain-smart-contracts-clearly-explained/
---

This session explains how blockchain systems work under the hood, without assuming deep prior knowledge.

I cover the core mechanics, where smart contracts add value, and where traditional architectures are often still the better choice.
14 changes: 14 additions & 0 deletions src/site/talks/2022-11-17-catholic-crypto-conference-part-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
layout: talk
title: What is a Cryptocurrency?
conference: Catholic Crypto Conference
location: Pennsylvania, USA
date: 2022-11-17
summary: "A beginner-friendly introduction to blockchains and cryptocurrencies: what they are, how they work, and where they fit."
videoId: vJfdO9QuroY
permalink: /talks/what-is-a-cryptocurrency/
---

Part 1 lays the groundwork: core terms, building blocks, and the mental models needed to follow the rest of the conversation.

The goal is to make the topic approachable for a broad audience while keeping the explanations technically honest.
14 changes: 14 additions & 0 deletions src/site/talks/2022-11-17-catholic-crypto-conference-part-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
layout: talk
title: What is DeFi?
conference: Catholic Crypto Conference
location: Pennsylvania, USA
date: 2022-11-17
summary: "An introduction to decentralized finance with practical use cases including lending, DEXes, NFTs, and tokens."
videoId: vocM1bRVZmg
permalink: /talks/what-is-defi/
---

Part 2 builds on the fundamentals and focuses on practical interpretation: what matters, what to ignore, and how to reason about claims.

It’s designed to help people stay curious while filtering out hype and confusion.
Loading