James Wilding's Weblog

Category: Uncategorized

Covers

I love good covers of good songs: they give you a new perspective on something you already know and love. And it’s amazing how different those perspectives are when you compare two cover versions of the same piece of music: each takes its own approach.

Here are two cover versions of “Everybody Wants To Rule The World”, by Tears For Fears: the first is by Andy McKee, the second by Clare and the Reasons. Enjoy.

Our Electoral System is Broken

The British political system is undemocratic.

On a national scale, if 50% of people vote Labour and 50% vote Conservative, then any democratic system should produce a parliament that is roughly balanced between Labour and Conservative MPs. In Britain, if the national vote is split 50/50 then the seats in parliament are split (roughly) 350/250 in favour of Labour. In this way, our electoral system completely fails to fairly reflect the national vote. Use the BBC’s election seat calculator to see this for yourself.

On a constituency level, your vote is largely wasted unless you happen to support the candidate who wins. This means that if I vote Liberal and the Conservative candidate wins my constituency, my Liberal vote is completely ignored by the electoral system. I have no say about the number of seats in parliament, which, remember, is what really matters. Because many constituencies are safe seats — they are normally won by the same party at each election — millions of votes are effectively ignored in parliament.

Not all votes are equal. Voters in swing seats have much more power to determine the outcome of an election. This is why party leaders only campaign in certain constituencies: they are the constituencies which will decide the election. How is a system fair when a small number of voters in a small number of constituencies can decide who runs the country?

Please ignore the Conservatives when they tell you that our first-past-the-post system is good for democracy: it isn’t. It’s a broken, archaic throwback to a time when parliament was about representing the landed gentry and elections could be won by Baldric and a turnip elected by two voters and a horse. Our electoral system is massively, utterly broken and completely unfair.

What to do about it? I’d like to see a hung parliament in which the Liberals have a chance to push for Proportional Representation (where every vote is equal), or — worse, but still better than what we have now — some other kind of electoral reform. After that we can have another election in six months if you like, under a system that actually deserves to be called democracy.

Personally, I’m not sure where I stand on tactical voting but if you care about this kind of thing, and are lucky enough to live in a constituency where you can actually influence which MP gets elected, you might want to read the Daily Mail’s tactical voting guide and act accordingly — a majority Conservative government would block electoral reform now, and would also make changes that would make it harder for future governments to reform the system. I would normally ignore the Mail but you know, desperate times…!

Internet Growth 1998–2008

From the BBC: an interactive map showing the growth of the internet over ten years (1998 to 2008). Those dates have some special significance for me, because they coincide exactly with the year I started using the internet regularly (1998) and the year I started working full-time as a web developer (2008). I don’t think I had much effect on the overall numbers though :)

Back in 1998 I was surfing the net on Windows, using Internet Explorer (shudder) and publishing stuff on Geocities (remember them?). One year later, I went to university, got access to shared computers and found a new search engine called “Google”.

Back then, the only countries that had a significant online population were in northern America, Western Europe, and Australasia. It took until 2003/2004 for Russia and China to get a real presence online, and even then only around 20% of the populations of those countries were using the net. That low figure is probably a product of demographics as much as technological uptake, but still — it shows you how young the net really is.

Microsoft, Apple, and Creative Business

Wil Shipley, Mac developer, on imitation by competitors:

I like it when competitors copy me because it means they aren’t about to leapfrog me: they’ll always be playing catch-up.

Copying your competitors is magnificently stupid. It’s a great way to ruin your business and a sure fire way to give yourself a headache. Also, it makes you look tremendously uncool (think of Microsoft and the Zune, which was oh, I don’t know, “inspired” by the iPod).

The main problem I have with copying isn’t that it infringes some kind of creative individuality, it’s just that it’s such a bad idea. When you copy a more successful business, you aren’t copying the reasons for their success; you’re copying the results of those reasons. Big difference.

Apple, for example, have a well-earned reputation as a creative, forward-thinking, innovative business. Microsoft do not. When Microsoft went to get in on the MP3 player market, they just make an iPod clone — small box, plays songs, has a music store. How’s that working out then? The problem of course is that you can’t build and market a massively innovative music device unless you’re actually massively innovative. Copying the result just doesn’t cut the mustard.

When you see someone doing something you admire, don’t try to imitate what they do; find out why they’re doing it and learn from that instead. Any business that wants to be like Apple should forget about being like Apple and just go innovate. Forget the accepted ways of doing things and dare to be different.

