← Portfolio
PrivacyUpdated October 2026

Privacy

Last updated: October 1, 2026

What this site records

This personal portfolio uses first-party server logs for basic audience measurement, reliability, and security. An HTTP request can record the request time, requested URL, referring page when the browser supplies one, HTTP status, bytes transferred, IP address in the raw access or security log, and the browser user-agent string. Browser, operating-system, and broad device-category reports are inferred from that user-agent string.

Server-log analytics

GoAccess analyzes standard Nginx access logs locally on this server. The private reports anonymize visitor IP addresses to a /16 network and use the DB-IP City Lite database to derive an approximate country, region, and city. IP-based location is approximate and is used only for aggregate audience reporting.

First-party engagement analytics

This site sends small first-party events to this server when a page becomes visible, after a genuine pointer, touch, or keyboard interaction, at 25%, 50%, and 75% scroll depth, and every 15 seconds while the page remains visible. The events include the page path without query strings, a similarly shortened referrer, approximate active time, and the highest scroll threshold reached. They never include pointer coordinates, pressed keys, form contents, or text entered on the site.

This measurement uses no cookies or persistent browser storage. A random page identifier exists only in memory until that page closes. The event service converts the request IP address and browser user-agent into a short pseudonymous visitor identifier, derives approximate city-level location locally using DB-IP, and does not place the raw IP address or full user-agent in the engagement-event record. The resulting private report is used to separate demonstrably engaged visits from automated and unverified requests.

Cookieless Google Analytics

Google Analytics 4 loads automatically in an always-denied storage mode. It sends limited cookieless measurements to Google, including the page path without query strings or fragments, a similarly shortened referring URL when supplied, approximate location derived from the network request, device and browser details, screen size, scrolls, outbound-link clicks, downloads, and similar engagement events. The site never sends form contents, email addresses, user IDs, or other intentionally entered personal information to Google Analytics.

The Google Analytics measurement ID is G-TQJG7C8FXJ. Analytics storage, advertising storage, advertising user data, ad personalization, interest groups, and Google signals are always denied or disabled. The Google tag does not read or write Analytics cookies, and this integration does not store an Analytics choice or identifier in local storage. Google retains event and user-level Analytics data for two months, while aggregated reports may be retained longer. Learn more about how Google uses information from sites that use its services.

Contact form

When you use the contact form, this site processes the name, email address, and message you provide so I can receive and respond to your inquiry. The form sends the message through an authenticated Gmail relay operated by Google; the website service does not save a separate copy of the message. The message may remain in the sender and recipient mailboxes as ordinary correspondence for as long as reasonably needed to respond and maintain that correspondence.

Contact-form contents are not included in Google Analytics events and are not used for advertising. Basic request metadata may be retained in security logs, but the form service does not log the submitted name, email address, or message body.

Purpose and handling

The data is used to understand aggregate traffic, diagnose website problems, investigate abuse, and improve this portfolio. It is not sold or used to build advertising profiles or discover a visitor's identity or contact details.

Retention

Raw access and security logs are retained for up to 365 days under the server's configured log rotation. Aggregated reports that no longer identify an individual request may be retained longer for year-over-year comparison.

Contact

For privacy questions or a request concerning your data, use the contact details provided on the homepage.

Questions or requests

Contact me

↗