Thursday, 15 November 2012

Writing: The Advanced Coding Test

The latest issue of ACCU's CVu Magazine is out now. It contains my latest Becoming a Better Programmer column, The Advanced Coding Test. In it I present a thought experiment comparing the act of coding to driving. (Well, they do both occasionally lead to crashes, after all).

Thursday, 20 September 2012

Writing: The Curious Case of the Frozen Code

The latest issue of ACCU's CVu Magazine is out now. It contains my latest Becoming a Better Programmer column, The Curious Case of the Frozen Code. I present an investigation of the (mythical) state of code freeze, and the edifices of development process we erect around it.

Thursday, 9 August 2012

10,000 Monkeys (Cartoons)

I've been doodling wee cartoons on various coding topics for some time now. They've become pretty popular. Indeed, one of my Becoming a Better Programmer magazine columns was full of them.

I have set up a Tumblr blog for them. Feel free to stroll through the archives at

Friday, 13 July 2012

Writing: The Art of Software Development

The latest issue of ACCU's CVu Magazine is out now. It contains my latest Becoming a Better Programmer column, The Art of Software Development. This time I present a fun little diversion for your reading delight, your visual delectation, and to stimulate your development prowess.

On the cover you can just about make out some pseudo-UML I once scribbled on a whiteboard in the vein hope of understanding someone else's tangled code structure.

Friday, 22 June 2012

Speaking: Worship Collective 2012

Adding to my speaking engagements this summer, I'll be leading a session at the Worship Collective conference at C3 in Cambridge.

I'll be taking a seminar for the keyboard players, where we'll look at technique, working in a band, attitudes, and a hand-picked selection of interesting, useful, and practical stuff.

Speaking: Mobile East

I'll be speaking at the Mobile East developer conference next week, on Advanced iOS Development.

Session details are here for your viewing pleasure. Selected highlights:

This presentation will take you from a basic level of understanding of iOS to look at advanced topics that will make you apps more polished, better designed and, ideally, more successful. 

Abstract concepts are no use, so in this talk we'll take some existing successful commercial iOS applications as a case study, and see how a selection of iOS technologies and techniques combine within it.

Thursday, 24 May 2012

Writing: Our Differences Make Us Stronger

The May 2012 C Vu magazine is out now - it contains my latest column, Our Differences Make Us Stronger. This is the second part of my discussion of how a development team must interact with the QA department to craft excellent software.

Find out more details from the ACCU website.

Friday, 20 April 2012

Installing Realtek USB WiFi drivers on Mac OS Lion

The airport card in my laptop died and I couldn't get it fixed before going away for a week. So I needed a stop-gap solution. There are many USB wifi adaptors on eBay that claim Mac compatibility. Some are super-cute little things that only just stick out of the USB port (how they have enough antenna showing to get a signal is anyone's guess).