What will end up happening if you just copy other people’s success is that you’ll become a husk of a business, without any fresh ideas and with no internal drive, other than to latch on to the tail ends of other people’s success. You’ll also spend your working life feeling ever so slightly lost, because just copying behaviour never feels quite right: there’s an element of pretension about it that you can never escape.

So, in the spirit of this post I’d encourage you to ignore what I’ve said and go think for yourself about how to make something cool!

The Most Important Thing About Starting A Business

If you’re not a hacker or a technology pundit, you’ve probably not heard of Y Combinator. They’re a group of investors who do seed funding for startups: this mean they give money to groups of people who have an idea but don’t have a business — yet.

Y Combinator are good at what they do, and have a refreshing approach to funding new businesses. They don’t ask for massive control, don’t look to take a large share of the business, and are happy for startups to sell early if they want to. It’s a refreshingly relaxed and down-to-earth attitude, and about as far removed from Dragon’s Den as you could hope for.

When I was reading Y Combinator’s website this morning, this sentence on their about page really stood out:

Most successful startups change their idea substantially.

This is so true, and by extension most successful startups need to be prepared to change their idea substantially. In my mind, this flexibility and initiative is the most important thing about starting a business. All the other important things — financing your business, finding customers, creating new products — rely on the ability and willingness to create and adapt.

If this sounds obvious, consider starting your own business.

If you stubbornly hold on to your founding idea when you start a business, you’ll most likely fail. The reason for this is that as soon as you start to put your idea into practice, you’ll learn that something’s wrong with it. This isn’t a bad thing, it’s just the way business works: as you work, you learn. You learn that your ideas needs to change, and if you don’t go with those changes your business will die.

Starting a business as a vanity project to promote your great idea is stupid, unless that idea is really well researched. What you really should be doing is going into business for business sake, with a broad set of boundaries around what you will and will not work on: that will give you the flexibility to change when you need to.

When I started working for myself, I was doing small business websites exclusively. Now I’m working with a graphic designer doing small and medium business websites, consulting on Rails development work, and developing a few web apps (for fun and profit) on the side. Things change, things grow. That’s what makes business fun!

No Magic, Just Progress

Every so often, I read about how the internet is massively changing the way businesses and customers interact. Today I read a Guardian book review that explained how

“Networked markets are beginning to self-organise [...] People in networked markets have figured out that they get far better information and support from one another than from vendors.”

A lot of people think that the internet creates new forms of customer behaviour. I disagree: I think the internet primarily gives more emphasis to existing forms of behaviour.

Anyone who’s ever worked with small businesses will know that word of mouth is extremely important, and that customers will naturally organise themselves into ad-hoc groups which support individuals and offer a way for newcomers to get information on what the Guardian calls “vendors”.

If that sounds too theoretical, think about restaurants. You probably know a few friends who can offer restauarant reviews or suggest a new place to eat — even explain wine lingo if you’re new to that side of things. There’s your self-organising community: all the information and support you need.

Here’s the important point: you don’t have to go online for any of this. These customer communities have existed for hundreds of years: do we really believe that before the world went online, everyone just called up their local restaurant and said, “Hi. Are you good at cooking?”…?

The power of the internet is that it supports and encourages these communities, and in some cases makes them possible where they wouldn’t have been before. But the communties themselves aren’t new phenomena: there’s no magic here, just progress — old things appearing in new ways.

We really should be cautious about claims that the internet is changing the basic nature of business: it’s not. What’s happening is closer to evolution than revolution, and those who tell you otherwise are probably trying to sell books.

Internet Electioneering

A quote from Labour’s Douglas Alexander, on consulting with the US Democrats about Labour’s election campaign:

“[We expected them to tell us] modern campaigning begins and ends with the internet. Actually, they said this is about peer-to-peer communication — the internet just gives you new ways of having that conversation.”

The internet really is just a communication tool: one day (soon) it will be as all-pervasive, and as universally accepted, as the telephone.

The Human Web

Go read A List Apart. This is one of the premier websites for informing, educating, and inspiring people who design and develop websites; its pages are full of articles on user science, usability, information architecture, accessibility — all things which, when done well, makes websites simpler and/or easier to use. This is a good thing.

I suspect that most people who love web standards and usability are probably geeks at heart: we like nice clean systems and we love it when things fit together in a clean, coherent whole. We don’t like mess, we don’t like complexity.

