Hello, everybody. Just for me to adapt a bit what I say to is attending the talk, how many of you do, or you can say, you do a fast-pro development in your day-to-day work? OK. Not that many. The rest is probably in research, hopefully. And how many of you have you been using Younger's framework before? OK, perfect. Then a bit about me and how I am not using this stack. I started programming some 15 years ago, building web platforms with basso scripts and CGI. Luckily, around 2009, I entered a startup call, F24, where they were using the Python stack. It was mostly soap at the time. And Younger started their life around that time. And I've been involved in a couple of startups mostly from that time. And in many cases, I've been using the Django stack. I say the Django stack because Python has many flavors. And mostly, for me, Django performed well in the past. The only exception, I think, I've been having is when I was doing Valve Fleet and tried out the Google App Engine type of approach. Now, what is OnTrack doing?  We just need to follow the small code examples. We will be discussing afterwards. So OnTrack is a bit-to-be marketplace. We just basically match pallets or industrial freight with available track drivers. Normally, track drivers have either two, three tracks or a very small company. It's hard for them to find jobs. For the customer, it's hard to find the available track driver. They need to call many people. They use email. They use fax. It's a back and forth. And we just simplify that the standard marketplace ways. What do we mean by fast product development? Usually, when you are building a startup, and this might be completely different if you are in research or if you are in a large company. But when you are in a startup, you normally tend to be in one of two phases. Either you are looking for product market fit, and then you need to iterate very fast. And really, nothing matters except finding product market fit. Because no matter how good your product is, no matter how automated everything is, no matter how well you dockerize everything, 100% test coverage, really night code astroptions, if you don't find product market fit, it will all end up in the bin. Now, one day you are lucky. And if you are lucky, and something makes click. And then it's the day when you start scaling and you start regretting all the choices you did to get there. In our case, this is a bit the revenue growth from on track. So this is six months trying to figure out what the hell we are doing in this logistics market that we have no clue about. And then six months saying, OK, maybe we got lucky. Maybe we figure something out. Now, how do we grow very, very fast? Luckily, we were, from the beginning, using Python, using Django, using Django Res Framework, which is a stack that I value a lot for this type of problem because it lets you perform well in both stages. You can go very fast in the prototype phase. And I will show afterwards a couple of examples of how extreme we want to get even a bit faster to put our product out there even a couple of weeks earlier. And once you get to the point where you satisfactorily figure something out about your market, the tools are there for you to scale. And it's not only scaling from the technology perspective. It's also scaling from the team size perspective. Now, current team, there are seven people who touch the backend. Only three people had previous Python experience. So it's very important for a stack. And this is something I really love about the Python world that you can easily jump in, coming from other languages, coming from other frameworks. Things that I really like about that stack is that it's very well documented. You have an awesome community behind it. It's very easy to read the code that your colleges wrote before you arrive. And especially, it's very opinionated. And I give statement here that I think many people will not agree, especially everybody who is very expert on something. And I have seen very many good Python programmers saying, like, wow, yeah, but Django, you know, there is a point that is really, really complicated. It's really messy. It makes too many opinions. I prefer to go with my flask thing. I put a couple of libraries. I know them by heart. And I have so much more freedom. And this works very well when it's you or two, three other very experienced people with that particular stack. When you need to quickly onboard, never underestimate the amount of time you will lose in discussing and re-discussing everything. If your friend has a couple of opinions, even if you end up in 80% of the quality of the possibilities you could get to, the fact that you do that three times faster, because you save a ton of research or a ton of discussions, it's something that actually comes to be an advantage. And you will have time later on to go for very specialized solutions on things that you can discuss a bit further. So what did we do or which lessons we learned in iterating fast? Lesson number one is regret nothing.  The founder of LinkedIn used to say, if you are not the same of your product when you launch it, you launch it too late. And this is something that I agree in this particular environment. Like I said, it might not apply to other contexts, but it definitely applies when you are trying to build a startup very fast. This is the architecture principle that we tried to follow. We didn't use Django, and this is something that for me has been a lesson from past companies. If you use Django, the MVC approach to the max, you will very quickly be having too many points of entry into your backend, and it will get missing. So one thing we did was to focus on being API first and just allow for API entry to the backend, and then delegate the frontend, delegate the presentation layers to the more appropriate tools. Also that gives an advantage because the JavaScript wall is not stable, unfortunately, not like Python or Django, so it will change. For us, it was React now. We actually started with Angular, and it cost us a couple of weeks to move to React. It will hopefully cost us not so much time when the new JavaScript framework comes out, probably in autumn or whatever. A bonus point for having API first is one day your CEO decides they got a customer and the customer doesn't want to enter your beautiful website. They want that you integrate with the SAP system they have where they spend tens of millions for having it, and he doesn't want to train his people, no? And fortunately, and this is something that Django Res Framework gives you almost for free, is that you can have professional API ready for that situation. If you are not using Django admin, which is one of the main advantages of Django, how can you get an admin page when you have zero orders? Like how can you invest the least amount of money on it? Well, fortunately, Django Res Framework lets you manipulate your data. And this is intended not as an admin page, of course. It's a disaster for that. But it's very cheap because nothing. And this has two advantages. One is zero time until you have an admin interface because that's the API explorer. And another thing is you align the vocabulary with the people operating the system because they really know and understand how is the system behind because they actually need to use the same fields. This doesn't scale, of course, and it's a disaster past a couple of weeks, but you can launch two, three weeks earlier. If you need real-time notifications, also, there are many ways that are faster and better than web sockets. In our case, we quickly integrated with Slack so people would know, okay, something arrived at the system. As soon as we put there a link to the API wrapper and they could very quickly operate with almost zero time invested in our case. So we had more time to try to figure out what our customers want instead of developing internal back-office applications. Now, to do some code, this is another, this is a problem that you normally have when you have a very clever UX product guys that they can say the basic out system is very boring and we don't know how our customers want to use it. You might sell your application to one guy and then there might be another operator using it or they might sell the login details and how are you gonna map all this hierarchy of the people using your system. So one shortcut that we took was to say, okay, let's just figure out the login way where we just give people unique URLs. Again, this doesn't scale very well. There might be some privacy concerns there but it saves you a couple of weeks and it lets you understand how your customer interacts with your application and then by way of dialogue, you would discuss with him how she's sharing login details with her colleges and so on. This saves a lot of time for them in putting the password in a post-it and sharing it around in their office. Another shortcut that we found useful when modeling our system was to start modeling complicated things with the JSON fields in Postgres. So we were having this problem. We had shipments and then our business guy said, we need to add some extras. Okay, so what's an extra? So for instance, if the thing needs to be picked up after 10 p.m., then we should charge a bit more money.  Okay, 10% on top, fantastic. And then if the track stays for a long time, then we need to charge more money. It's like, okay, how much more money? Well, it should be a fixed amount that we would decide later. Okay, who decides that and when. Oh, this is the admin guy, okay, fantastic. And then you go like, yeah, and we need another extra. Like what? Yeah, some tracks need lift gate.  Yes, this thing you put behind a track that lets you put easier the pallets up if you don't have like a specific machine to do that. Okay, fantastic, what's the price for that? Is this a percentage or is this an absolute number? Yeah, it's a bit more complicated because it affects the number of vehicle. If you have many pallets, it should be included in the price, but otherwise, it depends on this, like okay, fantastic, how the hell do we model that? And then you go to the engineering team and they are like, are these all the number of extras or will they add more? Like, if I know how this works, they will add more. So we started with the simple hack, which is we use PostgreSQL JSON. We don't need to model a lot and we take advantage of Django res framework serializers. So we just connect it directly, taking it out of complex loges and potential migration problems. Another problem we were facing very early with our modeling was that the permissions and the access control layer were not as easy as we figured out. So usually, and we were using don't repeat yourself framework, you discuss something like, okay, I want the user to access some models and from those models, I want the user to access some objects. That's kind of easy, it's easy to map. We had a bit more intense problems where people said, yeah, but some users should not see some attributes of the objects, even if they can access the object. They're like, awesome. And then in some cases, you should also not be able to see any kind of attribute. For instance, a truck driver should not see some attributes related with pricing in a specific shipment. So we were messing around a lot and we had some solutions. I'm not pretty happy with it and if you have some experience on the topic, it would be really nice to discuss afterwards other approaches. So we ended up using don't repeat yourself for advanced permissions on the models. Then we used the filters of Django Res Frameworks to add an extra level of permissions or control. And then we ended up in some cases with dedicated endpoints, a specific serializer. We have this kind of pattern of multiple serializers over one model that we were also seeing the other day on a similar chat. So that for how to try to put something out there very fast. Now, what happens when you get successful and start growing? Which kind of lessons were we learning here? Lesson number one, the newcomers to the stack will always get in trouble with the ORM. And again, there is not a simple solution. We were trying to train them, showing them some past Euro Python talks and doing a lot of code review, but it's very hard to train somebody new in Django. I mean, documentation is, I'm gonna say lacking, but it's a bit hard to follow there, you know? Because it's these N plus one queries where you end up putting the wrong property and then your queries go from 20 to 8,000 and you cannot figure out where the problem is. Then you teach them how to use prefetch and so on and then you're gonna figure out that of course prefetch works only if the query that uses it is very similar to the query that the prefetch does. Otherwise, you need to map it in more specific way so that you can reuse it afterwards. Again, if you have some good experiences in training people that are new to Django into this particular aspect of the problem, it's the only thing that we have found complicated and that gets people really complaining about the whole framework because of the magic of because of the decisions on there. I would be very happy to share experiences or even figure out ways of documenting this better so that there is a web page where you say, okay, after some playing around with the framework and some experience, go start read this page where you have a lot of documentation, talks, whatever that show you how to avoid the typical traps. Another lesson that we learned early on is if you have state transitions, use a finite state machine. There are very nice Python libraries very easy to use and it will help you map your abstractions better. While doing it, we found an interesting pattern coming from our mobile guys who said like, if we have status changes and mostly mobile, we want to go forward to advance. Why don't we instead of meeting you in the state you should go to, to avoid race condition, I tell you the state, it's a bit connected with what we had before about declarative attitude. I will tell you in which state I am and I will tell you that I want to go forward. And then we use the state machine in that way for the mobile phone, which is, they just tell us in which state they think they are and they want to go forward. We check if they are in that state, fantastic. We give them back the new state. If they were not in that state, we tell them sorry, somebody with higher privileges moved this state before, this is the new state, but there was something wrong so you can alert your customer that it was not a normal transition, sorry. This allows you to control the states in a different way, for instance, from an admin interface where you might need to go back and forth and from a mobile phone. And now on the closing part, a couple of thoughts not so much related with Django's framework, but a bit more higher level. One thing that I've seen that gets people to go very slow is to try to build everything themselves. It has been said many, many times, but as soon as you start growing something, try to get it asynchronous. You have fantastic salary if you are in this stack or something else in others for building queues or other types of architectures. Another thing that I observe many times when I talk to other startups is they build their own CRM, like lead generation, lead tracking engines, and they build their own billing because their case was very particular. Fun enough, billing is very complicated. All cases are particular, and you can rely on tools like Odoo, which is Python-based open source, lots of plugins from the community to do billing in many different countries, many different situations, and you can just slightly touch it instead of building from scratch. And another case where I found that we were doing templating, so kind of like front-end was for all these marketing applications. And in marketing, people come with like, oh, your transactional email is okay, congratulations for your order. Fine, we will design one, we will put it out there, we fill in the variables. And then they come and say, you know what, if it's the first order, we should put something different. You're like, awesome. I will do any if I will put something different. Yeah, and if it's VIP customer, we should put something else. They're like, fantastic. And you end up modifying something that there are tools that do it for yourself. In our case, we use customer IO, there are others, and we just send the parameters of the order and then the marketing team can do both templating there and they can also do the segmentation. So for all these internal or pseudo front-ends that you're not building like communication to your customer, you can also get it done outside. One final thought is if you really want to go fast, and that was interesting because I heard different thoughts in EuroPython and other talks, I don't believe that engineers or the developers should focus on the build phase alone and completely. I really disagree. I think this is a very waterfully approach. And going and saying, yeah, we just like to build and then somebody else deal with the customers. I think that this ends up in having the wrong solutions because you will just build what either you built before or what you have read online. And I think it's a much more valuable exercise when you get to be involved from early on in the decision process. Like if you can get involved in research and understand why are we doing what we do and get into a diverged phase where you're like, can we do something different? Can we do something crazy? Can we do something stupid? Can we do something that is maybe, something we should have never thought if we would have been in our own room seeing the tickets now that the spec that come from somebody else. So for me, those were the main learnings have been taken over the last year in OnTrack. And one thought, one final thought is like, if you feel that you are a bit out of the comfort zone because everything moves too fast, you can never get it completely under control. That's probably the point where you want to be. That's the sweet spot. And yeah, if you have been dealing with the youngers framework permissions, if you have been trying to teach other people about the M plus one problem, or if you just care about logistics, whatever, feel free to reach out to us. I would be super happy to have some discussion and talk, serve some experiences. We have a stand downstairs. We will be the social event and of course all the normal online channels like LinkedIn, Twitter, email us. Definitely looking forward. Thank you very much. Okay, thank you, Summer. We have 10 minutes left. So whoever has a question has time to ask it. So who has a question? No one. Well. Do you have a Swagger specification of your API? If you do, how do you generate it? Excuse me, huh? Swagger specification or open API specification of your API, do you have it? No, we don't have it yet. Thank you. So the way we work is the only integrations we do is with very, let's say, slow moving partners like the typical partner that would do an implementation for you connected with the SAP or like very large company. For them, they prefer to see the documentation via PDF and so on. And then what we do is we send a PDF because for them it's important so they know it's fixed in a point of time. And then we all commit to the API being that way. And then we spawn a new instance with fixed data and we just give them this very same front end. Thank you. I was wondering whether... Are you building only the API or you somehow have some connections to the client-side rendering? And now you're doing... Because I was in the talk in the next room a bit earlier and they're talking about client-side rendering and speeding things up. So I was wondering, are you doing something similar? Can you repeat? Didn't get the whole point. Do you render like HTML and stuff on the backend or you just serve the API and that's all? So on the backend, we just do an API. We are lucky in a way compared with my past projects where we had to do a server-side rendering so we took advantage of something that is usually not normal in the industry. We just do SEO for the home page. So we don't do SEO for the main platform. And the home page we have not built with Django and Django Res Framework. The home page is a small flash application where we can do a lot of templates and that we do server-side rendering completely. And then as soon as the customer wants to play with anything, we move them to our single-page app which is a React application and there it's all client-side because we don't need to do SEO on all that interaction. Lucky you. Otherwise we would need... Hi, thank you for the presentation.  So we have a set of tests against the API. So we use spy tests and we try to test everything from the point of an API consumer. Yeah, so you act not like a unit test but like a... More functional tests, I would say. Okay, thank you. Some of our tests are unit tests but they are written normally from that perspective. So we have a mix of tests actually but from there. So that's how we code it. So we don't have a specific test within some of the modules. Yes, that's what it is. Thank you. So any more questions? Then I will ask one question if we have time for somebody else to answer. How do you train people in the N plus one problem if you have been doing it? Or alternatively, how do you do permissions, advanced permissions with Django Res Framework? There were many Django Res Framework people. Like when you cannot just give an object but you need to give parts of an object or when you have people that can do certain transitions of your finite state machine for instance but not others. In my case, we're doing something that's not rest. It's not really permission related but you can bind it to the permission. We have different set of fields for the least view of the resources in Res Framework and different set for the details. So practically, I'm hacking the core of the serializer which is a bit ugly but I can hack the fields and provide different set of fields. Maybe you can use something similar and bind it to the request and the user permissions. Thank you. Any other questions or answers? Well, if not so, then thank you and thank you.


