I am a Reader in Performance Engineering in the Department of Computing at Imperial College London. I have recently (partially) retired, having spent more than 15 years as Director of Undergraduate Studies.
My main research interest is performance engineering, with an emphasis on software performance analysis and optimisation using performance models. I am also interested in high-level languages, formalisms and tools that can be used to build performant software whilst reducing the software engineering burden. Related to this I maintain a keen interest in the Haskell programming language and its many applications.
I am currently developing a system called Morse, a system written in Haskell for automatically solving cryptic crossword puzzles, with explanation of the wordplays. For example (Spectator 2407, 11a, solution time 0.27s):
The clue is: After hint turned up, end of match had leftist outwitted (7) I think the solution is "EUCHRED" Let me explain... I think the answer is supposed to mean "outwitted" I think "after" indicates a charade (juxtaposition) of two sub-clues: 1: I think "turned up" indicates a reversal The text "hint" resolves to "cue" Reversing this gives "euc" 2: I think "had" indicates a charade (juxtaposition) of two sub-clues: 1: I think "end of" indicates 'take last letter(s)' "match" is verbatim text The result is then "h" 2: The text "leftist" resolves to "red" So, the two components to be juxtaposed are "h" and "red" The result is "hred" The two components to be juxtaposed are "euc" and "hred" The result is "euchred"