That's what you get for showing up.  Or you're doing it right now, so you're a poor multi-tasker, and so you're not gonna be able to do project three or listen to the material, so you're just not doing either well. I don't know if that's a poor type of person. If you're like saving time now, like going to class, you don't have to watch this video later, like an 80% of the class will be doing. Yeah, there you go. Okay, or then over a cop, or just regular competent and not over-confident, because we'll find out tonight at midnight. Yeah, after this, you're up from three to midnight. What's that, like nine hours? A lot of hours, right? It's like a whole work day. All depends on how you think about it. All right, cool. Okay, so we're gonna go back to semantics, and we're gonna talk about pointer semantics, and unfortunately, if you're classmates, they're gonna have to learn all this stuff on their own, because this is important, super interesting, awesome pointer stuff that we're learning. And then from here, we're gonna go into other types of semantics. So we're gonna go into memory semantics, talking about independent memory, and everything like that. Are you gonna talk about void pointers? Void pointers?  In what sense? What's a void pointer? I don't know. I was hoping you could shed some light on it. I was working on an operating systems project last night. There was a really bad casting going on. Oh, the type, like a void star. Yes, yeah. Ah, okay, so a void star is just a type. Void is a type that means nothing. It can be anything. So therefore, you can use it as anything. So if you don't know if you have a function that just returns something, and you literally don't want the type system to know for whatever reason what it is, it's a void pointer. So you can just say it's a pointer to anything. And then it's up to the person using that pointer to cast it to the correct type. So for instance, like the malloc function, right? So malloc, that makes sense, right? Malloc gives you a bunch of memory and returns random memory, and your program needs to know what it's actually pointing to, right? Because you told malloc, give me a point, give me the address of a memory location that has six bytes in it, or eight bytes in it, or 12 bytes, whatever you pass in as an argument, right? So malloc has absolutely no idea what type of data you want to put in that box, right? And so that's why it returns a void pointer, because it doesn't know, right? And it's your job when you call malloc to cast that to the right pointer. So when you de-reference the pointer, the compiler knows how to access things then. So you can do, yeah, I mean it's really just a type thing, but ultimately, right, it's just like any other pointer that we've seen, it's a value, it has a value, right? And that value is the address of whatever it's pointing to. Does that clear things up a bit? Sure. Sure. I thought you were talking about like smart pointers or null pointers or something, like these weird kinds of other stuff. Cool. So we looked at this, let's look at this example. I think this is where we left off on Wednesday? Well, I don't know what it is. All right, so we have our awesome C program here. We know that when we see, so how many declarations do we have here in this little chunk of code? Three declarations, right? So we're declaring three variables, X, Y, and Z. So when we see them, we need to create boxes for them. And we're going to bind the name X to this box. We have X, we've got an error, we've got a box. Do we know what the value is inside X? No. No, we don't know, right? It could literally be anything, right? The C specification says that it is undefined. If you try to read the value that's in there through, it could be implementation dependent, compiler dependent, day dependent, whatever. C says if you access that variable X before it's defined to it, then who knows what that value's gonna be? So we see X, and we're doing box circles. Do we care that it's an it pointer pointer versus an it pointer? No, it doesn't matter, right? Because all we care is that the value. There is a value, we know that there's a variable X, so there's a name X, and there was a location associated with that name X. That's what this declaration does. Now when we see the same thing for Y, we see a variable named Y, so we need to create some location and have that location associated with Y. Finally with Z, the same thing, right? Even though this is an integer, the other two were integer pointers and an integer pointer pointer, right? It's the same thing. It's still a name Z with a box associated with it. So now we get to X, so malloc. What's malloc gonna return? L value of R value, and address is an R value, and so it's gonna copy that R value and put it where? In the circle of the box associated with X, right? But what is malloc also gonna do? How does that change our diagram? New box, yeah, malloc is the way we as a programmer create new boxes. We'll actually see this as soon as we know the pointers. We're gonna look at the different types of memory allocation, but we know that here when we declare a variable X like this, we're declaring a place in memory where X is going to live, and when we call malloc, we're asking at runtime, give me some memory and give me the address of that memory. I wanna be able to use that memory. So it returns, let's say, I don't know, let's say it's at four, whatever, so we have a new box. It has some address, we don't know, and it can change that between different runs of our program, right? There's nothing that says it has to be fixed at four or it has to be a certain value, so we can say, here we'll say four, I think we're gonna now use symbolic values and call it alpha, just so that way we don't really care that it's a specific number. And then we're gonna copy four into the value of the location associated with X based on the assignment semantics that we've been studying and looking at now. We also draw an arrow. And what would you label that arrow? Just the, probably just the memory of this. So why do you wanna draw that arrow? Just cause. Just to have a reference to where it is. But how do you have that reference to it? How would you access it if you were programming it? Like how would you access this box from X? So what I put the label on that, if I wanna draw an arrow from here to here. Anyone else? We do want to do that and you'll have to do it on your assignments. What was it? Is it just an X? X, X is here, right? X is associated with this. Star X. Yes, it is there. My reader, where do you look at the slide there? You don't have to answer that question. It's not the teller one here, my reader. So yes, so we can draw an arrow here to say that, hey, when we dereference X, we're referring not to the value inside this box, right? We are referring to this location. Because we know that the dereference operator star returns a location, it returns an L value. So when we dereference X, we look up in the computer, which location has memory address of four, return that, and then that is the box that we're referring to. So this is how we can refer to star X now. Second line with Y, how does this change things? New box, right? Malak is new boxes, we're gonna get new boxes. Cool, it's gonna have some memory address. We'll say it's eight. Why did I choose a number that's four? Different than the previous box. Yeah, because what's the size of an eight star? Four bytes. Yeah, so it doesn't have to be like this. And actually it may not be, depending on how your Malak is implemented, it may not be exactly like this, but it doesn't matter. We know it has to be at least four away, right? It could be more, it can't be less because that would mean that it's overlapping. Cool, and where are we gonna stick the value eight, the return of Malak? In the circle of the box associated with Y, right? The assignment semantics are we have an R value, which is eight, we're going to copy it into the location associated with Y. So where would star Y point to? The new box. Now we can draw the arrow the same way, lay what's star Y so that we know when we do reference Y, this is what we're talking about. Let me say something like X is equal to the address of Y. This is valid C, can we do this? Yeah, so what is the address of Y return us? L value or R value? R value, some actual value. And we didn't give them any symbolic name, so we'll just call it address X, address Y, address Z. And so address of Y is the return what? ABY, the value, the R value ABY, and it's gonna copy that where? Exactly into the location associated with X, right? So we're gonna change this for here, now to be ADY. So now is my arrow of star X correct? No, no. No, where does star X point to now? The box of Y is the right one. Yeah, the box associated with Y. Pretty sure they don't have feelings, it's okay. Are you saying four is lonely now because it can't be referenced anymore? We'll talk about that next. We just need to know how the pointers work so that we can talk about how errors can accumulate. Cool. So let me say Y is equal to the address of Z. What's the address of Z? ADZ, so we're gonna copy that, put it in the location associated with Y, which used to have this eight, so we're going to remove this eight, copy an ADZ, and now we're gonna start Y point to it. The box associated with Y. Could we also add another arrow to this diagram? Maybe starting from, could we, could we also label this arrow a different name? Star, star, star, star X, right? Because X is a pointer to an integer. So we de-reference X once, we'll go to this box associated with Y, and if we de-reference this, we'll end up at the box that's associated with Z. So we could also add, you could add a double edge, or you could even just change this edge as star, star, X. But we say star X equals Y. So what does that do? What's star X? Star X, is it returning L value or an R value? What does this de-reference operator always return? L. An L value, so it's returning the box, a box, which box? Yeah, the box associated with Y, right? Where star X points to. So now I have L value equals L value, so what do I have semantics here in my assignment semantics? Yeah, we're gonna say, copy the value in the location of the right-hand side's L value, which is ADC, take that value, and copy it into the location associated with Y, which is Y. So this assignment save it to what? Nothing. It's weird that it does nothing, right? I mean, before when we saw it being nothing, we had X is equal to, what was it, star address of X, right? Which kind of makes sense because we can get rid of those stars, we're thinking of the star and the other sub-operators canceling each other out and we can see X equals X. But here we have two completely different variables, X and Y, and yet nothing changes, and we could just as well leave this line out, Y. Yeah, because star X refers to the same location that Y refers to, or happens to at this point in the program's code, right, at this point in execution, X points to the exact same box that Y refers to. Let's add some more complicated stuff. So when I say Z is equal to 10, what changes in my diagram? We're gonna take the value 10, copy it into the location associated with Z, boom, 10 goes there, that's all. So now when I print out star star X, what am I printing out? 10, so what is the location associated with star star X? The same location that's also associated with Z, right? This is also trippy, this is why pointers are very complicated, right? Here, on this line, I change the value of Z, and that changes what I'm outputting here when I dereference X, when I go star star X. Cool, then I do star Y equals 100, what is I gonna change? Z, the location associated with Z is also the location star Y, and so it's gonna copy 100 into the location associated with star Y, which is this location, it's gonna change this to 100, and then when we print out now the value of Z is it gonna print out 10? 100. 100, and that's exactly why, right? So even though here we change Y, because star Y points to the same boxes that Z refers to, we change that and Z is no longer has the value 10 like it did previously. Okay, so one thing we can say right now, so we need to find some concepts because these are very important, right? So star Y and Z are different names for what? The same location, right, not the same address, they refer to the location that also has, that is the same that has the same address, right? But so Z and star Y, what, is there another name for this box? Is there another way we can access this box? Star star X, yeah, so there's actually three names for this same location, and so we're gonna use the term alias for this. So star Y and star Z are aliases, what does that mean? Yeah, they refer to the same location, and so, yeah, super easy, I mean, easy definition. So what are the other aliases here? So we talked about star Y and Z are aliases, we said star star X and Z are aliases, what's another pair? Y and star X, yeah, are there any more? Could you just say X, Y, and Z are aliases? No, right, they each have their own location that they're associated with. And so part of the questions that you could be asked, right, is at a certain program point in this program, what are the aliases at that point? So why are aliases important?  Yeah, think about if you have a list, right, have you ever had this problem where you have two pointers to the same list, maybe you pass that pointer to the function and then that pointer modifies your list and then when that function returns, your list is now changed from the original and you're like, what the heck happened? Who changed my list? Right, these could be incredibly frustrating bugs to deal with and to think about. And so another area that you may not be familiar with, so with static code analysis, we want to look at a program and say some guarantees and some facts about what it does. So in security purposes, we want to look at a program and say whether it has security vulnerabilities or it doesn't. The problem is, just looking at this code, if you were doing it without considering the pointers and the aliases, right, if I asked you here, what's the output of Z going to be without executing this code? What's the, what can Z be right at this point? What's it gonna output? It looks naively as 10 because you see Z gets set to 10 and then you say output to the value of Z, right? The problem is that in between those steps, star Y is the same alias as Z, which means that this actually changes the value that we're interested in. And so think about, you know, that's just one tiny thing in one, and what is this, I don't know, 10 lines of code maybe? Think about like a large program like the Linux kernel. Maybe that was too large. Even your project three, right? Trying to analyze and reason, I mean, it's sometimes hard for me to analyze and reason about it as a human when you bring your project three in, right? Because they're, you know, it's a complicated project. I'm not saying it's a simple project, right? So your code's gonna be complicated. And so for a static code analysis system to reason about these things and say, what are possible values for Z here? Is it ever possible, like for instance, one question you may ask here for Y, is it possible for Y to be null? So you'd have a null pointer dereference, which could be a security vulnerability or a use after free or some of these other security vulnerabilities. And so as the program grows in complexity, you have a lot more possibilities for aliases and so you have to reason about these things. Anyways, this makes analysis super interesting and also really difficult. Cool, oh, we already did this. Yes, start, sorry, X, start Y and Z. And start X a lot, perfect. Let's do, since there's not a ton of you, we'll do it and choose your own adventure. Do you want another example on this? Or do you want to go to memory allocation? All right, memory allocation, cool. You have homeworks to practice. Oh, I guess I can do that, that's not fair. Okay, memory allocation, cool. So up to this point, we've been talking in these abstract box and circle concepts, right? We haven't really been thinking, so we said that every location has an address associated with it, which makes us think of memory. But we haven't really talked about how the compiler, how the computer actually does this and where these locations live. So, from your experience, learning about languages and programs, what are possible ways that memory can be allocated to your program? What was that? What does it mean? What is the stack, a data structure they learned about? What is that, but what else? What's the difference between the stack and the heap? The stack is static, the heap is dynamic. Sorry, what? Stack is static, the heap is memory. I don't know that I'd agree with that. I agree that in some, depends on how you look at it. Yeah, so, I mean they do really get the layout there on opposite sides and so they grow towards each other. But what does that mean grow towards each other? Like in terms of memory, like you as a programmer, how do you know if you're using the stack or the heap? If you're defining memory rules, then it's dark. What was that? If you're defining variables, then it's dark. And if you're defining dynamic memory, then it's heap. What's dynamic memory? So, programs will see, separates a static memory and dynamic memory when it comes to the program. Yeah, but how do you use a programmer to use and allocate that dynamic memory? Maloc. Maloc, so Maloc gives you memory specifically from the heap. And what's that, your contract with the system when you call Maloc? What do you have to do? You have to give it the size. You have to give it the size, exactly. And then what do you have to do afterwards? You're done with it. You have to tell the system I'm done using this, right? So the stack you're allocating, so is it, so you said what variable decorations, is that what you said? Function calls. What does that actually mean though? Is it all variable decorations stored on the stack? Not global? Why? Give it a separate space. Yeah, cool, right? So the very first one, right, is, so basically memory allocation in the context of what we've been talking about until here, right, is how do we create new locations? And the key part, the second part of this is we talked about how do we reserve that address so that we don't have any locations that overlap? And we don't reuse locations, right? Think about if we called malloc and we got the same address over and over back from it, right? It's like, yeah, yeah, if you want to use memory, just keep using it, right? And so we have all of these pointers that point to the same box, and now they're overriding and changing each other, right? Okay, cool. So we either want, with this memory, like we saw, we either want malloc to create us a new location, or we want there to automatically be a location associated with the name, right? So what's the opposite? So allocation, right? We also want to care about deallocation, right? This is what we just said. We want to be able to say, hey, we're done using this, right? In a program, think about a program that you write that just would never return any memory and it just keeps consuming tons and tons of memory, and then at some point it crashes. We have lots of memory, it'll be fine. It'll be fine? You'd be surprised. So did that take us to the Ruby on Rails story? No. So the early version of Ruby on Rails, they had a memory leak in their program, and so it would just grow and grow and grow over time. So the guy who created it, DHH, I can't remember his full name. If anybody remembers, let me know. He basically just wrote a thing that kills the Ruby on Rails process and then restarts it every half hour. And that was just fixed. It's like, well, it grows slowly over time so you just kill it before it gets out of memory and just start a new one. That's likely. That was as fixed to that until they actually solved the problem. So, yeah, but it worked, right? They shipped the product that they needed to ship. Okay, so de-allocation is how can we actually release this memory and say, hey, we're done using it, right? You can feel free to reuse this location again. I'm done using this. Okay, so we saw the types. We actually talked about, I'm pretty sure all three. Global allocation, right? Which probably goes with what types of variables? Global variables, right? We need to be able to access them from any function in the program, right? So it would make sense that the allocation is done once and the outcaded memory is never de-allocated, right? So why is, can the memory never be de-allocated? It can always be accessed by any function in the program, right? So I think about global memory and this also ties back into scoping, right? Because that global memory is accessible to any function in that file and any other code that links to and accesses that global variable, right? So the program can make no assumptions about when you've actually stopped using this global variable because at any point in the program's execution, any function can access and change that value. Why is it only gonna be done once? Yeah, does it ever need more global variables than what we declared? So we declare like the Lexar on project two, right? Has an array with a 256 or 500, a character array called the current token, right? So remember the 500, 256, 200, all right. That's in global memory. So that gets allocated to the program. That's at a fixed, well, we'll talk about that. It's at a fixed memory location and that never goes away, but it never gets more. It only asks for 200 bytes. That's all it's going to get, right? So global allocation, it's great because you know it's always gonna be there. You know, everybody can access it, but the problem is it never gets de-allocated and you can't ask for more, right? Basically it's your way of saying I'm only gonna use this much memory and this is it as far as global allocation. Okay, stack allocation. So what's the stack in terms of a data structure? Last and first out, what does that mean? What kind of operations does it have? Push and pop, push and pop.  So push, push, push, pop, pop, pop, pop, pop. Push, pushes and pops all the way through, right? Awesome, cool. And so the key thing here with stack allocation, this is associated as we'll see, we'll see examples with nested scopes and function calls. And it's basically ties in very closely to scope. So every time you access a new scope, right? We have new variable declarations and we saw based on our box circle diagrams we need somewhere for those boxes to live. And so we'll find out they live on the stack. And so anytime we access not necessarily just a new function, but also a new scope, whenever we access a new scope, when the program, sorry, executes a new scope, we allocate new memory on the stack. And then when we leave that scope we automatically clean it up and de-allocate it. And this is our contract with the compiler, right? This is the semantics that we've decided on with the compiler. We know when we declare a local variable called X that's an integer, we don't have to free that at the end of the function call, right? We know the compiler will take care of that for us. So stack allocation, you can think of the big difference between stack and global is stack is local variables and parameters of function calls as we'll see. And it's automatically de-allocated. So now the heap is where we come in as programmers, right? So with both of these, right? We still, both of these types of memory allocations are tied to what our program specifically says before compilation, what it does, right? Global variables, you declare upfront exactly how much memory you need and the system gives that to you. It's great, you need a gig, here's a gig of memory. Awesome, go nuts. But you can't ask for more. And with the stack, can you dynamically add local variables to a function while the function executes? Can you change the size of arrays that are as local variables? No, those things have to be static and have to be known beforehand, right? This is because of stack allocation. So because we're allocating these things on the stack, the compiler must know how much space do I need for this function on the stack? So you can think this is why what it goes through when it compiles your functions, it looks at all your declarations in a function or in a scope and then it says, okay, great, I know I need exactly 80 bytes for this function and so the function will change 80 bytes and reserve 80 bytes for you. But that doesn't give us really good capabilities, right? It doesn't give us the ability to deal with a context-free grammar that is 50,000 rules long, right? And with IDs that are more than, so that's actually the big failing of the project to Lexar because it has fixed hard-coded token size and it says no token could be larger than 200 characters when maybe the grammar doesn't necessarily or the Lexar doesn't necessarily specify that, right? And so we want to be able to deal with and to get more memory reserve based on the input to our program, right? Everything else is pre-in the compilation process but we need some kind of capability to ask the system, give me more memory. I need more memory, right? And the system can either say yes, you have memory or no, you don't and that's where heap allocation comes in. So heap allocation, right, is the system giving us more powers, right? It's giving us more power to allocate whatever we want but we have that flip side, that double edge sword where they say but it's up to you to free it when you're done with it, right? So you have to keep track not only of what you've allocated but you have to free it and you have to keep track of the size too in C, right? Nothing tells you how big that, I mean, it really only comes in effective strings but it's so important, right? And this is the same in C++, right? Whenever you have the new operator, this is exactly what's happening. New is using malloc, I believe, under the hood to do this allocation. It has to do some other stuff too but to set up that memory for you. What about Java? Is Java the same, yeah? New? Yeah, if you run a Java program in a loop and you just, well, make sure that may not. You could probably, yeah, you could probably set it up so it would crash but. Yeah, so when you call new, right, you are asking the system to create you a new object. That object has to live somewhere and if you think about it, what is Java running on? Is Java running on a Java machine? Like a Java CPU?  Yeah, the JVM, what is the JVM? That's a version of the same, what is it? What's it written in? C. C or C++, it's just a program just like the programs you're writing.  It's actually probably a little smarter than that but essentially that's what it does, right? It uses the same thing your program uses to get more memory. Well, so this is in, let's see if I can make a statement that these three types are in all types of programming languages. I'll say yes, and then somebody can disprove me. List, you can explicitly. You can assign the things. You can use the car and the CDR to generate, or you can use comms, that's what it is. You can use comms to create new list elements, I guess, probably other ways too. Yeah, that is functional programming languages, that's interesting. You definitely, yeah, that's tricky. And maybe prologue. Prologue's very different, yeah, I don't. Yeah, you probably don't have to think about that as much. Anyways, cool, okay. So our three types of memory allocations, right? So now I want to think about what are, from this program, what are the different types of memory allocations here, right? What are they actually going to be, right? So I have AX, global, that's going to be global. So what the compiler actually does, right, is it specifies and it decides a fixed memory location and says at 0804, 00B0, that's X. And so every reference to X will just access that memory location. So what about inside here? So when we get to this program, right, so we have this global X, we've set that global X to be 10. When we get inside here, what kind of allocation is this? Stack allocation, right? So it's going to be allocated as soon as we get inside the braces and then it goes away afterwards. Right, and so once we get outside here, we know that we've talked about pointers, right? Even if I had a pointer to X, right, that I had a pointer that had the value of what X used to be, is that pointer valid outside of here? No, right? Because after this scope, after I have left this scope while I'm executing, right, X no longer exists, it is deallocated. We told the system, the system automatically deallocated it for us, right? So we can go into foo, we can see we have another, what type of allocation? Stack allocation, and when we leave it goes away. And inside bar, so we call bar inside bar, we see we have X. So what type of allocation do we have here? Heap and stack, what are the differences? I mean, which is which? The malloc is the heap and X is on the stack, right? Which matches exactly to our box circle diagram, right? We have a box circle diagram for X because X, the variable X, even though it's a pointer, lives on the stack. And malloc creates a new location for us in the heap and returns the address of that, and then we put that address inside of X. We have two here, awesome. Please, all right, that was easy. Is it super easy to use memory correctly? No. No, no, we all know it's not. What are the most difficult parts? Remembering things. So what are some problems you've encountered when using memory? Second fault, what does that mean? In the terms you already talked about. Do you reference a null pointer? Yeah, I usually do referencing a null pointer, so you're trying to access a location that was not allocated to your program. That is the base definition of a segmentation fault. You tried to access a location that is not allocated to your program. So second fault, what else? Overflow, is that really a memory problem or a programming problem? What kind of overflow? Like you asked for too much memory. Like maybe you have a leak, you have a loop and you keep calling malloc over and over and the loop's infinite, and then you run out of memory and crash. It's definitely one possibility, what else? Index out of bounds. Index out of bounds? Again, does that have anything to do with allocation or you not knowing how big buffers and structures are supposed to be? Memory overriding, in what sense? Mm, yeah, that's super tricky to deal with, right? That's actually one of the reasons why I hate using global variables and I do not use them in my programs if I absolutely can't. Because you get into this situation where it's very difficult to reason about it. The program grows more and more and you start thinking, hey, why did this flag change? Or who changed this string? You literally have the entire program to think about. So I actually now, when I program things, I usually pass parameters into functions of all the variables that they're gonna access. Which is nice, because then when I look at a function, I know exactly which variables it touches and it never touches any global variables. So, cool. Okay, we've seen some good ones. So, kind of similar to the segmentation fault, right? We can have what's called a dangling reference, right? So this would be a reference to what? Yeah, memory that's no longer allocated to our program. Unfortunately, because of the way C and underlying systems work, accessing a dangling reference may not always result in a segmentation fault. But that doesn't mean our reference is not dangling. So we'll look at examples of this. We have a reference to memory that was originally allocated, right? That was given to us. But now it's deallocated, right? Think about two pointers that point to the same piece of memory that was malocked, right? We free pointer A, and then try to dereference pointer B. Because now we've pulled the system, hey, go ahead, reuse this. We're done with this memory. Now B points to that memory location, so now it's a dangling reference, if we... So the point is it is any pointers that now point to memory that is deallocated. Cool. What about garbage? It's talking about the quality of our code.  I didn't get much of a laugh. I was joking. So what do we mean by garbage? On the initialized memory? Yeah, so it's memory that we've allocated, right? And so we know it can't be global memory because global memory gets deallocated at the end, right? It can't be stack memory because stack memory is automatically deallocated for us. But the idea is we ourselves have to call free on memory that we allocate on the heap. And as we saw in maybe the previous example, if we cannot access that memory, if we have no references to that address anymore, then that is called garbage. So memory that's been allocated on the heap, it's not been deallocated, but it's not accessible to the program. There's no possible way for us to access that memory location, which means we cannot free it anymore. Cool. Let's look at an example. So I have main. I have an input pointer dang, dangling pointer. I'm gonna do it again. Okay, this is an example. Cool. So we're gonna look at this how this works. All right. One of the key skills, I don't know if I know this. Maybe. One of the key skills you're gonna be able to do definitely in this class, but in general is be able to look at code and know what it's gonna do and execute it, right? You should be able to think like a CPU, right? And that's why we're learning all this semantics because you know exactly what it's doing. You even are given tools and you have ways to help you think about those with box circle diagrams. So cool. We're gonna create this dangling. Then we're gonna call food, right? So what is this gonna do? Is this valid? Can we do this? Yeah. Yeah. Valid syntax, right? Cool. So I go into here, I say if x is equal to 10, where is x allocated? On a stack is 100. And we're returning the address of x. So what is the address of operator return? The address of the location that x is associated with, right? Do we know what it is? Not quite, but can we return it? We return it and then we get back and now that we're here, what happens? x is deallocated, but what does function food return? The address of x, which is just a value, right? It's an R value. We're gonna return that. Let's say it's 10 or whatever, it's four. And we're gonna copy that into dang so that dang now has the value of four. So at this point, do we have any garbage? No. No? How do you know? We haven't allocated any memory. Yeah, this is a minor trick question, right? Just keep going and tell us. Do we have a dangling reference? Yes. Yes, the appropriately titled dang variable, right? Is now pointing to, it has a memory reference in it that does not exist, right? x no longer exists now. So, I can now, but I can still print out, right? Dang is just a value, right? So I can print out dang and start dang. So what's the percent p mean in the print out? Pointer. So what does that mean? It's gonna output it as? What was that? Extraces. Yeah, so it's gonna output it in hex and it's gonna append zero x before. It just makes it really easy to look at. But remember, it's not the address of dang that we're printing out, right? It is the value inside dang, inside that box. And then we're also printing out as an integer dereferencing dang. So what could that print out? It could print out 100. Couldn't it also print out literally anything else? Yeah, because we have a pointer to nothing. Or it could crash, right? It could cause a segmentation fault. And actually, even though it's counterintuitive, a crash would be better, right? Why would a crash be better? Yeah, we know that we have a dangling reference, right? That would, we would now know that we have a dangling reference. We have a bug in our program. So it's gonna print this out. It's gonna call bar. It's gonna set y equal to 10,000. z is zero. Gonna print out y and z. Anything wrong here? Nope, two stack allocations of y and z. Print those out, good. And then again, we're gonna print out dang and star dang. So this is why this is so tricky. Should we expect that they're gonna same things? Let's think about this. Should we expect that dang is the same? Yes, yes, yes. Yes, right? It's on our stack. There's a value that was the address of x that we've copied in today. Can we assume that star dang is going to be the same thing? No, and here's the really tricky thing, right? Not only could, so a, the spec says if you dereference a dangling reference, there's no guarantees on what that value is. That behavior is undefined, right? So that output there is undefined. But intuitively, you think, well, okay, maybe that is a problem, but if I access that again, it would still give me the same value. So we'll see if that's the case here. So you can compile this on your program. It actually, so on the compiler I was using, it does give a warning and it says that you're returning the address of a local variable, but it does not give an error. So you can think that, yeah, in this case it's not good, but we could actually code this up in other ways that the compiler would not be able to warn us that this was happening. Like we could pass the address of x into another function that returned it back to us, and then that's what we could return, right? I don't think it's sophisticated enough to check that data flow. And then we could run this, right? This program actually compiles, and when we run this on, I think this was on a CentOS67 machine, a 64 bit tube, so you can see because of the huge address, right? I see this output of dang, and then I see 10,000 and 0, right, which is from bar, and then I see the same thing, but now zero, right? So it's weird that first, so it did actually access what I thought, but somehow it got changed to zero, and the super crazy thing is I ran this same exact program on this machine on a Mac. I compiled it, it also tells me the same error. I can run it, I obviously get different memory addresses with different systems, still 64 bit, but now the value changed to 10,000, which is the local variable inside of bar. So, huh? Yeah, it's actually really cool, so we're gonna actually look at how all this happens, but I believe, yep, time to go. Cool, and because you all came to class, and none of your class mates did, no class on Monday. See you on Wednesday.


