Blogging Each Day For A Month – The Results Show Redux

After I spent January posting an article each day I summed up my experiences in a post about how this had affected the traffic. As I noted back then the traffic to my blog is driven by search engines as I usually provide solutions to issues I encounter during my daily work. This means that the increase in traffic will be a bit delayed until the posts gets indexed and ranked accordingly.

I’ve added data points for february in the table below, originally seen in the previous post.

October January February
Visits 3 643 4 352 (+19%) 5 678 (+56%)
Pageviews 4 529 5 636 (+24%) 7 327 (+62%)

The average time spent on the site has adjusted itself to 58 seconds (one second down from the time in January) – which is within the bias. Nothing new here.

Obvious conclusion: more content that solves problems people have gives an increase in traffic. Not sure if anyone didn’t see that one coming.

Blogging Each Day For A Month – The Results Show

January has come to an end and in total I managed to blog each day except the 2nd and the 31st. I do not have a plan of continuing on that level, so I’ll probably slide back to the regular frequency of updates (1-2 a month) in the coming weeks. This spur of updates occured as I suddenly had inspiration to do five or six posts in an evening, actually making it possible to keep up the tempo for a couple of weeks. After a while things got a lot harder and I started to slide away from my regular posting time of 11am, but I got the posts out! Now it’s time to look at the stats for the previous month!

My blog is mainly search driven – I cover lots of one-off problems, attempting to include and descriptive error messages and other hints that people may use when they’re using Google to try to find an answer to a task they’re having problems with. This means that people don’t stay around to read other articles than the one they came here for, and so far this has meant that writing a new article usually has given me a small increment in traffic.

As December had the holidays – and searches for the terms I cover drop in large number during those days – I’m using the numbers from October 2009 for comparison. November is a day short.

October January
Visits 3 643 4 352 (+19%)
Pageviews 4 529 5 636 (+24%)

Time spent on the site increased with 7 seconds to 59 seconds – still nothing to write home about.

Missed Schedule for Posts in WordPress

As I started queuing the posts for the previous run of “Ready for 2010“-articles, I came across a problem with my WordPress installation. The scheduled articles didn’t show up when they were scheduled, and the only thing shown in the WordPress administration interface were a message about “Missed Schedule”. No shit, sherlock.

The reason behind the message is that the wp-cron.php file didn’t run as it should. WordPress usually tries to run this every now and then by inserting a reference to the file through the web site. Apparently this behavior was borked on my blog. I have a perfectly working cron implementation on my server, so instead of relying on WordPress to do some kind of magic to insert a reference to the file and kick off the processing with a web request, I added a reference to wp-cron.php in my usual crontab.

I have no idea how often wp-cron really should be run, but decided that a five minute resolution was enough for my use. The crontab entry is included here:

*/5 * * * * cd <directory of blog> && php wp-cron.php

This runs the cron script from the proper directory, and seems to work fine.

2009 In Retrospect

As we’re now getting a bit more touchy and feely about 2010, I’ll give a short update on the blog itself like I did at the last day of 2008 (and even the title has been recycled! again! The big trend of 2009!).

Key statistics (last year’s number in paranthesis) (2008 was the first year I blogged, so 2009 is the first complete year of data):

  • Posts: 54 (161)
  • Comments: 81 (89)
  • Hits: 399084 (242781)
  • Unique: 30561 (18882) (since the start)
  • Spam caught by akismet: 11828 (2596)
  • Most spammed month: May, 4123 (November)
  • Technorati Authority: 99 (13)
  • Technorati Rank: 78.215 (454.532)
  • Reactions registered on Technorati: no idea how to find this now! (51)
  • Incoming links (to e-mats.org) on Google: 187 (29)
  • Incoming links (to e-mats.org) on Google Blogsearch: 30 (23)

Most popular referers:

  1. google.com
  2. search.live.com
  3. google.co.uk
  4. google.de
  5. google.co.in
  6. google.ca
  7. google.fr
  8. en.blog.wordpress.com
  9. google.nl
  10. google.com.au
  11. google.pl
  12. google.se

At least two weren’t Google!

Stats I didn’t include last year, but decided to include this year (the numbers for last year in paranthesis as above) from Google Analytics:

  • Page Views: 49.403 (21.997) (+125%)
  • Visits: 38.537 (16.082) (+139%)
  • Search Engine Referers: 85.4% (70.8%) (+20%)

