Workshops
A workshop is not a course cut into a morning. You arrive with an empty project, you build alongside someone who does this work for a living, and you leave with the thing built and the code to keep going.
The current workshop is run with cynkra. It teaches blockr, a visual framework for building analysis boards in R, using a build that ran live against a stage of the Tour de France Femmes.
Stage 5 of the 2026 Tour de France Femmes, Mâcon to Belleville-en-Beaujolais. The build was cynkra's and the account of it is David's: read David's full writeup. What follows is our description of the problem it solves, written for people deciding whether to spend three hours on it.
A road stage is four and a half hours of a field splitting, regrouping and splitting again, and the only thing anyone actually wants to know is who is where, right now, and by how much. The positions arrive as a stream of coordinates. Nothing in that stream tells you there is a group, or a gap, or a climb. All of that has to be built.
Drawing a straight line between two GPS checkpoints puts the route through the hillside rather than around it, and a profile built that way flattens exactly the climbs the race is decided on. The fix was to take the riders' own positions as the survey: they went where the road went, so their track is the road. Eight categorized climbs and 2,675 meters of ascent only show up once the geometry comes from the peloton instead of from the map.
Two crashes and an abandon happened on that stage. Position data shows a rider going backwards; it does not say why, and the difference between a rider losing the wheel and a rider on the ground is the whole story. Radio Tour commentary, timestamped and joined onto the same clock, is what closes that gap. It is the part of the build that is worth more than the modeling, and it is the part people skip.
526 snapshots at 30-second intervals, recorded as the stage happened. A fixed sampling clock is what makes the afternoon queryable after the fact: every source, positions and commentary alike, lands on the same grid, and questions about gaps become arithmetic rather than interpretation.
Scroll and the race runs. The gaps open on the climbs, which is the whole reason the profile had to be right.
Schematic. Ours, drawn for this page: the climbs are categorized but deliberately unnamed and the elevations are invented, because a drawing should not be mistaken for a reading. The distance, the eight categorized climbs, the ascent and the snapshot count above are the real ones.
blockr is a visual framework: each block is a unit of work with typed inputs and outputs, and a board is blocks wired together. Once it is wired, somebody who does not write R can drive it.
Five custom blocks were written for the stage board. In the workshop you write your own, against your own data.
Open the live appThe panel above is our drawing of the board, not a capture of it. The live app is a research deployment and it is sometimes down; the button opens it in a new tab so a slow start has somewhere to happen. blockr itself is open source: blockr.site, the core repository, and blockr.assistant.
Read this as the skills column rather than the syllabus column.
A block is a unit of work with typed inputs and outputs that someone else can wire without reading your code. Five were written for this board. You write yours in the session, against your own data, and they behave like every other block on the board afterwards.
R package structure, S3, reactive contractsBlocks connected into a pipeline, with state that holds up when somebody clicks in an order you did not plan for. The failure mode of a demo is not a bug, it is a click path you never took.
Shiny modules, reactive graphs, stateThe stage board is a worked example, not the point. You bring a source, connect it, and leave with the board reading it. Sports, operations, finance, whatever the day job is.
Ingest, joins, refreshThe job description phrase is communicate with non-technical stakeholders, and it usually means a slide. This is the other reading of it: a tool a stakeholder opens and drives themselves, without you in the room. That is the skill teams promote for and it is nearly always the thing missing from a portfolio.
No-code interfaces, handoverWho it is for. Anyone who writes R and keeps getting asked for the analysis again with different filters. You should be comfortable with functions and with Shiny existing; you do not need to have built a package or a module before.
Each session is three hours, live, with the recording after. The two December dates are held pending demand and are not on sale yet.
Workshops are priced and sold separately from the Masterclass. Members take twenty percent off.
We retired the self-marketed workshop catalog in July. Every workshop now runs with a partner who has the audience, which is a better arrangement for everyone in the room.
The next cohort runs September 24. Bring an R project you are tired of rerunning by hand.