Workshops

Workshops

Three hours, live, and something running at the end of it.

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.

Now booking

A no-code board for R, built on a bike race.

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.

cynkra
David GranjonLead Shiny developer at cynkra and creator of shinyMobile. He wrote the blocks this workshop is built from, and he teaches both sessions.
  • 140kilometersMâcon to Belleville-en-Beaujolais
  • 8categorized climbs2,675 meters of climbing
  • 526snapshotsone every 30 seconds, live
  • 5custom blockswritten for this board

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.

The problem

Positions arrive. Everything else has to be built.

  • 01

    A bike race is a data problem with a deadline

    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.

  • 02

    The road had to be rebuilt before it could be read

    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.

  • 03

    Some of the afternoon is not in the numbers at all

    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.

  • 04

    The clock is the schema

    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.

The shape of it

140 kilometers, eight climbs, three groups on the road.

Scroll and the race runs. The gaps open on the climbs, which is the whole reason the profile had to be right.

Cat 4Cat 3Cat 2Cat 1Cat 3Cat 2Cat 1Cat 2 03570105140 700 m kilometers of stage one snapshot every 30 seconds
Swipe the stage sideways
Breakaway Chase Peloton

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.

The board

Five blocks, wired, and a view at the end of them.

board
01fetchLive positionsGPS snapshot, every 30 s
02cleanRoad profilerebuilt from rider GPS
03joinRadio Tourcommentary, timestamped
04calcGaps and groupswho is with whom, when
05plotStage boardthe view a viewer reads

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 app

The 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.

What you leave with

Four things, and all four are on job descriptions.

Read this as the skills column rather than the syllabus column.

  • Write your own blocks

    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 contracts
  • Wire a board that survives an audience

    Blocks 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, state
  • Put your own data behind it

    The 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, refresh
  • Build interfaces non-technical people can actually use

    The 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, handover

Who 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.

Cohorts

Two sessions open, two dates held.

Each session is three hours, live, with the recording after. The two December dates are held pending demand and are not on sale yet.

  • Thursday September 24, 202614:30-17:30 CEST · 08:30-11:30 EDT · three hoursOpen
  • Thursday October 1, 202614:30-17:30 CEST · 08:30-11:30 EDT · three hoursOpen
  • Thursday December 3, 202614:00-17:00 CET · 08:00-11:00 EST · three hoursDate held
  • Thursday December 10, 202614:00-17:00 CET · 08:00-11:00 EST · three hoursDate held

Workshops are priced and sold separately from the Masterclass. Members take twenty percent off.

Run a workshop with us

Partner workshops are the only ones we run.

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.

  • You bring the roomA conference track, a user group, a team, a department. We have run these into audiences the partner already has, and that is the format that works: your people, our build.
  • We bring the buildThree hours, live, with an instructor who does the work for a living rather than a trainer reading a deck. Materials, environment and recording are ours to organize.
  • Terms are per dealThere is no standing rate card for partner workshops. Tell us the audience and the date and we will come back with a shape.

Three hours is not a big commitment. Building the thing is the point.

The next cohort runs September 24. Bring an R project you are tired of rerunning by hand.