About

I'm currently a freelance consultant offering software engineering services and Rust education. Over the past decade, I've been heavily involved in the Rust project. My other professional focus is distributed systems and database implementation. I have a PhD programming languages and worked in that area as a postdoc. I've also worked with 2D and 3D graphics, and the layout/graphics components of Firefox.

I care about people and how people use software. I'm interested in technology at the intersection of systems programming and usability. I believe that an important reason for Rust's success is that the Rust project cared deeply about the user experience and our community. This motivation fuels my interest in community governance and leadership.

A picture of Nicholas Cameron

Rust experience

I have over ten years experience using and contributing to Rust. I was a core team member from 2017 until late 2020. I started working on the Rust project at Mozilla, in the run-up to the 1.0 release. Over the years, I have worked on the compiler, language design, developer tools, governance, and async programming.

As well as being a member of the core team, I have led the dev-tools, style, Cargo, and IDEs teams, and have been a member of the language design, compiler, async, survey, and Rustup teams or working groups. I've made contributions to the standard libraries, error handling, and documentation.

I started and led the Rustfmt and Rust IDE projects. I've contributed significantly to projects both inside and outside the Rust project, including: the Rust compiler, Rustfmt, the Rust Language Server (the 'brains' behind Rust IDEs, pre-Rust Analyzer), Cargo, Rustup, TiKV (a distributed, transactional key-value database), TiKV's Rust client, gRPC-rs, and derive-new.

Mini-resume

  • Independent Software Engineering Consultant, current.
  • Microsoft, Principal Software Engineer, two years. Helped Microsoft to adopt Rust internally; contributed to Rust.
  • PingCAP, Senior Software Engineer, two years. Implementation of a 'NewSQL' distributed database (TiDB) using Rust and Go.
  • Mozilla, Staff Research Engineer, five years. Rust design, implementation, and leadership.
  • Mozilla, Senior Platform Engineer, two years. Implemented layout and graphics components of Firefox using C++.
  • Victoria University of Wellington, Postdoctoral Research Fellow, two years. Conducted research on programming language design and theory, taught several courses, supervised BSc, MSc, and PhD students.
  • PhD Programming Language Theory, Imperial College London. Existential Types for Variance — Java Wildcards and Ownership Types.
  • Merchant Internet, Software Developer, four years (some part-time). Full stack engineering (Java, Javascript, SQL, HTML).
  • BSc Computer Science, University College London, first class honours. Prizes for best performing BSc graduating student, best overall performance and best performance in practical topics in second year.

Download full resume

I live in Te Whanganui a Tara (Wellington), Aoteroa (New Zealand).

I like freediving; I'm the president of the Lazy Seals Freediving Club, and I started the Christchurch Freediving Club and was its first president. I've taught new divers, organised training and competitions, and competed at a national level. I also like running, swimming, Buddhism, travel, coffee, skiing and snowboarding, bouldering, scuba diving, yoga, hiking, and reading.