the hardware is full of features. Features. Random, yeah, it's a security feature.  Yeah. So you've got a question back there. Oh, yes. So here's another really exciting thing about hardware. And in fact we ran into this on the middle board. So the comment was, you know, there's documentation for the hardware, and then there's the errata. And sometimes there's the errata to the errata. And sometimes there's the errata to the errata to the errata, and we just threw it out and started over. Case in point on the middle board, if you take a look at our documentation for the middle board max and the middle board turbo, there's a pin on our low speed header, pin 26, which is going to become the bane of my existence, unfortunately. When we first built the board, we had intended to use it as an M clock for audio signaling. So this is a reference clock between the SOC and the audio codec so that things supposedly line up. You don't have to have this, but it's really, really useful. Well, we picked a signal, it was supposed to work, then we found out in an errata, it did not. We also ran into it on HDMI, where, you know, we designed the board, we got it out. You know, the monitors we had all initially plugged into just worked, everything looked great, we shipped the board, and then we started getting reports of it not working. We're like, huh, that's kind of interesting. In the errata to the errata, we found a footnote, a hardware guy literally mashing his head. I wish you guys on the camera could see this. It's like, oh my God. That if you are on the process that our particular SOC is, you have to put a level shifter because the signaling's too low. If you're on the previous process, you didn't need this. And again, when you're, you know, we as software people, we assume the documentation's right. It's never right. Yeah, so do I, but I'm not mentioning who they are. Well, and that's a really good point. So the, for the recording, the gist and correct me if I'm wrong is that we all assume that this is going to work on the first or second try. You know, whatever hardware we're building. The reality is if you get it right on the first try, good Lord, you should get a bonus because I've only seen that happen twice, ever. Most of the time, you get it right on the fifth time. That's the time when it boots the first time, but nothing else works. Tenth time is when your Ethernet controller works.  Because, you know, serial URs, we've only had these things for 30, 40 years and we're still getting them wrong. I really don't understand how everybody screws up serial URs because they're the most useful thing in the world, but apparently nobody can build serial URs correctly. But yeah, the, I think even on the turbo, which is just a minor set of fixes, we went through four, three or four revisions before everything got ironed out. So, yeah.  The reworks, the white wires. Yeah. That's just a proving that your fix in the next board will work. The X USB maintainer. USB 3 maintainer, I'm sorry. Yeah. Yeah. So, for the people on the video stream, the short answer on that one is the internal documentation was wrong and you had to reverse engineer your own hardware to figure out how it worked. The statement is that's normal. Oh, and there's a working driver that you had to. So, yeah, I mean, I want to hear your guys' stories because, you know, I can stand up here and remember random things for the rest of the, I think I've got 20 minutes or so. But honestly, I want to hear what you guys are finding in the field because my stories are good, your stories will be better. So, yeah, a meta point. That's because they were, to be fair. Yeah, I mean, if you, so the, this is a call to action that the hardware simulators, we've got some reasonably good ones. QMU is pretty decent in that respect, just from a simulator perspective of a whole system. But just being able to simulate low level hardware is nearly impossible and it's really, really computationally expensive. If we can simulate more, we can do hardware better. So, if you, if you're looking for an open hardware project or something or an open source software project, go start taking a look at the simulator as they could use a lot of help. So, yep, there are people building their own CPUs and having reasonable success in that side of FTGA. You should do as much prototyping as is humanly possible before you actually try to build anything. Whether it be throw it into an FPGA and run it at one megahertz because at least you can still walk things very slowly, you know, it might take you three weeks to boot up. But, you know, you'll at least know that it's right. So, yeah, I could not even remotely give you any good suggestions on operations on shipping. That is a really tough problem and that is, that is almost worth its entire, its own entire conference because operations is form it up to someone else because you're going to screw it up to be honest. CalCen.  If you're, if you're intending your device to end up in, you know, normal people's hands inside of a house, you've got at the very least Class B FCC certification to deal with. You've got environmental stuff that's got to be done. This is a non-trivial cost and, you know, when you're building one board for yourself, these are things everybody ignores because nobody cares. I mean, to be honest, you shouldn't, you know, actively try and build a board that's radiating out into the stuff that shouldn't be but, you know, your one board probably isn't going to make a big difference. But, you know, if you're building a thousand of, you know, a thousand of these things, yeah, you have to, this is something that most people forget and needs to be dealt with. So, that's a mechanical problem and a lot of that particular, so the question is, you know, how do you deal with the mechanical issue or just the, the componentry of connecting the, the layers, the plastic layer. Some of that's just trial and error. Some of that's getting a good mechanical engineer from a, from a hardware perspective. Again, from, you know, me as a software guy, I hire people to do that because I suck at it. People have seen my 3D cases. So, the question is, you know, not trusting the documentation and doing a lot of testing up front, is that a step forward or backwards from the, to the software world for how all of this works? I think trying to even, I, I think at any point if we ever, you know, we as software people ever trusted the docs from a hardware or for a piece of hardware, we were idiots. So, I'm not sure that it's so much a step in any direction. It's just the status quo. It's the way it's always been.  So, I, yeah, yeah, they're, they're usually adding to the rata because they try to bring something up and they find that it's still broken. Well, yeah, I mean, unless you can see the code for what you're working on and you can verify that, you know, the function that you're calling into from a software perspective is doing what you're expecting, you should be suspicious of it.   You know, you don't know what's actually happening in there. You just know that if you twiddle this GPIO in this way, this result on a different GPIO should happen. You know, from a software perspective, if you're calling into that function, you can't, you know, literally open it up and look at it. And in a lot of respects, how many people really want to go and read through every code of a library?   Smart people have been looking at this. And when we find bugs, we submit them. Or we go digging ourselves and we fix it. But, yeah, you should be suspicious of, you know, anything that is not your code or anything that you're interfacing that is not yours. Yep. I mean, the, the, the rise of, you know, I want to call this home manufacturing laser cutters, 3D printers, these kinds of things. If you're, if you're going to be doing mechanical design, get your hands on good ones of those. If you want some recommendations, ask me afterwards. And just, they'll be expensive, but it's worth, it's worth it just because of the, the faster prototyping for your own self. So, you know, getting back to the micro view and its casing, they did do a lot of 3D printing and testing, test fitting. Well, your turnaround time is so substantially higher that you can iterate faster, which means that your upfront costs are expensive, but your overtime costs are actually better. So the question is, is it actually better to use components that you can update after the fact in your designs versus, you know, just static components? It's going to be really subjective on what component you're talking about.   Healer? Healer? Okay, nobody wants to ship that. So if you have a reasonably complex, you know, circuit or a system, having an update mechanism after the fact is almost essential, you know, I will pick on a, you know, take a look at any CPU these days. They all have microcode or, you know, or a reasonably complex piece of hardware. They all have firmware or a microcode or something that you have to upload into it. Probably a non trivial chunk of that is just working around bugs in the hardware that they, you know, the hardware folks have specifically gone in and built in more layers or more complex circuitry, because they know that, well, maybe this feature that they're doing is a little on the risky side. Maybe it will work, maybe it won't.  I mean, take a look at the news, there's been a couple of things even recently about, you know, effectively a software fix that's been pushed to fix very specific, potentially nasty hardware problems. Yeah, the statement is if you could ship everything as an FPGA and keep the cost down and keep the speed up, the world would be perfect because everything would be fixable. Unfortunately, FPGAs are not quite that awesome. They're awesome, don't get me wrong. They're expensive mostly and the power requirements on FPGAs is crazy because of how they work. So the question is in particularly out of Shenzhen, you've got folks who are turning around boards or prototypes in hours, not even days or weeks, they're talking about doing this in hours. And the correct answer is in the United States we probably can't even remotely compete with that. Well, we do, but it's... So, you know, at least there are some folks here in the US that are doing it. The real way that we kind of level that playing field is, you know, it may just be easier and cheaper to manufacture in China in the general sense, particularly from a volume perspective. I mean, I don't think there's anybody in the room who would say that it is not generally speaking cheaper to manufacture over in Shenzhen for a large run. Small runs, the math changes dramatically. But one of the things that we can do to level the playing field for everyone, whether they're here in the United States or in China or Japan, Korea or where not, is actually start taking a look at more open hardware. The minute that we democratize hardware more, the more that everybody gets, you know, faster turnarounds whether they're in Shenzhen or here, but it also means that we're taking advantage of everybody else's knowledge. So, you know, I've said a lot about how we as software people, I mean, we're really good at open source. I mean, I don't think there's anyone in this room that would not agree with me that we've got open source kind of figured out.  I mean, it's kind of hard to argue with that. The hardware world is still waking up to this. You know, we've got, you know, new initiatives with the open source hardware alliance and we've got, you know, some other things along those lines and we've got boards like the middle board of the Beaglebone or, you know, a lot of the Arduinos and those kinds of things. They're all open hardware. Everybody can go. They can look. They can compare. They can build from it. This gives everybody a really great chance to go, oh, well, you know, this platform doesn't quite meet what I need. I only need a few little changes. And a lot of what you're seeing in Shenzhen is, you know, they're not necessarily making a whole new board in that, you know, that day spent. What they're doing is they're taking something that they've already got some relative, you know, that they've already done and they're making some modifications, running it through quickly because they know, because they've done a lot of the work already, they only have to do the incremental work beyond that. And the open hardware stuff does the exact, you know, effectively does the exact same thing. By only having to deal with the incremental cost beyond what you're doing, or beyond what's already there, you shortened the time frame to get from idea to an actual prototype or even to mass production. And I mean, how many people in this room think that they could lay out GDR3 or GDR4 in memory? You, my good sir, are a very good person to have on the team. Because I couldn't. I can't even begin to have, it worked the second try. And that's actually very good.  There's not, your margin of error is so small. For those of you on the video, he rolled his eyes very greatly when he said the CAD software does it for you mostly. And they try really, really hard, but CAD software makes a lot of assumptions that work for very specific sets, but it all, you know, even laying out a board at the end of the day is still a piece of art. It's not a mechanical thing because someone still has to go in, verify everything, and then we'll still have to tweak it because sometimes the software gets it wrong. Like, you know, taking your memory channel and routing it literally around the board twice. Yeah, that, that, that, it happens. Oh, God, yes, please. So the question, or the statement is, is should we involve more software in our hardware development processes and the answer is unequivocally yes. By and large, hardware is made by hardware people, for hardware people, and they don't understand software. I'm seeing a lot of people going, yes, yes, please. It's fascinating. I mean, if you take a look at any chip, particularly if you build anything, and it's made for hardware people, by hardware people, and you know, they go, oh, well, you know, the software guys can do anything. It doesn't matter what I do on software, or in hardware. And sometimes making very small tweak makes the software so much easier to deal with, or to, you know, oh, they don't need to be, there doesn't need to be a signal to let you know that the hardware is done. You'll just pull, pull it all the time, right? Yeah.  Just, yeah.  Yeah, you don't want to read them back? And why would you ever want to just write it over there? Don't, you don't need to read it back. You don't need to confirm that what you actually wrote is what the system thinks you wrote. Yeah, software is never buggy, compiles the first time.  So, I guess in some respects, this is, you know, we as software people need to take a better look at how our hardware works, and we need to account for that more in our own processes. And if you're on the hardware side, please, for the love of God, start talking to your software people more, because we, one, we don't understand when we need to, and two, we need to share our software knowledge with you guys so that you can build better hardware so everything is less broken. So there you go. I can keep answering questions. I'm going to have to run over to the middle board booth here relatively shortly, so if you want to have a more detailed discussion, we should probably do that over there. Otherwise, thank you. And if you're really bored, I'm giving a talk on Friday. It's the last slot, I believe it's in this room, about how failure has had the fun of success. What? Is this Friday? What did we miss? Oh, I don't know. I miss everything. Testing. How's this? Good level? Yeah, I'm going to stick here, so that's fine. It's like a picture of employment at the DRAM faces. Looks like it's about time to get started, although I'm not sure where the embedded track moderators gotten to. So before we start, I'm curious as to whether there's anybody here who doesn't already know what U-Boot does who's not familiar with U-Boot. Is there anybody? Okay, good. We have a few people who are going to enjoy the little intro part then that I bothered to put in. So here we have our little rumor monger tux who's going to help us out with some rumors that we're going to explore later. But first we're going to start off with the basics. Basic facts. U-Boot was born in the year 2000, had a couple of parents called FADROM and 8XXROM. Those are both bootloaders for PowerPC. It was an old type of PowerPC by Motorola and it was for embedded stuff, not for Mac and Posh's. There were some, these PowerQuick chips and 1x was one of the things that ran really well on them back then because it was so dedicated to PowerPCs and its initial introduction. It used to be called PPC-Boot but nowadays it's called DOS U-Boot for its full formal name. It's almost nobody uses but that is what it's called. So let's take a look at what U-Boot actually does and I'm going to compare it to the PC scenario since if you're not yet familiar with U-Boot that's probably something that you're at least familiar with. So let's look at the PC boot. To start with the hardware you have your main storage normally a hard drive but inside the PC you've got this flash thing that your BIOS or your EFI lives on and of course you have your your main memory your RAM. So when you start the boot you have this BIOS in old days U-EFI and modern days that is the first thing that runs when you hit your power. The next thing that runs is the grub. Say that's pretty common for your Linux-based PC although there are a few other alternatives you could be using. Let's go for the normal choice. The BIOS or U-EFI whoops up the grub off of your hard drive and pops it into the RAM where it starts running. And the next step is that your bootloader goes back to the main storage and whoops up the kernel and starts running that out of RAM. So we've got something analogous happening on our embedded board and not quite exactly the same. To begin with the main storage can be a hard drive but it rarely is. It's more normal to have even the single chip type the the raw type storage in old days say back in the PPC boot days. We had the luxury of NOR chips which are very reliable. Nowadays you might have a NAND. You might have an SD card or it might be on an EMMC which is kind of like an SD card that's been soldered to your board. And in place of a whole chip to run your BIOS you have the CLEED SOC system on chip reviews that have ROM inside the chip from the manufacturer. And that's going to be the early boot. Plus they normally have some SRAM static RAM also inside the PPC. So static RAM is pretty expensive so this is just a teeny little blob of static RAM to get yourself bootstrapped and running. And then you normally for an embedded system that's big enough to run Linux you normally have the separate DDR memory for your RAM. So the first thing that happened when you hit the power on your embedded board is it goes into this boot ROM which is inside the CPU. Because this is so tightly coupled to the CPU it's like the old PC BIOS where every vendor does their own thing with the little boot ROM. So the specifics of how these work is you're going to have to get familiar with the data sheets for your part. There are some things that are in common but details are always you got to go with your vendor specifics. So somehow the boot ROM goes out to your main storage and it goes out and loads this SPL which stands for secondary program loader because the boot ROM is considered to be a first. So SPL once upon a time used to be a separate project separate software project. The goal here is to be really really tiny. So tiny that you fit into whatever the CPU designers gained to give you for that internal S-RAM memory. So we're talking like just a few kilobytes. In modern times you boot has actually learned how to pack itself into tight spaces shall we say and U-boot can actually build to a special SPL build that goes tiny tiny and fits inside the CPU. So the whole purpose in life of this SPL is to then go out and drag your U-boot in from wherever it's living to give yourself a proper full service boot loader. You get that loaded into the main memory and jump in and let it do its thing. So the embedded boot is actually tends to be a little more complicated than the old PC. You get you have to know your hardware a little more if you're you know doing a board support package. So then the U-boot is the thing that equivalent it's really equivalent to the grub job where it goes and pulls the kernel out of your storage and pops in the RAM and runs it. But it turns out that U-boot actually does a lot more. It is a little more diverse in its talents than grub or whatever your PC, your favorite boot loader is. So let's take a look at some of these things that U-boot knows how to do. So of course to qualify as being a boot loader has to know how to load and boot images that's pretty much a given. But it also is a lot more skilled in initializing and exercising hardware than your typical desktop or server BIOS because people tend to use U-boots more than just the end user final boot loader. But from the time that your custom board is born you know just the very first version back from the factory a lot of times people are using U-boots to exercise whatever the hardware guys change from the reference design and make sure it actually works. So instead of the classical menu system that you have in a BIOS you have the just the command line interface to U-boots. But the good news is that you have a lot of flexibility in managing environment variables so you can have a stateful system and save all kinds of settings any kinds of settings that you need to know in order to boot your system. And the final one that makes it really fun is that U-boot can actually run script. When you're sitting at the command line it has a command line parser which if you if you want to configure it actually can do a command line history you know like a shell. It has conditionals and you know if this and that it's actually pretty good. So suppose you had a you know that it gives you a lot more flexibility than say just the BIOS menus where a lot of times the vendor may not have given you the commands that you really wanted to be able to do. Like say you have just some desktop system and you wanted to remember to always power on after the power goes off right. That's a server thing. Well if you've got a desktop BIOS they might not have bothered to put that in. With U-boot pretty much you've got it just a ton of flexibility between the generic environment mechanism and running scripts based on your environment setting. You can actually have a collaborative thing going where when Linux is running it decides that the next boot is going to be a special one. Say you're going to do an upgrade and so you just set a variable and the script that you gave is the U-boot lets it know that you want to do something special that only happens on upgrade. So pretty cool. So now we'll get in after we've done the basics. We'll get into some of these rumors that were in the abstract. I've got my little helper the tux who's into rumors managed to dig up these leads. We're going to investigate to see how many of them are actually true. First one he claims he heard claims that U-boot is a network strike breaker for a small fee. He heard that U-boot likes to go around flashing bare hands without a permit. He heard that U-boot has been known to reprogram uncooperative boards for Jenkins and the last zany one that he didn't actually manage to fit into the abstract is that U-boot was heard to perform all chemical transformation. So started from the top. So let's talk about the normal case first. Under normal circumstances U-boot likes to team up with Ethernet to get pixie like booting going. So for those who don't know what pixie like booting is. In some of those biases for servers and so forth you had a PXE mechanism for doing net booting. You could have a whole cluster of diskless things that would boot off of the that would know how to boot off their Ethernet and then say either run out of a RAM disk or do an NFS mount. So you can do something similar with U-boot. You need some prep work unlike the real PXE. In the real PXE you have a special flavor of a DHCP server that not only tells the client what their IP addresses is but it also tells them where to go to find their boot images on the network. Tell them the server IP and stuff. So with this mere pixie like booting you have to go into the ENV and set up a server IP ahead of time and give it the boot art so that it's going to know to net boot. Then you use a couple of commands. You use DHCP to get at its own IP address and you use TFTP boot to grab the actual bootable image off the network. Okay so that's great. They're usually on good terms. Ethernet and U-boot. So what happens when the Ethernet devices go on strike? Say you have to pick a completely random example that may never have happened. Well yes it did. Okay flaky early board spins you find out that first version that comes back from the factory that you cannot get to a Ethernet and you're trying to do your rapid iteration with your development where you keep on building new kernels and booting NFS. That won't that won't cut it if your Ethernet fly got glitched in the first version. So there's another case at the opposite end of the spectrum. Sometimes these penny pinching hardware people end up taking off the Ethernet. So the final production hardware does not have an Ethernet. I may have seen this as well. So what happens when the local network is on strike? U-boot just teams up with the serial instead.  You can use programs like Minicom is my favorite. Other people use other terminal emulators but still remember how to do these ancient protocols. Okay so on the other hand there are no fees involved. U-boot does work for free. We're going to call this one a partial truth. It does, it does not go with the net, it does not cooperate with network strikes but it doesn't charge a fee. Okay next rumor. Suppose that the theory is that U-boot goes around flashing bear nans without a permit. So for those of you who have never attempted to do it yet, raw nanships can be a major pain to program. Pain! You have to cope with bad block tracking. You know those lovely SSDs that make your desktop and servers so fast?  In that it's not a question of if there will be bad blocks. It's just where will you have bad blocks?  Oh it's only a hundred. NANDs, the NAND manufacturers, they guarantee you that the very first one is good and beyond that who knows? Yeah, yeah. So not only do you have to keep track of bad blocks as if you without having the benefit of your fancy-dancy SSD from where to do it, you also have to cope with the ECC algorithms and the layout of the ECC bytes. So probably you've heard about the ECCs in reference to CD's and DVD's perhaps. You know they have the error corrections built in so that every little, every little scratch on your CD or DVD won't ruin the whole thing. It's a way of, it's a mathematical method for making use of redundancy. Okay I know this, I know that there's an error here and not only that there's enough redundancy that I can actually figure out what this was supposed to be even though we lost some bits. In the case of NAND it's bits that like to get flipped. And again NAND is so bad that it's not going to be, it's not unlikely that you have more than one bit flipped nowadays. In the earliest NANDs they use something called a Hamming Code and that was able to detect and correct one bit per block. Now you have to cope with some NANDs are rated for up to eight bit flips per block. So back in the old days when you had Norse you could, once you learned what the programming protocol was for a particular vendor, you could pretty much just say okay here's the image I'm going to throw on these exact bits and I'll verify it in the end and if the bits match we're good to go and so you have these little devices called flash programmers, right? So nowadays with the NAND you need to know exactly which ECC algorithm is the software is going to use because if you put in the redundancy using a different algorithm the software is going to think all the blocks are bad, not going to be able to read anything. So you have to have exact agreement in calculating these fancy fancy checksum and then you have to put them in exactly the right place because you have this OOB part out of band area in your NAND and the layout you know say you use bits by 0 through 52 and the programmer put them in you know shoved them at the end of the block instead you're also going to think all the bad blocks. Okay so that shows you why if you're getting small quantities of boards from a board house in early runs you're not likely to hear them volunteering. Oh yes let me program your NANDs for you. No, they're likely to come out bare blank. Oh yeah it was sometimes it's even worse than just knowing which ECC, sometimes it's knowing which two ECCs because the boot ROM insists on using one ECC and your kernel insists on using another. That's really a kill. Did I say it was a pain? Unfortunately, yes.  So it turns out that you boot does help you out in this situation. There's actually two differences general approaches. One is that you boot teams up with your boot ROM as a partner. You set your CPU boot jumpers for whatever your boot ROM knows how to do and you have actual hardware wired up to talk to it. Like for instance if you've got a board that has an SD card, a lot of embedded GPUs know how to load a block off the SD or you might have one that knows how to shove things in over Sira port using X modem, say, more of that old school stuff.  You have to read the docs to know. Sometimes setting the boot jumpers is not as trivial as you might wish. Say your hardware guy didn't think to put the jumpers on for the mode that's actually practical. You might need your soldering iron. So once you have it all set up, you've got the plan going.  SPL loads UBoot just like we had in the earlier diagram. Then the UBoot is smart enough once it loads the image to RAM it will know how to write to NAND in the proper manner. In fact UBoot knows how to generally if you've got a platform where they annoyingly make use of more than one ECC it'll have a command that lets you switch back and forth. You say, okay I have just loaded my bootloader image which is basically another copy of UBoot itself. Now I'm going to burn it with the special bootloader ECC and now I'm going to load the kernel and now I'm going to switch over to programming the NAND with the other ECC. UBoot can also team up with the JTAG programmer assuming you've got a nice little JTAG port on your board which usually they which hopefully somebody thought of if this is an early revision of the board usually the hardware guys are going to want to use the JTAG too so they do remember that. So the JTAG then is able to set up the SPL and stuff it into SRAM it will you can put a breakpoint so that after the SPL is done it's usual dirty work of setting up your main RAM so they actually can remember things. Then you can hold it and let the JTAG go again.  So if you've got a JTAG port available and you have one of those JTAG programmers this is actually a pretty convenient method during early development because one thing the JTAG programmers easily run faster than they UART and you don't have to worry about some wacky custom protocol like you do with the USB sometimes. So we're going to say this is true. It does flash bare hands without a permit. There is no permit but if there was one you might actually get it. So moving right along to our next rumor we heard that it reprograms uncooperative boards for a guy called Jenkins. You've probably heard of him in other contexts because Jenkins is one of those popular continuous integration or CI framework that people use a lot on servers including just all software projects not necessarily embedded. When it comes to doing embedded projects though Jenkins sometimes sells for native server tests. Say you've got an application that's pretty generic and just happens to be running on an embedded board. Why not just test it on the server. Sometimes Jenkins sells for QEMU tests. For instance the open embedded you might have builds where it's pretty convenient to go ahead and run stuff in the QEMU platform and that would allow you to test that not only does the application work as designed does it work on the actual arm architecture without having some stupid compiler bugs getting in your way but sometimes there's just no way to get around needing to run on the real hardware because QEMU stimulates common arm architecture stuff. It doesn't stimulate your custom say you've got hardware inside the SOC that does take a random case video encoding or video decoding accelerators. QEMU knows nothing about that. You can't test your applications that are making use of those accelerators. So when it comes to that and you want your automated test without somebody sitting there and programming the latest greatest version into your board you boot is willing to step up to the plate and help out. This is kind of the overall strategy. Jenkins will when it's running one of these hardware specific tests will leave a you boot command script over in a TFTP area because you boot knows how to do TFTP. Then Jenkins will reboot your board using whatever mechanism you get it like you might have a software controlled power switch for the brute force mechanism or you might have SSH logins where Jenkins is able to reboot the thing. And then you boot comes up and you boot has been told ahead of time that it's supposed to go TFTP that script to Jenkins made it and just do what it says. So this one is also true mostly because uncooperative boards usually have the option to opt out. If you've got a really uncooperative board you usually need to bring back that soldering iron to talk some sense into it. Okay here we go this is the zaniest one of all. Does you boot perform all chemical transformations. Are we talking like lead to gold? No more like brick to board. So this one has actually a number of variants. This is a nice meaty rumor we've got here. The thing they all have in common is that the brick starts out with a serial console because you boot commands are run over the serial console. The first one is that you have a brick with a USB port in it and then you plug in your USB stick and manage to get your brick back into a board. Or it could be you have a brick with an ethernet port in it.  Or maybe you have a brick with a JTAG pins on it and you plug in your JTAG programmer and turn it back into a board. There's a hint for you. Real bricks don't have serial console. So that's the trick. It is not really an alchemical transformation. It really was a board all along but UBoot can help you get the board to stop acting like a brick because it is really versatile and it'll work with pretty much whatever peripherals you've got. If you want a netboot that's great. If you want to shove things in via JTAG and then reflash your board that's great. We already talked about that. If you want to boot from an SD, you want to boot from a SATA, you basically however you want to get your recovery images in UBoot can pretty much handle it. But sadly it wasn't this since it wasn't really a brick. So I'm going to do some final conclusions and then I'm going to do some Q&A time and other people who like to work with UBoot are free to share their own war stories. It's the cool UBoot tricks. So first of all I argue that many books could be written about the exciting life of DOS UBoot. This barely scratched the surface of what UBoot is capable of. But unfortunately they probably won't get written. Too few of us embedded does really are inclined to write much so.  On UBoot might have to sell for some presentations. If you go to either of these lists you will find a few different presentations from the ELC Europe and it's both slides and videos on YouTube. Or you might try the UBoot Read Me which is really really long. Probably one of the longest Read Me you've ever seen and worthy of some light bedtime reading. I mean it's probably 70 pages printed out. We're going to roll the credits now. Thanks to Dan Malk for the fads rom back in the day. And Magnus Dan for 8XX rom. Wolfgang Dank was the one who did PPC boot which then got renamed to DOS UBoot because it no longer specialized. Tom Renne is the current lead maintainer and they have many friends helping them. Give credit to John Miller who is the guy who built the Motorola board. They ran PPC boot back in the day and he was one who recruited me to help get it on there. That's how come I'm familiar with UBoot even now. And credit goes to Tom King for starting a scale embedded track. Starting last year actually. I'm pretty happy with that. And my beloved other half gets credit for helping me come up with the topic when the deadline was looming. And Inkscape deserves credit for this whole presentation with all the PPC animations and stuff. It makes writing a presentation fun. And open clip art has graciously provided the traditional Yamas no wait. The credit Yamas yes. And the smelly chiefs and trainers of the Yamas used to get me to stroll in the right direction. And the brightly colored balloons and a space shuttle. And finally the horde of friendly penguins. They want questions on UBoot. We'll try to answer any questions you've got. I have a really hard question. I have a really hard question. I know there are a million versions of UBoot on the Internet right now. And recently you did some stuff using an arm chip with a signed boot. And that's a fun one. Yeah it is. That's an all winter chip because you can find the code on the Internet if you look. All winter is not known for being great at mainstreaming. Whereas if it's Qualcomm or TI you have to sign NDAs and you go to prison if you talked to anybody. What what advice can you give. Which UBoot is a boot to build to. Like when I do the next project. Do I use Denkz's version of it. Do I use one of the the GitHub versions. What do you think. I would go to the UBoot site and actually probably use one of their architecture specific trees. The Tom is the one who maintains the like the equivalent of the Linus tree that has all the architectures merged together. But he has the equivalent of lieutenants that are looking after different architectures different. You know like there's a TI tree. There's a TI tree if I were going to do TI. And there's quite a few of them. I forget if there was an all winter one. You might go with the main. Well I have the all winter one. Yeah. But it's stolen from all. Is it from UBoot or from the vendor. From the vendor and ended up on the Internet. So I can say that I have. This is a step of this is a step better than that. And that they're actually the changes coming from these trees that are listed as basically lieutenants. I forget what they what they term them. But these trees are like the equivalent of the ones that officially feed into the the mainstream one and they. Is there a sub tree that an official sub tree that deals with the sign boot. No there isn't. Unfortunately. There is. No. OK. So. That's in. That's in all the ones from the banks. Right. Like the the Chrome people Chromebook people did. Yes. I would. I would go look at what the Chromebook people did. If I were going to do one of the the fully signed trust. No there's the there's the Chrome for the Intel and the Chrome for the arm and there was a vintage of Chromebook that did what he's talking about. I'm pretty sure. There there the next version is not going to use UBoot in the in this process. But there was an error when they were using UBoot for the arm Chromebook to do the the trust is signed stuff. Doing it from UBoot. Oh you mean instead of doing a an upgrade from the Linux. Because we're we're using a normal version of you know the end user version of the software which may not be optimized for programming updates. So what the UBoot does is it will then I could have gone in a little more detail. So I'll do that now. So the UBoot can tell you to load a special programmer version where you have everything you need in the net ram at that. And that is where your M.T.D. UTILS gets installed. It's not necessarily installed in the normal. I'm just programmed to do that. To run this application kind of a build. Right. You. Yes. You booted into the special programmer. Yes. I'm not going to say a hundred percent because there's hardly ever anything that's a hundred percent. I'm going to say I have never I can only remember red boots being used once upon a time. And I can't remember the last time I've seen that in a board support. So board support package is pretty much come with UBoot and a kernel as a minimum. Nowadays there are actually usually an open embedded layer. So and those that open embedded layers if you're not using. OK. I thought of it. I thought of one. Minnow board doesn't by default do you do they do the EFI stuff instead. But if you're not doing the EFI then you're probably doing UBoot. People who are just doing their own thing are always free to run their their own coolest favorite. So I don't think there's any reason why you would literally make those things go extinct. But I think UBoot is going to be the standard for anybody. Well like the Android kernel I wish it weren't the case but if you've got a new chip nowadays it's probably going to be running an Android kernel if you're in something that could possibly be used for purposes. Now I mean you can't run other obscure kernels on the same hardware. But that's why I mentioned the SPL is knows how to do teensy timesy build. So if you if you can actually build it as a secondary program loader you can build UBoot really cut down. So it's all configurable. And in fact in the in the new mainstream the new mainline UBoot they've gone with the kernel they've done recently done a switchover to the kernel configuration style where you have the the menu config and all I want to turn this one on this one off this one on off off off off off. In old days you know that you and I work with mostly is it would go in and edit the header file. Right. And then you had to get familiar with that like bedtime reading of a readme to know what things to put in your header. So I think they're trying to make it more convenient to be able to turn things off so that you only have the things that your project specifically want. Yes. That one of those talks in the the Europe ELC that are online. The one by Simon Glass covers the device tree stuff way better than I could because he's the one that has been leading the effort there. He was the one who. So if you're interested in device tree I highly recommend watching his video. And they have made great progress with it last just in last year. A lot of things are going with the device tree and that that will in the future make new ports easier. New port. You know. Yes. It would be a you would use a different to you wouldn't use the same you both of you. That the software engineers use during development. I think they called it Falcon or something but there's a essentially what they did is they made it to where the secondary program motor mode where you compile it down with just a tiny minimum of stuff that it was smart enough to be able to load your kernel directly without going through. So you compile in just what you need into the tiny one. And it doesn't know how to do any of this net boot nonsense. It doesn't know how to do memory tests blah blah blah blah. It just knows. I know how to get the kernel from say FD or whatever you've got and pop it in there and run it. So I think that might actually have been Wolfgang who who did that project. But anyways you can you can look for you but Falcon pretty sure that was the main we've done. Thanks for coming. I guess it's time to hit the exhibition hall. One two three. One two three. There we go. Hi everybody. So it seems we've been having the wrap up session for about 12 minutes now. Hope you guys enjoyed it. Did everybody here get to see every single talk. Yeah. You guys liked it. Are you expecting were you expecting something different or does this kind of meet what you you know thought you wanted to see in a scale admitted talk. Yes. Go ahead. All right. That was great. It was great. Oh well. I'll let the I'll let the speaker know. So in this case. OK. So yeah you want more less less panel I suppose because that's probably the only way I can probably think about C plus plus and C because people are just going to want to battle it out. Right. Perfect. OK. So like something like a pitfall talk would probably fit in well. You know. Yeah. OK. And anybody else do you have any what else would you like to see here next year. Oh we could probably try. OK. Yeah. The micro view I think it's called. OK. OK. In fact I can I can probably see the minnow board guys go through that whole because they basically he basically started right. Gave you a little idea of what how hard it was to assign that board. But they didn't really go into the let's start. OK. So we had this idea and we thought about contacting these people to either make the board and such right. That that is actually a very good idea. So that that is like trying to find a manufacturer first of the birth of a feather. It's basically just round. You sit around with other people and talk about that same subject that might actually work better for this case because yeah trying to find a manufacturer for board is. Yeah. No. Well you can find way too many out there and you're just not going to know which one is going to be good for your typical your particular design and board and if they're going to deliver what kind of load they have right now and do you actually have to go to China to see the board in progress and build it and everything. OK. Yeah. Like really flush that out then that whole process. Yeah. That's what I'm thinking maybe maybe like an actual sit down for a couple of hours and try and see if you can you know get an idea of how long it would take to make something like an Arduino and you know from start design and concepts rather and you know out into production would would probably be a good idea to have. You had a question. OK. Yeah. I think the OK. All right. So the idea I'm getting is more hardware specific topics. Right. I actually get in in there because he brings up a very very interesting thing because sometimes even if you just connect your multimeter onto a circuit it'll just work magically. So that sort of stuff is kind of hard to debug. But I could see maybe a few sessions of people just going through different debug procedures and software wise like JTAG and you know all that stuff and somebody in hardware you know your oscilloscope best best way to you know maybe sniff out a bus in a system or something. OK. We had something like that last year. Right. I think David gave that talk. Yeah. Well we can we can just rehash that and add more. Yeah. So that one I think that's on the interwebs right now on YouTube. And they do touch on the what a JTAG is. You are. How do you look for you are some toys for example stuff like that which is something that you guys probably like a lot. So yeah you probably find that but I'll obviously let let everybody know that you are looking for more more talks like that. Anybody else have any other idea and anything you want to see in this track. Besides you know keep making it. You have a debugging kernel so it's fun isn't it. Yeah. Do you know why he didn't show up this time. I think we were all guilty of that. I had like two minutes left before the abstract thing closed down. Well there you go. OK. No of course so more hobbyist type project. Would that be it. That's that's actually a good idea. Yeah. That would probably bring in more people. Not just geeks I'm sorry. OK. I like that idea. Yeah I'm sure we'll probably keep the security talks up there because it's always a great topic and you know scaring people so we you know it brings in the crowd. Yeah. The only thing I in fact I wanted to bring up that ship whisper board they did went on Kickstarter. Didn't anybody. Fund that thing. The chip whisperer. You can do like site channel attack on board. Basically you know try and see if you can keep resetting a CPU and try and glitch it into doing different things stuff like that. Yeah. Yeah. Basically it does it does that but it tries to see patterns in for example the amount of current the CPUs are using a certain time. So you can try and break something like a lock in that case where it's or an encryption key and try and bypass that the actual finding bit if you reset it in a certain time. But it's it's like a really complex board but it I would probably like to see somebody talk about that. I don't think I have the skill to talk about it myself. That's also something that. Yeah. On Android I was yeah like and Android and Bluetooth low energy. Yeah. That's great. Well you can do it talk next year and that. Yeah. I haven't been able to play with any board that has a USB 3.1. I don't know how more power it's you know that USB like 2.0 has certain levels of power it can actually give you out to your device. This has more speed and more power basically. Yeah. Yeah. OK. Any more ideas. You guys happy with the embedded track then. You're going to come back next year. OK good. Don't forget tomorrow we're going to have more talks. Not totally. My talk is going to be embedded related but to game consoles which you guys are probably going to go to. You obviously do. You have to. And I guess that's it. OK so I hope you enjoy the rest of the scale event here and you can find me I'm going to be Tom for the rest of the day. You can find me and I'll be and I'll be I'll write down your ideas for next year. OK. OK.