What's up everyone? It's your girl Kenzie here from late in sports cards and I'm ripping a personal here for Amani S. We've got a 2022 tops formula one Chrome Sapphire box as well as a 2022 tops garbage pail kids Sapphire edition. All right, best of luck here Amani. Looking forward to this. Here we go.  Good luck. Leaky Lindsey. All right, let's see the Leaky Lindsey then. Empty. Here we go. Tanya hide. All say peel here. Metallic Max. A gassy Gus. And a repaired Rex. Haunted Hollis. A fried Franklin. Dental Daniel. Ouch, look at that. Ugh. And hamburger patty. Jules Jules. Early painting. Bud buggy. And a Ross roast. Oh, these are weird. But I'm intrigued. Cliffhanger. Oh, we've got a green coming up. Gene machine. Oh, look at that one. Clark Kent. That's the guy who's on the front, right? Yeah, that's the guy who's on the front of the box. And green, a starchy Archie, 60 and a 50. Oh, these are funny. Starchy Archie. Come on, Leaky Lindsey. We've got Audio Augie. Lucas Mucus. Batty Barney. And a dental Flossie. Oh, I think Floss is a little beyond health there. I don't even remember these as a kid, do you? I think it was a little before our time. I know my dad did, though. Revened Rex. We've got Iron Nat Nerd. A Dottie Dribble. There's a movie to this, Johnny. And a Hugh Turn. Zeke Freak. Welded Fred. And Menaced Dennis. And Shattered Shelby. That's kind of a cool looking card. All right, last pack here. We got Purple. Spade Wade. Spray Wade, sorry, not spade. Oh, geez. A hot dug. And Purple to end it, we have a dental Flossie, eight out of 10. On the Purple. That's funny. 87, yeah, that was like almost 10 years before I was born. That's cool. Nice one there, Amani. Maybe we'll look that one up. All right, now time for the Chrome Sapphire. Good luck on this one, Amani. Born in 94. F1 Sapphire. All right, Amari Cordil. We've got Lewis Hamilton, award winners. Latifi and Verstappen Grand Prix winner. Lando Norris, we've got Chartreuse, Frederick Vassure. Vassure, Alfa Romeo. That is 181 of 199. Future Stars, Enzo Fidipaldi and Lewis Hamilton, award winners. Might not be too much because I think that's a new release, too. Lewis Hamilton, Theo Boucher, future stars. Ollie Cobwell, future stars. And Sergio Perez, driver of the day. So a red sold for $270, like $130. Mick Schumacher, we've got Aqua, future stars of Enzo Fidipaldi. 65 of 75 on that one. Man from school. That's funny, Pete. Liam Lawson and Lando Norris, I'm sure as a kid, some of those would probably give someone nightmares. What's up, MOOC? Alexander Alban. We've got Lewis Hamilton, Grand Prix winner. Spain. Mick Schumacher and a Max Verstappen Grand Prix winner. Tell you not to tell mom, that's funny. I can imagine, Chrome. Roy Nassani, we've got gold. Botas. A Joe Guanyu on the rookie there. And gold is gonna be a Fernando Alonzo for Alpine. Nice one there, Amani. Fernando Alonzo gold, 48 out of 50. Couple packs left here. Jack Duhon, Esteban O'Conn, Alexander Alban and Max Verstappen Grand Prix winner. All right, last pack. Got a Chartreuse coming. Carlos Sain, Chartreuse of Lewis Hamilton. Nice, on the portrait, 103 of 199 there. Lewis Hamilton, Esteban O'Conn and a Ollie Cobwell. Alrighty, that will do it for your boxes there, Amani. Thanks again for the fun rip. Congrats on all those hits, and we'll get them right out to you.


