Velocity Radar · GitHub guide

Generate your radar

Your graph on your GitHub profile, and your own page at velocity.id8.one, in about a minute.

Get your own graph for your GitHub profile · about a minute

  1. Type your GitHub username

    Type it here: every button on this page fills in from it.

    Velocity Radar records the username you type here, with the time, to count how many people use this guide; only the site's owner sees it. Like the rest of the site, this page uses Google Analytics. The page also asks GitHub which of your public repositories holds your profile README, and remembers the username in this browser.
  2. Copy your snippet Arcade light is the default. Arcade dark matches your Velocity Radar page. Both show the same image to every reader; Classic, the original graph, turns light or dark with the reader's GitHub theme.
    <div align="center">
      <a href="https://velocity.id8.one/stats/octocat">
        <img alt="octocat's Velocity Graph" src="https://velocity.id8.one/stats/octocat/graph-arcade-light.png" width="720" />
      </a>
    </div>
    <div align="center">
      <a href="https://velocity.id8.one/stats/octocat">
        <img alt="octocat's Velocity Graph" src="https://velocity.id8.one/stats/octocat/graph-arcade-dark.png" width="720" />
      </a>
    </div>
    <div align="center">
      <a href="https://velocity.id8.one/stats/octocat">
        <picture>
          <source media="(prefers-color-scheme: dark)" srcset="https://velocity.id8.one/stats/octocat/graph-dark.png" />
          <img alt="octocat's Velocity Graph" src="https://velocity.id8.one/stats/octocat/graph-light.png" width="720" />
        </picture>
      </a>
    </div>
  3. Paste into your GitHub profile README The button opens your profile README for editing: paste the snippet where you want the graph, then press Commit changes. No profile README yet? It opens GitHub's new-repository page: name it after you and tick Add a README file. Open your profile README Waiting for your GitHub username: type it at the top of the directions. Your page then appears at velocity.id8.one/stats/<you>. A username is checked at most every ten minutes. Open your Velocity Radar page Waiting for your GitHub username: type it at the top of the directions.

What the snippet alone gives: @AIMLPM's page

The graph on their GitHub profile, and the radar at the top of their page: where they rank among the 529 builders Velocity Radar follows, on six figures from GitHub's own calendar. Every figure here is live.

@AIMLPM's Velocity Graph in Arcade dark, one of the snippet's three styles
@AIMLPM's Velocity Graph in Arcade dark. The snippet offers three styles: Arcade light (the default), Arcade dark and Classic.
Contents · ranked against the 529 builders Velocity Radar follows

The radar

Each point is where @AIMLPM ranks among them over the same days: the edge means no one is above. The right half is Volume, the left half is Consistency; tap either to jump to its chapter.

CCONSISTENCY
VOLUMEV

Tap any axis for the count behind it.

last 30 dayslast 365 days▲▲ +20 or more▲ +5 to 19→ within 5▼ −5 or morerank points against the last 365 days

Open @AIMLPM's live page: velocity.id8.one/stats/AIMLPM →

Unlock Full Telemetry Real data + private repos

Run the count in your own GitHub account and press Check my run: your page's Stamina chapter lights up with your real figures, private repositories included, their names never.

Snippet only

Stamina

Unbroken runlocked
Long stretchlocked
Middle daylocked

GitHub's calendar has daily totals, not commit times, so without a count there is no run, stretch or hour of the day to show.

With a count · @AIMLPM, real data
Chapter 3 · beyond the radar

Stamina

iD8 counted

Read from their own repositories by the iD8 count, which they ran in their GitHub account; private repositories never leave it. Only people who ran it have these figures, so they are not ranked. How the count works

The longest run with a substantive commit in every hour lasted 45.1 hours, from 18 Sep 09:52 to 20 Sep 06:58 (America/Los_Angeles).

substantive commits in that hourovernight, 23:00 to 07:00 (America/Los_Angeles)

Long days

Time of day · share of substantive commits

How it's measured

count setup · 7 steps · about 10 minutes
  1. 1
    Every button below fills in from it.
  2. 2
    Check your snippet is on your profile Your page, and the count on it, show only while the snippet is on your profile. How to add the snippet Checked when you type your username.
  3. 3
    Generate a fine-grained token Contents: Read-only · Metadata: Read-only · 7-day expiry Open GitHub's token form
  4. 4
    Save it as the Actions secret VELOCITY_RADAR_TOKEN Settings → Secrets and variables → Actions → New repository secret, in your repository. Nowhere else. Open the new-secret page
  5. 5
    Commit the caller file It runs one file, our counting code, fixed at commit 33e9936. Read it first if you like: inspect count.yml on GitHub. .github/workflows/velocity-radar-count.yml It pins the published count to count.yml@33e9936, release v7. Create it on GitHub, filled in
  6. 6
    Add the Dependabot file .github/dependabot.yml GitHub's Dependabot then tells you about each new release of the count with a pull request. If GitHub says the file already exists, you use Dependabot already: add the github-actions entry to your file instead (how). Create it on GitHub, filled in
  7. 7
    Run it Run workflow on the workflow page; it takes a few minutes, then press Check my run below. Open the workflow page

