Legal
Privacy Policy
Last updated: 22 October 2026
The short version. This is a personal site with no account, no contact form, no
comments and no analytics, so nothing about you is collected by the site's owner. It does publish an
app-ads.txt file, which is the public record that authorises Google AdSense to sell
advertising on the domain — so the advertising rules below apply whenever ad tags are served. Nothing
on these pages sets a cookie of its own.
What we collect
Nothing is collected by the site's owner, because there is no endpoint here that receives anything. There is no account, no contact form, no comment system, no analytics script and no tag manager on this site.
Two third parties are involved in serving the page:
- jsDelivr serves the font stylesheets — the
@fontsourcebuilds of Space Grotesk, IBM Plex Sans and IBM Plex Mono — so that host sees your IP address and the ordinary headers of a request, exactly as any host that serves a file does. - Cloudflare sits in front of the domain and handles the request, including the script it uses to obscure email addresses on the page.
If advertising is served here, Google AdSense becomes a further party: it may set cookies
and use device identifiers to serve, measure and limit advertising, and you can change that in Google's own
advertising settings. The site's app-ads.txt file names the AdSense publisher ID; it is a public
file, and this policy does not repeat it.
What stays on your device
Nothing is stored. The page writes to no database, because it has none. The only thing written to your
browser is a single sessionStorage entry recording whether you chose the light or the dark theme;
it is cleared when the tab closes, and it is never transmitted.
The resume is a static PDF served from this site. The contact link opens your own mail client, so the message leaves this site only when you send it.
What leaves your device
Your browser, to the font CDN and to Cloudflare. If advertising is served, to Google AdSense. Not to the site's owner: there is nothing here that receives anything.
Advertising
This domain is authorised for Google AdSense advertising. The site publishes an app-ads.txt
file naming Google as an authorised seller for the domain, which is how an ad network is told it may bid for
impressions here.
Where advertising is served, Google AdSense may set cookies and use device identifiers to serve, measure and limit advertising. Google's advertising policies and privacy policy govern what it does with that data, and Google's ad settings are where you opt out of personalised advertising and control the ads you are shown.
At the time this policy was written these pages load no advertising script, so no advertising cookie is set by them. If that changes, this section is the one that will govern it, and the date above moves in the same change.
Cookies
The pages set no cookies. There is no consent banner because there is nothing to consent to — no
advertising, analytics or embedded third-party service is running on the page. The one thing kept in your
browser is the theme choice in sessionStorage, which is not a cookie and is cleared when the tab
closes.
Third-party services
jsDelivr serves the typeface stylesheets, Cloudflare proxies the domain and may run its own scripts on the page, and GitHub Pages is where the static files are served from. None of them is given an account, a profile or a cookie by this site.
Hosting
The site is a set of static files on GitHub Pages, served from the root of this repository. The custom domain points at that, and Cloudflare proxies it. The site's owner can read the access logs the host and the proxy keep, in the ordinary way any web host does.
The pages under this policy
This policy covers the portfolio at the root of this site. Any other project published under a sub-path of the same domain ships its own privacy page, and that is the one that governs it — a different app has different permissions and different data flows, and one shared policy would be a false statement about all of them.
What the browser is asked for
The page asks for no camera, microphone, location, notification, clipboard or file access, and it calls no browser API that would let it read anything else on your device.
| What is asked for | Why |
|---|---|
None |
No browser permission is requested. The page reads nothing from your device beyond the request it is serving, and the theme choice is kept locally in session storage. |
If a future version changes what the page requests, this policy is updated in the same change, with the reason recorded.
Data you export
There is nothing to export. There is no account, no stored record of you, and no export format, because no data about you is kept.
Deleting your data
Close the tab. Nothing is stored, no account exists, and no server-side copy of anything you did is kept, so there is nothing to request and nobody to ask.
Children
This is a personal portfolio. It is not directed at children, and because it collects nothing from anyone, there is no data about a child for it to hold.
Your rights
Because nothing is collected and there is no account, there is nothing for the site's owner to disclose, correct or erase on your behalf. Where advertising is served, the advertising data Google holds is under Google's own controls, and you can change and delete it there.
Changes to this policy
If the site ever starts using advertising, analytics or a cookie, this page changes in the same change, and the date above moves.
Contact
Questions can go to the contact link on the site, or by email to [email protected].