From 74a465de6d720459e44220c45ca4233624323c34 Mon Sep 17 00:00:00 2001 From: Alfonso Subiotto Marques Date: Fri, 16 Jan 2026 09:01:28 +0100 Subject: [PATCH] speaking: add speaking tab with talks Signed-off-by: Alfonso Subiotto Marques --- .gitignore | 1 + config.toml | 6 ++ content/speaking/_index.md | 7 ++ content/speaking/eurorust-2025.md | 7 ++ content/speaking/systems-distributed-2025.md | 8 +++ layouts/speaking/list.html | 40 +++++++++++ static/css/custom.css | 70 ++++++++++++++++++++ 7 files changed, 139 insertions(+) create mode 100644 content/speaking/_index.md create mode 100644 content/speaking/eurorust-2025.md create mode 100644 content/speaking/systems-distributed-2025.md create mode 100644 layouts/speaking/list.html diff --git a/.gitignore b/.gitignore index 310e3ac..dcce176 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ resources/** public/** .hugo_build.lock +.playwright-mcp diff --git a/config.toml b/config.toml index 5eb0d19..dcc32f7 100644 --- a/config.toml +++ b/config.toml @@ -41,6 +41,12 @@ googleAnalytics = "G-4J888DE1QK" identifier = "writing" pageRef = "/writing/" + [[menu.main]] + name = "Speaking" + weight = 3 + identifier = "speaking" + pageRef = "/speaking/" + # Jobs commented out; difficult to keep updated. # [[menu.main]] # identifier = "jobs" diff --git a/content/speaking/_index.md b/content/speaking/_index.md new file mode 100644 index 0000000..fe81968 --- /dev/null +++ b/content/speaking/_index.md @@ -0,0 +1,7 @@ +--- +title: "Speaking" +date: 2025-06-20T00:00:00Z +draft: false +--- + +A collection of talks I've given at conferences and meetups about deterministic simulation testing, database systems, and Rust. diff --git a/content/speaking/eurorust-2025.md b/content/speaking/eurorust-2025.md new file mode 100644 index 0000000..302779c --- /dev/null +++ b/content/speaking/eurorust-2025.md @@ -0,0 +1,7 @@ +--- +title: "Random Seeds and State Machines" +date: 2025-10-10T00:00:00Z +draft: false +event: "EuroRust 2025" +youtube_id: "V12hHoagv-E" +--- diff --git a/content/speaking/systems-distributed-2025.md b/content/speaking/systems-distributed-2025.md new file mode 100644 index 0000000..faab70d --- /dev/null +++ b/content/speaking/systems-distributed-2025.md @@ -0,0 +1,8 @@ +--- +title: "DST (again) With State Machines in Rust" +date: 2025-06-20T00:00:00Z +draft: false +event: "Systems Distributed '25" +youtube_id: "k58vJle3rxU" +start: 100 +--- diff --git a/layouts/speaking/list.html b/layouts/speaking/list.html new file mode 100644 index 0000000..ceaae20 --- /dev/null +++ b/layouts/speaking/list.html @@ -0,0 +1,40 @@ +{{ define "main" }} +
+

{{ .Title }}

+ + {{ if .Content }} +
{{ .Content }}
+ {{ end }} + +
    + {{ range sort .Data.Pages "Date" "desc" }} +
  • +
    + {{ .Title }} + + {{ .Params.event }} + · + + {{ if $.Site.Params.dateformShort }} + {{ time.Format $.Site.Params.dateformShort .Date }} + {{ else }} + {{ time.Format "Jan 2, 2006" .Date }} + {{ end }} + + +
    +
    + +
    +
  • + {{ end }} +
+
+{{ end }} diff --git a/static/css/custom.css b/static/css/custom.css index 7e0df29..0bbc3dd 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -20,4 +20,74 @@ max-width: 90%; margin: 1.75rem auto 0; } +} + +/* Speaking page styles */ +.talks-list { + flex-grow: 1; + margin: 0; + padding: 0; + list-style: none; +} + +.talk-item { + border-bottom: 1px grey dashed; + padding: 1.5rem 0; +} + +.talk-item:last-child { + border-bottom: none; +} + +.talk-header { + display: flex; + justify-content: space-between; + align-items: baseline; + margin-bottom: 1rem; + flex-wrap: wrap; + gap: 0.5rem; +} + +.talk-title { + font-size: 1rem; + font-weight: 500; +} + +.talk-meta { + color: #999; + font-size: 0.875rem; + flex-shrink: 0; +} + +@media (prefers-color-scheme: dark) { + .talk-meta { + color: #b3b3bd; + } +} + +[data-theme=dark] .talk-meta { + color: #b3b3bd; +} + +.talk-separator { + margin: 0 0.4rem; +} + +/* Responsive 16:9 video container */ +.video-container { + position: relative; + width: 100%; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + border-radius: 4px; +} + +.video-container iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border-radius: 4px; } \ No newline at end of file