This site’s own data

Each night a pipeline collects this site’s Cloudflare analytics and its GitHub activity, models them with dbt in DuckDB, and tests them before anything here is published.

Data through (UTC days). 152 of 152 tests passed.

Python, dbt and DuckDB, rebuilt every night by GitHub Actions;

Reading this site

Since launch on 10 October 2026, clients naming a browser asked for 2,359 pages, and 140 browsers downloaded the site’s font.

0 300 600 321 10 Oct 204 11 Oct 502 12 Oct 513 13 Oct 267 14 Oct 123 15 Oct 136 16 Oct 114 17 Oct 179 18 Oct
Browser page views per day. A view counts when a client that names a browser in its user agent asks for a page in the sitemap. Some automated tools pose as browsers, so this is an upper bound on reading.
The numbers
DayBrowser page views
10 October 2026321
11 October 2026204
12 October 2026502
13 October 2026513
14 October 2026267
15 October 2026123
16 October 2026136
17 October 2026114
18 October 2026179
Browser page views per day
DayBrowser page views
10 October 2026321
11 October 2026204
12 October 2026502
13 October 2026513
14 October 2026267
15 October 2026123
16 October 2026136
17 October 2026114
18 October 2026179
0 15 30 26 10 Oct 29 11 Oct 10 12 Oct 8 13 Oct 25 14 Oct 13 15 Oct 3 16 Oct 4 17 Oct 22 18 Oct
Browsers that downloaded the site’s font. Every page loads it and a browser keeps it for 30 days, so each download is close to one browser arriving for the first time that month. This is the better count of people.
The numbers
DayFont downloads
10 October 202626
11 October 202629
12 October 202610
13 October 20268
14 October 202625
15 October 202613
16 October 20263
17 October 20264
18 October 202622
Font downloads per day
DayFont downloads
10 October 202626
11 October 202629
12 October 202610
13 October 20268
14 October 202625
15 October 202613
16 October 20263
17 October 20264
18 October 202622

Who else reads it

Page requests from anything that isn’t a person’s browser, by week, Monday to Sunday. Crawlers are named from what their user agent says, which anyone can fake. The latest complete week is 12 to 18 October 2026.

AI crawlers and assistants
Name 10 Oct to 11 OctWeek of 12 Oct
ClaudeBot (Anthropic) 100
OAI-SearchBot (OpenAI) 72
Meta-ExternalAgent 08
CCBot (Common Crawl) 70
GPTBot (OpenAI) 50
PerplexityBot 50
Google-CloudVertexBot 40
Bytespider (ByteDance) 02
ChatGPT-User (OpenAI) 20
Search engine crawlers
Name 10 Oct to 11 OctWeek of 12 Oct
Googlebot 282
Applebot 29
Bingbot 73
PetalBot 19
Baiduspider 53
YandexBot 40
Other bots
Name 10 Oct to 11 OctWeek of 12 Oct
Other bot 2550
SemrushBot 010
AhrefsBot 25
MJ12bot 60
Facebook link preview 40
LinkedIn link preview 10
Slack link preview 10
X link preview 10
Scripts and tools
Name 10 Oct to 11 OctWeek of 12 Oct
curl 18732
Headless Chrome 1192
Python aiohttp 1236
axios 811
Go HTTP client 113
Python requests 43
Python httpx 32
Scrapy 01
Clients that don’t say what they are
Name 10 Oct to 11 OctWeek of 12 Oct
Unrecognised 7161,376

Scans for software this site doesn’t run

This site is static HTML. These requests look for WordPress, PHP, hidden files and admin pages, hoping to find something to break into.

Requests for software this site doesn’t run, by week
Looking for 10 Oct to 11 OctWeek of 12 Oct
Admin pages 59304
Hidden files 5451,696
PHP 1,0001,982
WordPress 4802,158

Pages, by month

Pages are counted for whole calendar months, once each month has ended and its last days have been read again. A page is named only when Cloudflare certainly saw at least 5 views of it from browsers that month; the views shown are Cloudflare’s estimates. October 2026 closes for counting on 4 November 2026.

Countries, by month

A country is named only when Cloudflare certainly saw at least 10 page views from browsers there, on at least 3 different days of the month; every other country is counted as Other. The views shown are Cloudflare’s estimates, and include the few views of pages outside the sitemap. October 2026 closes for counting on 4 November 2026.

Building the site

In the complete weeks since launch, 55 commits reached the main branch, 82% of them co-authored with Claude Code. Merges and the nightly data commits are not counted.

