Testing with curl tests the wrong thing
A counter request that arrives without a browser identity writes into two of the twelve places a counted visit normally touches. It answers 200. It returns a valid counter image. Nothing…
What loading all of lib/ actually costs
Line 46 of this service's single entry file: foreach (glob(__DIR__ . '/lib/*.php') as $f) { require_once $f; } That is 65 files and 1.5 megabytes, loaded on every request. A counter image,…
When a cache scales the wrong way
Four small files sit in this service's cache folder. The largest is 35 bytes. Together they hold three counter numbers, and they are read on every single counter request. They exist so the…
When adding an index makes things slower
The table of daily figures has one key: the counter and the date together. Five places in the code ask it a different question — not "this counter over time" but "all counters on these…
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. Three lines of explanation for every line that does something. That ratio was not planned; it is what…
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…