Showing posts with label personal. Show all posts
Showing posts with label personal. Show all posts

Wednesday, 26 January 2011

Reflections: The year that was

I'm a bit late to the table with this one given that we're almost a full month into 2011, but it's always good to take stock of what you've achieved in a year. And: better late than never, eh?

I was prompted to perform this exercise by a few other people's similar posts; perhaps you'd like to do the same thing?

I'll admit that I actually began writing this list at the end of last year, but have only just got around to finishing off my notes. Enough with the procrastination. I seem to suffer from a bad case of everything-is-more-important-than-everything-else-itis recently.

Amongst other things, in 2010:
  • I continued writing my regular software development column for ACCU's CVu magazine. This year I renamed the column, from the slightly stuffy and ambiguous "Professionalism in Programming" to the more lucid "Becoming a Better Programmer".
  • Speaking at developer of conferences. I gave two talks at ACCU 2010 in Oxford, and one in the Software Craftsmanship track of QCon London 2010. I also gave a presentation on iPhone development for Software East in Cambridge. It was refreshing to attend other techie conferences as a "mere" attendee.
  • Book contributions. I contributed three entries to O'Reily's 97 Things Every Programmer Should Know book, edited by Kevlin Henney.
  • Kept on developing... Produced a number of iOS apps for my company (DJ apps, Synths, and a hardware MIDI SDK). And worked on Mac apps, getting them available in the Mac App Store when it launched.
  • Kept on developing more... It's been gratifying that a lot of my publicly available code components have been very popular in 2010. Especially the iOS MIDI I/O library I wrote which has found its way into many iOS apps, and my work getting the Boost libraries easily available on iOS.
  • Continued graphic design and layout work, overseeing the layout and design of CVu and Overload magazines, as well as producing the covers for both publications.
  • Performed a number of techie book reviews. Mostly this year, I have been reviewing iPhone/iOS development books for ACCU.
  • Learnt new technologies: this year was definitely the year of git, which I now use for everything, including accessing Subversion repositories.
  • Preached on a Sunday morning at Old Windsor Parish Church.
  • Spoke at the wedding of two great friends, Steve and Frances.
  • Playing keyboards at three conferences in Cambridge (as well as regular stints in the Sunday morning band at C3).
  • Leading a smallgroup at C3.
  • Moved house (I now have a studio, wooo!)
Phew! That list's not exhaustive (I wonder what I've forgotten about), but its enough for now. It's been a busy year. And not a dull one.

2010 albums of the year: Bonobo's Black Sands, Brandon Flower's Flamingo, Foal's Total Life Forever, Seasick Steve's Songs for Elisabeth, Vampire Weekend's Contra, 65daysofstatic's We Were Exploding Anyway, St. Lola In The Fields' High Atop The Houses And The Towns, Lou Rhode's One Good Thing, Jonsi's Go, Goldfrapp's Head First, and Klaxon's Surfing the Void.

Thursday, 3 June 2010

Desert Island Books

I was asked to contribute to the Desert Island Books feature in the current issue of ACCU's C Vu Magazine by Paul Grenyer. This is a techie take on Radio 4's Desert Island Disks format. Programmers are asked to chose about five books, one of which must be a novel, and one or two albums.

It's an interesting choice to have to make, and shows a lot about you.

Here's what I wrote. The C Vu article begins with Paul's intro, which was pleasantly non-disparaging! Thanks, Paul!
While I was speaking aloud about ways to describe Pete Goodliffe, Jez Higgins suggested I use a recent comment from accu-general, ‘blond, balding, barefoot’. While accurate these aren’t a particularly nice way to describe Pete, although barefoot is at least accurate and not disparaging, like the other two.

When I think of Pete four things instantly spring to mind, his friendly personality, his bare feet, Cambridge, and curry. I have had many a curry and more than a few beers with Pete Goodliffe, both in Oxford and on occasion in Cambridge. When I think about Pete technically, his sound and solid technical knowledge and advice stand out. He has a lot of experience in software development and not only does he make it work for him to generate great software, he is always happy to help others and pass on the knowledge where he can (sorry Pete, I won’t mention the book).

I very narrowly missed out on working with Pete a few years ago, which was a shame because I would have learnt a lot.

So here I am, stuck on a desert island with nothing but the birds for company. Still, it could be worse; at least the conversation won’t get too geeky. I can’t help but wonder what kind of calamitous event catapulted me from my secure (if dull) office chair to this remote tropical location. Probably one of those stories that no one will ever believe back home, but it almost certainly involved a few whiskies, an ill-placed wager, and a temperamental particle physicist. Curse you CERN and Speyside!


