As presented. The palette is light on request of the reviewer; code blocks
and byte dumps keep a dark ground so the byte colours still work. The OPEN
walk lights the hovered bytes as an inverted block and its table cells are
dark text on a tint of their group colour.
build.py inlines reveal.js, the stylesheets, scripts and Markdown sections
into slides/dist/hands-on-bgp.html for uploading.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Removed every fragment and stepped code highlight: a slide now shows
everything at once. Two code blocks keep a static highlight on one line.
- Dropped "What stands between you and an outage".
- The UPDATE walked through in section 3 is now 2a0d:d740::/48 as AS210036
announces it to the SwissIX route servers: next hop 2001:7f8:24::c9
(pr01's port on the peering LAN), AS path 210036, MED 0 and 210036:10:2,
matching what pr01's export filter puts on routes to peers. Encoded with
the packet crate and parsed back to the identical message; the slide
generator asserted every quoted number, including the next hop, against
the bytes. Adds a MULTI_EXIT_DISC slide to the walkthrough.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Title is now "Hands-on BGP"; the AS-path diagram is gone from the cover.
- Sections: IPv6 addresses and prefixes; where AS numbers and prefixes
come from (IANA, RIRs, the RIPE database, IRR vs RPKI); BGP and the
bytes of an UPDATE; IP transit vs Internet exchanges (the peering LAN as
an Ethernet segment, route servers); the lab (ferrix, pr01.rue, SwissIX,
NL-ix, France-IX, DE-CIX, transit).
- The UPDATE walked through in section 3 is a real 94-byte capture from
ferrix for 2a0d:d741:1::/48. Vertical slides light up one part at a
time with its decode; the generator asserted every quoted number
against the capture. Session counts come from the tracked bird.conf,
the route6 object from the RPSL file, SwissIX's LAN from PeeringDB.
- New components: focusable bytes, decode table, prefix bits, and SVG
diagrams drawn in the theme's colours.
- Opening index.html straight from disk used to give a title and empty
panels, because browsers block the module and the section files there.
The page now explains that, and also reports a failed reveal.js load.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Structured like Matt Godbolt's newer talks (hrt-theme.css in
what-happens-beneath-accu-2026): reveal.js with no stock theme but a custom
dark one, every slide on a rounded panel, IBM Plex Sans and Mono, monokai
code with glowing stepped lines, 16:9 with fade transitions, and the
content in one Markdown file per section.
Made our own: the palette is a handful of variables (with ?accent= presets
for comparing), and his ring-and-thread corner motif became a chain of
nodes and links, an AS path, which also opens the title slide. A wordmark
sits where his decks carry the employer logo.
Also: a small `bird` syntax highlighter for router config on slides, a
bytes component in the four groups of the /statusz bytes view, columns,
boxes, and a `bare` slide class. reveal.js 6 loads from a vendored copy
when slides/vendor-reveal.sh has been run (works offline, ignored by git)
and from the CDN otherwise. Section files carry a starter outline for the
lab that doubles as a tour of the slide types.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>