From Soju's radio and television, this is the Army Now. The Maryland Army National Guard partnered with Baltimore County Police and Fire Departments for the Maryland Helicopter Aquatic Rescue Team, or HEART training, at Essex Sky Park. A lot of this came from Hurricane Katrina. A lot of SOPs, a lot of training weren't conducted prior to, and there's a lot of lessons learned. And right now, we're just trying to keep up with what we need to, should the occasion arise. We generally train every 90 days as our currency. There's been a partnership we've been exercising for the past five years. And the nice part of this is that the capability changes with the aircraft. So utilizing our county police, which is a smaller aircraft, is a day-to-day operation for us. But when we have these very large disaster events, we need a larger platform, and that's where we've been able to partner with the Maryland Army National Guard. For the Maryland National Guard, I'm Army Sergeant Amy Fujikawa. That's the Army Now. Thank you.


Hello and happy weekend. I borrowed a friend's Commodore SX64, the world's first color portable computer, and I have been working on rewriting Commodore 64 floppies. This one I rewrote with genuine grease weasel hardware, and let's load it up. We're using the Epic's fast load cartridge for much faster loading, so hopefully things will get going within the span of this short demo. So with grease weasel you can write data back from a D64 cracked format floppy and then stick it in genuine hardware and load it. And here is one of my favorite games for Commodore 64 Archon from Electronic Arts. Get a load of that. So as far as I can tell it is playable and works, but what we're seeing is that a large number of retries are needed when writing the floppies. More to come.


