Privacy Policy

This page describes how joeheyming.github.io (personal projects and demos by Joe Heyming) handles information. Last updated: August 9, 2026.

Summary

This site is mostly static pages in your browser. Some tools use Google Analytics to understand aggregate traffic. The navigation drawer may use an anonymous presence heartbeat (Google Form + Sheet) to show how many other people are on each app. Posts lets visitors pin notes to a shared board via another Google Form + Sheet. Features that use Sign in with Google talk directly to Google’s services from your device; this site does not operate a backend that stores your Google account or spreadsheet content on my servers.

Analytics

Many pages load Google Analytics 4 (measurement ID G-Q62Q3E20Y0 ) via Google Tag Manager scripts. Analytics may collect information such as pages viewed, approximate location (derived from IP), device and browser characteristics, and events triggered by the site (for example error or interaction events where implemented). Analytics is disabled on localhost in the bundled helper script.

How Google uses data from sites that use their services is described in Google’s documentation, including Google’s Privacy Policy and How Google uses information from sites or apps that use our services .

Sign in with Google (e.g. Todo / Sheets tools)

If you use a feature that connects to Google Drive or Google Sheets, Google shows you a consent screen and issues an access token in the browser. Tokens and identifiers needed to resume a session (such as spreadsheet file IDs) may be stored in your browser’s local storage on your device only. API requests are made from your browser to Google; I do not receive or store your passwords, and I do not run a server-side database of your tasks or files for those flows.

Local storage and cookies

Individual demos may save preferences or progress in local storage (or similar browser APIs) so settings persist between visits. Analytics uses cookies or similar storage as described by Google. You can clear site data in your browser settings at any time.

Active presence (nav drawer)

Standalone app pages may send an anonymous presence heartbeat so the site navigation drawer can show how many other people are currently on each app. A random id is stored in your browser’s local storage (not your name or email). About once a minute while the tab is visible, the page submits that id and the current app path to a Google Form ; a linked Google Sheet (publicly readable) holds one row per id with the last-seen time. Closing the tab stops heartbeats; stale rows expire after a few minutes. Heartbeats are disabled on localhost and other local/dev hosts (same rule as Analytics). This is separate from Google Analytics.

Posts (shared corkboard)

The Posts page (and other apps that call into it) lets you pin a note to a shared board. When you publish, the browser submits your note to a Google Form linked to a Google Sheet that is publicly readable so the board can load without a backend. You may include:

Anyone who can open the board can see published notes and attachments. Drafts and board preferences may stay in your browser’s local storage until you publish or clear site data. Before a pin is sent, the page may run client-side checks (for example toxicity or NSFW image screening) to block some content in the UI; those checks are not a guarantee. Automated maintenance on the linked Sheet may move or remove rows (spam, removals, or policy filters). Do not post secrets or personal data you would not want on a public board.

Other sites and links

This site may link to third-party sites. Their privacy practices are governed by their own policies.

Children

These pages are not directed at children under 13, and I do not knowingly collect personal information from children for targeted purposes.

Changes

I may update this policy occasionally. The “Last updated” date at the top will change when it is revised.

Contact

For privacy questions about this site, you can reach out via GitHub (@joeheyming).