Where the database schema actually lives
Everything this service does is in version control. The code is, anyway. The database it runs on is 32 tables, and 15 of them have no definition anywhere in the repository — no CREATE…
Why we can't count returning visitors
There is no returning-visitor figure anywhere in Stats4U. It is not missing because nobody got round to it. It was built, run once against real data, and taken back out on 27 August 2026,…
Why our config file is mostly comments
The .htaccess on this server is 478 lines long. 98 of them are rules. 309 are comments. 309 — comment lines 98 — rules 11 lines carry a date, 12 carry a measurement 478 lines in total Three…
How we check every translation
This blog has 64 posts in eleven languages: 704 rows and about 2.2 million characters. No post is missing in any language, which is a claim that only means something if something enforces…
Why we don't email our old users
The counter table on this service holds 4,148 e-mail addresses. They belong to counters created over the past twenty years, back when a counter came with an address field and people filled…
Counters that follow dark mode
A counter is an image on somebody else's page. When that page has a dark mode, the image does not know: it was drawn on the server, long before the visitor's system preference existed as a…
Why the AI doesn't run on our server
No language model runs on the machine that serves this site. The summaries are computed on a second device that fetches jobs, does the work, and brings the sentences back. The reason is…
The threshold a summary has to clear
The summary feature has been offered 2,061 counters. It has written 262 sentences. Every one of the remaining jobs ended with the same result, and it is not an error message even though it…
What the AI may and may not write
At the top of a public statistics page here there can be two or three sentences describing what the counter did this month. They are written by a language model. The model invents nothing,…
One crawler made most of our bot traffic
Counters here keep robots in a column of their own. They are recorded, but they do not move the number on your badge unless you switch them on. That separation makes it easy to ask a…
How we detect a broken counter
A counter can break quietly. The site gets redesigned, the embed does not survive the move, and nothing announces it — the statistics simply stop, and the owner finds out months later, if…
Caching counter images in memory
Close to a fifth of the counter images this service draws no longer change anything. A mouse-tracking script from the previous generation reloads the image on every movement, and since…