What's going on everyone?  Let's go ahead and start with your bumming drab jumbo Look Andre. Look Andre Leak, I believe paper base does not ship on these. That's correct So paper base does not ship on these Go ahead and skip all that just myself here Got the caro on the purple 250 Spencer Jones Ryan Acuna refractor and lead better refractor Brady would be cool.  Red auto? Yeah, I read Brady Fanatics, it's like so much lower. Yeah, it's more comfortable For me, I like it up here You've ripped more over there. I got my refractor Kamp-Alderman Sean Kamp-Alderman You know personals are full tonight if you order anything now it'll go tomorrow night after group breaks Got the Paula on the sky blue refractor Langford Rada, Ethan O'Donnell first refractor Curl my top of paper over there Come on We go Hmm. I'm gonna start so we can add you to the one hell out of the other basic sounds. You're good at it.  Of course it's gonna give me the whiplash treatment Got a kind of gotto on the yellow to 75 My art Carlson read first refractor and Connor Burns Yeah, but I've been thinking about that more like it's kind of it feels like it's being brushed aside because we're like Terrible like it's just so weird and I have Bella check there and have a top three pick Like I'm used to this with the magic We used to this even the Celtics were bad for a few got a Marcella Meyer on the blue paper to 499 I also know the last time the Bruins were not good like years It was the playoffs Taylor glass. They were like Ethan sauce or cracker Max Clark I don't know the last time the Bruins were like bad is weird. Do you think they're gonna take like Jane and Daniels or something? Really banged up paper here. He's really The other all right looks like Super banged up first auto here Austin Trosser the Mets on the first base auto All day loving Espinosa Braden Taylor first refactor Bray the red you're fitting on because they're definitely not as big as 75s like small. That's really weird Jet Williams refractor and Eric Atonti first Grant Taylor on the first base auto for the White Sox Sauber cool first and Jake Cunningham Yeah, that means he's he's doing more than just what the system was like straight up system guys scare me I like it when there's like you get a personnel and they work around with it. There's all the base in this one. No base Very odd Got Drew Jones on the Lunar Crater G.J. Nichols Cole Foster Or Lunar Glow I'm very shocked that Ben Johnson Mike Vrable and Bill Belichick are not NFL head coaches right now Like all three of them. It is insane. Yeah, what happens to Belichick? The Ben Johnson one makes a little more sense because saver Isaac blue to 150 for the rays Connelly early Brady Smith they went farther than playoffs and like He's not inclined to leave they give a raise up pretty sure Like I think because he was gonna No idea Paper collation everything else seems fine backwards base got Samuel Munoz Paul Wilson cards everywhere base All right last pack of your draft Andre good luck Alberto Rios on the first base auto for the Angels Hope Keith the inquest ad and Tommy Hawk first refractors. All right decent box of draft Let's go big box moment chrome gonna do your chrome University basketball now Good luck Andre or Ben Johnson asked for like money It seems like the commanders went with Dan Quinn because they wanted to kind of get that That lion's model of like a head coach being like the executive and like setting the tone and Hiring good coordinators. So, you know, plus he was good Atlanta like give him credit He was good in Atlanta. So Got a trade Norman first refractor at Shanahan at his OC if you can hire a good OC at Jane Quinn He's gonna do a good job. I think Got a DJ Wagner on the inserts Ashton Hardaway First auto here Santiago visco V to 250 first refractor for Tennessee There you go, Andre DJ Wagner first. I just I get the process on James first base Got Riley Kugel on the first aqua to 299 Juan Roberts He was a solid got a stiff on castle in the sharpshooters Tyrese Proctor Got a Justin Edwards on the throwback Dylan Jones need to study up CJ I got a study Lincolnson first refractor for Pitt Quotes here we got got Stefan Castle on the inserts Got a trade Norman on the first gold lava auto for Marquette. That was number to 50 There you go, Andre. Very nice Jeremy fears Got a Ashton Hardaway on the aqua wave Memphis Bob Dillingham Penny's son, right? Ashton, yo, that's his son Got a Sean Stewart sharpshooters Jadon Ackens Last pack of the first half got a brawny James on the throwback. There you go, Sean Stewart Yeah, the BNV thing is definitely weird got a Freddy Dillone On the dillion on the first refractor for Tennessee, Jared McCain base I guess that wouldn't be totally shocking wrong. Nothing would be nowadays Got a Zachary Richeshe on the inserts Milan mom's love itch got a Zachary Richeshe on the X factor first. There you go X factor first research research a 7s got a Johnny broom on the two true purple Auburn Jamiro young got a Xavier Booker on the purple shimmer first Michigan State as a Collier first Got a Dusty Stromer for Gonzaga Stefan Castle. Are you literally selling studying movie quits over there Elijah Martin first factor for FAU Clinton post That end over in a supermixer. Yeah, all the important things Riley Cougar inserts always hard Got Darren Green jr. On the X factor first for FSU Myra little got a Bryce Hawkins on the blue true blue first Providence Kyle filipowski Got a Haley van lith on the X factor throwback for LSU RJ Jones Last pack here Got a Zachary Richeshe throwback and Justin Edwards And I'll do it for your chrome you basketball Let's go ahead and continue a basketball do some contenders optic Contenders optic got Michael Porter jr. On the base Denver That Kawhi Leonard on the blue season ticket that one is numbered to 99 With the Clippers Keldon Johnson on the gold for the spurs nice that was numbered to 10. There you go. That's a nice one Very nice Jane Ivy on the uniformity Over the pistons and you got Luca on The insert for the Mavericks So unfortunately, there was no auto in the box. I've never seen that Okay, then We are gonna send you the box of rubber. I'm sorry about that. Andre Yeah, you'll want to save just save the recording. Yeah, I don't Know what happened there. I apologize man. Yeah But congrats nice gold though nice gold. I'm sorry that there's no auto. Hopefully we're gonna hit you a kaboom here in absolute Good luck, man. I've never seen that. I've never seen that contenders. I've never seen that ate the auto fudge round packs What's wrong packs? Brandy cooks blue to 50 for the cowboys. Yeah, I like the fudge round packs Roshan Johnson on the rookie out of the 50 for the Bears Roshan Johnson Got team Tamil in dual Jersey. Naji Harris Deontay Johnson to 199 for the Steelers Jalen Hertz on the base and Well, I'll be old Panini drew Sanders on the base for the Broncos to 25 drew Sanders Nice one here for the pack Jaden Reed on the triple RPA to 399 got dual Jersey and ball rookie triple auto For the pack I could see Evans go in there. I don't know though Bunch of young receivers at it. He had a really good year though Very nice one there Got Jaden Reed on the war room materials to 99 working for the pack pass there Jimmy G on the base and Tay Adams Our last box here. Good luck Stetson Bennett on the rookie to 275 for the Rams Stetson Bennett Nice one here. Got Jordan Addison on the rookie premier materials autos quad redemption Vikings rookie receiver Very nice one of the top receivers of this class rookie premier materials auto quad You got to a on the base and then juju Smith Schuster on the base All right, Andre that'll do it for your break appreciate Appreciate the pro bye. We'll get those right out to you


