Info for Employers
M.Eng in Computer Science, Trinity College, Cambridge (2014-2018)
University of Cambridge (October 2018 - Present)
Supervising several undergraduate courses in Computer Science.
Goldman Sachs (July 2018 - Present)
Improving the design and implementation of Slang (an internal domain-specific language that serves as the interface to SecDb (Securities Database), Goldman Sachs’ internal platform for pricing and risk). As part of this, I have had the chance to use GraalVM (talk at Curry On 2019).
ARM (June-August, 2017)
Formal verification of a processor component by model-checking SystemVerilog.
Myrtle (December, 2016)
Wrote components to simulate a Convolutional Neural Network using advanced Haskell features (meta-programming, Kinds) for checking against an implementation that was to be compiled to VHDL.
Computer Laboratory, University of Cambridge (July-September, 2016)
Worked on a middleware written in C for Internet-of-Things devices. Presented the work at the British Science Museum 'Our Lives in Data' late event, August 2016.
A common thread throughout all of these interests is a focus on the theoretical, engineering challenges to be overcome in these fields. I consider my flexibility and curiosity for different aspects of Computer Science as my strength.
My primary interests are in programming language semantics, compilers. I am very interested projects using strong, statically-typed languages such as Rust, Crystal, Scala Native, and Idris, as well as usual suspects like OCaml, Scala/Dotty and Haskell.
I am also following the development of WebAssembly closely and look forward to it delivering on the promises it makes.
Mathematics and Formal Methods
I am interested in how formal methods are applied to real-world engineering problems. Examples of projects I find interesting in this field include: Infer, C++ Core Guidelines, Rust, Idris and Liquid Haskell.
I would be very interested if a project combined these methods within resource-constrained environments (for example, operating systems, embedded devices or high-performance computing).
Theoretical Aspects of Artificial Intelligence
I think AI is a ridiculously sophisticated field with a lot clever algorithms, complexity theory, probability/statistics, linear algebra and calculus: I'd love to get some experience with these problems.
I am not too interested in the "We have 'big data', let's use 'machine learning'!" approach that seems prevalent in this current hype-cycle.
Although a field by itself, I will list Natural Language Processing here as well.
Distributed Systems & Web Development
I am interested in the correctness, concurrency, data management and scaling problems here, involving both hardware and software.
I like design and I think user-friendliness is super important (especially considering how user-unfriendly many stong, statically-typed programming languages are). I think there are a lot of interesting problems to be solved in new interaction methods.
I have tremendous respect for security researchers and would be interested to see how formal methods apply to this field.
I would like to learn some basic design and animation, mainly for educational use.