A group photograph at the end of a dinner, hands up, everyone laughing

Academy track

One place your numbers live

Your numbers pulled rather than logged into, landed raw, one identity per customer, and a report that arrives whether or not anything happened.

  • 5 steps
  • 6 hours in total
Start step one free

Step one is open to everyone, in full. No account, no card.

The other 4 steps are included in Membership, £79 a month.See Membership

The steps

Each one ends with a check you run yourself. The box is yours to tick when it passes.

0 of 5 steps ticked, kept in this browser

  1. Step 1.Pull, do not log in
    60 minutesOpen to everyone

    Done means

    Leave it for two scheduled runs, then run ls -l /srv/hub/landing/billing/ and see two files, different timestamps, both non-zero. Count the records in the newer one. If that count is exactly your page limit, pagination is not working and you have one page pretending to be a feed.

  2. Step 2.Land it raw before you tidy it
    75 minutes

    Done means

    Run select count(*) from raw_events where payload is null or source is null or fetched_at is null; and get 0. Then run select count(*) from billing_charges;, drop the view with drop view billing_charges;, recreate it from the block above, and run that count again. Same number, both times. If recreating the view changes an answer, something upstream of the view is being edited and raw is not raw.

  3. Step 3.One row, one thing, one identity
    90 minutes

    Done means

    Run this and get zero rows back.

  4. Step 4.The report writes itself or it does not get read
    60 minutes

    Done means

    After two scheduled sends, two messages sit in your inbox. Put them side by side and compare the labels line for line. Every label matches, in the same order, including any line that was unverified in one and filled in the other. If the second message is missing a line the first one had, your template is being generated from the data rather than from the definition. That is how it hides things from you.

  5. Step 5.Know when the pipe broke
    75 minutes

    Done means

    Turn off one pull. Wait past its declared gap, run the check, and get exactly one row back naming that source with an age greater than its max_gap_minutes. Run your summary. Confirm that source's numbers print as unverified rather than dropping towards zero. Turn the pull back on, wait one cycle, run the check again and get zero rows. If the summary showed a drop rather than the word unverified at any point in that test, you have a report that lies quietly. The rest of this track is worth nothing.

I keep this tick in this browser and send it nowhere. It goes when you close the browser.

Included in Membership

The rest of this track is included in Membership.

Step one is open to everyone, in full. Every step after it opens on a member account.

Included in Membership — £79/month.