All righty, let's watch it pull first. There's no sounds I like that. You got the tooth here. That cracks me up It's looking cool. Uh, that little thing's here and there. I think it's definitely a lot tighter I think you mentioned something here about the head movement when he splits is not super happy here I don't know which is maybe I don't mind too much. Let me just bring this in a bit closer here To me what stood out was weirdly of this foot As it comes back It seems very soft as it comes down with the toe first and when it lands it straight at us making this silhouette wise a very tiny foot Kind of like a stumpy thing where I would keep it somewhat either like this or There's no other angle, but you know or the other way But I'll just be careful with something like that so all even with the shading kind of lose the structure of it. I think There's something ever so slightly soft When he lands here, you know, this is not a heavy chair and it's having a bolted down. It has to move So this is this is a comment that I would say I don't even support it a hundred percent My feeling is that I Will personally go in there and add a little bit of a linear key through there So it doesn't feel like it's just softly coming into this I think what also adds to the softness is how How that chair eases out of that that position here Again, not that this is made out of paper, but I would just think that they would be a harsher faster impact And you might argue yeah, but it's the butt that gets to it first and only then is it reaching the backside And that's why it goes up. I can see that imaginary conversation, but There's something where subjectively I would give this a slight harsher feel Even this as it comes back down This is not it feels like he's trying to get this down really really softly and that especially here I will go bring down fairly harshly with linear keys So the mechanics are neat. I'm looking at the hands This may be something really fast there Watch out some intership intersection there. I was looking at that finger. There's something about that arm Coming down fairly fast and then like a clung Holding here But it's not really it's not like the thumb is on that chair here Why is that suddenly holding here versus continuing to go up? So I would watch out for that. This was a big clunky where it kind of goes up and it by that I mean the thumb here with that hand up and then suddenly over and then kind of intersecting through And then up there and then back down again just all of that and actually out again here This all in real time It was a bit of a Soft feel a bit of an unfocused as in I would expect a tight grip Just like here this the screen right side feels better Yeah, it was better. It has some soft moments every now and then but Feels better. That's always the main Main part. The other thing that struck me was a bit a hard hit on that head Which when that head goes down has that whip Feel to it. So as that chin goes down here Visually it is reaches that height which it kind of stays there Then it goes up and has a little bit of side to side just a little bit there But if you watch this in real time, it's a fairly Snappy thing where I feel like that will be faster and the snapping is what we need here as it hits That and the snappiness in the chair. I think that's what I'm reacting to as well Which is this bit of a harshest through there But this would only be so snapping harsh if there was a harsher stop in the roots That made him go forward to recover there. Hope that makes sense The only other thing here. It's maybe a bit strange. It looks to the side here So like that he always keeps focus on the on whoever the threat is but it feels like the eye line is shifting a lot It's kind of over there. There's more to the side. It's a bit more straight on Watch out. I would cheat that pupils. You can see it a bit more here Then it's a bit more straight at us But then it's really off to the side here. So I was watch out for that. Just give the character a bit more focus But overall it's very cool. I like that slip on that foot here going back there And little details there just being on the side and then tilting or pivoting off of there There's a lot of cool stuff in it. So this is just kind of what I'm seeing here As always subjectively for free to incorporate what you need and that is that. Thank you All right, there's an email you can sign up you can start whenever you want You can submit whatever you want to get 16 submissions either way a like and subscribe would be awesome. All right. Thank you