They almost all seem to use a Realtek chipset. (You can verify this by going to System Information on your Mac, opening the Hardware>USB page, and selecting the device. The bottom pane shows the device info, included the manufacturer name (look at the Vendor ID line).

If you're lucky, you'll get a driver CD bundled. If you're very lucky it's even got some Mac drivers on it.

Don't even try to use them! They'll be hideously out of date.

And don't go to the Realtek website and download the driver that matches your chip number. no doubt that too will be hideously out of date.

I wasted hours doing that; it reminded me of why the Mac is (usually) a so much better computing environment that Windows and Linux. I wasted hours fiddling with different driver versions, 32-bit and 64-bit kernels, cleaning out old driver installations, Googling forum postings, trying other driver versions, and all sorts of tedious tomfoolery.

The simple solution I found, which works on Lion, with 64 bit kernels and 32 bit kernels, is to install the following Realtek driver:

Select the RTL8188CUS>Others>Mac OSX 10.7 Install Package (UI ver 1.9.7) version.

Even though the chip number doesn't match my USB key, the software is perfectly compatible with older devices. And it has the added bonus of working.

Remember: the driver doesn't integrate into Apple's airport utility. So you'll have to run a separate client to set up the wireless network. It isn't pretty. But it works.

Speaking: Forthcoming talks

News on a few talks I'll be giving:

  • I'm speaking at ACCU 2012 next week. Details of my talks are available here. This year I'm in the "tools" track. Make of that what you will.
  • I'm speaking at Mobile East in June, on Advanced iOS Development.

As ever, I promise plenty of fun and interest. And technical content.

Wednesday, 14 March 2012

Writing: Getting One Past the Goalpost

Last week I approved the printed cover proofs for the March issue of ACCU's CVu magazine, so it will be landing on doormats very shortly.

It contains the latest instalment in my Becoming a Better Programmer column. This one's called Getting One Past the Goalpost, the first in a two-part series investigating how software developers interact with the QA team. It's a look at how we can foster constructive relationships and a positive development process.

For this month's cover, I was thinking about colour, and different colours models. This is reflected in the illustrations I've incorporated.

Saturday, 25 February 2012

Xcode 4 C++ class template updated

I've updated the C++ class template for Xcode 4. You may want to take the latest from github and re-run your installation scripts.

This version now:

  • Allows you to specify a class' (optional) superclass
  • Allows you to add a virtual destructor
  • Can make a new class non-copyable (with hidden copy constructor and assignment operator)
  • Has a sexy icon that matches all the other Xcode template icons.

Could life get any better?

Grab the update from Github here.

Thursday, 23 February 2012

Xcode 4: A C++ class template

Xcode 4 C++ users, rejoice!

It's really annoying that Xcode 4 has never shipped with a template for creating a new C++ class, with header and implementation file.

It lets you create objective C classes with header and implementation. But you always have to create a C++ header file in one step, and then the implementation in a second step.

And, honestly, why do those steps take so long to update the project?

It's not good enough, and so here's the answer...

The Xcode 4 C++ Class Template

I've created a super-simple to install C++ class template and installer.

Grab it on Github here.

Using it is a simple case of running a script and restarting Xcode. I've built in support for Xcode 4.2 and the new Xcode 4.3. The installer runs a number of sanity checks to make sure you're not about to install something dumb on your computer.

Full docs are in the README file up there.

I hope you find it useful. I know I do.

Making your life better, one class at a time...

Wednesday, 11 January 2012

Writing: Coping With Complexity

The January issue of ACCU's CVu magazine is landing on doormats now. It contains the latest instalment in my Becoming a Better Programmer column. This one's called Coping With Complexity. It an interesting wee treatise on managing (and fighting) complexity in our software.

It's got sticks. And blobs. And people.

I have to say, this month's issue is a bumper one - you never get a feel for this when reviewing the PDF galley proofs. Well done all involved.

Thursday, 5 January 2012

Installing Groove Agent 3 (Update from Version 1) on Mac OS Lion

It all seemed so simple. I wanted to install my trusty copy of Groove Agent 3 on a new Mac OS Lion box. The license is on my eLicenser already. So it should just be a quick insert-DVD-and-install job.

Shouldn't it?

Of course not.


I've been using Groove Agent for years now. My version 3 DVD was an upgrade disk from the original version 1. If you run that DVD's installer it says you have to have version 1 installed to upgrade. That seems fair enough.

Except you can't install Version 1 on Lion; it is an old PPC application, and Lion doesn't support Rosetta any more.

It's a deadly circle; I now legitimately own some (not inexpensive) software that I can't install. Pete is not a happy bunny.

Attempt 1: tech support

I sent a tech support email through my Steinberg account. Not with much hope, I have to admit.

That was ages ago. What do you think happened?

Yup, you're right. Not even got a "we've got your message and it's in a queue" reply.

Thanks, Steinberg. Thanks a bunch.

But where there's a will, there's a way...

Attempt 2: Check for updates on the website

The Groove Agent 3 support site has a few update installers available (which, naturally, need the full program installed first to be able to update).

There is also a new "full installer" for the Mac to replace the DVD's installer for first-time users. This shows great promise.

Once downloaded, I run the installer. "Insert the Content DVD" it asks (impolitely). OK, again this is fair enough. The content is enormous, and is on the DVD already so I shouldn't need to download that again. It also proves that I own the product I'm installing.

I insert my Groove Agent 3 DVD into the machine. The installer doesn't recognise it. No message. No hint. No continue button. It just sits there.

Of course, it's looking for the "Groove Agent Installation DVD" not the "Groove Agent Update Installation DVD". Swines.

Absolute swines.

But where there's a will, there's a way...

Attempt 3: Trick the installer

Being a techie I wonder. I wonder how rubbish they really are... Is the installer just looking for a DVD called a certain name?
ln -s "/Volumes/Groove Agent Update DVD"  "/Volumes/Groove Agent DVD"
Run the installer again.


The installer runs, it copies over the content from the DVD and there's my Groove Agent 3 sitting there, ready to run.

Goodliffe: 1, Steinberg: 0, (Steinberg Customer Support: -5)

But, we're not there quite yet

I fire up Cubase, pull in the virtual instrument, and a window pops up asking me to locate the content files. That's the content that the installer just installed. Into a standard place. Didn't it think to look there itself? Sheesh.

That's OK, I'll just use the file browser dialogue that appears to load it. Except that the content is automatically installed into "/Library/Application Support/Steinberg/Groove Agent".

Notice that first bit. Yes, "/Library". The folder that Apple now HIDES from users in Lion so they can't fry in innards of their OS. I physically can't navigate to the content. Genius.

The trick, of course, is to launch Finder, open the "Go" menu, and hold down the Command key. At this point "Library" magically appears in the middle of the menu's list of places you can go to. Select that folder. Navigate to the right directory in the Finder window that appears, and then drag the target directory into the patiently waiting application's file open dialogue.

What a palaver.

But that's it, I now definitely have Groove Agent 3 installed and running.


Of course, I have a clue what's going on inside my computer, and was able to engineer this solution based on my experience and a selection of educated guesses. Goodness only knows what the average user would be able to make of this situation.

(Hopefully this blog post will help someone in time. Let me know if it does!)


It seems that every time I want to sit down an use my computer to make music, the computer wants some love, wants its nappy changed, or wants feeding first.

 New driver required! Update available! Incompatibility detected!

Technology really can get in the way of being creative.

Tuesday, 3 January 2012

Speaking: BCS Newcastle

I will be speaking at BCS Newcastle on the 25th January. I'll be giving my iOS development talk; a quick start in developing applications for iPhone, iPad, and iPod Touch.

Here's the synopsis:

The iPhone, iPad and their iOS relatives are becoming an increasingly popular and important platform. More and more developers are looking into what the platform can offer and how to harness its power for their products.

In this presentation, an experienced iOS developer provides a boot-strap in iPhone development. The talk is an overview of how to get started as an iPhone developer. You will gain an understanding of the platform, the tools, and the core technologies, including:

  • The main languages: Objective C/C++
  • Using the Xcode IDE, and various deployment/testing tools
  • Common iPhone/Mac OS design patterns, idioms, and practices
  • Becoming a native: how to “think in iPhone”
  • An overview of the libraries and facilities that exist
  • Limitations of the development environment.

We’ll see the pros and cons of iPhone development. You will leave with an understanding of how to deploy your applications on the device, and whether it is the right platform for you to target.

Speaking: ACCU 2012

I will be speaking at the ACCU 2012 conference in Oxford, UK this April.

I'm giving two presentations this year, both this year on version control:

Version control is never a laugh a minute topic, but I plan on these talks being interesting as well as informative. There will be the requisite amount of jumping, tomfoolery and general barefooted nonsense that regular attendees have come to expect.

This year's ACCU conference programme looks very strong, with understandable focus on C++ since the ink is still drying on the newest version of the language standard. But it still covers a broad range of topics, so there's something for everyone.

If you care about programming and live in proximity of Englandshire, I strongly suggest you check out this conference. It's one of the highlights of my programming year.