And thanks a lot to DataVersity for allowing me to speak to you guys. So a lot of you are probably wondering why is an entertainment company talking at a database conference. And originally we were going to announce a new asset compliant, transaction safe, quantum distributed key value in memory data store. But we feel that product is not quite ready for prime time. So instead I'll talk about the challenges of modeling superheroes. The title of this talk is solving fictional problems with no sequel. And when I say fictional problems, I'm not talking about, say, problems we've invented because we are neurotic and unstable individuals, but problems that we encounter in representing fictional worlds and fictional characters to consumers and to the general public. So I'm hoping that some of the explorations we've done in representations of fiction and application of no sequel technologies to those representations help you in the complex real world data sets that you encounter in your real and probably more important jobs than mine. So very briefly about Marvel, basically what Marvel does is we tell stories with a set of some of the most well known characters in the world.  Our films, we've made a few relatively small art house movies over the course of the last few years. The Avengers franchise alone has grossed over $5.5 billion. We hold the number one and number two record for box office opens and if it wasn't for that pesky Jim Cameron, we would actually have the number one grossing movie of all time with the Avengers that was out last year. And we're famous for our comic books. We're consistently the number one comic book publisher by sales. If there's DC fans, we may argue about quality. We have a number of TV programs right now and we're actually getting back into the live action TV space this fall with Marvel's Agents of S.H.I.E.L.D., which is our first foray into live action since the Incredible Hulk from the 80s. So we're very excited about that. And we're one of the top entertainment brands for consumer products for boys. So we are engaged in a large number of media and we are characters and our representation of characters are really what carry through across all of those different media. Very briefly on how we use technology, particularly consumer facing technology. And I'm in the digital media group at Marvel which deals with really anything that is a digital product that it's consumer facing. We're coming from a very traditional kind of web-centric lamp environment. But as we've grown and as our products have matured, we're actually getting into more, I think, interesting and somewhat more enjoyable technologies to work with. So our API platform, which is something we're actually hoping to make a little more publicly available later this fall, runs on Node.js and the Go programming language from Google and various document stores. We use Hadoop and the Hadoop ecosystem for big data analysis. We use graph databases to some degree. That's what largely this talk is about. And then through our relationship with Stark Industries, we have access to a number of the Stark Tech Z5000s. We're really looking forward to the Z6000 line when it comes out later this fall. Half the room is laughing. The other half is frantically Googling right now. I'm sorry. And so a brief tour of our properties or sort of what the landscape is from a data perspective. Marvel has been telling stories for over 70 years. Our first comic appeared in 1939. And in that time, there's over 30,000 comics that have been published, collaborated on by over 5,000 creators. Our stable includes 8,000 named characters. We've had 32 movies produced between our license-ret relationships and our in-house studio Marvel Studios. 30 plus television shows, which often will span into the hundreds of episodes and 100 plus video games. Now these are not big data numbers per se, but it does create very, very challenging things when representing this volume of products to customers. Especially in the realm of comics where customers, where you need a certain amount of domain knowledge just to get into the products. And the thing that all of these have in common is that in superhero stories, anything can happen. You can have characters who fly. You can have characters who get exposed to massive amounts of radiation and get incredible powers from that. Southern accents sound like that. I'm from Mississippi, I can say that. This is not what a Southern accent sounds like. Rogue, of course, is played by Anna Pacquan, who has gone on to massacre the Southern accent in True Blood. So how do you model? How do you apply structure? How can you create representations of a world where literally anything can happen, only bounded by the creativity of the creators who are collaborating on it? I mean, I've seen a few talks on how CERN handles data and they are throwing away thousands of petabytes per second or whatever the statistic is. But at least they're bound by the speed of light and the laws of physics. So I'm gonna talk about a couple of specific challenges in modeling this. And the first one is what I call object fluidity or character fluidity or the tau of Hawkeye. So for a long time, we thought of characters as basically static entities. So you have an entity that basically doesn't change. You have, so Hawkeye, and if you saw the Avengers, Hawkeye was the Jeremy Renner character, and he has certain attributes. He has blonde hair, he's an archer, he has a purple costume. And we've conceived of these as basically sort of a static set of attributes. And then relationally, there we go. Relationally, we can just tie these static entities to properties or products or comics or TV show episodes or what have you. So things like Magneto and Cyclops will appear in a particular issue, or Dazzler will appear in another one. And this is not a bad way to represent relationships. It allows us to do a number of things. Like we can give you a list of books if you want a list of books with Cyclops in them. We can give you a list of TV shows if you want a list of TV shows with a particular character in them. But it starts to break down when we really want to represent the universe that these stories take place in. Cuz one of the things about fiction that's I think actually definitive about fiction is that characters change. A story is something in which a character goes through a meaningful change. And in our stories which have been running for, which are a long running soap opera for over 70 years, they change a lot. They assume new identities. They join teams and leave teams and organizations.  They, new versions, new iterations of the characters are created. They appear in different media. They appear in, they are refreshed from, to become more relevant to the current time. And they cross over to different media. So the old model looks something like this. You have a static entity with certain properties. And at different times, all of those properties are false. So Hawkeye is not always Clint Barton. He doesn't always shoot arrows. He can assume other identities that don't have that power. He doesn't always have a purple costume. He is a member of the Avengers except when he's not a member of the Avengers. He's solo or he's off leading the Thunderbolts or whatever team he might be on. So in reality, Hawkeye, his life looks like this. This is what Clint Barton, Clint Barton's life really looks like. He was a villain, then he was Goliath, then he was Hawkeye, then he was Goliath again, then he was Hawkeye again, then he was dead. Then he was Ronan, and then he was Hawkeye. And imagine this type of lifeline spread across 8,000 characters and then across multiple media. So these are all different representations of Spider-Man. You have six or so that we've plucked out of the comics. You have two completely separate movie franchises. And these are a number of representations of Spider-Man from television, including there at the far right, the late 70s live-action Japanese Spider-Man, in which Spider-Man fights crime with the help of a giant transforming mecha dinosaur. You can watch all of the episodes on marvel.com and they are wonderful. So a second challenge, comic bibliography is a very complicated thing. And we call this the Captain America problem, not because there's a problem with Captain America, but it's indicative of the challenge. So in most periodical media, and comics are essentially periodical magazines, bibliographical structures are there for organization. So if you think if you read The New Yorker or Cosmo or Tiger Beat, if there are any Tiger Beat fans here, they are arranged in series and volumes and they go sequentially and that sequence is really the only organizational structure you have. In comics, bibliographical organization is actually a storytelling and to some degree a marketing tool. And they play with the structures in ways to communicate things to the readers. So this is the Captain America problem. Let's say I've just seen the Captain America movie that was out a couple of years ago. I want to start reading Captain America comics. I think most people would logically say, oh, I'll read Captain America number one. Well, there are six Captain America number ones. And every time that they've been rebooted or every time they've been restarted, it's for a reason. It's to signal something important has happened in the life of this character or a important change in creative teams. If you actually want to read the first appearance of Captain America, it's not in a book called Captain America. It's in a book called Captain America Comics. And this is from 1941 and that is Captain America punching Hitler in the face. And the first book called Captain America doesn't start with issue one. It starts with issue 100. And this type of thing happens all the time. It's actually not unique to Marvel. DC recently renumbered their entire line. It's a fairly common thing just within the comics world. But these are a few examples of series. The X-Men becomes New X-Men, becomes X-Men, becomes X-Men Legacy, all with the same numbering. Incredible Hulk drops its main character, but Cap keeps its numbering. And my favorite one from a modeling perspective, Deadpool Teamup starts at number 900 and counts backwards. Recently, they also changed our issue numbers. They started doing floating point digits at the end of the issue numbers instead of integers, which is an interesting conversation between the marketing folks and the DBAs. And a second challenge with bibliography is that bibliography doesn't always follow story structure. So if you think of story, if you remember to your high school English, stories have an initiating incident. They have rising action. They have some kind of resolution. They have a falling action. And you would expect that bibliography reflects this. So this is a series of Spider-Man books that were published at the same time a few years ago. And you would think that the stories follow the sequences where the arrows are, which are pointing issue one to two to three to four or five hundred twenty-five, twenty-six, twenty-seven, et cetera, et cetera. But as you might guess from the color coding in this, that's not actually how this story goes. The story goes like this. So in order to read this story, which is called Spider-Man the Other, the story goes across the different series back up and back up and down. And this is very, very complicated to present to users, especially now when we've gone from a business model that is primarily about putting sequential books out month by month and into one where our entire catalog is available digitally. It's very, very difficult to get new users to understand something like this without leading them down the garden path. I mean, so to recap these, how do we make, how do we create new aggregation structures and aggregate characters where it's important, but also present granular views of those characters to the users who care about that? How can we accommodate fluidity like new entity types, new relationships, sequences, memberships? How can we model a changing set, model on shifting sands? So instead of static entities, we need to be able to represent really fluid relationships. Instead of fixed structures, we need to be able to represent dynamic sequences and without having to say go back, recode entire applications, recode entire database schemas which might be fixed in various ways. So this is why the graph is a very, very compelling and powerful conceptual framework for Marvel as a company and for companies like Marvel that are in the IP space. And so this is probably a very basic graph theory for most people here, but I'm going to quickly go over it. So a graph is really just a collection of entities and relationships between those entities. So in this very simple one, you have three nodes, you have an edge which connects this top two and what's called a hyper edge, which is really just an edge that has more than one node attached to it. And for us, this concept of a hyper edge is actually very powerful. So let's go back to Hawkeye. Now that you're familiar with that bit of comic trivia. So we have Hawkeye and we have, there's a set of attributes that surround this identity and Hawkeye is really just an identity that someone assumes. And we know there's this person, Clint Barton, who sometimes takes the identity of Hawkeye and these two things are connected, but they're not connected in a static way. Clint Barton is Hawkeye only at certain moments in time. So what we can do is create a graph and a hyper edge which defines this relationship that at specific moments in time, this character assumes this identity. And we can say, okay, this moment appears in particular products, particular episodes, particular things that correspond to saleable or purchasable or watchable things. And this really helps us when say modeling out teams. We can say, okay, Clint Barton appears in the Avengers at a particular moment in time in a particular issue. And this is actually very useful for us. We've had a long time, for a long time we've struggled with representation of teams because people think of teams as kind of like the Beatles or U2 with a static membership. But in fact, they're more like baseball lineups. They change constantly from issue to issue. And the more popular the team, the more fluid it is because people want to boost their favorite character. Writers are selfish. And also sometimes Hawkeye could be in a team at a particular time as a particular alias or just as himself. This also gives us a very powerful aggregation framework. So we can say there's this general idea of Hawkeye that crosses media. That's independent of individual representations. We know these guys are kind of connected to this sort of Uber idea or these guys are emanations of that concept. It also allows us to do things like place set in easy ways without having to go back, define a new entity type, recode our entire schema and all the things you have to do with a traditional relational database. You can also, we can also do things like place where moments happen in the real world. And one of the distinctive things about Marvel Stories is they all take place for the most part, they take place in real locations even though they're fictional things. I mean, things like Atlantis in the blue area of the moon not withstanding. We can even do things like track the uses of costumes and stuff over time and make kind of cool galleries and stuff like that. We can also, the graph also allows us to do interesting things with sequencing outside normal bibliography. So if you think of these two rows as moving from left to right as the sequence in publication and then the lines, the diagonal lines, the sequence in story, you can represent things much easier and much more intuitively to consumers without having to create new organizational structures in a very static database. We can even do things like this where we can represent aggregations across ages of comics such as the golden age, the silver age, the modern age and events and even represent chronological publication sequence versus story sequence versus bibliographical sequence. So this is all very powerful and the wonderful thing about a dedicated graph databases and dedicated NoSQL or in the NoSQL space generally we don't have to recode entire entities and applications to do this. We can really do this on the fly. So why is this important? Why is it important to marvel as a business? First of all, comics as I think hopefully have proven are very, very challenging to represent particularly to new readers and with the advent of digital distribution we have many, many new readers and with the popularity of our movies. Secondly, the graph allows us to learn things about our comics that we didn't know already. So interesting reactions do certain characters fall within larger franchises. Lots of interesting kind of stuff surfaces when you even run very simple visualizations against them. Sorry. And then third, it allows us to model characters transmedia in a consistent way which is something we had struggled with before. And finally, we are able to apply user behavior and user interactions in the larger media graph or the in-universe graph and understand and do predictive analytics and predictive modeling to target, say, marketing web experiences, app experiences to the user. So I haven't talked so much about the user behavioral aspects of this because the comic part is cool but we are looking at this as both a very much a understand and represent our IP to our fans and then understand and then use that to drive behavior in consumer purchasing. I think also more importantly, data is actually very much part of the comics experience. If you have ever been in an argument over whether Wolverine could beat up Sabertooth or Spider-Man could beat up Captain America, you've been in a discussion about data. And this is from the publication of handbooks to fans who have done incredible graphs on their own or incredible visualizations on their own, we know that data is very important to our experience. So I'm gonna end with a couple of visualizations and so this is a graph of character interactions in the Marvel universe of over I think 70 years. So each point in this is a character, each line is a shared appearance between that character and other character. What I found really interesting is we did a standard force repulsion or algorithm to spread these out but what I found was really interesting is when we applied modularity groups against it, you get groups that correspond basically to our core franchises. So this is the X-Men group. This is the Wolverine group. This is the Avengers and then this is the Spider-Man group and then this is an alternate universe and that's an alternate universe kind of floating off to the side. This is a similar graph with creators and again it neatly spreads out into a series of what we call the comic ages, the golden age, the silver age, et cetera. So we have sort of the golden age up here, the Stanley, Jack Kirby era here, the sort of 70s, 80s and 90s and then this kind of big blob is the modern age of comics where you get all the creators that are kind of working today and it's larger more because we have honestly better data on that period as we get, we're tied into on your production systems. And finally, this is a graph of our movies and let's check my time here. So I'm actually gonna zoom in on this a little bit, if we'll see if this works. So what we did for this was each kind of large circle is a movie and the circles are just, the nodes are sized by degree so the number of outbound connections and what's really interesting is that you get two, I have lost it here, sorry. You get two strongly or two connected components, one which corresponds to the X-Men franchises, the Punisher, the Marvel Cinematic Universe, the Avengers franchise, all of that and then so we get into say Thor here, the Avengers, we have Captain America up to the Fantastic Four, Captain America of course being connected by Chris Evans, we have the Iron Man trilogy, which is connected to the Daredevil trilogy by John Favreau and then various things which tend us to the Blade trilogy which then connects back to the X-Men, or sorry, to the Ghost Rider and then kind of down here is the X-Men and then off to the side by itself is the Spider-Man franchise which is a completely distinct connected component of the graph, back up, okay. So we did realize we left something out when we made this that caused it to disconnect so I'll just shout out, does anyone know what we left out that will connect the graph together? Stanley, so when you add Stanley in he becomes, A, he becomes the chief centrality thing on the graph which is interesting but he actually brings the two disparate, all the disparate franchises together so we can't get rid of them. So I think I've got, I think I'm basically out of time so thanks, hope this was really interesting. If you're interested in comics ontologies and various stuff we have a schema.org proposal right now with the W3C. So if you're interested in really deep comic arcana you can check that out. Thanks a lot.


