Thursday, October 18, 2007
Email, Calendaring, Baudelaire, and "The Usual Suspects"
“The greatest trick the devil ever pulled was convincing the world to use Microsoft Exchange Server.”
Inspired by Alex, here’s a brief laundry list…
There’s an emphasis on scripting languages here, because they’re what I’ve been playing with lately… They aren’t the beginning or end of the languages that I use or am interested in. Also, defining one’s skill set by how many languages’ syntax one knows often turns out to be limiting in a bunch of ways.
For a long time, I thought it would be great to have a pressing, practical reason to do some functional programming again. Some of Ruby’s features recapture enough of that flavor that, I don’t find myself missing FP techniques as much as I would from C or Java.
In the last six months or so I’ve had a chance to look at OCaml and Haskell in conjunction with a project I’ve been involved in since October. I’ve also been spending an increasing amount of time around R, an open source cousin of SPLUS. I strongly suspect that ideas from these languages are going to creep more into the mainstream over the next five or so years.
“The greatest trick the devil ever pulled was convincing the world to use Microsoft Exchange Server.”
“The greatest trick the devil ever pulled was convincing the world to use Microsoft Exchange Server.”
A couple of years ago, while writing some C++ code, I was compelled to look around for a unit testing framework, in the spirit of JUnit, which I’d been using profitably for a couple of years, that I could use with C++ code.
I expected things to be less nice than they were with Java and JUnit. After all, early binding, the type systems of C and C++, the fashion in which physical dependencies are managed, and the frequently static nature of things should all be expected to contribute to making things less nice, fast, flexible and friendly than they are in Java.
Add to that the ever shifting and historically abominable “standard libraries” that C++ has been blessed with, and the gardens of supernatural pleasure from which flow such springs of joy as C++’s exception handling system, templates, other gratuitous preprocessor abuse, RTTI, and so on, and my expectations weren’t high…
...and they weren’t met. The first thing I tried, whose name was the most obvious pattern match for a JUnit-esque thing ported to C/C++ was a bit of a horror show. The framework and the included examples were tangled together like the probable genealogies of the C.H.U.D. The documentation sucked dead bunnies through a kinked krazy straw packed with gravel. On Windows, things were unnecessarily riddled with gobs of MFC crap that should have been stranded years ago on a remote island, bereft of any materials out of which a boat could be fashioned, in the very middle of a doldrumy sea of poisonous yet somehow shark-infested water. I can’t imagine what menagerie of horrors beyond hororrs, and nuclei of undreamable hideousness, must have infested the framework in MFC’s place under Unix.
Now, I need to revisit the problem. I’ve heard stories that CxxTest addresses, or at least refuses to inflame, the sorts of things that gnawed my craw about the other ones I looked at… I’m hoping that this is true and looking forward to giving it a try.
In experimenting with Rails on Mac OS X, I’ve found that Locomotive is the easiest way to get set up and moving. It includes Ruby and Rails, in recent versions, and installs in an entirely self-contained way that won’t clash with any existing installations of Ruby, Rails, gems, or anything else you have on your system. It also includes a Ruby that’s been compiled with a few goodies (like GNU readline) that the version distributed with Tiger lacks.