Go back

Rust Nation UK 2023

Last week I attended the inaugural Rust Nation UK. Here are some notes on the talks I saw

Rust

Key note

The keynote was delivered remotely (pre recorded?) by Nell Shamrell-Harrington and was mostly about the rust community. It was pretty celebratory talk, focusing on best parts of said community, and encouraging people to get more involved in it.

Some things that are apparently good about the rust community:

  • Emotional maturity and helpfulness are valued over raw technical skills.
  • The community is very into mentoring/teaching.

I'm not very familiar with the rust community, so I don't know how true these claims are. It does seem true that the most famous Rust people are all quite focused on education. Which is nice.

Nell, the speaker, is the editor of the the newsletter 'This Week in Rust', which I subscribe to and sometimes read. I learned from the talk that the newsletter is managed through a github repo and that in order to submit contents to it you can make a pull request. The newsletter itself is written in markdown, and there's a draft for the upcoming issue which is cut and sent out on a weekly basis. I think this is a really cool way to run a community newsletter!

The talk didn't really touch on the downsides of the rust community, which I guess is fine. But based on the attendees there is much less gender diversity than you might see at a JavaScript conference, which is an already not very diverse baseline. I don't know how Rust can fix that. But it would be nice if they could!

Rhai

This talk was delivered by Jonathan Strong from a company called Keyrock, who are a high frequency trading company specialising in cryptocurrency markets.

The talk started with some discussion about why they're using Rust. HFT demands low and consistent latency. It's important to respond to new information and market moves quickly to avoid losing incredible amounts of money. The company apparently started off using JavaScript, and found that it didn't have the performance to do what they needed. Besides being quite slow, it has garbage collection, which leads to pauses occasional pauses that are completely unacceptable for their use case. They tried writing something in Rust and instantly decided that it was the future.

The rest of the talk was focused on Rhai, which is a scripting language that looks a bit like Rust, and has good ways to interop with Rust. For a good part of the talk I was wondering 'why can't you just write these scripts in Rust'. Thankfully this question was answered!

Keyrock have a use case where they want to allow their traders to create custom indicators (an indicator being some signal that will affect their market making activity one way or another). The traders are smart, and somewhat technical - but are not full time rust developers. And they want to be able to change these indicators during trading without having to rebuild and redeploy the rust codebase. So they write these scripts, which their Rust codebase can call out to. The scripts can be changed dynamically. So their workflow seems to be:

  • Rust program runs crunches lots of numbers, and then says 'I'm going to call our custom Rhai scripts now!'
  • These scripts get called, and can access data in the program's memory, and even call Rust functions using custom dispatching logic when expensive computation is required.
  • They get their indicators and can then act on them.
  • As the situation changes throughout the day, the Rhai scripts can be updated easily at any time.

The speaker also mentioned that they have various ways of controlling what resources get used by these scripts. They can limit things like the maximum execution time, or the length of vectors that the script can create. This hopefully puts upper bounds on the performance impact of any given script, and stops their traders bringing the whole system to a halt.

The talk also covered a lot of details of Rhai as a language which I immediately forgot.

Oh and they also mentioned that in this setup NaN becomes an issue. Oh no!

Keyrock were sponsoring the largest stage at this conference, so presumably Rhai works pretty well for the making money use case. Nice.

Async Rust from the ground up

In this talk Conrad Ludgate from Truelayer guided the audience through how async rust works. They started from where the language was in 2016 and then built various implementations of async on this base. They showed the problems that different approaches have, and how they could be fixed. This process gradually built up to something approximating how async rust actually works.

There was a lot of code shown in this talk, and being at the back of the room I found it hard to follow. Also, this talk was just too difficult for me to follow very closely. If there's a recording, I think it could be a good resource to go through a bit more slowly in future.

One thing Conrad mentioned in this talk is that he made his first GitHub repository in 2016. I made my first GitHub repository in the same year. It's certainly the case that the intervening years Conrad has learnt a lot more than me about asynchronous Rust.

Rust it Up

This talk by Tim McNamara was about how to get your company to use Rust. If that's something that you want.

I missed the first ten minutes of this talk because I was talking to someone about concert venues in Berlin. But what I saw was very good! Tim McNamara is clearly a very good speaker. The kind of person who I would happily listen to talk about anything. I don't know if this was down to skill, natural charisma, or having a New Zealand accent. Possibly all three.

When I walked into this talk Tim was discussing the aspects of Rust that confuse people. String vs &str was number one with a bullet, but they also complained about the number of similar but different concepts in the language, which are second nature for experienced practitioners - but which are baffling to newcomers. For example, Rust has a function called clone and another called copy. They're different in very significant ways. Good luck explaining the difference to someone who's learning programming for the first time!

I didn't take any notes during this talk so I don't have much else to say, other than this memorable quote/paraphrase:

If you need a certain level of performance your choice is Rust, or shipping something that's broken.

Surreal DB / JFrog

In this slot I jumped between two talks and found both of them to be basically adverts. I started off in a talk about Surreal DB - which is a new graph based database that has features like

  • Authorization and access control
  • Graph based data
  • Documents
  • Letting clients connect diretly to the DB!

It sounds like it wants to be the best database for everyone, and to offer every conceivable feature. Unfortunately the 15 minutes of the presentation I watched felt like an infomercial. I think I could have just read their marketing website and gotten the same information quicker. So I left and went to a talk in another room delivered by someone from JFrog. This was also a kind of half advert half talk - but did cover some interesting details about various supply chain attacks that they're aware of - and concrete information about how their products can help mitigate such attacks.

Using rust at Fly.io

I was interested in this talk because I use fly.io to host Contentful's internal meme platform, and I think it's great. The talk, which was given by Senyo Simpson covered some details about how fly's networking works. They apparently use DNS anycasting, which as I understand it, is a way of having multiple servers in different locations with the same IP address. Doing this lets them route traffic from any client to that clients closet point of presence. It sounds pretty neat, and is something I want to learn more about.

My use of Fly so far has been running code on a single instance, generally in Frankfurt. It sounds like I'm missing some of the real benefits of Fly, which are letting your code run on the edge. I'm hoping that this year Contentful's meme platform will experience enough growth to justify moving it to an elaborate distributed setup.

Besides the networking details, a lot of this talk was a kind of 'Rust experience report'. A lot of the talks at this conference had an element of this, and it was interesting to see the consistency. Basically everyone seems to agree that Rust is really good - and that the main challenges are getting started, and onboarding people into it. Senyo talked about how Rust's values lead to a language which is good for experienced users, but less approachable. The language and community value soundness and performance over approachability and ergonomics, which means that as rust develops we will always see performance and soundness improvements priorisited when they are in conflict with ease of use.

Conclusion

I had a nice time at Rust Nation. The talks were good, but I found that the best part of the conference were the conversations I had with random strangers. I spoke to some really interesting people about topics like:

  • Running red team attacks on UK various parts of the UK's infrastructure.
  • Compiling LLMs to run in a webbrowser
  • How smarkets calculate prices for their various odds they offer.

If I had my time again I would try and talk to more people, even though I found the process of introducing myself to random people pretty draining. I would also have gone to more workshops instead of talks. Watching ~7 talks in one day is too much for me.

In general, I want to applaud the organisers on running a really good conference.


Comments

Add your comment