Opening the floodgates

In order to potentially double the readership of this blog from 2 to 4 people (Hi, Mom!) I've registered with Technorati, to see how that helps people find my site. You can visit my Technorati Profile and see for yourself. Note that there's only 1.1 Million blogs in my path as I skyrocket to the top!

Coupling: Bill and Steve

Long ago, I was pointed to a most insightful post about coding culture at Microsoft (Bill's company) compared with Apple (Steve's company). They observed that at Microsoft, there is a tendency is to use trees as the preferred data structure. Trees are certainly convenient and appropriate for many underlying representations, and are generally easy to manipulate. At Apple, on the other hand, there is a tendency to use hash tables.

Feet to the fire...

No, I'm not talking about lazy Winter evenings on a rug... I'm talking about the responsibility of journalists to investigate, analyse, ask difficult questions, and cut through the hype and hyperbole.

So when a Senior Editor of eWeek sits down with a Microsoft SVP to discuss the recent deal with Novell, you would expect some thorough Q&A on this highly significant development. Instead, you get what reads like softball questions and slick pre-prepared answers.

iPhone musings

It's amazing how many articles about the iPhone have been produced online and in print over the last year or so, dedicated to covering the minutiae of Apple's big splash. Frankly, not owning one, I'm getting a little tired of seeing articles about it everywhere I look. So, I figure if you can't beat them, join them - and if every single other blog can have an opinion on the iPhone, so can I. (This was actually written a few months ago, and I cleaned it up for publication in an attempt to catch up on my backlog of half-written articles.)

STL Iterators and Performance

The Standard Template Library (STL) for C++ provides a set of powerful and flexible templated container classes. Never again will you have to hand-craft a doubly-linked list (and get your pointer arithmetic mixed up) -- just use std::list<T>.

Now most of the idiomatic C++ code I've read that uses STL iterators uses the prefix operator++ to move the iterator forward. And so I had long ago adopted this too, with a vague recollection of having read somewhere that it performed better. But why? Good question... (Updated: fixed formatting.)

Debugging NSBezierPath drawing

I was working on some Cocoa programming, making heavy use of NSBezierPath. I wished there was an easy way to see just where my control points were ending up, and how the curves were being constructed. So I wrote a category method to add such a thing to the NSBezierPath class. It is here for all to share.

STL warts - when removing isn't

Pop quiz: what does the remove function provided in the C++ STL algorithm package do?

std::remove( list::iterator begin, list::iterator end, T& t );

Simple question, surely... Your answer?

A subtle bug involving C++ temporaries

I tracked down a subtle little bug the other day. My code was crashing on a line that should never crash (and we've all heard that one before!). It arose from doing two quite innocuous things, but when combined - disaster! I decided to write it up as an example to my 3 readers and Google.

Gloves off: Mercurial vs Subversion, the need for speeeed

I use Subversion on a daily basis, and Mercurial a few days a week. I have noticed that Mercurial seems to be faster with a lot of common operations, but I figured it wasn't a fair comparison as Mercurial was always operating locally, while Subversion has to hit the network for many (but certainly not all) operations.

So I decided to do some very rough performance comparisons on a local repository. And after some quick timings of common operations, this is what I found...

(Updated: fixed table and added graph.)

Local Talent

There are so many fantastic Aussie bands out there now (some from my home town of Melbourne). Some of my favourites I've been listening to recently: