First Party

Open Sourced Analytics

What people read here, how far they get, and how fast pages feel. Built in house on my own stack. No ad trackers, no third party pixels.

Reliability

Uptime and response time
All systems operational checked 14d ago

Uptime

100%

last 30 days

Avg response

47ms

p95 68ms

Incidents

0

none in window

Checks

7,653

every 5 min

Response time, last 60 checks · min 34ms · avg 47ms · p95 68ms.

Lab scores

Google Lighthouse
89 Performance
96 Accessibility
97 Best practices
100 SEO
  • Home 8392100100
  • /contact 929796100
  • /services 929696100
  • /stats 889796100

Google Lighthouse lab scores, averaged across 4 key pages · captured 15d ago. Each page graded 0–100 per category.

Traffic

Last 7 days through 2026-08-30

Visits

70

▼ 12% vs prior 7 days

Visitors

62

▼ 2% vs prior 7 days

Per day

9

visitors

Window

30d

nightly rollups

Live days

30

of 30

40Jul 31Aug 29Jul 31: 38 eventsAug 1: 40 eventsAug 2: 13 eventsAug 3: 11 eventsAug 4: 11 eventsAug 5: 19 eventsAug 6: 20 eventsAug 7: 19 eventsAug 8: 25 eventsAug 9: 11 eventsAug 10: 10 eventsAug 11: 9 eventsAug 12: 23 eventsAug 13: 10 eventsAug 14: 9 eventsAug 15: 6 eventsAug 16: 7 eventsAug 17: 11 eventsAug 18: 6 eventsAug 19: 10 eventsAug 20: 15 eventsAug 21: 11 eventsAug 22: 20 eventsAug 23: 12 eventsAug 24: 9 eventsAug 25: 9 eventsAug 26: 7 eventsAug 27: 7 eventsAug 28: 13 eventsAug 29: 13 events

Daily events over the last 30 days. Peak day highlighted. Hover any bar for the exact count.

Top content

What people read

Top articles

Most read over the last 90 days.

  1. Web Components Htmx Architecture 16
  2. How This Blog Works 13
  3. Openclaw 2026 2 23 Update 9
  4. Htmx Progressive Enhancement 7
  5. Netlify Github Analytics Pipeline 6
  6. Pydantic The Open Source Layer Quietly Running The Ai Economy 6
  7. Yc S26 What Separates The One Percent 6
  8. Anthropic Trained Its Replacement 3

Top paths

Where the traffic lands.

  1. / 64
  2. /article/netlify-github-analytics-pipeline/ 4
  3. /article/top-5-openclaw-alternatives/ 2

Audience

What people browse on

Devices

Browsers

Systems

Sources

How visitors arrive

Referrers

Referring hosts this week.

  1. jameslcowan.com 3

Field speed

Real-user timings

Largest paint

3198ms

Needs work

First byte

147ms

Healthy

Sample days

30

with paint readings

Reading

How far people get

Time on page

14s

Shipping

