From an iPhone 5 to a Nokia Lumia 800

Nokia Lumia 800

The power button on my iPhone 5 recently semi-broke (it only seemed to work about half the time), so while it was being repaired I borrowed a Nokia Lumia 800 from the device lab at our office.

These are my impressions of the Lumia 800 after using it for a few weeks (why it took three weeks for my iPhone to get repaired is another story).


Surprisingly enough the hardware itself feels very solid, despite the fact that the phone is made out of plastic (aside from the Gorilla Glass screen).

The sharp corners can feel a bit awkward while you have the phone in your pocket and the phone can be a bit slippery at times, but this is true also of the aluminium iPhone too.

The battery life seemed better than what I get on my iPhone, but I’m not sure how much of this was simply due to the fact that I used the phone less as I could do less stuff on it.


The Lumia had been updated to Windows Phone 7.8 , the latest version available for the Lumia 800

While the OS seems slick in a very minimalistic way, it also suffers from some interesting bugs and bad design choices. For example, if you want apps to remember their state when you switch back to them, you must use the application switcher (i.e. hold down the back button). If you try to switch back to the app from the start screen, you lose the previous application state. Needless to say this is extremely annoying

The selection on the Marketplace (Microsoft’s app store) is fairly poor compared to what’s available for iOS and Android. This wasn’t a big issue for me as I only had to use the phone for a short while, but it is certainly something which would be extremely annoying in the long run.

Mobile Internet Explorer 9 is nowhere near as good as Safari on iOS or Chrome on Android. The lack of @font-face support is particularly galling. IE10 on Windows Phone 8 is probably better, but I wouldn’t get my hopes too high.

Other annoyances

I couldn’t get my 3G data connection to work straight out of the box and had to download a separate ‘Network Setup’ app from the Marketplace.

The phone also was under the impression that I needed to use data roaming in my hometown. The 3G data connection wouldn’t work if data roaming was turned off in the phone settings.

The Roaming icon

The status bar iconography is mostly pretty cryptic, as you can tell by looking through this support article: What do the icons on my phone mean?

While I didn’t run into it myself, the Lumias also have a known issue where they won’t turn back on at all if the battery has completely run out.

Would I switch permanently to Windows Phone?


A single purpose site: Days since GitHub hired someone

It uses the feed for the GitHub blog to figure out when GitHub last hired someone.

Online TOML to JSON converter


A simple tool based on Ricardo Tomasi’s toml.js for converting TOML to JSON in your browser.

Check it out at

TOML (Tom’s Obvious, Minimal Language) aims to be a minimal configuration file format that’s easy to read due to obvious semantics. TOML is designed to map unambiguously to a hash table. TOML should be easy to parse into data structures in a wide variety of languages. redesign redesign

I just published a redesign of my home page,

There might still be some issues, especially on mobile browsers, but overall I’m fairly happy with how it turned out.

(geek aside: It’s a static HTML site, but it’s served with Puma running on Rubinius 2)

Speed up Travis CI builds by caching the bundle to S3

When we run our build suites on Travis Pro the bundling step takes the most time by a wide margin (aside from the test script itself).

Inspired by this Coderwall protip by Michał Czyż, I set about attempting to cache our completed gem bundle on S3.

Update: Checkout the bundle_cache gem for an improved version of this technique

How it works

  1. The tarballed bundle and a SHA-2 sum of the Gemfile.lock are downloaded from S3 (if they exist)
  2. Travis runs bundle install as normal (except that the bundle is installed to ~/.bundle). This shouldn’t take more than a few seconds if the bundle hasn’t changed.
  3. Travis executes all the normal build steps, as usual
  4. The bundle is tarballed and uploaded to S3 (us-east is the closest region to the new Travis workers), but only if the SHA-2 hash for the Gemfile.lock has changed

The bundle is uploaded with public-read permissions for easier downloading. This should not be a problem for most people and could be mitigated by using a really obscure filename, like a UUID.

Step by step instruction

  1. Set up a bucket on S3 in the US Standard region (us-east-1) (and possibly a new user via IAM)
  2. Install the travis gem with gem install travis
  3. Log into Travis with travis login --auto (from inside your project respository directory)
  4. Encrypt your S3 credentials with: travis encrypt AWS_S3_KEY="" AWS_S3_SECRET="" --add (be sure to add your actual credentials inside the double quotes)
  5. Add the bundle_cache.rb and files from below to the script/travis folder
  6. Modify your .travis.yml file to match the .travis.yml below
    • The BUNDLE_ARCHIVE variable will be used as the base for the uploaded bundle’s name
    • Setting AWS_S3_REGION is optional and defaults to us-east-1
    • Pay special attention to these keys:
    • bundler_args
    • before_install
    • after_script

If you have any questions or comments, you can comment on my gist, or tweet at me on Twitter.

Can't AirPlay from OS X?

Sound preference pane

Sometimes OS X will flatly refuse to change the audio output to an AirPlay outlet, such as an Apple TV or Airport Express (with no visible error message).

When this happens I’ve found that killing the CoreAudio daemon (coreaudiod) helps (OS X will automatically restart it).

Simply run this command in Terminal:

sudo pkill coreaudiod

AirPlay should work again a few moments later.

Extremely thin console.log wrapper

Mostly useful for ensuring that Browsers which don’t have console.log enabled by default (i.e. Internet Explorer) don’t explode if you forget to remove a console.log from your JavaScripts.

How to clear the DNS cache on OS X Mountain Lion

OS X Mountain Lion

In OS X Mountain Lion (10.8) and Lion (10.7) to clear the DNS cache you should run:

sudo killall -HUP mDNSResponder

And not the older command that worked in Leopard (10.5) and Snow Leopard (10.6):

sudo dscacheutil -flushcache

Alfred 2 Workflow: Toggle Tunlr

Alfred 2 Workflow: Toggle Tunlr

My Toggle Tunlr Alfred extension updated to an Alfed v2 workflow.

This script (still) naïvely assumes that you are using a Wi-Fi network and that you normally don’t have any DNS servers manually set.

There are four command available:

  • tunlr — toggle Tunlr on and off
  • tunlr on — explicitly set the Tunlr servers
  • tunlr off — explicitly unset the Tunlr servers
  • tunlr status — check what the current DNS settings are

Download: Toggle-Tunlr.alfredworkflow

Tunlr lets you stream content from sites like Netflix, Hulu, MTV, CBS, ABC, Pandora and more to your Mac or PC. Want to watch Netflix or HuluPlus on your iPad, AppleTV or XBox 360 even though you’re not in the U.S.? Tunlr lets you do this.

Alfred 2 Workflow: Repair LaunchServices