Category Archives: Personal

Death or serious injury

When you become a parent, you suddenly acquire this immense feeling of responsibility and protectiveness. This tiny little baby is yours, yours forever, and so it becomes your job to guard it from the world.

The mere thought of any harm coming to your baby is enough to put you in a cold sweat. You cushion everything in the house, you invest in crashproof car seats with built-in parachutes, you do everything that you can, and more.

A baby typically wears about four layers. And we live in California. They get wrapped up in a cocoon so warm and snuggly that no harm can possibly come to them.
Bubble babies, that’s what they are.

I think I’d go for the eyes. If anyone broke into this house, I’d be taking their eyeballs, no excuses. I’m having none of it. My home is my castle, and my treasure is for keeps.

Some nights you wake up in a sweat, just at the mere possibility of harm. You don’t sleep for hours more. Not that you really get the chance to sleep very often.

Really, parenthood is all about trying not to think of what might happen. What if, I took my eyes off for a second. What if, I let him play with that. What if, I don’t strap him in tight enough. What if, what if, what if.

I don’t want to think about it.
Please please please let me remove these damn permanent labels.


With nine months of real work experience under my belt, I felt I knew everything. It was time to branch out and be a contractor, earning the fabled bucketloads of cash. In my early career, life was simple like that.

Sadly, the dotcom bust had just taken place, so finding a contract wasn’t so easy. I almost asked for my old job back.

But by March 2001, I found myself at eMCSaatchi, the digital arm of M&C Saatchi, working on the Rover website.

The team had about a dozen techies. Almost all of us were contractors. Everyone else was making double the money I was, but hey, I had to make rent. So here I was.

My primary project was completing a car configurator. This showed you the various options for the cars, in which combinations you could buy them, and the resulting price.

My JS-based page was a placeholder, soon to be replaced by the work of the two Java programmers and the database guy. I finished up the project fairly easily, based off a set of brochures. It had a lot of programmatic rules, covering colour combinations and the like. My page only covered the UK combinations.

I spoke to the others. It turned out that they hadn’t even started work yet. They were just sitting there, thumb-twiddling!

Nobody had given them a spec yet. They were waiting to get in touch with Rover’s IT department, which they were confident would just have data on hand, ready for export. The project manager, Mike, a sound bloke, was going crazy with frustration.

Finally, they got their meeting. Poor Mike had to drive all the conversation. It transpired that their database covered only manufacturing, not sales. The two are not really connected – not even close.

So I spoke to our database guy. What was our plan?
Oh, he said, we wait for them to connect databases, give us the export.
But that’ll take months!
Well, we need the spec.
But we know the spec, I say. Surely it’s a simple relational database? Cars all have four wheels, one engine, and so on.
Ah, he says, but you don’t know that.
What? I say. You can’t have a car with two engines!
You don’t know that until we get the data! Maybe they will?
What? I said, I *have* the data. Look, it’s here in these brochures.
Ah, he says, but we want a generic configurator. So we can sell it to other clients if we want.

I got nowhere. I couldn’t understand his lack of interest in just getting the job done.

So I went home.

And I thought about it.

And I came back to work.

I spoke to Mike. I think, I said, this is silly. How about I go home this weekend and build you this configurator? Obviously you’d pay me a little extra. But you’re getting nowhere right now.

Deal, he says.

Now, I don’t want to toot my own horn too much here. By this time, I knew the car specs inside out. It was Easter weekend – I had four clear days. And I worked a good 14hours a day. But by Tuesday morning, I had it working.

A bit rough around the edges, hanging off CSV files and perl, but working. And, generic. You could configure anything with this thing.

It caused a storm.

Two weeks later, the database guy was out. Mike was happy, probably for the first time in his life. The Java guys spent a month recoding it into XML and Java, for internal consistency. This is really clever, one said. You could configure a kitchen with this.

But my first fail was in getting paid. I handed it over too soon. They promised, and promised, then made excuses, then apologised, and gave me just 32hours pay.

The second big shock came after launch. We’d got one country out, it was beginning to work.

And they let me go.

I’d saved the company a fortune, delivered on time, and worked myself out of a job.