Good morning everybody and welcome to the DevConf presentation talking architecture shop with anyone. We're going to be looking at open source success at scale through a project that the portfolio architects at Red Hat, where I am also one of Eric D. Chabelle, the technical director of our products that we create. And what we'd like to do is collect some of the actual customer implementations and then take those to a generic level and share them with the world. So let's see what open source success at scale looks like. So in the beginning, when you start with architecture, one of the things you have is a plan, right? A very nice plan and usually everybody draws this up with great detail. It means we should end up with all the same exact execution, right? But when reality takes over and somebody else takes those plans and starts implementing, you could end up with something like this. Now I know this is a super extreme example and anybody with common sense you would think would not do something like this. But funny enough, sometimes our stuff ends up looking like this. So how do we get to a point in time where we can take plans that look really good and everybody implements them correctly? My idea and the idea of our entire team has been let's take a look at really good examples where people have done this and created really beautiful things. And if you could take all this information and share it in some kind of condensed form, this should help us map our solutions also to the same results. So what we've done is we've taken an architectural process, we put it together, trying to make it common and repeatable. And we have a visual language and tool sets, we have presentations, diagrams. We put quite a bit of stuff together over the last three, four years and you're going to get to see the results of this today. Some of the stuff that I put in the abstract for this talk has to do with retail. So we're going to cover three retail cases and I'm going to give you one extra one. Now each one of these cases that we decide to implement in this process has to do with three or more open source technologies. Now in our case at Red Hat we'd really like to see our products in there, but it could be three or more open source technologies. And that basically puts together a rather advanced integration of some kind of solution space, be that point of sales, be that real-time stock control, things like that. We have 24 or 25 of these and what it consists of is we've sat down and done customer research behind two to three implementations. Take those to a generic level and try to create diagrams. You see here an example of the architecture on the left and then we'll have three diagram levels from logical to schematic or physical and then a detailed diagram. Today we'll look at some of the market textures, the logical and few of the schematic ones behind each one of these architectures we're going to talk about. The field inside of Red Hat is given enablement and presentations around this. We have a public facing presentation includes some of the diagrams you're going to see today. At the end I'll provide some links to some of the public facing content so you can go explore those yourself. We also write up either articles or solution briefs that you can find on redhat.com. The publications tend to be spread around in different places. We do some of the stuff at Enable Architect. Sometimes they land on Red Hat property itself. Sometimes they're out on Dezo. You have presentation videos we'd like to put together which is sort of a process of walking through one of the use cases and all the content that's available and how to talk to that. You're going to get a little bit of that today. Where possible, where it exists, we don't build them generally speaking. It goes a little bit too far in our architectural product. But we do have within Red Hat various demos or in the communities around these open source technologies that might cover aspects of an architecture. In that case we will include those links so you can go explore that yourself. The first one up is supply chain integration and you're looking at one of the market texture diagrams. This is a high level introduction. Anybody can talk to this. It's really nice for these kind of presentations where you can say, hey, we're talking about these business drivers that has to do with supply chain integration. In the retail space in this case, it doesn't necessarily have to be confined to retail. And then you have a look at the container platform and some of the generic elements that are involved. It doesn't get too deep. It allows you to talk to somebody about what they're doing and where they're at and where they might be having problems. This then rolls over into the three levels of architectural diagrams and our tooling supports, where we've taken the time to do an open source tool as the basis. We started with draw.io and I believe it's called diagram.net now. And we put our own configuration on top of it to include some of the colors and icons that you see here that are brand approved for our company. It gives us a well-defined set that we can communicate with. You'll get a logical grouping and a logical view of what's going on in this architecture. You'll get a few schematical diagrams. Today we'll probably share just one in each one of the architectures, but there can be more based on what we find in the customer research. We try to document some of that at a generic level, not at the specific level of what happened to that customer. And then you'll have a detailed diagram or more of them. The idea being that you can talk at any level all the way down into zooming into these schematics to a specific component or element, I should say, which is a collection of components in one of these architectures. Again, back to supply chain integration. We have here groupings where you see the container platform that you saw. You see the elements involved inside that. You see the infrastructure services where they're located. You see the external systems there that are being connected to some of the storage services in this case. That we covered. And you see the hyper-cloud infrastructure. Nothing specific is talked about for a product or a technology or a community project. Nothing like that yet. It's all very much about a high logical level look at what's going on. Then we get into the schematic diagram where you see an actual case worked out where these elements you saw in the logical diagram are then applied. And you see a little bit more detail involved here now. So we have the various parties on the left side making some kind of a call in through API management. You'll note that one of these elements now includes reference to a product and implementation that could be used. It doesn't have to be, but we map as much as possible to these open source Red Hat products or just plain open source where it's not available as a product. We'd like to keep the open technologies sort of in the background, but it is a discussion that comes up when you start getting to how do you do that. So if you're somebody in an organization looking to do something around this supply chain integration, this is what successful customers have done at scale. So you have to look in your architecture and in your domains and decide event streaming, what choices have I made in the past, what am I been stuck with, or what am I using currently, or what am I open to using. And if it's Greenfield, we have a few suggestions. And you see that through the event streams various actions happen to integrate with back ends or with data frameworks, which is a separate architecture in itself, which we won't cover today. Another thing that's kind of nice about these and I'm going to drop out into out of the presentation and if you look in the speaker notes here at the bottom, I know it's a little bit small on your screen, but there's a link there. And that link takes us directly into, and I discard from my previous ones, takes us, that link takes us into the tooling itself where it opens up the actual diagrams and you see tabs here at the bottom. And the tabs include the various schematic logical and detailed diagrams and you can actually edit some of this stuff and you can manipulate this stuff and you'll see various aspects around the networking and whatever. You can put labels on things, you can change this to whatever your internal thing is for the customer you're going to talk about or to the architect you're talking about. You're also able to design your own should you want to. But this case, you're actually talking about discussing something with a slide and then jumping to everything we present is available to be manipulated and used. And on to the next one where we're talking about real-time stock control. So you see here that we have a container platform, we have the customer colleagues and supplier partners or vendors out there working through the various aspects of integrating with our stock systems. Finding out what's available to sell, keeping track of what's available to sell. Includes events that are being triggered to order management, supply chain systems, logistic systems, cataloging systems, catalog management, different things like that that might be important in your organization. Again on the left side the business drivers for this particular case. Very high level, very generic talk. Then you get into the logical diagrams again. Again you can open this up in the tooling, should you want to manipulate it for something else. We see here the external applications on the left, moving to the right, gateways and proxies, container platform with our various microservice and event streaming activities including process automation. And you see the infrastructure services on the back end that are indicative of possibly being external in the cloud or in the private cloud hosted on the retail vendor's own data center. Then we get to the schematics where real-time stock control. You see here the various actors on the outside there, various users and vendors and suppliers and colleagues and where they kind of plug into the various elements that are involved here that have API management handling, the requests coming in, generating events, maybe triggering processes that are a little bit more longer running, dealing with payments, promotions being generated and attached to various elements in our stock before we sell them, all the integration to the back end systems. Another comment that's worth being noted here is you'll see the colored lines are considered network connections. These are meant more along the lines of giving kind of a flow of what's talking to what, not identifying any kind of specific VPNs or certain network setups. That's left to the architects to figure out themselves. You will note that the dark black line there is connecting to a completely different side. We standardize that as being a data flow. So here you see the integration data microservices at the bottom that are connecting data in and out of the retail data framework which is an apart architecture. We have the omnichannel customer experience. Now, when you look back at the previous one, you'll see quite a bit of integration going on. So I thought I would mention we have almost 25 of these now, I believe, completely published and three or four more in progress. The omnichannel customer experience is one of them. I'm only showing you the introduction architecture story here. There's a whole portfolio architecture behind it with diagrams and everything. Feel free to go explore that when we get to the end. There'll be a reference slide that will show you a link where you can jump over and start looking at that stuff. I'll show you what that looks like in a minute. There are many more. So the final one I promised you in the abstract was the point of sale. Point of sale here has to do with sort of like a retail organization, developers in the top center there, deploying everything out to their image store. That's being spread around to the various retail locations. Where it's being pushed to the point of sale, whether it's apps or data collection or whatever it is. Those images are being updated and deployed as needed. And collecting from the endpoints of the various stores. We're finding sales data and feeding that back into our retail data framework so we can keep our stock control and that kind of stuff. Here's the logical diagram where we see on the left side the point of sales. The store server in the middle with the various aspects involved and elements involved there to make sure we're aggregating our sales data and collecting all that and keeping our catalog up to date. And then we have the infrastructure services that have to do with the developers on the back end through the point of sale, continuous integration and deployment platform where they're developing their images, their apps and pushing that out through the satellite server there. And here you see the schematic look at how that works where the schematic look, the point of sale where we see on the left side the developers and the operations and the retail data framework. And then you have the central retail IT where they're doing the development and setting up the images and the application to be pushed out to the individual retail stores. We're indicating multiple stores with those gray boxes layered like that showing you one store in specific here where the image and data store cache is being used to update the point of sales. Where the point of sales are also feeding in the sales data aggregation information to be able to send back so they can keep the skewed catalogs up to date and in sync from the retail data framework. More information here. I talked about the examples repository. We can go ahead and drop out of here and take a look at what that looks like. So this is over here. You'll see the retail is listed here. I can zoom this up a bit. The documentation is here. Retail, healthcare manufacturing, financial services, cloud adoption, hybrid cloud management. There's lots of these things in here. Let's take a quick look at the retail one. That'll be kind of, you see where you can load the diagrams. That's the same link you'll find in the slides. You can also just download the diagram file and use it to draw a tooling that you can install locally. See here the architecture and the various things that are involved within this case, the supply chain integration. So you can actually look at just the images and use those directly in your slides if you want. Point of sale, there's lots of these involved here. Headless e-commerce, business optimizers, more and more. We also have the workshop here. I wanted to jump over to that quick. So if you're trying to figure out how to use the tooling directly, the best way and the recommended way would be to go ahead and jump over here and take this designing your best architectural diagrams workshop. I'll do a little preview here in the menu and you see the various labs that you're walking through. We're exploring it and discovering what the asset library and the colors are for and how to connect and create logical diagrams, schematic diagrams, detailed diagrams, importing and exporting them so you can use them in your presentations and a few examples of how to use some of the quick starts and other tips we have. A little bit later today, here at the DevConf, I'm going to be doing a live workshop around this so feel free to join me there. If you can't make that, then this is online as you can see and you can do it at your own pace. So feel free to join me later. That's a shameless plug. Head back here to this. I would like to thank you. That brings us to the end here. Three different retail architectures, as promised in the abstract. I gave you a quick peek at the OmniChannel as an extra fourth one. We looked at the tooling, we looked at what it's constructed of, showed you a few places where you can find and get started if you want to do it yourself, invited you to my workshop later. So if there's any questions or any comments or any feedback you'd like to give, please drop into the chat and let me know. I'll be hanging out for a while anyway. You can also find me online. I'm not a stranger, so feel free to connect. Thank you.


