Feb 9 2010

So here’s a few useless usage statistics about this website I found using Google Analytics…

Browser Distribution

  • Firefox – 58.93%
  • Internet Explorer – 15.58%
  • Chrome – 10.33%
  • Safari – 9.64%
  • Mozilla – 2.92%

Flash Usage

  • 8.31% of visitors do not report to have Flash installed

Operating Systems

  • Windows – 55.95%
  • Linux – 29.54%
  • Mac – 8.61%
  • Android – 4.90%
  • iPhone – 0.31%
  • iPod – 0.17%
  • FreeBSD – 0.06%
  • Playstation 3 – 0.06%
  • Blackberry – 0.02%

Java Support

  • Yes – 76.80%
  • No – 23.20%

Top 10 Countries Ordered By Visits

  1. United States
  2. United Kingdom
  3. Spain
  4. Germany
  5. Canada
  6. Australia
  7. France
  8. Netherlands
  9. India
  10. Italy

Other Figures…

  • 1.23 average page views per visit
  • 59 seconds average time on site (yikes!)
  • 86.51% new visitors versus 13.49% returning visits

Dec 9 2009

When you write something that connects to a web server, what user agent do you use?

Far too often have I seen things like:

curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

In my opinion you should always use a nice descriptive user agent that explains to the server exactly what your client may be trying to achieve, or at least a unique identifier. Unless you’re trying to achieve some kind of web scraping client (which probably contravenes some terms of service agreement somewhere, so I certainly don’t advocate that!), there is no reason not to provide a useful and descriptive UA string.

A good UA string from a little-known client should provide some way of contacting you. When I say little-known, I mean something like your new web app that you’ve just made that queries Last.fm for user data. In this instance, I’d give a nice descriptive UA string with contact e-mail, e.g.:

curl_setopt($c, CURLOPT_USERAGENT, "MyLastFmClient (v0.1) myemail@address.com");

As your client becomes more used, or you already have a decent way of contacting you on your website, perhaps just put a URL:

curl_setopt($c, CURLOPT_USERAGENT, "MyLastFmClient (v1.2) www.address.com");

Of course, when you’re Google for example, everyone knows who you are, so for example the UA string “Mediapartners-Google” yields 200k-odd results, revealing that this is the AdSense content bot.

Why do I think this is important? It helps servers identify you and help you in most instances. If your client goes wrong and gets itself stuck in a loop because you forgot to increment $i for example, that server can see that MyLastFmClient for example is spamming the server with 1,000+ requests a minute. They can then see your UA string and contact you about it.

Another reason is that some servers might actually block access, or provide different content depending on the client. I know that Google serves up a completely different search results page if you’re on IE5 than in IE8 for example. Another server might block all known browsers for example from accessing a web service (e.g. with the message “this page cannot be accessed using a web browser”). I’m not saying this is good or bad practice as that is a WHOLE other kettle of fish – but I’m just saying it can happen, and that sort of thing can be pretty hard to track down.

Although this all might seem pretty trivial, it is useful, and I think any HTTP(S) client should identify itself properly using a clear and descriptive user agent string. It’s no harder to do and it just makes everyone’s lives easier!

Aug 11 2009

The news has spread quickly this morning (I first heard through @ryancarson) that Google have been working on a new revamped version of their Google Search Engine. To the untrained eye, it looks pretty much the same. However, it’s much quicker, and it’s all based on AJAX-style requests…

Looking at Firebug’s net monitoring, I thought “I wonder if Google will open up an API”? It would be quite cool to have an API to request search results from, and Google returns you a load of results in well under a second (Firebug reports the requests take around 300-400ms, which is nice!). At the moment I don’t think it’s a possibility – even me just playing around brought up Google’s human checker (a captcha) that is meant to stop automated search requests…

Makes ya think though, doesn’t it?

Jun 14 2009

One thing I ensure I do on all sites is to develop for two audiences at once. The first audience is of course the end user of the site. This user has CSS enabled, and can view all the prettyness of the site in all its original intended glory. But I also develop the site for text-based browsers, search engines and those with CSS disabled. The advantage of this is that the page is semantically correct. You have <h1> tags around the site title, <h2> around the page title and so on. Menus are in <ul> unordered lists, and so on. Semantically correct pages are instantly more SEO-effective. Working at Netbasic has shown me how important that is :) ! In addition, for the small population that use text-based browsers, it enables them to view the site without mess.

If you have a nice logo to display, and you don’t want to display a big bulky <h1> tag on your page, there’s a really easy way of doing that:

<div class="site-title">
<h1>Your Site Name</h1>
</div>

This markup is great for search engines. Search engines will see the <h1> tag and notice that “Your Site Name” is the page’s main title. Little things like this help search engines determine what your site actually contains, as opposed to the hugely ineffective method of repeating a load of words several thousand times in tiny text…

The way to make that neat semantic code look nice and pretty is with CSS, in order to hide that “Your Site Name” text but display your nice company logo instead…

div.site-title
{
background-image: url('/images/your-company-logo.png');
}
div.site-title h1
{
display: none;
}

As you can probably tell, what this CSS does is ask the browser to display your company’s logo as the background image to this div, and hide the <h1> text.

There’s another issue though – how do we make that lovely logo clickable to go to the home page? That’s easy too, and semantically.

<div class="site-title">
<h1>Your Site Name</h1>
<a href="/home/page/url"><span>Click here to go to the home page</span></a>
</div>

We modify the CSS as well to hide the text itself (in the <span>) but make the anchor (the <a>) tag into a block, which turns it into a link that covers the entire logo.

div.site-title
{
background-image: url('/images/your-company-logo.png');
}
div.site-title h1
{
display: none;
}
div.site-title a
{
display: block;
width: 300px;
height: 60px;
}
div.site-title a span
{
display: none;
}

We’ve used a similar trick here to hide the text that should only appear when CSS is turned off. As mentioned, we explicitly set the dimensions of the anchor tag to fill the dimensions of the logo image.

That’s all there is to it, and search engines will love that as opposed to just using something like this for your logo:

<a href="/home/page/path"><img src="/images/company-logo.png" title="Company logo" /></a>

The search engine or text-based user looking at your site will be able to see clearly what the page title is, and it will load really quickly as unless you’re applying the CSS styles, there will be no images to load, which makes it an all-round winner really!

I’m not saying this is the best way of doing it, but I’ve found it to be quite clever and I use it. If someone’s got some better ideas out there, why not add a comment with your idea :)

Jun 10 2009

Now that the fuss over Bing‘s launch is already over (that didn’t last long, did it?), what is the future for it? According to this article‘s source, Bing had a 11.1% share of the US Search market. Microsoft apparently haven’t hit above 10% since 2007, so that could be seen as quite a positive thing. But Google seems pretty confident this is just a blip on the radar and they are unconcerned, and that could potentially be true.

I’m no expert by any means, but it will be interesting to see how this pans out.

Whats more, if Microsoft really love the Bing name, will they start replacing all the Windows Live products after replacing Live Search? Will we start using Bing Messenger, Bing Hotmail and so on? Will they do a last minute re-brand of Windows 7 to be Windows Bing? That would be quite funny…