아니, 랩스틱이 없어요. 랩스틱이 없어요. 랩스틱이 없어요. 괜찮아요. 죄송합니다. 사실 제 타이틀을 바꿨어요. 제 타이틀은 J&A의 클로저를 이용해서 타이틀을 바꿨는데 클로저를 바꿨어요. 만약에 질문이 있으신다면 Q&A, Q&A, Q&A, Q&A, Q&A, Q&A, Q&A 이 질문을 받을 수 있을까요? Q&A, Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A, Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A Q&A 1. 라이버리, 스테이그라이버리와 2. 랩펄클러스, 3. 레이아스, 4. 아세싱, 4. 네티브 오데스 어떤 legislatroneyed에 Smile. Q. 연구 themagnol server입니다. Q. FASM is FANAMA, new feature, still developing but FANAMA will be shipped on JGK in the future. 그런데 제가 첫 3개의 예방을 준비했습니다. 두 가지가 없을 것입니다. 왜냐면, 제가 이걸로 이걸로는 충분한 시간을 적용하지 않습니다. 그래서 제가 소개해드렸습니다. 그리고 두 가지가 없을 것입니다. 첫 번째는 JNI입니다. jni는 jkk 1.1에서 cpp를 사용하는 것입니다. jni를 사용하는 건, clibrary를 사용하는 건, clibrary를 사용하는 건, jk class를 사용하는 건, clibrary를 사용하는 건, After that, you generate shithead from that Java file. From that, you need to return to writing. cccl Dude for load the clibrary. After that, you can start writing your closer library. 예를 들어 보겠습니다. 왜 안되지? 그래서 우선 프리펠드 C라이버리 필요합니다. 그리고 두 번째는 CompileJavaColor 오피헤더 오피헤더 오피 라이버리 그리고 마지막으로 Closure 프로젝트에 적용할 수 있습니다. 옵스 아주 간단한 функ션입니다. A plus B 그래서 첫 번째는 C라이버리 필요합니다. 보이시나요? HELLO.DLM HELLO.DLM each shared library in Windows system in Windows system it will be a live hello.so so you just generate C라이버리 from this source and after that what what's the next is before that you need to the class for color active hello you need to writing the java class for calling loading the hello library something wrong java correct so next thing is using this java file once you need to compile using java c so as you see you can check the compile the jnihello.class file and after that you need to generate the entropy header from that class as you see you can check the header file from that class and after that you need to the writing this function for calling the native library finally you got a entropy c library actually java using this not hello.dll directly jni using the hello underscore jni.dll using that c library and the other library java calling the real c library so finally because we are closer programmer so let me check the closer library closer part is very simple because we just calling the previous because we already have jnihello.class so closer just using the depth function what we predefined so using the native hello library and second what we need is your previous we compiled new hello underscore jni library because of this previous java source loading the hello underscore jni not hello not just hello because java doesn't cannot calling the jni cannot calling directly using the hello jni need to compile to another library for calling the c library so we compiled the hello underscore jni so as you see we check the result of that closer source is here just 10 plus 20 so we check the right result as you see much of jni problem is long step each of 6 step of depth for just using the c library because of that jna occult jna is very simple than jni but much slower than jni jni example is very simple just using the just prepare the c library previous is hello.dla and just from that just like in the code code it will work as you see compared to jni jna is library is very simple things because in the jna you need to prepare 6 step so you need the c library and closer project and java into op project and java native project but in jna you just prepare the c library and just prepare the closer library c file doesn't c file is same as previous the different part of the definition of the closer part compared to the jni in the jni we need to prepare the java file for interop but in jna you don't need to prepare the java file for interop you just writing the interface which extended from the jna library and you define the method just synchronize the type of this int int and int this is argument and this is a little type and after that you load the library and just writing the wrapper function and just using that function so now you can check the same result of that compared to jni jna is much simpler than and there are some other library for interop that's your jnl so compared to jna step is very same thing so i'll just compare to the closer part so this is jna ok right side is jna but we saw the previous and left side is jnl the difference of this jnl lead to the extended jna library need to the extended jna.library but on the jnl you don't need to the extended any library just using the interface itself and performance also is jnl much better than jna jnl is your worst performance jni is your best best performance but jnl is between jna and jni but as you see there are some problem of the jna, jna, jna jna jna one thing is you need to the writing the leper function for that java or closer you need to the writing the leper function for that to solving this problem there are two project what i didn't handle that one is java cpp nowadays there are some most popular clibrary for example opencv or somethings but on java side you want to the using the clibrary because you want to the using the opencv or somethings but in jna and jna other from the j you need to the writing by the hand to leper function for that but this project provided the auto-generated interface so you can more easily maintain the interoperate library but i didn't prepare this example so i just prepare the link but now internet doesn't works well so i will skip this part and one other thing is a panama actually a panama in my memory panama will be secret jdk i'm not sure but oracle just prepare this library for interop this library also contains the code generate and yes yeah i just link that so if you are interesting about this project follow this link and back to first because i want to the writing the hdl library for closure people explain what i did i hdl is simple direct middle layer so for game programmer is very familiar familiar library to make a game because this API is very simple and it is easy to read the code so there are many language support that binding cshab or something of course jab also has support that binding but this project was that this project doesn't maintain well so i starting the writing the hdl library so i want to share what i did on this project i using the jna so i input the jna native and pointer and people i will show writing the interface using the jna interface and extend the jna library so i writing the sum function like this and this is the main function so as you see i calling the hdl library directly using the jna so you can see the result of this as you see i wrote some logic to receive the key event so when i moving the key so you can check the logo for that but i starting to developing this library because i feel tired to writing the reference function manually so that's your problem of the jna and jna is jna so next what i will do i want to trying to the javasipi or panama for future i just stop at first but now i just want to share what i did what i got and i just want to share how to using clibr in the java world to you and is there any question to me or pardon if you follow the rule for dynamic library so you can calling the that library you can compile or share the library using the rust or some other languages so so i will close my presentation thank you


In this segment, what we'll be doing is taking a look at free convection from horizontal plates. And in what we're going to be looking at, we're going to be looking at plates that could either be round in cross-section or they could be square or rectangular. And so with that, we first of all need to begin with a length scale that we would use to characterize a horizontal plate. And so what I'll do is I'll give you a number that enables us to determine, or it's an equation, that we can determine the characteristic length scale to use in our non-dimensional numbers. So this is an equation that we can use in determining the length scale that we'll use in our non-dimensional numbers. So that would be in the Nusselt number as well as in the Grouchhoff number, they both have length scales. And so that would be the value of L that you would use in both of those equations. And notice that the area, that would just be for one side of whatever shape that we're looking at. And then it would be divided by the perimeter. And this works for square, rectangular, and circular discs. So that is the characteristic length scale that we can use in the correlations. Now what we need to do, very similar to the incline plate, it will depend upon where the surface is either heated or if it's cooled and if it's an upper hot or a lower hot. So what we're going to be doing is we're going to look at a couple of different conditions. And we'll begin by looking at the case of the upper surface heated or the lower surface cooled. And it turns out that both of these scenarios result in similar fluid mechanics although they're reversed. And I'll try to sketch that here. So let's begin with a sketch of what the flow looks like around these plates. So what we have here on the left hand side we have the case of upper hot. And we can see as the fluid on top of the plate heats it moves up and in the process through the continuity equation we know that we're going to have entrainments of cooler fluid around the outside. And that's what I've sketched there. And then in the case of a lower cold surface we have that on the right. What we have the fluid on the bottom is cooling and therefore it becomes more dense and it will descend. And in the process we will have again entrainments of fluid. And I've shown these columns just to basically show that we have a separated flow or clumps. It's a three-dimensional flow field and that would be the scenario of the flow that you would have if it's either an upper heated or a lower cooled. And with that we have correlations that pertain to these types of flows dependent upon whether the Rayleigh number would be in the laminar regime or if it would be in a more turbulent regime. Actually there's a range. It's not the exact same number that we've had before for 10 to the 9. It's actually 10 to the 7. But let me sketch out or write out what those relationships are, the correlations between the new salt and the Rayleigh number. So there we have our two different correlations. The first one here, you'll notice that we have the Rayleigh number raised to the power of one quarter. And before when we were looking at the correlations we said that that would be an indication of laminar flow. And although the Rayleigh number, it's not 10 to the 9 like we saw before. It's a little lower. But still that would be an indication of more of a laminar like flow. And then as the Rayleigh number increases the exponents on the Rayleigh number goes to one third. So that again could be construed as being more of a turbulent type of a regime for the flow. So that is the case of upper hot, lower cold. Now let's look at the flip side of that where if we have the lower surface hot and the upper side cold. So again what we have here on the left hand side, this would be a case where the lower surface was hot. So looking at it, and I think I drew this in the wrong location, let me flip that around. So the lower is hot. And then on the right hand side that would be a case where the upper is cold. And so what we can see is when the lower is hot what is happening is the fluid is moving up due to the fact that it's becoming heated on the underside and then that entrains cooler fluid from below and then we would get kind of a jetting of fluid going up on the left and right hand side. And when the upper surface is cool, again what it's going to do is it's going to entrain fluid down and it's going to cool and then it's going to come along and that will be more dense fluid and it will move downwards and so that would be upper cold on the right. And with that, when you look fluid mechanically, these do look similar, they just flip from one another. And consequently with that we can write out the new salt number relationship, it would pertain to either of these and it would be the following. And here this would apply from 10 to the 4 to 10 to the 9 so that we have to the power of one-fifth but I would assume that that would be more of a laminar type flow that we're looking at. And we don't have the clumps of three dimensionality like we saw in the other one and that's probably why this would be viewed more as a laminar type flow. So anyways that is the correlations for free convection from horizontal plates for different conditions, either heated, oh you know what, I think I goofed that up. This here, Ts, should be on this side and then over here we said that lower was cold and consequently Ts should be there so the lower surface was the part that was cooled so we would assume that that was a cooled surface and then here we would assume that that was a heated surface and then for this other one the hot surface was down here and the cold surface was up here and so I apologize about that, hopefully it's not too confusing but you would have either the heating either being on the upper or the lower surface and you get different fluid mechanic and heat transfer correlations coming out of that. So anyways that is how you hand all the case of free convection from horizontal plates.