Commits over time
MarAprMayJunJulAugMonWedFriMar 1: no commitsMar 2: no commitsMar 3: 1 commitMar 4: 1 commitMar 5: 1 commitMar 6: 1 commitMar 7: no commitsMar 8: no commitsMar 9: no commitsMar 10: no commitsMar 11: no commitsMar 12: no commitsMar 13: no commitsMar 14: no commitsMar 15: no commitsMar 16: no commitsMar 17: no commitsMar 18: no commitsMar 19: no commitsMar 20: no commitsMar 21: no commitsMar 22: no commitsMar 23: no commitsMar 24: no commitsMar 25: no commitsMar 26: no commitsMar 27: no commitsMar 28: no commitsMar 29: no commitsMar 30: no commitsMar 31: no commitsApr 1: no commitsApr 2: no commitsApr 3: no commitsApr 4: no commitsApr 5: no commitsApr 6: no commitsApr 7: no commitsApr 8: no commitsApr 9: no commitsApr 10: no commitsApr 11: no commitsApr 12: 1 commitApr 13: no commitsApr 14: no commitsApr 15: no commitsApr 16: no commitsApr 17: no commitsApr 18: no commitsApr 19: no commitsApr 20: no commitsApr 21: no commitsApr 22: no commitsApr 23: no commitsApr 24: no commitsApr 25: no commitsApr 26: no commitsApr 27: no commitsApr 28: no commitsApr 29: no commitsApr 30: no commitsMay 1: no commitsMay 2: no commitsMay 3: no commitsMay 4: no commitsMay 5: no commitsMay 6: no commitsMay 7: no commitsMay 8: no commitsMay 9: no commitsMay 10: no commitsMay 11: no commitsMay 12: no commitsMay 13: no commitsMay 14: no commitsMay 15: no commitsMay 16: no commitsMay 17: no commitsMay 18: no commitsMay 19: no commitsMay 20: no commitsMay 21: no commitsMay 22: no commitsMay 23: no commitsMay 24: no commitsMay 25: no commitsMay 26: 562 commitsMay 27: 1 commitMay 28: 1 commitMay 29: 1 commitMay 30: 1 commitMay 31: 1 commitJun 1: 1 commitJun 2: 1 commitJun 3: 1 commitJun 4: 1 commitJun 5: 1 commitJun 6: 1 commitJun 7: 1 commitJun 8: 1 commitJun 9: 1 commitJun 10: 1 commitJun 11: 1 commitJun 12: 1 commitJun 13: 1 commitJun 14: 1 commitJun 15: 1 commitJun 16: 4 commitsJun 17: 3 commitsJun 18: 40 commitsJun 19: 13 commitsJun 20: 61 commitsJun 21: 1 commitJun 22: 1 commitJun 23: 94 commitsJun 24: 42 commitsJun 25: 59 commitsJun 26: 38 commitsJun 27: 7 commitsJun 28: 2 commitsJun 29: 1 commitJun 30: 1 commitJul 1: 43 commitsJul 2: 59 commitsJul 3: 1 commitJul 4: 1 commitJul 5: 16 commitsJul 6: 30 commitsJul 7: 1 commitJul 8: 1 commitJul 9: 1 commitJul 10: 1 commitJul 11: 1 commitJul 12: 1 commitJul 13: 1 commitJul 14: 1 commitJul 15: 1 commitJul 16: 1 commitJul 17: 92 commitsJul 18: 76 commitsJul 19: 20 commitsJul 20: 3 commitsJul 21: 9 commitsJul 22: 25 commitsJul 23: 65 commitsJul 24: 2 commitsJul 25: 23 commitsJul 26: 1 commitJul 27: 1 commitJul 28: 1 commitJul 29: 1 commitJul 30: 1 commitJul 31: 5 commitsAug 1: 1 commitAug 2: 3 commitsAug 3: 1 commitAug 4: 3 commitsAug 5: 5 commitsAug 6: 5 commitsAug 7: 5 commitsAug 8: 11 commitsAug 9: 5 commitsAug 10: 5 commitsAug 11: 5 commitsAug 12: 5 commitsAug 13: 5 commitsAug 14: 5 commitsAug 15: 5 commitsAug 16: 5 commitsAug 17: 2 commitsAug 18: no commitsAug 19: no commitsAug 20: no commitsAug 21: no commitsAug 22: no commitsAug 23: no commitsAug 24: no commitsAug 25: no commitsAug 26: no commitsAug 27: no commitsAug 28: no commitsAug 29: no commitsAug 30: no commitsAug 31: no commits
Less More 1,515 commits · 89 active days · last 14d ago

Data coverage

Last 30 days

30 of 30 days have analytics rollups · last Aug 29

Each cell is a day, shaded by traffic. Empty cells were quiet or had no rollup. This tracks analytics coverage, not uptime (see Reliability above).

Recommended

We moved a production API from Node to Bun in an afternoon @jameslcowan bun, javascript
Types without the build step: why I chose JSDoc + tsc over TypeScript files @jameslcowan typescript, javascript
Stop renting your tools: the case for replacing the software you pay for with software you own @jameslcowan product-engineering, ai

Recommended

We moved a production API from Node to Bun in an afternoon @jameslcowan bun, javascript
Types without the build step: why I chose JSDoc + tsc over TypeScript files @jameslcowan typescript, javascript
Stop renting your tools: the case for replacing the software you pay for with software you own @jameslcowan product-engineering, ai

Search by title, tag, description, or the prose itself. Results appear as you type.