Check my run

When the run shows Success, press Check my run. Velocity Radar reads that run back from GitHub, checks it is the published count and nothing else, and gives you a receipt.

Type your GitHub username at the top of the directions, and this page watches GitHub for your run.

Pressing it sends your GitHub username and the repository to Velocity Radar, which reads your run's public record and its log on GitHub: the totals, and nothing else. Your token never leaves GitHub.

Snippet only and full telemetry, row by row

Snippet only and full telemetry, row by row

Difference Snippet only Full telemetry (snippet + count)
What you do Paste the snippet into your profile README. Also add a workflow file, store a read-only token as a GitHub secret, and start the workflow yourself.
What is read Your public profile and GitHub contribution record: daily totals, public and opted-in private totals, and contribution types. No commits are opened for a new, unscreened profile. Commits you authored on the default branches of the repositories you select: id, date, first message line, additions, deletions, and parent count. Every one is sorted; selected private repositories are included.
What leaves your GitHub account GitHub returns the profile and contribution fields used to draw the public page. You give Velocity Radar no access token. Nothing, from the run itself. When you press Check my run, Velocity Radar reads the figures from the run's public log on GitHub; your token and commit records stay in your GitHub account.
30, 90 and 180-day figures Not shown: GitHub's contribution record has daily totals, not commits. The run summary counts each range separately, plus 365 days.
Private work GitHub supplies one opted-in private contribution count, without a private commit breakdown; public commit figures remain public-only floors. Commits in the selected private repositories are counted directly.
Commit size Not available: no commits are read. Median lines changed for substantive commits, for 30, 90, 180 and 365 days.
Hours and longest run Not available: the contribution record has daily totals, not commit times. The run summary shows the longest runs, hours of the day, and day, evening and overnight bands when a time zone is supplied.
Momentum strips The public page shows contribution momentum. It has no real-data substantive or commit-size strip. Your public page adds a counted strip: substantive commits per active day, in the same stretches of 30 active days, worked out in your run.
How figures are marked Every chart from GitHub's record carries a GitHub record badge. Counted parts carry the iD8 counted badge and the date the count reached.
Run it again Fully automatic after you add the snippet: the graph and the page update by themselves. Make a new token, replace the secret, and manually start the workflow again.
Remove it Remove the snippet. A later profile check takes the public page down. Delete the token or let it expire. The workflow never starts by itself.
Read the code first

The counting code is one public caller file. Read it before you add the caller to your account. The only place it talks to GitHub is in that pinned file. The commit id is:

33e993618d8583e7aa329422aac458e85be8d73b

A full commit id names fixed code. The same id appears in your caller file and in GitHub's account of the run.

Read count.yml at that commit

Running it again later

Leave the caller file in place. Make a new 7-day token, replace the VELOCITY_RADAR_TOKEN secret, and press Run workflow again. From a terminal:

gh secret set VELOCITY_RADAR_TOKEN --repo octocat/octocat
gh workflow run "Velocity Radar count" --repo octocat/octocat
What a count can and cannot show
  • It shows how many commits you authored, their category, and their size. It says nothing about what they contain.
  • It covers only repositories the token can read. The run summary states how many were read and how many could not be read.
  • Days are UTC days, and only complete days are counted.
  • A count describes Git activity. It does not measure product use, customers, revenue, or the value of the work.
Remove the snippet

Delete the snippet from your profile README. Velocity Radar checks confirmed profiles again; after a later check, the page and graph are no longer public.

When a new release comes out

The count gets a new release when its method changes. If you added the Dependabot file (step 4 of the setup), this is what happens then.

  1. Read the pull request, then merge it

    Dependabot waits until a release is 3 days old, then proposes it at its next weekly look, so the pull request arrives 3 to 10 days after the release. It opens in your repository and changes one line of your caller file: line 8, to the new release's commit id and name. Its Files changed tab shows exactly that. Merge it to take the new release, or close it to stay on yours. If it changes anything else, close it.

    Open your pull requests Waiting for your GitHub username: type it at the top of the directions.
  2. Run the new release and press Check my run

    The new release counts only once it runs. Make a new 7-day token and save it as the secret VELOCITY_RADAR_TOKEN, as in the steps above, run the workflow, then press Check my run for a new receipt.

    Open the workflow page Waiting for your GitHub username: type it at the top of the directions.

Read from GitHub, not typed in · from iD8.one · velocity.id8.one