Yeah, we on boss talk one-on-one. Yeah, we gonna talk, you know, but fast bass did I did you guys? Okay You know, I hear these niggas talking baby and all of them these niggas stepping up with a little conversation They want to talk about the fast bad and and and so this fast bass thing got them got them talking Yeah, you know, it caused money to eat niggas coming.  I'm not crazy. Right. Oh, I'm a businessman It's something going down, right? And and I heard mama Scott was the key to it all. Yeah, well, I'll tell you that's love right there You're me. Yeah, I want to talk about that part. You know, I'm saying just how did you establish this fast bass? Wow. Well four years ago we had a Potential investor that wanted to invest in fast entertainment Which at that time it consisted of my three sons and an artist named ghost, okay Still part of us, but he's an active right now They wanted to invest and they came forward and they were saying they want to come to East Texas and put us out there Because they want to put half a million dollars up under my sons So my oldest son like you can't just bring them folks from Dallas down here like that We ain't got no where for them to bring, you know, so we created fast bash, but we didn't make it just about us We invited the whole city. We did a lineup They even gave away 20 prizes for college students that year They got they gave away Ten five hundred dollar gift cards to college students going to school. So it was massive that first year. We have news coverage Newspaper coverage and everything so it really started out small, but just ended up And I feel like it was yeah, I feel like it was like that because we was not selfish Okay, you know and we included the whole city and and others and Trillie was a big part of that too You know, I have to always give him his Sleep at all work Yeah, I'll never forget who right there beside me And you got Mr. Scott come on my husband Don't come up with no problems That's got names behind my hood That's a good thing, but that's how it originally Started and then we just kept it up the next year and then last year We of course can do it because of cove it but like I say this year was more important to me because I was blessed Even anticipate coming to me so my my mindset is different than most I just look at I can't carry none of this stuff with me I'm gonna be okay, and I'm gonna make sure minds is okay But the overflow I wanted to put that back into my people and do something that has never been done for East, Texas Which is not charging them. Yeah Yeah, I'm saying still making it be affordable for families to come out and enjoy fast bash But putting us in a better venue in inside We did it in the park for two years straight in the heat for nine hours a day and we had no Incidences we had bloods crips everybody in the park and because of the respect I feel that they have for me Mm-hmm and the team and what I what our goal was as a movement We didn't have any issues and it drew people together even people that was at odds with each other It it solves so many problems in a city, which was Longview aka murder view at the time Yeah, yeah, yeah that it resolved a lot and it started all that stuff started kind of going away Even though we experienced still stuff from time to time It's nothing like the 19 unsolved murders that we came into when I came on the scene But so so this bass you got let me tell you something I wrote a list down. You got Lil runny Yes, who got a casino? Yes, muddy casino. Yes, but it's Sancho saucy. Yes Lucas tech Yeah, you got man. Of course AJ 1k.  I'm pretty sure my five headliners Okay, and the reason why they're booked is because I personally have relationships with all of those and tech I don't as of yet.  She said yes, my son So we started talking about Row is he's on the East Texas, he's one of my book East Texas Wallyp would be out of town that weekend. Yeah Personally spoke to both of them. Okay. Yeah. Yeah. Yeah, but Smitty Hawkins is on there Smitty Hawkins is on there. Yeah, I'll be smooth. I ain't on that. My nigga right there Coming That's who trilly Trill talk no pill talk put this thing out He got 10 rappers and them niggas in Dallas They said what they said and the Houston niggas said what they said in a whole time I said nigga don't do this now, but then I thought about how D. I said boy, that nigga gonna be a problem for You start looking at the ones that he put in you know You start thinking about and it's just something to think about it can happen. My other co-host was like set it up Bigger bag Tim say it's some heavy weightless man down there I love what's going on with the music and it is a competitive There are a couple that I wish could have made the lineup and stuff like that but due to irreconcilable differences sometimes the things in the past sometimes it's not best for them to be premiered But we still rock with them. We still support them. I wanted the people here. He's still doing a massive work I want to give him a shout out and let him know that we still rocking with him and that's camp nowhere He's massive I used to manage him as well, but his career and me separated, you know, so but we still wish him Actually fast bash it was originated for to give East Texas a platform But I want them to know like they they drag their feet and we have angry birds right now That's what I call them because they wait till I told them that though when this list come out You're gonna be mad at your homeboys that got on it Drug your feet on that on it But it's not just East Texas we got people from Louisiana coming we got people from Dallas We got people from Houston It's all over because they see it because they don't have that out there and then for you to be in East Texas and not Take advantage of something so massive as even it's just the networking You know I'm saying like quit making excuses like God dog if it's free You ain't got if it's free and you claim you are the hottest nigga in East Texas There is no reason your support team shouldn't be that's right So let me ask you this because I think about the boosty bash when you keep saying yeah Is this in similarity to that or I think these bags came out like right with ours like okay This is his third annual. Okay, so y'all y'all kind of doing the same idea. That's great How many people turn up last year? Well the last time we did it I ran I ran 52 artists through on the stage that day And we was out there all day and as far as the turnout We probably had about about 300 to 400 people, you know in and out the whole day This particular time will be at the holiday in inside and we'll have the concert that night at this at the same venue Yeah, it's gonna be indoors climatized nice venue. It's nice. How many people can they fit? up to what About 600 Yes, because that's where you would be you're gonna come to the VIP if I'm there If I'm there, I got you. I got your logo on the floor. I'm always in the VIP, baby I'm gonna have on a meat coat nigga, you know what you do in the summertime You know, they'd be like he outside too much. That's how I come we got Bubba coming He's gonna be our night time host 23 cups is gonna be our daytime Man, that's dope. How many artists you having this year? We are 32 X That's actually competing for the first three prizes. The top prizes is a thousand dollars cash in a trophy in a package The second prize is 750 cash in a trophy in a package The third prize is usually what other people's have there as their first prize which is 500 So, I mean at the end of the day and this is all day and night Stars at 3 p.m. And it ends at midnight, but the contest goes from 3 to 8 so 8 15 They'll announce the winner of fast bass and then we will bring on the East Texas artist Which is like I say Smitty Hawkins Row Tarantino bigger bag Tim and LD then fast entertainment will take place after that They will do their set and then we will go into the mainstream artist around probably by 9 30 that night shout out to Mogul media you need to get Mama Scott on the gatekeeper list because it's going down Thank you to the five judges that took the responsibility of coming to weather that storm through me The judges would be the Ron Perkins, which is half pint films. He's one of my judges. That's my boy He's been on here. Yeah, everybody's known Shay trendy of new swag TV. Okay, she's gonna be in the building as a judge Britney standing of be or truth. She's one of the ones that's responsible for bringing in all the artists For Tyler now that's dope son of TSF, which is one of sauce walkers main managers Wow, and then aunt Williams of Virginia He's a and are for Def Jam records and also right running management. Wow Yeah, we on boss talk one on one


