Skip to content

Commit 2dad7cb

Browse files
Add workshops jetbrains, polar signals, codspeed (#762)
2 parents c827eaf + 2fa755d commit 2dad7cb

28 files changed

Lines changed: 452 additions & 126 deletions

content/image-credits.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,11 @@ title = "Image Credits"
2020
<a href="https://www.flickr.com/photos/zedecoh/4885789967/">Building photograph</a>, licensed under <a href="https://creativecommons.org/publicdomain/zero/1.0/">Attribution 2.0 Generic</a>. Photo taken by <a href="https://www.flickr.com/photos/zedecoh/">zedecoh</a>. We made the following changes: cropped the photo and amped up its contrast.
2121
</p>
2222
</div>
23+
24+
25+
<h3 class="mb-3 mt-7">Photo of the venue Cité des Sciences et de l'Industrie</h3>
26+
<div class="box">
27+
<p>
28+
<a href="https://commons.wikimedia.org/wiki/Cit%C3%A9_des_sciences_et_de_l%27industrie#/media/File:Cit%C3%A9_des_Sciences_et_de_l'Industrie_@_Parc_de_La_Villette_@_Paris_(28957995305).jpg">Building photograph</a>, licensed under <a href="https://creativecommons.org/licenses/by/2.0/">Attribution 2.0 Generic</a>. Photo taken by <a href="https://www.flickr.com/people/22539273@N00">Guilhem Vellut</a>. We made the following changes: cropped the photo and added a gradient.
29+
</p>
30+
</div>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
+++
2+
title = "JetBrains / RustRover workshop"
3+
template = "workshop.html"
4+
[extra]
5+
sponsor = "JetBrains"
6+
sponsor_bio = "JetBrains is a software company that creates professional development tools trusted by millions worldwide. Their product range includes award-winning tools such as IntelliJ IDEA, PyCharm, ReSharper, and PhpStorm, as well as productivity-enhancing team tools like YouTrack, TeamCity, and Datalore.<br/>In 2023, JetBrains introduced RustRover – a standalone IDE for Rust. Smart code completion, custom-built live inspections, intricate syntax highlighting, full integration with Cargo, and complete testing support to power your development with Rust."
7+
sponsor_cta = ""
8+
sponsor_url = "https://www.jetbrains.com/"
9+
venue = "main"
10+
day = "October 9, 2025, Paris and online"
11+
time = "11:00–15:45"
12+
mentors = [
13+
{ name = "Vitaly Bragilevsky", avatar = "vitaly-bragilevsky.webp", avatar_alt = "Vitaly Bragilevsky", bio = "Vitaly Bragilevsky is a Developer Advocate at JetBrains and a passionate fan of Rust and other programming languages – especially those with strong static type systems. He has spent most of his career teaching programming languages, computer science, and software development to students, and now continues this work with professional developers at industry conferences and beyond.", github = "bravit" }
14+
]
15+
abstract = "This workshop is divided into four completely independent sessions, and you’re welcome to join or leave at any time. Please note that Session 3 is a hands-on session with exercises on advanced Rust type system features – you’ll get the most out of it if you bring your laptop."
16+
ogimage = "/images/workshops/og-images/og-image-jetbrains-rustrover.png"
17+
heroimage = "/images/workshops/hero-jetbrains-rustrover.webp"
18+
heroimage_alt = ""
19+
+++
20+
21+
<div class="">
22+
<h2 class="mb-7">Syllabus</h2>
23+
<ol class="syllabus">
24+
<li class="mb-7 border">
25+
<h4>Session 1. RustRover Demo</h4>
26+
<div>
27+
<strong>Time: 11:00–11:30</strong>
28+
<p>In this session, we’ll explore the key features of RustRover, JetBrains’ dedicated Rust IDE. We’ll cover its support for writing code (including context-aware completion and generation, on-the-fly analysis with quick fixes, smart refactorings, live templates, and more), dependency management (enhanced Cargo.toml editing, unused dependency detection, Cargo features support, etc.), debugging, AI-assisted development, web and database development, VCS integration, teamwork, and beyond.</p>
29+
</div>
30+
</li>
31+
<li class="mb-7 border">
32+
<h4>Session 2. Debugging Rust Code in RustRover</h4>
33+
<div>
34+
<strong>Time: 11:45–12:15</strong>
35+
<p>Let’s dive into the RustRover debugger. We’ll begin with a general overview of native code debugging – from generating debug information with the compiler to using it while running code under the debugger. Next, we’ll look in detail at different ways to step through code (step-by-step execution, breakpoints, run-to-cursor, and more) and examine the current state of a program. We’ll then briefly touch on remote debugging techniques. Finally, we’ll see how RustRover leverages the gdb and lldb console debuggers, and how you can interact with them directly within a RustRover debugging session.</p>
36+
</div>
37+
</li>
38+
<li class="mb-7 border">
39+
<h4>Session 3. Hands-On with Advanced Rust Types</h4>
40+
<div>
41+
<strong>Time: 14:00–15:00</strong>
42+
<p>This is a hands-on session on advanced Rust type system features. Bring your laptop, clone the provided repository, and dive into challenging exercises covering advanced enums and pattern matching, trait bounds and generic constraints, associated types (including GATs), higher-ranked trait bounds, and more.</p>
43+
</div>
44+
</li>
45+
<li class="mb-7 border">
46+
<h4>Session 4. JetBrains Junie: Autonomous AI Agent in RustRover</h4>
47+
<div>
48+
<strong>Time: 15:15–15:45</strong>
49+
<p>Junie is an autonomous AI coding agent available in RustRover. In this session, we’ll explore how it works and how it can boost developer productivity. We’ll also look at the broader role of AI coding agents in modern software development workflows: how they can assist with routine tasks, explore codebases, accelerate prototyping, suggest improvements, and even help teams maintain higher code quality. By understanding Junie’s capabilities in context, you’ll see how AI-powered assistance fits naturally into the daily life of a Rust developer and complements traditional IDE features.</p>
50+
</div>
51+
</li>
52+
</ol>
53+
</p>
54+
</div>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
+++
2+
title = "Profiling Rust in Action workshop"
3+
template = "workshop.html"
4+
[extra]
5+
sponsor = "Polar Signals"
6+
sponsor_bio = "Polar Signals Cloud is an always-on, zero-instrumentation continuous profiling for CPU, GPU, and Memory that helps improve performance, understand incidents, and lower infrastructure costs."
7+
sponsor_cta = ""
8+
sponsor_url = "https://www.polarsignals.com/"
9+
mentors = [
10+
{ name = "Frederic Branczyk", avatar = "frederic-branczyk.webp", avatar_alt = "Frederic Branczyk", bio = "Frederic is the founder of Polar Signals. Before founding Polar Signals he was a senior principal engineer and main architect for all things Observability at Red Hat, joining through the CoreOS acquisition. Frederic is a Prometheus & Thanos maintainer and tenured as a tech lead for SIG instrumentation in Kubernetes for 4 years. In his previous life, he was a security researcher and when not working on software Frederic enjoys obsessing over brewing a perfect cup of coffee." },
11+
{ name = "Matthias Loibl", avatar = "matthias-loibl.webp", avatar_alt = "Matthias Loibl", bio = "Matthias is the Director of PolarSignals Cloud. He is a maintainer of Parca, Pyrra, Prometheus, Prometheus Operator and more. He has organized PromCon twice. Matthias is a CNCF Ambassador." },
12+
{ name = "Alfonso Subiotto", avatar = "alfonso-subiotto.webp", avatar_alt = "Alfonso Subiotto", bio = "Alfonso is a software engineer with a deep focus on distributed systems and databases. After honing his skills on the SQL execution team at Cockroach Labs, he now contributes to the storage layer at Polar Signals, a continuous profiling solution. Alfonso’s current area of focus is ensuring correctness through deterministic simulation testing. " }
13+
]
14+
venue = "main"
15+
day = "October 9, 2025, Paris and online"
16+
time = "30-minute sessions between 11:00–17:30"
17+
abstract = "Curious how to make your Rust applications faster and more efficient? In this 30-minute hands-on workshop, we’ll explore what continuous profiling is, why it matters, and how it goes beyond traditional profiling. Using real Rust examples, you’ll learn to capture On-CPU, Off-CPU, and heap memory profiles, tackle advanced scenarios like thread-level analysis, and even correlate profiles with distributed tracing data. Walk away with practical techniques to unlock deeper insights into your Rust applications’ performance.<br/><br/>This workshop runs on repeat in 30-minute sessions. Join anytime!"
18+
ogimage = "/images/workshops/og-images/og-image-profiling-rust.png"
19+
heroimage = "/images/workshops/hero-profiling-rust.webp"
20+
heroimage_alt = ""
21+
+++
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
+++
2+
title = "Rust Performance Lab: Sharpening Your Instincts"
3+
template = "workshop.html"
4+
[extra]
5+
sponsor = "Codspeed"
6+
sponsor_bio = ""
7+
sponsor_url = "https://codspeed.io/"
8+
abstract = "We’ve all heard that “premature optimization is the root of all evil.” But sometimes the real evil is ignoring performance until it’s too late. In this hands-on workshop, you’ll practice spotting and fixing slowdowns in your Rust code.<br/><br/>We’ll move through short cycles of measuring, experimenting, and improving, each with a playful competitive angle to keep things engaging. The goal is to learn first and foremost, but racing for the fastest solution always adds some fun. You’ll walk away with sharper instincts, practical techniques, and a better sense of when performance work stops being premature and starts being essential. Along the way, you’ll also build instincts for spotting bottlenecks and gain hands-on experience with the tools that help decide where to optimize."
9+
ogimage = "/images/workshops/og-images/og-image-rust-performance-lab.png"
10+
heroimage = "/images/workshops/hero-rust-performance-lab.webp"
11+
heroimage_alt = "A smartwatch"
12+
+++
13+
14+
<div class="">
15+
<h2 class="mb-7">Format</h2>
16+
<ol class="syllabus">
17+
<li class="mb-7 border">
18+
<h4>1. Kick-off & Setup</h4>
19+
<div>
20+
<p>Introduction to the workshop goals and the “premature vs essential” debate. Walk through the benchmarking setup so everyone can measure consistently and compare results fairly (e.g., using the same inputs, environment, and tools).</p>
21+
<p>Length: 30 minutes.</p>
22+
</div>
23+
</li>
24+
<li class="mb-7 border">
25+
<h4>2–5. Themed Optimization Rounds</h4>
26+
<div>
27+
<p>Each round explores a different performance theme and follows the same structure:</p>
28+
<ul>
29+
<li>Short theme presentation</li>
30+
<li>Hands-on optimization challenge</li>
31+
<li>Compare and discuss results</li>
32+
<li>Explanation of effective strategies</li>
33+
</ul>
34+
<p>Length: 4 × 45 minutes.</p>
35+
</div>
36+
</li>
37+
<li class="mb-7 border">
38+
<h4>6. Final Challenge & Competition</h4>
39+
<div>
40+
<p>Participants take on a larger Rust codebase to optimize. The goal is to achieve the fastest correct solution by applying techniques introduced in earlier rounds.</p>
41+
<p>Length: 60 minutes.</p>
42+
</div>
43+
</li>
44+
<li class="mb-7 border">
45+
<h4>7. Wrap-up & Takeaways</h4>
46+
<div>
47+
<p>Review the competition results, highlight the most impactful optimizations, and distill the key lessons. Participants leave with sharper instincts, practical techniques, and a clear sense of when performance work stops being premature and becomes essential.</p>
48+
<p>Length: 30 minutes.</p>
49+
</div>
50+
</li>
51+
</ol>
52+
</p>
53+
</div>

data/workshop-day-schedule.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77
{ "time": "10:00–16:00", "title": "rust-python-interoperability" },
88
{ "time": "10:00–16:00", "title": "using-bevy" },
99
{ "time": "10:00–16:00", "title": "long-live-webassembly" },
10-
{ "time": "10:00–16:00", "title": "edge-ai-with-rust" }
10+
{ "time": "10:00–16:00", "title": "edge-ai-with-rust" },
11+
{ "time": "10:00–16:00", "title": "rust-performance-lab" }
1112
],
1213
"side": [
1314
{ "time": "14:30–17:30", "title": "bike-tour" },
1415
{ "time": "16:45–17:45", "title": "boat-tour" },
1516
{ "time": "18:30–20:00", "title": "wine-cheese" },
1617
{ "time": "19:00–22:00", "title": "meetup" },
18+
{ "time": "", "title": ""},
1719
{ "time": "", "title": ""}
1820
]
1921
}

