WEBVTT

00:00:02.100 --> 00:00:03.449
Matthias: Another season done.

00:00:04.250 --> 00:00:07.970
I truly can't believe how quickly
time has passed, and to some extent

00:00:07.970 --> 00:00:11.505
that's a good thing because I truly
enjoyed this recent set of interviews.

00:00:12.545 --> 00:00:14.525
It might have been my favorite one so far.

00:00:15.485 --> 00:00:20.705
We saw a well-rounded group of Ians talk
about their experiences with the language

00:00:21.035 --> 00:00:25.895
guests ranged from developer tooling with
estro over web backends with s vix, all

00:00:25.895 --> 00:00:29.495
the way to operating systems and cloud
infrastructure with Microsoft,  and

00:00:29.495 --> 00:00:33.215
a truly inspirational interview with
Nico Makis from the Rust Core team.

00:00:33.813 --> 00:00:37.203
In Nico's interview in particular,
which we recorded at Rust Week in the

00:00:37.203 --> 00:00:40.953
Netherlands, he said something that
truly changed the way I see Rust.

00:00:41.223 --> 00:00:46.083
He said that the goal of Rust is to
help build foundational software, and

00:00:46.083 --> 00:00:49.083
that inspired me so much that I even
wrote an entire blog post about it.

00:00:49.983 --> 00:00:52.473
I'm not gonna repeat everything
that I said in that blog post, and

00:00:52.473 --> 00:00:54.123
I will link to it in the show notes.

00:00:54.423 --> 00:00:58.563
but I wanted to take the opportunity to
reflect on the recent season in light of

00:00:58.563 --> 00:01:00.153
this new understanding of the language.

00:01:00.693 --> 00:01:03.273
First, let's hear it from Nico himself.

00:01:03.773 --> 00:01:05.183
Niko: Foundational software.

00:01:05.603 --> 00:01:09.683
It's the software that everybody
else builds on, and that could

00:01:09.683 --> 00:01:11.933
be many different things, right?

00:01:12.233 --> 00:01:16.523
I think sometimes that's like the
kernel that's very literally the

00:01:16.523 --> 00:01:17.753
thing that everyone else runs on.

00:01:18.083 --> 00:01:21.923
But other times it's a CLI tool
that's super widely used and it's

00:01:21.923 --> 00:01:23.293
part of the scripting setup you use.

00:01:23.793 --> 00:01:26.523
That kind of software has
particular characteristics.

00:01:26.553 --> 00:01:30.093
It needs to be really reliable
because if it breaks everybody else's

00:01:30.093 --> 00:01:32.703
stuff breaks, it needs to be fast
because everyone's building on it.

00:01:32.703 --> 00:01:38.343
And so whatever performance hits you take
there, everybody has to to work with, and

00:01:38.883 --> 00:01:40.953
it has this long-term maintenance story.

00:01:41.682 --> 00:01:44.112
Matthias: Foundational software
is different from systems

00:01:44.112 --> 00:01:47.322
programming software in a
sense that it's wider in scope.

00:01:49.092 --> 00:01:52.032
What foundational software
is largely depends on the

00:01:52.032 --> 00:01:53.652
organization writing the software.

00:01:54.252 --> 00:01:58.632
It can be as varied as a package manager,
a storage layer, or a rust backend.

00:01:59.112 --> 00:02:02.772
I think rust is excellent for this
type of work where correctness and

00:02:02.772 --> 00:02:07.248
stability are of utmost importance
instead of following the worst better

00:02:07.248 --> 00:02:11.448
approach that we know from systems like
Unix or other programming languages.

00:02:11.838 --> 00:02:14.178
Rust is very much an MIT like language.

00:02:14.718 --> 00:02:19.158
It wants you to do the right thing and
do the thing right, the right thing.

00:02:19.158 --> 00:02:22.818
Designers are equally concerned
with simplicity, correctness,

00:02:22.818 --> 00:02:24.288
consistency and completeness.

00:02:24.498 --> 00:02:27.078
And I truly believe this
is where Ross is amazing.

00:02:27.578 --> 00:02:30.728
In some of my consulting calls,
people ask me if Ross is the

00:02:30.728 --> 00:02:32.078
right choice for their project.

