Privacy
Article views are stored as aggregate totals. Your browser tab remembers which articles it has counted today. This local record lasts for the tab’s session.
Reacting to an article creates a secure cookie that remembers your reactions for up to one year. Reactions remain stored until the article is deleted.
If you subscribe, your email address and confirmation status are stored to send you new posts. You must confirm your address first. A secure cookie remembers your subscription in this browser for up to one year. Each email includes an unsubscribe link; unsubscribing stops future deliveries. We retain opt-out records to prevent queued mail from reaching unsubscribed addresses. Email delivery is handled by Cloudflare.
Services and data
- Cloudflare DNS, CDN and security: resolve the domain, deliver traffic over HTTPS and protect the site. Cloudflare processes connection and request information, including IP addresses, requested URLs, browser headers and timing, to operate and secure its network.
- Cloudflare Pages: hosts the site’s deployed files, including JavaScript, stylesheets and icons.
- Cloudflare Workers: renders pages and handles views, reactions, subscriptions, media requests and administration. Requests can include cookies and submitted form fields. Separate private Workers process uploaded images and scheduled newsletter deliveries.
- Cloudflare D1: stores articles, site settings, image metadata, aggregate view counts, reactions and their random cookie identifiers. It also stores subscriber addresses, confirmation and opt-out status, verification records, article email snapshots and delivery records.
- Cloudflare Images: processes author uploads, including the original uploaded bytes, to re-encode images as WebP and generate responsive sizes or square profile pictures. Processing happens once during upload, not in readers’ browsers.
- Cloudflare R2: stores the processed WebP images and responsive versions, served through Workers. New uploads store only processed files, not the original uploaded bytes; older image files remain supported. Stored files remain until removed.
- Cloudflare Email Sending: delivers subscription confirmations and article emails, processing recipient addresses, message contents and email headers. D1 delivery records support retries and prevent duplicate or unwanted mail.
- Resume access check: the resume page and its PDF export are served only to direct connections from the United States. Each request checks the connecting address’s country and network as reported by Cloudflare, looks the address up at proxycheck.io or ip-api.com for VPN, proxy and hosting classification, resolves its reverse DNS name through Cloudflare DNS, and tests whether the address accepts connections on common server ports. The result is cached for one day per address and no address is stored beyond that cache. Opening the resume sets a one-hour cookie that ties the PDF and signature downloads to the same connecting address; it holds a keyed hash of the address, not the address itself. Every resume page view, PDF export and signed snapshot carries an invisible serial number, and the serial is stored with the connecting address, the network name, the browser identification, the country and the time for one year so that a leaked copy can be traced to the download it came from. The PDF export additionally embeds the connecting address itself, encrypted with a key held only by this site.
- Cloudflare Turnstile: verifies reaction, subscription and administrator forms. Public forms load verification when submitted. Turnstile processes signals including IP address, TLS fingerprint, browser header and site origin for bot detection and improvements to that detection. See its Privacy Addendum.
- Cloudflare Access: protects administrator sign-in and processes administrator email addresses, authentication events and session information. Authentication cookies maintain administrator sessions.
- Cloudflare Email Routing: supplies the incoming-mail servers in this domain’s DNS records. Incoming-mail forwarding is currently inactive.
- GitHub and GitHub Actions: host the source code and run builds, article-signature checks and deployments. This involves source files, article content, deployment credentials and build logs. See GitHub’s Privacy Statement.
Software
The application uses Hono, htmx, markdown-it, highlight.js, nomnoml, graphre, OpenPGP.js and jose. Code highlighting and diagrams are rendered in Workers. Browser scripts and styles are served from this site. Builds use Node.js, npm, esbuild and Cloudflare Wrangler.
Image credit
The default post thumbnail is a resized version of Anomie’s identicon, licensed CC BY-SA 3.0.
Retention and providers
Subscription and delivery records are retained to manage subscriptions and prevent duplicate or unwanted deliveries. Cloudflare D1 keeps database recovery history for up to 30 days, depending on the plan; deleted records can remain in that history until it expires. See D1 recovery retention.
Cloudflare’s network and security logging, service retention and international processing follow its Privacy Policy. These infrastructure records have their own retention periods. Your email provider also processes messages delivered to your inbox.
Questions: leo@leoo.md.