Monday, June 29, 2009


Blind respect for authority is the greatest enemy of truth.

- Albert Einstein

From Einstein, by Walter Isaacson, p67.

Monday, June 15, 2009

The Science of Computing and the Engineering of Software

In his keynote at QCon London 2009, Tony Hoare attempts to characterise science and engineering as two ends of a continuum that describes the roles of software people (industry and academia) and their relationships with one another.

The comments about engineers general dislike of mathematics are consistent with my observations. As someone who is currently studying maths, I wonder how much of that is due to the way it is taught at University?

His humble and pleasant responses to the questions at the end is wonderful. I observe a genuine search for truth and clarity with disciplined thought, that is often lacking in much software discussion.

Video and slides here.


There are two today.

Indeed the early airplanes didn't come with a specification. You just jumped into them and switched it on and hoped for the best. Much as we do with software today.
The second (in response to the relationship between TDD and specifications).
A specification is just nothing but a generalised test.
Both by Tony Hoare in his keynote The Science of Computing and the Engineering of Software at QCon London 2009.

Tuesday, June 9, 2009

Scala LinkedIn Tech Talk

Speakers: Martin Odersky (EPFL), Nick Kallen (Twitter), David Pollak (Lift)

Martin gives a good overview of who is using Scala, where it came from and where it is going in the first 16 minutes.

Throughout the video, Nick provides the most plausible comments I have heard to date regarding Twitter's motivation/experiences in moving from Ruby to Scala.

Saturday, June 6, 2009

F# Interactive on Mac OS X

Installing F# on Mac OS X is easy (with MacPorts):

$ sudo port install fsharp

I have version installed. Microsoft released a newer version several weeks ago, however it doesn't seem to have made it into MacPorts yet. Then to start F# Interactive:
$ fsi --readline --no-gui

There is basic history with the up/down arrows, but the usual emacs key bindings are not available, so entering and editing text is very slow and painful. I tried to fix this with rlwrap.
$ sudo port install rlwrap

As fsi is already using readline, rlwrap needs the -a option, See the man page for details, but on the mac you are required to provide a string (representing a password prompt the wrapped application might show) argument for this option. It is completely unnecessary for me at the moment, so I just picked something obvious as a placeholder.
$ rlwrap -aPassword: fsi --readline --no-gui

F# Interactive starts up with the usual splash text, but there seems to be some control characters automatically input and the console clears to something like this:
- 0;3R0;3R;3R;3R;3R;3R;3R

The emacs key bindings work, so this text can be deleted with C-a C-k and terminating the now empty line as per normal in fsi with ;; brings up the usual fsi prompt.

Unfortunately, if you type in an invalid expression eg. x = 3;;, the cursor is placed in the middle of the error message. When pressing up arrow to go back through the history, sometimes the prompt is replaced by partial text from a viewed history line.

So this is a pretty dodgy solution. If anyone knows how to get it to work properly, please leave a comment.

BCA v Singh The Story So Far 3 June 2009

I didn't realise Simon Singh was being sued for libel by the British Chiropractic Association until I read Tony's recent post.

Simon's account of the situation is here. It would be nice to read his original article that the BCA is taking action over, if someone can find it.

Thursday, June 4, 2009

Commercial Uses: Going functional on exotic trades

A peak into how derivatives trading works at Barclay's and their supporting Haskell application.


As we performed the work outside of a traditional it team, management was willing to take a risk on something that promised a good fit and rapid development process.

The Functional Payout Framework, fpf, is a Haskell application that uses an embedded domain specific functional language to represent and process exotic financial derivatives. Whereas scripting languages for pricing exotic derivatives are common in banking, fpf uses multiple interpretations to not only price such trades, but also to analyse the scripts to provide lifecycle support and more. This paper discusses fpf in relation to the wider trading workflow, and our experiences in using a functional language in such a system as both an implementation language and a domain-specific language.
The paper is here.