00:02:32.768 --> 00:02:36.758
It typically comes down to is the
software that you build foundational?

00:02:37.298 --> 00:02:39.848
That means do you expect to
run it for many years to come?

00:02:40.448 --> 00:02:44.558
Does it serve as a platform for other
tools and software in your organization?

00:02:45.248 --> 00:02:48.698
Do you care about robustness,
stability, and long-term maintenance?

00:02:49.185 --> 00:02:51.865
If you can answer all of these
questions with, yes, there's a

00:02:51.865 --> 00:02:54.745
high chance that rust is indeed the
language that you're looking for.

00:02:55.245 --> 00:02:58.455
But if you are just looking for a
quick solution or you want to build a

00:02:58.455 --> 00:03:02.595
prototype or you care more about fast
results than a healthy co base, then Rust

00:03:02.595 --> 00:03:03.915
might not be the right choice for you.

00:03:04.415 --> 00:03:07.055
The companies that were
guests in the season all build

00:03:07.055 --> 00:03:08.435
foundational software with frost.

00:03:09.065 --> 00:03:10.775
Let's take one password, for example.

00:03:11.465 --> 00:03:15.545
The core abstraction is to handle
passwords for millions of users, and

00:03:15.545 --> 00:03:17.435
that definitely needs to be rock solid.

00:03:17.945 --> 00:03:19.895
Undoubtedly, they build
foundational software.

00:03:20.735 --> 00:03:25.985
Or take Ksat controlling hundreds
of satellites with rust or swix

00:03:26.075 --> 00:03:27.485
handling millions of webhooks.

00:03:27.875 --> 00:03:30.035
All of these things must not fail.

00:03:30.605 --> 00:03:33.725
They must work with the highest
criticality, and I think that's what

00:03:33.725 --> 00:03:37.400
Rust should focus on, , or at least focus
their marketing efforts on in the future.

00:03:38.400 --> 00:03:41.430
But isn't foundation software
just systems programming?

00:03:41.930 --> 00:03:46.040
I believe that systems programming has
its place,  but the term is so overloaded

00:03:46.040 --> 00:03:47.415
by now that it's lost much of its.

00:03:48.626 --> 00:03:51.776
It's difficult to say that Rust
is a systems programming language

00:03:51.776 --> 00:03:54.476
without being lumped into the
same category as c plus plus.

00:03:54.476 --> 00:03:57.776
In that regard, I think systems
programming is also limiting.

00:03:58.076 --> 00:04:02.513
It feels elitist somehow, whereas Rust
aims to be very inclusive and enables

00:04:02.513 --> 00:04:04.164
everyone to learn how systems work.

00:04:04.964 --> 00:04:07.484
Here's Charlie Marsh from
Astral, the team behind uv.

00:04:07.984 --> 00:04:11.404
Charlie: I never considered myself to be
like a systems programmer, quote unquote.

00:04:11.434 --> 00:04:15.904
In most of my career, I was
writing TypeScript Python.

00:04:15.964 --> 00:04:20.434
I mean, I did some Java professionally,
but like I had never, except for like

00:04:20.494 --> 00:04:24.604
a course in college done, NECI really
hadn't done DC plus plus and like

00:04:25.114 --> 00:04:29.968
in the span of a few years, I like
learned to build this kind of software.

00:04:30.468 --> 00:04:32.328
Matthias: And here's Andrew
Burkhart from One Password.

00:04:32.828 --> 00:04:34.598
Andrew: I also have no
computer science background.

00:04:34.598 --> 00:04:37.658
I was a construction worker before,
and I worked at, you know, a

00:04:37.658 --> 00:04:39.608
drugstore before I became a developer.

00:04:39.608 --> 00:04:43.388
So I had no idea about
binary trees and sorting.

00:04:43.393 --> 00:04:47.858
I, I still really don't, to be honest,
but it's, rust has a way of bringing

00:04:47.858 --> 00:04:53.978
those things out in you, which is hard at
first, but it also helps you to shore them

00:04:53.978 --> 00:04:55.928
up because you see where your gaps are.

00:04:56.428 --> 00:04:59.398
Matthias: People are able to do
systems level work without noticing.

00:04:59.728 --> 00:05:00.293
Thanks to Rust.