Plot Academy is here to train people on the open-source tools that are the foundation of the cloud. Rackspace is on the cutting edge of the cloud. And we want to bring the training that we provide our own to the general public. This will make the labor pool here in San Antonio better. It will make it more attractive for it to move here. This is going to be great for San Antonio, both in terms of the everyday stuff, like folks coming into the city, spending their money here. But more importantly in the long term, creating a brain tower, creating the community of skilled information technology workers that can support the growth of companies like Rackspace and bring in other companies and start their own. When you are sitting in a historic place, do you know what started right here? Rackspace started right here. But another historic thing that happened on this floor is that right in those behind that glass wall over there is the first three servers of YouTube. And I am so proud to officially welcome each and every one of you to the Rackspace Open Cloud Academy. Rackspace and a lot of other companies in San Antonio, in Texas and around the world need folks who understand the new technology for the cloud. And in a short time period and for low cost, this Open Cloud Academy is going to make many folks enjoyable in our community. So that was a little video from the new Open Cloud Academy that we as a company Rackspace have launched back in the building where Rackspace actually started over a decade ago. So kind of cool that they're kind of giving back to the community now. And we'll talk a little bit more about that. During the talk, my name is Nikki Acosta. I'm a cloud evangelista for Rackspace. I am also the first wear and bearer of an open stack manicure. Believe it folks. I'll show it to you guys afterwards if you want to see it up close. And today is all about solving the open stack talent gap. So how many of you work for companies that are hiring for open stack positions? Everybody, right? We have a big huge problem as a community, right? Private public clouds will produce nearly 14 million jobs worldwide by 2015. So 14 million. Think about that for a second. Here's how you can put this into perspective. If you take every man, woman and child in New York City, Chicago and Los Angeles, that is still not as many open stack and other cloud jobs that are going to be needed by the end of 2015. To put that in another perspective, if open stack had 30% of the market by 2015 and we wanted to fly everyone to a summit, that would be 19,787 Boeing Dreamliners that would be needed to fly people to a summit. A lot of people, right? There are 1.7 million open cloud jobs worldwide today. So a lot of those are definitely for open stack. And that was a study from Microsoft and IDC that was released in December. So during last year's summit, we talked about open stack jobs that were open relative to some of the other open cloud technologies, right? And I'm happy to say that open stack is still leading the pack. What's even more interesting is that from six months ago to today, there has been an 81% increase in open stack jobs that are posted online. Think about that. At the current rate we're going as a community, we are going to have to train a lot of people and bring a lot more people into this community to make it successful. You were talking about, I'm sorry, I forgot your name. Let's see. Elena. Elena was talking about trying to recruit people in Mexico around open stack jobs. And she's having a hard time doing that. And so part of the proposal today will be to discuss how we can work as a community to bring more people into the community, to train people that might already be working for some of our companies and retrain them with the skills that they need to be able to contribute to open stack, give back to open stack, put products and processes and all these great things around open stack. So top countries that are hiring. United States, UK, India, Canada, China, Russia. There's over 53 countries still that are hiring for open stack positions. So truly a global effort here in terms of talent that is needed. And the top positions are open stack administrator, architect, DC operations, network engineers, engineers and Python developers. Here's an interesting statistic for you. If you look at those top positions as an industry as a whole, let's say you're a systems administrator, if you move to an open stack administrator, to an architect role specific around open stack, you're going to make on average 13% more than the industry standard. So that's a good indication that there's a shortage of jobs and that people who are wanting to bring an open stack talent are willing to pay a premium to have those people join their companies and contribute to this great cause. If we look at the companies that are hiring, it's going to be similar to what we saw six months ago. What we're starting to see now though is a lot of users as well. So over the past few months I've been looking and it's kind of shifted away from only vendors and now we're starting to see people in the financial sector, pharmaceutical sector, some of the gaming sectors start to hire for open stack talent. And the problem that I think we're having is that we're all in a situation where we're recruiting each other, right?  And hey, we want smart people, right? So what can we do in the short term and in the long term? So first for the short term, we got to keep our people who are working on open stack engagement happy. This is a DICE survey from March of 2011. What are companies doing to retain at-risk employees? One thing that we're hearing from a lot of the development community, especially as they want flexible schedules, they want to be able to work from home and they want to work on really cool technologies. So what happens a few years from now, maybe three or four years from now when open stack is not the new hot thing, right? What happens to all those innovator types? Do they go away to work on something that's new and exciting? Or do we keep them here engaged on furthering open stack, right? What might convince IT pros to remain in their current position other than salary increases? And we're seeing the same kind of things. People want advancement opportunities. They want flexible schedules and the ability to telecommute. And then, of course, there's nothing I'm out of here. So maybe some disgruntled people taking the survey. But the bottom line here is that you can't assume in your companies that your developers are engaged or happy. Even though they're working on open stack, there are plenty of people that are probably recruiting them every day to come over to their companies. And this is why having a unique company culture or having some of those kind of non-tangible, non-financial benefits are so important to a lot of people. The tech industry, more so than any other industry on the planet, I think, is a very unique industry in the sense that it's kind of come as you are, right? Volunteer your best every day. Address how you want. And do the work that we hired you to do. And that's a lot different. I came from home building and it was a very stark in comparison. And it's funny when we see new rackers come in their first week, they walk in and they're wearing college shirts and pleated pants. And literally, like, second week that they're there, it's flip-flops and shorts. So not taking it for granted that your employees are happy is really, really important. And so one way that Rackspace does that is through engagement surveys. So we send out engagement surveys every few months just to check the pulse of where rackers are and how they're feeling. And if there's things that need to be adjusted, there are. I mean, one of the requests we saw a month ago from our engagement surveys is that someone, like, a large number of people wanted unsweet tea. So our office now has unsweet tea in the front conference room. So that's pretty cool stuff. So just the little nonchangable things that make working in your own respective companies a better place, right? You hear from a lot of the legacy sort of giant IT companies that they're very old school in that sense. They haven't kind of embraced this new come as you are volunteer your best sort of attitude towards their employees. So here's another thing. For those of you who are here for the last panel, there was a really good discussion on what people are doing for meetup groups throughout the ecosystem. And Rackspace is definitely giving back. One of the things that we did recently is we went out to MIT and we trained a bunch of MIT students on our dime. And we did that not specifically for recruiting, not specifically as a marketing player or anything like that, but really we wanted to get OpenStack in the hands of some of the brightest people in tech. And so by doing just that, we were able to get people excited about OpenStack. And now we're starting to see a lot of internships spring out of that program. We're doing the same thing at UTSA. There's computer science and engineering majors who go to get resources right now. And basically they have to put in a ticket, wait for the request to be fulfilled, and maybe weeks or months later, they get their resource for a very short period of time. And so now they're shifting that model and basically building an OpenStack-powered cloud to be able to allow folks within our students and faculty within their campus to actually self-serve to those resources. And for Rackspace, that's going to help us create a blueprint to be able to take this to other schools. Up here, these are kind of the schools that we're working with now. A lot of them are heavy into the open source communities. And we're working with all of them to get internship programs established to bring our training curriculum for OpenStack to each of their respective campuses to get more people excited about this great mission that we're on. And then you guys saw the video. So OpenCloud Academy was an idea that came from Graham Weston. And in Rackspace, at Rackspace headquarters in San Antonio, we're having a tremendous time trying to find people to fill the roles that we have open. To the point where there's even, you know, super awesome hiring incentives for those who refer folks to Rackspace. And so one way that we figured we could get around this is to be the school that feeds into Rackspace directly. So you saw the video where we actually had a floor out of the Weston building that was Graham Weston's floor that he originally had given to Rackspace. And they turned it into an OpenCloud Academy where they have learning tracks for those categories that you see up there. And so not only is it an opportunity for folks who are not a part of tech to go and get certified, but it's also for people who have maybe been in the industry for a while and need to freshen up their skills for the cloud world. And so it's a pretty neat endeavor and a neat thing that Graham's doing to kind of bring these people together. They've got support from the city. They work with the city. They're working with a lot of the communities with veterans to get veterans into the school and to be able to give them access to classes using GI bill funds. So kind of neat things that Rackspace is doing that I think all of us can probably take back to our own companies and start in our own local communities. All right, so now long term. I think in order for us to be able to fill this talent gap, we're going to have to get really good at empowering the next generation. My mom works at a technical careers high school in El Paso, Texas. And I called and spoke to the principal last week. And I said, hey, I'm doing this talk on solving the Opusac talent gap. I'm not sure if you know what Opusac is. He didn't. But he said he'd heard of it, but he doesn't know much about it. And so I asked him a few questions. And some of the things that he told me were really surprising to me. First, the student ratio of male to female is still 90 to 1. So it's very, very male oriented in terms of the classes that they're providing are filled with boys and very few girls in their classes. The second is that he felt really strongly that the state is not really doing enough to encourage people to go into technical fields. When kids are little and they're growing up and you ask them what they want to be when they grow up, I said a clown. But you ask these kids what they want to be when they grow up and it's lawyers and doctors and firefighters. Kids don't even know that these things kind of exist, right? All they know is that when they go to use mommy or daddy's iPad and they pull up Nick Jr. or any number one of these kids games or our social networking site, that is just there. But really it's all the stuff that we're doing that powers all the stuff that's going to be coming in the future. And so getting kids involved at a young age through maybe one of these programs up here, getting them these books Python for Kids is kind of a responsibility of all of us, you know? I'm sure a lot of you have kids out there. I do. My kid, when he was two years old, walked up to the TV and started crying because he tried to swipe the TV to change the channel, like an iPad. And I'm like, hey, hey buddy, it's not an iPad. You don't change the channel that way. So a lot of our kids are growing up in this world of tech and I think at least for my generation, I'm 33 years old, when I was growing up computers started appearing in my classroom and it was like a reward if you got to go play Oregon Trail in the one classroom computer, right? One of the other things that this high school teacher told me is that it's kind of interesting to see how the student body has evolved. He said that when we first opened up this career high school and we started having these technical classes, that it was the very, very introverted type of students that would come into these classes. We all know the stereotype of your basement developer sitting around in the dark hacking away and it's really interesting that it's starting to shift. You know, we're starting to see kids who are just really interested in technology come over and they're not necessarily fitting the bill or the stereotype of being introverted. So kind of neat things happening all around in schools today but there's some great folks at Rackspace who are participating in the Girl Start program where she got tennis balls and with tennis balls showed kids how to use or conceptualize APIs and spinning up cloud resources. So really just kind of doing some grassroots efforts in your own communities to kind of enabling that next generation and letting them know, hey, it's okay if you want to grow up and you want to go into a technical field, that's okay. So here's one that I'm really passionate about. Any women in here, part of the women of OpenStack group going to the OpenStack breakfast on Wednesday? Awesome. So there's been a lot of stuff going on the news lately. Especially with Cheryl Sandberg's book and there's one of the women I was talking about. Ann Gentel everybody. There's Ann. You're welcome. So what we're seeing is that even in careers like biology, careers that were typically male-dominated that over the past few decades the sort of ratio of male to female PhDs has kind of equaled out in all places except for tech. So science and engineering are still heavily male-dominated. And so if you look at kind of the overall picture you're only seeing about 12% of the professionals graduating with those fields being women. Which is crazy to me because we actually make up more than half of the population. So my message to those of you who are working in tech is be inviting to women. There's a great case study online Lily sent to me today talking about how Etsy grew their number of female engineers by almost 500%. So it's no secret probably that women make up a majority of e-commerce customers online and Etsy has about an 80% rate of women that are buying stuff from their site. And so they basically created a program to basically put some gender equality into their mix of employees. One of the first things that they did was notice that all the men were kind of sitting on one side of the room and all the women were sitting on the other side of the room so they integrated them. So that was number one. The second thing that they did is they got together with some of the universities and started doing an exchange program where they would bring in students who are about to graduate for a three month program to basically intern at Etsy with a heavy emphasis on recruiting women and they were stunned by the results. They basically increased the number of women in their companies by a bunch, 500%. Some of you might have heard of this too so that tweet on the left, any of you guys seen this? PyCon 2013? I'll try to keep my own opinions about this to myself without going too deep into it but basically here's the story. There was a woman at PyCon, this gal, Ager Richards and she took a picture of guys who were sitting behind her talking about dongles and posted online. She lost her job. One of the guys that she took a picture lost their job. The reasoning for her losing her job was her company simply didn't agree with the fact that she posted it in a public forum. I can't tell you how many people have come up to me and said, oh my gosh, you're on the road all the time. What do you do with your son? It's 2013, guys. Women have careers now. We're not all stay-at-home moms. It's time to break these stereotypes that were women at home cooking with an apron like it's 1950, it doesn't happen anymore. To those people who ask me those questions, I say, hey man, it's 2013. My husband watches my son when I'm gone and when he's gone I watch him. So it's just little things like that that you don't even realize that they could be potentially sexist. I want you to be mindful of that when you're working around women, when you're at conferences like this, to just be mindful that there's women around and that they have a different perspective. Even if you look in this room, I could probably count the number of women in this room on one hand. This is a very male dominated industry but women are a part of it. In order for women to feel comfortable joining this community, being a part of this community, you have to be welcoming and bring them in with open arms. Thank you. To that end I think women have a responsibility too. It's not just men being sexist pigs and all this other stuff, right? That's what some feminists would love to have you believe but Cheryl Samberg to her point, she had some interesting perspectives on this too and I think due to the nature in which women are raised, we kind of have this notion that we need to please everybody, right? And I've caught myself. I've caught myself in meetings.  I think that women have, you have to lean in. You have to lean into the table and be a part of the conversation. You can't be afraid of what someone's going to say to you or say about you. It's no secret that women take criticism and negative feedback. It's difficult for them, much more so than men.  It's your opportunity here to work in the small, dominated industry. It's okay that you have a different perspective. It's okay that you have a different perspective on things and for a lot of companies, especially Fortune 500 companies, the ones that fill their boards with women, their leadership boards, have less chances of failing, less chances of filing for bankruptcy and they're more profitable. And so I think it's good not only for you guys to be inviting to women and for all of us to be inviting to women, but also for women to speak up and have a seat at the table and not be afraid of people judging them or not trying to please everybody. So all that said, here's my proposal for the OpenStack Foundation. Obviously we have a talent gap. We all need to fix the talent gap. We know that there's not many women in OpenStack. We want to fix that problem too. So here are four tenants that I'm going to propose to the OpenStack Summit after this talk. So number one, I propose that we create a full-time position for community talent development coordinator. So basically a dedicated full-time person to help people like Elena, people in other countries to bring together all of the recruiting efforts, all of the development efforts happening with universities, creating programs that work and being able to apply those programs all over the world, but really just putting someone in charge of that, right? This is not a rack space problem. This is not a red hat problem. It's not an HP problem. This is a community problem. It's a global community problem, right? And so we all could benefit from one person that can help kind of keep everything moving in the right direction. The second one is to continue to recognize, fund and promote the women of OpenStack Group. There have been some really great things that have happened, even Ann just kind of last minute pulling together people to put in money so we could bring some female students and some interns to the summit. So companies like Rack Space and other companies kind of chipping in to pay for their travel and their expenses and their entrance here. OpenStack is also hosting a breakfast for all the women of OpenStack. I think events like this are great. I think we just need to keep doing them, and we need to do them not only during the summit, but when we're not at summits, too, in our own communities. The next one, Create and Award Scholarship specifically for women and college students to attend the summits. Kind of already blew that one in the last point. And the last one, Create an online hub for community talent and women's resources on OpenStack.org.  I would like to see a community talent page that also has open source blueprints on how to get OpenStack into the hands of people in your respective communities. Colleges, universities, elementary schools, middle schools, high schools, technical colleges, community events and meetups, and then also some women's groups and women's resources. We have a LinkedIn page right now and that's how most of us keep in touch. But really trying to do a little bit more so that women kind of have a landing page with an OpenStack award to go and other women to network with if they want to. Questions? That was 10. Four. Did I say 10? Four more! So if any of you want to stick around, there is an etherpad that was set up. Where's Lily? Is Lily in here? There you are. What's the address? So there's an etherpad set up if you want to sign up there. If you want to, I'm going to create a list here. And for any of those that want to get involved in this talent development or the women's of OpenStack programs, if you want to stick around, I'll take your information. And let's get a mailing list started. Let's get together. Let's get ahead of this, right? Again, it's not just a Raxby's problem. It's all of our problems. If OpenStack is going to win, we need to foster talent and we need to get people involved in OpenStack.  See you at our party on Wednesday night. Yeah, awesome. See you here.