Hello, earth citizens. In this video, I will show you a 10 minute routine to do for opening your bladder meridian. So if you have bladder issues, because your bladder is not somewhere you can totally just touch and massage and access right away, we use the wisdom of meridian channels which are energy pathways that are in your body in which energy flows.   So we're going to focus a lot on opening the back side of your body along with the back of your legs because that energy pathway is connected to your bladder meridian. So if you have tightness on the back of your legs, back side of your body, chances are your bladder is tight as well. But if you work one, it opens the other and vice versa. Alright, so we will start with straightening our legs. And then from here, first, shake your legs side to side. First, shake your legs side to side, loosening up tension in your legs, shake, shake, shake. For 10 seconds, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, stop. Next, bring your legs together and now bounce your knees.  Your toes are pointed up. So don't relax your toes. Toes are pointed up and then bounce. You'll feel a difference. You'll feel a difference on how it affects the backside of your legs. We'll bounce here. Let's bounce here for 10 seconds. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Let's go for 10 more. 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, stop. Now, relax your ankles and shake your legs side to side one more time and stop. Now, when you inhale, you're going to point your toes in as you inhale. Feel the stretch on the backside of your legs. Feel the pull, especially in your calves. And when you exhale, you're going to point your toes forward. So you feel it on the top side of your legs. Inhale. Feel it on the backside. You can feel it to your calves and sometimes to your hamstrings too. Exhale. Let's do three more. Inhale. Feel the backside of your legs. Exhale. Two more. Inhale. Exhale. Last one. Inhale. Exhale. Great job. Return. Shake your legs. Shake the tension off. Okay, stop. Now, legs together and try to touch your toes if not ankles, knees, thighs, whatever is okay. But from here, take two steps back with your butt. So one, two.  And now from here, straighten your spine.  And then, now, gently push from your lower back. So you're not pushing from your shoulders. Imagine my hands are right on your lower back and I'm pushing you like this. So have that kind of feeling. Alright, so arms forward and push from your lower back like this. You should feel a deep stretch on the backside. Keep your toes up, bouncing here. Let's bounce 30 times. If you feel it in your calves, hamstrings, you're doing great. Ready? One, two, three, four, six, seven, eight, nine, 10. One, two. Feel the backside of your legs, your bladder meridians opening. Seven, eight, 20. 10 more. One, two, three. Push from your lower back four, six, seven, eight, nine. Great job. Now touch your toes if you can, ankles if you cannot, knees, thighs is even okay too.  And here too, gently bounce here.  One, two, three, four, five, six, seven, eight, nine.  Now we're going to do the same thing, but a different variation. So the basic posture is again, pull your toes in so you stretch the backside of your legs. And now straighten your spine, palms facing up. Breathe in. As you exhale, bend your upper body forward. Pull your toes up as much as you can. If you can hold your feet, that's great. Feel the stretch on the backside of your legs. Relax your legs. Stay here. Inhale in through your nose. Exhale through your mouth. As you exhale, try to bend a little bit more. Inhale. Exhale, bend a little bit more. Exhale. Great job. Inhale. As you exhale, roll your spine up one vertebrae at a time, letting your head arms forward again. Toes pointed in. And again, push from your lower back only. Lower back. Push from your lower back. You'll feel a deep stretch on the back of your legs. Let's bounce here 30 times. One, two, three. It's not a big movement, but you feel a huge stretch if you do it right. 4, 5, 6, 7, 8, 9, 10. Breathe out. 2, 3, 4, 6, 7, 8, 9, 20. 10 more. One, two, three, four, six, seven, eight. Great job. Return.  Shaking down to your spine, ease tension from your spine. Great job. And now lie down and first hug the back of your thighs, rock side to side. Loosen up your lower back. You did a great job. To finish this routine, we're going to do a plow pose. So if you're not familiar with a plow pose, what you do is, okay, first stop rocking your lower back.  So it looks like this, like this. But I realize that this is not an easy posture. So we're going to do a modification just so that you can open your bladder muri a little bit easier.  And now the key thing here is you pull your toes in. When you pull your toes in, you can feel the back of your legs stretching.  So pull your toes in so they're facing the ground. If you can feel the back of your leg stretching, you're doing it right. So in this posture, relax your shoulders, relax your chest, relax even your hips. And let's hold it here for 30 seconds.  If you can go a little bit further down, that's great. But keep your toes always pointed towards you, pointed in. 30 seconds, one, two, three, four, five, six, seven, eight, nine, ten. Breathe. One, two, four, five. If your legs are shaking, that means blockages are opening. Six, seven, eight, nine, 20. One, two, three, four, six, seven, eight, nine. Great job. Now slowly bring your legs down slowly feet on the floor. And now turn your body to the left side and also slowly push yourself up back into a seated half lotus posture. Rest your hands on your knees, straighten your spine, feel your body. How do you feel? Do you feel like your lower back all the way down the backside of your legs got a nice stretch? So that is the real key part of where the bladder meridian is. It's on the backside of your body, but it's very effective to open the backside of your legs to open your bladder meridian. If you have bladder issues, this is a very good routine to do every single day. So you can stretch and release tension from your bladder. You did a great job. To experience a full one-hour brain education-based class, please visit a local body of brain yoga studio near you.