00:05:01.708 --> 00:05:04.888
They just learn things as they
go, and before they know it, they

00:05:04.888 --> 00:05:08.308
manage to write critical software
components for their organizations.

00:05:08.968 --> 00:05:11.908
Often without formal training,
while they can still be confident

00:05:11.908 --> 00:05:13.288
that their code is memory safe.

00:05:13.788 --> 00:05:14.718
And you know what's funny?

00:05:15.228 --> 00:05:18.048
The way people see rust from
the outside is totally different

00:05:18.048 --> 00:05:19.488
from what's actually happening.

00:05:19.968 --> 00:05:23.988
People think it's this hipster language
that only hobbyists mess around with

00:05:23.988 --> 00:05:27.318
on weekends, or they think it's some
over-engineered thing that only Google

00:05:27.318 --> 00:05:31.758
and meta use for crazy complex stuff,
or that it's just an academic research

00:05:31.758 --> 00:05:34.098
language, but that's just not true at all.

00:05:35.478 --> 00:05:37.878
I see companies all over
the place using rust.

00:05:37.968 --> 00:05:41.148
Small teams, big teams here
in Germany, everywhere.

00:05:41.688 --> 00:05:43.308
They're solving real problems with it.

00:05:43.808 --> 00:05:46.028
Let's hear from some of the
guests from this season about

00:05:46.208 --> 00:05:47.438
how they use rust in production.

00:05:47.678 --> 00:05:49.148
First, Nik Makis

00:05:49.648 --> 00:05:52.918
Niko: Most people I talk to are not aware
of how much rust is in in production

00:05:52.918 --> 00:05:55.408
at Amazon, like every S3 request.

00:05:56.488 --> 00:06:00.958
Every EC2 VPC, you can tell my
ignorance of even our own product line.

00:06:02.008 --> 00:06:06.838
Uh, uh, every lambda and vocation,
these things all go through rust.

00:06:06.838 --> 00:06:08.518
They also go through other languages.

00:06:08.518 --> 00:06:11.938
So I'm not saying that the exclusively
written in rust by any means, but

00:06:11.968 --> 00:06:16.138
more and more the, the hot path of
a lot of these big services that

00:06:16.138 --> 00:06:20.308
you know is, is being rewritten and
rust or re-architected and rust.

00:06:20.808 --> 00:06:22.398
Matthias: Andrew Burkhard
out from one password.

00:06:22.898 --> 00:06:26.408
Andrew: But there's, there's probably,
I think we have a couple hundred

00:06:26.408 --> 00:06:29.498
developers now working across all the
different products that one password

00:06:29.918 --> 00:06:34.598
and, you know, collide and Passage and
Trca and so forth have, but we probably

00:06:34.598 --> 00:06:38.588
have, I don't know, I'd say a hundred
people that work pretty heavily in Rust

00:06:39.128 --> 00:06:41.348
or, or, or maybe 50% or more in Rust.

00:06:41.378 --> 00:06:42.038
Something like that.

00:06:42.538 --> 00:06:43.858
Matthias: Charlie Marsh from Astro

00:06:44.358 --> 00:06:48.798
Charlie: I think last I checked,
it's like a little over 12.5% of

00:06:48.798 --> 00:06:53.403
all requests to the Python index
come from uv, which is like over 200

00:06:53.403 --> 00:06:56.658
million requests a day, which is wild.

00:06:56.658 --> 00:06:56.898
Right?

00:06:56.898 --> 00:07:00.168
And you know, I spend a lot of
my time talking to companies.

00:07:00.168 --> 00:07:04.158
There are tons of like 1 billion, 10
billion, even a hundred billion dollar

00:07:04.158 --> 00:07:07.394
companies that are using this thing in
production and have been for a long time.

00:07:07.894 --> 00:07:09.454
Matthias: Victor URA from Microsoft.

00:07:09.954 --> 00:07:13.014
Victor: I think we reached an inflection
point in the company where it's sort

00:07:13.014 --> 00:07:19.704
of we're all in on rust, as in we're
committed to being, making rust succeed

00:07:19.704 --> 00:07:25.254
at Microsoft because we've seen so many
successes in various projects and teams

00:07:25.254 --> 00:07:30.534
are no longer sort of treating it as
a hobby experiment to happy accident