up this is what i learned in my debits and credit accounting course it goes up let's say by six hundred and then the other side is going to go to income i'll just make up an income account income and will say it's going to go to income other primary income boom save it and close it now it probably won't even let me record this because quick books is going to say hey wait a sec you don't even have a customer here i can't let you record it because if you do your sub ledgers going to be off for accounts receivable so it's trying to help us out by not even let us record it see it says when you use accounts receivable you must use a customer name so we're going to be like okay maybe i'll just put a name in here and so we'll just say let's say this is costs the mirror number one and i'll add a name and then i can save it and close it and say ha quick books there we have it so if i go back on over here so now if i if i run this then i can go into my accounts receivable and there's my transaction but it looks like a journal entry instead of an invoice you might say that's not too bad but i'm going to say there's that and the other side goes into the to the profit and loss uh... reportless range change all one oh one two four tap twelve three one two four tab run into refreshing there's the six hundred also in there as uh... journal entry by go to the first half because they forced me to put a name in it the sub ledgers should be okay so if i go to the tab to the right right-click it double duplicated so i can open up the the ar form and go to the reports close the bookie hamburgie that is and will say we're going to go to the customer balance detail so now we can see there's our customer everything else has an invoice this one has a journal entry so again it's kind of funny looking there but it still ties out because quick books forced us to put a name so i could put it into the sub ledger it's at the five eight eight one fifty two which ties out to the balance sheet five eight eight one fifty two let's go to the first tab now look at it internally we go to the sales side of things and i go to my customers for example customer number one and so so there we have it here but there's no little button that can say i see the journal at you but i don't see a button saying i can match a payment to it right because the next thing that's gonna happen is they're gonna pay us that money hopefully and normally if you have that you'd make a payment thing here and you apply it out now this one it's still letting you apply it out so that's actually nice that you still have the capacity uh... to apply it out here to the payment but you can see where the where the issues come in when you still when you don't use the forms right if i did this again and i said i got paid with a payment form for example and they paid me and i said well i'm not going to enter payment form i'm going to enter journal entry and say now i got the money which went into the checking account cash uh... i would say checking checking account boom and it was for six hundred and the other size going out of accounts receivable accounts receivable then i can have to put the name in here customer number one so it lets me record it and then i save and close that one so now you've got these now i've got this kind of two journal entries but they're not really linked together in here right that's going to so that's kind of messy and if you do that over time it's going to get to be it's going to get to be messy if i look at my sub ledger report up top then i'm gonna s i'm going to run it and so now it didn't cancel each other out here i can see that it went in and out but i can't really cancel them out because i want those to disappear i want them to go away now you might be able to still to fix it you might be able to make a payment form uh... and tie those two things out just out of curiosity uh... let's check it out so now you have these two journal entries that you could tie out and fix it you see the problem that i'm pointing at here you want to use the forms because those are used for internal bookkeeping purposes and you want to be able to use your accounting knowledge that will help you to be able to understand what is happening behind the scenes when these forms are entered so you want to see what's happening behind the scenes with regards to the debits and credits to create the financials if you can or at least know them in increase and decrease format and then be able to see why the form is useful from an internal perspective one because it's good for data input and to because the forms will be linked together so you could track the information uh... internally in the centers the customer center the vendor center and the employee center never remember the the other main place that you'll use the journal entries are adjusting entries at the end of the period you might not do on the bookkeeping side of things because you might work with an accounting firm that's at least doing the taxes and they might be doing like adjusting entries at the end of the period or they might have to make adjustments to create the financial statements in accordance to either the accrual method possibly or to attack spaces in order to to at least to the taxes or financial statements so then that you have to the question is how do you make that process as smooth as possible do you give them the access they can do the journal entry or do you or do they give you the information and you enter the journal entries and so on and so we'll touch on that a little bit more as we work through the the longer practice problem and uh... will actually have a section on or section or course on uh... adjusting entries if you're interested in that but if you're on the bookkeepers side of things what you need to have an understanding of this both sides need to know what the other side is doing so so that you can you can do what you need to do well and then they can do what they need to do well and we have a a good a good divide between the splitting of the duties so we'll talk more about that in future presentations


