On the lighter side, I found a few web sites by Tom Blackwell that do some fun stuff with text overlays on images. seems like a nice little tool for those end-of-project powerpoints, or to send out the monthly “most rolled-back commits” medal…
I saw a link to this YouTube video shared on Tom Limoncelli’s blog. It’s a 1953 US Navy instructional video about an all-mechanical fire control computer. Yes, I really mean a computer that can solve continuously changing 25-variable fire control problems using only mechanical means (gears, cams, etc.). Think about it for a minute – it’s truly mind-boggling. And really gives one an amazing appreciation for the power of a simple pocket calculator, and the amazing engineering that went into solving these problems before electronic computers. I’m usually not much of a math geek, but I watched the whole 40 minute video and was in awe of both the simple ability to use three arms and a pin to multiply numbers, and the amazingly precise engineering and machining it would take to translate various rotation inputs into landing a shell on a moving ship miles away. It’s a really good watch, and will probably leave you astonished by both how far technology has come (and what we take for granted every day), and by the fact that feats of engineering like this one worked quite well.
Aside: The only revenue I get from this site is through Google AdSense, which isn’t a whole lot given the low traffic (certainly not enough to pay for the hosting). Other than that, I keep this blog to try and share my knowledge with others, and hope that someone else can find the solution to their problem here instead of doing the work that I did. So, I find analytics very helpful; I check my stats now and then, go back and update or add to the most popular posts, and try to write relevant posts if it seems like a lot of people are finding their way here for something slightly different than the actual post they landed on. Unfortunately, that last point isn’t as easy since Google switched to HTTPS Search for logged-in users on October 18th, 2011 – I can no longer use Piwik see the search keywords that got Google users to my site. Luckily, these are still available through Google Webmaster Tools (via Traffic -> Search Queries on the left menu), though it adds an additional step and removes some of my motivation to check regularly and make sure people are getting useful content. Also, perhaps most importantly, it doesn’t let me associate search query with other stats like time on page, so even if one search query was very popular, I have no way of knowing whether all those people actually read the page, or took one look at it and left.
I really like Piwki. I don’t use most of it terribly often, but it gives me a nice overview visits graph on the WordPress dashboard (via the WP-Piwik plugin), infinitely detailed information (most of which I haven’t even looked at) in the Piwki web interface, and nightly email reports of visits to the site. It also supports multiple sites, so I have it on my ancient wiki, my Redmine instance, and even ViewVC. I’d highly recommend it; it’s full-featured (beyond anything I can even comprehend, really)
I was recently looking through the stats for this blog, and came by some unfortunate, though not surprising, trends. Below is the graph of visits per day, from April 1, 2012 through today (August 26, 2012):
- It’s probably not terribly unusual for a site with as much technical content as mine (and mostly professional stuff, not just for hobbyists), my weekend traffic is usually a full 50% lower than weekday traffic. This can also be seen in the graph of visits by visitor’s local time, which is decidedly biased towards the 9am-5pm window:
I guess there’s nothing I can really do about that, and it just gives me a nice maintenance window at 4am on Sunday mornings
- Looking at the overall graph, there also appears to be quite a bit of oscillation of the average visits over time. It’s nothing terribly large, but at a guess, I’d attribute it to my sporadic posting.
- Though it’s not visible in these graphs, this site has an 80% bounce rate (the percent of visitors that viewed only one page and then left the site). I guess that’s also not terribly unusual for a site with mostly how-to information on a wide variety of topics.
- To add a little more information to some of the previous items, here is the chart of my Feedburner RSS/Atom feed, since I started using Feedburner in February. The number of subscribers is in green, and the reach (number of people who actually clicked through to a post) is in blue:
This is a clear indication of something even stronger than the “bounce rate”; the apparently high number of people who subscribe to and then unsubscribe from my feed (if these stats are accurate). To me, this is an even stronger indication that what I really need to do is post useful content on a more regular basis – I have a tendency to blog in spurts, and either start a draft and never finish it, or write a few posts and set them to “pending” status with the intent of publishing them over a few days… and then forget the last part.
As a follow-up to my CVS to SVN to Git post, I have the PHP EMS Tools repository migrated from my SVN to github. Since I’m moving the website and all development to a Redmine instance, the next step is setting up Github to work as a revision control repository in redmine. Well, it’s dead simple. I just followed the instructions for the Redmine plugin: Github hook , with the exception that I followed the redmine instructions for setting up the repository clone instead of Step #2 in the plugin instructions. All worked well, though I’ll admit I only tried it talking to redmine over plain HTTP, not HTTPS.
In a follow-up to my Some Thoughts on Choosing a New WordPress Theme post from a few days ago, I decided on the Admired theme by Brad Thomas. It’s amazingly full-featured and has a good set of options. I had to manually change a few things in the CSS (I wanted to tweak the top bar colors a bit in a way that’s not supported in the options), but overall it was a very simple transition. While it’s unfortunately very far from valid HTML or CSS, it seems quite nice.
If you happen to read this post and see anything wrong with the theme, or it doesn’t display properly for you, please leave a comment below (with browser version and OS, if you please).
I think I’m going to choose a new theme for my blog. The current theme is iNove (albeit an older version with some custom modifications), and I feel like it looks a bit messy and has gotten a bit cluttered, so it’s time to find something new. I like the 2-column layout, and have a few other things I’m looking for – specifically, aside from something with advanced features like lots of widget support and hooks, something that has good visual separation between different posts and widgets. I also really want something, if possible, with relative column widths. My current home and work desktops both have dual monitors, and the minimum resolution I have on one screen is 1920×1080. When I look at my blog in a maximized window, about half the screen width is wasted with empty space. So, ideally, I’d like a theme that’s based on relative widths, probably with a “min-width” property so it wouldn’t get compressed to an absurdly narrow width on small screens.
I use Google Analytics for visitor stats on this blog. Not because I’m trying to direct-market to my readers or become Big Brother, but for a number of simple reasons:
- It’s simple – no software for me to update, and nothing that needs to run on my server and read through giant log files every night. Google does it all for me.
- It gives a lot more information than I can get from just web server logs.
- Because of Google’s “big brother” tracking, and the vast number of sites that they track people on, I can tell things I’d have no other way of knowing, like how long someone stayed on my page.
- They tell me useful stats like which search keywords brought the most people to my site and which posts are the most popular, which I keep in mind when writing new stuff and updating older posts.
- They tell me information about client operating system and browser version, which I think tells quite a bit about my audience.
- As far as I know, they’re pretty good at filtering out anything other than an actual human visitor.
- They tell me stats that have no real use to me, but are just cook – like what countries my visitors are from, what type of Internet connection they’re on, their screen resolution, etc.
Obviously not for google, but for me, all of these stats are totally anonymous – I just get percentages or numbers of visits, it’s not like I can see all of the details per-IP address. The most important aspect to me is just the ease of use – I sign up and put a little snippet of code on my pages, and I get an amazing dashboard interface with all of this information. Nothing to install and update on my server, and (most importantly, since I’m now running everything of mine on one virtualized server) no massive program to run as a cron job that has to read all my server log files.
I’ll admit that I do run Google AdSense Ads on my blog, and I’m sure there are some people who block the ads. On one hand, that upsets me a bit; I run this blog to try and share information that I find or learn with others, and the hosting costs aren’t insignificant. If I can get paid to just show some ads, to try and help offset the cost of running the site, I think that’s good. And if other people can help support the site by just letting the ads stay on the page, why not? On the other hand, my hosting costs $50/month (granted the server also handles all of my email, and a whole bunch of other sites). I’ve been participating in Google AdSense since March 5, 2010 (two years and two weeks), and my “estimated earnings” are currently $80. The payout is in $100 increments. So, I haven’t seen a cent from it in two years, so I’ve given up being concerned with it. If you want to be nice, and find my posts interesting, click on one of the ads. Unfortunately, unless I get famous, the ads aren’t going to come close to offsetting even part of the cost of running the site.
So what’s the solution?
I did have one other idea which I think is interesting, though a bit of an overhead. I could have Apache (or, more likely, a Perl script called in the Apache configuration) generate a random string for each request, and save it in an Apache environment variable. The environment variable would then be added to a field in the server logs, and also added (via PHP or whatever else generates the pages server-side) as a custom parameter for the JS tracking code, enabling page hits to be correlated between the JS tracking and the server logs. Assuming the JS tacking backend stores its data in a sane format (and as raw data, not just aggregated), and at the cost of a serious performance penalty, a server-side statistics program like AWstats or Webalizer could be patched to lookup the unique identifier in the JS stats data store, and ignore all hits which were tracked that way.
I’m going to start by looking into self-hosted open source alternatives to Google Analytics, which I’ll post about sometime hopefully soon.
Two interesting presentations – which, unfortunately, I only heard the audio for (they came up in my podcast playlist during my commute today).
For the non-techie-geeks out there, All Your Brains Suck – Known Bugs And Exploits In Wetware: OSCON 2011 – O’Reilly Conferences, July 25 – 29, 2011, Portland, OR is an interesting talk from Paul Fenwick. Yes, it’s from a techie conference (wetware == the brain), but it’s mostly psychology-based, and covers some REALLY interesting things about how the human brain works, especially with an emphasis on how the brain is manipulated in advertising and otherwise.
For the techie-geeks among us (well, given the other link, “geeks” would be too vague), Velocity 2011: Theo Schlossnagle, “Career Development”. It’s a bit of a rant, but a good talk for us infrastructure/ops people, and developers as well, and covers some thoughts on both careers and how we should do out jobs.
While working on a particularly long documentation page in MediaWiki today, I came by a convenient little extension:
It adds a nice little “top” link next to the “edit” link in each section header. Very useful for long pages.
If you’re anything like me, you often find yourself working on multiple computers. Today I left a few tabs open in Firefox on my work laptop, and wanted to continue reading from my desktop. Normally I’d just grab the laptop, or RDP into it if it was my work desktop that had the open tabs, but at the moment my girlfriend is neck-deep in WoW on the MacBook. Having had this problem before (getting tabs back remotely, not a laptop occupied with WoW), I started thinking about a solution.
I could have closed my local firefox session, moved the sessionstore.js somewhere else, copied the one from the laptop over, re-opened firefox, … well, you get the idea.
But that sounds like a really sub-optimal solution. So I started looking around a bit. It seems that sessionstore.js is almost JSON, but as per Mozilla bug 407110, it’s not quite standards-compliant. Luckily, it seems that PHP’s JSON module is quite tolerant, so once I stripped off the leading and trailing parens from the file contents, it parsed quite nicely.
I’ve written a small
dumpFirefoxSession.php script that reads the sessionstore.js file (in cwd or a specified path), unserializes the JSON as an array, and then dumps the tabs. It dumps as either plain text or HTML (currently just elements inside the body, not a full HTML file). The HTML will include
ols for each window listing the tabs, links to the current content (sessionstore.js also holds history for each tab, but I don’t need this), and it shows which tab is currently selected.
You can grab the script from subversion at: http://svn.jasonantman.com/misc-scripts/dumpFirefoxSession.php. The current version is 3. You’ll need PHP (probably 5) with JSON support.