Hello friends. So in this session, we are going to learn squaring any two-digit number Okay, so let us say if I have to multiply or rather find out the square of 63 so the conventional method is you multiply 63 and Like this. So this is nothing but 3 times 3 is 9 3 times 16 is 18 and then you should you do 6 times 3 is 18 carry 1 and 6 times 6 is 36 37 and then you add So it becomes 39 69 right, this is one way of doing it. I'll Tell you another technique of doing it in your mind itself, right? So what you do is you first find out step one is nearest Find out the nearest multiple of ten Multiple of ten. So what is the nearest multiple of ten to sixty is? So we'll also take example case here. So here in this case the nearest multiple is 60. Okay, then find out gap between between the number the number and The nearest multiple of ten and the nearest multiple of Of ten, so what is the nearest gap between 63 and 60? So you do this 63 minus 60 is equal to 3 Okay, now third is third step is Third step is multiply the nearest multiple of So, let us call this as factor Factor Okay. Now what you need to do is? multiply multiply the nearest multiple of Multiple of ten by by number Plus factor Okay, so in this case, what will it be? It will be 60 into 63 plus 3 isn't it? So it is nothing but 60 into 66 now Multiplying this is mentally is much easier. Why because you can do it in your mind itself So it is if you see it is nothing but 6 into 6 is 36 carry 3 and then 39 6 0 is it it? This is easier to calculate. Now what third fourth is Add add Factor squared factor squared to the number Obtained obtained obtained Obtained in step 3 Okay, add factor squared to the number obtained in step 3. So what will it be? So here in this case, it will be 39 6 0 plus factor square is 9. So answer is 3969 Okay, let us take another example to understand this so Let us say we have to multiply 22 square Okay, so the nearest multiple of 10 step 1 is 20 then Gap between the number and the nearest multiple so 22 minus 20 is 2 then third multiply the nearest multiple of 10. So that is 20 into 24, which is nothing but 4 4 8 0 Isn't it? And then the fourth one is 2 square plus 4 8 0 is 4 84 Correct. Let us take another example 71 square. So first step is first multiple of 10 nearest multiple is 70. The gap is 71 minus 70 is 1 Correct. And then third is multiply 70 into 72, which is nothing but 7 5 0 4 0 Is it that 5 0 4 0 and then fourth is add 1 square to 5 0 4 0, which is 5 0 4 1 Okay, let us take some more examples to make it more clear. So let us say if the number is 89 I have to find out 89 square. So first step nearest multiple is 90 then the gap 89 minus 90 is equal to negative 1 Okay, third, what do you need to do 90 into 89 minus 1 that is 88 Which is nothing but 7 9 2 0 Okay, and then fourth is add minus 1 square to it add Minus 1 square to it, which is nothing but minus 1 square is minus 1 only so it is 7 9 2 1 Right another example, let us say we have to find out 78 square first step You know it is 80 second step is minus 2 third is 80 into 76 which is 6 0 8 0 and Then plus minus 2 square to this 6 0 8 0 is 6 0 8 4 So though I am using pen and paper here but if you practice a little bit more you'll be able to solve it mentally itself and While solving lots of numerical problems or during the exams wherever you want to do this quick Squaring thing you don't really require to write it on a piece of paper and then get the result you can do it mentally and proceed further With different calculations. I hope this technique Was useful for you. Thank you


