Paul Bone

About Me

I am a talented software engineer and computer scientist. My specialties include programming languages, declarative programming, programming language implementation, performance profiling, analysis and optimisation, parallelism and concurrency. I write about these topics on this blog.

I work for Mozilla where I work on the SpiderMonkey JavaScript engine's garbage collector. In my spare time I work on the Plasma programming language.

Mugshot

Background

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.

After completing my Ph.D. on Automatic Parallelisation for Mercury I re-joined the work force supporting Mercury (a logic-functional language) in production. I used the skills developed during my Ph.D. to analyse and improve the performance of Mercury programs. Now I work on the garbage collector in Firefox's JavaScript engine.

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.

Recent blog posts

— Compiling closures
When a function pointer takes a single machine word, and a closure two or more, how can you represent closures in a polymorphic way?
— Low vision and how I see the web
I finally wrote about my eye sight and how this affects my use of the web.
— icecc and ccache - Compiling lots of C++ quickly
Firefox is a big project and takes quite some time to compile. I've set up icecc and ccache to help speed up these compilations. This article may guide anyone wanting to set up these tools to speed up their own lengthy C/C++ compilations.
— Scoping ideas for Plasma
A reddit discussion led me to write down some ideas I'd been considering for scopes in Plasma.
— GC vs other memory management techniques
In response to a question on reddit, I share my thoughts about GC vs ref counting and Rust's object lifetime system.

See all blog posts.

Publications

Presentations and interviews

The publications of this section include conference presentations, talks and other interviews. They are not academic / peer-reviewed, 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.

Journal articles and conference papers

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.

Contact