Anybody want to start with a little reporting back? Go Melinda Lopez. I'm not going to talk at length. I just think what really our conversation started very safe and demure and talking about our feelings. We really did, we moved at length into much more of a social justice access conversation and whether that's the playwright's job or the theatre's job and how do we open the doors. And so we did sort of leave the world of the residency although we do, we are bringing it back to how our activism or not can be supported by the Mellon Foundation or how our voices can amplify that conversation. So I think all of us feel very motivated to go back to our host theatres and say we need to look at this question of access, ticket prices, availability, etc. How do we open the doors? Great. I'm going to hear some more things but then let's come back to what that means. Other people, I'll hand you mine. I'd like to say since I was comparing this gathering of artistic directors to the first cohort I was really pleased to see how quickly the conversation went to how can we support the work of this cohort of playwrights being produced, workshops supported by all the other theatres in the group which was really great. That is not at all where the conversation went the first year. And so there are all kinds of ideas about how we would all like to know whatever seeds of play ideas you guys are all working on now to share that among us because chances are even with just like a little two or three sentence synopsis of what you're thinking about there may be a couple of other theatres that would jump on board and go yeah and we'd like to have you come out here and do a workshop of it here and so just ways to move the work around and Jack for example is on the National New Play Network and making a stronger connection between this cohort and that organization as a way to just get your work moved around so that was a big conversation. One of the things I want us to think about very concretely and we don't have to figure it out today but I've heard that suggestion more than once over the last two days and I think one of the questions is what is the infrastructure already in existence is it the National New Play Network that would be a partner with a cohort like this in what way, I know there's been a lot of conversation about Hall around being able to share information which I think we can do but just trying to think about in concrete terms not to let these ideas fall by the wayside but to go what role can Hall around play what role can existing theatres in this cohort play and then what are the other organizations at play who would be helpful here and us beginning to sort out which thing is where and one of the ideas I just want to throw out there because I know having been through these conversations before as we get to the wrap up let's make sure we think about next steps for these good ideas We did talk about it being a two headed thing where it would probably be useful for us to give you the information to get out to the other theatres about what each playwright was working on internally but also to have the conversations between the artistic director and the playwrights about what other institutions within the cohort to the playwrights want to reach out to that we can also help you know if Lauren wants to be working with the Alliance or Lauren wants to be working with OSF or wherever that I can also reach out and say if you have an opportunity my resident playwright would like to come spend some time with you if you can make that happen so it might be a two way sort of street Okay, it's like creating a mini-map where this cohort of theatres would be the mini-map where we would know when other people's works are premiering and we could go see it or what's being developed by that writer at a particular theatre that maybe we could help vis-a-vis like greetings workshops even just like drop-ins So that's yeah And would there be one of the ideas that Sparks in my head immediately about this is that you all talking to each other and I'm now I'm speaking to the artistic leaders of the organizations but this would be true for playwrights as well but you all talking to each other about the work for example that you're developing with your playwright feels so critical and would it be valuable for you to all commit to a meeting every six months to update each other through the course of this just to be on the phone together to each talk about projects that your playwrights working on and things you're excited about but anyway just that was an idea that just suddenly sparked into my head like that you're actually talking to each other because it's sometimes like Hal Ron can send out a list oh you know this cohort's developing this play and this person's developing this play but there's nothing more exciting than an artistic director saying oh my god you know so and so is working on this play and you've got to read it and I can't wait to send it to you so anyway just a thought yeah that might be all interesting for the playwrights I know we're all busy but to have maybe every six months there's some kind of coordinated phone meeting I mean we all have our contacts but sometimes Louise might say something that sparked something to me and you know so maybe there could be some kind of every six or eight months we can get together for an hour you know on the phone like that you know coordinate through Hal Ron I know I would benefit from that a lot yeah and that's an I won't say easy because it's scheduling but it's easy to send out a doodle form and get you know maybe 10 out of 18 on the phone or 12 out of it you know what I mean something like that 19 on the phone and so I think that's something we could easily do for both cohorts if you decide that that's something you both you know groups if that's something we decide on so I love that idea other things that came out of your discussion any nuts and bolts kinds of questions that would be useful for the whole group to hear the answer to two things came up that really since bears resonate somebody brought up the notion of what happens when you change and I think that was really great how to negotiate change and how to negotiate the communication of change so let's say your play starts to change or the way you want to make the play or if you're a first-time cohort and there are things you don't want to do inside of those requirements how do you just negotiate that so that popped up in the other with that that was really interesting is the difference between small staff theaters and larger theaters and how they both operate in two very different ways and so I could sense that in our group there are two different ways of working and is there something to be learned one to the other or is it I mean like is that something that you would discuss in six months or was there something that I just wonder if there was like a takeaway that those are things I heard but I would love if anybody wants to address who brought it up that would be great because it would be great to just I don't want to talk for anybody basically and I was kind of asleep no no sorry no I just was curious yes well you know I don't know if there's a takeaway but it was an observation I made that I think that the size of the theater really affects the experience you have with the theater whether or not there's an office you're supposed to go to or the flexibility etc etc so I don't I don't know it was just you know I think an observation and I think it was it seems to be really useful for people of similar size theaters to be able to talk if that makes any sense did artistic directors find that as well is it similar size theaters is more more help yeah anybody want to comment on that or just nod heads is fine too sorry oh yeah Herbert go ahead there was yeah there was a big difference between the big theaters and the smaller theaters but I think overall we all had the same concern that the the demographics the our audience the audience is pretty much the same whether it's bigger or smaller and you know we all get excited when there's a preview and there's a lot of comps and there's a lot of big diverse audience in the previews and then the run starts and you see you know you start seeing the homogeneity of the audience and we were concerned about that great who else is yeah I know who else who else wants who's dying for a microphone it's so much fun other things you learned from each other yeah Nathan no I don't know there's probably reiterating but just the importance of communication and communication between the writer and the organization but as well as the writer and the organization with how around it's just it's very important and and and when things I think we talked about changing things change it's okay to say hey this is not I thought it was going to be this way it's not and can we adjust that and be open to that I think you had mentioned it Jerry one thing was the office because I had an office up with everybody else and at one point I was like I can't write in this office it's too many people in this office the other building has cubicles and walls up and I can write in that building and I think there was a level of what we won't see you as much and I was like well yeah you won't see me as much but I'll get some writing done and that was cool we had that we were able to have that conversation so yeah I think that's a great a great point and I wonder if I can ask this question and you know answer or not but one of the questions I wondered if you addressed it all in either of the groups I mean just what is the X what are your expectations are you going to the are the playwrights coming to the office two days a week or three days a week or one day a week or are they do they have an office do they I mean I just wondered did you guys talk about expectations like that and is there something that would be useful for the whole group yeah it's useful or not because we're newbies but I realize that as well as I feel like I know Christina I don't know her writing process well I kind of do I used to get rewrites at four in the morning but other than that I really didn't know her writing process so one of the first things I asked was can you write in the office I don't know I so I'm I'm trying to be open and just adjust to this new relation this relationship that's been existent but in a new form and you know really ask the question like do you write in an office can you write here and I don't know if she knows that or not but you know these are some of the things that I feel like we're going to try and I I got the sense from my cohorts that that's okay to try those things rather than try to fit her into some kind of box I do actually know for a fact unless you're a Denny's it's unlikely that Christine is that still true do you write at the Denny's still no oh my god alright that's so shocking alright anyway don't you remember yeah yeah I used to get Christina Ham emails at four in the morning from the Denny's so I just want I just that's all I'm saying the that's really helpful anybody else from the artistic director side have commented about that oh yeah sorry Michelle I'm sorry so I'm just again comparing to the the first cohort and it feels like everybody going into this has a much more realistic sense of expectations than that first time where I mean again as I said to our artistic directors at 10,000 things we don't have offices so there's absolutely no expectation that you would come I mean I imagine you right in bed I don't know what you do but like that's just like not an interesting question to me in any sense and yet different cultures have different things but and so the first time I mean I just heard all kinds of artistic directors going they need to be in here five days a week nine to five and nobody was saying that this time so there was a lot more realistic and flexible expectations around office time then I heard the first time which was really great I think it's it we've all learned from this first year and the second second round cohort people were asking really thoughtful intelligent questions so it seems like everybody's going into this with a much more realistic sense of expectations around that it's really helpful I think that's great other feedback Susan Booth do you have anything from where you are the luxury that pearls a long time Atlanta resident but the office time it became really invaluable was as a conscience colleague right as as a citizen colleague and knowing that pearl would be a regular presence in in the building and whether it was me in her office or her in mind or any of our staff in her office it was about conversation not about producing written text and that became a that's been a very important thing and it's sort of like where the therapist's office is and sometimes she's in it and sometimes she's not super helpful thanks for that Susan Nathan real quick because she said Susan said conversation and I was happened to be in Atlanta and I was invited in on a like a like a little conversation that they I think she said to me that schedules are busy and sometimes all we have is Friday to get together and have my God what a great conversation I was a part of and I'm just thinking to myself it's not a matter of how much you see each other work just find that time to sit and they didn't even talk about work they were just talking it was just a matter of talking and I thought it was just so great I witnessed it I wanted to move to Atlanta it was such a good conversation I have heard those so many times the importance of the playwright just being around and what it means for the playwright just to be around and present in whatever what what that means in each context is different so yeah I want to speak to that there's a word that is really important to me as being a citizen of my community that I'm not just somebody who makes plays and sells tickets but I actually live there I care about the health of the community care about the diversity I care about justice I care about the future of the community I've lived in my city most of my life I've done 40 years of theater there I've seen it transform and change become a progressive city that it wasn't before so it's actually manifest a lot of the things I've tried to achieve and all of this is a preamble of saying one of the great values of having someone like Herbert as a playwright is you use the word conscience I also thinks about citizenship you know a lot of the people around me are thinking about production they're thinking about selling tickets they're thinking about other restrooms clean or thinking about what's the Marquisate tonight tomorrow and how about that guy who fell down the stairs that was 95 years old and all the things that go on every day but who's thinking about the role of the theater in the community who's thinking about what we look what we sound like and what we represent and we bring in I expect Herbert to do that and he does do that and he is also thinking of this as a citizen and I have to say not a lot of people in my staff do that I speak about it and they go what's that I said well okay if you don't know then we'll talk to someone else but I think you brought it up that we're there we're there to carry out your mission you know I'm saying we represent your mission and we represent your general mission you know and another thing is that that came up to me today it was funny is that all organizations are dysfunctional like for sure they're all dysfunctional from top to bottom and we're not there to fix it you know you know there's that oh I wish I could you know that's not our role you know that's not our role because that could take a lot of energy that's great that's great I'm remembering back to the last cohort meeting and comments by both Bill and Susan and Susan correct me if I'm wrong but they both said they couldn't imagine programming a season anymore without Louise and Pearl at their sides and we haven't talked a lot about programming here Kevin at a sidebar we started talking about the influence of this program on the aesthetics of American theater and it's a particular issue yeah please there will not be a play that we produce that Herbert hasn't read and commented on I mean bottom line he's part of our selection team automatically artistic selection team in fact part of what we're doing is trying to share plays with him that he may not have read just read a Taylor Mack play the other day didn't know that work so part of our job we think is to play right understanding of the field so it's completely integrated in central other responses to that or other comments yeah our art selection process for resident artists is always a panel process of six to eight people and it always involves at least one resident artist that's current and a former resident artist so it kind of carries the like philosophy of what the art making of the theater forward and so Taylor has served on that panel and then a second part of it is that Kim and I usually interview the finalist that the panel has selected like ten people out of the 150 applicants and then we do interviews with them and pick the two or three that are going to be in the cohort going forward so Taylor is going to be part of that process with Kim and I in terms of making the final determination of the artists so that'll be a new thing that we're trying that's different than what we've done before that's great other as we wrap up the comments about that Peter yeah just just one just one quick thing because we work the same way that Melinda's on the artistic staff and she reads everything we read she's also someone whose work we're programming so in those artistic staff meetings we're also talking about whatever dramaturgical challenges with the plays or you know that's something we talk about as a as a group and so the the challenge becomes how do we not feel like a reality where we have to send Melinda out of the room and then she has to guess what everyone thinks of their play based on if they're looking down at their coffee or making eye contact so I think everyone has to negotiate that in their own way in terms of just how do you begin to talk about the artist's work when the artist is an integral part of the team that chooses and critiques the work that you produce I was just going to say since I just started July 1st part of my responsibility is also being part of our artistic team at Pillsbury House and helping Fay and Noelle with recommending plays because of my dual role also at the playwright center of interacting with a lot of new plays that I think can be helpful in terms of possible programming and also looking to take on the role of curating the new plays series there with playwrights from Minneapolis and New York and what does that mean to now go from still being a theater administrator in a different way but also kind of taking more of a lead role in that so great so we're going to take a break for 15 minutes come back


