Developments in Software
Originally published on macresearch.org, around 2007. Reproduced from the author's archive; some links may no longer resolve.
Developments in Software: Python + Cocoa = Checkout, Parameter-Sweeps with GridSweeper
A couple of interesting software developments appeared on the web today. The first was an article (link no longer available) on Apple’s developer site about the Point-of-Sale (POS) software Checkout (link no longer available), and the second was a series (link no longer available) of posts on Ed Baskerville’s blog about GridSweeper.
I’m sure you’re asking yourself what POS has to do with scientific research. Not much, but in the case of Checkout, it is not what it does, but how it does it. It is written with the Cocoa APIs — like most good Mac software — but more importantly, it has been developed in Python. The PyObjC (link no longer available) has been used to let Python and Objective-C talk to one another. But most impressive of all is that you would never know. I recently saw Checkout demoed, and it looks and feels just like a Cocoa app written entirely in Objective-C.
There are many scientific developers that feel right at home with Python and other dynamic languages like Ruby. Anyone that has used these scripting languages knows that they can make you many times more productive than C or even Objective-C. The libraries they include make parsing text, networking, linear algebra, and just about anything else almost trivial.
In my view, applications like Checkout usher in a new era in software development, and an exciting opportunity for more scientists to start developing their own applications. Checkout proves that you can write great software with a scripting language; software that you would never guess was not running via an interpreter. Expect to see more and more projects going down this route.
I personally think we have reached an important juncture in the history of software development, as important as the move from the procedural programming paradigm (eg C) to object-oriented programming (eg C++, Java, Objective-C). The transition from compiled languages to scripting languages in mainstream software development will increase productivity considerably, and should allow small research groups to produce much more powerful applications than was previously possible.
And Apple thinks so too: by formalizing the interface for Cocoa scripting bridges, and embracing Python and Ruby as first class citizens in Leopard (link no longer available), there should be no barrier now to anyone choosing a scripting language for Cocoa development. And apps like Checkout show that there shouldn’t be any doubts about the performance of such applications.
I also wanted to mention GridSweeper, because, although its not ready for the mainstream just yet, it looks like a promising project. GridSweeper (link no longer available) sits above grid technologies like Xgrid; you use it to define computational experiments, rather than dealing with individual tasks and jobs. You can specify whole series of runs comprised of various parameter sweeps. In some ways, it is a bit like GridStuffer (link no longer available), but not limited purely to Xgrid. Let’s hope Ed has it all up and running by the end of the summer.