00:07:30.534 --> 00:07:31.799
that this thing works great in rust.

00:07:32.299 --> 00:07:34.309
Matthias: Not everything
has to be webscale, though.

00:07:35.029 --> 00:07:36.874
It's not just systems programming either.

00:07:37.374 --> 00:07:41.454
This encouragement and its inclusivity
is what makes the community so great.

00:07:41.456 --> 00:07:45.056
And as someone who's part of the Rust
community, you should also reflect

00:07:45.056 --> 00:07:49.016
those values and be supportive of
newcomers on their journey to discover

00:07:49.016 --> 00:07:50.306
their true potential with frost

00:07:51.266 --> 00:07:52.916
as Adam Handel from Timbo noticed.

00:07:52.976 --> 00:07:56.996
The developer experience is
great at any scale, you can just

00:07:56.996 --> 00:07:58.257
start small and grow from there.

00:07:58.757 --> 00:07:58.907
Adam: Yeah.

00:07:58.907 --> 00:08:03.617
Most of, most of the time, if I'm
building a web server today, I, I'll

00:08:03.647 --> 00:08:06.467
just grab aps and, and run with it.

00:08:06.947 --> 00:08:09.977
You know, if I'm working with Data
and Postgres, I'm gonna grab SQL X.

00:08:10.547 --> 00:08:15.527
10 years ago it would've been like
flask or Fast API, or maybe not 10

00:08:15.527 --> 00:08:19.787
years ago for Fast API, but you know,
I have the equivalent of everything

00:08:19.787 --> 00:08:23.687
that I would, you know, five years ago
would've gone to something in Python.

00:08:23.777 --> 00:08:27.017
I have, you know, for me,
I like, I'd just pick rust.

00:08:27.017 --> 00:08:27.827
It's just easier.

00:08:28.517 --> 00:08:29.470
It's a better experience.

00:08:29.970 --> 00:08:33.390
Matthias: Developer experience is not
just about the language itself, but also

00:08:33.390 --> 00:08:35.100
about the tooling and the ecosystem.

00:08:35.430 --> 00:08:37.145
Rust has cargo, which is a game changer.

00:08:37.645 --> 00:08:41.545
Adam: I came from Python and it was
like, how do I get my environment

00:08:41.545 --> 00:08:43.285
set up to, to run my application?

00:08:43.615 --> 00:08:46.525
And at the time it was
like, do I use virtual end?

00:08:46.525 --> 00:08:47.755
Do I use poetry?

00:08:47.755 --> 00:08:49.645
Do I just install everything with pip?

00:08:50.335 --> 00:08:51.685
You know, it's just, it's a mess.

00:08:51.685 --> 00:08:56.065
Like there's some projects that are
making it better in Python today,

00:08:56.065 --> 00:09:00.745
like UV is doing a really great job
cleaning up that, solving that problem.

00:09:01.705 --> 00:09:04.585
But when I was learning Rust, it
was like, Hey, how do I run this?

00:09:04.615 --> 00:09:05.815
How do I run this application?

00:09:06.085 --> 00:09:06.355
Oh.

00:09:06.775 --> 00:09:07.345
Cargo run.

00:09:07.465 --> 00:09:07.855
That's it.

00:09:08.185 --> 00:09:09.595
You know, how do I test it?

00:09:10.225 --> 00:09:13.615
Cargo test, you know, it,
uh, it was just so intuitive.

00:09:14.254 --> 00:09:16.774
Matthias: And once you get the
hang of it, you can build really

00:09:16.774 --> 00:09:18.604
powerful stuff really quickly.

00:09:19.264 --> 00:09:22.909
Suddenly you find yourself writing
extensions for your database in no time.

00:09:23.409 --> 00:09:29.469
Adam: To go from like nothing to a
Hello World example, it was like an

00:09:29.469 --> 00:09:34.299
hour or less to create an extension
that, you know, you write some function

00:09:34.299 --> 00:09:38.679
in rust turn that function into a
SQL function that you could call.

00:09:39.219 --> 00:09:40.719
That was like super easy.

00:09:40.719 --> 00:09:45.429
So it was kind of, you know, like we
didn't have to, it it, we were, we

00:09:45.429 --> 00:09:46.479
were up and running really quickly.

