1. Languages

I am completely bilingual in English and German and am currently learning Spanish.

2. Programming Languages

  • C++

For the UCL ‘medi+board’ project (see ‘Publications’), I implemented the execution environment for a visual, node based programming language that takes a json description of an algorithm and dynamically instantiates a directed acyclic graph for evaluation. This also included direct interop with C#, writing a json parser and a utility to generate statistics using html5/JavaScript. Apart from the visualisation components the work was done entirely in C++ using Intel Threading Building Blocks (TBB) for concurrency. The system also provides a custom API that allows the user to add node types.

As a personal project I have successfully finished a parallel implementation of the conjugate gradient algorithm (and the necessary BLAS math library) for sparse and non-sparse 3d vectors, also using TBB.

Apart from these two major projects I  teach a weekly C++ workshop at UCL and am extremely interested in the evolution of standard C++, i.e. design of the language and its runtime environment.

In terms of APIs I have some experience with TBB, Boost, OpenGL, Qt, Maya and Nuke. While my experience with all of these is as yet limited, I am and have been actively studying to use all of them, especially Maya and OpenGL.

  • Java

While I have never used Java on any personal projects, most university teaching and coursework relied upon it. I thus have a lot of experience with it, most of which derives from my knowledge of C++. The only aspect of the language I am interested in on a theoretical level is, as with C# below, garbage collection.

  • C#

I have used C# a lot for ‘protoyping’ on my personal projects. Over the years I have implemented a Eulerian fluid simulator using both Jos Stam’s initial (‘stable fluids’) approach and then incorporating advanced techniques such as the variational pressure projection proposed by Bridson et al.

In terms of numerics solvers I have implemented an Incomplete Cholseky, Approximate Inverse and Multigrid preconditioner for conjugate gradient as well as a standalone implementation of the multi-grid method, the maths libraries for all of which I also wrote from scratch.

  • Python

I am currently learning python and have found it very elegant so far.

  • CUDA

I am currently learning CUDA with a view to using it to accelerate simulations.

  • Miranda

Miranda is the only functional programming language I know, but its syntax is very similar to that of Haskell and F# which makes those skills transferable. I have used Miranda only on less complex, isolated problems of an academic nature so far but find its approach a valuable addition to the problem-solving skills of any programmer used to imperative languages.

  • JavaScript/Html/…

Due to some personal projects on websites I have a solid understanding of how web technologies work and how to use JavaScript to create modern, dynamic web experiences (I have almost exclusively worked with Microsoft MVC Web Applications and SQL Server so far).  Most recently, I implemented the statistics output for the ‘medi+board’ project using JavaScript.

  • Matlab

I have used Matlab a lot, especially for image processing, and for prototyping implementations of algorithms. My projects include early versions of the numerics solvers outlined earlier, image stabilisation, deflickering, blotch-removal, tone-mapping and laplacian pyramid blending.

3. Personal Achievements

I was elected head boy of my school for 4 years and head of my year for the last two years of school, attended 13 MUN conferences (4 times as president of the security council) and represented my school in a national debating competition twice. My organisational and mediating duties for all of these taught me a lot about teamwork, leadership and presentation. At King’s College, I helped set up the now annual Human Rights Moot and at UCL I am teaching a small C++ workshop.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s