Hi everyone, Joe for jasperjasebrakes.com coming at you with some more hockey big hockey day today 2018 19 upper deck SPX hockey five box Random team break number one from jasperjase case breaks calm Sold 10 spots one spot gets you three teams. We combo up the coyotes and the wild there you go All the other teams are in straight up Let's triple up these names right here. Thanks to these folks for getting into the action filling it appreciate it Let's roll it. Let's randomize it two and a two hard four one two three and four After four times we've got Wes down to Frank two and a two four times for the teams two three and four After four we got the abs all the way down to the Preds All right, Wes with the avalanche and the Jets Jeremy with the caps Frank with the Devils Rick with the Knights Nick Galvin with the Canucks Frank with the Stars Rick with the Blues Wes with the Bruins Jeremy with the Penguins Frank with the Leafs Rick with the Blackhawks Wes with the Ducks Frank with the Flyers Rick with the Senators Frank with the Rangers Wes with the Sharks Frank with the Kings and the Islanders Rick with the Oilers Ronaldo with the Blue Jackets and the Canadians Nick Galvin with the Carolina Hurricanes Frank with the coyotes and wild combo Wes with the flames Nick with the Buffalo Sabres Jeremy with the Lightning Ronaldo with the Red Wings, Rick with the Panthers, and Frank with the Nashville Predators. Who are we looking for in 1819? Austin Rock Besser Hughes? Let's sort this by column B by team. Elias Pedersen? Oh, okay. All right, let's see. Is this a 10 box case? Usually it says in small print right here. We'll find out. Trade window is open, by the way, still open. I'm just going to see what our box situation is here. There it is. All right, so it's one, two, three, four, five, 10 box case, five on either side. We're going to roll the die. We're going to use that one. One, two, three for the left side, four, five, six for the right side. Five, one, two, three, four, five, six. This side we will do next time, maybe later tonight with me or Sean. Sean Jaspy going live at 9 o'clock Pacific for some late night action. All right, so we'll mark those with X's so we know that they're all from the same case. And we're going to pause the video when we come back. We're going to see if there's any trades, and then we'll have the break. Stick around. All right, welcome back, folks. There was no deals done. So here we go. So on Thursday, the third, five box random team one, SPX hockey. Thanks everyone here for getting into the action. Is it a lowercase X? I always style it as a lowercase X. I'm going to go with that, but there it is, 1819 version right here. So we're looking for them. Rick, I usually don't do shout outs, but for you, dad. Hi, Rick. There you go. That's the one shout out of the day. The next one will be reserved for tomorrow. I'll allow one a day. How about that? I'll allow one shout out a day. There you go. So Rick's taking it for today. Tune in tomorrow if you want to get a shout out logged in tomorrow. One of these are just all, everything was just a filler card instead. No, they're real cards in there. Now that, Frank, that's like calling shotgun while you're still inside the house. You can't do that. All right, what do we got here? We've got Travis Dermott. Oh, this is actually kind of really short. What was I thinking of? I thought this break was going to be longer. Anyway, it's not going to be that long. It's going to be fast. There's Travis Dermott with the Toronto Maple Leafs, not Blue Jays. Frank with that one. There you go, Frank. We've got Shadowbox Rookies, Henry Yoki Haru. Nailed it. Black Hawks. Rick, the Ricks. Rick by two. The Struggle Black Hawks. That's a 298, you guys. Back here is Michael McLeod and that's in Upper Deck Black. That's what got me confused when Panini Black football came out because there's Upper Deck Black hockey is also in the mix as well. That's for New Jersey. Frank. There you go, Frank. And down here is an autograph. Noah Uelsson in that Lustrous Rookies. Right there. Who's got the Canadian's? That's going to be for Ronaldo Galvin with the Canadian's. Nice. I'm not sure that silver ink on that black card looks really nice. This already came out. We already did ingrained. Did we do this? Ice? Yeah, we did ice. Did we do chronology? I don't think we did chronology, did we? That we did. We always do that every year. We did that. That was really nice. Ice as always saw. I don't remember doing this. Did we do this? Last year or this year? This year's edition? Was there this year's edition? All right, we've got Stephen Stompkos, 44 out of 299. Tampa Bay, that it's going to be for Jeremy Anderson. We've got Eli Tolevanen. Rookie Jersey for the Predators, Frank. And we've got Shadowbox Rookie Autographs, Ryan Donto. Listen, I know nothing about hockey. You're gonna have to pipe up, ladies and gentlemen, if these are good hits or not. Is Ryan Donto? Donato, sorry. Donato any good? Wes Thomas with the Bruins. Please, God, I hope he is. Eh, says Ray. All right, 15 out of 198. Sorry, Wes Thomas. Frank also concurring with the meh. I was hoping that like some hot rookie that would be like, yeah, crush it and crush it this season. All right, what about this guy? Casey Middlestatt for the Sabres. That'll be for Nick Galvin and Buffalo. Buffalo. What about first auto? Was that guy any good? Noah? No on Noah. All right, find some better rookies in this one. All right, we got Austin Matthews. I've heard of him. Toronto. That'll be for Frank. There is Eli Tolevanen. Shadowbox Rookies for Nashville. That's gonna go to Frank. What about, is this guy any good? Timo Meyer. Super Scripps Auto for the Sharks. It's gonna be for Wes Thomas. Do we like this guy? No, mess, that's Frank. We got Jake Vertanen. Vancouver Canucks. Right winger going to Nick Galvin. He ain't bad. This is Frank. All right, there you go. Here's a good old eargo.com. There you go. And got Vladimir Tarasenko. SP Excitement Swatches. St. Louis, that's gonna be for Rick. I've heard of this guy. What about this guy? Pat Lafontaine. Eight out of ten. Two color patch. An autograph center for the New York Islanders. Frank with that one.  Legend says Frank. There he is. Boom. I think I've heard of this guy too. Here you are. Yeah. Old school guy here. Nice. We got Conor Hellbuck. Winnipeg. That'll be for Wes. And then we've got Patrick Gua. I know this guy. Aves, Wes. Just a base card there. Not number? No, not number. All right. And the last one, boys and girls. Yeah, this, this, I'm usually better at this game. See on the top camera there too. Not, not, not, not as good as it usually is. We've got Ryan Murray. Columbus blue jackets. Huh? This guy any good? That's for Columbus. That's gonna go to Ronaldo Galvin. I believe he's decent, this friend. All right. Good. Better than meh. There we go. We've got Yuso Valimacchi. Lustrous rookies jersey. Calgary. Nice, Brad. I don't think that's full yet. And the yeah, I don't think that's full yet. So that's not on the schedule. Is that the baseball mixer you're talking about? No, not according to my, no, not sold out yet, Brad. Look carefully on the side. I think you'll see why. Out there. Okay, Ryan H, Danny, Danny, they got you. Kind of hard to see the the black or the purple against the black. Right there. But that is 22 out of 25. Kind of hard to catch that in the light. You can kind of see it right there. There you go. And that's Ryan Donato for the Bruins. That'll be for West. And the final one looks like a base card.  It's Matthew Barzol 19 out of 299. All right. And there you go, ladies and gentlemen. Random team one in the books. The second half will be in the store. Check that out on jaskyscasebreaks.com and I'll break that with you next time. Bye bye.


So, we got the USAV Beach Collegiate Volleyball Challenge going on here. It's going on Friday through Sunday and we got teams from all around the country. We got guys from Stevenson obviously, we got guys from down in Florida and numerous other schools and we're so excited for them to be here. It's really cool for us because, you know, we get all these teams to come down and play on our facility at our courts and, you know, USA, getting that exposure. It's awesome. We'll be here all day, 10 a.m. through 5 p.m. tonight, Saturday as well, and Sunday we have our quarter-suit finals and we're so excited for all these guys to come and compete. Anyone's welcome to come. We got parents that came up all the way from Weber down in Florida and, you know, anyone's welcome to come. Stevenson students, if you want to come down and watch, come down and watch. We got some excellent competition and if your family wants to come too, bring them on down.


One in three adults above the age of 65 fall each year and many of those falls result in hospital visits. To combat this epidemic, the Cass County Falls Prevention Task Force hosted a falls prevention workshop today. Dozens of senior citizens walk through the doors of Calvary Church to get vital information on how they can prevent a fall. Doing something as simple as making sure the floor is clear can prevent someone from suffering a fall. Falls is one of the number one emergency room visits. Ladders, very dangerous. After 50 years old be very careful on the ladders. Hip fractures are really dangerous for an elder population. They're very hard to recover from and some don't recover and some actually lose their life. It's that important that they be careful. Seniors were picking up a wealth of information from several health organizations that were at the event. Tests were given to see how vulnerable someone is to suffer a fall and there were also five demonstrations throughout the day teaching seniors simple ways they can improve their balance and strength to prevent a fall from happening. Seniors they can actually just hang on to something safe prior to kitchen countertop and just do a single like balance like every day hold it for as long as you can 10 seconds 20 seconds each leg of course and that's a very simple free balance exercise you can do at home. This was the second annual Falls Prevention Workshop and every senior who attended left with a sand shaker they will use that when getting out of their vehicles to prevent slips on the ice. If you enjoyed this segment of Lakeland news please consider making a tax-deductible contribution to Lakeland PBS.