00:09:46.979 --> 00:09:50.199
Matthias: Adam's journey is not unheard
of in the Russ community, and all of

00:09:50.199 --> 00:09:54.054
this is to prove that Rust is enabling
people to reach further,  further

00:09:54.054 --> 00:09:55.824
than they themselves thought possible.

00:09:56.376 --> 00:09:58.896
You can build stuff that you never
thought you could build before,

00:09:59.046 --> 00:10:00.726
and that's what I love about Rust.

00:10:01.226 --> 00:10:04.526
If you're an old timer, you might
still remember the great series

00:10:04.526 --> 00:10:08.366
of blog posts about rust being
like a fire flower or a chat pack.

00:10:08.616 --> 00:10:11.796
something that sort of unreasonably
makes you extremely powerful.

00:10:15.066 --> 00:10:15.906
Here's Charlie Marsh

00:10:16.406 --> 00:10:20.456
Charlie: I do feel like I'm constantly
guided by the compiler, and actually more

00:10:20.456 --> 00:10:25.136
and more I think the way I write code is
that I try and make it such that I will

00:10:25.136 --> 00:10:27.176
be guided by the compiler in the future.

00:10:27.676 --> 00:10:29.391
Matthias: and here's Tom Koen from svi.

00:10:29.891 --> 00:10:33.671
Tom: I think rust really got it
right, uh, in the, in how to do error

00:10:33.671 --> 00:10:37.631
propagation, which is, you don't, you
can't just like willingly throw random

00:10:37.631 --> 00:10:39.161
exceptions all the way up to the stack.

00:10:39.161 --> 00:10:44.261
Like you have to catch them at every step
and define the, you know, like properly

00:10:44.261 --> 00:10:48.606
define the, the signature and kind of like
the contract that you have with the color.

00:10:49.035 --> 00:10:52.875
And with rust, you spend more in the
beginning, but actually that then later

00:10:52.875 --> 00:10:54.765
on you don't have to spend as much energy.

00:10:55.245 --> 00:10:56.865
Uh, and I think now we move fast.

00:10:57.138 --> 00:11:00.483
Matthias: And that metaphor still
holds true today, but I think there's

00:11:00.483 --> 00:11:04.533
something deeper going on when you
look at all the companies I talked to

00:11:04.533 --> 00:11:09.003
in this season, they're not just using
rust to feel powerful or to show off.

00:11:09.483 --> 00:11:11.643
they're using it because they
need something that's going

00:11:11.643 --> 00:11:14.523
to last something reliable.

00:11:14.823 --> 00:11:18.063
Gradin wrote a nice blog post about
10 years of stable rust, and I

00:11:18.063 --> 00:11:20.463
highly recommended in this post.

00:11:20.523 --> 00:11:24.843
He also talks about rust for writing
software that underpins other software,

00:11:25.293 --> 00:11:27.123
and I think that's the thing about Rust.

00:11:27.483 --> 00:11:32.043
It's really a language for decades  when
you're building foundational systems,

00:11:32.403 --> 00:11:36.783
you're betting that this stuff is going to
pay off in the long run that organizations

00:11:36.783 --> 00:11:40.648
and society will benefit from what
you're building for decades to come.

00:11:41.793 --> 00:11:44.913
We are building systems that people
will use every day and they might

00:11:44.913 --> 00:11:48.233
not even know they're using them,
but they still depend on them.

00:11:48.483 --> 00:11:50.583
That's what critical
software is all about.

00:11:51.083 --> 00:11:51.983
Here's Tom Hackman

00:11:52.483 --> 00:11:55.363
Tom: So really I think when it comes
to infrastructure, like really the

00:11:55.363 --> 00:11:58.993
best you can do, even if you do
everything perfect is just have a

00:11:58.993 --> 00:12:00.283
neutral effect on your customers.

00:12:00.283 --> 00:12:02.683
Your customers won't notice that
you spend all of this time on it.

00:12:02.683 --> 00:12:06.793
So, and this is part of what we hope you
do to do, is really just like give your

00:12:06.793 --> 00:12:09.193
customers a state of the art experience.

00:12:09.253 --> 00:12:12.343
They don't think about it, they
don't worry about, it just works.

00:12:12.403 --> 00:12:15.048
And for you, you don't have to maintain
it and worry about any of that.

