Feb 8 2010

It’s been live for a couple of weeks now, although I haven’t done much promotion of it, so here is word of an “official” announcement of my new portfolio site. Please take a look around and if you have any constructive criticism, feedback or advice, feel free to let me know through the usual channels…

So without further ado, I pronounce www.jamestitcumb.com officially open!

Dec 11 2009

I had an interesting argument earlier today. One of our websites is being redesigned at the moment, and the page layout has the logo and company name at the top, and below the menu is a subtitle. I noticed that two things which should be the same weren’t, and in doing so noticed that the company name was not in an <h1> tag, but just an <a href=”..”>…

Normally I would do something like this:

<img src="logo.gif" alt="Company Logo" />
<h1><a href="/home">Company Name</a></h1>
<ul>
  <li>About This</li>
  <li>Portfolio</li>
  <li>Get In Touch</li>
</ul>
<h2>We are an awesome company!</h2>
<h3>About This Company</h3>
<p>Content...</p>

Showing here that “Company Name” is the overall most important thing on the page. However, one of the developers here has structured it slightly differently:

<img src="logo.gif" alt="Company Logo" />
<a href="/home">Company Name</a>
<ul>
  <li>About This</li>
  <li>Portfolio</li>
  <li>Get In Touch</li>
</ul>
<h1>We are an awesome company!</h1>
<h2>About This Company</h2>
<p>Content...</p>

If I view the page without CSS, the company logo becomes unimportant and lost, but the “We are an awesome company!” tag line becomes the most important thing on the page. I’ve not come across this different way of thinking before, and I’m just wondering what other people think – what should the <h1> be?

It could just boil down to choice – whether you see the overall site name (e.g. “Company Name”) as the most important thing or something else… Maybe you design your pages in completely different way?

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!

Dec 8 2009

Last night I read Linode‘s announcement that they have opened a new data centre in London, and jumped at the opportunity. I’ve been using Linode since January this year, and their VPS hosting has been absolutely trouble-free. Not only that, they have probably the best administration interface I have ever seen. It’s easy to use, clearly labelled and very well laid out.

In addition they have given me probably the best customer service satisfaction of any company I have ever used. Their ticket response time for me has been consistently under 4 minutes, which is hugely impressive. I’m not the only one who is praising them, they’ve received good praise all over Twitter, with response times of 4-6 minutes.

I highly recommend using Linode if you’re thinking of getting a VPS – and if you do decide to sign up, please use my referral link! :-)

Or my code: 939c7865b8818f015533efae7b06cdb06f9b59be

And as a side note, as my IP has changed, it will take another 24 hours or so for the DNS to propogate probably, so hold fast until then everyone!

Nov 25 2009

This won’t have been the first time I’ve written about degrees… But I recently noticed a job posting for a server-side developer at Headscape, and in just the third sentence it already got my back up:

We are looking for a graduate who is passionate about the web

This sort of thing in job postings really annoy me. The notion that a degree makes a person better than someone with 3+ years of experience to me is a very narrow-minded way of thinking. Many employers use this sort of thing as a “first line of defence” tactic – to eliminate applicants that are clearly not suited to the job. However, there are many great developers out there with no degree, but many years of experience.

I asked an employee of Headscape about this, and he summarised that he expects they would consider those without degrees. Perhaps because I don’t have a degree it touches a raw nerve with me, because I’ve been very lucky to get where I am.

I got on the “software development ladder” through a good opportunity, because I had zero “years experience” and no degree, and from an employers perspective, a pretty risky option. Because I was given that chance, I now have over 6 years of professional development experience. Others in my 2003 situation might not be so lucky, and because employers require things like degrees, it makes those starter developers chances of getting even a junior job even harder.

It seems an odd concept to me that to get on that ladder, you must spend 4 years at university, wasting money and time, learning what you already know… In this industry* I would disagree that a degree is required, so why do employers still require that candidates have degrees? To me, all a degree does is prove that you can think analytically, but to even learn a programming language properly, you have to think analytically and logically anyway, so surely if you can prove you know the language, you therefore also prove that you can think analytically…

I’d like to see what other people think about this, maybe I’m a minority on this view? :)

* I specify in this industry because certain other professions, such as medical, I would say that a degree is required.