Yeah, thanks. Over to you, Tejas. Yeah. Thanks, Arun. Hello. My name is Tejas. I work at Grammar, where we mainly narrate data insights as stories. So today, I'll be covering on how to use finite state machines for managing front-end state. But before that, a quick survey, how many of you are familiar with finite state machines?  So those nice-looking flow charts are just not a theoretical, completely theoretical subject. They can actually be useful in the management of front-end state. And to illustrate that, and the problem that we will be solving, I'll start with taking the example. As we go on building a 2D side-scroller game, anyone recognize this game? Not Super Mario. It's Mega Man. We wouldn't be building this, but it'll be very similar from the feature standpoint. So firstly, we start with handling the game player's input. So we have a simple function called handle input. And whenever the button B is pressed, we set the image as jump. So B is to jump the player. And now, if you see the previous one, the player can only jump for one instance. So what's the issue with this piece of small code? The problem is we are not building a flappy board game, so there is no air jumping. So once the input is recognized as the B press, we should put a Boolean flag and ensure that further press of the button B, the player doesn't keep jumping in the air. So if the user keeps on pressing the button B, the player also should still be jumping only once. The rest of the button B presses should be discarded. So we add a simple Boolean flag called ease jumping and set the graphics image as jump image only if the player is not jumping. So we can move on to the next requirement. The next requirement would be to, whenever the user presses the down button, we have to duck the player if the player is on the ground. And on release of the down arrow, the player should stand. So how do we write the code for that? We start with one more refratement and say that if the input is pressed down and the player is not jumping, we set the graphics as duck, which means that if the player is standing, we basically set the graphics as duck image. And on release of the down arrow button, we set the graphics image as stand, resetting the image. And if you think this is correct code, you're basically wrong. There's still a bug in this. Any try guesses? Okay. So when, so if we take the previous, the first feature which is jumping and when we are jumping, if the user releases the arrow down arrow, then while the player is jumping, the image is set to standing in between the jump. So how do we again try to fix this? We add one more flag saying only jump if the player is already not jumping and if the player is not ducking. So, and we can keep doing this if we now wants to add a dive attack, which is a ground pound. We can add one more if condition in on press of the down when jumping, saying that set the graphics as image dive. So that's one more feature addition and that again breaks something. So this time it is when I'm, I can, so if I am doing the diving, so when I'm jumping from the height and if I press the button B again and again, I keep on air jumping. So again, I need to introduce a new flag called east diving and keep on adding more and more flags to the code. And this is the common situation that we all will be in whenever we start with the simple if statements. And we, and remember, we haven't yet even started writing code for a shooting feature. So keeping this aside, how are state charts going to be very much relevant in solving this? Before even understanding what a state chart is, we need to understand what a state machine is. A state machine is basically a data structure or a container that has a set of states. It follows a few rules, which is like a machine can only be in one state at any point of time and a machine takes a sequence of events as input. The way it works is it takes the input sequence of events as input, input plus current state, it will trigger change the state of the application to the next state. So these might be some familiar UML diagrams that you might have studied, which is like start state and state, a transition from one state to the other state. The other important thing in the practical applications is the usage of guards or conditions, because most of the practical applications will require conditional setting of states. Coming to the previous problem, we can actually rewrite the entire if statements code by taking a piece of paper and pen and jotting down the listing on all the states that the player could be in, which is standing, jumping, diving and ducking. And there were few transitions between these states which are limited to this. So what's the difference between this and the previous one? So here there is no air jumping. So if I have to create a feature like air jumping, I would have to add a self transition to the same jumping state on press of the button B, which doesn't exist in this. So this is how we have learned the state charts in academics, but let's try to write the same thing using code. And there are multiple ways to model this in the JavaScript code, but I'll start with something very similar, very familiar to us, which is the switch case statements. And remember the switch case statement is something, I would consider that as an abstract of if statements, because everything I can do in switch case statement, I can write it in basically if else if statements again. But we'll be using switch case statements. So what are state charts now? They are basically the extension of state machines, which gives us powerful features to introduce the concepts like inheritance. We call here it has a hierarchical states and there will be more powerful concepts like handling parallel states and setting up a next state using conditions which are called as guards and activities which are basically the actions that prolong till the end of the state. So these are the important concept when it comes to modeling it in real life applications. But we'll start with something very simple without any of the state charts and which is basically a state machine. So we refactor the entire previous code, the same handle input function, but with a switch case statement. We start with if the player state is standing and the input is B then jump or else if the input is pressed down, then basically duck. So this piece of code is a lot more easy. Now this is the same functionality as the previous one, but what's the real difference between the previous one and the current one? But before doing that, let's try to add one more feature of this, which is like shooting, which we thought of, we didn't do it in the last time code. And see if adding a new feature here, we'll actually break any of the previous code that we have written. So we already have the press B and press down while standing or code written previously. Now we'll add the shooting condition, saying on press of enter, the player should basically shoot. So I just add one more if condition and I'm done. I don't need to worry about did this break in the jumping state or ducking state, what about diving state? This is going to again break something else in the previous code that I have written? No, not at all. But the problems with this code is that shooting is something that gets done in all the states. So I have to keep repeating this same if else else if statement in all the jumping state and ducking state because shooting is something that you could be doing during the entire, any of the actions. So the problem code repetition and how do we reuse the code? This is where the state charts concept come, which is the hierarchical state, something that is repeating across all the states is hints us that we can model it as a hierarchical state. So demystifying state machines code, how is this a big deal than the previous if else statements? And it's basically a switch case statements that we have now and previously we have if else statements. So let's find out the differences. It's basically we have this almost same looking code, but some previously we have the input condition at the beginning of the function. And then we are doing something related to the state. And now we are reversing those statements. The simple difference is previously we are reacting to the events that we have and setting the next state. The current one takes into account the account of the current state and also the input and then sets the next state. What's the missing part is the current state. Great. State machines solve all our problems. So I was more like in this mood, trying to state machine all the code that I have seen or I have written in the past one or two months. And that is when I have realized that I could apply this to a dashboard. So I work at Grammar and we build a lot of dashboards. We end up building a lot of dashboards in the process of getting finding insights and then narrating them as stories. So one such dashboard is this. We have a multi-line chart and there were top filters and again, lot more parallel filters, tabs basically. And then there were few more filters. I mean, basically a lot of filters for exploring the data. So here we have a set of regions which are basically buttons. And every time a button is active, a line in the multi-line chart appears. So this is, this looks like a simple one, but the requirement will be is little tricky because we may end up with deselecting all the buttons in the right side and that will show an empty chart. And why would a user would want to ever see an empty chart? So what we say is whenever we are keep this, whenever we keep deselecting the buttons and we end up hitting the last active button, it shouldn't deselect itself and create an empty chart. It should basically select all the buttons that are there, thereby showing all the multi-lines. And in the same way, when we have all the buttons selected, we need to unclick off a particular button. Instead of deselecting it, it should basically select the only clicked button and the rest of the ones will be unselected. So this more or less looks like this. So I keep selecting all the buttons and, okay, I'm deselecting them and click on any button should only activate that. Yeah. So if I have to write the same thing in pure logic, is again, we can use a statement here. I just went with a switch case. So it'll look almost like this with the first condition saying if all buttons are active, activate the clicked button only or else. If the clicked button is the only active button, which is the last button, and I click on that button instead of deactivating it, activate all the buttons. And in the rest of the cases, just toggle the state of the button. So the first step in actually modeling a problem into a state chart or a state machine is to identify the states. And identifying states is something that we do not do when we write if-else statements. And this thing is actually the major advantage and the disadvantage of state machines. The advantage is that we get to do the upfront thinking, basically do something that we clearly avoid. Now we are introducing a design phase into the programming style. But that also means that we need to spend some time and writing a if-else statement would actually seem very convenient. But let's try to identify the states. There were multiple possibilities in identifying the states. We have almost six buttons here. I'm not considering the previous and planned buttons. So, and each button has a on state and an off state. So that makes it two power six states. And we want to avoid a state where all the buttons are deselected thereby avoiding a empty multi-line chart. So we can actually write this as a two power six minus one, 31 states. And create a finite state machine. Or we could create an abstraction over those 31 states and say that we only have three states. One is one button selected, the other is all buttons selected. The other is more than one button selected. Or the best is modeling the entire state chart as a one single state. So while during the process of identifying states try to optimize to reduce the number of states that will be modeling. So I'll good luck with trying with a 31 state programming switch case statement. I wouldn't be covering that up. I will be mostly covering on the three states which is I start with a starting state as all active buttons on click off that. There's only one state that it can go to which is make it only one button selected. And but when I'm in the one button selected if I click on the active button that is selected it basically goes to all active buttons. Or if I am selecting some other non active buttons I keep actually selecting them and I get to a state of one plus active buttons. And if I from one plus active buttons if I keep selecting more and more buttons I end up with all active buttons. That's a wrong thing. Or if I'm keep dissecting all the buttons I basically end up in a one button. So that's it. That's still a state chart. We are using guards here. How do we model this in the programming? We can use switch case statements. I would like to avoid that and use a better data structure basically a dictionary. And it's a mapping between the action I mean a state and a particular action and what the action should be. So the definition of action is the value. The action name which could be like a click event or a change event or trigger event any event. It could be a custom function custom event that you have created in your own front end JavaScript. So if you have to model the same thing what we do is the state name is all region selected on click of any button. We basically have this function that will define the side effects. Here the side effects is to select only one button which was actually clicked. So even dot target will give us the button that was clicked and we only make that button as active and that's for the buttons will be inactive. So all the side effects go into this. And in the same way we can keep doing the same thing repeated. And how do we actually run the entire state machine? We create a function called interpreter and every time a click event happens this interpreter function gets called and we take the current state into the state variable and dispatch an action which is basically calling the function that was in the value of the event. And transition the state to the new state. So if I'm in the all region selected I get transition to the one region selected and during the transitions if I want to trigger any events such as activating the previous and plan buttons that is where this piece of code will handle. And all of this will give us a time travel logger because I can get to on every input event I can get to see that okay I'm in this state and this is the event and this is the next state that I have gone to. So debugging this is very easy. So this is the one where we have added actually the DOM code that was required for it. But this is something that we have built by ourselves without using any library. And this does, this is a finance state mission because we do not have the hierarchy or concurrent states management system. And the most popular one these days is the X state which has, which is actually, which actually provides all the concurrent states handling or hierarchy activities, all these concepts bundled into the nicely interface library called X state. The documentation is really good and there are a ton of examples out there. The best thing that I have initially liked after writing this piece of code and started to use X state is here I have coupled the event and the behavior of the application which is basically the action tightly coupled. So what X state does is it simply goes in a declarative format and says that okay, list on all your states. So here I have a current state. I can have current state, I mean like state one, state two, state three. And on particular event of, on an event called input, you go to the next state. That's the simplest way to define. Here we haven't actually covered the syntax for the actions. So this is to introduce the library syntax. This is a simple example. What it basically does is it toggles a particular, let's say a button from green color to not green. And the event that we are triggering all the time is the change event. So if the initial state of the button is not green and a change event is triggered on that, it basically moves on to the green state. And from the green state, if a change event is occurred, so it goes on to the not green state, simple enough. And the structure is almost like current state on a particular event goes to the next state. And where do we handle the side effects? So it gives us a separate actions dictionary where we define set green as one action, where it adds a class called green to the particular button that was clicked. And remove green will basically remove the class from that button or the field in this case. So this is the current state which is not green on a particular change event. The target state is green and actions is something that happens during the transition of the states. And it will run the set green function that we have defined here. What this enables us again is to reuse the same action for multiple states. So if on moving from one particular state to the other state, there's a common action that needs to be executed. So this kind of interface will enable us that in a very nice way. So how do we model the previous three states solution to the X state library? In fact, this looks a lot more easier to understand because if I have the initial state as all region selected, which is the default state, and I do any click on any button, it basically sets the next state as the one region selected. And during the same transitioning of the state, this basically will trigger an action called deselect other than the clicked button. So that is one way of, so that's a three state model and that still is actually complicated more than using a particular if statement that we have seen in the beginning. So what's the best way to design this is to actually use a single state. And I have called the state as a default state because that's the only state it's actually will be in. And that is like non-zero selected button state. So I just avoided the long name. And so what happens is there's a simple state, default state, and there are three click even, I mean, and it's a self transitioning state on every click event. It basically transitions to the same state, but during the process, it'll actually evaluate a couple of conditions and execute a few actions. So this is a one to one modeling of our previous if a statement. So the one more reason why we don't model the entire user interfaces as state machines or state charts is modeling the simplest if statements is not very intuitive as much as we have something like if statements, but state charts with a state, it is solved very nicely. We still can do the same things. So all of us know that a state machine will be helpful when we have like 10, 15 states and five, six transitions. That's still a good use case for the state machines. But what if we want to actually model the entire application using a state machine? And it depends upon use case. I'm not recommending to do that. If you really are into building a product or a platform where your target customers or the non-technical audience who has to do drag and drop and design a custom and flexible application. In our case, we want to build a dashboard building application, but not at the cost of losing flexibility. So a domain consultant should be able to do it on their own. And we want if a particular custom feature is not available through the interface, the code generated from the interface should be hand-over to the developer. The developer adds the feature that is not added and gives back the same code. The code should be uploaded to the interface and the interface should still show the updated code and handle it. Most of the solutions out there only does it in the one way where the application user basically builds a graphical user interface. He models it in the GUI and exports the code. But once the code is exported, he can't again upload it back and actually rebuild on top of that. So this is where actually the XState comes because it's completely declarative. The declarative nature of this will enable us to create interfaces. So this is the same code which we are doing it in the single state. So we have couple of conditions and the target is always the default because it's a self-transitioning state. And the action is again the same actions we have actually put it in the actions tab which are defined at the bottom. The guards are the list of conditions that we are evaluating. Okay, so xvis is one of the state charts visualizer. So what it does is it takes the state chart that we have created and creates the, I mean, so if I copy paste my code from here, let me update this, this basically, okay, that doesn't refresh actually. So I can actually copy paste my entire state machine into this and click on the update and that will create the states here. And just basically on click of a particular event here which is a change event, it basically toggles between the not green state and the green state. In the similar way, we can take the entire code that we have here and paste it in the same thing, update. And now we see the default state which is a single only state and the rest of the ones are basically the guards conditions that will actually transition to the same state executing few side effects in between. So what are the pros of state machines? If you, I haven't actually sold the state machines concept as much as the outside front end community does because they actually picked a lot more complex examples. For me, I want to show that even a simple if statement can actually be modeled in state charts and that can actually be equally used for both simpler cases and the complex places. And a state chart is a very great communicator. If you are in an organization where you have to deal with multiple background people and most of them is like non-developer audience then you can actually, it's a common communication medium because it's basically a bunch of flow charts. You can actually communicate to a designer because the designer when designing an application things through flow charts. And what are the cons of this? So this might have looked, this might lead to a lot of lines of code but that was mostly because of the configuration. Even if it is more lines of code each line will probably be a couple of words. And the other important factor is the need for upfront thinking and modeling it. So what next, what can you do from, what are the takeaways from this talk or how can you actually you start using state charts whenever there's a particular use case that you are filling out. Statecharts.github.io introduces this concept of state charts very nicely. So this is one page that actually talks about what is a transition. So it shows the transitions in the particular state chart. In the same way, whenever I click on an action it shows the entry and exit. Okay, on entry transition, on exit transition. The actions are the turn light on, turn light off. There's a self transition. So spectrum.chart, chat is the place where all the state machine enthusiasts actually ask questions and get responses. And this is the link for x state library.


