Whilst working on some EDI parsing I have been thinking about data validator attachment.
The classic pattern is to have an AbstractValidator and subclass as necessary. This results in a few more classes in the hierarchy and a lot of objects added unless you implement some sharing or a different approach with delegates.
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
I did a 10 minute presentation on a WPF application architecture using C++/CLI as a ViewModel to wrap a pure C backend, at the DevJam held by the Perth .Net Community of Practice. Here are the slides in PDF and PPTX format including a few notes which cover the points I made verbally.
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.
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.
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
Sub TestString(foo as String)
if foo is nil then
print "Yes, Strings can be nil, if they come from an empty Variant"
In case anyone wonders what a cross-platform developer who specialises in legacy software conversions has on his desks:
Andy's array of machines and monitors as of May 2009
From left to right: Continue reading
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