00:12:15.548 --> 00:12:18.578
, Matthias: and Ru lets you do all
this with really great ergonomics.

00:12:18.758 --> 00:12:19.238
for example.

00:12:19.238 --> 00:12:21.668
Let's hear it from Virga,
sanding in from Ksat.

00:12:22.168 --> 00:12:26.818
Vegard: The one thing I miss every time I
go to any other language is just the enum.

00:12:26.818 --> 00:12:30.838
I think this I could model very
well in an enum, and I don't have

00:12:30.838 --> 00:12:33.012
this capability and it saddens me.

00:12:33.530 --> 00:12:37.705
Matthias: It's like Ru took the pragmatism
from c plus plus and the Purism from

00:12:37.705 --> 00:12:42.255
Hasco you can build software that's
sustainable, that doesn't waste resources

00:12:42.345 --> 00:12:46.598
where precision and correctness actually
matter stuff that works across different

00:12:46.598 --> 00:12:48.848
languages and up and down the stack.

00:12:49.348 --> 00:12:52.558
Vegard: So we are resource constrained
in the fact that we don't want to

00:12:52.618 --> 00:12:58.528
overprovision every data center around
the world near to all our antennas on

00:12:58.528 --> 00:13:02.458
our ground station sites, because first
of all, we don't necessarily have the

00:13:02.818 --> 00:13:06.958
resources to do that, and we don't have
the ability to do it at some point.

00:13:06.958 --> 00:13:10.942
So it's nice to use something that
doesn't hogg all the resources

00:13:11.633 --> 00:13:14.003
. Matthias: I don't want to dwell
on it for too long, but have

00:13:14.003 --> 00:13:15.473
you heard that rust is fast?

00:13:15.863 --> 00:13:16.973
I mean really fast.

00:13:17.393 --> 00:13:20.513
The fastness itself is not the
point, but the fact that it

00:13:20.513 --> 00:13:22.583
allows you to run more with less.

00:13:23.003 --> 00:13:26.543
You can run fewer instances of
your service, which means fewer

00:13:26.543 --> 00:13:30.323
servers, which means typically
less ops work and therefore less

00:13:30.323 --> 00:13:31.643
money spent on infrastructure.

00:13:32.143 --> 00:13:35.383
The numbers keep coming in and
they always tell the same story.

00:13:36.583 --> 00:13:37.573
Let's hear it from Tom.

00:13:38.073 --> 00:13:41.403
Tom: I think it was, I don't remember
the exact numbers, but like, I think

00:13:41.403 --> 00:13:43.203
it was like probably 40 x or something.

00:13:43.263 --> 00:13:46.323
The difference between like the amount
of Python runners that we ha needed

00:13:46.323 --> 00:13:47.793
to run compared to the rust ones.

00:13:48.993 --> 00:13:52.233
And the thing about that is
that it actually compounds.

00:13:52.413 --> 00:13:56.643
So if you go from, let's even go for
the basic, uh, case of just like two

00:13:56.673 --> 00:13:59.223
rust runners and like 80 Python ones.

00:14:00.123 --> 00:14:02.073
All of a sudden, like the
two runners, they hit.

00:14:02.898 --> 00:14:06.948
In memory cache like all the time
because there's just two of them, right?

00:14:06.948 --> 00:14:10.698
So let's say 50% of the time, but probably
more than 50% because like the moment

00:14:10.698 --> 00:14:12.078
they flip it gets to the other one.

00:14:12.138 --> 00:14:13.488
That one now has it cached.

00:14:13.848 --> 00:14:16.188
So like in-memory caching is
actually extremely effective.

00:14:16.688 --> 00:14:19.478
Matthias: If you've ever worked
with a larger c plus plus code base,

00:14:19.478 --> 00:14:24.248
you know how hard it is to refactor
the spooky action at a distance.

00:14:24.278 --> 00:14:28.358
The fear of breaking something,  the lack
of confidence that you actually did it,

00:14:28.891 --> 00:14:31.771
rust changes that if it compiles, it runs.

00:14:32.349 --> 00:14:36.369
And that gives you a level of confidence
that you just don't get with C or c plus.

00:14:36.369 --> 00:14:36.639
Plus,