But it wasn’t a complete loss. Six months later, they were struggling to deliver. The system needed an update, needed support. To prevent losing their most lucrative client, they needed a big change. First on that list? “Hire kpk”

Mike gives me a call. “How much do you want?” he says.

Twenty seven

My first real job was at a company called AKQA. Nobody ever knew for sure what the letters stood for.

I’d been working, for fun, in an off license in South Croydon, while attempting to run a web design startup. The startup was going well, save for the fact that I didn’t have a clue what I was doing, had no clients, no business skills and very little money. So, I thought, time to get a job.

Two weeks later, I was in. I’d had a 20 minute interview, at least half of which was spent admitting I knew no ASP at all but knew my HTML, and the other half was them persuading me to join. I took it for 20 grand a year.

First day on the job, I had to build my own desk. Seriously. They just pointed to a corner and a power screwdriver. Then I spent that week reading their ASP coding standards. I have still never written any ASP.

At the first opportunity, I jumped into some JavaScript. The guy I was working with, full of tall tales and brag, was struggling with a sliding bar. He’d copied some code from dynamic drive, but was then lost. “I’ve got it all done,” he said, “I just can’t make it slide right instead of left.”

I read the JavaScript book that week. Loved it. Memorised most of it.

We were working on a site for Littlewoods, a catalogue retailer. It was good, it had some fun quirks. The backend was written by some muppets from Oracle. We had no JSP back then, so they’d repurposed the span tag for server side markup. Weird.

As the site rolled out, the problem was always speed, and in those days that meant your modem. 28k was standard. The office couldn’t even manage that. We had a couple of ISDN lines shared between 150 of us.

Yes, 150. This company was the shit. All the major players worked with them. There was money coming out of their ears.

Not ours, you understand. There were no stock options. In fact, shares were divided (unequally) between the four founders – who were the oldest people at the company.

They were twenty-seven.

Anyway, site performance was key. Towards the end, I’d realised that I could just duplicate HTML on the fly for each item, reducing the bandwidth of the download by about fifty percent. I also wrote a clever tool that used LZW compression on the HTML, decoding with JS.

We didn’t go with either – they caused too many crashes. It was too far ahead of its time.

The other project I worked on was for Saga, the over-fifties club. They were huge, and just wanted us to build pretty templates for their own teams to build out. I picked up the project late – just bug fixing and a workshop to run.

The design we had was awful – it locked the site into a box designed for 800×600 screens. There was no space for any text, so we had to have custom scrolling boxes, each only showing a sentence or so. All this for old people. Terrible.

Of course, this was before accessibility (and apparently common sense) had been invented.

My major cockup in all this was the workshop. They’d paid an overhead for this, maybe 30k, I don’t know. But I hadn’t been briefed – I had absolutely no idea what they expected from it, or who would be there. I figured I could bluff it, talk them through the site.

We got there to find a room full of random people. From the IT manager of one team, to the press guy who wanted to know about the website. None of them knew what they wanted either.

I sat down at the computer they’d prepared. Everybody crowded round.
Netscape. Shit. Well, ok.
No Internet. Shit. But ok.
I pop the CD in from the office.

There was nothing there. I had nothing to show, nothing I could present.
When I got back to the office the next day, I asked the guy who prepared the CD why he hadn’t put the stuff on there as promised. “Oh,” he said, “it didn’t fit.”

So, yeah, what do you do?

I wore the shame of that awkward encounter for about a week. I still kick myself over it.

I quit soon after, but not because of that. I was young. Didn’t mind making mistakes. I’d already been promoted to tech lead, but I had no clue. I left in search of fame and fortune. It was December 2000. The bubble had burst, and the next job was harder to find.

Before I left, I hired this guy for my team called Dan. He wore huge trousers. But he was really smart. Got up to speed on everything in no time.

We kept in touch.
He’s now my Engineering Manager at Twitter.

Education, education, education.

I’ve been reading newspapers online from back home. People in the UK are always tinkering with education. Like others, I judge them on their ideas, call them crazy, and laugh about how little they understand about anything.

What’s odd is that we always compare the proposed changes with our own education. Which in my case began some thirty years ago.

I’m a computer programmer. And this is the kind of education I had.

