John’s Adventures

FogCreek Kiln, Distributed Version Control Systems And Me

FogBugzI’ve been a long time user of FogCreek’s bug tracking / project management / customer support / jack of all trades / master of all system FogBugz for many years. I use it at work (where it sits in the centre of our development process, we all revolve around it) but more importantly (ahem) for my own projects such as John’s Background Switcher it’s indispensable – without it I’d be lost. It handles all my support emails, defect and feature tracking, it’s my documentation repository, I use it to create release notes and when I’m doing beta testing of JBS I use its discussion forum functionality. There’s nothing better on the market and it takes away all the pain associated with managing and developing software so I can concentrate on what I’m actually building.

I’ve also used SourceGear Vault for version control for a few years and it has the handy ability to hook into FogBugz such that when checking in some code I can associate it with a case in FogBugz. This means I can look at all the code changes for a given case and see what it was that made me break some vital piece of functionality, although there’s no automatic way to see cases related to a checkin.

My good friend John Topley has been telling me how great distributed version control systems (DVCS) are for ages now (regular readers will know that John is forever telling me how great something is and then 6-12 months later I realise that he’s always right and follow up – like buying a Mac, an iPhone and many other things). When I attended the Scotland on Rails conference last year with John I saw a demonstration of working with Git (one of the DVCS out there) and I was impressed.

Very briefly, instead of having a central repository that you get the latest copy of the source from, make changes then commit them, you clone the entire repository (with all of its history) onto your machine. You can make changes, commit them (locally) and then when you’re ready push all those changes up to your central repository you can. You can also choose when to pull changes from the central repository locally – the cool thing being that you don’t actually have to update your local source with those changes until you’re ready. This means super fast checkins (since you’re not going over the network) and you can work in isolation while being able to unwind changes without affecting other people. When you’re ready you push those changes out so that everybody else can pull them to their local repositories. Suddenly things like branching, merging, multiple development paths and a host of things that can be painful to do in systems like SVN are much easier. If you really want to know about distributed version control systems then read Joel Spolsky’s tutorial here – hginit.com. What, you’ve read it already? Let’s carry on.

KilnSo a while ago I heard that FogCreek were working on a version control system – called Kiln – that integrated seamlessly with FogBugz but I was a bit busy at the time so added it to my “to get back to” list. A couple of weeks ago I finally remembered to have a look at it and bought myself a license (knowing that I had nothing to lose with their no hassle money back guarantee). After installing I started importing the source from my projects into Kiln. The first problem I had was that Vault seems to have no easy way to export the source history but since I’ve still got Vault running I can always go back and find older versions if I need to (which I most likely won’t).

The import was easy and it then became a case of getting used to using Mercurial (which is the DVCS system upon which Kiln is built) and how it does things. Having read Joel’s tutorial again (and paying attention this time) I was quickly up and running. Even though I’m the only person who works on my own projects (by choice), being able to have multiple cloned local repositories means I can try radical things out, take advantage of source control while I do that and choose to push the changes into Kiln or just delete the lot. And I don’t need to mess around creating branches only to later delete them or go through the pain of merging them in. Ultimately it means the time between checking in can be a lot shorter knowing that only when I’m finished with a piece of work do I need to push it to Kiln. In a team environment this rocks – you don’t have to worry about colleagues picking up your half-finished work and them complaining when things have broken.

When you’re developing on Windows you can install the “Kiln Client Tools” which puts TortoiseHg and some addons onto your system and makes authenticating and cloning repositories from Kiln dead easy. If you’re on a Mac you can install Mercurial tools yourself and it all works nice and smoothly. Since there are plugins for most development environments (like Visual Studio and Eclipse) you can use Kiln (Mercurial) seamlessly as though you were using SVN with the added security of it being a DVCS. Welcome to 21st century software development. Sweet.

The FogBugz integration with Kiln gives what I like to call “360 degree traceability” (something my friend Ian and I love about Team Foundation Server). If I commit a change with something like “Case 123: Fixed the divide by zero error” as the checkin note and push that to Kiln, then automatically case 123 will show that commit on its case page so I can see the changeset details and likewise when looking at the history in Kiln there’ll be a link from that changeset to case 123 in FogBugz. When trying to find out why changes have broken other parts of a system this sort of visibility can be incredibly useful, particularly where a team of multiple developers work on the same code base.