Most popular search terms (and some of the most popular posts):

  1. solrj
  2. svn external
  3. ssh_exchange_identification: connection timed out
  4. solrj example
  5. tortoise svn externals

And then we look ahead for the same post in 2011. Keep your pants on!

Content License Change

Just a friendly reminder that I’ve now changed the license of the content on this blog to a much more friendly Creative Commons-based license, namely the “Do what the hell you want, but remember to link back and tell people who wrote it”. I’ve been using the license for the majority of my photos during the last years, so it’s a natural evolution. Have fun!

Communicating The Right Thing Through Code

While trying to fix a larger bug in a module I never had touched before, I came across the following code. While technically correct (it does what it’s supposed to do, and there is no way to currently get it to do something wrong (.. an update on just that), does have a serious flaw:

$result = get_entry($id);
if(is_bool($result))
{
    die('bailing out');
}

Hopefully you can see the error in what the code communicates; namely that the return type from the function is used to what should be considered an error.

While this works as the only way the function can return a boolean value is if it returns false, the person reading the code at a later date will wonder what the code is supposed to do – he or she might not have any knowledge about how the method works. Maybe the method just sets up some resource, a global variable (.. no, don’t do that. DON’T.), etc, but the code does not communicate what we really expect.

As PHP is dynamically typed, checking for type before comparing is perfectly OK, as long as you’re not counting “no returned elements” as an error. The following code more clearly communicates it intent (=== in PHP is comparison based on both type and content, which means that both the type of the variable and the content of it have to match. 0 === “0” will be considered false.):

$result = get_entry($id);
if($result === false)
{
    die('bailing out');
}

Or if you’re interested in getting to know if the element returned is actually considered false (such as an empty array, an empty string, etc), just drop one of the equal signs:

$result = get_entry($id);
if($result == false)
{
    die('bailing out');
}

I’m also not fond of using die() as a method for stopping a faulty request, as that should be properly logged and dealt with in the best manner possible, but I’ll leave that for a later post.

Plans for 2009 – and seven things

Magne has posted his plans for 2009, and as this networking on teh intarwebs thing work, he’s asking his readers to do the same. It’s obviously easy to convince me to do stuff, so here goes nothing:

  • Listen to more amazing music: I’ve finally gotten a proper stereo in our new house, so I’m finding myself just listening to great music.
  • Attempt to keep up on my reading habits, which has dwindled a bit in the last months of 2008.
  • I’m doing Grenserittet and Birkebeinerrittet in August this year too, so I’m getting ready for starting the bicycle season as soon as the snow disappears. Even got new warm underwear for christmas, so I’m starting early! (If I just could remember to get my running shoes too, I might actually start even earlier!)
  • Keep the updates of my blog running, but attempt to start a more focused blog together with Christer.
  • Take more responsibility.
  • Launch at least one new product concept and idea.
  • Launch three new areas of content on pwned.no.
  • Finish more games. I’m really good a starting games, but not really good at finishing them.

Hopefully that covers the issues Magne were talking about, so then we head over to our next networking-on-teh-intarwebs-issue; Christer’s challenge to post seven things people might not know about me (this challenge has been all over Planet PHP for a few days, so people are probably getting bored..):

  1. I studied 2 years at NTNU before heading down south and finishing my master’s degree at HIOF within the field of digital maps and cartography. While in Trondheim I worked as a Oracle (Orakeltjenesten), so I’m a Orakel Emeritus.
  2. I played football for two years when I was 10 and 12. I even managed to be the score the most goals for our team, the 2nd team of Rolvsøy IF, in a season: 3.
  3. I drove a Volvo 340 for a year; a very nice car, but with five (.. or six) people in the car, even the smallest hill became a climb to save our lives..
  4. I’ve competed at The Gathering in different demoscene categories every year since 1997, except 2008. I’ve been less active in the norwegian demoscene during the last year, but that might change in the future.
  5. I’ve played Counter-Strike and Battlefield 2 semiserious for MESED, a clan that I’ve been running since 2000. I were also participating at CPL Copenhagen in 2003 (The Cyberathlete Professional League), where we actually managed to score a draw (and two losses).
  6. I’ve participated in several amateur movie projects (no, not those kind of movies), both as an “actor” and as an editor. I still occasionally edit gaming movies for MESED.
  7. I started up and ran (together with Geir) Vision of Chaos, a computer party in Norway. We managed to get 250-300 visitors in 1999, 2001 and 2002 before I called it quit. We always said we were going to do another party in 2010, as we could call that VoC MMX. The problem is that people no longer know what MMX is.. I also ran a web site for parties and organizing, called partai.org. Maybe we’ll rescue that some day too.

Like that, and that’s the way it is.

2008 In Retrospect

Christer inspired me to have a look back on what happened on the blog during 2008, so I’ve compiled a list of numbers, posts and other (non-)interesting information around the blog. The most significant thing is probably that I actually started the blog in April 2008, so I’ve just finished the first year of actually blogging.

Key stats:

  • Posts: 161
  • Comments: 89
  • Hits: 242781
  • Unique: 18882
  • Spam caught by akismet: 2596
  • Most spammed month: November
  • Technorati Authority: 13
  • Technorati Rank: 454.532
  • Reactions registered on Technorati: 51
  • Incoming links (to e-mats.org) on Google: 29
  • Incoming links (to e-mats.org) on Google Blogsearch: 23

Most popular referers:

  • google.com
  • search.live.com
  • en.blog.wordpress.com
  • google.de
  • google.co.uk
  • google.co.in
  • dagbladet.no
  • google.ca
  • google.fr
  • blog.vincentlaforet.com
  • cogo.wordpress.com
  • google.nl

Most popular posts:

I have no idea why the 77 things post is the most popular. The Tortoise post solves an issue people are using google to find information about, the same with the ssh_exchange_identification post. The WordPress post got some publicity in the comments on the WordPress blog (and a trackback or two from my other WordPress posts). An intersting thing is the popularity of Swoooosh, which I made as an exercise in programming with Flex. There seems to be a great demand for another free, completly open source flash file uploader, so I’d suggest that someone took the project further — and hooked up a Google Code page for it.

The year ended with the release of Keepitclose – a PHP based caching solution, which was my first project on Google Code. It was a fun project to do, and we’re putting it into production during the first weeks of 2009.

Other important things of 2008 was the library that Christer and I’ve been developing. We’ve not released any products based on it yet, but it has been a great exercise in developing and structuring code for reuse. Hopefully we’ll see a release during 2009.

I’ve spent the last week updating the pwned.no code base, and I’m planning an updated release during this week.

The biggest thing of 2008 on a personal note was that we finally got ourselves a brand new house, which we moved into at the 30th of november.

I’ll leave you with wishing you a Happy New Year (if you’re following the same calendar as I am), and hopefully the new year will bring loads of interesting projects and great news!

    Oh Updates Where Art Thou?

    It’s been a while since I’ve updated the blog, but fear not, it’s all for a good reason. During the last three weeks I and Anette has purchased — and moved into — a new house! We’ve settled down in Hvaler, Norway, almost all the way out into the ocean. I’ll try to get some pictures up on my flickr page later, but most of my time is consumed by boring tasks like running cables for UTP through the walls, trying to get the telephony cable where it’s supposed to be etc. The house is brand new and we’re doing the second floor ourselves (or, at least my dad is. I’m not very useful in this situation).

    What I’ve learnt so far:

    • Be sure to unwind and straighten out the UTP / ethernet cable from the roll before trying to get it through a 16mm plastic pipe. It gets very difficult to pull it after a while otherwise…
    • Getting a UTP cable through a 40mm pipe is harder than it looks when you have corners with edges. Yes. The pipe is very, very wide. The cable is not. It favours getting stuck at the beginning of the last corner long inside the wall.
    • 802d pwns.
    • My 32 inch TV is way too small. Good thing a new one is on the way.
    • The people that invented zones for DVD movies should be ashamed. My movie collection is a mixture of zone 1 and zone 2 movies, and while attempting to play them on my Xbox 360 today, I had to go through three movies before I found one with the correct zone. People who download movies from questionable sources NEVER have these issues. Why do the products I have paid for have FAR MORE problems and frustrations than those which people get for free?! THIS IS NOT ACCEPTABLE.

    But other than that, we’re finding ourselves more and more familiar with this place, and it’s great to finally have our own house. Induction rocks.