Considering Visual Diff/Merge Tools

I was just prompted by Araxis Merge to renew support for USD 49. Whilst I appreciate its features, mainly on Windows, I’m not totally in love with the UI and so had a quick look around for alternatives. Prices below are for professional users, I’ve not bothered recording who offers what academic discounts or free versions for open source projects.

I found a 2004 comparison on Coding Horror which had quite a few people raving about Araxis but Jeff and others pointing out that Beyond Compare is much more affordable and others suggesting ECMerge from Ellié Computing. Continue reading

Congratulations to Real Software – REALbasic wins Best Programming Language

Code Project has long been one of my favourite sites for example articles, ironically mainly in the MFC space.

I was surprised and impressed to read this morning that it held a Member’s Choice award for the first time and that REALbasic won the Best Programming Language category.

I hadn’t realised that REALbasic users were in the CodeProject community because there are zero articles on there about REALbasic. I guess the awards were publicised and people voted. I’m not disagreeing with the deserved result but I think it is ironic that a site which has a bunch of .Net categories, even listing C++/CLI separately under their language categories, found itself awarding this unknown language. Maybe now REALbasic will appear on there.

iPhone development on PPC

I’m off to WWDC in a couple of weeks (via Milwaukee) and travelling with my trusting Powerbook 12″ which is still a great airline machine.

A large part of the reason for getting back into Cocoa and attending WWDC is wanting to do some iPhone development but I didn’t expect to be able to do that until back in Perth.

After a few searches for others in like circumstances, Alex Blewitt came to the rescue with a neat script that made installing the iPhone dev kit on PPC a smooth experience, thanks Alex.

Yes, REALbasic strings can be nil (or behave like they are)

I was amused to find myself reading a posting analysing some of my code, which I’d followed because the title intrigued me – Strings Can Be Nil, Even If They Can’t Be Set To Nil 

When Charles says he is surprised that some of my code works and Mars chips in and says he thinks it contains a redundant check, I get a little concerned. The port of rbrw-core was a lot of work converting thousands of lines of C++ so I may well have carried some C++ idioms across without thinking.

However, I am aware that a lot of the rbrw code uses variants and I may have written that test after a nasty experience (yes, it needs a comment, if so).

To assuage my curiousity and conscience, I flung together a quick check for variants and nil strings, available on Google Code.

The important bit is invoking the string with a variant, which does indeed appear to pass a nil string to a method, as seen below. Based on Charles’ comment, I’m leaving the verdict open – if indeed the string comparison of is nil is also fired by an empty string, we can’t tell what is happening unless writing plugins to explicitly return nil strings.


dim v as Variant
TestString v

Sub TestString(foo as String)
  if foo is nil then
    print "Yes, Strings can be nil, if they come from an empty Variant"
  end if
End Sub

A Very Orange Wing

I couldn’t resist taking a couple of pictures of GR8 FUN which is an entire Goldwing done in Safety Orange!

The engine is literally twice as wide as my admittedly skinny MZ Skorpion, seen parked next to it with helmet and jacket draped over the fuel tank.

A very orange Goldwing seen May 2009

A very orange Goldwing seen May 2009

A very orange Goldwing seen May 2009

A very orange Goldwing seen May 2009