A Kiln Changeset

Another cool feature of Kiln which is absolutely no use to me on my own projects is a powerful code review tool. I’ve never really done code reviews in any place I’ve worked – it’s seemed like there’s never enough time to do it. However looking at how easy it is to create and manage code reviews in Kiln makes me think that were I using Kiln at work in my team then we’d definitely start using them. You’d pathalogically avoid branching and merging in Visual SourceSafe because it’s horribly hard to do (since SourceSafe sucks) but using a system like Mercurial makes that so easy you don’t even think twice about it. And so it is with code reviews, they’re so easy to do in Kiln that there’s no excuse not to do them.

In summary I’m very impressed with FogCreek Kiln. FogBugz has set a very high bar in terms of quality and ease of use and Kiln sits as though it was there from the start. Next time I build a development team and choose the tools I’ll be going down the FogBugz / Kiln route for sure, I’d be an idiot not to!

The Benefits Of Physio

I’d always heard how the older you get the faster time goes. That youth is wasted on the young. That football is a young man’s game. That time waits for no man. And that there’s nothing in this game for two in a bed (Bullseye circa 1986). And so as the years have passed I began to notice that my body didn’t recover as quickly as it used to. That training and playing regular football meant I spent more time with aches and pains than without. I started to get used to rising in the morning and grimacing as I got out of bed before my legs started working. I accepted that playing football meant having niggling injuries in my ankles, groin, thighs, hamstrings and a host of other body parts. I kept saying “one more year and I’ll hang up my boots”. Time was marching on.

My Idea Of MassageMy good lady hurt her knee and went to a local physio to get it sorted out. It turned out I have medical cover with work so she got her sessions paid for. Sick of hearing me moan about being stiff and sore she suggested I get a sports massage to loosen off these tired legs and booked me in. I’d been warned that if they found anything wrong they wouldn’t be able to help themselves trying to sort it out. I sort of imagined a relaxing, sensual massage where I’d walk out feeling loose and on top of the world. Instead what began was a series of fabulously painful sessions where I discovered just how much physical pain one woman (my physio) can cause. Remind me never to fall out with a physio.

Much to my surprise everything was wrong! Pretty much all the muscles in my body were as stiff as a board. My flexibility was non-existent. My posture was terrible for many reasons including the muscles on the left side of my body were even tighter than the right. Joints barely moved and I was only going to get worse the older I got. Things had to change.

So each week my physio would work on a particular area of my body then give me a list of stretching exercises to try in an effort to loosen things off and increase my flexibility. Gradually, week by week I noticed things starting to improve. I could move in ways I couldn’t before (and hadn’t even noticed that I couldn’t). I wasn’t feeling stiff and sore after playing football any longer. I was waking up without any pain at all. Suddenly I started to feel years younger and realise that old age wasn’t getting to me just yet!

And since I’m relentlessly (or tediously) disciplined I’ve continued doing about 20-25 minutes of stretching every night and continue to get more flexible. I feel years younger and realise if I keep up the regimen (which I will) I should be able to extend my sporting days many years further than I thought I would. So if you’re in your mid-30s wondering how long you can keep on being active – get yourself down to your nearest sports physio. You won’t regret it!

Next on my list is finding a way to get rid of all these wrinkles… ;)

Hogmanay at The Clachaig, Glencoe, Scotland

Mam na Gualainn

My good lady, a couple of friends, their dog and I spend 4 days over New Year staying at the famous Clachaig Inn up in the wilds of Scotland and were treated to great food and drink, beautiful scenery, cold but crisp weather and a good bit of walking. Anybody who’s ever been climbing or hiking in the area will know what a gem the Clachaig is and we were not disappointed!

This album contains 18 photos and 8 comments.

John’s Guide To Travelling With Hand Luggage Only

The Problem

