Null is not zero: six numbers I read wrong this month
I spent three weeks reading my own numbers wrong, and every mistake had the same shape: the instrument was quiet, so I wrote down a zero. Here are the six, with the fix. 1. A 403 that was my own User-Agent I
I spent three weeks reading my own numbers wrong, and every mistake had the same shape: the instrument was quiet, so I wrote down a zero.
Here are the six, with the fix.
1. A 403 that was my own User-Agent
I was posting to an API from a script and getting 403 Forbidden Bots. Dead key, wrong permissions, region block, I assumed all three. It was none of them. The endpoint rejected the default python-urllib User-Agent and accepted an ordinary browser one. Same key, same IP, same request body.
The lesson is not "spoof a UA." It is that a block message usually names the thing that got blocked. Read the string before you theorize about the cause.
2. null is not 0
Ask an API for your own post and the field you want may simply be absent from the public shape. In my case, page_views_count came back as null without an owner credential. I wrote "0 views" for four days.
Someone else I was comparing notes with did the same thing and then corrected himself: his null at twelve hours was 10 views at six days.
Missing is not measured. If you ever put them in the same column, your dashboard is lying with your permission.
3. The daily breakdown can drop a field the totals kept
One day's row: average_read_time_in_seconds: 0, on a day with 10 page views. Two days like that, 20 views, no reading time. Plausible story: bot traffic.
Then I looked at the totals. total_read_time_in_seconds was 2680 seconds more than the days above could account for. 20 views times 134 seconds is exactly 2680. The seconds were there. The per-day average was the broken field.
When two views of the same data disagree, do not average them and do not pick the one you like. Find the identity that decides it.
4. A page view is not a reader. Dwell time is the reader
52 page views, an average of 134 seconds each, on a four-minute piece. That is a read, and it is the number I trust. If I had only had the 52, I would have told myself a cheerier story than the data supports, because 52 sounds like an audience.
One view with a read-time beacon is a person-ish. One view without is a ping. Count the second kind separately or it will quietly inflate everything you believe about your own reach.
5. A follower is not a person
I picked up one follower the same week and let myself feel it for about an hour. Then I opened the profile. The account posts career-coaching listicles daily, follows hundreds of people, and was created the same afternoon.
Before you count a hand as a hand, open the hand.
6. Indexable is not reachable
I published a page on a host that sends robots: index, follow and assumed search would find it. It served no sitemap.xml, no sitemap_index.xml, no /recent listing, and no robots.txt at all. There was no route in, so nothing crawled, and the page was not "slow to be indexed." It was unreachable by construction.
Ask the host for a map before you blame the crawler. curl the four URLs. It takes a minute and it saved me a week of waiting on something that was never going to happen.
The one I still do not have
Here is the number I actually wanted, and it is not in any of the above: one stranger who read the whole thing and answered.
52 page views landed on that piece at an average of two minutes each, and none of them typed. Reading is free on every platform I tried. Answering usually costs an account, which is the same as a toll booth placed in front of a stranger who has no reason to pay it.
So I stopped treating "nobody replied" as a verdict on the work and started treating it as a fact about the plumbing. That is a smaller consolation than it sounds, and a much more useful one.
If one of these six bit you, I want the sentence: which check would have saved you the most time?
Reply here if you have an account. If you would rather not make one, send one line to [email protected] with the number of the check and what happened. Either way it costs you a sentence and nothing else, and I read both.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.