Training

Rust training

I offer innovative and effective training to help you and your team succeed with Rust. I offer training courses for Rust beginners and more experienced users, both open and private (corporate) training. Corporate training can be customised and tailored to your needs. I also offer coaching and mentoring for individuals and teams.

Open training is offered remotely in time zones friendly to Asia, Oceania, and the Americas. Training typically consists of structured presentations, exercises, Q&A using Slack, and/or small group discussions. Optional follow-up chat support is available. I'm currently offering a two-day, intermediate-level training: 'performance engineering using Rust'. See below for more details and to book.

Corporate and bespoke training

Corporate training courses are the most effective way for teams to learn Rust or improve their use of it. Corporate training consists of training sessions dedicated and specialised for your teams and their needs. Training can be combined with expert support to give your team extended access to my expertise. Training can be adapted from the open trainings below or built new. You can choose the format, tools, material, etc. Training can be offered remotely in any timezone or on-site (subject to local regulations around visas, tax, etc.). I can cater to any level and a broad range of topics.

To learn more or discuss corporate training, get in touch to schedule a chat.

Current open courses

If these dates or times don't suit, I'll be offering them again in the near future, optimised for different time zones. Join my mailing list to keep informed of new dates. If you want them at your own convenience, in-person, or customised for your org, it can be done! Get in touch to discuss!

Performance engineering using Rust

An introduction to performance engineering and optimising Rust code. This course covers essential background including modern systems architectures, and how that applies to program performance. I teach the tools, techniques, and engineering culture required to produce fast software. Ideally suited to programmers with little or no background in systems performance moving to Rust from high-level languages such as Go, Python or Java.

Racing cyclists
  • Level: intermediate Rust programmers, new to low-level performance work.
  • Dates: TBA (early 2025), time zone suitable for Oceania and Americas.
  • Duration: two days of tuition, with one day between and one follow-up day of online support (option to attend only the second day for Rust-specific content only).
  • Learning outcomes: you'll have an understanding of the fundamentals of performance (system design, algorithms, and the relative costs of IO, memory access, and compute) and how they apply to Rust programs; you'll be able to write high quality benchmarks and profile your Rust code; you'll know the key patterns and idioms for writing performant Rust code and understand why they're important.
  • To book or learn more: please contact me.

The course consists of two taught days, the first covers the fundamentals of performance engineering (using Rust for examples and context). The second day covers applying these fundamental principals when using Rust.

During the first day, I take a holistic view of performance engineering covering human and technical aspects. I'll cover designing for performance, prioritising performance, premature optimisation, and being data-driven; and on the technical side: computational complexity and algorithms, architecture of modern CPUs including caches, instruction pipelining, and branch prediction, relative costs of IO, memory, and computation, and how all these things affect software performance. I'll also cover important tools and techniques for benchmarking and profiling.

On the second day, we get specific. We'll go over tools and libraries you'll use with Rust, understanding concepts such as allocation and data layout which can have a big impact on Rust performance, and techniques such as buffering, iteration, and data-oriented design. We'll also cover making best use of parallel and asynchronous programming using libraries like Rayon and Tokio.

On both days, there will be breaks from teaching to put things into practice with exercises and experiments.

The course is designed for programmers with some Rust experience, but little experience with performance. The course is not suitable for experienced performance engineers who want to learn Rust. For engineers who have some performance experience in high-level languages and want to learn how to apply that in Rust, there is an option to attend only the second day (however, if you're an experienced C/C++ engineer with a strong background in performance, I don't expect even this option will be worthwhile for you).

Courses coming soon

I'm currently developing more training material which will probably become the following courses. If you're keen to participate, please let me know so I can prioritise appropriately. You can join my mailing list to get notified when the courses are available. These courses can also be the basis for corporate training.

Rust ownership, borrowing, and lifetimes

Stop fighting the borrow checker! A deep dive into Rust's most unique (and sometimes confusing) aspect, ownership. By exploring this fundamental concept, you'll get a boost along Rust's learning curve, gain a thorough understanding of how Rust works, and learn to write effective and idiomatic Rust code.

Intermediate level, suits Rust programmers with two months to two years Rust experience. The course will cover:

  • The fundamentals of ownership, move semantics, and borrowing.
  • Generic lifetimes and lifetime elision.
  • Techniques for circumventing limitations imposed by the borrow checker.
  • Common lifetime errors, and how to understand and fix them.
  • Advanced topics such as the AsRef and Borrow traits, writing your own smart pointers, and ownership in the context of interoperating with C/C++.

Arriving early 2025. Duration and cost TBA.