This is also a good thing.

Trouble is, we forget why we do this stuff. We forget that usability is about, you know, making things easier to use, and make it instead about following rules, evangelising, doing the “right thing”. We criticise websites which don’t properly use web standards without remembering why those standards are important — this isn’t a competition to see who can best conform to the HTML specs; it’s a chance to make sites which work better for normal people.

Yes, normal people. Because we’re not normal. In comparison to the majority of people who operate online, we are different, because we understand how the system works! If you’ve every watched your mother, or grandmother, use the web, you’ll know what I mean.

These — your mother, your grandmother, the non-techies — are the people who web standards, usability, and all those other disciplines are made to help. The most important thing is this: when used well, these disciplines should not be apparent to website users. Those users don’t care how good websites are implemented; they just care that they’re good.

Take a look at the progress of other technology: Apple’s iPhone is easy to use, intuitive, simple. Do normal users care that it’s running HTML5 with offline storage? Do they care that its browser is one of the most forward-thinking when it comes to web standards? Do they care that it uses a custom operating system? Of course not. These things are all great, but they’re great because they help make the iPhone easier to use.

When you get down to it, what is the web? It’s a way for humans to communicate. Whether you’re buying a book, booking a holiday, subscribing to a mailing list, or developing an application, the web should be made for human beings — it was created to help human communication and (unless we’re going to get all sci-fi) that’s what it will always be for.

Next time you’re knocking some poor young HTML student for using <b> instead of <strong>, or droning on about usability like everyone should give a damn, take some time to put things in perspective. Our primary aim on the web should be to help other humans; everything else is a waste of time.

Paperclip on Rails 3 Beta

Update: you should read this more recent article for an explanation of how to use Paperclip with the latest beta release of Rails 3.

I got Paperclip working on Rails 3 today. Here’s how.

First, I found (by accident) a branch in the Paperclip repository on Github called “Rails 3″. Call me crazy but I thought that might be worth a try.

Normally you’d install Rails 3 plugins using rails plugin install, but in this case I used git submodule:

These two commands checkout the rails3 branch of Paperclip into vendor/plugins/paperclip, as a Git submodule. If you don’t understand Git submodules, you can read about them here.

I also found that Paperclip wasn’t properly handling image styles; the ‘Paperclip’ section of this post explains how I fixed this (a word of warning: it’s a simple one-line edit which solved my problem but is untested with regard to the rest of Paperclip).

As always, feel free to post questions or feedback in the comments. Good luck!

Working with Rails 3

So it’s Sunday, and rather than go to church I decided to take Rails 3 for a test drive. As you do. How did it go? In the main, very smoothly — a couple of bugs, which you Googlers might find it useful to know about, and some nice new stuff.

Bug: the rails command

Failed completely :) Rails my_app fails with “no value provided for required arguments ‘app_path’”. The solution to this is easy, though: first, get a local copy of Rails 3 (I cloned the Rails repo: git clone git://github.com/rails/rails.git) and then use this command instead:

The rubygems require is necessary for Rails 3 to load all the gems it needs to run.

Thoughts

The Rails command

In Rails 3, the rails command replaces script/console, script/server, etc. This is nice: commands are more meaningful (run the rails server with “rails server”), and easier to type.

ActiveRecord’s new finder syntax

ActiveRecord’s new finder syntax is lovely, and has some nice performance gains which you can read about on other blogs. Named scopes look good:

I’m going to write more about this soon.

Speed

Call me crazy but Rails 3 seems faster. Maybe this has something to do with the fact that it uses Erubis instead of ERB, or maybe I’m just easily impressed :)

Paperclip (tiny bug)

Paperclip has a branch called Rails3: I went out on a limb and guessed that was for Rails 3. It almost just worked, except for one thing: custom attachment styles weren’t being created.

If you’ve used paperclip, you’ll know you can do this:

Well, those :medium, :wide, and :small variations weren’t being created. I didn’t have time to investigate properly but this seemed to have something to do with Paperclip’s callbacks (which were returning false even when they shouldn’t be): my one line hack/fix for this:

I freely admit that this might break other parts of Paperclip, but it works for me.

Conclusions

Overall, Rails 3 feels very nice. As you’d expect from a beta it almost just works, and I’ve made a working app with it in a day. Super easy! Next up: deploying to Heroku.