sass/components/_schedule-overview.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
}
3232

3333
.activity-card__image {
34+
object-fit: contain;
3435
width: 70%;
3536

3637
@media screen and (max-width: 60rem) {

sass/components/_schedule.scss

Lines changed: 72 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
& .activity-card {
2929
padding: 2rem;
3030

31+
@media screen and (max-width: 85rem) {
32+
padding: 2rem 0;
33+
}
34+
3135
@media screen and (max-width: 60rem) {
3236
padding: 2rem 0;
3337
}
@@ -63,8 +67,11 @@
6367

6468
.activity-card__image {
6569
order: 1;
70+
margin-left: auto;
71+
margin-right: auto;
6672
}
6773

74+
6875
.activity-card__speaker {
6976
order: 4;
7077
}
@@ -193,8 +200,8 @@ section#day2 {
193200
};
194201
}
195202

196-
& .schedule__table-3cols {
197-
width: 33.33%;
203+
& .schedule__table-4cols {
204+
width: 25%;
198205
border-left: 1px solid var(--blue-light);
199206
}
200207

@@ -211,6 +218,10 @@ section#day2 {
211218
text-align: center;
212219
}
213220

221+
& td:nth-child(4) {
222+
border-right: 1px solid var(--blue-light);
223+
}
224+
214225
& .schedule__track th {
215226
padding: .5rem 0 1rem 0;
216227
}
@@ -237,13 +248,12 @@ section#day2 {
237248

238249
.schedule__side-track {
239250
padding-left: 0;
251+
}
240252

241-
/* Remove if number of workshops = number of side activities on Workshop Day */
242-
.schedule__list {
243-
li:last-child {
244-
.activity-card {
245-
border-bottom: none;
246-
}
253+
.schedule__list {
254+
li:last-child {
255+
.activity-card {
256+
border-bottom: none;
247257
}
248258
}
249259
}
@@ -258,23 +268,65 @@ section#day2 {
258268
}
259269
}
260270

271+
.border-bottom {
272+
border-bottom: 1px solid var(--blue-light);
273+
}
274+
275+
#workshop-day {
276+
.activity-card__image {
277+
margin-bottom: .25rem;
278+
}
279+
280+
@media (max-width: 60rem) {
281+
/* Remove if number of workshops = number of side activities on Workshop Day */
282+
.schedule__list {
283+
li:nth-last-child(2), li:last-child {
284+
display: none;
285+
}
286+
}
287+
}
288+
}
289+
261290
#day1, #day2 {
262291
.impl-room__container {
263292
@media (max-width: 60rem) {
264293
border-top: 1px solid var(--blue-light);
265294
}
266295
}
267296

