Contact support

We reply by e-mail, usually within two days.

Google reCAPTCHA checks this submission against abuse; data is sent to Google. The script loads only once you open this form.

← All posts

Nobody uses the new counter URL

The address we document for a counter is /c/<number>-<design>.png. On 30 August it was asked for 156 times.

The address from 2006 — /index.php?action=pic&s4uid=… — was asked for 80,499 times, by 761 different counters.

requests to the counting endpoint on 30 August, by embed generation plain, number only 55,503 full style version 10,026 with referrer and address 5,898 with mouse coordinates 4,544 with js= 2,533 with pattern= 1,995 /c/<number>-<design>.png 156 80,499 requests from 761 counters, all of them the 2006 address the address we document is 0.19 per cent of what actually arrives

Six generations, all still running

Sorting those 80,499 requests by which parameters they carry gives six distinct shapes, and every one of them is somebody's live page.

The largest, 55,503 requests, sends almost nothing: the action and the counter number. Then 10,026 carrying the full style description — colours, fonts, background mode, eleven element slots, up to 57 parameters in one address. 5,898 add the referrer and the current page, which is the generation that made entry pages and paths possible at all. 4,544 send mouse coordinates, a leftover of a 2015 feature. 2,533 carry a js flag whose meaning I had to look up, and 1,995 a pattern.

None of them is broken. The server answers all six, because the parameters were never removed — they were only stopped being generated.

Why the new address is empty

Because nothing rewrites an <img> tag that somebody pasted into a page in 2011.

That is the whole explanation, and it is worth saying plainly, because it is easy to read the 156 as a failure of the new address. It is not. The new address is shorter, cacheable and readable, and every counter created since it existed uses it. There just are not many of those compared to the installed base, and the installed base does not update itself.

What this means for the code is less comfortable. Six shapes have to keep working, including the one with 57 parameters and the one that sends where a mouse was. Every one of them is a path that can break, and five of them cannot be tested by looking at what the current wizard generates — the current wizard does not generate them.

What we changed and what we did not

Nothing. Knowing the split does not create an action: we cannot ask 761 site owners to edit their HTML, and breaking the old address to force the issue would take down working counters to tidy up a routing table.

What it does change is where care goes. A refactor that touches the counting path is not a refactor of one address; it is a refactor of six, and the one that matters least in the documentation matters most in the log.

What generalizes

The documented interface and the used interface are two different things, and only one of them is in the log. A codebase records what it was designed to do. The access log records what people actually installed, sometimes fifteen years ago, and it is the only source that can tell you which of your six code paths is the one that carries the traffic.

It costs one command to find out, and until you run it, the newest address in the documentation looks like the main one.

Advertisement