Caleb Luh logo

Legal

Privacy Policy

Last updated August 24, 2026

The short version: this is a personal portfolio site. It sets no cookies, runs no advertising, and sells nothing to anyone. It collects what you type into the contact form, plus anonymous page-view counts. If you choose to add a city to the globe, that city is shown publicly on this site. You can have anything about you deleted by emailing [email protected].

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.

05Cookies and local storage

This site sets no cookies. There is no advertising, no tracking pixel, and no cross-site profiling.

It does store three small preference values in your browser’s local storage — theme, visual-theme, and accent-primary — so the site remembers your display and accessibility settings. These never leave your device and are not readable by me. Clearing your browser data removes them.

Web fonts are served from this site rather than fetched from Google at page load, so viewing the site does not, by itself, send a request to Google’s font servers.

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

ServicePurposeReceives
VercelHosting and page-view analyticsIP, request logs
FormspreeContact form deliveryName, email, message, location
Google FirebaseStores globe pinsCity, coordinates, timestamp
OpenStreetMap / NominatimTurns a city into coordinatesThe location text you typed
Spotify, stats.fmEmbedded music widgetsIP, their own cookies
GitHub PagesHosts the embedded gameIP

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].

Get My Socials.

Join my professional network, explore my GitHub, or shoot me an email to collaborate.