00:14:37.029 --> 00:14:37.569
in rust.

00:14:37.569 --> 00:14:41.109
You can refactor with ease knowing that
the compiler will catch your mistakes.

00:14:41.609 --> 00:14:42.239
Here's V Guard.

00:14:42.789 --> 00:14:46.869
Vegard: Youngs ago, I was a c and
c plus plus developer, and I did a

00:14:46.869 --> 00:14:51.489
bit of that and bit of that and just
trying to refactor a c plus plus

00:14:51.489 --> 00:14:54.399
code base and having confidence that
you've actually done it correctly.

00:14:55.389 --> 00:15:00.159
I have never had that, but trust like
the, it's, if it compiles, it works.

00:15:00.284 --> 00:15:01.184
It basically is that.

00:15:02.184 --> 00:15:04.194
Matthias: I believe rust
is a language for decades.

00:15:05.634 --> 00:15:10.224
A language which allows us to build
software that lasts software that

00:15:10.224 --> 00:15:13.554
doesn't need constant handholding and
doesn't go belly up when we stop looking

00:15:14.054 --> 00:15:17.384
.  Again, I fully agree with Viot
here when he shares his experience

00:15:17.384 --> 00:15:18.944
with a critical service at Ksat,

00:15:19.444 --> 00:15:20.974
Vegard: I have a good
example of that because.

00:15:22.114 --> 00:15:25.759
A couple of months back, we needed
to do some changes in a few of our

00:15:25.759 --> 00:15:29.989
services running, and I went into the
repository for that service to actually

00:15:29.989 --> 00:15:33.769
fix it, and I saw the last commit was
one and a half year ago, and it's just

00:15:33.769 --> 00:15:35.149
been running one and a half years.

00:15:35.239 --> 00:15:39.019
I haven't touched it and I have never had
that experience in my professional career.

00:15:39.589 --> 00:15:41.554
That service was the main.

00:15:42.099 --> 00:15:46.509
Authentication authorization service
that authenticated and managed

00:15:46.509 --> 00:15:48.399
every API key, uh, principle.

00:15:48.519 --> 00:15:50.289
So it'll used on every request.

00:15:50.949 --> 00:15:52.875
It's really chugging along,
so it's, it's amazing.

00:15:53.875 --> 00:15:54.875
Matthias: 10 years of rust.

00:15:56.205 --> 00:15:59.115
It's surreal how much we have
accomplished in such a short time.

00:15:59.385 --> 00:16:01.815
Well short for a new
programming language, at least

00:16:02.315 --> 00:16:03.425
rust has come a long way.

00:16:03.845 --> 00:16:05.195
The community is strong.

00:16:05.195 --> 00:16:08.225
The ecosystem's growing, and
the language is maturing.

00:16:08.525 --> 00:16:11.315
It's exciting to see where Rust
will go in the next 10 years.

00:16:12.485 --> 00:16:16.325
I think there's still a lot of work to do
around using rust to its full potential.

00:16:16.715 --> 00:16:20.765
Now that we have a stable language and a
solid ecosystem, we can focus on design

00:16:20.765 --> 00:16:25.185
patterns and best practices . For example,
how do you structure code and how do you

00:16:25.185 --> 00:16:27.315
work with very large rust code bases?

00:16:28.335 --> 00:16:29.145
Here's Andrew again,

00:16:29.645 --> 00:16:33.095
Andrew: So we are, I think I just
looked the other day and we were at

00:16:33.095 --> 00:16:40.175
like five or 600,000 lines of rust in
the core across like 600 ish crates.

00:16:40.505 --> 00:16:44.405
I think we're just shy of 600
crates, internal plus dependencies.

00:16:45.215 --> 00:16:47.495
So it's, it's a pretty big code base.

00:16:47.495 --> 00:16:47.795
Right.

00:16:47.795 --> 00:16:51.425
And like I said, that that core
makes up as much of the business

00:16:51.425 --> 00:16:53.645
logic as we can get it to.

00:16:53.982 --> 00:17:00.072
What we found teaching people is the
issue is not learning the rust syntax.

00:17:00.582 --> 00:17:05.022
It tends to be that rust, good rust
requires a bit of engineering knowledge,

00:17:05.412 --> 00:17:08.082
and that's not maybe engineering
knowledge that the book is covered.