What's the word y'all? I hope y'all realize how blessed we are as basketball enjoyers, man. The second night in the world of the playoffs, where we had a three game slate and all three of the games were a banger, man. That don't happen often, bro. It feels like there's always that one games you turn off in the third quarter because you feel very confident that the other team ain't coming back. Today you didn't have that confidence. We had three bangers. And before I dive deep into these things, let me give you the clip notes version of them, all right? The Minnesota Tim Wills had two separate 20 point leads in the game and they proceeded to lose both leads and lose the game where it was called the target center was rocking the first playoff game in Minnesota the next amount of time, the fans wanted it and the players seemed like they didn't, especially in that fourth quarter. And that brought out a lot of toxicity. We're gonna dive deeper into that a little bit later. Game number two, Jalen Brunson in the Dallas Mavericks played Rudy Garbera off the floor. Basically the first time Rudy Garbera has legitimately been played off the floor. You know what I'm saying? There's been times where he might not have looked great but this is the first time Quinn Snyder was like, oh, damn, I actually got to do it. And Jalen Brunson was looking at all 30 teams and saying, hey, I'm worth every single pin you think I'm worth plus an extra 10 am. Shout out to Jalen Brunson, get your bad king. And then lastly, the Warriors go up 3-0 in a game where Yoke has tried to do everything he can 37, 18, and five, some steals, some blocks. He just, they didn't have enough because Steph Curry off the bench is still the greatest six man of all time. Jordan Poole, this is not a hot streak. Jordan Poole is just legit. Jermon Green, defense was great. And Clay Thompson hit like nine threes that felt like banger after banger after banger. Before we dive into these things, man, I wanna remind you that I have a newsletter. I am a proud owner of a newsletter where we have some of the best writers in the game that are keeping you up to date with all things basketball. It is the enjoy basketball newsletter and we're trying to hit our next milestone and we can't do that without you. Hit that like in the description completely free and you get updates to your email once we drop articles or once we drop things that we want you to know about the NBA. If you ain't already subscribed, I'm beyond as what you missed out on surprises but for sure there's more coming in the future. Before the playoffs started, all of our subscribers got an email where they were entered into this playoff bracket pool and the winner is gonna get some big things. We having more stuff coming soon and if you wanna be a guy that's in on the merch then enjoy basketball newsletter. Subscribers are getting a notification first and it's very, very, and I mean very, very limited. So hit the link in the description, man. Enjoy basketball newsletter. Let's quickly talk, not quickly, let's talk about this game where the Minnesota Tim Wolves just couldn't do their thing. First of all, it started off amazingly, right? Patrick Beverly started off with, I think the first nine points in the entire game. My hair is bugging. The first nine points of the entire game, he's getting MVP chance and they going crazy. Anthony Eris is hitting the shots, D'Angelo Russell is more aggressive this game than the last game and it was one thing they really needed from him and then the second quarter comes around and they look terrible. We're like, oh, all the shot making that they did in the first half, all the great defense that they had in the first quarter is gone but no big deal, right? Cause in the third quarter, they built that lead right back up and we're talking about a 20-something point lead in the fourth quarter and they proceeded to score nine points. I know they finished with 12 because Anthony Eris hit a late three. They had nine points for the first 11 and a half minutes of the fourth quarter and the defense was atrocious and the person that's getting the finger pointed at them the most as you can imagine is Carl Anthony Towns. He played about 33 minutes on the court. He had eight points. He had five personal fouls, four turnovers and five rebounds. He matched his fouls with his rebounds as the center but I'm giving a little pass because V8 began a lot of boards. He has played four post-season games this year. Two of them, he did not crack 10 points. Unacceptable for the franchise player, unacceptable for a potential all NBA center that is known for his offensive side of the ball. People have said that he's one of the most skilled big men of all time and two, two times this year he's proceeded to give his team nothing, nothing.  It's not like I'm at the rim heavily contested shots and dang, I hit that man on the arm. All right, my fault. It's like sticking his leg out on jump shots, setting super bad screens or the foul that brought him out of the fourth quarter was bad. I want to say for some context where you're like three and a half minutes and into the fourth quarter and they don't have a field goal. The Minnesota Timbers have not put up a field goal and the Memphis Grizzlies are rolling. And at this point, Carl Anthony Towns has only attempted three shots on the game. Think about that. He's attempted three shots in 30 minutes of play up to this point. I understand what's going on right now. He is our offense usually. Let's get him the ball, right? So let's see what happens on this possession. He sees Brandon Clark. He's like, you know what? Get through Malik. I got Brandon. I'm gonna try to take him one-on-one. He hooks Brandon. That's an offensive foul.  Never any accountability. 99.9% of refs are calling this an offensive foul because it is. You can't lock an arm like that and push it to the side.  So now your team is playing at a disadvantage again and they blew this game and they lose this game. It was bad. And it got the own fan base booing them. And you know what? I don't blame them.  Very, very pro at that. You know what I'm saying? Very, very pro.  So with a game blown like that, an embarrassing blowout or a embarrassing blown lead, I decided that I want to go to the subreddit of the Minnesota Timbers and just see what the fans are saying. This is not the first time we're done. It's actually the first time we're done in the post-season, but we did it earlier in the season when the Boston Celtics blew that huge lead to the Chicago Bulls. And we went into their subreddit with a hazmat suit on and we just read all of the wild takes and all of the people that are tweeting or writing with emotion. And I don't blame them, right? If your teams gave up this big old lead, especially in the playoffs, this is a little bit different than the Boston Celtics one because guess what? The Boston Celtics is turning the season around. So I would love to go back and re go through that video and see some of the wild things that were said and see how they hold up now that the Boston Celtics are like really, really good. But I don't blame whatever we're gonna read in the Timbill subreddit because well, this is a one game. I guess the number two seed in the league or in the conference. And you won home court events by stealing game one at their court and you just gave it back up on a game where you had this thing secured. You just couldn't be terrible for 12 minutes and they were terrible for 11 and a half and that blew it. So I'm just gonna browse the subreddit, read some of the things and see if they overreacted or not. So three hours ago, this Redditor said, undoubtedly the most embarrassing game of the season.  Cat being a baby and giving teenage temper energy or teenage tantrum energy, fence being unable to coach, two 20 point leads blown, all from the home crowd who just wanna see and help the team win. This is by far the worst. Yeah, okay. The top comment says season. I've watched since, Hey, this is what I'm here for. I've watched since 89, 90. This is a top five loss of all time easily on a national stage. Worst loss of all time, in my opinion. And I've been here too. Cheer for guys like Michael Williams, Sam Mitchell and Doug West, where we were nothing set through seven straight first round exits. Watch KG go win elsewhere. Try to get myself hyped up for draft picks like Johnny Flynn all out. Now he's diving deep into the bodies of the Minnesota Timbers fans by bringing up the name Johnny Fitzgerald drafted over Steph Curry. Watch Jimmy, the Jimmy Bully dumped the fire and now this, this is as bad as it gets. Time to overreact. Cat does not deserve a super max extension. Once again in a big game, Karthi Tells was terrible offensively, taking only four shots from the field. Teams are showing that they can take him out of games by putting smaller guys on him. Also he fouls at the highest rate in the league and is a very poor decision maker. This on top of his inability to recognize that a lot of the mistakes are fouls and not the ref's fault makes him very difficult to watch a lot of the times. Did not just say that, that he's never committed a foul in his life because he's gonna argue everything. I am sure this will age poorly, but after watching this epic collapse, this is my take. And I'm glad he kind of have the self-awareness to know that he is overreacting and that this might not age well. I'm gonna say again, I'm a big fan of Karthini Towns and I mean no ill will to him as we going through this. We're just doing this for entertainment. Okay, cool. Can't wait for Cat to have a decent first quarter to get called for a weak foul and get pitched about it. Then truck someone drawn to foul the next possession that ends up shutting down the rest of the game. Yeah, like I said, that's what he does. He deserves the goddamn mid-level set. The mid-level with these stinky stinkers recently. The mid-level is wild. Bro, the Alice Caruso side for the mid-level, which was like a dub, by the way, sent out to the Chicago Bulls. But the mid-level, we've played four playing slash playoff games so far. I'm pretty sure he's crossed 20 point mark once. 11, 29, 15. I didn't even realize that game three is a 15 because they won, so who cares if he had 15? And eight, generally embarrassing. Wow, how about 19 fouls in the last four games? This guy fouled more times than nine than he took shots, just unbelievable. And this guy, he has a Karthini Towns flair. He keep it in the buck. Oh man, not a missing poster for your franchise player. Oh man, not a missing poster for the franchise player. Can anyone explain why Finch didn't call timeout? A 15-0 and an 18-0 run, not a single timeout. I generally don't understand it and accept Finch to get roasted in post-game interviews. Oh my God, we gotta go to the post-game thread. That's where all the toxicity is gonna go. And you know what? We're gonna go by controversial. Oh, let's get it, let's get it. Fire Finch on the spot. Not calling the timeout during the 21-0 run is the worst thing I've ever seen as a Timberwool coach do. And I wanna remind you that the Timberwools once upon a time employed Tom Thibodeau, who's playing people 45 minutes a game. Seattle, take them please. Bro, try to relocate the whole organization. Oh no. Grizzly Fan here. This might be the last one we get to because I know we got two other games that we wanna talk about, but this is too good to not just dive into. I recommend you doing this after every loss because it's fun. I just don't do it every video because toxicity is like, I could get just a small amount of toxicity then I gotta be wholesome for the rest of the week. Grizzly Fan here. Do y'all hate Kat? He's undoubtedly very good at basketball most of the time. He just whines about everything and looks so damn goofy when he does. We've waited seven years for him to get that attitude, that it factor, that dog in him, but he just doesn't have it. He's cool being comfortable and chilling with his streamer buddies. Wow. Now we talk about his Twitch career. He's been a no show in both playoff series in his career. He's the reason Jimmy Butler flew off the handle and wanted to get out of here. He saw who Kat really was. Damn, bro. Series is not over. All things considered. So we gotta see how they retaliate. Carthy Towns needs a good 40 piece or something to get the fans back on his side. Let's go to the next game. We not spending nearly as many times on these games, but the Dallas Mavericks finally got Quinn Snyder to make an adjustment and the adjustment was let Rudy Gobert sit on the bench. And you know what? When he was on the bench, no, they couldn't get stops, which is their silicon senses, whether Rudy was on the floor or not, they couldn't get stops, but the offense was better with their small ball five. And if there's any silver lining, that's it. You still lost a game to a team that didn't have Luka Donchich. Donovan Mitchell went to his post game interview, y'all. And he was like, it all starts on defense.  They were actively trying to get Donovan Mitchell on the ball handler the entire game. Bro went to the post game interview and said, hey, it starts on defense. Like he was the guy out there clamping. Like he was the dude that was giving us all on the defensive side of the ball. Cause honestly, it wasn't anybody today. They gave 126 points to a team that didn't have Luka. The small ball five. Shout out to Eric Pasco, the homie. Eric K. Manning gave them a good little joke when they went on his run, but other than that, man, this man Jalen Bronson hit so many tough shots bro in the lane. And Maxi Cleaver came off the bench and he's just still shooting lights out. And then Maxi Cleaver went to the bench and they brought in Donovan's Bertins, who the world forgot it once upon a time was one of the most lethal shooters in the entire league. He came in like, oh yeah. You thought he was getting the breather with Maxi on the bench. Absolutely not. Doreffin Smith hit a big old shot down the stretch. And though especially then when he didn't have a great shooting night, he had the one shot, shot clock winding down, two seconds left, step back, like 30 footer, bang. And that was a big momentum shifter because that was when Utah was trying to have a little fight back. Yeah, I think we can all agree that it's time for the jazz team to just call it raps with this current construction of the team. So that's all I gotta say about it. Luke is probably coming back soon. But they don't even necessarily need him to at this rate. Get healthy for the next round, dog. Get healthy for the next round because they don't seem like your boys need you at the moment.  Took a game, they took a game. And they got a chance to go up to one of them or the Suns if they could continue to do that thing. The last game. I don't have a ton of say about this game. It is a 3-0 lead for the Warriors. In my little breakdown, my spark notes version, that's pretty much it, bro. Clay Thompson ended up hitting his six threes. He had 26. Jordan Poo had 27. Steph Curry had 27. And Gary Payton hit three threes. What are you supposed to do? Jokic and the guys, they try, bro. They legitimately tried. And Henry Gordon had his best game in the playoffs so far because he had been terrible up until this point. Jokic ended up with 37, 18, five and three steals. He tried his best, but they just don't have enough firepower to match what the Warriors got. Jermaine Green played amazing defense down the stretch in the close game, getting that pick pocket and Nicole Jokic in a couple more stops. They gotta make their free throws though. They shot 64% from the free throw. Well, a team with Steph Curry and Jordan Poole on it shot 64%. Steph Curry missed two, Jordan Poole missed three. That's crazy to me. That's crazy to me. Those boys don't. And Iggy got up for a posterizer. That's all, bro. That's all I gotta say. You know what I'm saying? Down 0-3, the season, the series is over for the Nuggets. So hopefully we get one more masterclass of great performance at the bare minimum for Jokic before we call it wraps and expect them to be contenders next year when Jamal and Michael come back. I kinda wanna go back to the subreddit, lowkey. I will go back in the subreddit, but I think that wraps for me on this video. Tomorrow, the Bulls have their first playoff game in Chicago in what, five years, six years and I won't be there. It hurts my heart and it truly, truly does. Cause I told myself since I've had this relative success on YouTube, the next time the Bulls make the playoffs, I'm gonna be there. I'm gonna be at the game. But when baby Aves being born, I can't bring myself to go to it.  Bro, she less than a week old. I would feel weird leaving her alone with somebody. Even if it is like her grandma, my mom, I would feel weird with leaving her alone for four or five hours and when she ain't even a week old into this world. You know what I'm saying? I gotta protect my baby. So I'll be, I'll be rooting for the boys, man. Best believe I'll be rooting for the boys. And once we hit the NBA finals, she'll be a couple months old and then we just put the headphones on her and take it to the game. So the Bulls has got to stay alive so we can get to the finals so Avery can go to a basketball game.