Primary school was divided in two: infants (5-7), and juniors (7-11).

Before that came nursery school. I never understood nursery school. You turn up, you play with other kids. Where’s the schooling? Years later, my mum told me that there was teaching, but that I’d been emphatic about playing. School was for playing I said. Home was for learning.

I learnt a lot at home, from an early age. Having a brother 18 months ahead is a great way to just naturally learn.

At junior school we had this great maths system based on boxes of cards. Each box was a different colour, and contained about three hundred cards. You could work at your own pace. It was fan-tas-tic.

The school probably had three computers. BBC micros, running old educational software like grannies garden. You could expect to use one of these about three times, total, only on special occasions.

Secondary school is 11-16.

Now, my secondary school was considered a good quality school. One of the best in the area. Not posh enough for local boys Beckham and Ive to have been to, but good nonetheless. When I got there it had a room (!) full of BBC micros. After a year, they were replaced with a room of Acorn Archimedes.

Never heard of that? Hmm, surprising. Or not surprising at all, because they were computers intended only for education. That’s right, some smartarse in government thought that kids should learn how to use one kind of computer, just so they’d be completely lost when it turned out the rest of the world used PCs. This is why we point at politicians and laugh.

Anyway, so we had computer lessons. No, I’m joking. There were no computer classes. THEY’D ACTUALLY STOPPED TEACHING COMPUTER PROGRAMMING. Gone. Kapoof. No programming lessons at all. They had them in the eighties, but had stopped them.

How? What? Why?

So what did we have? Well, for GCSE, I could take Office Technology. This involved learning to type. To music. Taking dictation. Writing letters. Oh yes, it was fifties secretarial school. I actually didn’t get the top mark in this. Why? Conversation went like this: me: “Do you think I’ll get an A Star?” her: “A what?” So, yeah, didn’t get one.

Somehow I got a B in English Language. Bastards.

On to sixth form (16-18). This was known to be a shitty school. I was tired of travelling on the train. Went to the local school. No friends. Didn’t care.

But they had PCs. They taught PCs. You know what? It was great!
Databases, programming, hacking.
Computing A-Level, ka-ching! Wonderful.

During this time, my brother borrowed the 1600baud modem from his school. You have no idea how slow this thing was. We couldn’t pay for AOL, so I spent hours online to various bulletin boards. Our monthly phone bill went up from 10 to 80 pounds a month. My parents were very forgiving. I upgraded to 14.4k. Wow. And then 28.8k, 36.6k, 56k. I loved being online.

Anyway, On to university (18-21). A prestigious one.

Oh my god.

Green screen terminals. Only. In the computer department. Some neck beard bleating about how they were better, if only you’d spend every hour of the day configuring it. How cursor keys that actually worked were a dumb idea.

I hated it. You know what, they had colour PCs in the library. I used those.

I really wish they could have caught my interest there. In retrospect the material was useful, but god they made it so hard to stay interested.

More lectures? Just kill me.

They assumed no computer skills at all to start with. Computing A-Level was not a prerequisite. So the first year was three quarters ignorable. Not a good start.

The Internet was taking off, but these guys did not care. I wasn’t allowed to install a phone line in my room to run a modem. It was so hard.

What an amazing waste of 150 energetic ambitious students, who could have done so much.

My education was terrible.

I imagine computer education now must be different because work life is so different. The Internet and OSS bridged the gap between abstract education and applied ideas. I imagine students these days are burning hours on GitHub. Brilliant.

My advice to them: you’ll never again have as much time as you do now. Try everything. Obsess over something. Get into Open Source in a big way, even if you’re just helping on the fringes. Make mistakes. Learn things.

And try to ignore us adults as we tinker with your education.
You see, we grew up in a very different world. No laptops, no mobile phones, no Internet.
And that’s how we imagine school is still.

What do babies cost?

What do babies cost?

Answer one. Nothing. You just need a member of the opposite sex, and for most of you, a diagram. Har har.

Answer two. Your sanity. The best years of your life. Ho ho.

Answer three. Good question, let’s figure it out.

I’m sure you could raise a baby on biscuit crumbs and dishwater, but I doubt very much that any of you would do that. You want the best stuff, or if not the best stuff, the *right* stuff.