Commits and pull requests by week
Week Commits With Claude Code Pull requests merged
10 Oct to 11 Oct 31 21 3
Week of 12 Oct 24 24 14
Accessibility (axe, both themes, four widths) 1 min 21 s Install browser 25 s Install 11 s Type check 7 s Test the MCP data bundle 5 s Build 2 s Bundle the Worker as a deploy would (nothing is uploaded) 2 s Check out 1 s Set up Node 1 s
Where a CI run’s time goes: the median of each step over passing runs in the last 30 days.
The numbers
StepMedian time per stepShare
Accessibility (axe, both themes, four widths)1 min 21 s60%
Install browser25 s19%
Install11 s8%
Type check7 s5%
Test the MCP data bundle5 s4%
Build2 s1%
Bundle the Worker as a deploy would (nothing is uploaded)2 s1%
Check out1 s1%
Set up Node1 s1%
Median time per step
StepMedian time per step
Accessibility (axe, both themes, four widths)1 min 21 s
Install browser25 s
Install11 s
Type check7 s
Test the MCP data bundle5 s
Build2 s
Bundle the Worker as a deploy would (nothing is uploaded)2 s
Check out1 s
Set up Node1 s

The pipeline

A Python collector writes each day’s totals as JSON in the site’s repository. dbt reads those files into DuckDB, models them in three layers and runs 152 tests, 3 of them unit tests of the publishing rules. Each mart is published either here or on Sleep Anchor’s website in numbers, which uses the same pipeline.

  1. Raw files

    • raw/_log
    • raw/brentburgess/countries
    • raw/brentburgess/font
    • raw/brentburgess/pages
    • raw/brentburgess/probes
    • raw/brentburgess/responses
    • raw/brentburgess/rollup
    • raw/github/commits
    • raw/github/pulls
    • raw/github/runs
    • raw/github/steps
    • raw/sleepanchor/clicks
    • raw/sleepanchor/web
  2. Staging

    • stg_bb__countries
    • stg_bb__font
    • stg_bb__pages
    • stg_bb__probes
    • stg_bb__responses
    • stg_bb__rollup
    • stg_gh__commits
    • stg_gh__pulls
    • stg_gh__runs
    • stg_gh__steps
    • stg_pipeline__runs
    • stg_sa__click_days
    • stg_sa__clicks
    • stg_sa__web_days
    • stg_sa__web_tables
  3. Intermediate

    • int_bb__requests_classified
    • int_calendar
    • int_gh__ci_runs
    • int_months
    • int_sa__clicks_outbound
    • int_sa_calendar
    • int_weeks
  4. Marts

    • agg_ci_steps_30d
    • agg_countries_monthly
    • agg_pages_monthly
    • agg_sa_clicks_monthly
    • agg_sa_countries_monthly
    • agg_sa_web_breakdown_monthly
    • agg_sa_web_monthly
    • fct_checks
    • fct_ci_daily
    • fct_crawlers_weekly
    • fct_font_daily
    • fct_github_monthly
    • fct_github_weekly
    • fct_pipeline_runs
    • fct_probes_weekly
    • fct_reading_daily
    • fct_sa_daily
    • sa_insights_monthly

Tests

Tests by model
ModelTestsPassed
agg_ci_steps_30d 8 8
agg_countries_monthly 9 9
agg_pages_monthly 7 7
agg_sa_clicks_monthly 9 9
agg_sa_countries_monthly 6 6
agg_sa_web_breakdown_monthly 8 8
agg_sa_web_monthly 7 7
fct_checks 6 6
fct_ci_daily 7 7
fct_crawlers_weekly 7 7
fct_font_daily 6 6
fct_github_monthly 5 5
fct_github_weekly 8 8
fct_pipeline_runs 7 7
fct_probes_weekly 6 6
fct_reading_daily 4 4
fct_sa_daily 13 13
sa_insights_monthly 6 6
stg_bb__countries 2 2
stg_bb__pages 6 6
stg_bb__rollup 2 2
stg_gh__commits 2 2
stg_gh__pulls 2 2
stg_gh__runs 2 2
stg_sa__click_days 1 1
stg_sa__clicks 1 1
stg_sa__web_days 4 4
user_agent_rules 1 1

Checks

Recent runs

The collector’s last 4 runs: 3 read every source.

  1. : every source read, 24 s
  2. : every source read, 8 s
  3. : every source read, 15 s
  4. : 2 sources failed, 29 s

Sources

How these numbers are made

Cloudflare serves this site and counts every request it handles. Each night the collector copies the previous day’s totals, reduced as the privacy page describes: no IP addresses, no full user agents, no referrers and no query strings are kept. A user agent becomes a class and a name from a fixed list, and a page outside the sitemap is counted only as other.

Cloudflare counts some requests from a sample and scales the totals up, so small numbers can move a little. The thresholds for naming a page or a country count only the views Cloudflare certainly saw, never its scaled-up estimate. The collector reads each day on three nights in a row as Cloudflare fills in late data, which is why monthly breakdowns wait until the 4th of the next month.

A failed test stops the nightly update, so the page keeps the last numbers that passed. GitHub activity comes from GitHub’s API: commits, pull requests and CI runs, with no commit messages, names or branch names.