At least I’ve got the decent weather. Let’s just hope global warming doesn’t shrink my new island home even further. Perhaps this stack of improbably placed books would provide me a small tower to sit on if the tide does indeed rise.


For my company on this forsaken isle, the gods of Fate and Calamity [PJG: I’ve never been described like that before!] have seen fit to bestow upon me four programming books, one novel, and two albums.


The computer books seem sadistic, cruel and somewhat ironic, as they haven't left me a computer [PJG: You didn’t ask!]. If they had, I’d ram it full if e-books, anyway. At least I’m good for toilet paper for a while. The CDs are just plain torture, as the swines didn’t leave me a CD player [PJG: See previous comment]. I’ll have to fashion one from a coconut tree and an albatross. Or just whistle.


So that means it’s only the novel that’s useful, then. Better pick a big one..


So what computer books should I chose? I could select four books I have always wanted to read, but never got round to buying. I could select four random books on a whim that might be interesting. But given that I won’t be able to fiddle with a computer any more (unless I find myself a convenient passing rescue party), I may as well select four classic books that have enthused me in days gone by. Books that will help me reminisce about the good old days when I had hair, when keys were rubbery, and when computers had rainbows on them.


And that is indeed my first choice. I’ll re-read First Steps with Your ZX Spectrum by Carolyn Hughes. I haven’t picked this book up in about 30 years, but it was my first ever programming book, and the thing that first gave me a passion for programming. I digested the entire book before I ever got near a computer. It has immense personal significance to me. And it also had pretty cartoon pictures of computers telling you what to do. I’ve not read a book like it since.


In a fit of nostalgia, I recently bought that same book on Amazon. For three pence. Seriously. Three pence. The postage was two orders of magnitude more than the book itself. That really does show how the value of knowledge decreases over time.


The next book providing this stranded programmer with a stroll down memory lane is Booch’s classic Object Oriented Analysis and Design With Applications. I may be developing a theme here, as I recall this book also had a number of interesting cartoons in it. But that’s not why I’m choosing it. I first encountered OOAD at university and it provided an incredibly clear, well reasoned and enjoyable overview of quality design techniques and the application of OO principles to software design. It was a genuinely great introduction to the philosophy of software design. It is also unusual, being one of the minority of hard-cover programming books

I’ve ever owned. So it might be useful for hitting wild animals with.


This book pre-dates the quadrilateral joys of UML, and I always loved Booch’s OO diagramming style. He represented classes by clouds; simply because they were easier to draw on the back of a napkin. The man’s a genius.


The Pragmatic Programmer by Andy Hunt and Dave Thomas will be my third book. It’s a wonderful clear, entertaining, and motivating discourse of the practice of programming from a personal and social standpoint. It’s the kind of book that I love to read, and one of the few books that you can read over and over again, because you actually want to.

It’s full of sage, refreshing advice.


However, it could have been vastly improved with a few carefully placed cartoons.


My last techie book is a hard call. Of the numerous books that have challenged and/or aided me in my career I’d struggle to chose just one. I could spend some serious

time digesting a hardcore C++ tome, like Bjarne’s TCPPPL, or any of Meyer’s or Sutter’s excellent C++ references. I could pick up a development process book, like Beck’s eXtreme Programming Explained (I remember that one being a very fresh read when I first opened it). Or I could drill into any of a number of design books, like the classic (and painfully obvious) Gang of Four tome or a number of later pattern languages. Perhaps something more recent would be a good companion like Michael Feathers’ legacy code book.


I’m stuck.


So I think I’ll select Sam’s Teach Yourself C++ in 24 Hours and be done with it. It’s bound to be wonderful nonsense, and is certain to produce an emotional response. Can’t be any worse than a Schildt book, can it? I think I’ll need the laughs.


Now to ship those books securely to my remote prison I’ll need to pack them carefully. I wonder if anyone will notice if I wrap them in a stack of ACCU magazines?


Presuming that I’m supplied with standard desert island accoutrements such as a copy of the Bible and the complete works of Shakespeare (perhaps with an accompanying infinite number of monkeys on an infinite number of typewriters – hopefully on their own island) then my choice of novel will be a collection of C.S. Lewis’ Chronicles of Narnia. I’ve always had a soft spot for these books (as with much of Lewis’ other writing). I love the Christian symbolism in them, and have started getting into them with my children, so these books would bring back a selection of old and new memories as I’m stranded here.