Today, Nintendo definitively confirms they are making next gen hardware right now. If you guys recall, we did a video a few days ago, maybe it was last week even, where we talked about Nintendo's investor meeting, right? They went over all the record numbers, what they predict they're going to be doing for the rest of this year, and in there was a massive number for research and development last year, and Nintendo saying they're increasing investing in research and development this fiscal year to basically one billion USD. It's a lot of money, and Nintendo last year has never spent this much on research and development, and Nintendo this year is obviously breaking that record again and spending more money on research and development than they ever had. Now the money in research and development does include game development. Now here's the thing, we talked about it back then on a quick tweet by David Gibson who was at this investor's meeting, that Nintendo said they're working on next gen hardware. But people were like, oh is that really what he said? Did they just mean next hardware? Were they talking about the pro? Were they just making a general statement? Well today we have all of the Q&A questions from the investor's meeting provided officially translated by Nintendo themselves. We are not relying on third parties for this. This is directly from Nintendo. There will be a link to this Q&A on Nintendo's website down in the description. If you want to go check it out, there really isn't that much other interesting stuff that happened in this Q&A. This was really the one nugget to come out of it. We're going to read the question and the full response, and the response comes from Shintaro Furukawa. So the question from an investor, we're not sure which investor was. In recent years, research and development expenses have been on the rise. What's the context for that? We're anticipating research and development expenses of nearly one billion yen this fiscal year. But what could give you a general idea of the kind of development that is for?   We've never seen you spend this kind of money. Shintaro Furukawa responds and says, our software development costs, which include outsourcing, are increasing as we work to maintain a continuous stream of new titles for Nintendo Switch as it enters the middle of its life cycle. Because per title development costs are higher now than they were on past platforms, we anticipate that research and development expenses will continue to rise as we work to maintain a sizable lineup of titles. That's really good news for all of us. Nintendo is trying to get a bunch of games out and they're spending the money to do so. So hey, hope that Nintendo is not going to tail off like they've done with prior systems. How many times has Nintendo hit the mid-cycle of a system and then nose dive with delivering games? That apparently is not what's happening now, they're investing more than ever. So we'll see what happens there. Alright, we are also conducting a variety of studies which include investing in ways to enhance our digital business and future services that will help maintain long-term relationships with our consumers. Think about this. Think about this. He says this was touched upon briefly in their corporate management policy last September. Think about that for a moment. We've talked about the virtual console stuff. That would be a digital delivery platform. That would be a future service. Remember, it says future service. This kind of makes it sound like this is not a service currently available. He just confirmed Nintendo is working on services that are currently not there. A future service, better digital business, enhanced our digital business. New eShop, new Nintendo Switch Online, whatever it is. We've heard rumors, Nintendo's basically saying we're doing pretty much all of that. We can't tell you the exact details but yeah, we have new services coming. We're trying to fix the current services. We're trying to enhance our digital stuff. Hey, if you want some credence to those eShop rumors, to the virtual console, to Nintendo Switch Online rumors, this is closest Nintendo is going to get before our announcement. In addition, in addition, here we go. In addition, sorry, I had to catch my breath on this one because this is, here we go. In addition, the development of the next generation of hardware needs to begin years before launch so research and development expenses that are gradually rising for that. This is not a mincing of words. This is not a misquote. This is not a mistranslation. Confirmed 1000% Nintendo is making next gen hardware now. Now it's not. We're going to release for years. He does note years down the line. So this isn't soon. This is in three years. This is in four years. Whenever they decide we're done with the current generation of Switch, they have the next gen hardware and active development now. And part of the rising cost is their investment in active development of the next gen platform. So stop telling me Nintendo's not working on next gen. Those of you that doubt this. This is the horse's mouth, the top at Nintendo telling you we are. And why would you doubt it? Nintendo always has to work on their next gen platform years before launch. This shouldn't even be shocking. But for some reason, for some people, it's a surprise that Nintendo is trying to get next gen hardware made behind the scenes. It is a little bit of a surprise for them to mention the word next gen. Because generations aren't supposed to matter. But hey, Nintendo used that terminology. Here we go. There's one last sentence said here. It's not a huge deal, but it says we are aiming to grow by continuing our integrated hardware software entertainment business. So they're going to release another system. They're not going away. They're not going to become third party. And that means conducting all sorts of research and development in various areas, including both hardware and software. So yeah, also games for next gen, by the way, we're going to have that too. Oh my gosh, who knew they're going to make next gen games and next gen hardware. And probably their very first next gen game is already in development. Who knew? Nintendo knew. So that's the big news there. That's the exciting stuff. All confirmed from the horse's mouth. You guys, let me know your thoughts on this down in the comments below. If you liked this video, drop a like, leave a comment down below, and what you hope the next gen saw. Let me know what you want next gen to be. Another switch, another traditional home console, full on handheld. What kind of hardware are we talking? What do you want the specs to be? What pricing do you want? Let me know down in the description. We probably won't be talking about next gen switch for quite some time or next gen anything for quite some time. Obviously, Switch Pro is kind of the thing out there now. Next gen will be something we probably talked about years from now, but still, let me know your thoughts because Nintendo brought it up themselves. And you know, anytime a company mentions next generation, we got to talk about it. Alright, folks, I'm Nintendo RoboJet from Nintendo Prime, and I'll catch you in the next video.