$0F · privacy

Privacy, in plain English.

This personal portfolio uses Google Analytics 4 to understand which work readers find useful, how they arrive, and which broad regions are engaging. It is not designed to identify individual visitors or infer their employer. Optional polls, including the DHC color vote, collect only what you submit.

Last updated: October 17, 2026

What is measured

GA4 records pseudonymous usage and produces aggregate reports: page views, approximate country/region/city, device and browser type, acquisition source, and actions such as qualified article or résumé reads, portfolio links, video starts, shares, and artifact downloads. Approximate location is derived by Google from the network request; analytics reports do not reveal a visitor's raw IP address, street, campus, VPN provider, or company.

The event layer deliberately removes email addresses, phone numbers, arbitrary URL queries, and fragments before sending custom link data. Poll and vote contents are not sent to analytics. Data is not sold, and advertising signals remain denied for everyone: ad_storage, ad_user_data, and ad_personalization.

Demographics and Google Signals

Google Signals is enabled in the GA4 property. When analytics consent allows it, eligible people who are signed into Google and have Ads Personalization enabled may contribute to aggregated age range, gender, interests, and cross-device reporting. These reports cover only a subset of visitors and can be withheld when traffic is too small.

Signals does not reveal a person's name, IP address, employer, university, or VPN to this site. Advertising storage and personalization remain disabled even though aggregate behavioral reporting is enabled.

Consent by region

Consent Mode v2 defaults analytics storage to denied for the EU, EEA, UK, and Switzerland. A conservative browser-timezone check shows the first-visit choice panel in those regions; analytics storage remains denied until the visitor selects Allow analytics. Elsewhere, analytics is allowed by default, but the persistent Privacy choices control in the footer lets anyone opt out or opt back in.

The choice is stored in this browser's localStorage as ga_consent. The site remains fully usable when analytics is declined; no content or country is blocked.

Cookies and denied consent

When analytics storage is allowed, GA4 may set first-party cookies such as _ga containing random identifiers. When it is denied, GA cookies are not set; choosing Don't allow also removes this site's existing GA cookies. The Google tag may still send cookieless consent and measurement pings under Advanced Consent Mode so aggregate behavior can be modeled; those pings do not give this site a raw visitor IP or individual identity.

Your choices

Use Privacy choices in the footer at any time. You can also use Google's browser opt-out add-on, block cookies in your browser, or manage Google account data in your Google account. Visitors with applicable privacy rights may request access or deletion by email.

Optional polls and the color vote

Polls collect only what you submit. Article polls ask for your priorities, your top choice, problems you ran into, an optional platform and version, and an optional note. The DHC v12 color vote asks for up to 9 colors per fighter, your #1 pick, an optional name, and an optional custom color. No account, email address, or Discord identity is required.

What is public. Vote totals are public. In the color vote, if you enter a name, your name, your picks, your #1 pick, and the time you last saved are public alongside that fighter's results. Without a name, your vote only counts toward the totals. Written notes and custom colors are not published.

What this browser remembers. This browser keeps a random identifier and your choices so you can come back and change them. For the color vote, that includes your picks for each fighter, unsaved drafts, the name you typed, and any custom colors. Clearing browser storage removes them, and with them your ability to change or remove an earlier response here.

What the vote server keeps. Your submission is stored under a scrambled code made from the browser identifier (a keyed hash), not the identifier itself. To limit abuse, the server also keeps a short-lived scrambled code made from your network address that counts changes per hour. Raw IP addresses are not stored in the vote database. Hosting providers process network requests to deliver the service.

In the color vote, each network gets one vote per fighter. When you vote for a fighter, the server stores a scrambled code made from your network address (a keyed hash) for that fighter. It is kept with the vote data and has no automatic expiry.

Changing or removing a response. Article polls accept one editable response per browser. The color vote accepts one vote per network for each fighter, not one per browser. Neither is a verified vote per person. Only the browser that sent a response can change or remove it: use “Remove my response” on an article poll, or “Remove my vote” on the color vote. Removing a color vote also takes your name off the public list and deletes the code for the network the vote was cast from, so that network can vote for that fighter again. Removed responses can remain in the service's automatic backups for up to 35 days.

Offline review. The site owner exports votes, names, notes, and custom colors to review them offline. Exports leave out the browser and network codes. If live voting is not available, your choices stay in this browser and nothing is sent. Polls are separate from optional analytics.

Questions or a data request?

Contact plasx1987@gmail.com.