The short version
No public cookies. No third-party analytics, fonts, CDNs or advertising pixels. Visits are counted on this server with a daily, salted hash. The raw IP address is never written to the analytics database.
- Pageviews are first-party and anonymous.
- Comments and tickets are stored only because you choose to send them.
- The admin console sets one HttpOnly session cookie after sign-in; public pages never receive it.
- There is no cross-site profile to sell, share or lose.
What a visit records
| Field | Example | Why |
|---|---|---|
| Page path | /publications | Which pages are read |
| Referrer host | news.ycombinator.com | Where readers arrive from |
| UTM source / medium / campaign | hn · social · launch | Which links work |
| Device class | desktop, tablet, mobile | Layout and performance checks |
| Browser and OS family | Chrome · macOS | Compatibility checks |
| Country code | BE, only if the hosting layer supplies it | Rough reach; no lookup is made |
| Timestamp | 2026-11-05T16:00:00Z | Daily totals |
| Daily visitor hash | a94a8fe5… | Count unique visits without identifying anyone |
The initial page load is recorded by the server. Later internal navigation is recorded by a small, same-origin request that sends only the new path and any UTM parameters. Referrer hosts are stored without the rest of the URL or its query string.
The visitor hash is a one-way SHA-256 hash of the IP address, the browser string, the UTC date and a secret salt. It changes every day. It is used only to avoid counting the same browser repeatedly on the same page on the same day. The raw IP address is not stored.
Automated crawlers and preview bots are ignored. If your browser sends Global Privacy Control or Do Not Track, the visit is not recorded.
What is not recorded
- No public cookies, advertising IDs or cross-site identifiers.
- No raw IP addresses, full referrer URLs or full query strings.
- No precise location, persistent device fingerprint or cross-site profile.
- No email address unless you send a comment or ticket.
- No data sold, shared with advertisers or sent to an analytics provider.
Why
To understand which pages are useful, where readers come from, and what is broken or slow. That is the whole purpose. There are no ads, no remarketing and no profiling.
How long
| Data | Retention |
|---|---|
| Raw visit rows | 90 days, then deleted automatically |
| Daily totals and daily visitor hashes | 12 months |
| Approved comments | Until removed or withdrawn |
| Comments pending moderation | Until approved, rejected or deleted |
| Tickets, messages and attachments | Until the ticket is deleted or you ask for removal |
| Admin session tokens | 12 hours; deleted on logout or expiry |
| Admin sign-in attempt hashes | 24 hours |
Comments and tickets
A comment asks for your name, affiliation, an optional email and the comment itself. Approved comments show your name, affiliation and comment; your email is never published. Comments are moderated and can be removed on request. A ticket asks for the details needed to reply and stores the message and any attachment privately on this server.
Ticket attachments are stored under random names outside the public web root. They are not listed, linked or served publicly.
The admin console
Only the site owner uses the console. Sign-in attempts are counted with the same daily salted hash; raw IP addresses are not stored. Passwords are stored as Argon2id hashes, session tokens as SHA-256 hashes, and two-factor secrets only in the admin database. Failed attempts are counted for 15 minutes; attempt records are deleted after 24 hours.
Hosting
The site runs on a self-hosted Node server with a SQLite database. The application does not write IP addresses to its own logs or database. If the hosting infrastructure keeps its own network access logs, those are controlled by the hosting provider and are not used by this site's analytics.
Your choices
You can enable Global Privacy Control or Do Not Track in your browser; the visit will not be counted. You can ask me to remove a comment or a ticket by emailing macardosa@outlook.com. Because the analytics hash is one-way and rotates daily, it cannot be used to find and delete an individual visit.
Contact
Questions about this page, or a request to remove something: macardosa@outlook.com.
Last updated 6 November 2026.