Turn a year of your activity into a contour landscape, then take it away as an image, a pen-plotter drawing or a 3D mesh.
Runs in your browser. CSV contents and generated exports are never sent over the network. On the GitHub path, your browser sends the username and pasted token directly to api.github.com; the token is never written to storage.
Generated, not measured. A modelled developer's year from a fixed seed, so the page has ground on it before you give it any.
Landscape on display: Demo
Explore the landscape
Peaks are busy hours. Valleys are quiet ones. Move the controls to read the original count behind any part of the terrain.
What is on the sheet
- Events
- 2646
- Hours with anything in them
- 828 of 1248
- Highest smoothed peak
- 11:00, week 38 of 52, 5
- The top of the scale
- 8
Take it away
How the terrain and exports are made
Counts per hour per week, compressed with a logarithm against the 98th percentile so one enormous hour cannot flatten the rest, smoothed twice, then contoured at six levels. Hours wrap at midnight; weeks do not.
The SVG contains strokes and no fills, reports its dimensions in millimetres, and groups paths by contour level. It contains no text or font dependency.
The binary STL is 102mm by 46mm, with 2mm of base and up to 12mm of relief. Its directed edges close exactly in the edge check: two triangles a cell on top, the same grid underneath, and a wall joining them.
Can't see
Method and limitations
- Private repositories, unless the token you paste can read them. With no token at all GitHub's limits are far too tight for a year of commits, which is the whole reason the field is there.
- What time it was anywhere but where the author was sitting. The row is the hour off the commit's own local clock, offset and all, and that is deliberate: a laptop set to the wrong zone, or a fortnight abroad, moves the ground.
- A year with fewer than 150 events, or fewer than 30 occupied cells. It refuses instead of drawing, because contours around a handful of cells are noise with rings on them.
- Work. A commit is a commit: a rebase, a squash or a bulk import lands as a ridge at the hour it was replayed, not the hour it was written.
- The zone a CSV was written in. A date with no offset is read as it is typed, so a spreadsheet exported in one country and read in another draws the same ground either way.
- Whether a physical plotter, slicer or printer accepts an export. The page checks the SVG's units and strokes, and the STL's binary layout and closed directed edges, but no physical machine was part of that check.