Cookie Policy
This site sets one cookie, and only if you submit the contact form. There is no analytics, no advertising and no tracking of any kind — which is why you are not being made to click through a consent banner.
Last updated 31 July 2026
What a cookie is
A cookie is a small text file a website asks your browser to store, so it can recognise the same browser on a later request. They are not inherently a privacy problem — the problem is what most sites use them for, which is following you between sites to build an advertising profile. This one does not do that.
The only cookie this site uses
| Name | Set when | Purpose | Expires | Type |
|---|---|---|---|---|
| PHPSESSID | Only at the moment you submit the contact form | Counts recent submissions from your browser so the form cannot be used to send floods of spam | When you close your browser | Strictly necessary |
It holds a random session identifier and nothing else — no name, no email address, no browsing history. It is set with the HttpOnly flag, so scripts running in the page cannot read it, and SameSite=Lax, so your browser will not send it to other websites. On an HTTPS connection it is also marked Secure.
Why there is no cookie banner
Under the Privacy and Electronic Communications Regulations (PECR), consent is required for cookies except those strictly necessary to deliver a service you have asked for. The session cookie above exists only to stop the contact form being abused, and it is set only when you choose to use that form — so it falls inside that exemption.
If this site ever adds analytics or anything that tracks you, that will require a proper consent banner, and this page will change first.
What this site does not use
- No analytics of any kind — no Google Analytics, no visitor counters, no heatmaps.
- No advertising or retargeting pixels.
- No embedded social media widgets. The GitHub and LinkedIn links in the footer are ordinary links — nothing loads from those companies, and nothing is sent to them, unless you click through.
- No third-party fonts or scripts. Typefaces and the animation libraries this site uses are served from this domain, so loading a page does not tell Google or anyone else that you visited.
- No fingerprinting, and no attempt to identify you across sites.
Browser storage
This site stores up to three items in your browser’s localStorage, and only if you use the toggles in the footer or put something in your basket.
| Key | Set when | Purpose | Expires |
|---|---|---|---|
| ajwc-motion | Only if you switch motion on or off yourself | Remembers your choice so the site does not reset it on every page | Until you clear your browser data |
| ajwc-theme | Only if you switch between dark and light yourself | Remembers which theme you chose | Until you clear your browser data |
| ajwc-basket | Only if you add a package or care plan to your basket | Remembers what you chose so it survives moving between pages | Until you empty it, complete an order, or clear your browser data |
The two toggle keys hold a single word each. The basket holds the names and prices of what you picked, and nothing about you. None of them is an identifier, none can be read by any other site, and the only one that ever reaches the server is the basket contents — sent once, as part of your brief, so I know what you are asking about. If you never touch the toggles and never use the basket, nothing is stored at all and the site simply follows your operating system’s reduced-motion and colour-scheme settings.
There is no sessionStorage, no IndexedDB and no other browser storage.
If you send a form or make a payment
Sending the contact or project form sets a standard PHP session cookie (PHPSESSID) for the length of your visit. It is strictly necessary — it is how the site limits how often the forms can be submitted, which is what keeps them from being used to send spam. It holds no personal information and disappears when you close your browser.
If you pay a deposit, you leave this site entirely and continue on Stripe’s own checkout pages. Stripe sets its own cookies there, under its own cookie and privacy policies, including ones it uses to detect fraud. That is outside my control and outside this policy — stripe.com/gb/privacy covers it. When the payment finishes you are sent back here, and no Stripe cookie is set on my domain.
One thing worth flagging
If you open my CV in the viewer on a phone, the PDF is displayed through Google’s document viewer, because mobile browsers handle embedded PDFs poorly. That request goes to Google and Google may set its own cookies, under its own policies, not mine.
If you would rather that did not happen, download the PDF from the CV page instead — that is served directly from this site with no third party involved.