Nix's Magic Cookbook
Mar 16, 2025
We have stories to share, guests joining us, insights from our week at Planet Nix, and Brent's big bombshell.
Sponsored By:
- Tailscale: Tailscale is a programmable networking software that is private and secure by default - get it free on up to 100 devices!
- 1Password Extended Access Management: 1Password Extended Access Management is a device trust solution for companies with Okta, and they ensure that if a device isn't trusted and secure, it can't log into your cloud apps.
- River: River is the most trusted place in the U.S. for individuals and businesses to buy, sell, send, and receive Bitcoin.
Links:
- 💥 Gets Sats Quick and Easy with Strike
- 📻 LINUX Unplugged on Fountain.FM
- Flox - Nix for Simplicity & Scale — Flox is all about simplifying your development workflow—think reproducible, portable dev environments powered by Nix, but without the steep learning curve. Whether you’re a solo coder or part of a big team, Flox lets you manage and share environments effortlessly, so you can focus on building great software instead of wrestling with setup headaches.
- Planet Nix
- Talk - Kelsey Hightower's Perspective on Nix
- Talk - Aneesh from Anthropic - Docker Was Too Slow, So We Replaced It
- Talk - Eelco Dolstra Intros Configurable Flakes
- Talk - Mike Kelly - Building a Chromebook replacement with NixOS
- Eelco Dolstra - Configurable Flakes
- Aneesh Agrawal - Docker Was Too Slow, So We Replaced It: Nix in Production
- Fireside Chat with Kelsey Hightower: An Outsider’s Look at Nix
- Building a Chromebook replacement with NixOS
- Why do people love NixOS so much? | Mike Kelly
- How to convert an old ChromeBook into a NixBook | Mike Kelly
- Olympia Mike's Nixbook | GitHub
- Flox | Nix in the Wild
- The NixOS Foundation Board Announced
- Guilty Pleasures | The Launch 🚀 13
- Pick: pyatv: A client library for Apple TV and AirPlay devices — This is an asyncio python library for interacting with Apple TV and AirPlay devices. It mainly targets Apple TVs (all generations, including tvOS 15 and later), but also supports audio streaming via AirPlay to receivers like the HomePod, AirPort Express and third-party speakers. It can act as remote control to the Music app/iTunes in macOS.
- Pick: atv-desktop-remote: A simple app to allow you to control an Apple TV from your desktop — The latest version works with tvOS 15 and up. It requires Python 3 to be installed on the system to work properly.
Transcript
WEBVTT
00:00:14.500 --> 00:00:19.220
Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.
00:00:20.160 --> 00:00:21.320
And my name is Brent.
00:00:22.000 --> 00:00:26.960
Hello, gentlemen. Well, coming up on the show today, we just got back from Planet
00:00:26.960 --> 00:00:30.660
Nix, and boy, do we have stories to share, guests joining us,
00:00:30.720 --> 00:00:33.580
and insights from our week at Planet Nix.
00:00:33.720 --> 00:00:37.620
Then we'll round out the show with some great boosts, some picks, and a lot more.
00:00:37.720 --> 00:00:42.160
So before we get into all that shenanigans, I want to say time-appropriate greetings to our virtual...
00:00:42.160 --> 00:00:42.580
My name is Wes.
00:00:42.840 --> 00:00:43.780
Hello, Mumble Room.
00:00:44.900 --> 00:00:47.080
Hey, Chris. Hey, Wes, and hello, Brent.
00:00:47.620 --> 00:00:52.140
Nice to have you there. JupyterBroadcasting.com slash mumble if you want to
00:00:52.140 --> 00:00:54.100
get in on that action when we're live on Sundays.
00:00:54.720 --> 00:00:59.360
And a big good morning to our friends at TailScale. TailScale.com slash unplugged.
00:00:59.440 --> 00:01:00.520
That's where you want to go.
00:01:00.800 --> 00:01:05.200
TailScale.com slash unplugged to support the show and try it for free on 100
00:01:05.200 --> 00:01:09.260
devices, three accounts, no credit card required, not a limited time thing.
00:01:09.520 --> 00:01:12.400
I mean, you must be on the free plan, Wes, right? Indeed.
00:01:12.620 --> 00:01:15.900
Yeah, it's great. And then what we did is we all started on the free plan,
00:01:15.900 --> 00:01:19.500
and we love it because you get a flat mesh network that is protected by.
00:01:20.460 --> 00:01:24.280
And it's very quick to set up and get going. I mean, if you've got five minutes,
00:01:24.340 --> 00:01:25.980
you can probably get it running on three machines.
00:01:28.806 --> 00:01:33.766
I'm not kidding, was the easiest thing to get running on FreeBSD of all the things I tried.
00:01:33.926 --> 00:01:37.646
And it's true for Nix, too. It's like a one-liner in Nix, and you've got Tailscale working.
00:01:37.986 --> 00:01:41.186
So we all love it for our personal home labs and our networks.
00:01:41.346 --> 00:01:43.866
And then we started using it here at Jupyter Broadcasting.
00:01:44.046 --> 00:01:46.966
And I think that's true for a lot of our listeners out there because it is an
00:01:46.966 --> 00:01:48.166
enterprise-grade system.
00:01:48.366 --> 00:01:51.466
I mean, there are just tons of companies out there, ones you've heard of,
00:01:51.586 --> 00:01:53.826
that are using Tailscale for their back-end infrastructure.
00:01:53.826 --> 00:01:58.266
And you can bridge what would be otherwise very complex networks,
00:01:58.406 --> 00:02:02.346
like multiple providers, multiple data centers, VPSs, on-premises,
00:02:02.686 --> 00:02:06.506
mobile devices. You can bridge all of that into one flat mesh network.
00:02:07.326 --> 00:02:11.986
That's why companies like Duolingo and Hugging Face and Instacart love it.
00:02:12.206 --> 00:02:13.246
So try it out for yourself.
00:02:13.706 --> 00:02:18.946
Get it for 100 devices for free when you go to tailscale.com slash unplugged.
00:02:19.366 --> 00:02:23.666
Well, we're back in town. Last week was our eBPF special. while we were away,
00:02:23.986 --> 00:02:27.326
hard at work, covering and capturing all of Planet Nix.
00:02:27.826 --> 00:02:31.366
And I felt like we kind of found a pretty good groove for our Planet Nix and
00:02:31.366 --> 00:02:34.666
scale coverage, don't you think? I think we, you know, we didn't overdo it.
00:02:35.626 --> 00:02:38.526
There was a lot to take care of. Yeah. I think we went to more talk.
00:02:43.266 --> 00:02:48.106
Yeah. Maybe put together. Did you enjoy the trip? Okay. I did, yeah. It was, you know.
00:03:04.266 --> 00:03:05.226
Yeah, that was great.
00:03:13.846 --> 00:03:14.206
True.
00:03:15.846 --> 00:03:17.206
Yeah, a million years ago.
00:03:17.346 --> 00:03:19.286
Or wants to know more. Yeah, that's true.
00:03:25.798 --> 00:03:26.958
Yeah, you heard from the man himself.
00:03:27.218 --> 00:03:27.778
Brandon, Greg.
00:03:28.638 --> 00:03:30.258
Observability, performance, tracing, you know what?
00:03:30.278 --> 00:03:31.118
I was reflecting on the trip.
00:03:31.498 --> 00:03:35.418
There were some tough moments for sure. I don't think I'd rather do it with anybody else.
00:03:36.638 --> 00:03:39.018
We as a unit have really got this work.
00:03:39.018 --> 00:03:40.418
How hard drives don't like it when you yell at them.
00:03:40.418 --> 00:03:41.518
And a big shout out to my wife.
00:03:41.638 --> 00:03:44.198
Adia, who does a lot of the heavy lifting when it comes to the bookings,
00:03:44.738 --> 00:03:46.058
figuring out where we can stay.
00:03:46.578 --> 00:03:49.198
And all the logistics there. Brandon, you're a big world traveler.
00:03:49.338 --> 00:03:52.538
I think we've got a good, tight little group now for covering these things.
00:03:52.778 --> 00:03:54.758
Yeah, I think we have a pretty good routine going.
00:03:54.758 --> 00:03:58.078
And we got, you know, we do an Airbnb and I'll hang out and that gives us a
00:03:58.078 --> 00:04:03.378
little bit of downtime together between all of the extra coverage that we do during the day.
00:04:04.218 --> 00:04:09.138
And we like, we didn't even have to this time talk about who was going to do what.
00:04:09.278 --> 00:04:13.878
We just kind of know our place and our positions and who's going to handle what part.
00:04:14.098 --> 00:04:17.978
And like a huge thanks to listener Jeff or producer Jeff, I should say,
00:04:18.118 --> 00:04:22.198
who just helped us throughout the entire process. So thank you, Jeff.
00:04:22.598 --> 00:04:23.038
Absolutely.
00:04:23.278 --> 00:04:24.538
Thank you guys. Always fun.
00:04:24.758 --> 00:04:30.438
And it was nice to be able to have Jeff there with us because he's always down to help in whatever way.
00:04:30.438 --> 00:04:32.198
It does do some networking stuff still to this day.
00:04:32.418 --> 00:04:36.078
I was really glad that we had kind of figured, we kind of settled into a routine
00:04:36.078 --> 00:04:38.838
because it meant every night we got the clips processed and.
00:04:38.838 --> 00:04:40.098
You know, labelled and collected.
00:04:40.818 --> 00:04:46.678
So we're finally at that point now where we have pretty much everything sorted by the time we get home.
00:04:47.098 --> 00:04:49.618
And then there's just a little bit of, you know, final polish to put on things.
00:04:51.458 --> 00:04:54.958
And, you know, before too long, in the same decade, it made its way over to
00:04:54.958 --> 00:04:56.938
Linux in the form of TCP DOM.
00:04:57.058 --> 00:04:59.238
And already you're seeing this thing, right, where you can kind of use user
00:04:59.238 --> 00:05:03.158
space to help better observe what's going on in your system.
00:05:03.158 --> 00:05:07.138
But they also made it possible for us to end up in Pasadena and bring you all the information.
00:05:07.138 --> 00:05:12.038
And they didn't ask us to cover it in any particular way. They just facilitated us to get down there.
00:05:12.558 --> 00:05:16.338
And they, you know, worked with us whenever we had questions or wanted to know
00:05:16.338 --> 00:05:20.478
who was who. And I think they're really going to be something special going down the road.
00:05:21.100 --> 00:05:23.400
What you have, right, is this complexity of Nix.
00:05:23.400 --> 00:05:26.460
Yeah, and that's how the implementation works. And Flox is all about simplifying it for developers.
00:05:27.420 --> 00:05:28.220
And so you get reproducible.
00:05:28.340 --> 00:05:30.320
You get portable dev environments that are powered by Nix.
00:05:30.320 --> 00:05:32.740
You don't have to have the learning curve.
00:05:32.740 --> 00:05:36.280
The point is it's like a very limited, restricted bytecode that can only do
00:05:36.280 --> 00:05:37.540
certain things relevant to.
00:05:37.580 --> 00:05:39.320
At first, filtering packets.
00:05:39.480 --> 00:05:42.700
And that lets you make sure that the company is crazy, you can't go into infinite
00:05:42.700 --> 00:05:45.560
loops, all kinds of other nice things. You have to optimize it.
00:05:46.020 --> 00:05:49.200
So Flox lets you manage and share environments effortlessly with people that
00:05:49.200 --> 00:05:50.820
already have an existing workflow.
00:05:51.100 --> 00:05:54.380
Packet and anything else that you need to focus on building great software and
00:05:54.380 --> 00:05:57.420
then the machine executes and ultimately that's how you tell like do I accept
00:05:57.420 --> 00:05:59.060
the packet or do I drop the packet,
00:05:59.720 --> 00:06:05.340
but at first it was a you know a very limited I think I had like a two registers
00:06:05.340 --> 00:06:06.840
to use super limited thing,
00:06:07.960 --> 00:06:13.080
but eBPF extended BPF was introduced in Linux 3.18 and of course they got an
00:06:13.080 --> 00:06:16.360
eye on you know so BPF have been around for a while there have been various
00:06:16.360 --> 00:06:17.360
developments so we're super grateful for.
00:06:17.360 --> 00:06:18.080
Their support so.
00:06:18.080 --> 00:06:19.520
Check them out at flux.dev.
00:06:19.520 --> 00:06:21.780
See how they're bringing the magic I think of NICs to everybody.
00:06:21.980 --> 00:06:25.300
A big thank you to everyone. At Flox, we're making it possible for this episode.
00:06:25.300 --> 00:06:29.560
It had some of those register limitations. So they upgraded to 64-bit registers,
00:06:29.780 --> 00:06:30.700
added more instructions.
00:06:31.020 --> 00:06:33.520
Now, Flox kept a pretty serious kernel.
00:06:33.740 --> 00:06:36.680
Which is a big part of it that lets you analyze the PDF programs to make sure
00:06:36.680 --> 00:06:39.840
they're safe. No infinite loops. They don't do invalid memory. We're fine with that.
00:06:40.020 --> 00:06:41.460
We're there to work, too. Gosh darn it.
00:06:41.560 --> 00:06:45.240
Right. It's because it's like you're loading something from userspace into the
00:06:45.240 --> 00:06:46.860
kernel. That's a big security concern.
00:06:46.860 --> 00:06:47.760
It is about 6 a.m.
00:06:47.760 --> 00:06:48.800
So you want to make sure that you have that.
00:06:48.800 --> 00:06:49.800
And it's Thursday.
00:06:49.800 --> 00:06:52.300
And Planet Nick starts at 9.15.
00:06:52.300 --> 00:06:57.880
A.m. But you've got to do the L.A. travel math and the getting your registration sorted.
00:06:58.952 --> 00:07:04.512
So really, we're probably out of here about 8.30. So I'm going to go take my really awkward shower.
00:07:04.512 --> 00:07:07.632
So that was kind of like the raw stuff. And then I'll be fresh and ready for
00:07:07.632 --> 00:07:08.632
all the people. How exciting.
00:07:09.132 --> 00:07:13.472
Oh my gosh. So I think I'm the biggest Airbnb critic on the planet.
00:07:13.672 --> 00:07:15.732
Because I've never really stayed at an Airbnb I've liked.
00:07:16.252 --> 00:07:18.752
And it's always in part because of the shower situation.
00:07:18.892 --> 00:07:23.112
Their products have a bunch of EVPF stuff for Kubernetes offerings.
00:07:23.492 --> 00:07:26.752
And this one was no exception. Plus, we got better compilers out in the public hall.
00:07:26.752 --> 00:07:31.552
Or compile once run everywhere so like compilers have better support to be able
00:07:31.552 --> 00:07:35.672
to make you can compile your BPF program and not have to worry about as much
00:07:35.672 --> 00:07:38.552
necessarily depending on what you're doing with it about how compatible it will
00:07:38.552 --> 00:07:41.592
be with the kernel where you compiled it versus where you're running it,
00:07:48.552 --> 00:07:48.992
right,
00:07:51.132 --> 00:07:56.492
this has been so successful that's not why we were there newer versions of D-Trace on Linux We.
00:07:56.492 --> 00:07:58.152
Got the bodies cleaned and the stank off of us.
00:07:58.252 --> 00:08:02.112
They're basically just some extra user space stuff that uses EBPF and other
00:08:02.112 --> 00:08:03.252
kernel primitives under the hood.
00:08:03.312 --> 00:08:06.952
It's just about time for the kickoff of Planet Nix. We've got our seats,
00:08:07.052 --> 00:08:12.252
and Brent brought a gigantic backpack. How much food is in there versus gear?
00:08:12.272 --> 00:08:16.072
One important thing with the extended product is they were also able to make
00:08:16.072 --> 00:08:19.072
the instruction set be more sympathetic to modern hardware.
00:08:19.072 --> 00:08:20.132
Wait, you didn't bring us food up.
00:08:20.132 --> 00:08:22.632
And they implemented just-in-time compilation as well.
00:08:22.672 --> 00:08:25.592
Now, Wes, do you have something to take notes with over there?
00:08:25.592 --> 00:08:27.292
Really fast. I have my phone.
00:08:27.292 --> 00:08:27.292
And I have log-seek. I have my phone.
00:08:27.532 --> 00:08:32.172
And I have log-seek. All right, and I've got the audio. I'll take the audio
00:08:32.172 --> 00:08:33.872
notes, West takes the text notes.
00:08:34.032 --> 00:08:34.712
And Brent will do the snack.
00:08:34.712 --> 00:08:35.932
If you do that, there's no guarantees.
00:08:36.172 --> 00:08:37.472
And it works pretty well. That's kind of on the tin.
00:08:37.852 --> 00:08:41.412
But there is some stable interfaces that you can use, which is nice.
00:08:42.458 --> 00:08:46.658
So, the other important point to know is there's kind of various things it can do.
00:08:47.378 --> 00:08:51.838
There's XDP, which is Express Data Path, which intercepts packets,
00:08:52.058 --> 00:08:54.678
basically, like the earliest point that you can.
00:08:55.278 --> 00:08:59.578
You have limitations on what you can do, but it can be super level and performing.
00:08:59.678 --> 00:09:03.058
And so you can see this sometimes maybe on the DDoS attacks where.
00:09:03.058 --> 00:09:05.538
We're getting flood-up traffic that you have.
00:09:05.918 --> 00:09:09.358
Maybe you can identify various ways that you can program in here.
00:09:09.358 --> 00:09:11.258
You show up just at the end of the talk, you can catch them in the room.
00:09:11.258 --> 00:09:13.678
Hey, could you step outside for a few minutes and do a chat with us?
00:09:13.738 --> 00:09:16.618
That kind of thing. So we're both trying to take in as much information.
00:09:16.618 --> 00:09:20.258
Yeah, that's the idea. It doesn't do as much of the very general and powerful,
00:09:20.278 --> 00:09:23.218
but, you know, full-featured Linux kernel networking.
00:09:23.218 --> 00:09:24.478
There was a moment where Ron from
00:09:24.478 --> 00:09:27.978
Floss talked about why Planet Nix and thought I'd share that with you.
00:09:28.298 --> 00:09:31.778
A journey into Planet Nix. So this is a little sneak peek. I don't know if we
00:09:31.778 --> 00:09:32.258
have any magic to gather fans out here.
00:09:32.258 --> 00:09:33.958
Yeah, one way to say it's limited context, but maximum.
00:09:33.958 --> 00:09:37.138
I'm kind of a geek on it. We're going to do something. You'll see.
00:09:37.258 --> 00:09:39.018
Okay, so then you can also do various types of K-prones.
00:09:39.018 --> 00:09:40.198
But otherwise, Planet Nix.
00:09:40.198 --> 00:09:41.738
So Nix, obviously, it's Nix.
00:09:41.898 --> 00:09:45.398
The other fact is that for years we've been trying to reinstate Pluto as a planet.
00:09:45.398 --> 00:09:46.798
It hasn't been really successful.
00:09:46.798 --> 00:09:48.778
You can hook almost any kernel function.
00:09:48.798 --> 00:09:49.978
It's called Nix, right?
00:09:50.038 --> 00:09:52.118
That's why it'll go call Nix Nix.
00:09:52.118 --> 00:09:54.238
You can ask him later about that. There's no clear definition of what you're going to get.
00:09:54.238 --> 00:09:56.818
You have to go look at the function you're hooking into. It's all going to be
00:09:56.818 --> 00:09:59.218
dependent on that. You've got no kernel internals.
00:09:59.218 --> 00:10:03.058
The thing is, we're starting a mission to try and reinstate Pluto as a planet. But a lot of them.
00:10:03.178 --> 00:10:03.198
Yeah.
00:10:03.198 --> 00:10:06.218
And then eventually have a real moon for a real planet called Nix.
00:10:06.818 --> 00:10:08.338
That's why we call it Planet Nix.
00:10:08.438 --> 00:10:09.118
I can get behind that.
00:10:09.668 --> 00:10:10.568
I think Pluto deserves it.
00:10:10.588 --> 00:10:12.428
So that's where a lot of some of the power comes from, right?
00:10:12.748 --> 00:10:16.288
But that may or may not be stable. There's no guarantee about it being stable across Coral versions.
00:10:16.288 --> 00:10:17.168
It's one of our biggest risks.
00:10:17.188 --> 00:10:20.068
It changes any time. People can update the signatures. That's one of the things
00:10:20.068 --> 00:10:22.208
that's been happening in the Rust discussion.
00:10:22.348 --> 00:10:22.708
It's still a planet.
00:10:23.168 --> 00:10:25.828
The kernel, many developers expect to be able to make a change like that.
00:10:25.828 --> 00:10:26.308
Maybe that's where we can find it.
00:10:26.308 --> 00:10:27.248
Because they have one big code
00:10:27.248 --> 00:10:30.248
base, they can update it everywhere and be able to do it in a factory.
00:10:30.248 --> 00:10:31.308
There was also an analogy made that I thought was pretty good.
00:10:31.428 --> 00:10:37.008
Ron calls Nix kind of like his mom's veggie gulag. And this is how he explains Nix to his family.
00:10:37.008 --> 00:10:40.828
The way I like to think about NICS to folks that are non-NICS initiated or maybe
00:10:40.828 --> 00:10:43.268
not super technical is like veggie goulash.
00:10:43.468 --> 00:10:49.208
So I have very mixed background in my heritage. So I had a great grandmother
00:10:49.208 --> 00:10:52.488
from Poland, and she would make this amazing veggie goulash.
00:10:53.208 --> 00:10:55.728
She sadly passed away a long time ago.
00:10:55.888 --> 00:10:57.468
But the recipe lived on.
00:10:57.868 --> 00:11:03.008
But everybody has these kinds of recipes that they kind of pass from person to person in the family.
00:11:03.808 --> 00:11:05.028
It's ink on paper.
00:11:05.028 --> 00:11:09.608
It tells you what ingredients you need it tells you how to put it in maybe it
00:11:09.608 --> 00:11:13.148
tells you Fahrenheit or Celsius and you do the conversion yourself and at the
00:11:13.148 --> 00:11:17.768
end of the day it never comes off as the same thing because recipes are not reproducible.
00:11:19.148 --> 00:11:22.788
Here's a big but and how I like to think about Nick's I like to say hey mom,
00:11:23.248 --> 00:11:25.068
imagine you had a magic cookbook,
00:11:25.608 --> 00:11:29.588
imagine that magic cookbook was written by our great grandmother and again it
00:11:29.588 --> 00:11:34.708
had all those recipes but when she wrote down two tomatoes one zucchini you
00:11:34.708 --> 00:11:40.268
know little paprika or whatever it is that magic cookbook actually materialized,
00:11:40.868 --> 00:11:46.148
that exact tomato that was grown in the exact soil with the exact acidity that
00:11:46.148 --> 00:11:50.428
she had in her backyard or at the farmer's market and that showed up in your
00:11:50.428 --> 00:11:53.908
kitchen when you were starting to cook that veggie goulash what.
00:11:53.908 --> 00:11:54.088
Do you think,
00:12:37.671 --> 00:12:41.771
And I think one of the insights and takeaways I had from Planet Nix this year
00:12:41.771 --> 00:12:48.071
was what you just described is becoming more and more something that the software
00:12:48.071 --> 00:12:50.771
industry is expected to provide to the enterprise.
00:12:50.771 --> 00:12:53.531
The enterprise wants to know exactly what's in this.
00:12:53.631 --> 00:12:56.511
They want to know if it complies with certain requirements.
00:12:57.031 --> 00:13:00.491
And they want to be able to reproduce it and move it around every single time.
00:13:00.551 --> 00:13:04.191
These tools, make sure you check all the regular system monitoring tools first,
00:13:04.211 --> 00:13:09.851
because we'll see as a theme, like, you know, your H-tops and B-tops and all kinds of things.
00:13:10.331 --> 00:13:12.791
Kind of get a broad look, and you can see some specifics.
00:13:13.591 --> 00:13:18.231
Whereas you can make broad... And this is where Ron's chat with Kelsey Hightower came in.
00:13:18.311 --> 00:13:20.311
Kelsey was on the show just a couple of weeks ago.
00:13:20.311 --> 00:13:22.491
Kind of teasing what he talked about. Like one thing like disk latency or something
00:13:22.491 --> 00:13:23.711
specific to the file system.
00:13:23.771 --> 00:13:27.111
And he went in further detail about his discovery when he finally had a little
00:13:27.111 --> 00:13:28.931
bit of time to read the Nix white paper.
00:13:29.111 --> 00:13:33.211
Kind of what you think about Nix and maybe having kind of a frank conversation about it.
00:13:34.409 --> 00:13:38.509
Yeah, I read the Knicks paper last year, and I was like, look at this,
00:13:38.689 --> 00:13:41.089
in my view, this buried treasure.
00:13:41.629 --> 00:13:46.229
And it feels like there was a fork in the road a couple of decades ago where
00:13:46.229 --> 00:13:48.109
this problem was definitely apparent.
00:13:48.929 --> 00:13:51.329
Back then, I was a big user of systems like Red Hat.
00:13:51.489 --> 00:13:53.449
I started my career on FreeBSD.
00:13:53.749 --> 00:13:57.809
And there was this situation of how do you get more than one thing on a system
00:13:57.809 --> 00:14:00.869
without them overriding each other or fighting each other?
00:14:00.869 --> 00:14:05.329
Then I spent the rest of my career putting one app per VM because no one solved
00:14:05.329 --> 00:14:09.749
the problem 10 years later that just came to think you did then we got tools
00:14:09.749 --> 00:14:13.369
like RVM in the Ruby community because your gem files would literally fight
00:14:13.369 --> 00:14:18.369
with each other and you taught them to behave I also worked on tools like Virtual
00:14:18.369 --> 00:14:19.649
N in the Python community,
00:14:20.229 --> 00:14:25.849
and then Docker came out and I think Docker leaned into the reality was that
00:14:25.849 --> 00:14:30.269