So let’s imagine you’re expecting a baby. I know lots of you are at the moment. I can only imagine the rest of you are stuck on the diagram, but read on anyway, you might learn something.

Before you bring the baby home, you will need:
Car seat: $130
Car seat frame $100
Changing table $200 (one of our best buys)
Diapers, wipes, tissues $50
Poo bin $50
Whole bunch of wipes (cloth diapers are good) $30
Baby swing $50
Glider $300
Cot $150
Mattress $20
Nest $40
Stroller with bassinet (pram) $300
Sheets, covers, towels etc $100
Plastic bath tub $20
Mobile $60
Clothes $200
TOTAL $1600

Ongoing costs PER MONTH for the first 3 months
Takeaway food (not kidding) 50×30 = $1500
Formula 15×15 = $225
Breast pump $70
Diapers, wipes $60
Poo bin refills $15
Clothes $300 (a complete change every month)
Trip to doc $60 cab $10 cover
Toys, books $50
Washing 3×30 $90
TOTAL $2390

I’ve linked to the ones we liked.

On top of these monthly costs, remember that one of you isn’t working, or you’re paying for daycare. Also there’s hundreds of little things to buy that aren’t on this list, and there’s things that don’t really work to waste your money on.

Remember that you spent lots of money paying for taxis to the doctors while pregnant, and myriad creature comforts to get you through that time.

If you haven’t just moved across the world, spending all your savings in the process, grumble grumble, then you can probably acquire some of the initial items through a baby shower.

If you’re comparing this to your annual salary and thinking, “oh this is ok”, try comparing the monthly against the amount you’re currently saving each month. Then remember that you need to actually start saving more, for college, for school, for emergencies.

And if you live in SF, don’t forget to upgrade your earthquake kit.

3 month extras
Mat $50
Jumperoo $80
Bibs (as many as possible) $150

6 month extras
High chair $20
Solid food $5 a day = $150 per month
Child proofing the house $TBC

Optional extras:
New camera $600 (I bet you buy one)
Better stroller $500 (because you shouldn’t have tried to save earlier)
Another cot (because he/she won’t sleep)
Flights and hotels for visitors (some of them)


about twenty thousand dollars

How to visit a friend with a baby

Until recently, I didn’t have much experience with babies. Even when I knew it was coming, I still stayed away from friends with babies, because I felt I wouldn’t know what to do. I was sure that when I had my own, I’d figure it out.

This is true. You do figure it out.

But, hey, it might be that you’re visiting a friend with a baby (like us for example, please come and visit), and you haven’t had your own sprog yet. How do you behave? Here is a handy guide.

Say hello to mum. If not first, then at least second. It’s easy to forget, what with the baby.

Wash your hands before touching the baby. Golden rule, no exceptions.

Don’t take the baby. Ask, if you want a hold. But not straight away. Let the baby get used to you. Babies have a phase called “stranger anxiety”. If the baby screams at you, back off and give it time.

If the baby cries, keep clear. This can be a stressful time for the parents, especially with a guest present. Don’t hover, don’t help, just stand back and amuse yourself. Maybe take a walk.

Be prompt. You have no excuse not to be on time. We might be late – we have a baby. But don’t leave us hanging around waiting on you. It’s surprisingly disruptive (babies need to be changed, fed, napped, exercised), and besides, it’s just rude.

Don’t get all up in the baby’s face. You don’t shove your face into every strangers nose. He can see you. There’s really no need to be less than an inch away.

Don’t offer advice. Don’t take us aside and suggest we might be doing this wrong, or that wrong. You have no idea. Even if you think you have an idea, keep it to yourself. Instead, compliment us. Tell us how big and strong the baby is, how happy he is, what an amazing job we’re doing.

If you find yourself in the kitchen, tidy up and wash up. Observe the local practises (there may be equipment just for baby stuff). Try to find yourself in the kitchen regularly!

Take your cues. If we’re yawning vigorously, and asking about how you’ll get home, then take the hint and go.

Finally, here’s the best point of all. It’s the best. The winner.
“How can I help?”
Simple question. Ask it often.