Jimmy K here, Metal Voice. Look at us. The Metal Voice shirts are now on sale. Just go to the video description to find out on how you can purchase one. Metal! I'm welcome to the Metal Voice today. He's the first time on the show, right Alan? Yes, yes this is a huge thrill for us. We've had Don, we've had Jeff Pilsen a few times, but George Lynch, he's the man. I mean we've been waiting for George. Yeah, it all kind of builds up to the point, you know, where you get to actually talk to me. George, George. As my good friend Cork says, this is what experience, yeah. You'll find out in the course of the interview how amazing it's going to be. The end machine, the end machine. I feel so lucky for you guys. I'm happy for you guys to be able to talk to me. I know it's such a privilege for you and sometimes I do these interviews and people, you know, because I like doing them because I get to talk about myself a lot. Over and over again, but then there's these guys sometimes that they want to talk about themselves or something and I can't even remember what they want to talk about because I usually just lose interest and go to sleep. We just lost your video. George, we lost your video. You were spouncing up, but there you go. Speaking of everything being my fault, yeah, that's my wife falling in. So George, let's talk about me and Alan for a while. So George's second best quality is his modesty, of course. Right. It's a false modesty. There you go. If you exercise false modesty, then people will... The muffins are ready. Oh dude, everything's my fault again. The muffins are ready in the oven. You might want to go check it. That's my wife texting me that just reminding me that it's... That is your fault. Friday and everything's going my fault. Enough about you, George. What about us? No, enough about me. What do you think of me? The end machine phase two. Let's get into it. Launch today. Phase one, I guess, made our top... It made our top five list back in 2019, albums in 2019. So we're very anxious to hear phase two. Yeah. We'll hear phase three. Okay. Well, there is going to be a phase three. Is that what we were saying? 50% better. What else are we going to do? I mean, if I don't keep making these records, I might have to get a real job. People will be on to me. They'll be like, this guy doing it. Let's see. George Lynch on guitars. Jeff Pilsen on bass. Robert Mason on, of course, on vocals. Pardon the pun without skipping a beat. Steve Brown on drums. The brother of Mick Brown. Yep. We've heard of his mild Steve Brown. Mild Steve Brown. It's kind of like Jason Bonham, the son of John Bonham. It's sort of like within the family, right? You're keeping it within the family. Yeah. Eventually, all our younger brothers will be in the band and there'll be any original guys left. They'll send us a check. Well, that's actually our five o'clock show today. The original members are part of a band. Is it still considered the real band? I don't know. Is the real band considered the real band? If every molecule in your body has changed numerous times since the 80s, then are you still the real band? Yeah. Real band had to find real band. Yeah. Exactly. But look, let's get back to phase two. Blood and money. What a way to open the album. And I mean, your soloing on that song says it all. It sets the tone for the rest of the album. What we set out to do with that solo was create the world's longest, most tedious guitar solo. It's got everything you want. It's right there. Yeah, I'm pretty sure I have to prove something. I don't know. I don't know. I'm sure what I was trying to prove. But I think it has, you know, I noticed people listening to it, looking at their watches a lot. I don't know. That means anything. I don't know about that. I think it's great, but that's just my opinion. And I'm always wrong. You're usually wrong and your wife will probably attest to that. One of them. All of them. Like when I put this on, I didn't think it was docking. That's the last thing I thought it was. Was it intentionally supposed to sound like docking? Or is it just another beast? Well, we set out to recreate the chemistry and the mentality of the writing process and the compositional chemistry that Jeff and I had and the things around us and the things that we thought about and the things that were, you know, had carried more weight in the writing process. So that's what we tried to recreate. Not necessarily plagiarizing docking songs or sounds, but just being in that frame of mind. And I think we did a good job of that. And in other words, when formulating the song structures, in more recent years, sometimes we've sort of defaulted to this position of, you know, well, we've done all these more basic kind of records in the past, you know, decades, and we've established we can do that. So we need to prove that we're geniuses are really smart or whatever the hell. And we can do other things and like play in different time signatures and go out of key and play to changes and whatever, you know, be interesting. And that's all wonderful. And we did more of that with the first machine record.  It was a lot of different elements on that record. It's very interesting. And I love it. But then we decided on this record to go back and place more importance on the fundamentals, like having as good a hook as big a hook as possible, memorable, sing along hooks, you know, and so people, you know, really easy to digest the name of the song, the title of the song, and the chorus is and, and then have easily accessible and digestible, you know, like tempos and structures, you know, ABC, ABC, bridge, AC, you know, whatever it is. I mean, it's a real tried and true simple Western music formula for Western pop music and rock music. And we just kind of went back to that with some, you know, some other things in there. Of course, you know, didn't make it completely dumb. But you know, really, I think what comes down to it is just giving the majority of people what they want. And in some sense, we are selling a product.  But what about the core thing that you're known for? How can we don't do that anymore? We want that. So we had to address that. And it's been, it's hard to do. It's probably the hardest thing for me to do. And I think for Jeff, I can speak for Jeff as well, is to recreate something that we were 35 years ago. Yeah, very, very difficult to do that. And I've tried it before and not succeeded, where I've had better access to reinventing myself and doing other styles. For instance, I've got a project called The Banishment I've been working on for many years. And that's very industrial-esque. And I love it. It's dark and it's heavy. And it goes, you know, always density to it. And that's completely on the other side of the planet than, you know, you know, my legacy stuff. But I found it easier to fit into that than it is for me to go back and recreate Ebony's 80s style composition. Well, no, thanks for confirming that, because that's exactly what I took away from this album, what was so different on the first one is really gone back to what I call, you know, meat and potatoes on this phase two. So, but again, you know, some of the great tracks and talking about the 80s, I mean, I'm listening to the devil's playground and you got Robert Mason in the middle with this little rap there.   Were you ever part of that scene in the 80s? Oh, absolutely. I was the main guy. You're the guy. Let's make an album. Let's make an album. Yeah, right now. Well, you guys want some coke? Yeah, it's, I think it's illegal in Canada, right? Still. Weed is legal. Weed is legal. Coke will be legal soon. So, stand by. What's weed? Is it like coke? I don't know. It's like coke. I'm kidding. It's a scene from Steve Martin, Mark Shortman, the Three Amigos. The Three Amigos. Where they're in the bar and he wanted some milk and they wouldn't have milk. He goes, what do you have? He goes, well, I have a beer. We don't have beer. He goes, what do you have? He goes, I got tequila. He goes, what's that? He goes, it's like beer. It's like, it's like milk. All I remember is that long note. We are the Three Amigos and they sustain it for about, you know, two minutes. That's what I remember from that movie. Yeah. It's one of those movies when you're like kind of just had it up to here with kind of everything, you know, just for something light, you know, just go back and watch it for the 20th time. It's pretty funny. You know what, you know what I hear about in this album? George, I hear a white snake. I hear dual guitars like Maiden. I hear a little bit of Queen's Rite sometimes with the sound effects coming in and out. I don't hear Dockin. Maybe one song kind of sounds or reminds me of Dockin, like Shine Your Light. Am I right about this? Is there just infuse with different sort of influences? Sure. I mean, it always has. All the Dockin stuff was just wasn't, I mean Dockin wasn't a pure thing.  It was a whole lot of Judas Priest and Dockin. It was easy. And you name it. I mean, just about anything, you know, that you could pull from our respective influences in the late 60s and all through the 70s and even contemporary bands at the time that were influencing us. So we weren't immune from influence. I mean, that's all Dockin is an amalgamation of all our influences and continued and everything we create now is a continuation of that. And Dockin is one of our influences. Yeah, it's kind of like a hall of mirrors, you know, infinite mirrors. But I mean, you know, you got Lynch Mob, you did stuff with Michael Sweet. I mean, what's next for you? Like, how many times can you reinvent yourself? Like you said earlier? Well, I don't really reinvent myself. I mean, I'm really sitting here doing the same thing on that I do on every record. The only difference is the style will tend to change in my based on who I'm working with and what the idea of the music is. And that's usually just dictated by the people in the band. So when I work with like Project Infidelica or Ultra Phonics, you know, that's a whole funkier thing, right? So the guys are, you know, Pontchart Tomaselli from War is coming in and, you know, Angelo Moore from Fishbone is in the band, you know, so we're not going to play Iron Maiden stuff. Or we might take, I might bring something to table. It's kind of hard rock like that, you know, typical thing that I do. But in that context, it becomes something totally different.  Same thing with KXM.  You know, he's the opposite of like a Bonham kind of guy. He's just, I don't even know what you call it, but it's very syncopated and mathematical and very cerebral and a lot of different, you know, time changes and it's challenging for me. And I love that. And of course, Doug is this different kind of a bass player that has this very unique sound and style. And so you bring all that together and I just react to that and play a different way. I go, okay, I need to tailor my sound to that. This requires something a little different. So I'm going to use these amps and these guitars and stylistically, I push myself and I go, okay, well, a four four, you know, kind of typical rock riff isn't going to work here.  And so, you know, being an unschooled player, theory wise, I just sort of make up stuff. George, you were the guitarist that influenced thousands upon thousands of guitarists. You know, it's sort of like Randy Rhodes and what was your connection? Did he actually, did you actually go to Musonia? Were you actually schooled there or did you take some lessons there or? No, I taught there. Oh, you taught there. So did you have any connection with the Randy Rhodes back in the day? Yeah. Yeah, I mean, we play shows together. Frequently, we rehearsed in the same rehearsal facility and shared the same room. So we got a lot of opportunities to hang out and, you know, share licks and talk occasionally. We weren't like friends or anything, but we were in the same business and we ran in the same circles and ran into each other all the time.  And we were both up for Ozzie a number of times and I was up for three, three different occasions. And one of them was the time that Randy got it over me. And then the understanding was that between whichever one of us got it, the other one would teach at Musonia. Oh, I got the consolation prize. And yeah, so, but he told his mom that if anything ever, you know, happened with him and that he would want me to maybe fill in if possible if I'd be willing to. So I did.  One of the things I noticed was that he had all these students and a lot of them were girls and they were just there to kind of look at him. And then when I showed up, they quit. Cute and have the bow tie and all the polka dots. Polka dots, yeah.  And I got real patient with beginners. So we live and learn. Yeah, I got a little story. Yeah, no, I've been to Musonia.   There was so many guitars that were influenced by you is just it's unbelievable how many guitars were influenced by you. That's all I just want to tell you. If every one of those guys would send me a dollar. I see that would be great. Very cool. George Lynch care of. Just, you know, show a little appreciation. Hello. Hey, but it was it was on the internet today. They kind of saw there were people trying to get, you know, trying to get paid. And you guys still getting paid from everything. There was sort of the docking errors. Is that a problem for you? No, I mean, it's always a challenge, you know, because music industry is not really built to trickle down too much to the musicians. Yeah, it's kind of built to kind of reward everyone else, you know, the third party types and the, you know, the other parts of the machine. And we're usually sort of a footnote. And afterthought, even though we're the creators of everything that it's built on, it's very unfortunate, but it's just really an indicative of the larger economic system that, you know, the Western world is built on or most of the world I imagine at this point, you know, rewards capital and not labor, not necessarily ideas and people are actually doing the work, you know, when the guy takes a pick picks up a pick and goes down into the mine.  Yeah, it's always a challenge, you know, that we're going, that's part of the business, the other side of the coin again, you know, you got all this stuff that we love, you know, creating music and playing and everything, just we love that. But then there's the practical side on the other side, which is, it's tough, you know, it's tough to make sure that you're getting treated fairly. It's a constant thing that you have to police and work on, because it's not something any of us really want to deal with, but you have to, you know, just being responsible and educating yourself as to how it all works. All right, Alan. Well, just know just to get back to the album here, you know, we're going to go off on different tangents here, George. Shine your light, you know, shine your light, take me out of the darkness. So we fight like this? Is this normal? Yeah, it is. We've been doing it for 10 years. It's kind of uncomfortable when you guys are bickering, you know, in the same room. It's like a married couple. 10 years. 10 years, yeah. I notice how you guys finish each other's sentences. I can tell that he completes you. Yes, well, let's not get carried away here. Oh, whoa, whoa. No, no, it's like complete him. What happens in Canada stays in Canada. You know, it's funny, George, we actually live 10 minutes away from each other, but here we are on Zoom. Wow. Yeah, I'm about the same way with Tilson. I mean, he lives just down the street, but with the pandemic, we had to work, couldn't work together. So it was Zoom. He finally, we're both, we're both inoculated, you know, fully and a couple of days ago, we was the first time we actually were in a room together. Two doses, two doses. Yeah. We haven't even started on one dose here. So, oh man, as much as you were saying, Canada, Canada, you know, we haven't even got dose one yet. The whole country? No, we're at 20% of the population, maybe. They're still at the 55 and over, maybe like 60 and over. One dose one, dose one. That's why God invented fake IDs. Here's this. That's the opposite. That's the opposite. Oh, yeah. So just for the album itself, I mean, like, look, you know, Destiny, take the song, Destiny, you know, can we change our destiny? What do you think about that? Is that something we can do or predetermine? I mean, I think the problem is that half the population of the planet can and half is reluctant. Maybe that's not exactly half. And I just think it's people are predisposed to, you know, being, their brains are wired in a certain way. Their prefrontal cortexes can, you know, empathize and feel compassion or it's driven by fear and greed. So I don't know. I don't have much hope for rewiring people's brains. You can't talk a brain into rewiring itself by using facts, unfortunately. What about Dark Divide? I guess that's the political climate of the US, I would think. Polarization, although it's an optimistic song, in reality, I think it's the same problem. If it's, you know, if the polarization is woven into the fabric of the human psyche, then how do you fix that? Yeah, it's not easy for sure. Scars, I mean, that's a great bluesy feel, I find that song as well. It's like a melodramatic, dark, kind of unrequited love song, I guess, or maybe not unrequited, I'm sorry. And again, these, you know, the lyrics were written by the three of us. Okay, this really, you know, we all sat together in Zoom and collaborated, but George is being asked to pick up the milk now. Yeah, don't forget the milk. I lost my train of thought. I'm sorry. The three of you were writing the lyrics. So you're finishing each other's sentences. Yeah, right. But that, you know, it really, I don't know if you guys talked to Robert Mason or Jeff Tilson, but, you know, they're a lot more invested in, you know, the thought process behind what the lyrics are all about. I was there, but I just kind of walked away from what was over and I don't really think about it, but in my two cents.  All right. Well, you know what? I think we're at time and the end machine April 9th. I'm not sure if it's going to come out today, this video, but it'll come out in a few days. So we'll just say it's released now. Phase two, pick it up. It's, it's nice to hear it's, and by the way, Jeff Pilson does an excellent job on the production. He's all right. I think I'm going to get back to talk to you about George. Yeah, I'm sorry, I fell asleep. What'd you say? We're talking about Jeff now. I lost you. Yeah, you kind of lost me at Jeff Pilson. I was just, I started, saw some little sparkly things in the horizon, caught my attention. One of the most distinguished sounds, guitar sounds ever. We got him with this today. George Lynch wanted to just thank you for tuning in and man, we should do this more often. It's just, there's a pleasure having you on the show here today. Hey, could you do me a favor while we're at before I hang up? Could you invade the United States? Snowballs, what do you want us to do that though? So we can get that good healthcare and then the happy Canadian thing, we'll kind of biosmosis. We'll bombard you with maple syrup. Oh my God, thank you. I think we have one submarine. I think we have a submarine. We could put our subs together and have like a peace navy.  It's getting better there, George. It's getting better. So it's all good. We'll start with saving the gay whales. I don't know, dude. I'm just, I'm just calling right now. You know what? It'd be good if Canada invades the US. Yeah, that'd be not, it's not a bad plan or you could join us. Nobody's expecting it. Nobody's expecting it. Exactly. No, no, that was just watching this. Are we still recording? We're still recording, but it's not live. So we can cut that part out and be careful. And I'm going to be, oh, now we're going to get in trouble for something. I don't know, sedition. Well, yeah. Some good health care. Oh, once I mean that, maybe want me some of that good Canadian, 100% health care. That's right. That's right. Yeah. Well, if we either we'll get in trouble for trying to overthrow the United States via Canada, or if Canada wins, we'll probably be in charge because of our idea. Yeah. So I'll be like the king. You be the prime minister and I'll give you the gesture there. I just want to be treasure. You know what happens, George? You've been doing so many of these interviews that you're trying to change it up. You just don't want to stick to that same sort of format, right? I'm sure what I think you use is dawn and asphalt. How's it like doing in docking? We didn't ask any of those questions. So that we got, we got turned on, you know, George, and I'm meeting the USA. Thank you so much, George, for being on the show and the invasion. We'll talk about that later. We'll send you the plans. We've got to figure out, you know, we'll call you when we're ready. Us Canadians are very relaxed. It might take a while. Do you guys have any guns? So you have to like bring slingshots? I'm McDonald's. All right, my friend. Thank you so much. All right. Thank you guys.