An Airport QueueOne of the most tedious parts of flying (apart from being forced to fly economy class) is luggage. With the introduction of checking in online you can beat the queues to check in! Unfortunately instead you have to queue for just as long to drop your luggage off, so no gain at all. Next, when you arrive you have to go and collect it which means standing around for 20 minutes waiting for the luggage to be unloaded from the plane. Then you wonder if your luggage actually made the trip with you (if not you’ll end up in a world of hurt). When it does finally turn up you have to battle to get it then queue again to get through passport control with a lumbering suitcase. Wouldn’t it be great if you didn’t have to do any of that?

The Solution

Which brings me onto flying with hand-luggage only. For my recent trip to Los Angeles I decided to not check any luggage in at all as an experiment. I scoured the web far and wide for advice and the perfect piece of luggage that would be small enough to fit into an overhead storage bin on the plane, have enough room for 5 days worth of clothes along with compartments for my laptop, washing kit (more about that shortly), books, glasses and everything else I’d need for my trip.

The Luggage

After much research I settled on the Wenger Patriot case. It ticked all the boxes: it had a section for clothes, a removable laptop case (so that you’ve got another smaller bag to carry around at the destination), a pocket for magazines, a handy pocket that perfectly fits things like passports, boarding cards and directions to hotels and a roomy front section filled with pockets and sleeves for all the other things you need like phones, chargers, adapters, books and so forth. And most importantly it’s got a telescopic handle that makes wheeling it around an airport dead easy. You almost spend more time queueing to have your passport checked than actually flying these days so to not have it slung over your shoulder is a real bonus. It goes without saying that the bag meets all the regulations of hand luggage size so doesn’t even raise an eyebrow from the cabin crew.

The Wenger Patriot Bag

The Toiletries

These days you can’t carry normal sized bottles of shower gel, deodorant, shampoo and so forth on as hand luggage. Instead you have to put small quantities of each inside a clear plastic bag for inspection (as if liquid explosives were the only option for a would-be terrorist) which is a bit of a pain if you need a week’s supply. Sure you can rely on using the products you’ll find at your 5 star hotel when you arrive, but for those of you with sensitive skin or allergies that’s not an option. Fortunately Boots have a range of handy travel accessories like small bottles you can decant your favourite shower gel and conditioner into (I’d recommend you use separate bottles). For deodorant Lynx make these rather metrosexual perfume-like mini deodorant sprays called bullets. Now you wouldn’t catch me putting one of these in my ‘man bag’ (whatever that is) for a night out but they’re ideal for hand-luggage international travel. Add a small tube of toothpaste and a razor (yes, you carry disposable razors on as hand luggage) and you’re all set!

The Clothes

Generally I pack n+1 pairs of socks and pants where n is the number of days I’ll be away. I then throw in a spare pair or so of cut-off sports socks for special occasions. A few t-shirts, long sleeved tops, a shirt and a pair of ‘New Zealand’ trousers (they’re the ones that have zip-off legs that turn into shorts – two garments for the price of one) cover everything else and as long as I’m wearing a jacket that’ll get me through the local and destination weather I’m good to go. Oh, it can’t hurt to throw in a Hawaiian shirt if you’ve got room – they’re good for those unexpected party situations.

The Screaming Baby Blockers

My iPhone goes wherever I do so I can listen to calming music while flying / queuing for passport control / waiting in the departure lounge. So I bought a pair of the souped-up Apple iPhone earphones that you insert deep into your ear canal. They have the benefit of blocking pretty much all external noise so while you listen to podcasts and Boards of Canada you’re oblivious to that screaming baby in the seat next to you. Note that if you’re flying business class (as you should be) you’ll be far less likely to have a screaming baby next to you but the earphones will help block the irritating toothpaste company executive next to you telling you about the latest tongue scrapers and what their profit margin is.

The Results

So as I said at the start I decided to test this travelling without check-in luggage and I have to say it was a complete success! I didn’t find myself waiting around quite as much and I didn’t have that nagging feeling that my clothes weren’t going to turn up when I arrived – I had everything on me at all times. Of course when Microsoft decided to hand out laptops to everyone who attended the PDC my first thought was “how the hell am I going to fit that in my bag?!” but fortunately I was able to get one of my colleagues to put my Hawaiian shirt into his check-in luggage and I was all set.