It just remains for me to make the choice of two albums. I’m an avid music lover with a wide and somewhat eclectic taste. However, should my soundtrack for a tropical adventure be something relaxing like a Sigur Ross album, something by Lamb, or Air’s chilled Moon Safari, or perhaps something more upbeat like a Kings of Leon or Killers album? My choice will instead be the awesome Flaming Lip’s masterwork Yoshimi Battles the Pink Robots, and Delirious’ Mezamorphis. Both of these are epic, dense, layered, meaningful and rewarding listens.


So that’s it. Spare a thought for me marooned here, and pray I don’t suffer from a coconut allergy or sun stroke.

Friday, 20 March 2009

Solo Software Development

Many people have been asking me how life in my little world of Solo Software Development is going. So I figured I'd best just write about it here and be done with it.

The prologue: those that know me will recall that just before Christmas my company laid off my entire office. Except me. I was the sole survivor. Left holding the bomb, as it were. We were using XP to develop cool C++ code.

It's an interesting experience moving from work in a highly social collaborative software development shop to a bloke on his own.

But I'm really enjoying it.

Working on your own presents a developer with a new and different set of challenges. I'm aiming to keep up a very high quality of code, and wherever possible will maintain the XP processes we used for development. Is that possible, and how much has my XP experience changed?
  • Pair programming was perhaps the most obvious casualty. Clearly, in a team of one there isn't any pairing. We didn't religiously pair program, but wherever pairing was missing we would always perform a code review. I really, really miss this discipline. The best substitute I can come up with is to carefully go over every checkin prior to committing.
  • Planning development with stories, tasks, etc is still very useful. I can keep the planning game, and I'm maintaining it all in the same xplanner system we used previously. I've switched down from two week to one week iterations, as that seems to fit my one-person efforts better.
  • Unit testing. I'm keeping up with this. Without the accountability of other coders sharing the codebase, TDD definitely requires more discipline. It's very tempting to skip writing the tests and just code form the hip. But I've enjoyed the benefits of automated tests for so long, I simply couldn't consider living without them. When I skip tests the code is often incomplete, buggy, or badly designed. My unit tests are the closest to team accountability I have!
  • Morning standup meetings. These provided a great heartbeat to the weekly development effort, and I miss them. Without this meeting I miss the chance to assess my progress and discuss if I'm still on track or doing the right thing. I've tried to set myself daily goals and reassess each morning, but honestly it's not going too well.
Being a one-man-band has given me the liberty to make some sweeping code changes that had been put off for a long time. With the whole team in place as they were too intrusive to other people's work, but they'd been annoying me for long enough that it feels great to purge my demons. I've had the chance to perform a lot of overdue tidying up of the code, the design, and restructuring of the file structure and build system.

There are many pros to my situation: for a start, I still have a job. And I get to work on good code, and I get to ensure that it stays good. Oh, and no one complains when I play music very loud.

There are many cons to Solo Software Development, many of which I will have to adjust to or work out ways to deal with:
  • No one to talk to
  • Motivation is harder to get; you have less accountability
  • No chance to learn tips and techniques from peers
  • Trips to The Wrestlers have taken a hit
  • Getting "stuck" on a gnarly problem halts the entire development effort, not just one person's tasks.
And many things are just plain different. For example:
  • Version control discipline is different. I needn't always create a branch for a piece of work. No one else is going to mind when I shuffle stuff around on the trunk. (That doesn't mean branching isn't valuable)
  • I'm spending longer on the phone to the managers in the US. My working hours are consequently changing.
  • I'm liaising with people I'd not have talked to before - service providers, estate agents, admin and finance people.
I'll be honest, work on my own isn't ideal, but it's not turned out as bad as I expected it to.

It looks like I'll be moving on to some different projects shortly. This will serves to highlight how good our old code was, but it's good not not get stuck in a ghetto.

And I'll be moving office soon. Sadly, to something less palatial.

Wednesday, 4 March 2009

Lifestyle changes

At the end of last year I got a new mobile phone and changed phone number at the same time. I'd deferred changing phone numbers for as long as possible since I expected it to be a massive hassle. It actually wasn't too painful; I don't use the phone that often and there weren't too many people who new my old number.