00:17:08.352 --> 00:17:08.682
Right.

00:17:08.892 --> 00:17:10.572
And you and I talked about
this a little bit, right?

00:17:10.572 --> 00:17:12.582
Like, how do I know
when I make a new crate?

00:17:12.732 --> 00:17:15.012
Well, the Rust book doesn't, I mean,
it's not gonna tell you that that's

00:17:15.012 --> 00:17:16.482
not really a rust problem, right?

00:17:16.482 --> 00:17:18.612
That's a, your code based problem.

00:17:18.612 --> 00:17:19.722
It's an engineering problem.

00:17:20.209 --> 00:17:21.979
Matthias: Here's Victora from Microsoft.

00:17:22.479 --> 00:17:27.189
Victor: We have hard data that shows
that components that have been rewritten

00:17:27.279 --> 00:17:32.229
are much solid, much more solid, and we
can actually even formally prove some

00:17:32.229 --> 00:17:37.424
of them that to be memory safe, both in
terms of spatial and temporal safety.

00:17:38.224 --> 00:17:41.944
So it's the no bullshit about it.

00:17:42.094 --> 00:17:46.114
It's literally what we're calling
it inside, at least on my team.

00:17:46.384 --> 00:17:47.584
Who's responsible to drive.

00:17:47.854 --> 00:17:53.194
This is 2025 is the year of Microsoft,
uh, the year of Frost at Microsoft.

00:17:53.194 --> 00:17:55.349
So literally, this is
what we're calling it.

00:17:56.055 --> 00:17:59.685
Matthias: I want to end this season
with words from Nico that capture

00:17:59.685 --> 00:18:02.685
both what makes Rust special and
what makes the community great.

00:18:03.185 --> 00:18:06.185
Niko: So the fact that Rust has
versatile enough, versatile enough

00:18:06.665 --> 00:18:11.555
to be optimized for those sort of
foundational low level applications and

00:18:11.555 --> 00:18:17.165
yet be usable all the way up is pretty
important and a little surprising.

00:18:17.675 --> 00:18:18.515
I think a cool, a cool outcome.

00:18:19.315 --> 00:18:21.565
Matthias: And finally,
his message to all of us.

00:18:22.065 --> 00:18:23.385
Niko: Yeah, be excellent to each other.

00:18:24.165 --> 00:18:27.105
I think Bill and Ted put it best
and I can't do better than that.

00:18:27.605 --> 00:18:30.275
Matthias: I want to thank all
the guests who took the time to

00:18:30.275 --> 00:18:31.835
share their experiences with Rust

00:18:32.675 --> 00:18:36.545
I learned a lot from each of you,
and I hope our listeners did too.

00:18:37.565 --> 00:18:42.215
And I also want to thank you, the listener
for tuning in and supporting the podcast.

00:18:42.785 --> 00:18:45.545
Your feedback and encouragement
is what keeps us going.

00:18:46.045 --> 00:18:49.255
We don't say this often, but if
you enjoyed this season, please

00:18:49.255 --> 00:18:52.465
consider leaving a review on
your favorite podcast platform.

00:18:52.765 --> 00:18:55.795
It really helps us reach more
people and share our passion for us.

00:18:56.295 --> 00:18:59.655
And perhaps you have a colleague or a
friend who might be interested in this

00:18:59.655 --> 00:19:03.775
podcast, maybe you can send them your
favorite episode and help spread the word.

00:19:04.275 --> 00:19:08.865
And finally, a heartfelt thanks to Simon
who tirelessly works in the background

00:19:09.245 --> 00:19:13.475
and is the only reason why you can
even enjoy listening to this podcast.

00:19:13.975 --> 00:19:17.305
And with that, thanks for
listening to Rust in Production.

00:19:17.805 --> 00:19:20.505
Rust In Production is
a podcast by Corrode.

00:19:20.595 --> 00:19:21.675
It is hosted by me.

00:19:21.735 --> 00:19:24.675
Mattias Andler, and
produced by Simon Bruen.

00:19:24.915 --> 00:19:29.145
For show notes, transcripts, and to learn
more about how we can help your company,

00:19:29.175 --> 00:19:32.085
make the most of Rust visit corrode Dev.