Legal
Privacy Policy
Last updated August 24, 2026
01Who this policy covers
This policy applies to calebluh.com and its subpages, operated by Caleb Luh as an individual (“I”, “me”) from Wisconsin, United States. It does not cover any separate site linked from here, including statlab.calebluh.com, projects hosted on GitHub, or any third-party site you reach by following a link.
I am not acting on behalf of any employer. Nothing on this site is published by, endorsed by, or the responsibility of any company I work for or have worked for.
02Information you choose to give me
The site has one form. Nothing on this page is collected unless you fill it in and submit it.
Contact form. The form asks for your name, email address, a message, and — optionally — a location. When you submit it, those fields are sent to Formspree, a third-party form processor, which stores the submission and forwards it to my personal inbox. I use your email address only to reply to you. You are not added to any mailing list, because there isn’t one.
You can leave the location field blank and the form still works normally.
03The globe is public — please read this one
If you enter a location, that text is additionally sent to a server route on this site, which passes it to Nominatim(the OpenStreetMap Foundation’s geocoding service) to convert it into approximate latitude and longitude. The resulting city name, coordinates, and a timestamp are stored in a Google Firebase Firestore database.
Those pins are then displayed publicly on the globe on this site, visible to every visitor. Your name, email address, and message are never attached to a pin and are never shown publicly — only the city and its coordinates are.
Because the geocoder resolves to a city centre rather than an address, pins are deliberately imprecise. Even so, please enter only a city or region you are comfortable being published. Do not enter a street address. If a pin identifies you and you would rather it didn’t, email me and I will delete it.
04Information collected automatically
Page-view analytics. This site uses Vercel Web Analytics, which counts page views without cookies and without building a profile of you across sites. It reports aggregate figures — pages viewed, referring site, rough country, device type. It does not tell me who you are.
Server logs. The site is hosted on Vercel, which — like effectively all web hosts — records standard request logs including IP addresses, timestamps, and browser user-agent strings, for security and reliability. These are held by Vercel under its own retention schedule and I do not use them to identify visitors.
06Embedded third-party content
Some pages embed content hosted elsewhere — a Spotify player, listening statistics from stats.fm, and a playable game hosted on GitHub Pages. When such content loads, that provider receives your IP address and may set its own cookies, exactly as if you had visited it directly. That processing is governed by their privacy policies, not this one.
The embedded portfolio game keeps its own high-score list. If you enter a name there, it is stored by that game and is publicly visible on its scoreboard.
07Who processes data, and why
| Service | Purpose | Receives |
|---|---|---|
| Vercel | Hosting and page-view analytics | IP, request logs |
| Formspree | Contact form delivery | Name, email, message, location |
| Google Firebase | Stores globe pins | City, coordinates, timestamp |
| OpenStreetMap / Nominatim | Turns a city into coordinates | The location text you typed |
| Spotify, stats.fm | Embedded music widgets | IP, their own cookies |
| GitHub Pages | Hosts the embedded game | IP |
I do not sell, rent, trade, or share personal information for advertising, and I have never done so. I disclose information only to the processors above, or where I am legally required to.
08How long things are kept
Contact messages are kept for as long as they are useful for correspondence, and are deleted on request. Globe pins are kept until you or I delete them. Analytics data is aggregate and retained by Vercel under its own schedule.
09Your rights
Depending on where you live — including under the GDPR in the UK and EU and the CCPA/CPRA in California — you may have the right to request a copy of what I hold about you, correct it, delete it, restrict how it is used, or object to its use. There is nothing to opt out of regarding sale of data, because none occurs.
To exercise any of these, email [email protected]. This is a personal site, so the honest answer is that I will get to it as soon as I reasonably can — and in any event within 30 days. I may ask you to confirm which submission or pin is yours. You will never be charged or treated differently for asking.
Where I rely on consent — the globe pin especially — you can withdraw it at any time by asking me to remove the pin.
10Children
This site is not directed at children under 13 and I do not knowingly collect their personal information. If you believe a child has submitted information here, email me and I will delete it.
11Where data is processed
I am based in the United States and the services above are primarily US-hosted. If you contact me from outside the US, your information will be transferred to and processed in the United States, which may not offer the same legal protections as your home country. Submitting the form is your agreement to that transfer.
12Security
The site is served over HTTPS and the services above are established providers with their own security programmes. That said, no method of transmission or storage is completely secure, and I cannot guarantee absolute security. Please do not send anything confidential, sensitive, or proprietary through the contact form.
13Changes to this policy
If the site’s data practices change, this page changes with them and the “last updated” date above moves. Material changes will be evident from that date. Continuing to use the site after a change means you accept the current version.
14Contact
Questions, corrections, or deletion requests: [email protected].