268-
.impl-room {
269-
position: sticky;
270-
top: 0;
271-
text-align: center;
297+
.activity-card__image {
298+
width:80%;
299+
300+
@media screen and (max-width: 60rem) {
301+
width: 10rem;
302+
}
303+
}
272304

273-
@media (max-width: 60rem) {
274-
position: inherit;
275-
border-top: 1px solid var(--blue-light);
305+
.sticky {
306+
.activity-card {
307+
position: sticky;
308+
top: 0;
309+
text-align: center;
310+
311+
@media (max-width: 60rem) {
312+
position: inherit;
313+
border-top: 1px solid var(--blue-light);
314+
}
315+
316+
317+
.activity-card__workshop {
318+
.activity-card__image {
319+
max-height: 10rem;
320+
margin: 0 auto 1rem auto;
321+
order: 1;
322+
323+
@media screen and (max-width:60rem) {
324+
width: 10rem;
325+
}
326+
}
276327
}
277328
}
329+
}
278330

279331
.activity-card__content {
280332
display:flex;
@@ -289,15 +341,13 @@ section#day2 {
289341
}
290342

291343
.activity-card__portrait {
292-
width: 10rem;
344+
width: clamp(5rem, 12vw, 10rem);
293345
margin: 0 auto 1rem auto;
294346
order: 1;
295-
}
296347

297-
.impl-room__portrait {
298-
height: 10rem;
299-
margin: 0 auto 1rem auto;
300-
order: 1;
348+
@media screen and (max-width:60rem) {
349+
width: 10rem;
350+
}
301351
}
302352

303353
.activity-card__speaker {
@@ -335,7 +385,7 @@ section#post-day {
335385

336386
@media (max-width: 60rem) {
337387
width: clamp(15rem,60%,25rem);
338-
}
388+
}
339389
}
340390

341391

sass/components/_workshop.scss

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757

5858
img {
5959
max-width: 7rem;
60-
max-height: 1.5rem;
60+
max-height: 2rem;
6161
}
6262
}
6363

@@ -176,10 +176,12 @@
176176
display: grid;
177177
grid-template-columns: repeat(2, 70% 30%);
178178
grid-template-rows: 2rem 5rem 1fr;
179+
margin-bottom: 4rem;
179180

180181
@media (max-width: 60rem) {
181182
display: grid;
182183
grid-template-columns: 1fr;
184+
margin-bottom: auto;
183185
}
184186
}
185187

@@ -192,11 +194,13 @@
192194
grid-column-start: 1;
193195
grid-row-start: 3;
194196
padding-right:3rem;
197+
margin-bottom: auto;
195198

196199
@media (max-width: 60rem) {
197200
grid-column-start: 1;
198201
grid-row-start: 4;
199202
padding-right: 0;
203+
margin-bottom: 4rem;
200204
}
201205
}
202206

static/images/cite.jpg

77.2 KB
Loading
75.8 KB
Loading

0 commit comments

Comments
 (0)