So I think that from now on any trip I do of less than a week (except a snowboarding holiday – I’d never get my board in my bag) I’ll go hand-luggage only and cut out all that hassle of queueing and checking in bags safe in the knowledge that I’ll never be separated from my kit and can breeze through an airport like I own the place!

A Weekend In Lyon And The Fete des Lumieres

Getting The Bread

My good lady and I just spent a long weekend visiting our friends in Lyon, France. It just so happened that the annual ‘Fete des Lumieres‘ was on this weekend so we went to see what all the fuss was about. It turned out to be pretty cool with light, video and all sorts projected onto the myriad historical buildings throughout the city. All in all a great weekend with great friends, wine and food!

This album contains 17 photos and 8 comments.

My Thoughts On The Microsoft PDC 2009

I was lucky enough that my company paid for myself and a couple of my colleagues to fly all the way out to sunny Los Angeles and attend the Microsoft Professional Developer Conference last week. The idea of the conference is that Microsoft get a bunch of software people in one place and announce / explain all the cool new things they’ve been working on and what they’ll be releasing next.

Some Skyscrapers in LALet me start by saying that while I’ve made a career out of building software on Microsoft’s platform with their tools, I’m not a die-hard fan who thinks the Microsoft way is the one true way. I like to think I’m relatively open minded and can see the benefits of one platform over another. As such I tend not to bother with Microsoft beta software and try not to listen to hype about not-yet-released products and technologies. I prefer to wait until things are released for real and then see what they’re like. I could cite many instances over the years where things haven’t lived up to the expectations but on the whole Microsoft get there in the end.

Anyway, having spent a few days listening to various sessions discussing what tools and technologies Microsoft will be releasing early next year I’ve come away very impressed. I’ve worked on all kinds of software over the years from small standalone applications to web apps that have had to scale across a few servers, so have found myself spending a lot of time writing similar code over and over again that can be quite tricky (such as multi-threaded code that can handle all the various exception cases that are easily missed). What came across loud and clear was that, aside from Azure which I’ll mention in a minute, a great deal of support is being added to the languages and tools to make multi-core software development a lot easier to write. There are tools to make multi-threaded debugging easier to visualise and understand, simplified ways to handle concurrent processing without really having to think about locking, blocking, race conditions and so forth (clever people than I at Microsoft have done that for you). One of the most interesting things I saw was AppFabric which makes scaling services across multiple servers a whole lot easier than it currently is handing a distributed cache and so forth.

Azure – which is Microsoft’s cloud computing platform – was the big thing Microsoft were talking about at the PDC. It just so happens that my company have been working with Microsoft to spread out some of the calculations that one of our products performs to the cloud and are hoping to eventually run it across 10,000 nodes in time, so my colleague who’s been lucky enough to work on the project knows all about Azure. While Microsoft are somewhat behind the curve in terms of cloud computing for the masses, I’m very confident from what I’ve seen and heard from the inside and out that Azure is going to be a real game changer. Anybody who’s used development tools across platforms knows that Microsoft produces the best ones and Azure nicely plugs into these tools to the point where a Visual Basic programmer will be able – without having to be an expert in writing and deploying highly scalable software – to write an application like Facebook that can scale to incredible proportions at the click of a button. You’ll be able to take a standard web application and without a great deal of work deploy it to Azure and suddenly you don’t have to worry about the cost and maintenance of servers.

And if you’re not a Microsoft person that’s fine, you can run LAMP on Azure and I was rather surprised to see Matt Mullenweg appear during the keynote speech and talk about how you can run WordPress on Azure (in fact Oddly Specific, from the people behind LolCats, runs on Azure in that configuration). I found this the most surprising thing of all – that Microsoft isn’t doing its usual platform lock-in trick. Clearly under Ray Ozzie’s guidance Microsoft’s moving in new directions.

