ENOSUCHBLOG

Programming, philosophy, pedaling.


You don't need analytics on your blog

Dec 24, 2023     Tags: meta    


From the “blog post ideas for when I have no other ideas” file.

I think most (personal) blogs don’t need browser analytics1. This blog has no browser analytics; I removed them in back in 2017, with no discernible negative impact on my writing motivation, my ability to observe general traffic trends, or the blog’s popularity.

TL;DR for everything below: the only way I track traffic trends on this blog is with vbnla, a hacky little Ruby script that summarizes my Nginx access log. This has been more than sufficient for assessing post popularity and the general geographic and link origins for incoming traffic.

Writing motivation

I originally added analytics (in the form of Google Analytics) to the blog back in 2015, when I was still in college.

My original rationale for adding analytics was to to motivate myself to write posts on a regular schedule: I thought that having a pretty dashboard of (ever increasing, in my natural human desire for attention) visitors would induce additional writing from me each month.

The opposite turned out to be true: like most blogs, nobody really read mine, and my visibility into that demotivated me and made me feel like giving up on a blog entirely. Looking back, this was inevitable, but having analytics made it worse: instead of only evaluating my own desire to write and improve my blogging, I became (resentfully) dependent on a small trickle of statistics.

Ultimately, there’s nothing wrong with deriving some motivation from the attention that can come with blogging (I still do, as noted below). But it’s also the cheapest source of motivation, in the senses of being the easiest to track, least reliable, and ultimately not tied to a passion for the act of writing itself. Turning off the blog’s browser analytics helped me decrease the overall degree of motivation that came from external attention, while increasing the overall degree I felt from both habituation (writing at least one post a month) and post quality (feeling that I was actually expressing something interesting to myself, rather than attempting to track readers’ interests).

Analytics when I need them

Like any good blog post title, there is a kernel of untruth in this one: analytics are useful for debugging purposes2, tracking overall server load3 and, more selfishly, understanding when a particular post is getting attention.

I still have a little bit of insight into my blog’s traffic for these things, via my web server’s access log. Each log entry looks like this:

1
XXX.YYY.AAA.BBB - - [24/Dec/2023:00:10:20 -0500] "GET /2022/12/28/ReDoS-vulnerabilities-and-misaligned-incentives HTTP/1.1" 200 9654 "https://some-referrer.example.com" "Mozilla/5.0"

(where XXX.YYY.AAA.BBB is the IP address that made the request).

This tells me just about everything I could need to know for the aforementioned debugging, load monitoring, and selfish attention purposes. It also gives me essentially the same things that I would want from browser analytics, without injecting third-party code into each reader’s browser:

In practice, I rarely use this information. But it does exist, and it gives me everything that I would have wanted from browser analytics.

When I do use it, I use it through vbnla, a hacky little script that collates the log’s recorded requests by top IPs, user agents, requests, and referrers. Here’s what that looks like on today’s log, as of this morning (with IPs redacted):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Total requests: 5195
Unique IPs: 878
Top 10 IPs:
	REDACTED -> 160
	REDACTED -> 92
	REDACTED -> 72
	REDACTED -> 71
	REDACTED -> 63
	REDACTED -> 52
	REDACTED -> 51
	REDACTED -> 50
	REDACTED -> 49
	REDACTED -> 47

Top 10 UAs:
	NetNewsWire (RSS Reader; https://netnewswire.com/) -> 241
	FreshRSS/1.22.1 (Linux; https://freshrss.org) -> 223
	- -> 200
	Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 -> 159
	Yarr/1.0 -> 121
	Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0 -> 96
	Readdigbot (+https://www.readdig.com) -> 92
	FreshRSS/1.21.0 (Linux; https://freshrss.org) -> 90
	Bifolia:0.1.1 -> 71
	Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0 -> 70

Top 10 requests:
	/.env -> 22
	/2020/12/24/A-few-HiDPI-tricks-for-Linux -> 20
	/2020/09/19/LLVMs-getelementptr-by-example -> 12
	/2021/07/19/LLVM-internals-part-1-bitcode-format -> 11
	/2022/02/02/Setting-up-Navidrome-with-Nginx-as-a-reverse-proxy -> 8
	/2023/10/18/Some-concerns-with-OpenPubKey -> 8
	/login.php?s=Admin/login -> 8
	/2023/09/22/GitHub-Actions-could-be-so-much-better -> 8
	/2020/11/30/How-many-registers-does-an-x86-64-cpu-have -> 7
	/2020/12/16/Static-calls-in-Linux-5-10 -> 6

Top 10 referrers:
	- -> 4522
	https://blog.yossarian.net/feed.xml -> 443
	https://blog.yossarian.net/ -> 59
	https://www.google.com/ -> 22
	https://blog-yossarian-net.translate.goog/ -> 16
	http://blog.yossarian.net/feed.xml -> 12
	https://yandex.ru/ -> 7
	https://duckduckgo.com/ -> 6
	http://yossarian.net -> 5
	https://yossarian.net/docs/libmsr/ -> 3

  1. Better know as “client-side analytics” or similar. I didn’t know what to call these; thanks to ‘michaelsalem for pointing this out. 

  2. For example, diagnosing reader reports of IPv6 not working, HTTPS not working, rendering problems on some browsers, RSS not working, etc. 

  3. This blog has never overwhelmed the pathetically small VPS that it runs on, but it has sometimes come close. When I see that a post is getting attention, I measure the overall volume of traffic to get a sense of if/when I will ever need to upgrade to a larger VPS. 


Discussions: Reddit Mastodon Bluesky