Hi everybody, I guess it's recording. So let's start this new Jenkins infrastructure meeting. Today we have multiple things to the agenda. In fact, we have quite a lot of things to the agenda. The first thing is regarding the mirror infrastructure, the growth states. So I contacted the serverium.com mirror maintainer and he told me that they had some maintenance plan with the red. So I'm waiting for some feedback from there. So until then the mirror remain disabled. Still on the mirror topics, the ham charts to deploy mirrors is not ready and it's working. So right now it's deployed on, I think, mirrors that are Azure that mirror the Jenkins RIO. So basically you just run a helm, helm install with a link to the ham charts and then it will automatically deploy a nursing server and HTTP server and a cron job that will regularly, like every five minutes synchronized with one mirror provided by parameter. Right now we are targeting the OCOSL mirror, but yeah, this is something that can be easily changed in the future. What I would like to have is, I would like to publish that and version the mirror. So we can start asking contributors to install that mirror. If they don't want to run on Kubernetes, I mean, that's fine as well. Everything is explained in the ham chart so they can easily adapt the service. But basically we start to need more mirrors. I had a look to the map and it would be useful basically to have more. So I would like to, I'm planning to start working on a blog post or something like that in the weeks. But basically almost everything is there. Regarding, yeah, that's basically any question regarding that topic. Yeah, sounds like we can continue then. The second topic is about maintenance on infra.ci and release.ci. So basically we want to switch to the ham. So we are using the ham chart for the Jenkins ham charts in our infrastructure. And we would like to switch to version three. And because there are some breaking changes in the configuration, we need to plan that upgrade carefully. We shouldn't have major issues but just to be ready to have those two environments down considering that we have, yes? I was just gonna add, did you want to possibly delay that by a day based on Daniel's comment about delaying the weekly release? Yeah, that was exactly my point. Okay, sorry. Yeah, so basically we initially planned to do that upgrade tomorrow afternoon. But because of the weekly release that is delayed right now, we'll probably do that on a Thursday afternoon. Yeah, I still have to send an email on the main list. It should not affect users obviously because it's only concerned release.ci and infra.ci. But yeah, still because we'll have to delay that upgrade. Any question? Next topic is regarding ci, the Jenkins.io. I was looking at that instance today and I was thinking couldn't we use the GitHub label filter to filter to stop building every PR for Jenkins core. So this is something that Garrett introduced on infra.ci. So using the GitHub label filter plugin. And so basically is if you specify a label on a PR, we stop building that PR. And I think it could be useful for still PRs on the Jenkins.io on the core, on the main KTRIP history. Before I send an email on the dev mailing list, any suggestions here? Oleg, Mark. I think it sounds like a good idea. I know Tyler has been of the opinion, hey, let's just close the PRs, but the behavior has not been to close PRs. Therefore being able to mark them, this should not be built, at least accommodates current behaviors. So yeah, so we had different opinion about closing or not closing PRs until now we never closed PR. So that's why I'm suggesting this idea. The idea is definitely to stop building, to stop run jobs on PR that don't have activity at the moment. So you want to measure activity or maybe we could just stop building everything which is not related to LCS? Interesting, how would we do that? I think that's a keen idea. Is there a way to decide which things are related? Yes, so for LCS, there is an Intel CS label. We can just use that. At the same time, I'm not sure whether it provides the desired behavior. So does that mean that we would stop testing PR that target directly releases? Well, we have staging. So we are talking about staging now, right? Yes. Yeah, it's not relevant. Okay. We could use a stale bot and in stale bot just disable the closing functionality so that it just marks a pull request as stale and then you use this label to disable the builds. Yeah, so we would use the stale bots and the GitHub label filter. The stale bot would apply the labels and the plugin would not trigger the job. Yeah, okay. So the most straightforward approach? Yeah, I totally agree with that. I like the use of stale bot, I think that's really nice. So forgive my not knowing stale, but it's a bot that will look for if there's been no activity on a pull request in a certain period, it then marks it as stale? It's not just a time-based thing. It's not saying a PR has been open for six months, therefore we close it. It's rather six months and idle for some period. Yes. So it has support for marking the things stale and support for the closing of the things. So the latter feature would try to advise against it. But yeah, stale label could be used. I guess the periods still need to be defined, especially for LTS PRs. But yeah, that would be already a nice improvement and we would stop building again and again and again. So I sense, yep. Olivier, you see indications on ci.jankens.io that rebuilds of Jenkins core PRs are a significant burden on the processing. The ones I had seen were acceptance test harness, which was quite different. You're seeing even core PR that's 60 or so that are open right now, they are a real burden on ci.jankens.io. So I'm looking right now at ci.jankens.io and those PRs are gone, but several hours ago, I saw that we were building ring jobs for the PRs on Jenkins core. Okay. Thank you. That's why I was in the investigation some option. Excellent. And what you're proposing sounds great to me. Yeah. Also the same approach could be applied to plugins by default. Yep. I'm not sure about enabling stale bot globally, though may make sense. So basically, yeah, I have to see, because obviously using that label approach for Jenkins core is quite easy, because we don't have a lot of configuration to change. If we decide to go with the every plugin for every plugin, maybe it will be easier to first convert ci.jankens.io to a G-CASK configuration before doing that. So we already have the G-CASK configuration for in Friday CI. Garrett worked on that over the past weeks and it's working well right now. Is this, I didn't think the G-CASK configuration was deployed yet. It's defined and being experimented with, but not yet deployed. Is that correct? Yes. Okay, thanks. So it's not, so sorry, it's not, so we have component for ci.jankens.io. We did some tests. So basically team Jacob did some work several months ago. Maybe almost a year ago now. We already have G-CASK configuration for a lot of components, but maybe not for everything related to ci.jankens.io. Next topic is about building a custom Jenkins Tucker image with plugin installed. So this is something that we've been talking for quite a long time. We have quite a lot of components in place because of the work done by Damian to build Tucker images, to simplify the build and test Tucker images. I think would be nice to move forward this thing as well. Garrett made a small CLI to automatically update the plugins that Jenkins, the plugins that TXT file. So I don't know if you can do a quick demo of that. So I put the link to Garrett's GitHub repository. That's pretty simple and pretty efficient. Yeah, I'm not sure if I don't have quite a demo, but I have, I can talk about it briefly. It tries to, it looks at update center and tries to pull in what it believes are the next or the updated plugins. It seems to work quite nicely. Obviously it's quite dependent on the version of Jenkins to run it. So you can pass in a path to the Docker file and it will try and best guess the version of Jenkins if you're using LTS or not using LTS and you've got a version in there, it can extract that out. So it knows exactly what URL to call and just updates that. I'm working on a, just like a POC repo at the moment to try and simulate like a sort of dependable style update with a GitHub action to try and run it. Which I should have finished quite shortly. Yeah. At some point there was, I'm not sure, renovate both supported plugins, TXT. Yeah. I'll call the client. Basically you implement it as an action. So do you see my terminal locally? My screen? Yes. So basically the CLI that Garrett made is quite simple. And so you can specify the plugin that you want to update. You specify the Jenkins version that you are targeting and based on that it queries the updates and our URL and then show you what are the plugin version available for that specific Jenkins version. And then obviously we can commit that file to the GitHub repository and so on and be new images. So it's, I mean, the binary is quite small. It's like 11 megabytes and it could be easily integrated in our workflow. Yeah. So this tool basically takes versions from update center. Yes. Maybe later you could use version which takes the data from the lot of materials. I think that you could what? You could take information from? From the bill of materials. I mean Jenkins plugin bomb when the plugin is present there. But yeah, it's rather nice to have. I've added a command called check which should go display any that we know about. That seems to work. So if you run, rather than you see update, if you're a UC check with the same arguments, it providing you've got a fairly recent version of that binary. Yeah. It tries to match everything in the plugins.txt against the vulnerabilities that come as part of update center. I think I have the logic correct. So the vulnerabilities report that it's doing is based on data from update center. Yeah. Okay, thanks. Yeah, the update center provides a, it provides like a list of aspects, vulnerabilities, some plugins, and then it gives you a couple of regular expressions and like a last version. Well, I think I'm interpreting that. It had a few issues with the go lang and regular expressions because that I think it's a slightly different format but seems to be working. So if I, just to be sure, if I define a plugin that has known security issues, pick one and it, I run the check option, it will give me a warning text saying, hey, you have specified a plugin which has known security issues. Yes, yeah. Okay. And I'll give you a link to the like, it is in tabular format. So it gives you the sort of the ID, the plugin and the link to the security advisory. If we know about it. So basically. What it doesn't do at the moment is fail. I'm gonna add an option to make it like, actually like exit, exit masterly if it does that. So you could put it easily into a CI system. Sorry, Oleg, what were you gonna say? Yeah, I just wanted to say that it basically implements some bits of plugin installation manager. Yeah. Well, and is this kind of thing something that long-term we might consider putting into plugin installation manager? I know it would be different because it's Java instead of Golang, but Oleg, you noted that there is, there's some potential for this to be needed in our Docker image context. Well, plugin installation manager already does similar checks. It can even generate a plugin stick stick for you. And in theory, it can increment update plugins sticks. So the problem of it, yeah. Separate tool in a separate language. And you also need the Java and you need to be running the tool from the Jenkins instance. Not necessarily. When I edit the flag, we should also support the Jenkins version. So similar to how God did it. So it can also be executed in a standalone mode right now. But yeah, this is a Java tool. It's heavy, so. Right, okay. Okay, thanks for that. The next topic is about the weekly release as we already mentioned, it's the weekly release is slightly delayed. Will probably happen tomorrow. But yeah, that's next topic. The LTS release mark. I think we put that to the agenda if you want to. I did. It just is a warning that some of the regressions that are included in 2.263.2 may be significant enough that we'll want to do an out of order release. It's not a known yet. This is definitely not a, oh yes, absolutely. It's rather just a hint that we may, over the coming days or weeks, decide that there is enough in the, for what will be in 2.276 that we want to include those into an out of order LTS release. Okay. And finally, the last topic, which is about the contributor summits. So FOSDEM is in two weeks, three weeks in fact. And we aren't interested to organize a small contributor summit, basically a virtual contributor summit. Maybe Marky can add some more information here. Yeah, so the idea is that we'd like to take advantage of virtual to do a combined meeting session first where 60 to 90 minutes, probably in the European late afternoon or think sometimes between three and 6 p.m. European time, so Switzerland time and Belgian time, roughly there to do an initial startup session where we would invite everyone who will be part of it. Then we break out into separate sessions with time zones focused on meeting the needs of the people in that subgroup. Those subgroups might include documentation. I think they should include infrastructure and platforms and several other top pipeline, I think would be a good one. Of course, it depends which subgroups actually form depends on who attends the session and who's ready to assist. Then after those subgroup sessions happen and those could happen over a period of a day or two, then we would do another concluding session, bring everyone together for a very fast review of results. My intent is to send a proposal for this today out to various places and invite people's comments.  Now I just wanted to highlight that the reason that we bring the, the reason why we want to do the contributor submit a run for them is because we usually took advantages of the fact that everybody was at first them or at least a big amount of people. The thing is because this time it's a virtual event, we want to take the opportunity to gather together but we don't have constraints, physical constraints. So we can split the event on multiple days. So I think that's why we wanted to identify sessions and obviously infrastructure will definitely be part of the topics there, but that's basically what I wanted to add. We cover all the different topic of the agenda. So any last thing you want to bring here? I think we are good then. Thanks everybody. Thanks for your time and see you later. Bye-bye.


