Last week I attended the inaugural Rust Nation UK. Here are some notes on the talks I saw
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:
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!
This talk was delivered by Jonathan Strong from a company called Keyrock, who are a high frequency trading company specialising in cryptocurrency markets.
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:
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.
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.
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:
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
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.
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.
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:
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.
Want to receive email updates from me?