Blog

Weeknotes 7

On Monday we squeezed in a final morning of climbing in the Blue Mountains (see weeknotes…

Climate: A New Story

Can you imagine a world without climate change?

Weeknotes 6

This week has been full, but the filling was nutritious. I’ve had quite a few coffees and…

Better Work Together

There is a trickle of human energy going into solving the greatest challenges of our…

Weeknotes 5

This one is coming a bit early because I’m going away camping tomorrow for a friend’s…

Weeknotes 4

I spent the Labour Day long weekend near Warburton with my partner. It was nice to get a…

Weeknotes 3

Happy International Women’s Day! I am constantly impressed by my sister Esther’s…

Weeknotes 2

The big news for me this week is that I left my job at Up.

Weeknotes 1

I’ve decided to have a go at doing week notes.

My first steps contributing to Servo (and learning Rust)

I remember first learning about web technologies as a teenager. This was back in the days…

Principles for deciding what to work on

Towards the end of last year I bowed out of a four and a half year stint as Loco2’s…

Square pegs, round holes, and Rails' directory structure

Where should you put code in your Rails application? Often, the answer is obvious: models…

Overhauling Loco2's hosting infrastructure with AWS, Docker and Terraform

Recently I worked on a major overhaul of the infrastructure hosting Loco2.com. In this…

Revocable sessions with Devise

By default, session data in Rails is stored via a cookie in the user’s browser. It’s a…

Poltergeist 1.0!

Almost a year ago, on a complete whim, I decided to try to hook up the headless browser…

Explaining Focused Controller

Controllers in Rails are a problem. Actions sometimes become unmanageably long, and it’s…

Rails controllers and OOP

Rails controllers violate the Single Responsibility Principle. Each “action” has a…

Poltergeist 0.6.0: Javascript error handling and remote debugging

Recently I pushed version 0.6.0 of Poltergeist. This version brings some pretty awesome…

Tracking down method definitions in Ruby

One of my favourite features of Ruby 1.9 is the #source_location method of Proc and…

How to prevent Ruby's test/unit library from autorunning your tests

Today I had a situation where I wanted to use perftools.rb to profile a test suite, which…

Hashes and encapsulation

Earlier today I made an off-the-cuff remark about encapsulation on twitter.

Poltergeist: A PhantomJS driver for Capybara

This announcement is coming way later than I had originally intended. Last October I…

initialize_clone, initialize_dup and initialize_copy in Ruby

Ruby has two methods for creating shallow copies of objects:

Mass assignment security shouldn't happen in the model

Mass assignment security is a feature in Active Model (and therefore Active Record) which…

How to write an awesome Active Record bug report

The main area of Ruby on Rails that I work on is Active Record. As such, I see a lot of…