Hi, welcome to the show. Welcome to me having audio and everything. Thanks everyone for stopping by. It's time for John Park's workshop. Here we are. And first of all, want to thank the people for stopping by our chat. We've got YouTube chat and we've got the Discord. And that's the main place for chatting with Adafruit people during shows or even not during shows. Head on over at adafruit.it slash discord and jump into the live broadcast channel. Live broadcast chat channel. We've got, you can see right there today, a whole bunch of other channels too with different interests in mind. So check that out over at our Discord.   That's annoying. And I said we've got the YouTube chat, but I don't have it popped open. So let me do that so I can see it. Hey Gary T, I see it over there on our YouTube chat. I'm just going to pop that out right here right now and now it shall persist. So let's get on with some things. First of all, in non Adafruit news, I was excited to learn this morning from this press release. Wrong one. This one here, yeah. General Mills is coming out with a limited edition of redesigned monster serial boxes which have art done by artist Kaws, K-A-W-S Kaws. And Kaws has the famous sort of panda guy with the bone ears and the X's for eyes. So there's going to be a set of monster serial boxes that have the X's for eyes and a redesigned retro style packaging in honor of which I'm wearing my Boo-Berry shirt today, which is the best monster serial. But I don't know if they have it listed here, maybe not in a photo. Oh, there it is. Fruit Brute is coming out. Fruit Brute hasn't been on the shelves in like a decade, so get ready. I'm assuming this is Halloween stuff. This has been your free, non-sponsored media blast for General Mills monster serials. Very excited about those. Are you excited about those? Also, we have a jobs board. So if you're looking for work to pay for all that good monster serial, or if you need to hire someone to help you get through all the monster serial, then head on over to jobs.aderfruit.com. Here it is. It is entirely free. Head on over there and you can post in our job board. It's free. You can also post if you're looking for work, your resume over in the available for hire section. If I click over there, I think I'm logged in today. You just have to be logged in. There's no cost anything. There's no spamming of anything, but as long as you have a login, you can use this service. All of the job positions are vetted through Lediata and PT, so you know they're good. But here's a sort of sample of people who are looking for work. I've posted up their info and these are very often remote. People want to do contract work and freelance work remotely, or even full time or part-time work remotely. So don't worry too much about where they are and more about what they can do, what they can do for you. So that's at jobs.aderfruit.com. Let's see. What else? I have a show on Tuesdays. Logo looks like that right there. It's JP's product pick of the week. Here's the thumbnail from this week. And what I like to do on the show is a product pick, which is going to be massively discounted during the show. So just throw it in your cart. There's no need for a coupon code. You can get that product for, in this case, half off. We sold through about 100 of these at half off prices. And I'll usually do a demo, sometimes a software demo, a hardware demo, show you how it works, give you some backgrounder on it. And here's a little excerpt from this week's show. It is the motorized slide potentiometer. But you can see the cool thing is we can play around and then let go and get back to our preset position there, thanks to the motorized fader. We can also go to other presets. So if I click my encoder, I can go to a different preset. And another one of these is just four positions that I've pre-programmed. I've set up my rotary encoder as a direct control there. So you can see as I turn the rotary encoder, I'm changing the position of the fader. I'm also using that as a stored position. So now if I hit this four times, it'll come back to this position. I have four saves. So one, two, three, four, back to that new position. It is the motorized slide potentiometer. And that's it indeed. Love to see the projects people are going to do with those.  I think I showed last time I've got this learn guide here that I put out, which is the basics of using these motorized slide potentiometers. I'm going to be adding Arduino code to it as well. And an update on how to use the motor feather wing instead of a H-bridge chip, sort of bare L9110, which is what I used for the original project. I demoed this, I think, on a show until last week. Yeah. I can't remember now, but I may have an update on the update, which is let me go to a down shooter here. So let me put this under here. We'll go on and move forward in a second with another segment, but I just wanted to make sure I let you know that I was successful in getting a Chrome conductive slide cap. Oh, it's not powered on. So that's like I do anything. Let me plug this in. Since this has capacitive touch on it, you can do things like move to a position when you touch it or turn off the motor. It's the most likely use. If I power this up and see this might be, there we go. So you can see I'm now using a set of the bare, pull this off of here, the bare lever stem thing, which in itself is connected to the cap touch pin. This is a chromed plastic fader cap made for this purpose. I think it's a replacement part for Yamaha mixing board, and it works great. You can tell it's letting the motor go as soon as I touch it. So we're trying to source those. Lady Aida was looking around to see if she could find those. We are also, don't ask, don't tell, but we're probably going to be getting some sort of regular rubber fader caps that fit this type of potentiometer, and I will make some attempts at using some copper tape to wrap inside and around it to see if that'll work well as an alternative. So as long as it's capacitive touch, it'll work. I was not able to get it to work with a very, very, very low threshold through another material, but I'll give it another shot with the plastic or rubber caps that we get. So that's the update on that. It is made of plastic. Yeah, it's a conductive chrome plate. A lot of chrome paint, that was questioned by the way from Todd in the chat there, a lot of chrome paint does not conduct. I tried it with some really good chrome paint, pen paint, super shiny reflective stuff. It was not at all conductive, but this, however they're doing this process is. So we'll see if we can come up with a source for those. Let's actually, before we go any further, dive ourselves right into this week's Circuit Python Parsec. All right, let me do a little setup here and grab my window. So what I wanted to show today for the Circuit Python, let me say that again. What I want to show today for the Circuit Python Parsec is how to use a new line when printing to serial instead of the default carriage return. No, wait, do I have that backwards? Yeah, starting again. For the Circuit Python Parsec today, I wanted to show you how to use a carriage return instead of a new line when you are printing to the serial output. So here's an example of a free floating analog pin that I'm reading. You can see here as I touch it, I see numbers go by and I have a neat little print statement going that gives me sort of a graph of the values that I'm getting as I touch this analog pin here, sort of grounding it. But that's hard to read because we have these characters flying up the screen. And the reason for this is that the default in the print is to end with a new line, which means it goes to the beginning and adds a new line for every print statement. If we change this instead to a carriage return or return, what happens is it goes to the beginning after each print statement, but it does not add a return. It does not add a new line return. Instead is just this carriage return. And so you can see here the way to do this is if I take a normal print statement and add to the end of it this here comma end equals and then in quotes backslash r and that's the return or carriage return. The default, if I don't have that in there at all, or if I change that to n, looks like this. And so we get this sort of string of characters flying by or a string of lines flying by. This instead is a lot more helpful for measuring values and seeing them without getting endless scrolling of your text. The other tip that's going on in here, a little bonus one, is I want a bunch of these dashes at the beginning and you can actually multiply text by a number. So I have a number of dashes multiplied by whatever the value is and my value right now is I think going from 0 to 128 or something like that, 0 to 64. So when I am up here at a high number, I get a whole bunch of these dashes in there without having to type them. So you can do some math on your strings, which is pretty cool. But this is the key thing here is this end equals backslash r. And so that is how you can use a return instead of a new line when you're printing to serial output inside of Circuit Python. And that's your Circuit Python parsec. And yes, I actually, thank you, yes, I'm Dexter, so they like the blueberry shirt, blueberry forever. See Grover had suggested maybe drill a tiny hole in a fader cap and use some metallic epoxy, also an interesting idea. Hey, Rich, sad, nice to see you. By the way, you may, this may look familiar, this little tip that I did today with the Circuit Python parsec because I had a similar setup going, let me unplug this and I'll re-plug in my fader here. I put that on camera. Let's see if it connects to this one. I think I got to reconnect because it has a different name. Yeah, that's right. So let me disco tool. It's the feather. Okay, yeah, it was a different disco tool dash and there we go. So here you can see this is actually kind of the more typical behavior. That's just because I have a narrow window. So I'm getting sort of automatic looping around. If I widen this up, there you can see that's the behavior we're looking for. It just makes it a lot easier to see what's going on. It doesn't give you a history like an endless scroll does, but in a lot of cases, this is really snazzy, really helpful. And big thanks to Todd Kurt for both the multiplying your text, in this case the dashes. That tip as well as the new line versus carriage return tip. Really useful. So thanks for the good stuff. All right, so let's see. That covers updates on the fader. It comes from Circuit Python Parsec. So I want to start getting into this coffee scale project. So let's back up a step. Let me see. Do I have a little prop here? So this all starts with these two things. So one, we've got these load cells and these are a piece of aluminum bar that's been carefully drilled and calibrated with this arrangement of resistors, this sort of S-shaped arrangement of resistors called a Wheatstone bridge that can measure the flex of this metal bar really precisely as an analog read on an amplifier chip, an ADAC chip rather that can deal with the very, very, very low values coming off of this, make it useful. So this is our, what is it, the NAU 7802 is the chip we're using. Cedar Grove, our good friend over in the chat there, created a feather wing with this chip on it that I believe reads two of these at a time. And then Lady Aida had been working a long time ago and then we had parts issues. We're working on doing a standalone single channel with Stem-A-Q-T. So I'm using this but I'm also going to be building a version using this feather wing that Cedar Grove made to read this sensor, which is what's inside of a scale. Most scales use this type of an arrangement. The neat thing about it is that with the library and code that Cedar Grove has made for us, we can make really nice scale displays. We can tear to remove weight from a vessel that you're putting on that you're going to pour something into, in my case coffee. Add some nice graphics, do a bunch of things that will run on the clue on I think a TFT feather wing, on a pipe portal, maybe a couple other platforms. So it's great time to be making scales. The challenge I had really, because all the heavy lifting was the stuff that Cedar Grove maker had built, real challenge is mounting this in a way that's useful for your use. So key thing is these can't be resting on something because we need one side of it to flex. The other side needs to be really stable, locked down. So they put these threads for an M5 screw on the sort of stationary end and they put M4 screw threads on the flexing end and then it's up to you to figure out how you're mounting that to your enclosure, how you're mounting something like a tray that you're going to set your weight down on top of to this side. So I wanted to show kind of my process for coming up with this espresso scale. I also want to talk about why. What are we doing this for? So when you're making espresso in particular, you can really get a lot of change in how things taste with some very, very minute changes in the fineness of your grind, the amount of coffee that you put into the portafilter, which is this thing, the basket that goes into the machine, gets chucked in there like that and then a lot of hot, high-pressure water goes through. Tamping that evenly, having an even grind, all of these things change the extraction because we're doing an extraction of a whole bunch of these solids out of the coffee with the water that's coming through. If you can reduce the number of variables you're dealing with, you can focus on the ones that really matter, such as changing your grinder settings. So what I want to do is pour a consistent amount of coffee in a consistent amount of time, and that allows me to focus on just adjusting the grind. There are other variables you could deal with and lock others down, but weighing your coffee is a really great way to do this, and you'll see a lot of high-end coffee people in baristas using little scales that they'll set underneath the machine as they're going, and then they can take that off and proceed. So I wanted to build something like that, but it kind of make it a little bit more permanent. And so what I'll do first is let me show you a little video of part of this process and action that I took a shot earlier. You can tell by the blueberry shirt reflected in my espresso machine. So check this out. This is about 27 second pour, which is usually what I'm going for, for my double basket. I just wanted to, sorry, thanks for, I just wanted to minimize that video there for a second so you could see it. It's hard to see it at this scale, but what I'm watching there is on the little clue there, on the display there's a little gauge moving up and down that shows at the bottom both grams and ounces of weight that it's that it's reading. So if you watch that you'll see that number going up. Right. So one thing I'll mention is that I don't have a lot going on with sort of splash proofing yet. And so there's some electronics sitting a little worryingly near some water, but not too close. The ADC and the clue, and I'm using batteries so it's not plugged into the wall, which is a bit safer. Those are a little bit removed and then everything else is just the load cell, which you could protect. It's fairly, it's got silicone over the wiring and the rest of it's all aluminum. So let me show you, someone found Lars, a little Lars alert. Let me show you over here what this is looking like and what my process has been for putting this together. Throw a bench or a main view. There you go. Let me scale that down. All right. So what you may have seen when I first posted this or first started showing some demos of this was one of these helping hands. This was actually a really nice base for this. We actually sell these in the store. It comes with some magnetic PCB holders, as well as these two helping hands. And I was able to just use this slot here and some M5 screws with washers to mount the load cell here. So let me take off these for a second. This was a really expedient way to get a prototype working and a little more stable than me just kind of holding things in my hand there. And so I'd recommend if you can get some trays or boxes of M4, M5, M2, M2.5, M3 screws in a few different lengths, you can tackle a lot of these projects. Ideally, they're all metric, not always. And so here are some M5 screws for you there. So I was able to put those up through there, put a nut or a washer over top of that just to actually know I didn't need to yet just to get a little bit of space so that the other side is elevated up. So you can see, I just put a nut right there that you can see. So that's going to give me some space so that when this side flexes, once this is screwed in tightly, it's not bumping into anything. So I will just attach one side of this just showed off quickly. Oh, that nut got caught in there. Let me try that again. Yeah, I wish I had an actual washer, which is going to work a lot better. Okay, I'll, for this sake of this demonstration, we'll pretend there's a washer there. By the way, one thing that bit me recently is these have a little arrow on one end that tells you the sort of size of the load cell is a one K, one kilogram and a down arrow. So it's saying flex it that way. So that means the other side here where the wiring is coming out, at least on these ones, this is what you'll mount and you'll want your weight pushing down on the direction of that arrow. That's the ideal. I think it'll it'll still measure it in the other direction, but you might have to screw with your wiring to get that right. So it's basically like that, except with with a little spacer in there. And then you've got these M four side to connect something that you can set your weight on.  So that was that was kind of the version that I was using during my development of this. And this will work pretty well, you could could refine this and then just have a little gizmo to put on the espresso machine set under there. Now we're great. That's a lot more like a traditional scale. However, I wanted to instead make this sort of integrated with my machine. So as you may have seen from the image there, there's a large drip tray, this right here. And unfortunately, I can't bring my machine, it's plumbed in to my water and water filtration and wastewater and all that. So it's big pain, big heavy thing. I don't want to unscrew things and move it into here. If I don't have to. So this is the drip tray. And it means any water drips through comes and exits through a little hose to the wastewater. And this is this little mesh that sits on top of the tray. And that's normally what you set your cup down on top of under the spout and your portafilter and brew head and all that are right above it. So after at first, just setting a thing in here like this, that worked pretty well, but it also did elevate the height of my cup at to a point where I couldn't even fit. I don't have one of those here, but I couldn't fit a spouted portafilter. So some of these will have a spout coming off of them or a double spout coming off of them. And as you start eating up space above here, it gets a little crowded in there. So I want to go as low profile as I could. And you can see here, in the end, I'm really just adding this inch or so of space. And you can see I've got this kind of floating scale that is mounted to this steel grid. This is this is strong enough that it's not flexing, which is great. We don't want the whole thing to flex on us, or we won't be able to to measure the weight very well. And so I've mounted a mounting point to it, the load cell, and then to the load cell, this little floating piece of aluminum, on top of which I can put a little, here's a nice little ate a fruit coaster, right set that down there could maybe use some if we wanted to some magnets or double stick take or something like that. So this stays on there. But that works well, gives us a large enough surface area to not have to be so precise. And it's all easy to wash, easy to care for. So then over here, this is at least temporarily, I might do the guide based on this setup, I have the clue with our little acrylic case for the clue. And that makes it a little more splash proof, it's not waterproof. But it also gives me something to affix things to, if I want to use like double stick tape and attach it to some other type of mounting point, I'm just using a nylon screw here, which is working well.  And then finally, I've got battery power using three triple A's and I stuck the lid of the case, just using a little of that you glue sort of double stick goo tape squares. And that means I can slide the battery pack into here. So it'll come off for changing, but I also have an on off switch there so I can turn this on boot up here. Unfortunately, at the angles, I have things you won't be able to see me actually weigh something too well, I just realized. But maybe we can, we can fake that. And so here it's booted up now I am using actually sort of by accident using a 10 K load cell on here. So it's a little bit noisy, you'll see this value fluctuating a little bit, I can hit the tear button, kind of get it back to zero. But this is a bit of a noisy value here because of that load cell being 10 K. And we're trying to read at this very amplified level. So one K is more stable than that one. But you can see sort of see here, fake the angles a bit if I set my cup on here. Yeah, that'll work I guess 264 grams or 9.3 ounces. So I'll go ahead and click that button that zeros it out or tears it. So now it's essentially at zero. And zoom in a bit. So you can see down there in the bottom corner, says coffee. And the way I'm leaning this here means we're not really getting accurate readings. But I don't have a good way to actually you know what, let me just take the I'll pull this off. Let's do that. I'm gonna unscrew the the clue from here. And then we can look at the values that we're getting. So this is just a nylon is actually the nylon screw that comes with this case, this clue case here. So set that there like that there and I can see it refocus. Okay, so zero that. And then you can see here, simulate pouring the espresso in there, the scale goes up and up and up and up. And you can stop wherever you need to. You have to anticipate that a little bit with the espresso machine, just because you get some extra coming out after you pull it. So there's some finesse to getting that but it's a scale. It's really well integrated, I think into the machine itself. Now, I may use a little Otter box or who knows what to seal this up better. Another suggestion actually that Jan had see to Grove maker was to use one of these little sort of security camera tripods. It's a mountable one. And mount that somewhere and use a little thread mount. We have some nice thread mounts for the Raspberry Pi cameras. I might be a good basis for that. If you're doing stuff with a circuit playground express circuit playground blue fruit, the little case that we have for that also has a thread mount for a tripod. So you can screw that into there. So that's another another idea for getting that kind of accessible but off to the side a little bit. But this is this is working pretty well so far. I just used it a couple times yesterday and today to make my espresso and it's been delicious. Sorry, I can't share that with you. The some of the details on the mounting stuff that I've got going on here. Let me unplug a couple things from here. And I'll pull this back out back here. This is all I think almost all of this is available actually in native fruit store because this is some of our 2020 aluminum plate that you use with this T slot aluminum. So we have in the CNC section of store this this T slot aluminum and similar to 80 20. If you've ever used that stuff. And we have accessories for that such as these little triple couplers. And that's what I have right here. And we also have some larger adapter plates, which is what this one is this also one shaped like this. So depending your needs, you can you can use this stuff. It's I think this might be a m six hole roughly and so you can you can fit the m five and m four through this nicely. See there there's the m five so that would that would go on to that site even if you're just making kind of a cover for this or something so long as you add a little spacing so that it can still flex that would work well. So that's all those two pieces are and then it's a matter of this thing only would accept the m three screws so I have a just some nuts at the base here and some washers on the other side to to give that lift that up a little bit give us clearance again this side can stay and needs to stay stable the side needs to float. See you'll see there I've got the gap there and it's a tiny bit I mean the flex is really minor that that is caused by pouring some coffee into there. Let's see. Let me swap camera views over here. Swap back over to this camera see if anyone's got any thoughts questions. And the Todd says he measures his coffee consumption and pints alright I get it. The other thought I have is with the feather wing that Seagrove made which allows you to use two cells. I could do both like grounds weigh the grounds and one way that people will work is they'll grind up their beans and then they'll have their dispenser dispense based on weight and these just usually specialized machines. So you put the port of filter in and then it dispenses you know 18 grams of grounds into there whatever the amount you want to start with and you can go through your whole preparation process. I tend to weigh the beans or measure the beans throw those in and just grind one at a time because I'm not doing large scale production. But there you have it that's that's the project. The guide is Janice been working on the guide. It's looking great has code has libraries has the graphics you need to do the backgrounds and the scale elements. I'm shooting photos now of the the process on my machine. So once we combine those things together we'll have a really good guide I think for you to check out and can be a launching off point for any kind of scale based projects. All right well I think that's it. Let's see have I forgotten anything I think I think that's all I had today. Thanks everyone for stopping by thank you for the people in the chats both in our discord and over in the YouTube chat and believe we've got a foamy guy deep dive coming up live stream tomorrow. Scott did a guest guest spot last week. And then we'll start up with our regular shows next week. Oh here's a nice view by the way of my portal version Jan scale there and that's the one that I was talking about the idea of having both your beans and your coffee from two different load cells by the way really nice feature of the code is with one line of uncommenting you can go through a calibration process using a known weight and calibrate the cell just one time thing throw some numbers into the main body of the code. Recomment that calibration line and you can you can trust your your scale from that point. All right well that's going to do it. Thank you everyone for stopping by for a different industries this has been John Park's workshop I'm done Park.