What is micro simulation? I think many of you will know it's basically a technique where you use a household survey that has information on family structure on income and expenditure of the household and then you bring these microdata to the policy system which can be coded in different types of software and basically you take the social security code and the tax code to the data in order to know how much is the tax load on each family and then you can of course bring that up with representative data to the national level so that you know the tax load how will that come out as revenue for the government but you also will know how much social protection costs the government. So this is important of course for government but it's also very good information research. Now you can also then given that you have such detailed data look at more specific questions like what type of household is paying how much and so on and so forth and then of course you can have look at specific measures that we all know like poverty distributional measures progressivity of the taxes. The beauty of these models is that also that you can look at policy reform so imagine you have a change in or you want to have a change in your tax code you will change the tax function and then you can look again at the tax loads and all these are the indicators that I was just talking about in terms of government revenue but also progressivity of the tax system and that's also where you of course have a first round effect but we call a first round effect in terms of effects not only in individuals but on the government and then actually the last bit that just came up takes a step further you're talking then about behavioral responses and that's where research comes in so the static model then taken by researchers as those you find sitting here and you can start thinking about and answering more complex questions. So the South Mod project has developed together with the teams in the local all the countries that you see here models for these countries and also has rebanned already existing models for Namibia and South Africa so in the audience there's quite a few mothers and fathers of the local tax benefit model and it's great to see how well this is going so here you see all the partners involved and we actually had a meeting yesterday pulling everyone together sharing our experiences after the first round of modern building. Now these models as I said are nearly all finished. We will update them all together and keep them up. We have trainings and bunches happening or they already happens and they will happen this year and we are in the process of building an active musical because these models will only be as good as we have an exchange going on between the policymaker side, the research side and of course then the model developers. So this is very important for the models and research is important to push the models for new innovation as much as answering the more complex techniques that go like questions of for example tax elasticity which is one of the questions you can also partner with these models to they'll never just be answered by the model itself but they'll always need a researcher who frames the question using more methods. So what we will see today is four applications of such models. The first one uses the model for Ghana sort of the Ghana model and looks at the relationship between extending extending social protection formalities so that's Lucas presentation. The second paper uses Tasmat or am I now shifting yeah the second one is on Tasmat so it looks for how well beneficiaries are targeted and what could be reforms which would be deliver a better result. Then the third one uses the South African model Samot and analyzes the universal child benefit hypothetical reform and how one could finance it. And finally using the model for Ecuador the last presenter will show how you can use such models to estimate vulnerability to poverty.


