Mike is currently…

getting whipped at Halo

Pragmatic Version Control Using Subversion

[ subversion book ]

obligatory book plug

[ syndicate ]

rss 2.0 feed for boy meets world

[ contact ]

drop me a line

[ about ]

this is mike mason's weblog

[ eskimoman.net ]

original web pages



Google

Wed, 19 Nov 2003

This is an archived blog post. I've switched to using WordPress as my blogging software and have not migrated all my old posts. I believe strongly in not letting an old link die, so this page continues to work. Please do visit mikemason.ca/blog to read newer posts.

Motivation

Getting out of bed in the morning has always been a challenging experience for me. The alarm goes off, I lie there for a while, invariably toying with the idea of not getting up, pulling a sickie and spending the day doing useful stuff I never get time for at the weekends. But then something happens — I’m not sure what, guilt, fear, boredom — and I decide to drag myself out of bed and into the shower. There are very few occasions when I really want to get out of bed. Going on holiday is about the only one – even at Christmas I’d rather loll around some more.

My motivation for getting up in the morning is so I can go to work, earn money, live comfortably, have fun in the evenings, get married, have kids, pass on my genes, and die happily in my sleep an old man. But what about my motivation for writing software?

It was recently suggested to me that I should be doing more Open Source coding, and that it was a shame someone with talent was “just doing his day job”. Whilst I’m flattered someone thinks my skills are going to waste, I should point out that the reason I’m not doing regular out-of-hours coding is a lack of motivation. I’m motivated to code at work because it’s something I get paid for (let’s be honest about this – I work because I get paid, and I write code for a living because I mostly enjoy it). But I don’t see any point in coding just for fun. I don’t feel compelled to create a groovy new programming language just for the sake of it. I don’t want to write an application container unless I’m actually going to get some use out of it. I’m motivated by software that improves my life – maybe it makes things easier at work, maybe I can create a fancy website out of it to show off to my friends or make it easier to land a job, but I need a concrete reason to actually do something. I very rarely have the time or energy outside of work to do stuff just for fun.

I’m motivated by making my life easier, more fun, or less sucky. StarTeam sucks, possibly more than any other piece of software I deal with. To improve my life and everyone elses, I’ve decided to become a Subversion-ho. I’m already pimping Subversion to anyone who will listen, and it only makes sense for people to start using it if there’s decent tool support (I’m talking more than just TortoiseSVN here). First on the list is adding Subversion support to IntelliJ, for which I’m modifying Ian Bourke’s Perforate plugin. Perforate hooks into IntelliJ’s local VCS system and provides Perforce integration, by running the ‘p4’ executable and snaffling the output. Subversion support will work the same way. We’ll need a new name for the new version — ‘Perversion’ has been suggested… Also on the list is CC.Net, the .Net port of the original Java continuous integration server.

Posted 13:02, 19 Nov 2003.  

Thu, 13 Nov 2003

This is an archived blog post. I've switched to using WordPress as my blogging software and have not migrated all my old posts. I believe strongly in not letting an old link die, so this page continues to work. Please do visit mikemason.ca/blog to read newer posts.

If it barks like a dog…

I’ve been playing around with some new languages recently. I started learning Ruby, mainly because lots of people whose opinions I respect think it’s great, and because the guys are using it for the DamageControl build system. I started learning C# when I went on a .Net training course a couple of weeks ago, and I’ve also taken up Spanish.

The connection between all of these languages is that they were designed. Ruby was produced by a lone-genius-programmer in Japan, C# by a committee in Redmond, and Spanish by a bunch of priests in the middle ages. The differences in heritage are certainly reflected in each language. Ruby’s clean, concise, and really very nice to work with, once you get your head around some of its constructs. C# is, well, lots nicer than C++, has some features that Java really should have had, but overall has a bunch of cruft that is simply there to satisfy the vast set of customers Microsoft has. Doesn’t make for the cleanest overall design, and certainly means you can write very bad code that’s unreadable by others (but then that’s true of most languages). Spanish was invented by Catholic priests, is related to Latin, and was actually designed not to be too easy to learn – the Church didn’t want just any old peasant being able to pick it up. Must have been weird, inventing a language and then teaching yourself to speak it – Esperanto anyone?

Unlike Java or C#, Ruby doesn’t have interfaces and is dynamically typed. Because of this, you can’t go casting objects in the traditional sense. Given an Animal, you can’t check if it implements Dog or Cat, it just sits there waiting for you to ask it to do stuff (which you do by calling methods on it, or as the Ruby metaphor would say, sending it messages). I was discussing this with a colleague, and realised that in the past I’ve been very rigid and unhip in my thinking. If I ask you for a dog, and the thing I get back looks like a dog, barks like a dog, and smells like a dog, do I really care if it implements Dog? I’d probably be upset if it miaows, however…

Posted 10:31, 13 Nov 2003.  

Tue, 04 Nov 2003

This is an archived blog post. I've switched to using WordPress as my blogging software and have not migrated all my old posts. I believe strongly in not letting an old link die, so this page continues to work. Please do visit mikemason.ca/blog to read newer posts.

Walking The Path

Extreme programming advocates a number of practices, including unit testing, pair programming, and daily standup meetings. Before starting on an Agile project, I’d read the white book and thought I believed it. It all sounded great, like something I already knew that I was rediscovering. Since working for ThoughtWorks, I’ve experienced this stuff first hand. Test-first programming, pairing, red/green/refactor. Something I recently realised is that when I step away from these practices, when we skip our daily standup, when I write code without a unit test to guide me, when I fail to grab a partner for pairing, I know I’m doing something wrong. I get a nasty sinking feeling and I know I’m going to get myself into trouble.

Sometimes it takes a moment to realise why I’m feeling that way. Years of writing the code first, then exercising it manually, have meant it’s easy to slip back into the bad old ways. I took a walk around the office this afternoon and realised I should have written a bunch of tests before doing anything else. I went back to my desk, wrote the tests, got my green bar, and felt happy. I just need to remember that I know this is how it works. There really is a difference between knowing the path, and walking the path.

Posted 15:24, 04 Nov 2003.  

November
Mon Tue Wed Thu Fri Sat Sun
         
19

[ tim bacon ]

musings of an xp coach

[ ian bourke ]

enhancing core competencies since 1976

[ martin fowler ]

a cross between a blog and a wiki

[ alan francis ]

agile != good

[ paul hammant ]

part of the problem…

[ darren hobbs ]

the blog formerly known as pushing the envelope

[ mike roberts ]

on life and technology

[ chris stevenson ]

skizz-biz

[ joe walnes ]

joe's new jelly

[ rob baillie ]

oracle

Powered by Blosxom

Registered plugins: SmartyPants, antispam, bloglinks (v0.2), calendar (v0+6i), pluginfo (v1.0), and userstatus (v0.1)
This work is licensed under a Creative Commons License.