The next morning the E. coli cells are broken open to release their DNA. The human DNA is separated from the cell debris and washed clean. Now there are enough copies of the human DNA fragment to set up a sequencing reaction.


So this is going to be a presentation about various high David David a presentation about Techniques that you can apply to reduce the size of your system So first I'm Michael the knacker Founder of free electrons And I've been interested in in topics like size but also Fast boot time and a small size is a requirement for for fast booting like the fast the smaller the kernel is the faster it boots And yeah, there's less data you have you can copy from from storage so Why reduce size there are various reasons for doing that first to to run on IOT systems very small systems We like to use Linux Because of the only Functionality that it provides which is sometimes useful Some people can also run Linux as a bootloader So that you don't have to re recreate drivers For your bootloader and want to reuse as much as you can from from Linux Of course boot fast booting faster is one of also one of the cases typically I've seen people booting Their systems on an FPGA like the SOC doesn't exist yet And it's really slow when they have to emulate it on an FPGA So it's nice to have a kernel that is as small as possible Because like it takes a few minutes to get to the command line prompt even more sometimes So it's it's nice to have a very small system Also one of the goals could be to reduce power consumption And there's also the idea of running whole system in internal RAM if that's possible if the CPU has enough RAM Internal RAM that's the case of one of the processors that are mentioned on the tiny that we key we key kernel or what page they have like a few Processors that could fit the the whole Linux kernel And system inside the internal RAM because the RAM is expensive in terms of power consumption needs to be refreshed if you want to keep things inside and I just added the security at the last minute because it was talked about In the keynote this morning like it you could also try to add some security by reducing the attack surface on your system like not implementing system calls and then Helping I mean reducing the functionality that could could be vulnerable The reasons for for this talk is there's nothing much new unfortunately in this area But there hasn't been any talk about size since you'll see to one year and a half ago But I wanted to see what how things look like now What what projects are what progress projects projects may have made And also as a personal interest looking at things that didn't try yet as and she had this experience with you like Trying with the muscle library things like so things that have been around for quite a while But which I didn't play with yet things like toilet toy box GCC LTO Some experiments with the latest GCC versions compiling with clang and things like that just to share an update and So there's nothing extraordinary and I don't expect too much But at least you have some figures which which may help you in making your decisions and trying I guide you in the choices that you will make And it's also I when I submitted this talk proposal I also hesitated between above and a talk So I'd like to have like half of the session dedicated questions and answers and proof I mean people talking about what they could do to to improve size issues and How to how they could get involved what we could do as a community to to make things better so that there's a like a Both part in this talk if we have enough time So essentially how small a Linux kernel in the system can be essentially you when you have like two six megs of RAM for that that a regular kernel will fit within this size and You need something like eight sixteen megs to have enough space for for use For for use space, whatever you do in use space for your applications and the allocations you make Of course, you have if you have more RAM you have more performance because you can can cache things As far as so I'm talking about a regular system without really doing anything really hacky to to reduce the size Then storage you basically need between two and four megabytes of space To store the emitted kernel and use a space can fit in a few hundreds of kilobytes. That's really nice It's easy to have a standalone application that fits in within a few hundreds of kilobytes at most And so if the user space is not too complex 8 to 16 megabytes of space is really more than enough If you have a dedicated system, of course So I'm going to give you a list of things you can do to to reduce size a little bit So of course, there's the OS Option of GCC to reduce size and it's nice because it like it automatically selects the optimizations Based on what GCC can do. So essentially it's minus oh two plus minus the optimizations that increase size It's quite impressive if you look at the All the options that are provided by GCC if you can really want to investigate what GCC can do with you have a very long list of options with very detailed descriptions of the Approaches that are that are taken. It's very interesting I also make a quick check to see how What did to see the impact of you're using a more recent compiler On size so that I did that on arm on on the board that I booted So between GCC 4.7 and 6.2 doesn't much change in terms of the optimization power I just saved 0 to 4 percent in size Internal size, so it's not so much don't expect too much from GCC. It's already already good doing a pretty good job There's also the link time of optimizations Feature of GCC since GCC 4.7 Essentially what it does is GCC keeps more information about the source in a special format. I Mean in a special elf section when it creates the O files it adds some more information in special sections And this is used at the end when linking all the object files together to to have better optimizations like inlining across the various objects Removing that detecting that code and things like that And surprisingly, you know, so it's it's nice to something you should try when you build software Surprisingly, it even works pretty well on single.c file files So I find I found in that pretty nice project which is called From this guy SMCC project single file programs this guy took a few Regular programs like Ong and another a few others and just just put all the the C files together in a single C file And it's very nice for GCC benchmarks So C compiler benchmark because you have just one big dot C file and and see how you can play with the GCC options on all Those big C files. So this for example, Ong Program was fitting in when that's seven megabytes So I used it several times To to to make some measurements. So here if you want to compile with LTO, we just add minus F LTO to it in addition to OS This is a link to more details about LTO in GCC So with Still on Ong dot C if you use compare LTO without LTO and with LTO you can save about Two to six percent in the stripped executable, which is quite good And given the size of the executable at the end so it's it's pretty pretty nice That was on x86 64 on my essentially on my laptop And in for arm. It's the same kind of saving as well To minus two that eight percent in terms of the stripped executable executable so you can just like reduce a few Essentially a few hundreds of kilobytes sometimes if the executable is big so that might be with it or a few tens of kilobytes Don't compare the x86 64 Code of course code size with the arm when you were talking about 64 bits. So it's not fair And then I tried clang versus GCC versus GCC So on regular GCC on that are on x86 64 Yeah, I made a test and still with Ong and also Confided with GCC clang on the same same program and I got a five percent size reduction out of the box without doing anything Just passing OS, you know clang is trying to meet this to be compatible with GCC So you can pass the same options not FLTO, but essentially the basic options you have they just work So it's minus five percent and then I compared it again with a GCC LTO See and GCC LTO is trying to achieve something like what clang does It's a bit less efficient. So it's less minus two that's seven percent here So it's doing some of the job that clang can do GCC can still win though for very small programs like in hello.c. It's It's a bit a little smaller one way one that two percent Which isn't many bytes though because it's a small program You may wonder also on on the arm platform whether it's whether it to use thumb from to actually on the latest processors or Arm the arm instruction sets. So the arm instruction set is 32-bit and thumb two is 16 bit It's more compact, but to express the same things you need more instructions And therefore you don't like divide this the code size by two of course So I up to first to recognize the code that you get It's it's good to do you I am doing armlinx.objdom-s to like On a on an object code turn it turn it into assembly and I said and I and then you can see the size of You can see how the code look like so for arm. You can see the addresses are multiple multiples of four And you have 32-bit instructions Well with thumb you have like addresses which are multiple of two as expected and also 16-bit instructions as well So you that's a way to recognize firm I didn't I didn't find any other way to recognize fun than disassembling And I did that because it turned out that my compiler by default was compiling for fun The way that you have in Ubuntu compiles for fun by default so You don't really have to think about using thumb because this often built-in your compiler Depending perhaps on the compiler you you you get on your platforms So to compile an arm mode you can use minus me and arm And and thumb instead and you can also of course tune for a specific specific CPU and see where whether you can get in some Some code size So thumb in that case was like minus seven percent smaller than pure Arm though when I was compiling with arm. I actually got a mix of arm and thumb code So I don't really know what this happens, but that's what I observed With this program I had some with mr. And I had some thumb code inside as well. I Don't mind The next question is how to get a small kernel Since I'm not going to talk about the past Could the very old colonel so since 3.18 you can run make tiny config Which was brought by a Josh triplet Is see around in the conference? No And I looked at what tiny config is it's actually just make all no config plug plus a Config fragment or don't remember exactly how to call it So if you look at the make file is just all no config plus a few edit settings that That actually reduce size so it's even smaller than all no config all all no config Look at that. It's what it does is Use GCC optimized for size. So the code may be slower, but it's smaller You turn on kernel exit compression It is optimized in inlining the slub support so slub is one of the low-level Slab allocators. It's a little smaller than Then slab or slab in size. You just save a few like six kilobytes or a 10 kilobytes Though I didn't check on the memory usage So maybe it's even better. It's supposed to be like saving a few hundreds of kilobytes in in memory usage in a real life system though It doesn't scale and on on x86 you also have like no high mems and support that's added And I just I then checked the kernel size with tiny with tiny config And it's not so bad like you expect like the kernel size to grow up and up and up and up It actually it's so actually it's going down on our on the art platform So the total I'm looking at the total total VM Linux size Assuming that this is going to be what you load in memory. Do you do what you're going to consume in memory? So I didn't look at the compressed sites though. I will show it as well. So it looks like this That's the full the full size and it went down in the 4 to 4 4 to 5 I don't I didn't have time to exactly investigate why perhaps because of some Some drivers that I guess we see drivers being moved to the proper drivers directory and then being Optional. Yes. No. Yeah No, I didn't know. Oh, yeah No, that's a good the good point It's just a regular make so yep, that's true. So it's bigger than it's it is at runtime. Thank you Any idea what could have happened at in 4 to 4 for the I mean 4 to 5 for the size reduction It's the same compiler like At that time maybe That's good. Anyway If you look at the x86 it's more progress. It's it's more like constant almost constant. So it doesn't grow that much over the course of like 12 versions It's a little bigger of course, but it's it's x86 as well 64 bit as well. So it's bigger so it isn't You may think as the Technification project is not so active that it's going to like grow very exponentially. It's not it's not what happens Really, it's it's still under control. So it means we could like reverse the trend. I Made a test like I really wanted to make sure I have a kernel that boots so I booted the for the 10 kernel on on you a QMU emulated versatile PB arm platform So this that image was 400 kilobytes, which is quite good. We fix that compression and Yeah, the total size and stripped is a little over one megabyte And then I tried to with QMU it's nice because you can reduce you can like simulate a machine with the homage Whatever amount of RAM you want So I Went down as little as three megabytes and when I reached three megabytes in the system I couldn't boot anymore. So at least it boots with four megabytes. So with more aggressive Work, I guess two megabytes or three megabytes are probably achievable So it's in between three and four I have no choice in QMU I think to to like know exactly what the threshold is All right So that's that's one of my questions to what what hardware could we use to to play with those things? And it's it's more likely to convince kernel developers if we're using real hardware than QMU to get some code accepted Okay. Oh, yeah So if you were to buy the state of the kernel identification project project, which was started by Josh triplet And let's forget about everything that went on before They Like about one year ago. They were he had like a few patches left in the Linux text tree and they were they were Didn't have time to take care about them and therefore they were removed From the tree but the tree is still available the patches are still available or we could like Resurrect them if we want the problem is There there's if you follow the discussions, there's skepticism about like adding some extra kernel configuration options to further Allow to remove features from the kernel like the kernel developers don't like to they already have to deal with a K config complexity, which is rather big. So is it really the way to go to add some more kernel configuration options to? to To allow to disable things This has proved to be useful in the past like you see the benefits of the Dignification project and how small the kernel can be and I meant to Like ten years back. I had a roughly the same kernel size as I have now now. So it's like people like Josh have and Mac Mikal and others have been done a great job of Keeping the the size to a minimum It hasn't grown over time So it was useful, but is this the new way to go and if you look at discussions people are more likely to be interested in exploring automated ways of Detecting and used features and use code I'm detecting that and then having mechanisms to remove them from the kernel code So that they don't the kernel is smaller based on What you like you like you trace your system you make it run and see what exactly what you use at runtime Doing some well-defined test scenario and then remove The code that you don't need like the system calls the product the product contents the current kernel command line parameters You never access so that's maybe the way to go according to the kernel developers There's a lack of volunteers with time and the time to drive the main learning effort anyway That's that's one of the problems too a few words about LTO It can be an interesting solution. It was patches were proposed by Emily Keane in back in 2012 The problem is at the time the patch was submitted They were creating new problems but more difficult to investigate problems so they couldn't be accepted back at that time and Yeah, people that Linus like Linus didn't really trust the two chains at that time and we're really afraid of getting new bugs or Creating new bugs with LTO that would be difficult to investigate That may be worth trying again. Oh Another possibility is to use clang But that's so in there one of the slides forward You could also use if you really have a very small system One of the ways to go is to use kernel XIP execution in place in which case you keep The kernel text in flash so you execute kernel from flash directly from flash you never copy it to RAM You just use RAM for data and and allocated data. So It works if you have no flash, of course, that's accessible as if it was RAM And yes, that's the only solution if you have very little RAM like Cortex and 3 and something like that an arm is apparently the only platform supporting it Though there were some efforts on x86 But they are not mainline yet A long time ago, so is anybody still using that Okay, but it's not in the mainline kernel yet, right? Is it okay? Rob So the question is can we emulate flash on a QMU to to use XIP with QMU to like to Developers to play with that We had a patch like 10 years back, but they didn't get accepted. Unfortunately. It would be awesome to have like no flash on QMU If you still want to help with kernel identification and add a few more kernel configuration options you can There are several things you can do is look for Simply object-y Statements in kernel make files and you can see that You can see some opportunities for simplification like here. Do you really need ptrace support all the time? Which takes 14k on arm if you take the size of the dot-o files or without reboot support that would be fun You may not need to reboot because it's Linux. So why would you reboot? Oh There's a way of rebooting anyway. Yes, exactly Another way is to look at the compile logs I'm sure you do that all the time because it takes time to compile Linux and you can just see why am I compiling that stuff? so Then you can wonder whether it's really useful in your case or not and whether it could how difficult it could be to Remove it from from the kernel build process Other thing you can do also. I'm I'm quoting some parts of the Kernel wiki for identification. You could just use nm minus size sort in VM Linux and you'll see the biggest symbols That we saw it's like the whole low Low-hanging fruits the easiest way is the ones that would save most if you remove them You can also also use the bloat o meter from a mac meckle that's still available in scripts That compares to VM Linux files So it's very easy And it tells you which it can detect size regressions functions that have increased in size Compared to the previous versions There's the LLVM Linux project We which is trying to use clang to compile the next kernel and effectively opens the door to nice performance and size of optimizations Probably better than what GCC LTO could could achieve Unfortunately, the project doesn't look very active. I mean from the website at least it does seems stalled any anywhere than that behind Okay busy with other things awesome So could I find the references? Okay Okay, I burn out. I'll ask you actually I'll send a mail to you. I get the address. I'll add it to the slides I Think about nice So there's progress good Now I'm I'm moving to user space and things you can do to reduce size so I compared busy box and toy box and I'm glad that Rob is here so yeah, so feel free to interrupt and and and Add more explanations if needed So I just compared like I built busy box and toy box with like this the same set of applications Not necessarily the same features, but more more or less. I tried to to meet to have the same features. So I compared busy box and toy box busy box was a hundred kilobytes And and and and toy box as you can see for the same features was 84 thousand kilobytes a few thousand bytes so it's It's a smaller for the same set of features As you can see and if you just want a shell Toy box is gonna be a much better Okay, at least it works, but wow, okay. Oh, it can't okay. Yep I think I've caught a talk took them from the painting directory. I'm not sure Okay, that's where I took it from effectively Well, at least if you can try and country contribute if you want If you just any other solutions if you just want a small shell I'm just talking about just something that can run a few things like mount and start up a system without creating that doing that in C But yeah for okay. Thanks So From what I found from toy box it wins if your goal is to reduce size and have a tiny root FS It's apparently better than busy box for a very small Root fast system that just loads a few modules and amounts proc and a few things like that so it's sufficient busy box would win in terms of Configurability like if you for the moment at least if you want to add like color support in LS and things like that or a few things I mean in some applications If you have more elaborate Needs, but it's gonna be bigger And I made some tests with various C libraries So I used busy box as an example of a program that you can compile. It's not really a typical program, but That's one of the compiles that the programs that you may compile. So busy box if you compile it with the muscle library It's with the same Statically with the same configuration as before like supporting 16 commands. It's it's a hundred and eighty 3000 bytes With a ucdipc ng It's two hundred and ten thousand bytes. So it's more Like you say like three hundred 30,000 bytes and if you compile of course with gc against gdipc, it's gonna be like 755,000 bytes so it's much bigger of course, but that's expected So we are if you're still using this ucdipc, you should really give a muscle a try because it's it's nice I Also just just as I was doing that I also compared the dynamic executable size Which should be the almost the same on the old cases versus muscle ucdipc ng and and gdipc But it turns out that gcc is a little bigger then Then muscle and ucdipc can be and if you're looking at the hello. Let's see program With recent compilers. That's that's again. There's nothing very new in that It's just to give you an update and what you can achieve today is with gcc one six of three it's seven thousand three hundred bytes for Muscle so it's very fairly small Executable with of course you can do much better Like you can have a like a hello program in like as little as like 60 bytes or something like that If you do a lot of manual tweaking With gcc the same gcc with ucdipc ng It's going to be 70 67,000 bytes So much bigger And it's almost 500 kilo 500 kilobytes with with gdipc compiled statically so it's going to be very big so For small executables muscle is also a clear winner here Are people using muscle in their products? Or more rubber ucdipc and immaturity problems with muscle Yes, nice Oh, that's nice All right. Thanks. I was using a cross-tool and g to build the tool chain But it's nice to have another solution as well And there's still the old super script that still exists You can get it and compile it very easily. It's just an executable that's Eliminate a few health sections that are not needed at runtime and you just save a few Hundreds of thousand year thousands of kilobytes. It's not much but Every every bite can count In the nice thing about the s-trip is that it's a it's platform independent unlike strip Which is really for arm or x86 or other platforms s-trip is platform independent. You can run it As it's like compile it and run it you don't need to be known it don't need it to be part of your tool chain You have like all those old see libraries, which haven't been updated for a while. So let's assume they are completely stalled I also looked at optimizing libraries on the target and target file system You could use something that's called MK lips that's provided by distributions, but this There's no magic in it It's just copying the libraries that are needed for a set of executables and that's that's something I assume the the The building tools like a build route or a Yachter project to already take care of like not just compiling just copying the So files that are needed for each system. So this there's nothing. It's not very interesting and that's something you can do manually as well Now what I'm looking for is something like the library optimizer from Montevista, which is still available on Sourceforge which actually looks at the executables that you have in your system and looks at what parts of the shared libraries it uses and then Tries to optimize the libraries to remove the symbols that are not in use in your programs Though I didn't have time to investigate that is anyone using that approach to reduce size Another way of course is to have a big static executable that just contains the parts of the libraries that you need If you just need one executable in your system as your main application you get that as well for free But if your system is a bit more elaborate Yeah, like you have multiple programs you need shared libraries and therefore you might want to to reduce the size of libraries To achieve a small fast system size The best solution of course is to boot on an intramfs Because you boot earlier you don't have to initialize a fast system and storage driver your kernel doesn't need to have one so you immediately boot programs on on the file cache So that's very fast You can use a static single executable So no no libraries to share and you just include the parts of the libraries that you need And you have a bit if you have a bigger size of course you can use Regular file systems compressing file systems such as squash FS if you have black block storage, but we're talking about much bigger stuff GFS to for flash also If you have a small partitions, you be I is going to be is going to have too much overhead So you can still you should stick to GFS to and then you could also use Files block file systems on top of Z RAM, which is a compressed block device in RAM So you might you might use that as well but if you have if you have a tiny amount of RAM, it's you won't use that but as a for a system that needs to optimize RAM and Still has enough RAM budget that might be worth it to use this Some conclusions before we we can go into questions So there hasn't been Apparently recent maintaining efforts, but the kernel size is still decent if you use make tiny config And you can boot it easily on the system with less that with four makes of RAM at least So that's uh Yeah, that's what you can achieve at least on arm It would be worth it effectively to try on the x8664 on the Intel boards For compilers you can use Clang or GCC LTO Hopefully for the kernel as well It is a new library worth using which is muscle It's also worth giving toy box a try if you're if like essentially you don't have like much scripts in your system And you just like brand a few commands Toy box is going to help in the reducing the size and As we can see there's still significant room from improvement in user space and kernel space I'm mostly talking about kernel space here The the question is can we add some more configuration settings to the kernel to to make other things removable? It's it's going to add to the complexity That the kernel developers face. So are they're going to are they're going to accept that? That's the open question And I will propose to move to a kind of buff part Any recent achievements that that didn't mention So they're not thanks for the LLVM Porting effort That's one thing. I'll add it to the to the report any anything any people to I've seen something on this area progressing. Yes, Rob So was that for 313 you said At 2013 okay, Rob was mentioning some some patches to To improve temp effect support Back in 3000. Oh, sorry. No 2013 so I'll try to add a reference to it. Thanks Yes, right. Okay, like micro Yachto was that was that micro Yachto or something like that? Okay. Oh, yeah, is there any your Resources you're using that I mentioned and then the most important question perhaps is like What community-friendly hardware we could use to run the next tiny it makes tiny tiny five projects so that we We can convince we have like more Better reasons for convincing the kernel developers to to integrate code If we support real hardware, it's going to be better than just a QMU. So any any suggestions for a nice community-friendly ball we could use for But it has too much RAM, right? You could but then it's artificial they will tell you Please use my Alright So you have no other solution that's that's nice officially Any other solutions for I mean target hardware Yep, I should look at that Oh, yeah That that's probably okay Oh Any anything else what what do you think about? The the kernel tiny think I should have effort is there I'm not sure we have the right kernel developers in the room to discuss that but what what do you guys think? But the kernel tiny fiction vacation prop project should we continue and revive the patches from Josh? Hmm I Could help a little bit like taking one patch and pushing it from time to time is okay doesn't take that much time Is it worth it? You gotta need a good argument for for adding some plastic complexity to the kernel Question parts aren't available for these really small memory footprints. I don't know that It's an interesting exercise. I just don't know there's a whole there's a whole lot of payback Though we're glad that this work has been done for this tiny vacation work has been done because it's useful for us So I guess we should continue in some way for You mean RAM usage or Yeah, go ahead. Yeah Right, yeah So Rob says that using less RAM means some more better cache efficiency and things like that. So it's worth it to To have small less code actually. Oh, yeah Right Unless you have a dedicated instance Yeah, I think the good thing is that Linux is a general purpose system you you never know what users are going to do So let's give them more options. That's what I believe as Linus said So a few references here That's worth reading if you it's more for people reading the slides and wanting to know more about this like For example, there's the document from Timbird. It's it's quite old, but it shows some efforts to like to look for I mean analyzing the the kernel usage and Trying to eliminate things that are not used at runtime Stuff like that and some of some presentations from recent conferences Recent enough conferences given the history of ELC Especially the work of Vitaly will effectively booting Linux on STM 32 systems with quite aggressive solutions for reducing size So you can get some ideas if you want to contribute those presentations are full of ideas that would be worth Exploring and then end up streaming if possible at least you can discuss that with the community and see what What what response you get whether it's whether it to have it mainline or not During this week, you have other talks that that if you're interested in size There's a tutorial from Rob today But building the simplest possible Linux system So you understand how how simple a system can be and Rob is one of the best to make simple things There's also the talk about Optimizing C for micro controls from Camratch It's more on the IOT track, but it's interesting too and also GCC clang optimizations for embedded Linux on Thursday, which is could be interesting as well Any questions right in time Thank you