Okay, so we're talking about Chapter 19, and we're going to talk about the stuff that we talked about on Wednesday, and then we're going to talk very briefly about reversible reactions. We started to talk about those on Wednesday, and then we're going to say a few words about Arrhenius and his equation. It's a very exciting lecture today. Very exciting. Okay, so we mentioned on Wednesday that we can, you know, we're used to looking at chemical reactions that are written down like this, and we classified these as two different types. They're either stoichiometric or elementary. If they're stoichiometric, what this reaction represents is the overall stoichiometry. Two moles of B reacts overall with one mole of A to give one mole of C. That's the only information that's conveyed by this equation, the overall stoichiometry of the reaction. There's no kinetic information conveyed by it at all. Okay, no mechanistic information. Reaction order is conveyed. In other words, A does not necessarily ever interact with 2B directly. Right? It happens through some indirect mechanism that has multiple steps in it that we don't know about. All we know from the stoichiometric reaction is that this stoichiometry here, the reaction rate will have this general form, but we don't know what alpha and beta are. We don't know anything about them from this. In particular, beta is not 2 and alpha is not 1 necessarily. They could be, but they're not necessarily equal to these stoichiometric coefficients here. Okay? Now, you can't tell by looking at this reaction whether it's stoichiometric or elementary. You have to be told, right? You can't tell just by looking at it. It's another important thing to know about. Elementary reactions describe a single chemical event or reactive encounter, right? If this was an elementary reaction instead of a stoichiometric reaction, we could write this rate law just by looking at the reaction. We could write the rate law down, right? These exponents here are going to correspond to the stoichiometric coefficients for the reactants. So if we know it's an elementary reaction, we can write down the differential rate law right away just by looking at it. Okay? So there's two types of reactions. Stoichiometric that don't convey any kinetic information. They tell us about the stoichiometry of reactants and products and the elementary reaction. For elementary reactions, the rate law can be written down immediately upon inspection. If this is our stoichiometric, if this is our elementary reaction rather, it's a unimolecular reaction. All that means is that there's a one in front of this A. We call it unimolecular. All right? The differential rate law will be this where there's a one exponent on the A because there's a one in front of the A. If this is our elementary reaction, then the differential rate law is going to look like this and there's a one exponent on the A and the B because there's a one stoichiometric coefficient in front of the A and the B. You get the idea. All right? I can look at this reaction and write down this differential rate law without any problem. This is a bimolecular reaction. When I say bimolecular reaction, I mean the overall order of the reaction is two. One plus one. Right? This is also a bimolecular reaction in which the overall order is two. In this case, there's just two A instead of an A and a B and this is what the differential rate law would look like for that. Now, notice how we normalize the rate using this stoichiometric coefficient. Here I'm expressing the rate in terms of A and in terms of B. Right? I think you can see that the rate at the apparent rate is going to be twice as fast for A as it is for B because two A's are reacting to give B in this case. And so to compensate for that, we multiply the rate with respect to A by one half. All right? And in general, we multiply by one over whatever that stoichiometric coefficient is to get a rate that is invariant, independent of which reactant or product we decide to use to express the rate. Make sense? Remember, the stoichiometric coefficient is negative for reactants. That's why there's a minus sign here. All right? So these two rates, whether I express the rate with respect to B or I express the rate with respect to A, I'm going to get the same rate. If I don't get the same rate, I've somehow done that rate calculation wrong. So let me emphasize this is a differential rate law. It does not allow for a comparison of A and B as a function of time. I think you can see that. This is the time rate of change of B. This is the time rate of change of A. All right? And this is what that's equal to. I can't create a plot of A as a function of time or B as a function of time directly from this equation, can I? All right? It's a differential rate law, not an integrated rate law. If I integrate it, then I can. Okay? So if we perform the integration, let's say we choose to use A, I move this one half over to the right-hand side and I evaluate what that integral looks like. It's just 1 over A minus 1 over A0. That's going to equal minus 2 times kT because I'm integrating from 0 here. And so this is going to be my integrated rate law, right? Well, this is not the one that's in your book. All right? If you look up this reaction in your book, it's reaction 19.13B and it looks like this. It doesn't look like this. And the reason is that this 2 by convention is always rolled up together with the k. All right? That 2 is always incorporated into the k. The 2 gets devoured by the k. All right? The constant includes that 2. Okay? So it's not there. When we talk about the rate constant, we're talking about this k that includes this 2 if you want to think about it that way. Now, we have to be able as chemists to experimentally determine what this rate law is. We've got a reaction vessel. We take a sample from it. We inject that onto a GCMS. We get some peaks. It tells us that there are three reactants in our reaction vessel at the beginning of the reaction before we initiate the reaction somehow, maybe with a temperature jump, maybe by stirring it, whatever. All right? We know there's three reactants, but we don't know what the stoichiometric coefficients are. We want to determine what the rate law is for the reaction that's occurring between these three reactants, A, B and C. Let's say those stoichiometric coefficients are alpha, beta and gamma and they're forming some products here. All right? How do we as chemists figure out what the actual differential rate law is? All right? What's the stoichiometry with which these reactants are reacting with one another? This is a very important issue for us as chemists. We know the differential rate law is going to have this form, yes, or assuming this is an elementary reaction. And I've indicated here that it is because you can't tell by looking at it. Okay. So, there's three methods for doing this. The first is called the method of initial rates. The basic idea is very simple. We want to design this reaction so that the rate, overall rate of the reaction only depends on one reactant at a time. That's the key. So, to do that, we're going to make two of these other reactants large, much larger than A. How do we know when it's much larger than A? Let's say that A is one millimolar. We might start off by making B and C one molar, a factor of a thousand larger. Then what do we do? We measure the reaction rate as a function of time. And then we change B and C. All right? If we go from one molar to 1.1 molar or from one molar to 0.9 molar, there shouldn't be any change in the reaction rate because the reaction rate should only depend on A. Okay? So experimentally, we can tell whether we've isolated A or not. Right? If we haven't isolated A, we need to make the concentrations of B and C two molar or five molar, however large we can go before we're out of solubility limit, possibly. Maybe it's impossible to isolate A. Right? We won't know until we start to do some experiments. All right? But we can tell in the laboratory whether we've succeeded if we change the concentrations of B and C and the reaction rate does not change, we know we're isolated with respect to A. That's the limit that we have to be in. This will isolate reactant A. Okay? So once we've done that, there's a new effective rate constant, K prime, that includes B and C. B and C are not going to change appreciably as A reacts. Right? Of course, B and C are reacting too. Their concentrations are going to be going down. But the change in the reactant, the change in the concentrations of B and C are going to be so small that the overall concentrations of B and C are insignificantly affected by this change. Okay? So we've got one millimolar of A. All of the A could react and we're going to have what? Right? 0.999 molar of B if we started off with one molar. Right? So B is going to be the same to within three sig figs. It's not going to be affected by this reaction and we can assume it's constant and we can roll it up into this pseudo alpha order rate constant. Okay? So you see this K prime? Once I make these guys big, I can roll them up together with K to form this K prime and now my apparent reaction rate looks like this. This is my apparent differential rate equation. Okay? Then what do we do? So, no, before isolation, the overall reaction order was alpha plus beta plus gamma but after isolation, the apparent, apparent overall reaction order is now just alpha. Here it's just alpha. Here it's alpha plus beta plus gamma. Am I beating this to death? All right, then we're going to measure alpha. To do this, we measure the reaction rate as a function of alpha zero, the initial concentration of A. It's function of alpha zero, A zero rather. Okay? So if I take the logarithm of this guy, I get log of the rate. That's log of K prime plus alpha times log of A. And so all I'm going to do is I'm going to change the concentration of A instead of using one molar, one millimolar, I'm going to use two millimolar and three millimolar and four millimolar. All of those concentrations are still small compared to one molar, B and C, right? So I've still isolated A, presumably.  The reason I'm going to use the initial concentration of A is so that in case there's a reverse reaction that occurs, I will not be influenced by that. Because at the beginning of the experiment, there's no product to cause there to be a reverse reaction, right? And so if there's no product, I'm only going to measure the rate of the forward reaction. And if there is a reverse reaction that I don't know about, perhaps, it won't influence what I'm trying to determine. I'm trying to determine the stoichiometric coefficient of A, right? That's why we're going to use, that's why it's the initial rate method, okay? We measure the initial rates of the possible influence of a reverse reaction in case it's there, we don't have to think about it. Okay, so here's what that data looks like. Here's four millimolar, three millimolar, two millimolar, and one millimolar of A, all right? And I'm measuring the initial rate, which is the slope of this red line that I've drawn here, all right? We don't know what happens to A during the rest of this reaction. We don't have an integrated rate law for A, all right? All we're going to determine is the initial rate for different concentrations of A. Yes, that's what the slope of this line is, and then we're going to plot that log of the rate versus log of A0. We should get a straight line, and the slope of the straight line is alpha. It's beautifully simple. It can't fail. It works, hesitate to say it works every time, all right? It's a very simple and straightforward way to determine what the stoichiometric coefficient of each reactant is. The problem is you've got to do a lot of experiments. You've got to do four experiments here, right? That's just to get the stoichiometric coefficient of A, and then if there's B and C, a lot of experiments are involved. Okay, that's the first method, method of initial rates. The second method is to calculate the integrated rate law, integrate the differential rate law. When you do that, you get an integrated rate law that now explicitly predicts what A will be as a function of time. The integrated rate law allows you to model the concentration of any reactant or product as a function of time in your computer. You can just put the equation into Excel and boom. You can fit your experimental data using the rate constant and the initial concentration, all right? And when you do that, you should be able to match up your predicted A versus time curve with your experimental data, and that tells you that whatever differential rate law you assumed for A, first order, second order, zero order, right? Whatever differential rate law you assumed is correct. If you can fit your experimental data as a function of time and your predicted curve overlays your experimental data, why you've got it, right? Whatever molecularity, first order, second order, zero order, third order that you've assumed is what you actually have in your experiment. So, in this case, we're plotting log of A on this axis versus time and the intercept is obviously going to be log of A0 and slope is going to be minus K. You don't have to create a linearized form of this equation the way that these textbooks do that were written 23 years ago, 25 years ago, okay it's not necessary to do that anymore necessarily although it is convenient to be able to just get the K from the slope of this equation, see how linear this is. This gives you a good feeling for whether the fit of your first order reaction, whether your first order reaction fits the data or not, but you can just plot it directly also and fit it. Most graphing programs will do that automatically now for you, okay? So, the integrated rate law is the second way to determine what the differential rate equation is. It's better than the initial rate law in the sense that you're fitting over a range of times and over a range of reactant and product concentrations and so if you get a good fit it really tells you unequivocally that the reaction is first order over a range of times and a range of concentrations for your reactants and that's not true for the initial rate law, the initial slope method, the initial method of initial rates, sorry. Okay, so there is a third method, we already talked about it on Wednesday and that is once you've got your integrated rate law there's a shortcut that you can take which is not to do any fitting, it's just to determine what the half-life of the reaction is and you determine that by plugging A0 over 2 in for A. Here I've just plugged A0 over 2 in for A and when I do that the A0 is cancelled and I get 1 over 2 and that's just minus log of 2 and so the half-life of the reaction is just going to be log 2 over K. The half-life is the time when the concentration is dropped to half of its initial value, obviously. And so this is yet a third way, it just involves taking the integrated rate law, substituting A0 over 2 for A. That time is now called the half-life and you can solve for that and see if what you measure conforms to what you expect. All right, so this is the half-life or first order reaction and the half-life stays the same. The second half-life is the same as the first, the third half-life is the same as the second. What you're interested in here is the progression of half-lives as a function of time, the first half-life. How does that compare to the second half-life? How does that compare to the third half-life? To do that you've essentially got to map out this green curve here. So it's not really a time saver. But it does allow you to just look at the data and say, hey, this is obviously first order data. All right, without having a computer handy to fit it, you can just look at it and say, all right, I started off at point two, here's one half-life, now I'm at point zero five, that's the second half-life, yep, it's first order. So it's handy to be able to do that without having to get into your computer and get into Excel and transfer the plus slope and do everything else that you would normally need to do. Okay, so there are two types of second order reactions. We already mentioned this. There's two way goes to products. That's a reaction that is overall second order and we can work out the integrated rate law for that. We already did that. Keeping in mind that this two gets rolled up into the K, the half-life in this case is different than it is for a first order reaction. It's proportional to one over A zero. And so now the half-life doubles. Every success of half-life is twice as long as the one before it for a second order reaction. All right, I measure this half-life and then I call that zero and I measure a second half-life and it's twice as long. Now I measure the, okay, so it's inversely proportional to A zero. If this goes down by a factor of two, the half-life will double and then quadruple. Everyone see that? So once again, if you're taking this data and you're looking at your computer screen, you can see immediately, if you're starting at point two, that's your first half-life. Your second one's twice as long. Looks like it could be a second order reaction with respect to A. Now there's a second type of second order reaction isn't there that has this differential rate law and the integrated rate law in this case is a little more complicated. It's worked out for you on page 802 of your book. All right, but suffice it to say there is no simple T1 half for a second order reaction that involves two reactants. All right, there is no simple closed form expression for T to the one half for this case. All right, it really only works for two-way goes to products. So here you would actually have to fit your integrated rate law, you'd have to fit your experimental data with your integrated rate equation to see whether it's really second order in A and B. Okay, we've mentioned first and second order reactions. These are the most common times, but we left out one other important reaction that we talked about in your quiz today, which is the zero order reaction in which A goes to products. And a zero order reaction is characterized by a differential rate law that doesn't depend on the concentration of A. That's a little odd. All right, the rate doesn't depend on A. If I make A small, I get a rate, and if I make A big, I get the same rate. That's odd. Something similar happens in the Haber process. The rate doesn't depend necessarily on the hydrogen and nitrogen concentrations. How can that happen? That's right, the rate of the reaction is independent of A. Well, if you work out the math, this is the integrated rate law that you get. A is proportional, or I should say decreases linearly as a function of time. And so if I work out the half-life, I just plug in A over 2 for A and simplify this equation. The half-life is equal to A0 over 2k. So if I look at what that looks like, now the half-life gets shorter as a function of time. The reaction rate is linear for a zero order reaction. So if you're looking at the data on your computer, you can see immediately if it's a zero order reaction because your reacting concentrations are decreasing on a straight line, you can see it immediately. Only a zero order reaction does that. But the effect is for the half-life, the second half-life is half as long as the first one, the third half-life is half as long as the second one, and so on, the half-life gets shorter as a function of time for a zero order reaction. What kind of reaction does this? Catalyzed reactions have zero order. For example, 2nOx reacts to give xO2 plus n2, we have catalytic converters that eat up the nOx and the CO and the hydrocarbons by catalyzing these reactions to these benign products, or we used to think CO2 was a benign product. The catalyst is in your catalytic converter. The rate of that reaction doesn't depend on the concentrations of these guys. What it depends on is how much room there is on the catalyst particle. The catalyst particle is where this reaction is occurring. Your reactant, let's say nOx comes in, it sticks to this catalyst particle right here, and then the chemistry occurs. The only thing that matters is how much room there is on this catalyst particle. That will determine the rate, not the concentration of nOx, there's plenty of nOx, even at really low concentrations to saturate the surface coverage of these tiny metal particles. What you observe experimentally is the rate at which the nOx is getting eaten up by the catalyst doesn't depend on what the nOx concentration is. It does depend on how much of the catalyst you have. More catalyst, faster rate. Makes sense, right? Something similar happens in the Haber process. Same idea, in the Haber process you have an iron particle, right? In the case of these reactions here, in general the particles are made of a platinum alloy. So they're kind of expensive. Trying to figure out how to get rid of the platinum in these catalysts. Okay? So there are some integrated rate laws that are very common, zero order, right? The rate of any reactant in the zero order reaction just increases linearly as a function of time, boom, straight line. See a straight line, you know immediately it's a zero order reaction. Log A minus log A0 equals minus KT, that's a first order integrated rate law. Here the log of A decreases linearly as a function of time, not A directly. And in the second order reaction we have 1 over A equals 1 over A0 plus KT. So it's 1 over A as a function of time that increases now linearly because it's 1 over A, all right? Third order reactions, that'd be a good test question for midterm two. Okay, so in reality we have three methods for classifying a reaction with respect to its order. Method one, method of initial rates, isolate one reactant, make the other two big, measure the initial rate as a function of the initial concentration of the isolated reactant, plot your data, determine what the stoichiometric coefficient is. Method two, derive the integrated rate equation, fit your data over a wide range of times with different integrated rate equations to find out which one fits your data. Then that tells you it's first order, it's second order, it's third order because that's the one that fits. It's tedious to do that but that's what you do. There isn't a shortcut. And finally, reaction half-life, you take the integrated rate equation. In that integrated rate equation you plug in A0 over 2 for A, simplify the equation for the half-life and that's the half-life equation. And you compare that with what you observe for your experimental data as a function of time over multiple half-lives, that's the key. You've got to see if the half-life stays the same, if it gets shorter or if it gets longer. You have to look at the data over multiple half-lives to see how the half-life evolves as the reaction is proceeding. This shows what that looks like, zero order reaction, straight line, half-life gets shorter according to this equation right here. First order reaction, second order reaction, look the same qualitatively, don't they? It's just a curve, all right? You can't tell if it's first order or second order just by looking at it but if you look at the half-lives, here the half-life's not changing, here the half-life is doubling, all right? That's a second order reaction, that's a first order reaction, that's a zero order reaction. So you can tell by looking at the half-lives. So SO2Cl2, what is that? I have no idea. It gives SO2 plus Cl2 with this rate constant right here at 593 degree Kelvin, what percent will decompose after one hour assuming this is an elementary reaction that I've written down here? In other words, it's really unimolecular, all right? It's really first order. If that's true, here's the integrated rate law. Okay, so it's basically plug and chug from that point. I want to solve for A over A0. I plug in the rate constant. Here's the amount of time that we're talking about one hour is 3,600 seconds. I get 92.4 percent is left, so the amount that decomposes is 100 minus that, right? How long for half of it to decompose at this temperature right here? Well, I can solve for the half-life. This is the normal equation for the half-life of a first-order reaction. That's the rate constant, log 2, 31500 seconds. That's eight hours and 45 minutes. That's the half-life of the reaction. Now, we talked a little bit about reversible reactions on Wednesday, and what we said was, look, you can treat a reversible reaction like an irreversible reaction if you are able to remove the product as it's formed. All right, if I remove this HI as it's formed, then the rate of this reverse reaction here will be zero because there won't be any reactant present for this reverse reaction if I get rid of this. In this case, if we study the reaction from left to right, we remove it as, so the rate law would just be the rate law that you would expect for the forward reaction, assuming this is an elementary reaction. But in general, you don't remove the reactant. You don't remove the product, rather, as it's formed. You need to know what the reaction rate is with the product in there. So what about this more general case? Let's look at the simplest example of this. All right, A forms B and it's a reversible reaction. There's a forward rate constant and the reverse rate constant for this equilibrium. It's an equilibrium, isn't it? Okay, so we can write a differential rate law with respect to A, for example. There's going to be the forward rate, right, KF times A minus the reverse rate, all right, which is KB times B. That's going to represent the overall rate at which A disappears on the left-hand side. So let's say for the sake of argument that we allow the reaction to go until we don't measure any change in the concentrations of A and B anymore. We allow the reaction to go all the way to equilibrium. Then the time rate of change of A is zero because it's a flat line. It's not changing anymore. And if that's the case, then this expression is equal to zero but we have to remember we're talking now about particular concentrations of A and B, the equilibrium concentrations, right? Okay, and so in other words, that has to be equal to that at equilibrium. And so if I derive the equilibrium constant by putting B over A, that's the expression for our equilibrium constant, it becomes apparent that equilibrium constant is also equal to the ratio of these two rate constants, all right? KF over KB. This is an important thing to remember. So the equilibrium constant is the ratio of the forward and the reverse rate constants, yes. The higher the forward rate constant, the larger the K equilibrium, the greater the extent. Products are favored with respect to reactants. It all makes intuitive sense. Okay, I'll just continue this on Monday. All right, have a good weekend.


