andrew.hedges.name / blog

The first 48 hours of PHP Function Reference, by the numbers

8 April 2008 · Estimated reading time: 5 minutes

I thought I had it all sorted. I thought I had put together a foolproof way to track exactly how many times my PHP Function Reference widget had been downloaded and from where. I was wrong.

Two years ago, when I first released PHPfr, I wasn’t prepared for the response. Thousands of downloads of the, then, 9.6MB file later, I found myself facing a hefty bill for bandwidth overages. To mitigate the issue, I cajoled some friends into mirroring the file and set up a download script that picked one of them at random for each request.

This time, I decided to simplify things and host the file on Amazon S3. (As an aside, this process was made about a gazillion times easier by the excellent S3 Fox extension for Firefox.)

I still use the download script, so sites that linked to it would continue to work. The script also helps me track some basic information by writing records to a log file of each widget request. It tracks IP address, user agent, and referer (not just for PHPfr, but also for my other widgets).

In the past, I’ve found the log file to be a bit unreliable. When 2 or more requests come in at essentially the same time, it munges the output. Now, I happened to put together my own URL shortening service recently, sort of like SnipURL, only with fewer features and longer URLs. So, I have pointed my download script at one of my shortened URLs that points at the S3 URL.

Some of the download sites to which I posted the widget (e.g., VersionTracker and MacUpdate) expose stats for how many times a piece of software has been downloaded. Not so for Apple.com. Add this to the fact that Apple prefer to point directly to the file and not to a download script like mine, and it becomes difficult to track how many downloads are coming from that source.

So, I have some numbers below, but there are some anomalies in there. One idea I have is that the discrepancies between the download log and the database has to do with users who double-click on links (writing to the log file may take enough time that it only counts a double-click as one click, whereas the database is able to capture both clicks). PHPfr is targeted at developers, so I’d be surprised if this was a very large number, but it could account for some of the difference.

The download log shows 603 requests for PHPfr, but the database shows 860.

Apple.com links directly to the file on Amazon S3, but S3 logs show only 930 downloads. I am certain there have been far more than 70 downloads from Apple.com in the last 2 days. In fact, it’s likely based on past performance that more downloads have come from Apple than from all other sources combined.

VersionTracker shows 430 downloads, but the database shows 308 requests from that referer.

MacUpdate shows 338 downloads, but the database shows 219 requests from that referer. What’s interesting about the MacUpdate numbers to me is that this site is performing much better relative to VersionTracker than it has in the past. Are they catching up in popularity? Is VersionTracker fading?

The following stats (except the S3 byte total) all come from the database, so they’re probably pretty accurate:

The 1st download was by someone in Athens, Georgia, United States (I’d love to know who you are!).

With better access to a geolocation service, I could provide a breakdown of where the downloads are coming from, geographically. For example, I know I’m getting a lot of downloads from Italy because of a posting on a prominent Mac site there. If anyone knows a free way to geolocate IP addresses in bulk, let me know!

I’m providing these detailed numbers a) because I can, and b) to give other widget developers a baseline against which to compare their own marketing efforts. I think promoting our work is an area—perhaps because a lot of us are doing this on-the-side—where widget makers are not as effective as we could be.

I asked the Dashboard-Dev mailing list for tips for best marketing PHPfr. I received just one response, from Mike Filippone. Most of what he said, I knew from my own experience, but he did remind me about the importance of hitting the right spot in the news cycle. I tried my best to wait until Monday morning (in the States) to release the widget, but I ended up jumping the gun a little when VersionTracker noticed that I changed my widgets page on Sunday evening.

I also hit a bunch of Mac- and PHP-related blogs and forums with a quick note about the release. This is a bit spammy of me, but I did limit myself only to forums where I thought people would be truly interested. The response has been uniformly positive.

So, that’s it. The first 2 days of PHPfr 1.0 have come and gone. I’m pleased with the results. Next time, the only thing I think I’d change is to be more disciplined about when I update my website.