We parents will thank you for following these rules. If not out loud (we’re busy), then in spirit.

We thank you.

I miss running

I haven’t been running for a long time – since my baby was born. There’s just not enough time and energy for it these days. We wake up for the second or third time that night at about six am, pull the little one out of bed and try to soothe as best we can. By the time we’re all fed and watered, it’s about 8.30 and I’m rushing to the bus stop.

I don’t really miss the long run to work though. It’s a slow four miles along the coast, avoiding traffic lights and the famous San Franciscan hills. I just jog at a steady pace. The distance isn’t hard, just the boredom. Long distance running is pretty dull – you have to have a lot on your mind to be able to run without getting really bored.

It’s running fast that’s more fun.
Not a run, not full speed even.
I mean a full-on sprint.

That extra burst of energy you throw in when you’re already going full speed. When your arms are pumping as hard as your legs, reaching out to claw the air closer. When the skin on your face starts moving against the bone. When you shift your weight down and back, so your feet can make maximum contact with the ground, but it’s still not enough. When you forget about breathing because it’s just another distraction. When every muscle in your body is working maximum power, maximum speed, just to propel you forward.

That’s the kind of running I miss.

Step lightly

At the centre of my childhood home was a staircase. Not one of the elaborate kind, just a brown, carpet-covered, twelve step staircase, with a hallway on each end.

We’d play on it for hours. Jumping off higher and higher points. My older brother could leap the entire distance – I don’t think I ever managed that. We’d slide down face-first, face-down, we’d vault the bannisters.

My father taught me two valuable lessons. One, he said I should climb the stairs in twos. I’m not sure why this was important, but I’ve done this ever since. From a couple of steps run-up, I can easily fly up in twos, threes, or even fours.

I take the London Underground escalator in twos as well, enjoying that satisfying moment of airtime the additional speed of the escalator gives you when you hit the peak.

The other lesson was that you should tread lightly. Even when hitting the stairs to climb four in one go, your step should be virtually undetectable. I can imagine why he thought this important (probably not the noise, actually, he was always just worried about us destroying his house).

I love moving without making a sound. To this day, I take my shoes off at the door, and move soundlessly around my apartment in socks. I avoid the squeaky floorboards. I step with the ball of my foot first. My heel touches the ground, but doesn’t take my weight.

Try it now, it’s actually quite fun. And harder than you’d think.

You have to walk confidently – no tiptoeing around the place. Learn your floorboards, your squeaky steps, and like an obsessive-compulsive approaching a crack, you go around.

I do the same outside the house. My shoes are Nike Frees. Maximum comfort, minimum noise. It’s a different walk, the placement of your foot is quite different. I stroll silently around the office, while others rattle the furniture as they stomp past.

Of course, it’s not without problems. At home, I scare the living daylights out of my wife on a regular basis. I now have to announce my presence as I approach: “I’m coming, I’m coming,”. I wonder what our neighbours think of it.

It’s harmless fun, I enjoy it, and it makes me more of a ninja than all you JavaScripters out there.

2011: This year I have…

My annual End of Year update. See previous years: 2010, 2009 and 2008.

Last year I said I’d:

  • Run another marathon.
  • Write some more.
  • Enjoy my new job and life in SF.

Well, I’ll score that a two out of three. Yes, I ran the marathon, but I stopped halfway (oh, the hills!); I didn’t really blog any more; but yes I enjoyed life in SF. Sometimes life makes things difficult, but my amazing wife and I got through it together.

We started the year in an empty apartment, sleeping on the floor, not knowing anyone in the city. By the end, I feel we’ve settled in and started to make friends.

This year I have: Continue reading 2011: This year I have…

Big News

I’m happy to announce the release of a project we’ve been working on for a while now: a new little human.

This project has turned out to be far more complicated than I ever imagined it could be, and so during development, my wife and I agreed to keep our news offline until the launch.

Now we’ve hit 1.0, and we’ve come to like the privacy. So we’re going to keep this one to ourselves, and enjoy ourselves without needing to overshare all the details all over Facebook and Twitter.

We’ve discovered a new respect for everyone who’s been through this development cycle before. Parents are heroes.

Let me know by email if you want to know more.