Good morning, everyone. It's great to see all of you here. We have got some very exciting speakers today. And I'm Mark Collier with the OpenStack Foundation. And I am really excited about today's speakers, because yesterday, we heard from some of these titans of industry, Comcast, Best Buy, and Bloomberg. And people started to realize that OpenStack actually is mainstream now. We have mainstream users. And that's very exciting. It's a moment I think people have been wondering and waiting for for a while.  But personally, I am still very excited by some of the interesting stuff going on outside of the mainstream. Some trailblazers out there that are doing some really interesting things with OpenStack that are not about building businesses. They're about solving really huge, massive problems. And some of the smartest people in the world are working on. And the fact that OpenStack plays a part in that is just super exciting to me. It's not all about making money. There are people, one of whom we're going to hear from in just a moment, who is actually trying to unlock the secrets of the universe using OpenStack. That's a pretty big goal. I personally hope that Randy can be the one that helps us figure out how to build a warp drive and get us out of the solar system. But you know, I got all my physics from Star Trek the next generation, so I'm not sure if that's actually what he's working on, but I'd like to find out. So let's make sure we ask him that. And another speaker that I am very excited to hear from, who is unlocking all kinds of other secrets. Perhaps even some of y'all's, I don't know. But I did put this disclaimer on here so that we don't all end up on a watch list. But if we do, we're all in this together, right? And so if you get, you know, this was, OK. I don't know what this is, but it's definitely not a data center. But we're going to be hearing from Nate from the NSA. And today's speakers, as I said, are far from the mainstream. And that's just fine by me. I think some of the greatest thinkers who've made the biggest breakthroughs in history were a little different to a different drummer, very, very smart people. And we have an actual spy, I think, who's trying to track all the things. And of course, an actual scientist who's trying to figure out the meaning of life in the universe and thoughts that are so big I can't even imagine. So we're going to be hearing from Nathaniel Burton, who, if that's his real name, I'm assuming it's legit. But I am excited to welcome him up because he has a lot of courage. You don't hear a lot of people from the NSA coming forward and talking about what they're doing. But this is not a big surprise because I knew that Nate had a lot of courage when he actually built a open-stack cloud on cactus. So that was a big moment. So he'll tell you a lot more about that. But before we hear from Nate from the National Security Agency, we're going to hear from Randy Sobee, who's doing some really interesting cutting-edge research. Hopefully by the end of his presentation we'll have a warp drive that's working, I don't know. But we'll see what happens. So with that, I'd like to welcome up Randy.


