A photograph of green and snow-capped mountains.

I greet the new year with the release of Bise, my holiday-break project, and the latest entry in my “wind series” of highly specific little digital tools (and for which I should probably make a dedicated web page one of these days). Feed Bise a bunch of recent webserver logs, and it prints out a tiny little report of how many discrete humans have visted the website regularly over the last couple of weeks. As such, it’s a readership reporting tool — designed with blogs in mind — rather than an overall web-traffic analyzer.

Bise (named for either of two cold, dry winds of France or Switzerland) can print its output as JSON data, or as a human-readable table that looks like this:

December 14 - December 28
Source                 Uniques Regulars
All visitors              2489      260
RSS feed                   305      147
JSON feed                   10        1
Front page                1664       47
From Twitter                31        6

In this table, “Uniques” means the number of unique and probably-human visitors according to that row’s criteria, and “Regulars” means the number of probably-human regular readers, those who have visited your blog more than once over the two-week span Bise considers. (It counts a repeat visit as “regular” if at least a day has elapsed between that visitor’s earliest appearance and their most recent one.)

Each row represents a user-configurable report, built on simple pattern-matching tests against the last two weeks’ worth of server-log entries. The five reports seen here ship with Bise as its default example configuration.

From the above example output, then, we could consider our regular readership as around 200 people, adding the number of apparent RSS subscribers (147) and repeat front-page visitors (47).

Or we could more generously call it 260 people, looking simply at the number of visitors who’ve dropped by any part of the site more than once. This latter number would include, for example, someone who found a particular article via a search engine one day, and then returned to the same article a few days later for reference, but didn’t explore the rest of the blog. Bise leaves the question of whether to consider such visitors “regular readers” up to the user’s own judgment.

Bise wants to run regularly, perhaps in a weekly crontask that sends you its output in email. By limiting its considered data to only the last couple of weeks, Bise gives you a rolling summary of your blog’s active readership, rather than a strictly cumulative view.

So: why did I write yet another server-log analysis tool, when so many free, stable, and feature-rich ones already exist? I have, after all, analyzed Fogknife’s visitor logs using AWStats since 2015. It does a fine job, especially for getting a big-picture view of a blog’s overall traffic!

But, as a numbers-obsessed blog author, I found AWStats too general a tool to give me certain very precise statistics I sought. These included not just raw hit-counts on my RSS feed, but a notion of how many unique humans this represented — including those subscribed indirectly, through aggregation services.

Furthermore, I know that much of my readership doesn’t use RSS, instead manually visiting the front page from time to time, checking whether I’ve added anything new. Others primarily swing by via the tweets (and their automated Facebook-echoes) I post for every new article. I wanted to track these non-RSS-using readers too, and to further differentiate between one-time visitors and those who keep coming back to check for new content. This latter number especially I found intriguing and elusive, but none of these desires could be met by AWStats or any other general-purpose server-log analyzer.

Were I a wizard with Google Analytics, I suppose it likely that I could build something to meet my needs there, albeit using some tortured pile of script-driven redirections in order to somehow allow it to work with the blog’s RSS feed as well as its HTML-based content. But that sounds like a very horrible idea, so I made Bise instead.

I have only started using it myself, of course! I look forward to seeing how it wants to be used, and then doing my best to develop and tune it in the indicated directions, as time allows. Do follow its progress on GitHub, if so driven, and of course I welcome any comments or questions about Bise via email or Twitter.

Share or reply to this post on Twitter!

Next post: I had a filling replaced and worried about it

Previous post: What I shipped in 2017