Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
80 lines (76 loc) · 3.66 KB
/
Copy pathindex.html
File metadata and controls
80 lines (76 loc) · 3.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
---
layout: default
title: Home
---
<section class="hero">
<div class="container">
<span class="hero__eyebrow">C++23 · Go · Rust · Fedora 44</span>
<h1 class="hero__title">{{ site.title }}</h1>
<p class="hero__lead">{{ site.description }}</p>
<div class="hero__cta">
<a class="btn btn--primary"
href="{{ '/docs/00-outline/' | relative_url }}">Start the tutorial →</a>
<a class="btn btn--secondary"
href="{{ '/docs/01-prerequisites/' | relative_url }}">Set up the lab</a>
<a class="btn btn--secondary"
href="https://github.com/{{ site.github_username }}/{{ site.github_repo }}"
rel="noopener">View on GitHub ↗</a>
</div>
</div>
</section>
<section class="section-tight">
<div class="container">
<div class="stats">
<div class="stat"><span class="stat__value">3×</span><span class="stat__label">Every example in modern C++23, Go, and Rust — switch languages with one click</span></div>
<div class="stat"><span class="stat__value">VM</span><span class="stat__label">Privileged and two-host demos run in a disposable Fedora 44 KVM lab — never on your laptop</span></div>
<div class="stat"><span class="stat__value">📊</span><span class="stat__label">Observe everything: bcc/bpftrace, perf, PCP, and OpenTelemetry into Grafana</span></div>
<div class="stat"><span class="stat__value">🧰</span><span class="stat__label">gdb, valgrind, sanitizers, delve, miri — a real debugging curriculum in every language</span></div>
</div>
</div>
</section>
<section class="section">
<div class="container">
<h2 class="section-heading">What this tutorial is</h2>
<p class="section-sub">
A chapter-based, hands-on path through Linux systems programming for
developers who already program and want to understand what their code
asks of the kernel. Each chapter builds the same runnable example
idiomatically in <strong>C++23</strong>, <strong>Go</strong>, and
<strong>Rust</strong> — processes, files and I/O, memory, IPC,
networking, and concurrency, then debugging, containers, observability,
and low-latency work. Everything runs locally on Fedora 44 except what
genuinely needs root, kernel observation, or a second host — that runs in
a disposable KVM lab. eBPF appears as an observation toolkit
(bcc-tools, bpftrace, bpftool) aimed at your own programs; this is
systems programming, not kernel programming. All container images are
UBI-based and run rootless under Podman.
</p>
{%- comment -%}
Two-level navigation: the homepage shows one card per Part. Each Part
card links to its own page (the _parts collection) which lists that
part's chapters. New chapters appear under their part automatically;
new parts appear here just by adding a file to _parts/.
{%- endcomment -%}
<div class="cards">
{% assign parts_sorted = site.parts | sort: "order" %}
{% for part in parts_sorted %}
{% assign part_docs = site.docs | where: "part", part.part_name %}
<a class="card" href="{{ part.url | relative_url }}">
<div class="card__eyebrow">Part {{ part.order }}</div>
<h3 class="card__title">{{ part.title }}</h3>
{% if part.blurb %}
<p class="card__desc">{{ part.blurb }}</p>
{% endif %}
<div class="card__meta">
{% if part_docs.size > 0 %}
<span>{{ part_docs.size }} chapter{% if part_docs.size != 1 %}s{% endif %}</span>
{% else %}
<span>Coming soon</span>
{% endif %}
<span>Explore →</span>
</div>
</a>
{% endfor %}
</div>
</div>
</section>