Harvey Tuch

Privacy

This is a personal blog. The analytics here exist to answer three questions: which paragraphs of long posts people actually read, how many visits each post gets, and at a coarse level which audiences are showing up (Hacker News, search, Mastodon, a particular newsletter, etc.). Nothing else.

Cloudflare hosts this site, and all analytics data is recorded into my own Cloudflare account. There’s no Google Analytics or ad-tech, and no analytics vendor beyond Cloudflare itself.

What is recorded

  • Pageviews. The path you visited, the referring site (the bare hostname plus its first path segment, with any query string and fragment stripped), a coarse class for that referrer (HN, Mastodon, search, social, direct, other), your country (from Cloudflare’s edge headers, never finer than that), a coarse browser family (Firefox/Chrome/Safari/…), and a coarse device class (desktop/mobile/tablet).
  • A 16-character salted hash derived from your IP, User-Agent, and a salt that rotates every UTC midnight. The hash is used to count distinct visitors per day, but not across days; the original IP is never persisted.
  • On blog post pages only: which paragraphs were on screen and for how long, while the tab was in the foreground. Recorded as anonymous (paragraph id, ms) pairs, aggregated across visitors.
  • On blog post pages only: scroll-depth milestones (25/50/75/100% reached), clicks on outgoing links (the destination URL, with query string and fragment stripped), and copy events on code blocks (which block was copied from).
  • Cloudflare Web Analytics, which Cloudflare runs at the edge on every page. It records the same shape of data (path, referrer, country, coarse browser, coarse device, visit counts) plus page load timing, via a small script Cloudflare serves from one of its own subdomains. No cookies, no cross-site tracking. Details at cloudflare.com/web-analytics.

What is not recorded

  • Your IP address (only the daily-rotating hash is stored).
  • Your precise location.
  • Your User-Agent string (only a coarse family bucket).
  • Mouse position, click coordinates, keystrokes, or any other input.
  • Form contents.
  • Anything cross-site.
  • Any persistent identifier. The per-tab session id is a random UUID that doesn’t survive the tab being closed.

Cookies

No cookies are set for visitors.

Where the data lives

In my Cloudflare account. The custom layers are in Workers Analytics Engine; the edge layer is in Web Analytics. Not shared with any third party, not sold, not used for ads.

Questions

Reach out to hello@h-tu.ch.