Consulting

I offer team augmentation as a staff-level software engineer, and consulting on adopting Rust. I can help you evaluate Rust quickly, fairly, and in depth (I'm happy to tell you if Rust might not be a good fit!). I can bring Rust expertise and experience to a team to help make Rust adoption a success. I can ramp-up quickly on new projects and help get things done. I'm experienced in remote work and can work on-site for short periods (local laws permitting).

I'm happy to take on short-term, long-term, or open-ended contracts (availability permitting). Some possible formats are:

  • Team augmentation of one to four days per week for one to 12 months.
  • Deliverable-based contracting. Some good candidates are self-contained components, components closely tied to language internals or using unsafe code, or work on upstream crates to add features, improve flexibility, or fix bugs.
  • A series of calls with additional work on policies, tool or process integration, etc., to smooth initial adoption or help make a proper evaluation of Rust.
  • A single call to help initial evaluation.

Any of the above can be combined with Rust coaching or expert support. To discuss any of these services, please get in touch!

Software development

I have nearly twenty years experience of software development and over ten years of with Rust. I have experience designing and implementing distributed systems, databases, programming languages, compilers, developer tools, libraries, and APIs. I'm skilled in working with users and non-technical staff, requirement gathering and elaboration, software design, and specification.

I work well in teams or independently; I adapt quickly to new teams and organisations, and work well across multiple teams. I've worked on very large code bases (10m+ LoC) and can quickly understand large, complex projects.

I primarily work in Rust, though I'm happy to take on projects which include components in other languages (I have professional experience with C/C++, Go, Java, Javascript/Typescript, and Python, and have programmed in many more). I'm particularly able to take on projects in the following domains or skill areas:

  • distributed systems,
  • database implementation,
  • developer tools,
  • library design and implementation, API design,
  • programming language design and implementation,
  • foundational research and theoretical work on programming languages.

Rust adoption

I can help you adopt Rust in your team or across your organisation: from initial assessment, through prototyping and experimentation, to production.

At the start of your journey I can help technical and business leaders understand the benefits and costs of Rust, assess the suitability of Rust for your specific needs, identify risks and risk mitigations, and help integrate Rust into your policies and strategies. I can recommend tools and libraries, integrate these with your existing systems, and adapt them to your requirements.

If you're committed to Rust, then I can help make that commitment a success. I can provide education to individuals and teams in the form of training and coaching, and I can assist with internal evangelism efforts to help ensure the adoption process has the support it needs. I can undertake research to identify libraries, tools, and techniques which are most suited to your needs or to develop new ones if necessary.

For ongoing Rust usage, I offer coaching and online support, design and code review, and team augmentation.