Welcome to Jalassette News.  As today's the thumbnail suggests, I think it's a new year and a new outlook. And I think this is potentially the year for crypto moving into 2022. And what's going to push it is what is already here, institutional funds. So we're going to take a look at how hedge funds can actually compete. We're going to take a look at some stories about what could potentially make this and be a catalyst. We're also going to take a look at the flip side and the downside by taking a look at what's going on in El Salvador right now. And finally, we'll take a look at tax help and the segment figure house story. And as you can tell, we're in a little bit of a different place as before for today's video. We've been slacking lately because we've had family in town on the holidays. But that's all over unfortunately. And now it is back to the grind. So as you can tell, this is the new house here in Puerto Rico. And we're going to be doing a story. So wait till the end. I'll tell you exactly what's going on. But to get going, let's talk about what's going on into the market right now. So today, it is the second, it is almost 4 p.m. Guainabo Puerto Rico time. It looks like everything's holding kind of strong. It's kind of going sideways. Nothing's really happening because it's Sunday. It's Sunday and we don't really have much going on. I mean, the only, I think the big gainers right now, I think we've got polka dot at 7.3% in the last 24 hours. That's pretty good. Avalanche up a percentage point. And I think, I'm not mistaken, chain length there is up almost 9% in one day. I never understood why chain link was so under performing because it actually has real world utility. I mean, we need to pull in that outside data into the blockchain. And without chain link, it's one of those oracles that you really can't live without. So it's always surprising me just how underwhelming it does. But there is times when it breaks out and there's just one of those times. So good day for that. But to really dig into it and really talk about what's going on, it really just comes down to there was an interview and it was with Anthony Scaramucci the mooch. And he's on the Real Vision Crypto, Raul Powell's channel. And he's here to talk about his hedge fund, Skybridge, and how much he allocated to the fund as far as crypto. And he was kind of trying to weight different things. And it's amazing to me because he is just one of many I think are going to come about. He talks about going from 4% to 20% and how that all happened. Just take a listen to make a lot more sense in a second. So here's the irony. I put 4% of not me, but my team. Our team put 4% of our fund into Bitcoin in November, December of 2020. The coins were anywhere from 13 to 18,000 a coin. The coins now are 63,000. This is Bitcoin. The 4% has grown and we've added to the position a little bit, but roughly to 20% of the fund. So yeah, 20% of the fund. I think if you're talking about how funds can compete and actually do things, I mean that's just a great story from Anthony Scaramucci. And when people ask, well, who cares about Anthony Scaramucci? Well, remember he's been in traditional finance for quite some time and he's one of the founders of Skybridge Capital. And I have to tell it's people like him and then also people like Ray Dalio who are thought leaders in that space. And I think when we start to hear these stories, it's not just us hearing these stories because we don't care. We already know where things are going. We have to get everybody else underneath our tent. And these are the stories that kind of push those people or bring people underneath. So this was a good one. And just very quickly, it states this is Bridgewater Associates founder Ray Dalio has clarified he's neither a raging bull nor a bear when it comes to Bitcoin. He told people that, hey, I hold something all the way back in May. The investor, Dalio agrees with fellow billionaire Bill Miller that one should allocate from 1% to 2% of his or her net worth into Bitcoin. Before we go on, Bridgewater Associates, first of all, what is that? What do they do? So Bridgewater Associates, it's the firm service institutional clients, including pension funds, endowments, foundations, foreign governments, and central banks. So if he's talking about, look, if we can just do one to 2% and then allocate that into crypto or Bitcoin in particular, if we take a look at the retirement assets total, this is just in the US. I couldn't find anything globally. Maybe someone can help me out. But retirement assets is $37.4 trillion in the third quarter of 2021. And that's Washington DC, December 16, 2021, $37.4 trillion. This is just for retirement assets. So we're talking about like 1% to 2%. We're like, yeah, okay, that's nice. That's cute. That's adorable. But in all honesty, we have a retirement crisis. We have a pension crisis. And that's going on throughout the US and globally. So the question is, well, how can you compete? Because well, we'll get in a second. But first, I will just say this, like, if we're talking about like the money that's out there, I mean, I talk about this all the time, but just look at the stock market. If Ray Dalio and Bill Miller are talking about 1% to 2%, the stock market has about $100 trillion right now. Money supply is about $100 trillion, global debt, real estate, you're looking at 280 trillion, and then wealth is over 300, and then derivatives is like 1 quad trillion. So you got a lot of different places to actually park your money into it. But then it comes down to this, well, how can hedge funds compete? And why should they compete? Because this is why this was from Tendies. And it talks about how only three hedge funds outperform the S&P 500. If you don't know the S&P 500 takes the 500 top companies, and it's just a fund that you can invest into. And of course, as these companies fall off or gain into, you start to invest into those. Now, of course, you've got the Facebook, the Amazon, the Microsoft, those different Google, those top five that take up like 20% or more, that's probably grown even more of the total S&P 500. So what these hedge funds are doing is they're saying, look, you don't need a fund like that, which is super easy. You can just do it in a fund. What we're going to do is we're going to take your money, we're going to take your funds, and we're going to be able to magically invest into all these different things. And we're going to have you a higher rate of return. Well, here's the problem. As of December 3, 2021, here's the information that we have. Only three hedge funds, three, have outperformed the S&P 500. And if we put this down a little bit, the S&P 500, just so you know, over the last year, has gone up almost 29% and had a monstrous year, great year, right? But if we take a look at this here, seven SEM Vest Impala and SRS are only over that 28%. All the rest of these guys, you could have just done just fine investing in the S&P 500 and not paying these guys a bunch of different money and funds. And there's a lot of different funds in here that didn't do too well. And actually, even the Mooch was talking about Tiger Global and how they're diversifying into these different funds and things like that. But even they only did 3% the year, 3%. That's not too great. So we're talking about how these places can actually compete. Yet they got to get into crypto. I'm not saying they have to, I'm just saying that it would probably be a pretty good idea to get them into crypto. Because if not, if I'm an investor and I'm like, what have you guys done for me? Because I mean, I can do this myself. I don't need you guys. I don't need a middleman to do this. And I don't need you to get into all these different funds because I know what to do. Because you are not doing the job that you're supposed to, which is beating this, the S&P 500. Now, there's other people out there that don't really like investing into crypto, they don't really like having their cold storage. So I think we still need these types of places to really bring them into crypto. But these types of things are what is going to bring the investors into cryptocurrencies and digital assets. And then to finish this up, I will just say this. For me, what I'm going to do is the same thing throughout this year. I'm just going to DCA in and out by the dip, HODL. But I'm going to do a little bit more of gambling, not so much trading. I call it gambling, but there's some asymmetrical returns. I'm going to talk to you about products that I'm going to get into. And I'll bring you along for the ride. You don't have to invest into that because I'm not an investment advisor. This is just financial opinion, not financial advice. But I'm going to tell you a lot of things that I'm going to be doing and bringing you into the things that I'm going to invest into, which are some pretty cutting edge new projects. So let me make sure you think about that in the comments section. And then let's go on to the flip side, which is El Salvador, because everything sounds pretty good when we put into a nice little package like that. But you got to always remember that for every moon boy out there that's like, it's only going to go up, it's only going to go up. You have to step back and just go, you know what? What is the flip side of this? Because I need to be prepared. This was an article that just came out that was pretty good. El Salvador's leader loved by crypto faithful, but not by bond holders. And before I get into this whole story, I'm just going to scroll down to this very last point. And it states, amid the collapse and bond prices, Bukele remains enormously popular at home. His approval rating is 85% in December, according to a poll by independent media outlet LPGDATO.  People seem to love him in El Salvador, but I'm not El Salvadoran, nor do I live there. So if you have any other information, let me know in the comment section, even though it's kind of, it's kind of opinionated if it's just one person, like I can just tell you right now, half of this country hates the president, neither half tolerates them. And some people love them. So I mean, if you got a poll, sure. Anyhow, but this is what's going on. The nation's overseas notes. This is for El Salvador, post the world's worst performance this year with losses approaching 30%, according to data compiled by Bloomberg, it's 800 million of bonds coming due in only 2023 and now priced below 80 cents per dollar, signaling skepticism that holders will get paid back on time. Bukele has said he plans to issue $1 billion in 10-year bonds next year on Blockstream's liquid network for a yield of 6.5%. Seems like a pretty good idea actually. Half of the proceeds would be used to buy Bitcoin. So it's all hinging on Bitcoin. And this is a statement from Jared Lu, Money Manager at William Blair Investment Management in New York. He says, there's a good shot that he's able to get this done and this is just going to embolden them even further. The path of getting paid back really relies on this model and this model relies on Bitcoin prices. There's one more thing I was thinking about when I read this. I was thinking about the El Salvadoran people because as I start to take in Bitcoin as payment on the Lightning network, they can immediately transfer it over to Fiat. They can do that, but some people I would assume some not 100% have listed into Bitcoins. They've heard about how great it is and the price appreciation and they've been doing that since the inception. They're probably not doing so great right now. I mean, maybe they really are dollar cost averaging, but last couple months have not been kind to Bitcoin. So if they've been holding, hopefully they understand that it's a long-term investment, but it's just me. And I'm in a third world country and I have to provide for my family and this is the only way that I can do it. And I see a dollar worth of Bitcoin is now worth 76 cents. I'm like, whoa, maybe this isn't the greatest thing of all time. I mean, think of it this way, even people in first world countries can't even get that straight and they're like, wow, I just lost 5%. I got to start to cash out. So just to take on the flip side and look at that and I got to tell you right now, the IMF and essential banks are desperately rooting against El Salvador. They do not want this to work whatsoever. So I'm saying that this is the year, this has to, I feel like this has to happen now. You can't stop the inevitable for what crypto is, but you can delay it. So let me just think about that in the comments section and let's move on to our last piece, tax figure help. This one was actually pretty funny. This was from Charles Hoskinson and he states, this is a meme, hello IRS. So my client bought $7,000 worth of Cumrocket and saved it for three months. They're in 6,900% interest. They then sold and took the profits to invest in NFT titties. But the dev rugged the project and they only managed to liquidate 10% of the funds. Can the client deduct gas fees for the minting and balance out the short-term capital gains taxes from said Cummys? Hello. And I thought it was fun. First of all, that's the first time I was able to read that without cracking a laugh, but it really is. It really is what it is because there's so much craziness out there. So if you're in the United States and you have to do taxes, like I'm gonna have to do taxes. I'm just gonna recommend CryptoTrader.tax. There is a link in the description. Looks just like this. And when you use that link, it gives you 20% off for CryptoTrader. I actually did a video too, and you can find there's a link right there that shows you exactly how to use it. From the time that I opened that up, it actually got the information in and was able to send it over to my accountant. It was 30 minutes. It's super simple. Also, if you use Voyager, like I do, guess what? They have a direct integration now with Voyager. So if you're looking for an easy way to do your taxes, that is the one. And then lastly, to end this all up, there was a video that someone shared with me. It was called CryptoMillionaires are flocking to Puerto Rico, and I got to watch this great video from CryptoCrow. Really good, really good video. It's him and his wife, and they talk about the pros and cons. Mostly, I mean, he's right. There's a lot of cons in Puerto Rico. I think even Puerto Ricans would agree with it, but it's a pretty good place. And I want to talk to you about this house that we bought, which I'm going to do this week. And I'm going to talk to you about how I use the crypto for loans, for the sale, for the down payment, how it all took place over months and actually years to get this whole thing done, because it's not just an overnight success. It actually takes a lot of time. And the reason why I'm talking to you about this house, it's not a flex on the house. Like, look at this, I got this great house in Puerto Rico. What it really comes down to is, and I'll go into all this, is how it is up.  If you're watching this video, it's probably you against the world. So when we're talking about getting into crypto and making these types of investments, who else in your family is going to do it if it's not you? And when I talk about these things, we didn't buy this house because it's just some place we want to lounge around in. This isn't 1950s when you do that. We bought this house for a specific purpose to do specific things and we're doing these things to take care of our family and our friends and the people within our circle. Because again, if we don't do it, ain't nobody going to do it. So really, it's you got to really put everything into it. Because if you don't, there's no one else that can do it for you. All right, so that's it for today. So look, if you liked this video, found a little value, give it a thumbs up, also consider subscribing. A lot of things we talk about are time sensitive and we're going to get even more time sensitive to talk about these new projects. But that's it for today. So thanks so much. We'll improve on the audio individual later. I appreciate it. See you in the next one.