Privacy
This page covers what this site collects, why, and the kinds of services that handle it. We update it when that changes.
Last updated .
Analytics
PostHog analytics aren't switched on yet. Once they are, we'll use PostHog to count page views and case study views, as described below.
Each event includes the page address and title, the address of the page you came from (both with anything after a "?" or "#" removed), your browser's user agent string, your browser, operating system and device type, your screen and window size, and your language and time zone.
PostHog runs in cookieless mode. It sets no cookies and stores nothing in your browser's local or session storage.
To count unique visitors, PostHog's servers compute a hash of your IP address and browser user agent with a salt that changes every day, so the same visitor on two different days counts as two visitors.
Session recording and automatic click capture are off, and nothing you type into a form is sent to PostHog.
If a page hits a JavaScript error, PostHog also receives the error message and where in the code it happened.
Forms and email
The request-access form sends what you enter (your name and email, and your company and reason if you give them) to this site's server, which stores it in our Cloudflare D1 database and forwards it to our client portal. If the portal is unavailable, the site keeps trying for up to 7 days.
Along with what you enter, the site stores the time and a keyed hash of your IP address (not the address itself), and uses that hash to limit repeated submissions. Because the site forwards your request from its own server, the portal may record our server's address rather than yours. We delete the site's copy 30 days after the portal accepts or refuses it. A request we couldn't deliver within 7 days is kept until we handle it by hand.
The portal stores that along with the time, your IP address, your browser's user agent, and whether we approved the request. It also keeps a log of the request itself and records your email address in its activity log.
When you submit, the portal emails you a confirmation and emails your details to our team. These emails, and the one telling you the outcome, go through our email provider.
We use this to review your request and to email you the outcome. The portal also uses your email and IP address to limit repeated requests, and your email to spot a request or account that already exists.
If we approve your request, the portal creates an account that holds your name and email, and emails you a code to set your password.
If you email us, the message goes through Microsoft 365, our email host, and we keep your message and address so we can reply.
Contact form and error reports
We've built a new contact form and error reporting for this site, but neither is switched on yet. Until then, the request-access form works as described above and the contact page uses email only. Once they're on, this is what happens.
The form will store what you enter (your name and email, your company and message if you give them, and whether you want updates) in a Cloudflare D1 database.
It will also store the time, which form you used, your browser's user agent, a simplified copy of your email address used to avoid sending you duplicate emails, whether our emails and notifications went out, and, if you asked for updates, whether you confirmed.
It won't store your IP address. It keeps only a keyed hash of it (a one-way scrambled value) to limit repeated submissions.
Cloudflare Turnstile checks that a person is sending the form. It runs in your browser, and Cloudflare also receives your IP address to complete the check.
The form will email your submission to our team through Resend, our email delivery service, and post a short notice to our team's Slack with your name, company, email and the start of your message.
It will also send you a short acknowledgement through Resend that doesn't repeat what you wrote. Request-access submissions normally get the portal's confirmation email instead.
If you ask for updates, we'll first email you a link to confirm your address. Only after you confirm do we add your name and email to our updates list in Resend, and every update will include an unsubscribe link.
While we move off the old request process, request-access submissions will also be sent to our client portal so we can review them there, as described above.
We're still deciding how long to keep form submissions, and we'll list that here once it's set.
If our server code hits an error, we'll send an error report to Sentry, our error-tracking service, and a short summary to our team's Slack. The report includes the error and the address that was requested, with anything after a "?" removed. It doesn't include the form data you send, your IP address, or your cookies.
Hosting and fonts
Cloudflare delivers this site and processes each request to protect it from abuse. If a page fails to load, your browser may send Cloudflare a short network error report.
Cloudflare Web Analytics is also on for this site. It adds a small Cloudflare script to each page that reports page views and how long the page took to load. Cloudflare's reports group these by page, the site you came from, browser, operating system, device type and country. It sets no cookies and uses no local storage.
Our web server also logs each request (the time, the address you requested, the page you came from, your IP address and your browser's user agent) to keep the site running.
Fonts are served from paradigm.codes itself, so your browser doesn't contact Google or any other font service when a page loads.
If you switch between the light and dark themes, your choice is saved in your browser's local storage and never leaves your device.
What we don't do
We don't sell or rent your personal information, and we don't share it for advertising.
Your requests
To see, correct, or delete what we hold about you, email drew@paradigm.codes.
Paradigm Coding Solutions, LLC runs this site and is based in the United States.