Privacy

What this website does and does not collect when you visit. The short answer: as little as possible.

The short version

This is a static personal website. It has no accounts, no login, no comment system, and no forms that submit data to me, and there is no server-side database of my own recording who you are or what you read. I never sell or rent information about visitors. Beyond the ordinary request data any web host receives (see Hosting below), the only data that leaves your browser goes to two service providers — Google Analytics and Sentry — and only for the limited purposes described below.

Hosting

The site is served as static files by GitHub Pages. Like any web host, GitHub may process technical request data such as IP addresses in server logs to deliver the site and protect against abuse, under GitHub's privacy statement. I do not have access to those raw logs.

Analytics

I use Google Analytics to understand aggregate traffic — which pages are read and roughly where visitors come from — so I can decide what to write and improve. Analytics cookies are scoped with SameSite=Lax; Secure flags, and I use these reports only in aggregate, without trying to identify individual visitors. Analytics does not run when the site is viewed on localhost. If you prefer not to be measured, browser tracking protection or an ad/analytics blocker will stop it, and the site works fully without it.

Error and usage monitoring

To keep the site fast and working, client-side errors and routine page-load performance metrics are reported to Sentry on every visit. An error report carries the diagnostic text needed to fix it — the error message and stack trace, plus any browser console warnings. The request, navigation, and replay URLs that Sentry stores as structured fields have their query strings removed first, though a URL written inside the diagnostic text itself is left as it appears.

Sentry also records a few anonymous usage counts so I can see how the site is used: clicks to external links (kept only as the destination site's hostname, such as github.com), when the search is opened or run, light/dark theme toggles, and interactions with the research image carousel. These are low-cardinality counts and fixed labels — never free-form text — with no profile tying them back to you.

When an error occurs, Sentry also uploads a short recording of the moments just before and after it (never a standalone recording of ordinary browsing). That recording is where the strict masking applies: all on-page text and form input is masked before it leaves your browser, so the replay never shows what you typed or read.

What isn't masked: the diagnostic text inside error and console messages, and the words you type into the site search (capped in length, sent so I can spot topics people look for but don't find). None of this is used to identify you, but please don't put anything sensitive into the search box, and don't assume error text is redacted. The goal throughout is to see how the site performs and when it breaks, not who you are.

Your choices and contact

I keep no first-party profile of you, so there is little for me personally to export or delete. The data that does leave your browser is held by my host (GitHub) and by Google and Sentry, as described above; you can limit or block the analytics and monitoring with your browser's privacy settings or an analytics blocker, and each provider offers its own privacy controls. If you have any question about this notice, please get in touch. This notice may be updated as the site changes; the current version always lives at this page.