Of course there might be a few people that still have my old phone number (mental note: check whether the girls' school has my new phone number). But what I don't know people don't know won't hurt me, right? Or at least, I won't know that I don't know it hurts me.

So that bodes well for my next lifestyle change, then.

This week I have to move my email address. Move my email address? It can't be that hard can it? It's kinda like moving house, but with fewer vans and boxes.

This is an email address that I have been using for the last, ooh, more than ten years. Turns out it's a lot more personal than a phone number. Whilst I've been using my goodliffe.net domain as my main contact email address for some time now, the threat of an old email address actually disappearing (cthree.org is moving mail provision service and rationalising their addresses in the process) is a sobering thought.

When I consider how many services I've subscribed to with that address, how much software I've registered using that as a contact address, and how many products and suppliers might contact me using that address, I realise that if the old address suddenly goes poof! I'll be in a bit of bother.

So what online malarkey has my email address? Off hand I can think of:
  • Banks and credit cards.
  • Several professional organisations.
  • Service providers like electricity/gas and my ISP.
  • eBay.
  • PayPal.
  • Amazon.
  • Social networking places like: Facebook, LinkedIn, Myspace, etc.
  • Skype and MSN-ny services.
  • Many other shops (how can I remember them all?)
  • My internet domain registrations and DNS services.
  • Various product subscriptions.
  • My software registrations.
  • My book publishers.
  • My friends.
And I'm sure I'm missing a load of stuff there. Frustratingly, if the old address is disabled then it's much harder to move some of these; many services require access to the old address in order to change to a new address.

I hope that I remember everything. And I'm left wishing there was a decent way to track who has your contact details.

Bootnote: if you have my old cthree.org email address in your address book then please update it to my new goodliffe.net address. You can probably guess it! Normal service will be resumed shortly.

Monday, 2 February 2009

The curse of working from home

It's snowing here. Real, proper snow. Inches of the stuff. My daughter said "this is the best Christmas Day we've had this year." Great fun.

But it just highlights yet another problem with this pesky new information economy - it's harder to skive work :-(

Both of my daughters' schools were closed, so they're at home. Having fun. My wife's work closed, so she's at home. Having fun. My friends are all off work, too, so they're round our house. Having fun. It's too dangerous for me to cycle into the office right now, so I too stayed at home.

But I have an office full of computers and kit. So I kept right on working.

I should have been a builder...

Monday, 26 January 2009

The triumph of mind over matter

Nobody should let me loose on IT. I'm a programmer. Software, not hardware. Still, my primitive software brain has proved that mind can conquer matter. Eventually. Even if it only manages a somewhat Pyrrhic victory.

Example 1: Moving a tape drive

It was a simple requirement: move a working tape drive from a big shiny server into a ickle replacement server so I can continue to make backups. Here's the score sheet:
Time to completion of task:Months of effort, on-and-off (over Christmas, if that makes any difference)
Extra hardware bought that wasn't necessary: A new SCSI card.
Wasted money: £30. Ish.
Reason hardware wasn't necessary: The SCSI card wasn't the problem.
Reason new hardware was a particularly bad purchase: It didn't have the right SCSI connector on it anyway. Who knew there are about a million different SCSI connectors? Good grief! Is this some kind of old archaic connector standard that's gone through many,. many revisions, or what? What.
Observation: Software, not hardware. Don't let Pete near IT.
Does it get better than that: Yes. Sadly.
Other extra hardware hardware bought that wasn't necessary: A new tape drive
Wasted money: Ahem.
Wasted money: I'd rather not say
Wasted money: OK, about £500.
Oops: Indeed.
Reason hardware was a particularly bad purchase: The tape drive wasn't the problem.
Even better reason the hardware was a particularly bad purchase: I bought a tape drive with the wrong kind of SCSI connector. It didn't attach to either of the SCSI cards I had. Sigh.
So, mind over matter: Yeah. I kept fiddling. Installed kernel drivers. New versions of the Linux mt command. Googled for Britain.
And?: I fiddled with the SCSI card BIOS. A lot. And found a very well hidden random little setting that made it work.
Result: Mind beats matter. And the wallet.

Example 2: Redirecting a phone call

Less expensive, this one. And marginally less frustrating.

Another simple requirement: get my office phone to forward to my mobile, so if I'm not in the office (skyving) or away from my desk (making tea, or pooing) I don't miss a call. The phone system can do this. We've done it before. It just wasn't me that did it. And there's no one else around these days. How hard can it be? Consult the score sheet:
Time to completion of the task: A little under one month.
Observation: Phone exchanges are nasty, complicated, stupid things.
Time to find exchange: Quite some time. Turns out it's a nondescript box on the wall.
Time to find the exchange's UI: A little while longer. There's not even a light on the box on the wall. Turns out you just configure it by dialing magic numbers on your phone. Very magic numbers.
Time to find the manual describing the magic numbers on the phone: Not long. Once I figured I had to look for one.
Time to work out how to divert phone calls: Some time. The manual is a fairly incomprehensible jumble of text and numbers. You have to know the phoney rhetoric. I'm an email/instant message kinda guy. Yeah, I have a mobile. But I'm not a corporate phone whore. Turns out it's "Call-Forward External" Obvious when you know what it's called. And can deal with the lack of contents page or index.
Time to work out how to switch it on: 2 seconds.
Time to work out how to set the number it forwards to: 1 hour. Turns out it forwards to Speed Memo *49. Whatever that is.
Setting Speed Memo *49: Not too bad. Lots of random button pushes. A bit like playing Daley Thompson's Decathlon on my old Speccy.
Does the speed dial number dial my mobile: Yes
Does the call forward work: No
Why: Beats me.
Keep playing with the phones for how much longer: Oooh, weeks.
The epiphany: Although speed dial *49 works fine without adding the magic '9' for an outside line, if you add one (and the speed dial no longer works as a speed dial) the call forward now works.
Result: Skyving (or pooing) is easier.
So yeah, hardware and me don't really get on. Oh, and don't get me started on the wireless network. I've lost a lot of sleep over that one.

I'm having great fun cutting code, though. So it's not all bad.

Tuesday, 6 January 2009

2009: The scores so far

2009. A new year. A new world order. The scores so far...
  • Working days: 1
  • Features implemented: 1
  • Nasty, horrible, subtle bugs fixed: 1
  • Number of times I've fallen off my bike: 1
So, this year I do intend to finish off the circular buffer series and delight and interest you, dear reader, as much as I humanly can.

Of course, the value of "as much as I humanly can" has changed now that I'm a sole developer. So far, my new work regime (as a sole programmer) has definitely changed that: I'm working harder and later, on the phone to America more, and playing music louder. And there's less time to write stuff.

Tuesday, 16 December 2008

Two become one

So that's it. The last person left in the office has handed his keys in. I'm the only one left now.

We've reduced the industrial strength server rack into a couple of small PCs on the desk behind me with the same services (network admin, subversion serving, autobuilder, web server, file serve, backups, etc). I've reduced the QA lab to a suite of machines running on the desk beside me. 3 years' work condenses into a very small space when you have a big enough shoehorn.

It's a lot quieter around here. And the cleaner now has a lot less to do.

The only thing that's got bigger is the amount of work mounding up on front of me.

I'll let you know how XP For One works out...

Friday, 28 November 2008

The Last Man Standing

You may recall that my company has decided to shut down our Cambridge office and scale back its development operation significantly. Since that announcement I've been busily looking for other gainful employment, and have been pleasantly surprised that the job market is not entirely stagnant. I've had a number interesting leads that I'm still following up.

However, in a dramatic turnaround I have now secured a safe position in my existing organisation, which is a huge weight off my mind. (That doesn't necessarily mean I'll stop looking for other work, but it means I'm secure in the meantime). I am The Last Man Standing.

I was a little disappointed that we didn't have an Apprentice-style face-off for the position, with the CEO saying you're fired to team members in turn. In the end the selection process was little more than a job proposal, some phone calls to the states, and a little negotiation. No pistols at dawn.

This new role is going to be somewhat taxing. Solely responsible for the future of the codebase we've developed, reporting to the US, without the safety net of on-site QA or hardware support, working on my own (in a location yet to be determined). I'm genuinely unsure of how well I'll be able to work on my own; I've never done that before. It's going to be a bumpy ride...

And, I'm not entirely sure how I'm going to structure my development process. Let's be honest, it's hard to do XP in a team of one. Pair programming will be somewhat tricky, and code reviews hard to elicit. I'm going to need to build in something to replace the accountability in our existing development process. All comments and suggestions welcomed...

It's been a great three years working with a team of talented and motivated people, and a real shame to get to the end of the era at this early stage. There was a lot more potential in the team that we hadn't yet exploited.

Tuesday, 18 November 2008

Closing down. Everything must go.

Anyone want to buy a small, cute software development team? One previous careful owner. House-trained (mostly).

There's a direct connection between bankers in the US having a little private disaster party and the job security of the rest of the world. The ripples are moving gradually further out, and sadly the writing's now one the wall for my development team in Cambridge, UK. It's a real shame, but largely unavoidable: when you make consumer products, and distributers are not buying any stock at Christmas time, or can't get credit to do so, then you have a problem. And there aren't many solutions.

So our office will almost certainly close its doors for the last time in a few days.

Personally, it's a shame. It's not often you get to work on something you are genuinely passionate about. It's not often you are able to construct something truly excellent from scratch, to work on an excellent codebase, fully unit tested from the start, and to do so with a team of excellent programmers who you're happy to meet in the pub as much as the work place. It's a shame that the economic conditions will consign our codebase and products to a very small chapter of history. Plans for world domination have been put on hold.

Still, onwards. To new challenges. The first of which will be finding a job. I'm going to have to buy some shoes...