What's In Chris' Brain - Birthday Edition

Today is my 42nd birthday, which is 420 in internet years. I am feeling old but thankful that I have so many friends who keep lying to me and saying I'm not a programming dinosaur.

I haven't done one of these blog posts in a while, so I thought I would solicit some ideas from my Twitter followers and address a few of them.

Can I unit test in 140 characters or less?

No. Testing, in general, does not lead itself to brevity. The tools we use to test our code in an automated fashion can only abstract so much away from us before we actually have to write some code.

Large amounts of setup work is a sign that perhaps your code-under-test is doing too much. Sometimes it is unavoidable if you are using dependency injection to create multiple dependencies.

Of course, "large" is also subjective. I would offer my opinion on what "large amounts of setup work" means to me, but that would just lead to people arguing with me about testing when I'd rather argue about why dick jokes spoken at conferences are the tip of the metaphorical iceberg that represents white male privilege in the tech industry.


What are your favourite Vim plugins?

I group the plugins I use into two categories: "essential" and "everything else". Right now, I only have four essential plugins:

All other plugins swap in and out depending on my mood and whatever problems I am attempting to solve in code. Right now I've got the following

Is Grumpy Cat your Cat?


Life as a unicorn in Canada

This was asked tongue-in-cheek by my boss, who refers to me as his "Canadian unicorn" because of my unique status within the company but I think it's actually better re-framed as "what is it like working in a senior role when you are remote?"

First, my co-workers go to great lengths to make sure that myself and the two other remote workers in a group of over a dozen (I cannot remember all the people who are on the other team that makes up our group) are integrated into all decisions.

We have been experimenting with using Google+ Hangouts as a way for all the remote workers to see what's going on in the office. Despite my initial reservations that it's simply a way for nervous management to keep an eye on us I think it has worked out well. They've created a permanent "remote station" and people have walked up to it to find one of us and ask us directly a question.

It's growing on me, and I have also started looking at this awesome site on making remote pair programming smoother for inspiration on how to make it better. I already use my iPad as my "personal device" while working from home, so it seems natural to start using it as my visual gateway into the office.

Second, because I am remote and therefore trusted to work for long stretches of time with Eyeball Supervision (a.k.a walking up behind you and asking what you're working on) you get assigned tasks that can be done by one person (sometimes two if the other can be dedicated to the task) and take a while to do.

Unless you make the commitment to do remote pair-programming (which I have done with great success) you should get used to working on stuff in a directly-unsupervised fashion.

This suits me just fine.

Finally, make sure that everyone who has to work with you knows that just because you are remote does not mean that you are unwilling to do one-on-one communication with people. I have a soft phone that work has provided me, and I get phone calls from co-workers asking me stuff. I do Skype calls and lots of text chats.

In other words, I probably talk to my co-workers about work-related stuff as much as anyone else in the office.

What I miss out on are the social events that happen. That sucks, but I always make sure to do something at my end (and expense it ;) ) very similar to what my co-workers are doing. If they get pizza during a tech presentation, I make sure to order myself something similar.

Remember, being remote does not mean that you are invisible.

Productivity and task management tips

How does this grumpy guy get things done while working remotely?

  • pay attention in meetings so that you are not forced into positions that are untenable for you
  • work hard to get everything done that you have promised to do
  • work hard to communicate with everyone because you can't just walk over to their cubicle / office to bitch at them for not getting stuff done on your own schedule

That's it really. Get stuff done, do good work, and there will be fewer and fewer excuses for your employer to prevent others from reaping the rewards of your trail-blazing efforts.

A Day in the life of a Grumpy Programmer

  • woken up at 6am by the Office Manager, who is seeking cat treats for himself and the HR Manager
  • lay in bed in a daze until 6:45am when my wife is showered, dressed and heads downstairs.
  • wake kids up at 7am and putter around getting breakfast and lunches together
  • throw kids out of the house between 8am and 8:15am so they are not late for school
  • have breakfast, work out, shower and start my day

For the rest, just follow me on Twitter to get a feel for my mood. ;)