EuroRust is an inclusive conference and strives to be accessible to everyone. We offer significantly discounted tickets for concession holders as well as complimentary tickets for assistants of disabled participants. If you’re not sure whether the concession rate should apply to you, please do get in touch via mail@eurorust.eu,
-
-
Our goal is that the conference and related events are accessible to everyone. However, we are aware that accessibility issues are diverse and we may not have everything covered off in our plans – please reach out, and we will do our very best to confirm we have those requirements under control. Send an email to mail@eurorust.eu.
-
-
While we are still in the process of finalizing all the details around the event, there are already some concrete measures we know we'll be able to take to ensure the event is accessible for everyone:
-
-
-
The conference venue will be fully accessible by wheelchair.
-
Clear signage to, from and through the venue will be installed.
-
Non-gendered toilets will be available.
-
We'll serve a wide range of food, including vegan and vegetarian options.
-
-
diff --git a/content/cancellation.md b/content/cancellation.md
deleted file mode 100644
index 183b6559..00000000
--- a/content/cancellation.md
+++ /dev/null
@@ -1,18 +0,0 @@
-+++
-template = "generic-content.html"
-title = "Cancellation up to 30 Days Before the Conference"
-+++
-
-
-
Up to 30 days before the start of the conference, you can get a full refund for your ticket. Send an email to mail@eurorust.eu and we will process your refund.
-
-
-
Cancellation within 30 Days Before the Conference
-
-
We are unable to offer refunds within 30 days of the conference, however your ticket can be reassigned at any time to a different attendee. To reassign your ticket, please follow the link on your original confirmation email.
-
-
-
"Force Majeure" events
-
-
Should the conference be cancelled for any reason (including due to restrictions because of the Coronavirus pandemic), purchased tickets will be valid for the next year.
-
\ No newline at end of file
diff --git a/content/health-safety-policy.md b/content/health-safety-policy.md
deleted file mode 100644
index 553aa2e3..00000000
--- a/content/health-safety-policy.md
+++ /dev/null
@@ -1,24 +0,0 @@
-+++
-template = "generic-content.html"
-title = "Health & Safety Policy"
-+++
-
-
-
- While we're all excited about connecting with the Rust community face-to-face in Vienna, we want to ensure that the event is accessible and attendees remain safe during the two days of the conference. The following safety policy applies to all on-site ticket holders, sponsors, speakers, service partners, etc. If it needs to be changed, we will update everyone via email.
-
-
-
General Recommendations
-
-
-
-
First and foremost, if you feel sick or have tested positive, stay at home. On-Site Tickets allow access to the virtual part of the conference as well.
-
-
-
Please keep in mind that some of our attendees may be vulnerable and not comfortable socializing as before. Please respect all attendees' individual wishes on social distancing.
-
-
-
We’ll provide an outdoor area for people to have meals and spend time between talks.
As a Software Engineer at Meta I was a part of the first large Rust project at Meta and a state-of-the-art source control server. I’ve encountered "impossible" runtime issues in a heavy async environment and debugged segfaults in async C++/Rust FFIs. In my work-life I’m a big advocate for quality and reliability and like to dig deep and understand how things work. My free time though I spend hiking and sword fencing.
'
-+++
diff --git a/content/speakers/alberto-schiabel.md b/content/speakers/alberto-schiabel.md
deleted file mode 100644
index d0e43e41..00000000
--- a/content/speakers/alberto-schiabel.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Alberto Schiabel 🦀"
-[extra]
- name = "Alberto Schiabel 🦀"
- title = "Open-Source Engineer at Prisma"
- image = "2024/images/speakers/alberto-schiabel.jpg"
- twitter = "jkomyno"
- url = "https://github.com/jkomyno"
-+++
-Alberto Schiabel (@jkomyno) is a senior software engineer, consultant, and former startup co-founder from Venice, Italy. He has 8+ years of industry experience, and is interested in WebAssembly. He’s currently an open-source engineer at Prisma, where he mainly writes in Rust and TypeScript. He also writes scientific software for the Czech Technical University in Prague.
\ No newline at end of file
diff --git a/content/speakers/aleksandr-petrosyan.md b/content/speakers/aleksandr-petrosyan.md
deleted file mode 100644
index 2eb3ce20..00000000
--- a/content/speakers/aleksandr-petrosyan.md
+++ /dev/null
@@ -1,7 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Aleksandr Petrosyan"
-[extra]
- name = "Aleksandr Petrosyan"
-+++
-I’m a Bayesian machine learning specialist turned Rust engineer. I’m currently the technical lead for the Hyperledger Iroha v2 project and have several publications in Machine Learning, Distributed systems and Physics.
\ No newline at end of file
diff --git a/content/speakers/amanda-stjerna.md b/content/speakers/amanda-stjerna.md
deleted file mode 100644
index 9c826711..00000000
--- a/content/speakers/amanda-stjerna.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Amanda Stjerna"
-[extra]
- name = "Amanda Stjerna"
- title = "PhD student in Web security at Uppsala university"
- image = "2024/images/speakers/amanda.jpg"
- mastodon = "https://social.spejset.org/@amanda"
- url = "https://github.com/amandasystems"
- bio = "
Amanda is a PhD student in Web security at Uppsala university for increasingly broad definitions of \"Web\" and \"security\". She was exposed to Rust during her undergraduate shortly after the group project on making a garbage collector in C where she met her wife. Rust's type-system driven memory management was an easy sell after the experience. She has been working on Polonius on and off since writing her master's thesis on it and is currently working near full time alongside Rémy Rakic and Niko Matsakis in the Polonius Working Group on finishing a prototype on schedule.
Amanda lives with her wife, a high-energy herding dog and an even higher-energy toddler on the outskirts of Uppsala, Sweden. In her spare time she sleeps or does the dishes.
"
-+++
diff --git a/content/speakers/armin-ronacher.md b/content/speakers/armin-ronacher.md
deleted file mode 100644
index efee3cb8..00000000
--- a/content/speakers/armin-ronacher.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Armin Ronacher"
-[extra]
- name = "Armin Ronacher"
- image = "2024/images/speakers/armin.png"
- twitter = "mitsuhiko"
- url = "https://mitsuhiko.at/?utm_source=eurorust"
-+++
-Armin Ronacher is Principal Architect at Sentry. He has created countless Open Source projects (most in Python and Rust) including the Flask framework and the Insta snapshot testing library. He has a fable for queues and processing pipelines and API design and oversees technical decision making at Sentry.
\ No newline at end of file
diff --git a/content/speakers/arpad-borsos.md b/content/speakers/arpad-borsos.md
deleted file mode 100644
index 6e81d24d..00000000
--- a/content/speakers/arpad-borsos.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Arpad Borsos"
-[extra]
- name = "Arpad Borsos"
- url = "https://swatinem.de/?utm_source=eurorust"
- image = "2024/images/speakers/arpad-borsos.jpg"
-+++
-Hi, I’m Arpad, and I go by Swatinem online. I work with (async) Rust day-to-day, writing critical processing infrastructure at Sentry. I’m also interested in improving Rust itself, where my focus has been on improving async Rust, and some work around code coverage.
\ No newline at end of file
diff --git a/content/speakers/arthur-cohen.md b/content/speakers/arthur-cohen.md
deleted file mode 100644
index 4a7369f3..00000000
--- a/content/speakers/arthur-cohen.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Arthur Cohen"
-[extra]
- name = "Arthur Cohen"
- title = "Compiler Engineer at Embecosm"
- image = "2024/images/speakers/arthur-cohen.jpg"
- twitter = "CohenArthurDev"
- url = "https://cohenarthur.github.io/?utm_source=eurorust"
-+++
-My name is Arthur Cohen, and I am a compiler engineer at [Embecosm](https://www.embecosm.com/?utm_source=eurorust). I spend my time contributing to `gccrs`, an alternative compiler for the Rust programming language, and also like to contribute to the official compiler when I can. My other main project is `jinko`, a statically-typed scripted language with a strong functional background and a powerful type system.
\ No newline at end of file
diff --git a/content/speakers/arthur-pastel.md b/content/speakers/arthur-pastel.md
deleted file mode 100644
index d7f9002b..00000000
--- a/content/speakers/arthur-pastel.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Arthur Pastel"
-[extra]
- name = "Arthur Pastel"
- url = "https://codspeed.io/"
- image = "2024/images/speakers/arthur.jpg"
- twitter = "Art049"
- bio = "
Hi, I’m Arthur, a software engineer based in Paris 🇫🇷🥖
I worked as an engineer in a few tech companies over the past years and started with Rust two years ago. I’m also passionate about (too??) many other software fields.
Two years ago, I founded CodSpeed, a Continuous Performance Analysis solution helping tech companies and Open-Source projects prevent performance issues during development instead of waiting until the production breaks to start working on optimizing. We’re already helping some big open-source projects optimize their performance continuously and hope to continue contributing to an overall faster ecosystem ⚡️
"
-+++
diff --git a/content/speakers/ashley-williams.md b/content/speakers/ashley-williams.md
deleted file mode 100644
index fc6301cf..00000000
--- a/content/speakers/ashley-williams.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Ashley Williams"
-[extra]
- name = "Ashley Williams"
- image = "2024/images/speakers/ashley-williams.jpeg"
- twitter = "ag_dubs"
- url = "https://axo.dev/?utm_source=eurorust"
-+++
-ashley is a former member of the Rust Core team and served as the founding executive director of the Rust Foundation. she has served as a leader or member of the Rust crates.io, infrastructure, and community teams, WebAssembly working group, and the RustBridge and Increasing Rust's Reach programs. previously, ashley was a leader of the Node.js Community Committee, founded the NodeTogether educational initiative, and served as the first Individual Membership Director of the Node.js Foundation (now OpenJS Foundation). ashley has worked at npm, Mozilla, and Cloudflare. ashley studied Neuroscience and Philosophy and was originally a middle school science teacher in NYC. she recently founded a company, axodotdev, and serves as its CEO.
\ No newline at end of file
diff --git a/content/speakers/attila-haraszti.md b/content/speakers/attila-haraszti.md
deleted file mode 100644
index 90c8e04d..00000000
--- a/content/speakers/attila-haraszti.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Attila Haraszti"
-[extra]
- name = "Attila Haraszti"
- url = "https://haywirez.com/"
- image = "2024/images/speakers/attila.jpg"
- twitter = "haywirez"
- bio = "
Attila Haraszti / h̷a̷y̷w̷i̷r̷e̷z̶ is a veteran dance music producer and independent software professional specializing in networked media applications. He is currently developing Songsling, a web-based creation and publishing suite for interactive music and audio.
"
-+++
diff --git a/content/speakers/ayaz-hafiz.md b/content/speakers/ayaz-hafiz.md
deleted file mode 100644
index 0e4669bf..00000000
--- a/content/speakers/ayaz-hafiz.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Ayaz Hafiz"
-[extra]
- name = "Ayaz Hafiz"
- image = "2024/images/speakers/ayaz-hafiz.jpg"
- url = "https://ayazhafiz.com/?utm_source=eurorust"
-+++
-Ayaz works on developer tools and programming languages at RWX. Ayaz is interested in designing tools that make software engineering more productive for everyone. He’s also a huge fan of hiking, rock climbing, and skiing.
\ No newline at end of file
diff --git a/content/speakers/bjorn-wieczoreck.md b/content/speakers/bjorn-wieczoreck.md
deleted file mode 100644
index bea075c9..00000000
--- a/content/speakers/bjorn-wieczoreck.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Björn Wieczoreck"
-[extra]
- name = "Björn Wieczoreck"
- url = ""
- image = "2024/images/speakers/bjoern.jpg"
- bio = "
After getting his master’s degree in Geoinformationscience, Björn joined GiGa infosystems in 2017. Ever since he has been working on software to store, manage and distribute 3D geological data, and almost all of this day to day work involves Rust. When there is time he tries to work on and improve an iOS app that visualizes this 3D data in Augmented Reality. Maybe there will be an opportunity to integrate Rust with the Swift code base as well.
"
-+++
diff --git a/content/speakers/boxy-uwu.md b/content/speakers/boxy-uwu.md
deleted file mode 100644
index a6b9d498..00000000
--- a/content/speakers/boxy-uwu.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Boxy Uwu"
-[extra]
- name = "Boxy Uwu"
- image = "2024/images/speakers/boxy.jpg"
- url = "https://github.com/BoxyUwU"
- bio = "Boxy is a member of the Rust Project, where she maintains the type system in her spare time. Before this she worked on the Bevy game engine’s unsafe code ensuring it’s soundness and long term maintainability."
-+++
diff --git a/content/speakers/charlie-marsh.md b/content/speakers/charlie-marsh.md
deleted file mode 100644
index 7d43d2f1..00000000
--- a/content/speakers/charlie-marsh.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Charlie Marsh 🦀"
-[extra]
- name = "Charlie Marsh 🦀"
- title = "Founder of Astral"
- image = "2024/images/speakers/charlie.webp"
- twitter = "charliermarsh"
- url = "https://astral.sh/?utm_source=eurorust"
- bio = '
Charlie is the founder of Astral, a company dedicated to building high-performance developer tools for the Python ecosystem, and the author of Ruff (a Python linter, formatter, and code transformation tool, written in Rust) and uv (a Python package manager, written in Rust). He’s spent his career working across programming ecosystems: first, at Khan Academy, where he focused on the Android, iOS, and web platforms; and more recently, as a Staff Software Engineer at Spring Discovery, where he led the development of a hybrid Rust-Python machine learning and data platform. Charlie received a BSc in Computer Science from Princeton and lives in Brooklyn, NY with his wife and son.
'
-+++
\ No newline at end of file
diff --git a/content/speakers/d0nut.md b/content/speakers/d0nut.md
deleted file mode 100644
index e6c29770..00000000
--- a/content/speakers/d0nut.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Nathanial Lattimer"
-[extra]
- name = "Nathanial Lattimer"
- title = "Senior Security Engineer at Robinhood"
- image = "2024/images/speakers/d0nut.jpg"
- twitter = "d0nutptr"
- url = "https://d0nut.dev/?utm_source=eurorust"
-+++
-Currently a Senior Security Engineer at Robinhood, Nathanial spends his time building high performance reconnaissance tooling in Rust, hacking companies through their bug bounty programs, and deep-diving application security in his Twitch streams and blog posts.
\ No newline at end of file
diff --git a/content/speakers/david-peherstorfer.md b/content/speakers/david-peherstorfer.md
deleted file mode 100644
index ba802868..00000000
--- a/content/speakers/david-peherstorfer.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: David Peherstorfer"
-[extra]
- name = "David Peherstorfer"
- image = "2024/images/speakers/david.jpg"
- url = "https://www.davidpeherstorfer.com/"
- bio = "David Peherstorfer is a Full Stack Web Developer and has been making web apps leveraging decoupled Drupal using React for about 10 years. For about one year he has been on a quest to go into the field of Medical Visualization to improve his son’s life in the long-run.
Originally he is from the mountainous region Vorarlberg in the west of Austria but he has spent about half of his life in the beautiful city of Vienna. He still enjoys a lot of different mountaineering (hiking, biking, climbing, trail running). He studied Computer Graphics at the university and is a self-taught Rustacean."
-+++
diff --git a/content/speakers/florian-gilcher.md b/content/speakers/florian-gilcher.md
deleted file mode 100644
index 7a8f4426..00000000
--- a/content/speakers/florian-gilcher.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Florian Gilcher"
-[extra]
- name = "Florian Gilcher"
- title = "Rust Community Elder"
- twitter = "Argorak"
- image = "2024/images/speakers/florian.jpg"
-+++
-Florian Gilcher is one of the co-founders and management directors of Ferrous Systems. Previously, he was part of the Rust project, as part of the community and core team, and a co-organiser of the Rust Berlin Meetup and the RustFest conference.
-
-His current driving motiviation is bringing Rust to the industry, currently to the industries of highest assurances, for example automotive and aerospace. For that, he’s currently leading the Ferrocene project - the qualification of the Rust project to highest assurances.
\ No newline at end of file
diff --git a/content/speakers/francois-mockers.md b/content/speakers/francois-mockers.md
deleted file mode 100644
index 458f9e96..00000000
--- a/content/speakers/francois-mockers.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Francois Mockers"
-[extra]
- name = "Francois Mockers"
- url = "https://vleue.com/"
- image = "2024/images/speakers/francois.jpg"
- twitter = "FrancoisMockers"
- mastodon = "https://hachyderm.io/@FrancoisMockers"
-+++
diff --git a/content/speakers/henk-oordt.md b/content/speakers/henk-oordt.md
deleted file mode 100644
index 334d2058..00000000
--- a/content/speakers/henk-oordt.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Henk Oordt"
-[extra]
- name = "Henk Oordt"
- title = "Senior Software Consultant at Mainmatter"
- image = "2024/images/speakers/henk.png"
- twitter = "https://x.com/hdoordt"
- url = "https://github.com/hdoordt"
- bio = "
Henk is a Senior Software Consultant at Mainmatter.
Henk is an embedded software engineer and one of the lucky people who mainly uses Rust in embedded. He's so passionate about Rust that he can't help spreading the word by hosting Rust training for all kinds of areas, and by developing teach-rs, the modular, reusable Rust university course platform.
"
-+++
diff --git a/content/speakers/jon-gjengset.md b/content/speakers/jon-gjengset.md
deleted file mode 100644
index 64069b97..00000000
--- a/content/speakers/jon-gjengset.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Jon Gjengset 🦀"
-[extra]
- name = "Jon Gjengset 🦀"
- title = "Principal Engineer at Helsing and Author of Rust for Rustaceans"
- image = "2024/images/speakers/jon.jpg"
- twitter = "jonhoo"
- mastodon = "https://fosstodon.org/@jonhoo"
- bio = '
Jon is a Principal Engineer at Helsing and the author of Rust for Rustaceans. Before that, he owned the internal Rust build infrastructure at AWS. He is passionate about teaching (Rust and otherwise) and has published Rust live-coding and educational videos since 2018. He also co-hosts the podcast Rustacean Station. Jon started with Rust in 2015 when he built what eventually became his PhD thesis at MIT — a fast SQL database built from scratch in Rust. Outside of the world of programming, Jon is a Storyteller for the social deception game Blood on the Clocktower, and otherwise mostly sits around waiting for the next Rust conference.
'
-+++
\ No newline at end of file
diff --git a/content/speakers/jonathan-pallant.md b/content/speakers/jonathan-pallant.md
deleted file mode 100644
index f770eb7e..00000000
--- a/content/speakers/jonathan-pallant.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Panelist: Jonathan Pallant"
-[extra]
- name = "Jonathan Pallant"
- title = "Senior Engineer at Ferrous Systems"
- url = "https://www.thejpster.org.uk/"
- image = "2024/images/speakers/jonathan.jpg"
- twitter = "therealjpster"
- mastodon = "https://hachyderm.io/@thejpster"
- bio = "My name is Jonathan, or JP to my friends. I’m @thejpster most places, except where I was late to the party and had to settle for @therealjpster. I’ve been doing Embedded Rust since 2016 and embedded systems since the mid-90s, when I stripped a Commodore 64 and turned it into a line-following robot. These days I am with Ferrous Systems, teaching Rust and offering consulting. Someone once asked me what I’d do if I won a million pounds and I said, uh, probably exactly the same thing I do now really."
-+++
diff --git a/content/speakers/lisa-passing.md b/content/speakers/lisa-passing.md
deleted file mode 100644
index 08a4ec04..00000000
--- a/content/speakers/lisa-passing.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Lisa Passing"
-[extra]
- name = "Lisa Passing"
- image = "2024/images/speakers/lisa-passing.jpeg"
- url = "https://lislis.de/?utm_source=eurorust"
-+++
-Lisa is a Berlin-based creative technologist, artist, and researcher. Her main obsessions are playful interactions with computers and creative uses of civic tech and data.
\ No newline at end of file
diff --git a/content/speakers/liv.md b/content/speakers/liv.md
deleted file mode 100644
index 39fc1be7..00000000
--- a/content/speakers/liv.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Liv"
-[extra]
- name = "Liv"
- title = "Software Developer at axo"
- twitter = "dog_awoo"
- url = "https://shadows.with.al/?utm_source=eurorust"
- image = "2024/images/speakers/liv.jpg"
-+++
-salaried software developer
\ No newline at end of file
diff --git a/content/speakers/luca-palmieri.md b/content/speakers/luca-palmieri.md
deleted file mode 100644
index 5b0e5428..00000000
--- a/content/speakers/luca-palmieri.md
+++ /dev/null
@@ -1,17 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Luca Palmieri"
-[extra]
- name = "Luca Palmieri"
- title = "Principal Engineering Consultant at Mainmatter"
- twitter = "algo_luca"
- url = "https://www.lpalmieri.com/?utm_source=eurorust"
- image = "2024/images/speakers/luca.jpg"
-+++
-Luca Palmieri builds technology products for a living. His current focus is on backend development, software architecture and the Rust programming language.
-
-He currently works at MainMatter as a Principal Engineering Consultant. He partners with teams across the industry to make sure they succeed in adopting or scaling their Rust usage, where it makes sense to do so. He was formerly at AWS and TrueLayer.
-
-He has been part of the Rust community since 2018 and is best known as the author of “Zero to Production in Rust”, an introduction to using Rust for backend development.
-
-When he is not coding, you’ll find him baking cakes or rolling pasta sheets.
\ No newline at end of file
diff --git a/content/speakers/lukas-wirth.md b/content/speakers/lukas-wirth.md
deleted file mode 100644
index 02cd8293..00000000
--- a/content/speakers/lukas-wirth.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Lukas Wirth"
-[extra]
- name = "Lukas Wirth"
- url = "https://veykril.github.io/"
- image = "2024/images/speakers/lukas.jpg"
- twitter = "Veykril"
- mastodon = "https://hachyderm.io/@veykril"
- bio = '
'
-+++
diff --git a/content/speakers/mara-bos.md b/content/speakers/mara-bos.md
deleted file mode 100644
index 98b9e9d9..00000000
--- a/content/speakers/mara-bos.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Panelist: Mara Bos"
-[extra]
- name = "Mara Bos"
- twitter = "m_ou_se"
- image = "2024/images/speakers/mara.jpg"
-+++
-Mara Bos has been a member of the Rust project since 2020, where she leads the Rust library team and is a member of the Rust leadership council. She wrote Rust Atomics and Locks and founded Fusion Engineering, a company making drone flight controllers in Rust.
\ No newline at end of file
diff --git a/content/speakers/matthias-heiden.md b/content/speakers/matthias-heiden.md
deleted file mode 100644
index 5843ac05..00000000
--- a/content/speakers/matthias-heiden.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Matthias Heiden"
-[extra]
- name = "Matthias Heiden"
- image = "2024/images/speakers/matthias.jpg"
- url = "https://not-matthias.github.io/"
- twitter = "not_matthias"
- bio = "
Matthias Heiden is a computer science student with over four years of proficiency in Rust and C++. He has written projects and blog posts in the areas that interest him, including low-level programming, reverse engineering, software security, game modding, and artificial intelligence. During his free time, he finds joy in working on side projects and is equally passionate about sharing his expertise with others.
"
-+++
diff --git a/content/speakers/max-ammann.md b/content/speakers/max-ammann.md
deleted file mode 100644
index 15e3e93f..00000000
--- a/content/speakers/max-ammann.md
+++ /dev/null
@@ -1,12 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Max Ammann"
-[extra]
- name = "Max Ammann"
- title = "Security Engineer at Trail of Bits"
- twitter = "maxammann_"
- image = "2024/images/speakers/max.jpg"
-+++
-I’m an open-source developer and currently work at Trail of Bits as a Security Engineer. This talk is about side project of me, but ToB supports me in talking at EuroRust. At Trail of Bits I audit Rust code on a daily basis.
-
-I am born in Germany and currently live in Munich. I enjoy writing open-source software. I regularly contribute to various open-source projects. I’m also a passionate photographer.
\ No newline at end of file
diff --git a/content/speakers/nikita-lapkov.md b/content/speakers/nikita-lapkov.md
deleted file mode 100644
index 1e09d15d..00000000
--- a/content/speakers/nikita-lapkov.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Nikita Lapkov"
-[extra]
- name = "Nikita Lapkov"
- image = "2024/images/speakers/nikita.jpg"
- url = "https://laplab.me/"
- twitter = "lapkalab"
- mastodon = "https://mastodon.social/@laplab"
- bio = "
Nikita is low-level Rust engineer specialising in databases and distributed systems. Previously, they worked on MongoDB, ClickHouse and YDB, as well as in high-frequency trading sector.
Co-Founder of alugha, the multilingual video platform from Germany. MSc graduate of Heidelberg University. Rust programmer since 2020. Organizer of the “Nix Your Bugs & Rust Your Engines” meetup in Heidelberg and Mannheim.
I love dive into different application fields of computer science and software development. Among others, these include devops, cloud computing, distributed systems, web development, multimedia, graphics programming, mobile programming and game development. I also enjoy natural languages and pen & paper roleplaying games.
"
-+++
diff --git a/content/speakers/niko-matsakis.md b/content/speakers/niko-matsakis.md
deleted file mode 100644
index 355b1418..00000000
--- a/content/speakers/niko-matsakis.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Niko Matsakis"
-[extra]
- name = "Niko Matsakis"
- image = "2024/images/speakers/niko-matsakis.png"
- twitter = "nikomatsakis"
- url = "https://smallcultfollowing.com/babysteps/about/?utm_source=eurorust"
-+++
-Nicholas Matsakis is a Senior Principal Engineer at AWS and lead of the open-source Rust language design team. He has worked on Rust since 2011, and led the design of its “secret sauce”, the borrow checker. He has played a number of other roles in Rust over the years, such as being a member of the Rust core team, the lead of the Rust compiler team, and helping to launch the Rust Foundation. Prior to working on Rust, he completed a PhD at ETH Zurich and did his undergraduate study at MIT.
\ No newline at end of file
diff --git a/content/speakers/nikolai-vazquez.md b/content/speakers/nikolai-vazquez.md
deleted file mode 100644
index b1b131df..00000000
--- a/content/speakers/nikolai-vazquez.md
+++ /dev/null
@@ -1,9 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Nikolai Vazquez"
-[extra]
- name = "Nikolai Vazquez"
- twitter = "NikolaiVazquez"
- image = "2024/images/speakers/nikolai.jpg"
-+++
-Nikolai Vazquez began poking at the edges of Rust in 2017 and has since then developed a variety of cursed ways to use it, such as his Static Assertions crate. Nikolai’s career has spanned the entire stack, from web/mobile UIs to databases to reverse engineering assembly. When he’s abstaining from software, you can find Nikolai designing graphics, playing jazz piano, dancing lindy hop, or practicing Español and Deutsch.
\ No newline at end of file
diff --git a/content/speakers/orhun-parmaksiz.md b/content/speakers/orhun-parmaksiz.md
deleted file mode 100644
index 9f0c0aa8..00000000
--- a/content/speakers/orhun-parmaksiz.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Orhun Parmaksız"
-[extra]
- name = "Orhun Parmaksız"
- url = "https://orhun.dev/"
- twitter = "@orhundev"
- image = "2024/images/speakers/orhun.jpg"
- bio = '
Hey, I’m Orhun, a Rust aficionado with a strong passion for all things open source!
I’m the creator/maintainer of various Rust projects including git-cliff, kmon, and more. See: https://github.com/orhun
I have been leading the Ratatui.rs project since last year, where we’re pushing the boundaries of the terminal by offering a TUI library for Rust developers.
Also, I’m actively packaging Rust tools for Alpine Linux & Arch Linux (btw) and trying to improve the Rust ecosystem for GNU/Linux users.
Predrag has spent the last 8 years working on query engines for almost every kind of data imaginable: from relational and graph databases to APIs and unstructured data files. He built Trustfall, a universal query engine that can query any data source(s), and cargo-semver-checks, a semantic versioning linter for Rust.
Previously, Predrag was a principal engineer at Kensho Technologies, did performance engineering research at MIT, and competed in international math and programming competitions.
When not in front of a screen, Predrag enjoys skiing, ice hockey, and board games. He is also a huge space nerd. Ask him about the time he went to watch a giant rocket explode!
"
-+++
diff --git a/content/speakers/sam-van-overmeire.md b/content/speakers/sam-van-overmeire.md
deleted file mode 100644
index f6166cd5..00000000
--- a/content/speakers/sam-van-overmeire.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Sam Van Overmeire"
-[extra]
- name = "Sam Van Overmeire"
- image = "2024/images/speakers/sam.jpg"
- twitter = "VanOvermeireS"
- url = "https://medium.com/@sam.van.overmeire"
- bio = "
Professional software developer (and formerly historian and archaeologist)
Likes writing on various subjects. Recently wrote a book for Manning on Rust macros, hence the proposal for a talk on that subject!
Samuel Moelius is a Staff Engineer on the Blockchain Team at Trail of Bits.
"
-+++
diff --git a/content/speakers/sasha-pourcelot.md b/content/speakers/sasha-pourcelot.md
deleted file mode 100644
index cf080228..00000000
--- a/content/speakers/sasha-pourcelot.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Sasha Pourcelot"
-[extra]
- name = "Sasha Pourcelot"
- twitter = "scrabsha"
- image = "2024/images/speakers/sasha.jpg"
- mastodon = "https://hachyderm.io/@scrabsha"
- url = "https://scrabsha.github.io/"
- bio = "Sasha is a software engineer living in the southeast of France. She has been writing Rust both as a hobby and as a professional developer for many years. Her work mostly consists of compiler and static analysis tool development. When she’s not doing computer things, she reads, climbs, or cooks delicious Italian food."
-+++
diff --git a/content/speakers/stefan-baumgartner.md b/content/speakers/stefan-baumgartner.md
deleted file mode 100644
index 52d65d94..00000000
--- a/content/speakers/stefan-baumgartner.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Stefan Baumgartner"
-[extra]
- name = "Stefan Baumgartner"
- title = "Architect and Developer"
- twitter = "ddprrt"
- url = "https://fettblog.eu/?utm_source=eurorust"
- image = "2024/images/speakers/stefan.jpg"
-+++
-Stefan Baumgartner is an architect and developer based in Austria. He is the author of “TypeScript in 50 Lessons” (Smashing Magazine, 2020) and “The TypeScript Cookbook” (O’Reilly, 2023). In his spare time, he organizes ScriptConf and Rust Linz. Stefan enjoys Italian food, Belgian beer, and British vinyl records.
\ No newline at end of file
diff --git a/content/speakers/victor-ciura.md b/content/speakers/victor-ciura.md
deleted file mode 100644
index 77d9e093..00000000
--- a/content/speakers/victor-ciura.md
+++ /dev/null
@@ -1,11 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Victor Ciura"
-[extra]
- name = "Victor Ciura"
- url = "https://ciura.ro"
- image = "2024/images/speakers/victor.jpg"
- twitter = "ciura_victor"
- mastodon = "https://hachyderm.io/@ciura_victor"
- bio = "
Victor Ciura is a Principal Engineer on the Microsoft365 Substrate team, building the Rust foundational libraries needed as part of the broader 🦀Oxidizer effort across the organization.
Spent the last 20+ years doing systems programming in C++ on various teams, such as: Visual C++(DevDiv), Advanced Installer, Clang Power Tools.
He’s a regular guest at Computer Science Department of his Alma Mater, University of Craiova, where he gives student lectures & workshops on algorithms and optimization techniques, using modern C++, Rust, Haskell.
"
-+++
diff --git a/content/speakers/vitaly-bragilevsky.md b/content/speakers/vitaly-bragilevsky.md
deleted file mode 100644
index 5612ccbe..00000000
--- a/content/speakers/vitaly-bragilevsky.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-template = "2024/speaker.html"
-title = "Speaker: Vitaly Bragilevsky"
-[extra]
- name = "Vitaly Bragilevsky"
- image = "2024/images/speakers/vitaly.jpg"
- twitter = "VBragilevsky"
- mastodon = "https://techhub.social/@bravit"
- bio = "I’m a developer advocate at JetBrains. I taught programming languages at universities for more than 20 years. I am the author of ‘Haskell in Depth’, published by Manning Publications in 2021, but I work with many other programming languages as well."
-+++
diff --git a/content/talks/a-gentle-introduction-to-procedural-macros.md b/content/talks/a-gentle-introduction-to-procedural-macros.md
deleted file mode 100644
index c6a3f460..00000000
--- a/content/talks/a-gentle-introduction-to-procedural-macros.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "A gentle introduction to procedural macros"
-template = "talk.html"
-[extra]
- date = "Oct. 10th, Thursday"
- time = "11:30 - 12:00"
- speakers = ["sam-van-overmeire"]
- description = "
Procedural macros are often seen as one of the most challenging things to learn in Rust. At the same time, they have immense utility and are ubiquitous in the language and crates, making basic familiarity with them very desirable. This talk presents the outlines of what these macros are, the different types, how they work, when to use them, and how to write your own. After a bit of theory and a lot of talking, we will do some live coding and write a derive macro that simplifies working with (AWS) SQS.
"
- ogimage = "/images/talks/og-images/a-gentle-introduction-to-procedural-macros.png"
-+++
diff --git a/content/talks/augmented-docs-a-love-letter-to-rustdoc-and-docsrs.md b/content/talks/augmented-docs-a-love-letter-to-rustdoc-and-docsrs.md
deleted file mode 100644
index 66b51ac0..00000000
--- a/content/talks/augmented-docs-a-love-letter-to-rustdoc-and-docsrs.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "Augmented docs: a love letter to rustdoc and docs.rs"
-template = "talk.html"
-[extra]
- date = "Oct. 10th, Thursday"
- time = "14:15 - 14:45"
- speakers = ["francois-mockers"]
- description = "
Docs are one of the superpower of Rust, thanks to the tooling and the central platform hosting them. Let’s take it to the next level!
After a quick look at some of the most known features of rustdoc and docs.rs, we’ll review the guidelines and explore some of the advanced features available, like interacting with the #[doc] attribute directly or scraping examples.
We’ll then look at how to enrich the docs with some crates from the ecosystem, like aquamarine for graphs, katex-doc for mathematical expression or document-features for automatic feature documentation, or with some templating, and see how far we can take it to have a complete documentation.
To finish, we’ll dip our toes into documentation theory, through the Diátaxis framework and the Good Docs Project, check how rustdoc fit in those, and how other tools like mdbook or zola can complement it.
Modern software projects are huge: hundreds of thousands of lines of code across hundreds of dependencies. How do they avoid falling apart due to an endless stream of bugs?
The answer: advanced testing techniques — much more than just clippy, unit tests, and end-to-end CI.
Better testing allows us to build bigger in less time, while minimizing bug triage and debugging needs. Let’s dig into some of those advanced techniques and see how they power the projects that we use every day!
"
- ogimage = "/images/talks/og-images/build-bigger-in-less-time-code-testing-beyond-the-basics.png"
-+++
diff --git a/content/talks/building-an-extremely-fast-python-package-manager-in-rust.md b/content/talks/building-an-extremely-fast-python-package-manager-in-rust.md
deleted file mode 100644
index b3687873..00000000
--- a/content/talks/building-an-extremely-fast-python-package-manager-in-rust.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "Building an extremely fast Python package manager, in Rust"
-template = "talk.html"
-[extra]
- date = "Oct. 11th, Friday"
- time = "17:30 - 18:00"
- speakers = ["charlie-marsh"]
- description = "uv is an extremely fast Python package manager, written in Rust.
Since its release in February, uv has seen adoption across the Python ecosystem, open source and enterprise, with over ten million downloads per month and growing – all grounded in a flagship focus on performance.
Python packaging is a complex problem space with specifications and tools that date back decades. So what does it take to innovate in that space – to build something new, from scratch, that not only meets those standards, but performs orders of magnitude faster than the alternatives? And what kind of role can Rust play?
This talk will walk through the architecture, design decisions, and optimizations that make uv so fast (think: allocators, concurrency, and zero-copy tricks), with a focus on the real-world experiments that we ran – and the lessons that we learned – over the course of uv’s development.
"
- ogimage = "/images/talks/og-images/building-an-extremely-fast-python-package-manager-in-rust.png"
-+++
diff --git a/content/talks/code-to-contract-to-code-making-ironclad-apis.md b/content/talks/code-to-contract-to-code-making-ironclad-apis.md
deleted file mode 100644
index 33ca2445..00000000
--- a/content/talks/code-to-contract-to-code-making-ironclad-apis.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "Code to contract to code: making ironclad APIs"
-template = "talk.html"
-[extra]
- date = "Oct. 11th, Friday"
- time = "15:00 - 15:30"
- speakers = ["adam-chalmers"]
- description = "
If you’re providing customers with an API, then you’ve got to make sure that API is well-documented, and that the documentation is actually accurate! If you really want to make your API easier to use, you should provide users with API clients (or SDKs) in various languages. Again, those API clients should be well-documented, and those docs should actually be accurate!
Too many times, engineers spend precious hours and energy fixing inaccuracies in their API clients or documentation. As the server changes, old clients and docs get out of sync with the server in production. But why manually update your software when you could automate it? Instead, generate API docs directly from your API server code. And if those docs are machine-readable, then you could even generate API clients from them!
I used to do all this the manual, toilsome way. As a recent convert to the power of generated schemas and clients, let me show you how to set up a system like this, to reduce your toil and free up valuable work hours.
Elfo is an actor system which can send messages between nodes. For this to work, we implemented a custom networking protocol entirely in Rust with support for compression and TCP-style flow control. We will dive deep into all the technical details and challenges we faced along the road. Strap in!
This talk introduces a novel approach to generate C++ APIs from an existing Rust API by using procedural macros, Rustdoc, and Serde. Functions and impl blocks which should be exposed in the C++ API are annotated with a procedural macro attribute. This macro generates low level extern “C” functions for the corresponding function definitions. Arguments and return values of these functions are passed as byte buffers in this case. Ultimately, Rustdoc’s unstable JSON format is used to generate a set of low level bindings for the generated extern “C” functions and, on top of that, a set of ergonomic high level C++ bindings. An intermediate layer handles all the required (de-)serializing of the argument/return type byte buffers to acquire the corresponding native representations.
The impl Room is a space at EuroRust 2024 for Rustaceans who want to contribute to the Rust project or to other crates in the Rust ecosystem. Check out the dedicated GitHub repository for all information!
The impl Room is a space at EuroRust 2024 for Rustaceans who want to contribute to the Rust project or to other crates in the Rust ecosystem. Check out the dedicated GitHub repository for all information!
The impl Room is a space at EuroRust 2024 for Rustaceans who want to contribute to the Rust project or to other crates in the Rust ecosystem. Check out the dedicated GitHub repository for all information!
The impl Room is a space at EuroRust 2024 for Rustaceans who want to contribute to the Rust project or to other crates in the Rust ecosystem. Check out the dedicated GitHub repository for all information!
Many applications require as efficient input-output (I/O) as possible, including tasks such as reading from a disk or a network connection. However, I/O devices are known to be slow compared to CPUs and RAM. This contrast leads to various approaches for organizing I/O, ranging from step-by-step operations to enabling devices to write directly to main memory using Direct Memory Access (DMA). These methods correspond to different OS interfaces, from blocking I/O operations to highly asynchronous calls, and even emerging interfaces like io_uring, a new Linux kernel I/O interface. In this talk, we’ll explore I/O on three parallel levels: devices, operating system calls, and Rust code. It’s crucial to understand that software efficiency regarding I/O critically depends on the specific operations in use. Even more importantly, Rust code does not work in isolation—it relies on specific OS features and interfaces. Thus, we should learn about our Rust coding choices and their underlying implementations. There’s one more aspect: due to this dependency on OS interfaces, it’s impossible to implement a once-and-for-all solution that works across all operating systems at the most efficient level. However, by examining practical examples, we can discover some effective workarounds. Rust already enables us to write highly performant software. By deepening our understanding of I/O internals, we can make our code even more efficient!
Dylint is a tool for running Rust lints from dynamic libraries. Dylint is similar to Clippy, but whereas Clippy runs a predetermined, static set of lints, Dylint runs lints from user-specified, dynamic libraries. Thus, Dylint allows developers to maintain their own personal lint collections.
"
- ogimage = "/images/talks/og-images/linting-with-dylint.png"
-+++
diff --git a/content/talks/my-journey-from-webdev-to-medical-visualization-rustacea.md b/content/talks/my-journey-from-webdev-to-medical-visualization-rustacea.md
deleted file mode 100644
index d009b8de..00000000
--- a/content/talks/my-journey-from-webdev-to-medical-visualization-rustacea.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "My Journey from WebDev to Medical Visualization Rustacean"
-template = "talk.html"
-[extra]
- date = "Oct. 11th, Friday"
- time = "13:30 - 14:00"
- speakers = ["david-peherstorfer"]
- description = "
My partner and I became parents this year. When we learned that our son has a congenital heart defect I decided to do something to make his life better. This is when I remembered this one class about “Medical Visualization” and I decided to start my journey into this field using Rust (which I had previously learned).
In my talk I will quickly go through how I studied Rust as a total beginner yet experienced developer. I will present how volumetric medical data can be rendered in 3D. For this, I used a raycasting technique which I will show you the basics of. Then I will dive into my journey through graphical Rust crates (three-d, gl, glow, wgpu).
From the three-d crate I used the volume rendering example and extended it to be able to render DICOM files. Since I was not satisfied with the displayed result I went a level deeper and created my own volume renderer using raycasting. For this I started out with the gl crate. After making it work and being super proud I decided to switch to glow because of it being exposed by the three-d crate. Furthermore, I also ported this renderer to wgpu.
And finally I will present my result by giving you a live demo of a volume renderer that has camera and threshold controls and can switch between three different raycasting shaders.
If it compiles it doesn't always work in async Rust. Futures can starve, open connections may expire, many valuable hours can be wasted on the debugging attempts. And, on top of that, FuturesUnordered can give you a back-stab. Scary, I know. There are many well-hidden issues that thrive in a highly concurrent environment and a large magic-box of async scheduling doesn't really help to solve them.
This talk will give an insight into the Tokio executor, help to navigate through the tricky pitfalls and to write a better async code.
When writing unsafe code it is often easy to throw away a lot of the guardrails that safe Rust provides: the language stops helping you write your code, and you take on the burden of being the compiler and ensuring that all the invariants are upheld.
It might feel like you’re either writing safe Rust or you’re responsible for doing everything yourself. In practice though it is possible to design your unsafe code to find a middle ground. You can offload some of the burden back onto the type system, like in safe Rust, while still being able to use the required unsafe functionality.
Learning from my experience in refactoring and improving large amounts of unsafe code in Bevy’s ECS, I will explore this middle ground, leveraging the borrow checker and the type system to recover as many guardrails as we can.
Macros are complicated, not only for the developers authoring them but also for the IDEs analyzing them. So how does rust-analyzer, a Rust IDE, actually handle them in a way such that features like completions and usage searching work transparently? In this talk we will explore the mechanism in rust-analyzer that enables these features, the current struggles with it and how both the IDE and library authors can improve the macro IDE experience.
This talk will document the author’s journey utilizing Rust while developing a custom low-level audio processing engine for web targets.
Audio on the web has long been plagued by the lack of performance guarantees, with many applications and use cases held back due to insufficient API support by select browser engine implementations. The situations has, however, dramatically improved in the last two years, in no small part thanks to the rise of WebAssembly and developments in the ecosystem.
We will explore:
navigating web vs. systems programming
common audio engine internals
architectural decisions for the web platform
AudioWorkletProcessor code in Rust
compilation hacks for minimizing WebAssembly bundle sizes
using custom allocators, or none
hand-crafted bindings to JavaScript
“safe” unsafe code
practical real-world limitations
the current state of web audio
performance tradeoffs we need to deal with for the foreseeable future
The talk will wrap around technical parts with briefly addressing the important ”why”s: exploring philosophical drivers, implications and futures of interactive, interconnected musical works that could live on the web.
Macros are a very powerful Rust feature. They allow developers to quickly and easily build domain-specific languages, with no runtime cost.
However, the Rust compiler does surprisingly few checks on macros. For instance, it happily accepts a macro whose expansion is not syntactically valid, which makes them hard to debug.
In this talk, we will see how expandable allows to check at compile time that a macro always expands to valid code and give a brief explanation under the hood.
Finally, we’ll see a few techniques expandable uses to generate excellent error messages.
"
- ogimage = "/images/talks/og-images/proving-macro-expansion-with-expandable.png"
-+++
diff --git a/content/talks/renaissance-of-terminal-user-interfaces-with-rust.md b/content/talks/renaissance-of-terminal-user-interfaces-with-rust.md
deleted file mode 100644
index 60081271..00000000
--- a/content/talks/renaissance-of-terminal-user-interfaces-with-rust.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "Renaissance of Terminal User Interfaces with Rust"
-template = "talk.html"
-[extra]
- date = "Oct. 11th, Friday"
- time = "14:15 - 14:45"
- speakers = ["orhun-parmaksiz"]
- description = "
The terminal is essential for every programmer when it comes to productivity and efficiency. Leveraging text-based user interfaces (TUIs) in the terminal is a powerful way to take full advantage of this environment. And what could be better than using a highly performant systems programming language like Rust to build TUIs?
This talk aims to demonstrate how the terminal experience (TX) can be enhanced with TUIs and provides an introduction to building them using Rust with the Ratatui library.
The following points will be addressed:
What is a terminal user interface (TUI) and why is it used?
What is Ratatui and how does it work?
What are the main concepts and main design patterns used in Ratatui?
Rust is a statically typed, ahead of time compiled and memory safe programming language. But sometimes, the restrictions Rust puts on us developers can be a hindrance, for example when prototyping new application ideas or when you want your end users to be able to change your application’s runtime behavior. Thankfully, we can embed dynamically typed scripting languages with a lower learning curve into our Rust applications to get the best of both worlds.
In this talk, we will have a look at the scripting languages available to the Rust ecosystem and compare how well they integrate into Rust. Finally, we go through the process of embedding such a scripting runtime, Deno, into a Rust application and investigate how we can expose operations from our host applications to our scripts as well as share state between them.
Ever forgot something? Thought so. Myself, I forget loads of stuff. I have the remarkable ability of totally forgetting what somebody is talking about during our conversation. It’s not a very useful ability. But you’ll probably also know what it feels like, standing in front of your fridge, staring into the abyss that is the veggie drawer, and pondering on your life choices. Only to remember 10 minutes later that you actually didn’t want to go to the kitchen at all.
Luckily, we live in 2024. Where just about everything does have working memory. For instance, my laptop does, my colleagues, my wife has a very functional memory it would seem, and so does my car and my neighbour’s doorbell. I figured I want to make that memory work for me. So, being a software developer, a job title that should in my opinion be renamed to ‘computer whisperer’, I went ahead and created a little app that functions as my hippocampus. But then I forgot where I put it.
This talk is about taking Rust everywhere. It showcases how a single piece of business and communications logic written in Rust can run on anything, from browser to backend, from CLI to bare-metal firmware. And beyond.
"
- ogimage = "/images/talks/og-images/rust-irgendwie-irgendwo-irgendwann.png"
-+++
diff --git a/content/talks/the-first-six-years-in-the-development-of-polonius.md b/content/talks/the-first-six-years-in-the-development-of-polonius.md
deleted file mode 100644
index cad3bbac..00000000
--- a/content/talks/the-first-six-years-in-the-development-of-polonius.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "The first six years in the development of Polonius, an improved borrow checker"
-template = "talk.html"
-[extra]
- date = "Oct. 11th, Thursday"
- time = "10:00 - 10:30"
- speakers = ["amanda-stjerna"]
- description = "
When the current borrow checker, non-lexical lifetimes (NLL), was developed, one of the patterns the Rust developers wanted to add support for had to be abandoned: Case 3, in which a reference is conditionally returned early from a function. This case is particularly tricky to support as it requires a high-resolution analysis of the conditional flow references beyond the means of the current borrow checker. Therefore, current Rust does not support this code pattern (and others like it), even though it is provably safe.
This talk presents a history of the work on Polonius, explains how it differs from the current borrow checker, and describes the path to stabilisation and beyond.
"
- ogimage = "/images/talks/og-images/the-first-six-years-in-the-development-of-polonius.png"
-+++
diff --git a/content/talks/the-impact-of-memory-allocators-on-performance-a-deep-dive.md b/content/talks/the-impact-of-memory-allocators-on-performance-a-deep-dive.md
deleted file mode 100644
index 812eded4..00000000
--- a/content/talks/the-impact-of-memory-allocators-on-performance-a-deep-dive.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "The Impact of Memory Allocators on Performance: A Deep Dive"
-template = "talk.html"
-[extra]
- date = "Oct. 10th, Thursday"
- time = "15:00 - 15:30"
- speakers = ["arthur-pastel"]
- description = "
This talk will explore the world of memory allocation and its impact on application performance. Memory allocators are an often overlooked topic but are the backbone of most applications’ performance.
After covering the fundamentals of heap memory allocation, we will build a simple allocator to illustrate the basic concepts. We’ll then tackle common challenges in memory allocation, such as fragmentation and memory overhead.
We will then explore multiple scenarios from toy examples to real-world applications. Contributing to accurately measure how effectively allocation challenges are managed. This will be followed by analyzing popular memory allocators, exploring their strategies and performance in addressing these issues.
By the end of the talk, attendees will have a deeper understanding of how memory allocators work and how to choose the right one, depending on their applications.e a deeper understanding of how memory allocators work and how to choose the right one, depending on their applications.
"
- ogimage = "/images/talks/og-images/the-impact-of-memory-allocators-on-performance-a-deep-dive.png"
-+++
diff --git a/content/talks/through-the-fire-and-the-flames.md b/content/talks/through-the-fire-and-the-flames.md
deleted file mode 100644
index 33a4be52..00000000
--- a/content/talks/through-the-fire-and-the-flames.md
+++ /dev/null
@@ -1,10 +0,0 @@
-+++
-title = "Through the Fire and the Flames"
-template = "talk.html"
-[extra]
- date = "Oct. 10th, Thursday"
- time = "10:00 - 10:30"
- speakers = ["jon-gjengset"]
- description = "
Why does my thing need to be Send, and why isn’t it? Why does this function have ten lines of where clauses; what are they all for? What do you meanfoo doesn’t live long enough? Why is this async code just using a single CPU core? These are questions most of us have muttered under our breath after too much time staring at a screen of Rust code that we just can’t quite get right. Maybe we do some searching or blindly move things around and manage to find our way around our particular issue, but lo’ and behold another very similar one crops up a short time later. These kinds of recurring stumbling blocks make us doubt ourselves, hate the language, and ultimately limit our ability to actually getting things done!
The reality is that Rust is a language with some inherent complexity (and associated features) that isn’t present in many other common languages. And these questions, and others like them, tend to stem from a lack knowledge of the underlying principles and mechanisms. Often, even a surface-level understanding of these deeper concepts will allow you to self-diagnose or entirely avoid 80% of the challenging cases.
“Let’s rewrite it in Rust” is no longer a party joke. It’s happening! Let me share a couple of stories of learning, appreciating and rewriting stuff in Rust. How we came to love 🦀 Ferris: cargo cult or real need? What is it like to come to Rust from two very different directions: C++ and C#? What are the gaps, the needs, the gems and the tools you should know about? Here’s a real journey and the various experiments leading up towards the success stories at Microsoft. Want to compare notes? Let’s chat.
Ever wanted to know what goes on in the core of the Windows operating system? With Rust, you can craft your own Windows kernel drivers, empowering you to expand, explore and manipulate system functionalities like never before. It’s not just about developing hardware drivers; it opens doors to root kits, game hacks, antivirus solutions, and more. Whether you’re on the defensive or exploring offensive tactics, Rust in kernel programming offers a versatile toolkit.
Join me in the exploration of the state-of-the-art techniques for programming Windows kernel drivers. From navigating pitfalls to essential considerations, this session provides a comprehensive overview. Gain insights into leveraging Rust’s safety and performance for crafting robust and efficient kernel drivers. Don’t miss your chance to harness the power of Rust for both innovation and security in Windows kernel programming!
The SD Card specification is an interesting example of a protocol which runs over an SPI bus, and provides access to blocks on the disk. We’ll dig into the Embedded Devices Working Group’s “embedded-hal”, which allows us to write an SD Card driver that works with almost any microcontroller and see how we can use Rust types to represent the commands and responses we need to be able to talk to an SD Card and get it initialised. We’ll then look at the Microsoft FAT filesystem, and see how blocks on disk can represent the files and directories we’re familiar with. We’ll then run a few demos to see what we’ve learned in action.
"
- ogimage = "/images/talks/og-images/writing-a-sd-card-driver-in-rust.png"
-+++
diff --git a/content/travel.md b/content/travel.md
deleted file mode 100644
index 8b801ce2..00000000
--- a/content/travel.md
+++ /dev/null
@@ -1,29 +0,0 @@
-+++
-template = "generic-content.html"
-title = "Traveling to Vienna and the Venue"
-+++
-
-
To Vienna
-
-
Vienna is well reachable via train from many cities in Europe. Also, Vienna is the central hub of ÖBB's extensive network of sleeper trains. If you're looking for an eco-friendly way to travel to EuroRust, check out the nightjets. Make sure to book early though – nightjets tend to be fully booked months in advance!
-
-
If there's no good train connection from the place you're traveling from or you're looking for a more price-conscious alternative, there are buses as well, e.g., via Omio.
-
-
Vienna also has an international airport, VIE, if you'd rather fly in.
-
-
-
To the Venue
-
-
The venue is located just outside of the city center. The best options to get there from the city center are buses 72A, 76A, 76B, or the train line S80. Bus tickets can be bought via Wiener Linien. Tickets for the train can be bought via ÖBB or at the stations.
-
-
The venue is located at 2. Haidequerstraße 1–3, 1110 Wien. Once you're there, enter the area via the main gate and follow the EuroRust signs to the conference venue:
-
-
-
-
-
Assistance, Questions, Visas
-
-
For any questions or in case you need assistance planning your travel or getting to the venue, please reach out at mail@eurorust.eu
-
-
If you require a Visa to go to Austria and need support, e.g. by receiving an invitation letter, please reach out as well.
-
diff --git a/content/workshops/async-rust.md b/content/workshops/async-rust.md
deleted file mode 100644
index 33f92746..00000000
--- a/content/workshops/async-rust.md
+++ /dev/null
@@ -1,79 +0,0 @@
-+++
-title = "Rediscovering the Future: a deep dive into async Rust"
-template = "workshop.html"
-[extra]
- date = "Oct. 9th, 2024, 10:00 - 16:00"
- sponsor = ""
- mentors = [
- { name = "Conrad Ludgate", avatar = "conrad.png", avatar_alt = "Conrad Ludgate",bio = "Conrad Ludgate is a Systems Software Engineer at Neon building database proxies for their serverless Postgres platform by day. By night, he is highly focused on experimenting with all things low-latency Rust. Over the past couple of years, that focus has been extensively directed at async Rust. Known as 'that async rust guy' with his peers, he has given several talks and technical deep dives under the hood into async Rust.", url = "https://conradludgate.com/", twitter = "conradludgate" }
- ]
- abstract = "Async Rust is a very powerful abstraction for concurrent systems. It is being used extensively in web development for its ability to handle many thousands of concurrent requests at a time. As an abstraction, though, async Rust is quite a brittle one. Many of its footguns and complications often need to be learned the hard way. In this workshop, we will be practising the hard way—you will redesign async Rust from the ground up. The outcome of this exercise will give you a much better understanding of the abstractions you use on a daily basis, learn the exact reasons behind some of the quirks, and develop your own workarounds for such problems. It will also teach you how to build your own inter-task concurrency mechanisms and even your own specialised async runtimes, should you need it."
- ogimage = "/images/workshops/og-images/og-image-async.png"
-+++
-
-
-
Syllabus
-
-
-
Morning
-
-
-
-
Getting started, ensuring that rustc is setup correctly.
-
Introducing the Future trait.
-
Writing a simple future state machine.
-
Writing a simple async channel.
-
Writing a simple async mutex.
-
-
-
-
-
-
Afternoon
-
-
-
-
Writing a simple pollster executor.
-
Introducing a spawn method to the executor
-
Introducing a timer system to build out the runtime.
-
-
-
-
-
-
-
-
Requirements
-
-
Equipment
-
-
-
A working laptop:
-
Running a modern OS (with Tier 1 or Tier 2 "with Host Tools" support for rustc)
-
Windows 10+
-
Linux 3.2+ (preferably 5.0+)
-
macOS 10.12+ (preferably 12.0+)
-
With an up-to-date rust toolchain (Either use rustup or ensure you have the latest stable compiler)
-
-
Before coming to the session, clone the tokio repository and try run the examples. (https://github.com/tokio-rs/tokio/blob/master/examples/echo.rs)
-
-
-
-
Knowledge
-
-
-
Attendees should already be comfortable using Rust.
-
Must be comfortable with rust memory management and the borrow checker.
-
Must be comfortable with traits.
-
Good to know some knowledge of Sync concepts.
-
Good to be comfortable with writing some async Rust.
-
- Attendees do not need to be experts of Rust
-
Do not need to be comfortable using unsafe or the Rust memory models.
-
Do not need to understand how the synchronisation primitives (Mutex, Channel) are implemented.
-
Do not need to know how to use async kernel APIs like epoll or kqueue.
-
-
-
-
-
diff --git a/content/workshops/diesel.md b/content/workshops/diesel.md
deleted file mode 100644
index 64aedce4..00000000
--- a/content/workshops/diesel.md
+++ /dev/null
@@ -1,55 +0,0 @@
-+++
-title = "Introduction to Diesel: basic and advanced concepts in practice"
-template = "workshop.html"
-[extra]
- date = "Oct. 9th, 2024, 10:00 - 16:00"
- sponsor = ""
- mentors = [{ name = "Georg Semmler", avatar = "georg.png", avatar_alt = "Georg Semmler", bio = "Georg has been working on open-source software for over a decade, with a focus on Rust’s database ecosystem in recent years. As a maintainer of Diesel ORM, he has contributed to its development and helped users solve complex problems. Georg contributes to the Rust compiler to improve the compilation error reporting story for trait-heavy crates. He is a researcher and software developer at GiGa infosystems, where he uses Rust to develop a database system for managing large amounts of geoscientific data. Georg is passionate about sharing his knowledge and experience with the Rust community and helping others improve their programming skills.", url= "https://github.com/weiznich"}]
- abstract= "Diesel is a performant and type-safe query builder and ORM for Rust. This workshop teaches how to build performant applications using Diesel. It starts with the basics and goes all the way to advanced use-cases. After this workshop you will be well equipped to fully use Diesel’s features.*"
- ogimage = "/images/workshops/og-images/og-image-diesel.png"
-+++
-
-
-
Syllabus
-
-
-
1. Introducing Diesel
-
-
As the first step of our workshop, we will look at Diesel from a high-level point of view. You will set up a small example application together to get a working environment for the later stages of the workshop.
-
-
-
-
2. CRUD statements
-
-
We will explain how Diesel models Insert, Query, Update and Delete statements. You will extend our example application to perform each of these operations. As part of this step, you will see which of the offered options for each operation should be used in which use case.
-
-
-
-
3. Diesel-Async and when you should use it
-
-
We will discuss the differences between the regular `diesel` crate and the `diesel-async` crate. You will learn how they interact with each other, the advantages and disadvantages of each crate, and when to use one or the other.
-
-
-
-
4. Extending Diesel’s built-in DSL
-
-
Diesel offers many features out-of-the-box, but sooner or later you may want to use something that’s not supported by the built-in DSL. In this workshop section you will learn how to extend the DSL (domain specific language) in such cases. It will be shown how to support custom SQL types and otherwise unsupported SQL constructs.
-
-
-
-
5. Diesel internals
-
-
We will show how Diesel works internally. We will demonstrate how the compile time guarantees offered by Diesel are implemented to explain various restrictions in the API.
-
-
-
-
6. Custom Connection/Backend implementation
-
-
Finally, we will give a short overview how Diesel can be extended to support otherwise unsupported database backends or provide custom connection implementations. This includes information on when this might be a viable option.
-
-
-
-
- *Attendees should be familiar with basic Rust constructs. No prior experience with Diesel is required nor assumed. Attendees should bring their own laptop, with Rust and their favourite IDE installed.
-
-
diff --git a/content/workshops/hackathon.md b/content/workshops/hackathon.md
deleted file mode 100644
index 1e2dabf4..00000000
--- a/content/workshops/hackathon.md
+++ /dev/null
@@ -1,38 +0,0 @@
-+++
-title = "Competitive control systems hackathon"
-template = "workshop.html"
-[extra]
- date = "Oct. 9th, 2024, 10:00 - 16:00"
- sponsor = "Helsing"
- mentors = [
- { name= "Robert Fink", avatar = "robert.jpg", avatar_alt = "Robert Fink", bio = "CTO at Helsing" },
- { name= "Jon Gjengset", avatar = "jon.jpg", avatar_alt = "Jon Gjengset", bio = "Principal Engineer at Helsing" },
- { name= "Cécile Allano-Chevalier", avatar = "cecile.jpg", avatar_alt = "Cécile Allano-Chevalier", bio = "Software Engineer at Helsing" },
- { name= "Omar Essaid", avatar = "omar.jpg", avatar_alt = "Omar Essaid", bio = "Software Engineer at Helsing" }
- ]
-
- abstract = "In this workshop/hackathon, you will work in small teams to build a control system (eg, think PID controller) for navigating a virtual quad copter. Each team builds a stand-alone Rust application that interfaces with the simulation server over RPC; a live leaderboard indicates how well you are doing compared to the other teams. The are, of course, no limits to algorithm creativity… or maybe you want to build your own simulator and train a genetic algorithm or reinforcement learning agent? Join the workshop and show us what you got!"
- url = "https://helsing.ai/?utm_source=eurorust"
- twitter = ""
- ogimage = "/images/workshops/og-images/og-image-hackathon.png"
-+++
-
-
-
Requirements
-
-
Equipment
-
-
- Every attendee needs to bring their laptop with a working Rust tool chain.
-
-
-
-
Knowledge
-
-
- We assume that attendees can write simple Rust applications, but no more specific pre-existing knowledge is required. If you want a head start, look at gRPC and PID controllers.
-
-
-
-
-
diff --git a/content/workshops/testing-in-rust.md b/content/workshops/testing-in-rust.md
deleted file mode 100644
index 41d835b6..00000000
--- a/content/workshops/testing-in-rust.md
+++ /dev/null
@@ -1,75 +0,0 @@
-+++
-title = "Testing in Rust: going beyond the basics"
-template = "workshop.html"
-[extra]
- date = "Oct. 9th, 2024, 10:00 - 16:00"
- sponsor = "Mainmatter"
- mentors = [
- { name = "Luca Palmieri", avatar = "luca.png", avatar_alt = "Luca Palmieri", bio = "Luca Palmieri works as a Principal Engineering Consultant for Mainmatter. Luca Palmieri builds technology products for a living. His current focus is on backend development, software architecture and the Rust programming language. He is the author of 'Zero to Production in Rust'.", url = "https://www.lpalmieri.com/", twitter = "algo_luca" }
- ]
- abstract = "No application is an island: you need to interact with third-party APIs, databases and who knows what else. Testing those interactions is tricky, to say the least! This workshop will focus on expanding your Rust testing toolkit, going beyond the basic techniques you're already familiar with. At the end of the session, you'll have a strategy to test most of the scenarios that are relevant for a complex Rust application."
- ogimage = "/images/workshops/og-images/og-image-testing.png"
-+++
-
-
-
Syllabus
-
-
-
1. Expanding your toolbox: better assertions
-
-
The Rust standard library provides a few macros to perform assertions in your tests: assert!, assert_eq!, etc. They are good enough to get started, but the error messages they produce will often fail to keep up with the complexity of your assertions: we'll explore different libraries to boost the clarity of your test failures.
-
-
-
-
2. Expanding your toolbox: snapshot testing
-
-
Snapshot testing is a technique that allows us to capture the output of a system under test and compare it with a previously saved version. It is quite useful when working with complex data that might change frequently, such as HTML or error messages. We will explore how to use the insta crate to implement snapshot testing and manage the snapshots lifecycle.
-
-
-
-
3. Isolating your tests: the filesystem
-
-
All tests in Rust share the same filesystem as the underlying host, a problematic situation when multiple tests want to interact with the "same" files or touch directories that could affect the behaviour of the system they are being executed from. We will explore various techniques to manage this scenario, including the tempfile crate.
-
-
-
-
4. Isolating your tests: the database
-
-
The database is another shared resource that can cause problems when running tests in parallel. We will explore how to use Docker to run an isolated database instance for each test, and how to use the sqlx crate to manage the database lifecycle.
-
-
-
-
5. Isolating your tests: HTTP mocking
-
-
It is undesirable to have tests that hit real HTTP endpoints from third-party APIs, for a variety of reasons. We will explore how to use the wiremock crate to shield our tests from the outside world and make assertions on the HTTP requests that are being sent.
-
-
-
-
6. Isolating your tests: mocks, stubs and fakes
-
-
In order to isolate the behaviour of a system under test, it is not unusual to replace some of its dependencies with "fake" implementations. We will explore the different types of fakes and how to use them in Rust. We will review, in particular, the mockall crate and the testing implications of using generics and dynamic dispatch for polymorphism.
-
-
-
-
7. Custom test runners: what is a test?
-
-
We will take a look under the hood to understand how the Rust built-in testing framework works. Armed with this knowledge, we will explore the runtime implications of different approaches for test organisation. We will also cover alternative test runners, such as cargo-nextest.
-
-
-
-
8. Custom test runners: executing logic before and after a test run
-
-
It is often desirable to execute the same logic before and after each test in our suite. We will explore a variety of techniques to achieve this, from a bespoke #[test_case] procedural macro to a custom test harness (via libtest_mimic).
-
-
-
-
9. Custom test runners: capstone project
-
-
We will combine everything we have learned so far into an easy-to-use setup that allows you to run black-box tests against a real database and a real HTTP server, without having to orchestrate multiple commands—just cargo test and you are good to go!
-
-
-
-
- *The workshop is designed for software developers who have a good understanding of Rust's basic concepts and want to move beyond the built-in testing toolkit.
-
-
diff --git a/netlify.toml b/netlify.toml
index ade04f7d..13068c56 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -31,3 +31,143 @@ command = "zola build --base-url $DEPLOY_PRIME_URL"
[[redirects]]
from = "/workshops/"
to = "/"
+
+# the old speaker pages no longer exist in the root (and not at all for 2024)
+
+[[redirects]]
+ from = "/speakers/*"
+ to = "/"
+
+# 2024 sponsor
+
+[[redirects]]
+ from = "/helsing/"
+ to = "/2024/helsing/"
+
+# 2024 workshops
+
+[[redirects]]
+ from = "/workshops/hackathon/"
+ to = "/2024/workshops/hackathon/"
+
+[[redirects]]
+ from = "/workshops/async-rust/"
+ to = "/2024/workshops/async-rust/"
+
+[[redirects]]
+ from = "/workshops/testing-in-rust/"
+ to = "/2024/workshops/testing-in-rust/"
+
+[[redirects]]
+ from = "/workshops/diesel/"
+ to = "/2024/workshops/diesel/"
+
+# 2024 talks
+
+[[redirects]]
+ from = "/talks/through-the-fire-and-the-flames/"
+ to = "/2024/talks/through-the-fire-and-the-flames/"
+
+[[redirects]]
+ from = "/talks/build-bigger-in-less-time-code-testing-beyond-the-basics/"
+ to = "/2024/talks/build-bigger-in-less-time-code-testing-beyond-the-basics/"
+
+[[redirects]]
+ from = "/talks/a-gentle-introduction-to-procedural-macros/"
+ to = "/2024/talks/a-gentle-introduction-to-procedural-macros/"
+
+[[redirects]]
+ from = "/talks/practical-rust-for-web-audio/"
+ to = "/2024/talks/practical-rust-for-web-audio/"
+
+[[redirects]]
+ from = "/talks/impl-room-1/"
+ to = "/2024/talks/impl-room-1/"
+
+[[redirects]]
+ from = "/talks/impl-room-2/"
+ to = "/2024/talks/impl-room-2/"
+
+[[redirects]]
+ from = "/talks/impl-room-3/"
+ to = "/2024/talks/impl-room-3/"
+
+[[redirects]]
+ from = "/talks/impl-room-4/"
+ to = "/2024/talks/impl-room-4/"
+
+[[redirects]]
+ from = "/talks/augmented-docs-a-love-letter-to-rustdoc-and-docsrs/"
+ to = "/2024/talks/augmented-docs-a-love-letter-to-rustdoc-and-docsrs/"
+
+[[redirects]]
+ from = "/talks/powerful-macros-good-ide-support-no-headaches-choose-two/"
+ to = "/2024/talks/powerful-macros-good-ide-support-no-headaches-choose-two/"
+
+[[redirects]]
+ from = "/talks/the-impact-of-memory-allocators-on-performance-a-deep-dive/"
+ to = "/2024/talks/the-impact-of-memory-allocators-on-performance-a-deep-dive/"
+
+[[redirects]]
+ from = "/talks/generating-ergonomic-c-apis-using-rustdoc-procedural-macros-and-serde/"
+ to = "/2024/talks/generating-ergonomic-c-apis-using-rustdoc-procedural-macros-and-serde/"
+
+[[redirects]]
+ from = "/talks/proving-macro-expansion-with-expandable/"
+ to = "/2024/talks/proving-macro-expansion-with-expandable/"
+
+[[redirects]]
+ from = "/talks/runtime-scripting-for-rust-applications/"
+ to = "/2024/talks/runtime-scripting-for-rust-applications/"
+
+[[redirects]]
+ from = "/talks/unleashing-rust-the-ferris-within/"
+ to = "/2024/talks/unleashing-rust-the-ferris-within/"
+
+[[redirects]]
+ from = "/talks/the-first-six-years-in-the-development-of-polonius/"
+ to = "/2024/talks/the-first-six-years-in-the-development-of-polonius/"
+
+[[redirects]]
+ from = "/talks/non-binary-rust-between-safe-and-unsafe/"
+ to = "/2024/talks/non-binary-rust-between-safe-and-unsafe/"
+
+[[redirects]]
+ from = "/talks/writing-a-sd-card-driver-in-rust/"
+ to = "/2024/talks/writing-a-sd-card-driver-in-rust/"
+
+[[redirects]]
+ from = "/talks/my-journey-from-webdev-to-medical-visualization-rustacea/"
+ to = "/2024/talks/my-journey-from-webdev-to-medical-visualization-rustacea/"
+
+[[redirects]]
+ from = "/talks/io-in-rust-the-whole-story/"
+ to = "/2024/talks/io-in-rust-the-whole-story/"
+
+[[redirects]]
+ from = "/talks/fast-and-efficient-network-protocols-in-rust/"
+ to = "/2024/talks/fast-and-efficient-network-protocols-in-rust/"
+
+[[redirects]]
+ from = "/talks/code-to-contract-to-code-making-ironclad-apis/"
+ to = "/2024/talks/code-to-contract-to-code-making-ironclad-apis/"
+
+[[redirects]]
+ from = "/talks/windows-kernel-programming-with-rust/"
+ to = "/2024/talks/windows-kernel-programming-with-rust/"
+
+[[redirects]]
+ from = "/talks/rust-irgendwie-irgendwo-irgendwann/"
+ to = "/2024/talks/rust-irgendwie-irgendwo-irgendwann/"
+
+[[redirects]]
+ from = "/talks/linting-with-dylint/"
+ to = "/2024/talks/linting-with-dylint/"
+
+[[redirects]]
+ from = "/talks/building-an-extremely-fast-python-package-manager-in-rust/"
+ to = "/2024/talks/building-an-extremely-fast-python-package-manager-in-rust/"
+
+[[redirects]]
+ from = "/talks/building-an-extremely-fast-python-package-manager-in-rust/"
+ to = "/2024/talks/building-an-extremely-fast-python-package-manager-in-rust/"
diff --git a/templates/2024/sections/speakers.html b/templates/2024/sections/speakers.html
index 0522860b..6d50fbc7 100644
--- a/templates/2024/sections/speakers.html
+++ b/templates/2024/sections/speakers.html
@@ -5,7 +5,7 @@
- Helsing - The Premier Partner of EuroRust 2024
-
-
- Helsing is a new type of defence AI company. We believe that software, in particular artificial intelligence, will be the key to protecting our democracies.
-
You’ll find us in the Helsing Lounge at the exhibition hall. Stop by and make a friend!
-
-
-
-
-
-
-
- October 9th 2024
-
-
-
-
-
-
- Competitive control systems hackathon
-
-
- In this workshop/hackathon, you will work in small teams to build a control system (eg, think PID controller) for navigating a virtual quad copter. Each team builds a stand-alone Rust application that interfaces with the simulation server over RPC; a live leaderboard indicates how well you are doing compared to the other teams. The are, of course, no limits to algorithm creativity… or maybe you want to build your own simulator and train a genetic algorithm or reinforcement learning agent? Join the workshop and show us what you got!
-