A Day In The Life Of A Rust Engineer

Summary

We sat down with one of Hadean’s Rust engineers, Alexei, to find out more about what’s like to work with Rust at Hadean and to answer the question: why use rust?

Defence
5 min read

Warning: Trying to access array offset on value of type null in /nas/content/live/hadean2022/wp-content/themes/blankslate/functions.php on line 373

With the Rust Conference fast approaching on the 14th of September, I decided to have a chat with one of Hadean’s top Rust engineers, Alexei Barnes. We sat down and I got a proper insight into a standard work day for someone working on the forefront of such a rapidly emerging language and what it means to be an engineer at Hadean.

How would you describe Rust and how does it differ from other languages?

Rust is a high performance systems programming language that focuses largely on concurrency and memory. Writing code in Rust gives a very different feel to languages such as C or C++. Although all three of these are systems programming languages with similar syntax and access to low level resources, Rust stands out with its memory safety guarantees and unique approach to code modularization.  Not having to worry about memory safety gives me much more confidence in the code I write, and Rust gives you this without removing any of your control over the code.  While the face of Aether Engine that customers would use is written in C++, the underlying platform is entirely built on Rust, and here we really see benefits from being able to write high performance code without fear. Ultimately, for distributed systems, I wouldn’t pick any other language than Rust. The Hadean platform has benefited from this choice and we leverage Rust’s advantages to build the most comprehensive platform for scaling compute in the cloud.

What challenges do you face day to day?

Working with Rust isn’t wildly different from any other language I’ve worked with. It’s strongly typed, so like other strongly typed languages this makes collaborating easier since your interfaces are always explicit.  There is a robust open source package eco system all available through crates.io, so I don’t have to reinvent the wheel every time I start a new Rust project. And the Rust community is invested in packages they create being high quality, well documented, and updated. Many other languages simply lack community involvement like this. The Rust compiler is much pickier than other languages which means that initially writing a code that will build takes a lot more time but also means that once the code is written, it’s much more likely to work, easier to test, and more enjoyable to work on.

What makes Rust a good language for Digital Twin?

When running a Digital Twin simulation, being able to trust the simulation is just as critical as getting results quickly is. But it becomes challenging to improve the performance of real time concurrent distributed systems without making iterative and often speculative changes. Rapid iteration is easier for me when writing in Rust, because I can lean heavily on the compiler to ensure much of the correctness of the program. Typically, you’d need to use a garbage collected language to get these safety features and a garbage collector inevitably comes with some amount of overhead and loss of control over memory. However, Rust’s borrow checker means that no garbage collector is needed. All references and their ownership are well defined. Because of this, and many other features of Rust such as zero-cost abstractions, it is natural to write high performance correct code. Exactly what I’d want when writing mission critical simulations. 

What does a regular day look like for you?

We do Agile development, following Scrum Nexus at Hadean. First thing on the agenda every morning is a team meeting with the other engineers where each member of the team talks about the project they worked on yesterday and what they are going to work on today. We do a lot of forward design which means that most of the time I pick up work, it’s very well defined with all of the interfaces spelled out.  Once a week or so we will also spend time reining future work to be done, breaking it down and then splitting up to define it fully. This process means that all the engineers have equal say and opportunity when contributing to the design of our software. No one is left feeling unheard.

How would you describe your experience at Hadean?

As an engineer at Hadean I know that my opinion will stand on its merits alone. To me, that’s perfect, because it means that everyone’s opinion is equally valued. We have a very “can-do” spirit which is reinforced by the strong focus on inter and intra squad collaboration and personal development. I feel like I know everyone in the company, not just the engineers, which makes me feel very comfortable working with people across different teams. For me, Hadean offers the perfect balance between improving our own abilities while delivering high quality software.

Go to hadean.com/platform to download the Hadean Platform SDK now.