December 2011
1 post
Why You Won't Build The Next Basecamp & Why It...
When I started work as a web developer, back in 2005, Basecamp was the big new thing — web apps in general were the big new thing. Ambitious developers wanted to “build the next Basecamp”, and that’s a phrase I still hear today, six years after Basecamp became popular. Building the next Basecamp is a pointless aim for any startup, and here’s why. First, the...
Dec 8th
November 2011
2 posts
Case-Insensitive Searches With PostgreSQL On Rails
Most Rails developers will have used one or both of MySQL and SQLite for development work. In both of these flavours of SQL, the “like” operator performs case-insensitive searches; this example from the MySQL documentation is a good illustration of how this work: The default character set and collation are latin1 and latin1_swedish_ci, so nonbinary string comparisons are case...
Nov 9th
Hyper 0.4.2 Released
Version 0.4.2 of Hyper, my framework for small HTML websites, fixes a bug that stopped new sites from having a public folder. Grab the code from Github or install via Rubygems: gem install hyper If you’re coming to Hyper for the first time and want to see what it can do, try the edge of space map. Image by phunk on Flickr
Nov 9th
October 2011
3 posts
It's Not About The Settings
I remember the first time I used Windows properly: there were lots of settings. Pages and pages of settings. Entire magazines made a profit from explaining how people could, and should (and should not) use the settings to do, well, anything. Want to read your email only on Tuesdays in March? There’s a setting for that. There is, I think, something called the poverty of choice: when you can...
Oct 27th
Legacy
When I woke up on the morning of October 6th, I visited Apple blog Daring Fireball and saw a deep black background in place of the usual grey. That can’t be good, I thought: someone has died. Then I saw the headlines. When someone in Steve Jobs’ position dies, two things happen: first, the person’s friends and family suffer; second, the person’s achievements are...
Oct 13th
Pocket Whois for iPhone
Last week I launched Pocket Whois, a whois app for iPhone and iPod Touch; it’s available on the App Store for just $1.99 (scroll down to find out how to get the app for free).  As a web developer, I use whois tools almost every day to check DNS settings, to find out whether a domain is available to register, or to see whether a registration has been processed. One of the things I’ve...
Oct 2nd
August 2011
5 posts
Working On Elance
For about a year now, I’ve been running my business through elance.com. Elance is a web-based agency which connects freelancers with employers: most people there are hired on a project basis; Elance takes a percentage of project fees. Think of it as eBay for freelancers. I first read about Elance in The Four Hour Work Week, and decided to give it a try as a place to hire people to work for...
Aug 31st
“This blogpost includes forward-looking statements within the meaning of Section...”
– Google is buying Motorola, and I love how they use the small print of that announcement to say “predictions about the future might not come true”. Lawyers; don’t you just love em.
Aug 15th
Aug 15th
Hyper 0.4.1
I’ve released version 0.4.1 of Hyper, my Ruby framework for small HTML websites. This release fixes a bug that stopped Hyper from serving status assets (images, javascripts, stylesheets, etc). Install with rubygems: $ gem install hyper I’d love to hear feedback: check my “Hire Me” page for my email address (and if you’re wondering about the photo, it’s a...
Aug 5th
Apple Wants You For Your Wallet, Google Wants You...
I’ve read a lot — a lot — of Apple vs Google posts over the past few years, since Android was released. So many, really, that I’ve stopped caring who has the bigger market share and who makes more money. Both companies, both platforms (iOS and Android), seem to be doing pretty well.  But let’s not confuse the issue: Apple and Google want different things. Apple want to sell their...
Aug 3rd
July 2011
2 posts
A Font For People With Dyslexia →
Check out the demo video, which explains the theory behind the font’s design. My brother and some of my best friends are dyslexic, so this naturally caught my eye.
Jul 26th
Hyper: A Framework For Ruby Websites
I could have called this gem Yawf: Yet Another Website Framework. Do we really need one? I think we — or at least I — do, so I built it. Hyper is a micro-framework that supports small, static HTML sites with some Ruby magic thrown in. Its focus is on building and launching a site fast: there’s zero configuration, no route definitions, and definitely no databases. Why Build...
Jul 22nd
June 2011
8 posts
The Edge Of Space Map →
Small site I build using the Google Maps API and Hyper, my own framework for small static websites on Ruby. It’s pretty self-explanatory: a map shows you which parts of the world are further away from you than space! (Hint: space is closer than you think). Check out the site here.
Jun 3rd
Jun 2nd
2 tags
Namespacing Core Extensions In Ruby Gems
If you’ve spent any time developing your own Ruby gems or libraries, you’ve probably added some custom methods to Ruby’s core classes. This post is about the best place to keep these methods. A Contrived Example With Parrots Here’s an example of how I might extend a core class, and then use the extended class in my code. Imagine I’m building a gem called “parrot” which takes a string and repeats...
Jun 2nd
2 notes
2 tags
The Hitch
The BBC’s Tim Weber on Microsoft’s acquisition of Skype: The hitch: Microsoft boss Steve Ballmer will have to work hard to integrate Skype, to ensure the voice/video-over-the-internet company is not strangled by his firm’s notorious bureaucracy. I remember when Skype was bought by eBay: I thought “there goes a great service”, but I’m still using Skype today — so I’m willing to give Microsoft...
Jun 2nd
3 tags
Twitter’s Tightrope
Twitter’s strength is that it’s cool. Twitter’s problem is that it’s cool. Although my tweets connect me to the whole world, when I use Twitter I’msocialising. This implies privacy: Twitter as a whole might be just a social network, but my Twitter is a network I choose, a network I build: my network. My Twitter is something personal. Socialising is cool. Everyone loves it. Any place, person,...
Jun 2nd
3 notes
“Xoom, of course, will be able to play Flash relatively soon. The iPad 2 will...”
– Preston Gralla on why the Motorola Xoom is “a clear winner” over the iPad 2. Flash soon: is that a promise, or a threat?
Jun 2nd
The iPad 2: Closed Loops & Cool Engineering
Yesterday the iPad 2 was announced. Maybe you’ve heard? One of the many things that struck me as I watched the announcement of the iPad 2 was the fact that the iPad is now thinner than an iPhone 4. In fact, when I look at the iPad 2 side on it reminds me of an iPod Touch, which is just thick enough to avoid melting into thin air — and no thicker. So: a faster processor, good battery life,...
Jun 2nd
1 tag
Autoloading From Lib In Rails 3
Rails does a great job of autoloading your files, and in the development environment it “re-autoloads” before every request by default. This means you don’t have to litter your files with require statements, and you don’t have to restart your development server every time you change a file. Changes take affect almost instantly, and everyone’s happy. The “lib” folder is an exception to this rule...
Jun 2nd
May 2011
2 posts
Namespacing Core Extensions In Ruby Gems
If you’ve spent any time developing your own Ruby gems or libraries, you’ve probably added some custom methods to Ruby’s core classes. This post is about the best place to keep these methods. A Contrived Example With Parrots Here’s an example of how I might extend a core class, and then use the extended class in my code. Imagine I’m building a gem called...
May 16th
The Hitch
The BBC’s Tim Weber on Microsoft’s acquisition of Skype: The hitch: Microsoft boss Steve Ballmer will have to work hard to integrate Skype, to ensure the voice/video-over-the-internet company is not strangled by his firm’s notorious bureaucracy. I remember when Skype was bought by eBay: I thought “there goes a great service”, but I’m still using Skype today...
May 9th
March 2011
3 posts
Twitter's Tightrope
Twitter’s strength is that it’s cool. Twitter’s problem is that it’s cool. Although my tweets connect me to the whole world, when I use Twitter I’m socialising. This implies privacy: Twitter as a whole might be just a social network, but my Twitter is a network I choose, a network I build: my network. My Twitter is something personal. Socialising is cool. Everyone...
Mar 6th
Flash On Tablets: Motorola Xoom vs iPad 2
Preston Gralla on why the Motorola Xoom is “a clear winner” over the iPad 2: Xoom, of course, will be able to play Flash relatively soon. The iPad 2 will never do it. Flash soon: is that a promise, or a threat?  
Mar 2nd
The iPad 2: Closed Loops & Cool Engineering
Yesterday the iPad 2 was announced. Maybe you’ve heard? One of the many things that struck me as I watched the announcement of the iPad 2 was the fact that the iPad is now thinner than an iPhone 4. In fact, when I look at the iPad 2 side on it reminds me of an iPod Touch, which is just thick enough to avoid melting into thin air — and no thicker. So: a faster processor, good battery...
Mar 2nd
February 2011
25 posts
Autoloading From “lib” In Rails 3
Rails does a great job of autoloading your files, and in the development environment it “re-autoloads” before every request by default. This means you don’t have to litter your files with require statements, and you don’t have to restart your development server every time you change a file. Changes take affect almost instantly, and everyone’s happy. The...
Feb 28th
Those Sneaky Footnotes
Yesterday’s article on OS X Lion’s full-screen mode included the following footnote from Apple’s Lion preview page: [Some features are only] available with apps that have been developed to work with Lion. I’ve added “some features” to represent the asterisks which are spread through the page, linking certain features to the disclaimer above. The explanation of...
Feb 27th
UK Politician Tweets About "Retards"
A politician from Hull in the UK described protesters as “retards” on Twitter, the BBC reports: Conservative group leader John Fareham made the comment after Friday’s meeting, which saw the council approve a controversial £65m savings plan. [His tweet read:] “15 hours in council today very hard hitting day and the usual collection of retards in the public gallery spoiling...
Feb 27th
Rails 3.0.5
Rails 3.0.5 has just been released: no major new features, but some nice bug fixes. Grab it while it’s hot.
Feb 26th
Linking To Existing Posts In WordPress 3.1
One of my favourite features in WordPress 3.1 is the option to link to existing posts when you’re using the rich text editor. It’s just so simple: select the link text, hit the link icon, and pick the post you want to link to. WordPress does the rest. I just love this: recently I’ve been linking to myself a lot (it’s basically egoism) and I’ve been wishing for...
Feb 25th
The Mathematics Of Voting Reform
One of the reasons the UK needs some kind of electoral reform is this: a person’s vote is more or less powerful depending on which political party the person votes for. That’s not democratic. The graph above shows the disparity between votes (inner circle) and seats in parliament (outer circle). All parties suffer from some kind of distortion between votes and seats, but look at the...
Feb 24th
How To Force SSH Password Authentication
Recently I had a problem SSHing into a client’s server: to fix the problem, I forced SSH to use password authentication and disabled public key authentication. Here’s how: This one-liner won’t affect your global SSH configuration: it just tells SSH to use only password authentication for this one request
Feb 23rd
Full-Screen Apps on OS X Lion
The developer preview of OS X Lion is out. I’m going to resist “cage” puns and focus on one of Lion’s new features: full-screen mode. Recently I’ve started using most of my regular apps in what I would, until now, have called full-screen mode. On my Mac, running Snow Leopard, this means that the active application window grows to fill the desktop area — its...
Feb 23rd
Goodbye Gaddafi?
UK Channel 4: “Gaddafi on the brink of losing power”. Interesting, in-depth article. Most importantly, their conclusion is that Gaddafi is likely to be forced from power but that this won’t precipitate a civil war in Libya. This from Dr Imad El-Anis, a Libya specialist: I believe we are in for a tough time, but I don’t think there will be civil war in Libya. Let’s...
Feb 22nd
Rails 3 + RSpec + Speed
Here’s a nice guide to getting RSpec tests running quickly (and automatically) on Rails 3, from Peter Cooper at Ruby Inside. I use RSpec every day and my tests already run pretty quickly, but anything that speeds things up even more is alright by me :) As an aside, if you’re not using RSpec on Rails you really should look into it. And if you’re not running your tests...
Feb 22nd
Google Moves German Border
From the BBC: Google maps shows the Netherlands’ border running right into the harbour of German border town Emden. This is what happens when engineers at a billion-dollar company get bored. What shall we do to fill the time? I know, let’s mess with Europe.
Feb 22nd
No?
There’s some fuss on Twitter over the No2AV campaign poster which presents the AV issue as a straight choice between changes to the UK electoral system and… what: dead babies? Anyway, ridiculous scaremongering aside, here’s a better poster: That’s Eric Islley, the former MP who “has been given a year’s jail sentence for dishonestly claiming parliamentary...
Feb 21st
Emails Are Not Letters
Here’s an article from the BBC about the decline of “Dear” as a lead-in to emails, and here’s a quote from Jean Broke-Smith (an etiquette teacher), taken from the article: If you’re sending a business e-mail you should begin “Dear…” - like a letter. You are presenting yourself. Politeness and etiquette are essential. One of the problems people...
Feb 20th
The Cost Of Democracy
The campaign against UK voting reform kicks off with a new website. Their best argument is that AV is too expensive. Nothing feels better than being told you’re too poor for reform.
Feb 17th
Opt-Outs Done Right
Following on from last week’s critique of email opt-out forms at whitestuff.com, here’s an example of the right way to do it: Simple choices presented in a way that’s easy to understand. They’ve even chosen good defaults. Perfect.
Feb 17th
Prioritised To-Dos In TextMate
Here’s a really simple trick I use to prioritise todo lists in my Rails projects. It uses TextMate’s TODO bundle. Notice the addition of “:n:” right after “todo”, where n is a number indicating how important the todo item is. I use three levels of priority but you could use a different system depending on how organised you wanted to feel. Run this through the...
Feb 16th
Reason Enough
AV is a recipe for coalitions – reason enough to vote ‘No’ — an opinionated article on proposed reforms to the UK voting system, from Simon Heffer in the Telegraph. Some extracts from the article: For the next 12 weeks, those interested in this attempt to experiment with our constitution can be bombarded with the odd fact, and piles of prejudice and assertion, as they prepare to...
Feb 16th
World Press Photo Awards
Striking and sometimes disturbing photos from winners of 2011’s World Press Photo award. The image above was taken in Calcutta, India; the yellow blurs in the centre of the photo are most likely cars but having just watched Inception on DVD, I like to imagine they’re freight trains .
Feb 15th
Nabokov's Butterflies
The New York Times on Vladimir Nabokov, novelist and amateur lepidopterist: [In] a speculative moment in 1945, he came up with a sweeping hypothesis for the evolution of the butterflies he studied, a group known as the Polyommatus blues. He envisioned them coming to the New World from Asia over millions of years in a series of waves. For half a century, few people took Nabokov seriously, but just...
Feb 14th
Require Javascript Files Like A Rubyist
I like to keep my javascript files well-structured. I also like not to have to add a new <script> tag every time I add a new script file. It’s neater. In a Rails application, I use application.js to load all my other javascript files. Here’s how: Observant readers will have noticed that I’m using jQuery with Rails here. You can do that now, you know.
Feb 13th
George Shaw: Suburban City Art
British artist George Shaw paints scenes from the Coventry housing estate where he grew up: I have my territory that I revisit looking for clues to I’m not sure what. I might pass a certain place a hundred times and then, one day, something about it catches my eye. I take a few photographs, usually bad ones, then print them and toss them aside for a while until I find one particular image...
Feb 13th
Parsing Event Times With Chronic
A simple trick, using Chronic in a Rails app: The next step would be to remove the day-specificity from the parsed start and end times (in other words, I’d like “11am” to mean “11am on any day”, not just “11am today”). But this is a neat starting point
Feb 13th
Miniature Mobile Base Stations
The Guardian: Mobile phone base stations no bigger than a golf ball could help to bridge the digital divide and bring mobile broadband to distant areas both in the developing and developed world. No more fake trees.
Feb 13th
Usability Review: Opt-Outs At Whitestuff.com
White Stuff is a UK-based clothing retailer. You can buy their clothes in stores or on their website. Unlike many (most) online retailers, their checkout process is actually pretty good but when it comes to usability, their email marketing opt-out forms leaves a few things to be desired.Here’s the form in its default state: Notice how the first two options are phrased as positives...
Feb 9th