00:00:15.830
Cool, so as Magneto said, my name is Colin Fulton, and all my contact info is up there. We have a lot to cover today, so let's just jump right in.
00:00:22.380
You are a developer at a Ruby conference, and you've decided to take a very brave approach by attending a talk that, as the description suggests, is mostly about talking raccoons. Now, this is an interesting choice! Good for you for deciding to do something a little different.
00:00:39.780
Now I have a choice for you. Would you like me to explain the format of this talk, how we’ll go through things today, and give you an idea about how we’re going to learn about Ruby's garbage collector, or would you prefer to figure it out as we go? How many of you would like to hear an explanation of what this talk is about? [pause for people to raise hands] How many of you just want to jump right in and figure it out as we go? [pause] Cool! Luckily, you just made your first choice, which is the main thing I was going to explain. Alrighty, let’s skip past that.
00:01:24.900
So, once upon a time, you were working at your job, sitting at your desk, and encountered a problem on the server where processes were shutting down and you were getting all sorts of out-of-memory errors. You’ve never had to deal with memory before because you’re a Ruby programmer. You've heard that there's this thing called the garbage collector that takes care of memory for you.
00:01:48.060
So you look at some documentation and blog posts, and they use all these weird terms like 'heap' and 'malloc', and you’re not quite sure what’s going on. You decide to take a little break, go out to lunch, but just as you’re about to leave the office, you notice some movement in the back alley right behind your office. You turn around and see a little motion—there’s a raccoon!
00:02:30.450
Raccoons are common in your city, but this raccoon is wearing a top hat and an embroidered vest—a sight you don’t see every day. It catches your attention, and as you lock eyes with the raccoon, it shouts, 'Oh my goodness, no one is actually supposed to notice me!' before dashing into a tiny doorway that you’ve never noticed before, located in the back of your office.
00:03:00.480
Despite feeling hungry, you can’t just ignore the fact that a talking raccoon just ran away. So, you decide to chase after it. You crawl through the little doorway at the back of your office and go through a strange little tunnel. Eventually, you emerge in a giant room filled with raccoons running about everywhere; it’s covered with tables, all of which are piled high with pastries. You see that same raccoon, and with a smile, it greets you, saying, 'I’m so glad you followed me.'
00:03:58.800
You ask, 'What is this?' The raccoon informs you, 'You’re a developer who doesn’t understand how Ruby’s garbage collector works.' You respond, surprised, asking how the raccoon knew that. The raccoon says, 'Well, you understood me, and whenever a human understands a talking animal, it means that human needs to go on an allegorical adventure where we animals explain how that works.'
00:04:09.150
The raccoon introduces itself as Pat, and reveals they are a guide to Ruby’s garbage collector, sometimes referred to as the GC. You can call them the MC of the GC. Patter explains that a couple of things need to be simplified in this presentation for better understanding, but everything they will tell you is real.
00:04:28.470
They mention that Ruby has evolved significantly over time, and while there are many edge cases and complexities that you do not need to worry about right now, they want to give an overview of how things work. This overview will empower you to understand future discussions better and ignite your interest to learn more. As you look around the room, you see all the tables with raccoons running around and pastries everywhere.
00:05:10.050
Patter notes that those pastries are probably making you hungry, but those are actually Ruby objects. You are within an abstract representation of a computer running Ruby, where each table represents an area of memory reserved for the program, and all the pastries are the objects stored there. As a smart developer, you insist on understanding how it really works, and not just some cute abstractions. In response, Patter snaps his fingers, and you feel yourself shrinking until you are smaller than an atom.
00:06:26.080
Now, you’re surrounded by silicon atoms with electrical fields moving around you. You’re confused about where all the ones and zeros are, and Patter’s voice echoes above, explaining, 'This is how a computer really works. It doesn’t just deal with ones and zeros and logic gates; computers are physical devices with electrons and charges moving around, interacting with the principles of quantum mechanics.'
00:06:54.120
You express that this is probably not going to be very helpful for you. Pat responds, 'Exactly! When we talk about ones and zeros in computing, we're using abstractions to help us understand things. So, for now, let your imaginative understanding of pastries help you grasp these concepts. No one can fully understand how all this stuff works.' Patter snaps his fingers again, and you are brought back into the room full of delicious pastries and raccoons.
00:07:41.800
Patter explains that today’s talk is designed to provide an understanding of what the garbage collector does and the job it performs. They aren't going to delve into too much detail, but want to empower you to learn more. You’ll be equipped to follow Ruby conference talks discussing the garbage collector or reading documentation and blogs, asking important questions in your programming work.
00:08:54.480
Now, we come to our first choice: if you’re unsure what a garbage collector is, or perhaps have heard of it but do not know its specific role, we could briefly discuss its functionality.
00:09:01.550
Alternatively, if you're curious about how computer memory operates and what contributes to building a garbage collector, I can talk about that too. So, how many of you want just a basic overview of what a garbage collector does? [pause] Don’t worry, it’s only a couple of people, and I’m more than happy to discuss this. How many of you want to learn how computer memory itself works? [pause] Alright, so most of you are leaning towards the latter. You turn to Patter.
00:09:51.080
You ask, 'I want to understand how you raccoons manage this place; how does this memory work? I’m confused about the connection between pastries and tables.' Patter points to the room and explains, 'Each of these tables you see is a region in memory that has been reserved for a program. All those pastries are pieces of data stored in that memory. In memory, you have an area of memory that can hold objects or data. Notice that every single spot at these tables has a number—that’s called an address. Pointers can point to those addresses.'