I am a talented software engineer and computer scientist. My interests include programming language implementation and performance, including parallelism and concurrency.
In my spare time I work on the new Plasma programming language, which aims to bring the worlds of functional and imperative programming together. By combining these programming aproaches Plasma will make it easier for teams to create large scale, reliable, high-performance parallel and concurrent software.
I started programming when I was 12 with QBasic, by the time I was 15 I was teaching myself C/C++. After high school I studied computer science at University then joined the work force full-time. Shortly afterwards I was introduced to functional programming; intoxicated by the safety of pure declarative languages and the challenge of multicore computing I decided to peruse a Ph.D. on this topic.
In mid-2015 I started work on the Plasma programming language in my spare time. Plasma is a pure declarative language. Its goals are to find a compromise between declarative and imperative programming and to provide state-of-the-art parallel and concurrent programming features.
When I'm programming, writing, reading or thinking about programming I like to spend time with my family, go alpine skiing and sometimes play the flute.
I’m starting a new project to reduce Firefox’s memory footprint
A recent change to Plasma caused me to think choices that various languages make with regard to ambiguity in their grammar that is often resolved by case.
I no-longer work on Firefox’s garbage collector
CPU-bound performance often involves CPU caches. So lets dive in to CPU caches, some basics of how they’re implemented, how they keep a consistent view of data in multicore systems and some other types of caches that are also found in a CPU.
I found an interesting case where due to syntax sugar internal consistency and external consistency were in conflict and I could not have both.
See all blog posts.
The publications of this section include conference presentations, talks and other interviews. They are not academic / peer-reviewed those are in the section below, however they're probably more accessible for most readers. They're probably a good place to start for an overview of my work or reporting on other people's work.
The publications in this section are academic papers (conference papers, journal articles and dissertations. They are more academically rigorous than the presentations above and have a lot more detail. They're useful if you're looking for detailed information about my work.