While upgrading an old Rails 2.3.5 app to Rails 2.3.9 I came across this error:
`backend': no such file to load -- i18n/backend (MissingSourceFile)
It’s very simple to fix as Rails 2.3.9 is just missing the i18n dependancy. If you are requiring gems using the old school way just add it to your environment.rb:
config.gem "i18n"
Or if you’re running Bundler, like everyone should be, just add it to your Gemfile and run bundle update:
gem 'i18n'
The recent iOS 4.1 update added the ability to take HDR photos from the iPhone 4 camera app. Last weekend in London we had the Thames Festival which made for a great opportunity to try out the new feature in a low light setting. Here are some of the photos below. You can see the iPhone stores both the regular version (left) and the HDR enhanced one (right).





The rest of the set is up on flickr here. It still doesn’t come close to a real camera. Even a cheap point a shoot would avoid this level of blurring and light streaks. In daylight the camera is great but anything else is a gamble.
There is a great episode of The Conversation up at 5by51 which starts to dig into a topic I have been thinking about for a few years, news overload. Dan and Mike discuss this problem and point to RSS and Twitter as major time sinks that could be overcome with clever filtering technology.
History
I have used RSS aggregators since the Radio Userland days. I then moved onto Newsgator and have been using Google Reader since 2006, all the while increasing the number of feeds I read and receiving a greater volume of content from each feed. It got to a point last year that I had to go through a massive cull and rethink the way I was consuming news. Now I’m in a middle ground where I actively add and remove feeds on a regular basis to keep control of the flow.
What’s Out There
I have tried to use a number of different smart aggregators but they all fall short.
- Fever isn’t smart enough and gives either a lot of duplicates or stories that I’m not interested in.
- Dedicated sites like Techmeme only cover a single topics and there are very few of them around.
- Twitter, which is essentially a crowd sourced filter, misses a ton of interesting content out there.
I even developed my own dedicated site called Splitstate which serves as an auto aggregator/filter for gaming news in a similar fashion to Techmeme. It was a tough project with a ton of unexpected pitfalls during its development but it gave me some insight into the news filtering problem. Best of all it works and I use it everyday2.
Taking News To The Next Level
The current news filters such as Techmeme and Splitstate do fundamentally basic things - analyse news feeds within a limited scope and try to find common threads between them, the more talked about a subject is the more prominence it’s given on a page. To move things to the next level we will need to do a lot more than this.
This software will need to analyse you - what you are interested in, talk about and do online. It will need to source data from Twitter, Facebook and other sites to give you a more personal news stream. It should also be capable of prioritising significant world news so that even topics outside of your normal reading habits are brought to the fore. It should also be able to learn and adapt as you skip over or read articles in detail. Likewise it should recognise changes in taste over time and adjust accordingly.
To put it lightly, this is a massive undertaking, but the first developer that can get a working product out will be greatly rewarded. It’s going to take overcoming this massive engineering hurdle for people to fully turn of their feed readers.
-
A brilliant podcast network put together by fellow rubyist Dan Benjamin.
↩ -
I find Splitstate is best consumed via the twitter account which gives you breaking news throughout the day.
↩
Starcraft 2 is a funny old game in a lot of ways. It’s old and new at the same time and we have been waiting for it for a long long time.
Ignoring Progress
At the gameplay level Blizzard have completely ignored all progress made in the rest of the RTS genre, be it the low level simplified tactics and action of Company of Heroes or the large scale strategic battles of Supreme Commander. Regardless of the reasons (eSports, Korea, etc) the game plays exactly the same as the original Starcraft from 12 years ago.

It’s quite a ballsy move when you compare it to other franchises from the same year, Fallout 2 was released in 1998 and just look at how much Bethesda have evolved the series to keep it relevant. Oh and lets not forget Baldur’s Gate - have you played Dragon Age?
Refining a Legend
The real genius behind Starcraft 2 is that Blizzard realised they already had a fantastic, almost timeless, gameplay dynamic that they could build on, which is exactly what the single player campaign does. Each mission has been expertly crafted and finely tweaked so it’s unique from all the others. You never get the feeling of mission repetition as you get in so many other RTSs. Rarely is it a case of destroy their base before they destroy yours and even when it is they provide an interesting twist.
The fantastic missions are backed up by a killer story that really propels you through the game. Blizzard can finally tell the story the way they want without restriction. It’s also good to see them favour in game cut scenes more so than in the past, however key moments in the story are punctuated by gorgeous and dramatic CG cut scenes.

You are given a greater sense of choice between missions too. Money earned in missions can be used to purchase unit upgrades and mercenaries. If you discover Zerg and Protoss artefacts mid mission you get to research new units and crazy upgrades. And at some key points you can side with one faction or another to complete certain objectives.
Zergy
So all in all despite the lack of gameplay innovation Blizzard have done so much with the top notch single player campaign that it alone is worth the price of entry. Of course there’s multiplayer, skirmish mode and getting all those addictive achievements to keep you going in the long term. Even if you haven’t played the original I highly recommend you give it a try.
I’m johng on Battle.net.
I’ve been using iTunes for downloading podcasts since iTunes 4.9 came out in 2005. It was a great moment that took podcasting from the obscure straight into the mainstream in one swoop. In the last five years there has been nothing that could take it’s place - even as we all moved from basic iPods to app driven iPhone.

With the recent release of iOS 4 Apple enabled background audio playback which resulted in a race to see who could put out the best podcatcher first. Luckily Alex Sokirynsky had an almost fully featured client on the app store already that just needed iOS 4 support and a little polish.
Despite a few buggy releases Podcaster has matured into the best way to consume podcasts. I’m no longer tied to iTunes syncing and I can download fresh content wherever I am. I used to sync to my Mac multiple times per day and now I rarely need to. You can easily bring your OPML subscription file over from iTunes and it’s only 59p/99c. Highly recommended!
Pair programming is a bit of a marmite concept the development community - you either love it or hate it. Some developers swear by it while others can not believe it’s practiced. I’ve worked under both extremes and right now I do a little of both so I thought I’d share my findings.
Pros
You always have two people who know the inner working of a feature. So if one is not around or leaves then the knowledge is retained.
New team members can be more quickly integrated as they can immediately work on new features with more experienced developers. Knowledge spreads fast.
Want to introduce a new language or technology to the team? There is no better to get the ball rolling than to implement a new feature as a pair using it to get the rest of the team onboard.
Having a couple of pairs programming and one individual who deals with incoming internal and external information/development requests can effectively eliminate all interruptions. It leaves the pair to continue being productive and alleviates the problem of multiple people chipping in on an issue and disrupting the whole team.
Cons
The simple fact is not everyone gets along. Be it personality or programming style - working on something and having a lot of disagreements is not much fun.
You need to be especially careful when hiring new people. It’s very hard to gage how someone will fare day to day in an interview and even harder to gage how they well they work with others. Hiring slightly the wrong person can ruin a team’s flow.
Sometimes we all need a little space and a little room to breath for whatever reason. It’s hard to get any if you have to pair all day everyday.
Sharing computers and desks is awful. What if everyone needs to use the computer at lunch time and there are not enough to go around?1 What if you have carefully configured some apps on one machine but someone else is using it today?
Some people are not as hygienic as others and you will be using the same keyboard and mouse - be prepared to share coughs and colds. Some people are tidier than others, leaving food and other things on the desk is no problem if it’s your desk but can be quite annoying for others.
It’s much slower. Talking through approaches and trying to agree on an implementation takes up a fair amount of time. Sometimes you just want to knuckle down get something done - not gonna happen. Obviously the two people could be programming in parallel on different problems.
Design by committee is known to be a bad practice and yet pairing is usually done on front end (user facing) interfaces too. This leads to messy and overcomplicated screens that should be clear and well thought out.
The Verdict
I’m going to cop out at this point and say it depends on personal preference. It’s important to stress that which ever system you choose - stick to your process and go through regular reviews with the team to iron out any kinks.
-
Of course the best way to solve this is for each developer to have a personal laptop. This can be off to the side for looking up documentation and personal use while the main computer remains in the centre for programming.
↩
I really encourage you to go buy Invincible Iron Man Annual #1 via the Marvel Comics iOS app this week. It has been released on the same day as the print version and is really quite good. If we can tell publishers how we wish to consume their content with our wallets they will respond.

Compass is a framework for creating CSS. You write stylesheets in SASS and they are compiled to CSS. In my view it is the best tool to come along in front end web development in a long time. This is why you should start using it right now:
Your Stylesheets Will More Closely Resemble Your Markup
SASS is whitespace aware so it forces you to think hierarchically. HTML is a hierarchy of nodes so why shouldn’t your stylesheets be scoped in a similar way. This makes stylesheets more closely resemble markup and reduces common problems of style overlapping and elements taking on styles unexpectedly.
Your Stylesheets Will Be Smaller
Working on a complex design with many pages can lead to fairly colossal CSS bloat. With reusable style blocks (mixins), variables, basic functions and inheritance you cut this down significantly. I am currently working on a project with 182 SASS properties defined. After compilation this gives 795 CSS properties. I’m so glad I didn’t have to type out all that CSS.
CSS Framework Support
Compass has built in support for Blueprint, YUI, 360 Grid, Susy and others through plugins. They provide tried and tested layouts and styles that have been tested cross browser. Compass defaults to Blueprint and I highly recommend you use it. No more floating and guessing widths - just set your column size and it works.
Fantastic Plugins, Utilities and Mixins
I had a problem with CSS ellipsis support under Firefox recently but Compass had me covered with a plugin. I just did a compass install compass/ellipsis and gave the broken link a class of ellipsis. Done. No hacking, no worrying. There are tons of helpers like this that cover everything from link colouring to border radius.
Keep Your CSS Modern
If I do +border-radius in the latest version of Compass it applies the necessary properties to get rounded corners working on webkit, mozilla, opera and IE (when support comes). In the future as new versions of Compass are released to support new browsers the CSS properties behind might change but I don’t need to know about it, I just need to call it and it works everywhere.
You Don’t Have To Write SASS
I think SASS is brilliant but many people don’t have the time to learn it or just dislike it. Compass 0.10 introduces support for SCSS which is a superset of CSS. If you know CSS you can immediately write Compass compatible style sheets.
It Will Run Anywhere
Although it’s a Ruby project I have used it with Java in production. It’s a command line tool so you can either leave it watching your style directory and compiling automatically or just hook it into your normal build process by calling the compile command. Of course it work best in Rails but there is no excuse for not using it on other projects.
Give it a try today! Compass even includes convertors to get your old styles ported over to SASS or SCSS so there’s no excuse.
Our motivation is simple – we want to provide the most advanced and innovative platform to our developers, and we want them to stand directly on the shoulders of this platform and create the best apps the world has ever seen. We want to continually enhance the platform so developers can create even more amazing, powerful, fun and useful applications. Everyone wins – we sell more devices because we have the best apps, developers reach a wider and wider audience and customer base, and users are continually delighted by the best and broadest selection of apps on any platform.
If you want flash don’t bother with iPhone OS devices. If you do want flash my question to you would be why? Key sites are already compatible or have apps and games/UI won’t work correctly due to the touch interface.
I’m glad Apple are pushing this hard against Adobe. Someone needed to and Apple are in a position where they can. I also hope Adobe come out with a top notch HTML5 package targeted at designers, something that can produce content that works on any platform without the need for bloated plugins.

