2024/09/12 - RustConf Chronicles Day 1

Context

Following a couple months of non-stop feature work at my job, I was starting to feel like I needed exposure to something a bit different from the day to day in order to re-kindle my passion for programming. Luckily, RustConf was coming to my city for a couple of days and I couldn't say no. Here is a rundown of my experience!

A security centric opening

The opening keynote of the conference was given by Aeva Black, a section chief at the Cybersecurity and Infrastructure Security Agency (CISA). The presentation had a strong focus on the importance of securing open-source software supply chains by design (hence it's relevance in a Rust conference). Amongst a rundown of how CISA functions and what upcoming initiatives are being prioritized, I was pleasantly surprised to see a couple of slides bringing up the importance of SBOMs going forward in supply chain security. Got to learn that there is some community initiative to implement a Rust RFC to automatically publish SBOMs as compilation artifacts.

Safe type transmutation

On to the first technical talk of the conference! This one entitled "Safety Goggles for Alchemists" was given by Jack Wrenn and the subject was safe transmutation between Rust types. It was a really interesting session considering that my knowledge for Rust traits and unsafe usage is quite basic. Jack illustrated how the TransmuteFrom trait was implemented and provided some awesome graph visualizations of type compatibility with finite automata. Additionally, a use case of UDP packet parsing helped to truly understand what makes this trait useful.

A bit of API design

After coming down from the mezzanine of the venue, I sat in on a talk given by Isabel Atkinson from MongoDB. "Rustify your API" was a fun live rundown of building a bulkWrite database API. Although the API design lessons were a bit more obvious to me, there were some really interesting tidbits about making option configuration very simple with a builder pattern and Rust types. It was also a great perspective on using generics as a library maintainer in order to only expose the necessary types to your client users.

Game dev primers

Following our lunch break, there was a bit more of a lighthearted talk given by Nathan Stocks from GitHub. His goal was to work us through building a Bevy game in 30 minutes. By far this was one of the more humorous talks I attended. All while cracking jokes at every turn, he managed to demonstrate the usage of Bevy plugins, entity components, system automation, event loop control, and much more. I found his presentation methodology super interesting, TLDR; he had templated some Rust code and used a bash script to pipe the code to his clipboard on the fly. This made it super swift to follow without too much overhead of watching somebody manually type out their work.

Actors and factories

This talk was the one I was looking forward to the most in this first day of the conference. Entitled "Actors and factories in Rust", it was given by Sean Lawlor and Pedro Rittner from Meta. In the talk, they broke down the difficulties encountered with their existing IDL and RPC framework built on Apache Thrift. They followed this up with an explanation of how they built ractor. Their rundown of how they built a server shim to ensure better isolation, concurrency, queue control, request draining, and overload protection for requests was really well vulgarized. This left me wanting to build something with their framework the second their talk ended.

Complexity behind transport maps

The following afternoon talk was being given by Kyler Chin, a student from UC Irvine. His talk "How we built a Rust-y real-time public transport map" was a deep dive into the complexity of integrating with multiple transport providers across continents and geographies. Although a fast pace presentation, it was great to see his take on their system design with a graph centric approach. Furthermore, the whole thing running off of a cluster of 9 year old Intel NUCs was an awesome reminder that we often times consume more resources than necessary.

Here be mutants!

This last technical talk that I attended was an unexpected discovery, Martin Pool from Stripe gave us a great overview of how better tooling could help expose bugs in our packages. By demonstrating his cargo extension cargo mutants he showed us that testing assumptions and bugs can be found by synthetically replacing code at testing time. We tend to write too many tests based on happy paths, and this augmented tooling seemed quite practical for catching edge cases that could occur in the wild.

Rust project enlightment

Finally, the day was concluded with a presentation from Jack Huey and James Munns from the Rust Project Leadership Council. They gave us outsiders a detailed runthrough of how the Rust Project operates. We got a glimpse into the high level team structures (Lang, Compiler, Devtools, Infra, etc.) as well as how these are broken down into sub-teams. The most interesting part though was an explanation of how initiatives are tracked and how these teams communicate. They went over the whole process including their discussion platforms, their design process with RFCs/AFCs, and the bots used to keep everything tidy.