Changing MySQL schemas without downtime

Whenever you do a schema change in MySQL you run the risk of locking tables for a long time and making the database unavailable to anything that wants to read from the tables being altered. We (Conversocial) have been looking at how best to do MySQL schema changes whilst keeping ... Read more

Adopting Scrum - Educate, don't moan

We (Conversocial) recently adopted Scrum. This is the first in a series of blog posts containing what we've learned whilst adopting Scrum. On the first day, we Scrummed like men possessed and saw that it was good. On the second day, we got it wrong. By the afternoon of the ... Read more

Inbox Zero and Remember The Milk

Yesterday I got both of my inboxes (personal + company) to zero. It felt good. To get there I went over all my emails and I either: replied archived made a todo I've been at inbox zero before but I failed to stay there. I failed to stay there because ... Read more

A tip for when TDD gets hard

One of the biggest reasons I see for TDD not being used enough is that it makes things harder. The typical complaints are: "I have to setup/mock too much" "I want to test my complicated internals without exposing them" "I'm writing a web-app, it's hard to get the interactions right" ... Read more

Presentations and History

Four-year-old child: What's ice hockey? Dad: Ice hockey may have started out as a form of hurling that was played on the ice. An account by Thomas Chandler Haliburton suggests that it was played as early as 1810... Would you really respond like that to your child? Or would you ... Read more

Rewriting Java in Scala & Making Code Lovely 6 - Pattern Matching

Pattern Matching - The Problem I'm going to start off with a code snippet: if (x instanceof SomeObject) { ((SomeObject)x).someMethod(); } else if (x instanceof SomeOtherObject) { ((SomeOtherObject)x).someOtherMethod(); } Eugh. This is ugly. Not only that, it's something we all see quite often when writing Java. No matter how well ... Read more

Rewriting Java in Scala & Making Code Lovely 5 – Structural Typing

What is structural typing? Structural typing is a way of saying that we don't care about the type of a variable but we do care about the structure of the type of a variable. Here's a simple example to explain this further: def printArea(shape : { def area : Double}) ... Read more

Rewriting Java in Scala & Making Code Lovely 4 – Example: Integration

It's time for a full example that shows off what we know so far. For the example, we're going to implement something that does basic integration. This program will approximate the value of an integral using the rectangle method - a good explanation of this can be found here. Background ... Read more

Rewriting Java in Scala & Making Code Lovely 3 – Variable Declarations

I thought I'd take a step back and look at how variables are declared in Scala and how it compares with Java. Local Variables In Java you declare a local variable like this: Map<String, Integer> userIds = new HashMap<String, Integer>(); In Scala, it is a lot shorter: var userIds = ... Read more

Rewriting Java in Scala & Making Code Lovely 2 – Functions as values

Ever wanted to filter a collection in Java and thought "this sucks"? Typically, you end up with code like: List evens = new LinkedList(); for (Integer i : list) { if (i % 2 == 0) evens.add(i); } Or, if you're going for re-use: Predicate evenNumbers = new Predicate() { ... Read more

Colin Howe

I'm Colin. I like coding, ultimate frisbee and startups. I am VP of engineering at Conversocial