Of course Azure isn’t for everyone. Most of the companies I’ve worked at wouldn’t be at all happy letting their data live out in the cloud on Microsoft’s servers and don’t have the complex calculation requirements that the cloud can help with (i.e. being able to pay for the processing that you use rather than buying a load of servers you only use a tiny percentage of the time). But I can see people like the next Facebook, financial institutions, research institutes, NASA and so forth will lap it up. I just think of when my colleagues formed their start-up the first thing they had to do was buy a load of kit and that cost money. If they were starting next year instead all they’d need would cheap computers to develop on, no office or server room, deploy to the cloud, only pay for what they use, and they’d be able to do it with all the knowledge of developing on the Microsoft platform already. Like I say, I think it’s going to be a game changer. And as an added bonus I’ll finally be able to build John’s Dead Man’s Switch and know that in the incredibly unlikely event it becomes popular, it’ll be able to handle it!

A Week In St. Ives, Cornwall

Porthmeor Beach In Mist

My good lady and I just spent a week in the village of St Ives in Cornwall and were blessed with stunning weather, sandy beaches, great food and lots of great little shops and art galleries to explore. We came back with slight suntans, a lovely oil painting, memories of many delicious meals including one at Jamie Oliver’s 15 restaurant (which really was amazing), but above all we returned relaxed and refreshed, not wanting to leave. Which I guess is the point of a holiday! Not surprisingly I took a few photos to document the visit…

This album contains 33 photos and 10 comments.

John’s Background Switcher 4 Goes Live!

John's Background SwitcherJust over 2 years ago I started designing a major revamp of John’s Background Switcher. My goal was to take all I’d learned from tens of thousands of people using it, hundreds of pieces of feedback about what was good, what sucked and what was just plain confusing to produce a much better product. It didn’t take me long to write a short spec with a couple of diagrams and I was ready to go! So why has it taken me 2 years to make it happen you might ask? Well, I spent longer working on the existing versions of JBS than I’d have liked adding new features here and there knowing that to start work on JBS 4 would mean quite a big revamp and a long period of sustained work. Also, being part of a start-up meant my free time was somewhat limited. But after being acquired that settled down quite a bit. So on the 20th of May 2009 (that’s 4 months ago!) I started work, dedicating my evenings and weekends to creating JBS 4 and at long last it’s ready to go live to the world. Oh yes, and it’s still completely free!

I’ve redesigned virtually every aspect of JBS in ways you can see and an enormous number of ways you can’t. I’ve added dozens of cool new features, fixed countless bugs and tweaked loads more things to hopefully make this version by far and away the best – and fastest – ever. It also gives me a better base to take future versions of JBS to another level. If you’ve ever sent me an email or posted on my discussion forum suggesting a feature or filled in the ‘uninstall feedback’ page you get when you remove JBS then rest assured I pored over what you said to make JBS 4. Anyway, click on the screenshots below to see a few of the highlights of the new version and follow the link to the main John’s Background Switcher page here.

I must give thanks to the beta testers (you know who you are) who made sure JBS 4 didn’t come out riddled with bugs and ensured that it’s ended up even better than I’d hoped it would be! Cheers guys! :)

Anyway, go and get John’s Background Switcher now! Oh, and you can read the full release notes here to see what I’ve been up to…

A Long Weekend In Wales

Ripe Apples

Our friends Ben and Anna recently ‘escaped to the country’ and bought themselves a lovely bungalow in north Wales. In search of sunshine we spent a long weekend staying with them and it’s fair to say that we really didn’t want to come back!

This album contains 30 photos and 1 comment.

Rock Star To Marine Corps In One Minute

I don’t know about you, but every couple of years I get sick of being mistaken for a rock star, tired of women chatting me up all the time and have had enough of guys looking at me with jealousy in their eyes. When I can’t stand any more I decide it’s time to get my hair cut off to scare them all away!

Ok, all of that is a complete lie. What I meant to say was that every couple of years I get sick of shampooing and conditioning my hair all the time, tired of having to try and make it look anything other than a total shambles and have had enough of it getting in the way and making me overly hot when playing football. When I can’t stand it any more I decide it’s time to get my hair cut off so I can focus on the important things in life – and stop being obsessed with my hair!

And today was just such a day. Time to switch from rock star to military man. So here is that transformation process in all its glory courtesy of my lovely assistant. Sort of like going from a moth to a caterpillar. (If you can’t see it in your feed reader, click here).

There, all gone! And I’ve got lots of hair to start work on a Yeti costume! :)