Welcome back to the 21 convention 2019 of Warsaw, Poland. Our next speaker is known on YouTube as a Spartan life coach, huge channel with over 100,000 subscribers. I've called him previously and now, YouTube's number one bad boy of psychology. But above and beyond that, he's helped me personally heal from a very traumatic and toxic relationship. This is a man who's not only helped my life and improved it and impacted it, he's probably saved it several times. Without further ado, please let me welcome for his first time to the 21 convention stage Richard Granin. Well done, thank you very much, thank you. Gentlemen, it's my first time speaking here and it's my first time speaking within the mannosphere. I did not know what to expect. I have received a warm welcome and for that I'm grateful. Other than that, I have noticed in this group here, the IQ standard is a little bit higher than I'm used to dealing with. I can randomly stop any of you and find myself in a conversation about politics, economics, linguistic science and I'm like, okay, I better keep up with these fuckers. So I've changed this speech over the last two days and I've been like, we can dial it up a few notches here. You guys have a problem. It's not a problem that I'm familiar with, but resolving problems is what I do. I work in the field of psychology and I help people to resolve problems and I also am growing as a human being and in my role as a life coach as time goes by. Predominantly I focus on trauma. Yes, it's usually relationship trauma, but resolving trauma is what I do. At this stage in my progression, I have found one of the best ways of resolving trauma is through philosophy. Psychology was always a branch of philosophy. You go to the oldest universities and you'll find the psychology department is a subset of the philosophy department. In my humble opinion, psychology should seek to be scientific, which should never seek to be a science. In fact, it can't. It always fails and makes itself look ridiculous whenever it tries. The solution is philosophy to trauma because when people are traumatized and something bad happens in their lives, they have to rebuild their map of reality and recreate a new narrative that allows that to enter that space. The problems that you guys face and are here to deal with, I think are trauma-rooted, are about a narrative that has become corrupted. The problem is a philosophical and ideological one, and the solution is a philosophical one, which is good news to say to a group of men who like being philosophical, and we don't need to pull away from that.  There is a war on against men. It's couched as a war on masculinity. It isn't. Masculinity is neither here nor there. That's a red herring. Mr. Jack Donovan said yesterday that most of the attacks leveraged against men by the feminists are actually, he suggested they were a red herring, and he said it's usually reverse psychology. I'm going to, in the first section of this, try and put forward a hypothesis that yes, it is reverse psychology that they're using, but it's also pure projection. The notion of toxic masculinity is not owned by men.  They are the ones who have become toxically masculine, not us. We have become, unfortunately, we're not off the hook, fragile in our masculinity. They've become toxic in their masculinity. We have become fragile in our masculinity. I'm going to put forward the idea that this is both an actual overt conscious conspiracy.  And I think this is just the way life has gone. I want to offer you a reframe. This is what I do when I'm working with people in psychology and we're working through trauma. I want to give you new ways of thinking. I don't just want to give you new thoughts to think. I want to give you new strategies, new weapons to thinking about this. I want to talk to you about something that most people think they understand, but that is not very well understood at all. It's the principle of yin and yang.  I want to talk about this a little bit because it lacks cultural loading. A lot of our ideas of masculinity and femininity are culture bound. This is not because even for Chinese people, this would not be a natural part of modern day Chinese culture. It's ancient and it's foreign. Great. It's safe. It's also a very useful model. Yin is receiving. Yin is holding. Yin is nurturing. Yin, yin is dark. The darkness of a cave, the darkness of a house, the darkness of your bed. We love yin. We're always trying to get back to yin. We're always trying to get back into that space. That's why we have the concept of a man cave, who amongst you does not enjoy going to bed. That is entering yin. When you go into your bed, you're entering yin.  Yang is light. It is that which is. Yin is that which is not yet. It is not. It's often talked about as being chaos. This is a difficult question. This is a difficult concept in Chinese and Japanese philosophy. It's more the realm of pure potentiality. Women are an empty space, but it's not empty. It's a pregnant space. Pregnant with possibility of what might be. Yang is what is. Yang is what has already occurred. Yang is penetration. Yin is receiving. Everybody likes MMA. Everybody likes boxing.  That is yang. He didn't see it coming. He got smacked in the face. He received it. That's yin. If he dodges it, his martial strategy is now yin. If he docks under it and does a double leg takedown on me, he has now reversed into his yang. He is penetrating my space. Oops. What will my solution to that be? What did Brazilian jiu jitsu givers? A yin strategy. I lie on my back and I open my legs. Ooh. It's not very masculine. However, once he's inside of guard from there, you know the drill. Arm locks, triangle chokes, whatever it is. That's yin and yang manifested. Don't get caught on the idea of women and men. It's yin and yang. All of your organs have yin and yang in them. If you have too much yin or yang in an organ, you'll die. You have yin and yang when you walk. If it's all yang, then what happens is like what has happened with me is a knee injury. If there's too much muscular tension, then it creates injuries. If there's too much yin, I won't be able to walk because I'll just be flopping everywhere. I dance. I recommend all of you learn. I'm not gonna do the how to get goals stuff, but there's two pieces of advice I would give you. Learning to fight and learning to dance both seem to help for reasons that we'll explain somewhere else. My particular thing is bachata. Jack Donovan also mentioned that masculinity is the perimeter. This is exactly Chinese philosophy. Exactly. It is the perimeter. It is a wall or a tower. Who's obsessed with walls and towers? Anthony's favorite man. Walls and towers are masculinity. The home, a house, a cave, a place that you would bring somebody where they're protected, that would be yin. A wall is a boundary. A tower is a means of threat. When we're in this space and we're talking about the perimeter, I do, it's bachata is a Dominican style. It's kind of like salsa, but it's a little bit closer. It's a bit more sensual. It's a bit slower. My stance for bachata is here. I take the woman around the back and I hold her here. I am yang. I am structure. If I'm good, my form is upright. She dances within my form and my structure. I lead her. When my arm is around her back, this is the perimeter. Because on a busy dance floor, I'm to protect her.  So this, if it's good and the energy is strong, is yang. I must be yang in order to lead. This is all I'm talking about. Very, very simple stuff. It gets a little bit more complex and this is where it gets relevant to the issues that you guys are facing at the moment. In yin and yang, we have two polarities. My position would be polarity is good. My position would also be polarity is essential. As is integration. We think of the yin yang symbol and we think of something that is static. That's only because in ancient China, they didn't have gifts. I spoke to a doctor of Chinese philosophy about this two months ago, just a double check.  The yin yang symbol rolls. When you see it, sometimes you'll see it drawn with arrows around it. Think of it rolling. It's always rolling. It moves. It moves. It's not static. Static is death. It has polarity, but it's integrated. No yang without yin and no yin without yang. Even your genitals are formed that way. There is yin, it's your p-hole, in the yang. There is yang in the yin. That's the clitoris, allegedly. I read about it on the internet. Anyone of you want to help me with that, just let me know. It's a totally neutral concept but it's necessary at all times to appreciate that there must be yin in yang and there must be some yang in the yin and it needs to integrate. The stage right now is we're trying to kill polarity. We're trying to have everybody meet in the middle. This is doom. Endowism and Confucianism, this was predicted. It is doom. We are doomed.  We're losing integration. We're both separating, so we're refusing to come together. We're separating and we're denying parts of ourselves. Where did this come from? In my humble opinion, this forced, Stalinist, propagandised, brainwashing horseshit of making everything meet in the middle and be androgynous, why would I try and spell a hard word in public? I should have just written am. Androgynous, is that right? Did I spell it right? You can tell me it's not right. I'm not. You're dyslexic. What's happened is both a conscious effort and a byproduct of a fallacy in the human software. We like things. We like beads. We like stuff. We like shiny objects. Somewhere along the line, we can track it historically, began in the 1920s. Edward Bayonets became the godfather of public relations. He's the nephew of Sigmund Freud. He took his uncle's insights into human nature and used them to exploit people to control them, to get them to buy stuff that they didn't need, but that they wanted. That was what he was told to do. Said, Edward, we need more money in the system. We need to reap more taxes. These people are buying what they need in America. It was born in America. We need them to buy what they want. How are you gonna do that? And so, public relations, advertising and marketing was born. We live in a consumerist society. I'm not gonna get into this whole political thing about capitalism, anti-capitalism. Most people, when they're ranting about capitalism and the effects of capitalism, they mean consumerism. They mean cronyism. They mean corporatism. This is not capitalism. This is corporatism. And it is materialism. The problem with this is you've been encouraged, we've been encouraged deliberately to think of ourselves as individual brands. That's what makes you buy the trainers you bought. What does this say about me? These trainers, what do they say? What does this suit say about me? Is this a cool suit? I don't know. What's it telling you about me? It makes me individualistic. It makes me competitive. When you have a whole bunch of people who are individualistic, materialistic and competitive, you no longer have tribes. You no longer have tribes. Without our tribe, we're fucked.  We're not evolved for that. That's not the animal we are. We evolved for millennia, working together in groups under very harsh conditions in low resource environments. Piero touched on this. It's a big problem. People come to me and say, why is everybody so anxious and depressed? I'm like, we'll go outside and look. It's clear why everybody's anxious and depressed. So I think what we actually have right now is a state where we've been forced into yin as consumers.  You are to take what is given to you. You don't choose. You don't have what this gentleman keeps mentioning, agency. Agency is taken away from you. Sovereignty is ripped away from you and you now have an external locus of control, as they would say in psychology. An externalized locus of control is daddy or mommy gives it to me. I don't do it for myself. That would make you passive and too yin and a bit of a whim, but it wouldn't be toxic. Where it becomes toxic is in the competition, is in the individualism. It becomes toxic because...