This is covering the spread part of the fan tool podcast network It is time to talk some college football here on covering the spread because I'm not sure if you realize it said but a week from today We're talking week is zero. It is already that time of year We are thick into it with college football today We're gonna talk to you my Wednesday co-host doctor at fang get his read on some college football win totals break down What is college football betting model? Looks like get you said for another fun year of college football. My name is Jim saw this I am a senior writer and analyst for number fire comm joined here as I am every Wednesday by doctor at fang You can find his work at the power bank comm you can find it on Twitter at the power I can add we're a week away from week zero. How are you doing today? I'm doing well dormants 2 and 0 and you know, I was My son and I were watching the game on Friday and they were losing 1-0 to fryburg and you know they lost the the best goal scorer in Europe essentially over the offseason and They don't have geo rena back and I was like, yeah, it's gonna be a long season. They're not gonna be able to score goals I don't know who's who's gonna get goals and then and then they bang home three in the second half And another 2 and 0 so that would give you a taste for some of my soccer hot takes I had some other ones that I threw at Bill Connelly on my podcast the football show So we'll see if those seem as bad as as my take on dormant But anyways, I'm happy we're in the kids the 2 and 0 and They still haven't they still haven't played geo rena yet. So so maybe things are looking up They had they had key contributions from 17 and 18 year olds Yeah, I saw you and Bill tweeting back and forth Bill Connelly the SPN about Dortmund Is he a Dortmund fan, too? Or is that just you? So he is big into German football As part of his job. So when was that espionage and he went over and did a really long piece on Bayern Munich And I think that was kind of the start of it I don't think he's not a Dortmund fan But he would say he's a German fan and so am I I will wear the Dortmund kit now, but probably when they get out of champions like I mean I might actually have a Bayern Munich kit for for late spring because they'll probably be alive And it actually looked pretty good right now despite losing that one of the top goalscores in Europe over the over the offseason so You know, I mean, there's there's a wide range of I mean, there's a wide wide Range of ways to engage in European club football and so so we definitely stick with German clubs because we like them Okay, I like that. So we can you know, check out the football analytics show to get I hope Bill's takes on German football too, you know So the vast majority of the podcast was Was college football Disappointing, you know, who'd want to hear Bill Connelly talk about college football. We could instead get European soccer thoughts. Yeah He's really an expert on both. I know that's the fun thing That was definitely the fun thing. We could have we could have joined on about soccer for a while But at some point you gotta cut it off. Yeah, I just he didn't he wears both the hats very well I mean who can turn that down? So you said I was on the football analytics show, correct? That's right Okay, just check that out there to get some more Bill Connelly thoughts some more German football thoughts today here on the show We will stick to the the boring side of things here at the college football analysis We're gonna talk about Ed's model his college football betting model what it says about this year in terms of win totals and Try to just get a feel for what that model what goes into it in case you are a new listener who doesn't know What goes into Ed's model? We'll talk about all that in just one second But first a reminder to make sure you are subscribed to covering the spread wherever you get your podcast We once again are here every weekday Monday through Friday breaking down MLB whatever it may be We had Brandon Caduola on talk PGA yesterday With the timestamp for that isn't the podcast if you want to skip over the baseball stuff from yesterday Check that out in the podcast feed on covering the spread jump to the timestamp branded to get his thoughts on the BMW Championship for some outrides and non-outrides as well tomorrow I'll be talking some baseball and some NASCAR and then on Friday Tom Vecchia will swing by and break down Whatever he wants to discuss from a betting perspective because I'll be at a bachelor party and will be unavailable At the end of this week next we can go to Ireland for the Northwestern, Nebraska game the most natural Place to host a Northwestern versus Nebraska game because why not? I mean when you can watch Northwestern lose by 12 and a half in Ireland, you got to do it, right Ed Shoot, I got to make sure I take that game is neutral. Yeah. Well, I don't know. It shouldn't be though because One coach's name fits Gerald. I know that like Scott Frost is like, you know, potentially I don't know. He might be Irish like Fitzgerald feels like it should be worth like three points in Ireland. That could be just me I don't know. I'm not trying to encourage your model But yes, that will technically be a neutral side if you don't want to count the Fitzgerald narrative in Ireland We'll talk about college football in just one second But first NFL kickoff is still a few weeks away You can get in on the action right now on Fandal Sportsbook with their NFL super win bonus right now Anyone who places at least a $50 Super Bowl winner bed will get $5 back for each win Their team has during the regular season There are a ton of other futures markets available the like team win totals division winners player props and so many more There's no better place to get ready for the football season that on Fandal America's number one sportsbook and official sports spending partner of the NFL Must be 21 plus and present in select a estates only Bonus issued is non with throwable free bets that expire seven days after receipt max free bet $50 restrictions apply See terms at sportsbook.fandal.com gambling problem call 1800 gambler or visit fandal.com slash rg in Arizona 1800 next step or tax next step to 5334 2 in Connecticut 1 888 789 777 or visit ccpg.org slash chat in Indiana 1809 with it in Louisiana 1 877 770 stop in New York 1 877 8 hope and wire text open Why in Tennessee call the red line at 1 888 997 8 9 in Wyoming 1 800 5 2 2 4700 in West Virginia 1 800 gambler dot net. Let's take a notice and college football and Ed I'm listening a lot of our listeners have been listening to us and heard about your college football model in the past they probably know what kind of goes into it, but There are probably some new listeners who made you listening here to college football for the first time and may not know What you care about when you're trying to model out college stuff So what key things are you looking at when trying to analyze the strength of a team from a betting perspective on the college side of things? Well, I presume you want to talk about the preseason What's doing in in particular, right? So this season I kind of made the decision to change some things around I used to run a model that I believe is a little bit out of date it is not College football changes and you have things like the transfer portal and you have teams like USC that are bringing in elite quarterbacks elite wide receivers and You know like you can either put in a ton of work to try to account for those types of things But I also do a lot of things with NFL and college basketball and there's a lot of other things on my plate So I've changed things up. So instead of on my site There's a couple different things I do I still have a basic model that I use from My own metrics. So every year I have team ratings that are based on margin of victory Adjusted for strength of schedule. Those adjustments are made by the algorithm that I developed and What in the preseason I will take four years of team history and run a regression model to figure out where the team should be for this upcoming season and So it's a basic model. It's not going to be the most accurate It's clearly not accounting for returning starters or what teams get in the transfer portal I still do we think it is useful to put in In in the model because it is different from a lot of the other kind of public models that you'll see out there and I do do shrink the schedule adjustments pretty well and I feel pretty confident about that like for example, I have James Madison pretty near college football average and A lot of the other models don't have James. So James Madison is the newest FBS team They're they're making the jump this year into the Sun Belt I'm a lot higher than a lot of the other models and I think that's because like I'm adjusting for strength of schedule and When you look at James Madison's results, you look at who they played like they've been pretty good Now being FBS average is probably a little bit of an overestimate for James Madison because they did lose a lot of talent But my model is saying program-wise like these guys deserve to be considered near FBS average And if they are FBS average, they're gonna essentially gonna be at the top of the Sun Belt with the app states and the Coastal Carolinas of the world So I do want to acknowledge that you know things have changed my model is not as good as it used to be So on the public part of the site I take that model and I also take a couple of publicly available college football models that I've back tested And it's a combination of those things. So that's what's going on with What you'll see on the power rank on the public part of the site and and those are the preseason numbers that I use one thing that I do hold back from members is Another preseason model in which I take Wind totals in the markets and then I adjust for who teams are supposed to have played So I back out a rating that's consistent with the wind totals for 131 FBS teams So this is useful for you know week one spreads right because I'm getting a rating and you know You account for home field yada yada and the fact that I actually do not have north-west site I'm this is why I'm glad I talked to you I make mistakes like this and I think I I I think I just completely forgot to go through all the neutral games week Week zero week one. So really need to do that But so that is a model that is Is something that I use I save it for members of my site because I've actually found out to be the most accurate and predicting The spread in games, especially over the first couple weeks of the season, which is really what you need it for But it's also not very useful when you're trying to bet against wind totals because that rating should be exactly consistent with with what the market wind total is and and it's designed to be that way and that's what my Yeah, I had to develop some methods in order to do that. So it's not useful for betting against wind totals So today we're talking about wind totals I'll be talking more about the public stuff that you can see on my site Which is a combination of my models and then some other public models that I've tested So basically it's lean it's depending on wisdom of the crowds and that's something you've discussed a lot in terms of being a Powerful tool for betting Why yeah for people who don't know that why is that the case? Why is wisdom of the crowds such an important thing for us to integrate if we want to strengthen our numbers? I mean, that's a deeply philosophical question I don't know if I can answer that on a true really why I Do know that it works. Yeah, I do know that if I really wanted to save my edge. I should shut up about it It honestly works I mean and there's a couple of different levels of wisdom of crowds here, right? the markets are one aspect of wisdom of crowds and you have a lot of people betting on these college football wind totals and So that there's that crowd and then there's kind of the crowd of different computer models and Each one of them has its strengths kind of like I tried to talk about with James Madison and then maybe the USC each model has its strength and You know turns out the combination of most of them is going to be best on average, you know, for example USC I talked about in My numerical model, they've been kind of terrible under under Clay Halton and now they have Lincoln Riley I think they're in the 50s. I think they're in the 50s in Bill's S&P preseason. He's gonna have a new one coming out. So so check that out when it comes out They're 14th my market model So just to show you how different things can be right the market is Clearly considering that he's bringing in Kayla Williams as quarterback Jordan Addison the wide receiver from Pittsburgh who who might be the reason that that offense exploded last year I know Kenny Pickett obviously went on to do some pretty good things and in the coordinator Mark Whipple is actually at Nebraska But kind of I don't remember that that offense wasn't very good before last year. No So I'm not exactly sure about that hire. Yeah, it was not good. Kenny Pickett was not good last year Was not good. Yeah odd But I think that it's it's interesting that that you're leading on smart people to kind of help guide things and Whenever you can have more smart minds influencing the way things go. I think that's always an advantageous thing for sure So we're focusing for today on the win total model That is the one that blends all that stuff in and we'll talk about the other model Like you said next week when talking about the week zero specific games Let's dive in here to some win totals over at Fandals Sportsbook starting off with the big 10 side of things We got some pretty big win totals Ohio State Michigan, Wisconsin all at nine wins or higher at Fandals Sportsbook So when you look at this market ad any number sent out to you as being values in the big 10 specifically The one that I like most is Illinois under four and a half So Brett Bealmore came in last year and he kept a lot of guys on that team a lot of super seniors and you know I had a pretty decent five and seven season in 2021 but as Bill Connelly notes like they're a hundred and third in returning production coming into this year So they lost a lot of production on both sides of the ball They don't bring the quarterback Brandon Peters is no longer there after I think six years and in college football spanning like at Michigan in Illinois and I don't know the quarterback position They got a couple of other power five castoffs Arthur Satowski from Rutgers and Tommy DeVito from Syracuse You know really doesn't give you a ton of confidence there. So You know, I don't know. I mean this this is probably actually when total I liked the most when when I was looking over this You know, they're gonna be fcs Chattanooga But like how are they gonna get over four and a half, right? I mean You know, they they do have like kind of toss-up-ish games against Indiana North Northwestern and Cannot read my handwriting But but they have a couple of toss-up games You know, you kind of expect them to regress a little bit, you know, just losing so much, right?  This is a data-driven question So feel free to say I don't know but we've talked a lot about like third-year coaches, you know That's when they get there their guys are in there further and does that window change at all? With the transfer portal stuff. I because I don't know and you can say I don't know either But like it is it is a shift like you were talking about Do you think that window will shift with what is somewhat a new era in college football? It's hard to give a dated based response right there because the transfer portal is you know I mean the the transfer rules have changed relatively recently so So I don't know Obviously, we've already talked about USC multiple times, but like they're they're using it I have a couple other like Nebraska's using it Because Scott Frost needs it and you got to pay attention to that kind of stuff, right? I Know we talked about Bill enough, but he certainly deserves it like I just go to I go to his write-ups So yes, I'm right. I think I think you need to sign up for ESPN plus But it's we should sign up for ESPN plus just so you can watch Bundesliga, right? I mean it I mean it's like Kind of the best deal ever and you get Bill Connolly. So he'll you know, he'll devote I don't know 300 or 400 words every program to give like what's the biggest question here, you know Are they loading up on transfers and the answer is yes for Nebraska and the answer is no for Clemson despite how bad that offense was last year, so Couple hundred words to get you ready for every team It's the resource I use so if you want to if you want to bet these wind totals you want to bet games I would I would highly recommend Checking those out. Yeah, read Bill Connolly's just good advice. Just just good advice broadly Read and listen to Bill Connolly is good advice for college football. Okay Let's go now to the SEC and talk about the wind totals there over at Fandall Sports Book Anything's popping for you on the SEC side of things for this year so the numbers really like Auburn over six and a half and You can kind of see what's going on. They were one and four and one score games last year So that's gonna tend to regress to 500 if you remember they played off they played to Alabama really tough Towards the end of the year. I think they were up in that game or you know, that was a one-score game against the team that made it to the national title game and Lost a lot of close games towards the end of the season got off to a good start It's Brian Harsons first year and then you know, I mean there's a lot of drama because it's Auburn And it's a big blue blood program and they decided to keep Harsons so he's there and there's a huge number of turnover In the coordinator positions and stuff over their off-season and you know, they do have a question at quarterback Bowen X was never that good last year They they break it probably Zach Calzada from who played at Texas A&M last year is gonna come over probably win the job but you know not Not inspiring too much confidence there at the quarterback position But the defense should be great. The defense was pretty good last year There's always a lot of talent and in general, there's always a lot of talent at Auburn. That's never really the issue So you're looking at six and a half win total, right? So So you're probably got four wins that you can count on the three out of conference and Mizzou in the out of division game and then you're probably not beating Georgia in Alabama So let's eliminate those so the the rest of the games by my numbers look essentially toss-up ish So that's six other games. So You know, you got to hit three of those to go over so you so I haven't bet this yet, but I'm very intrigued by it I think it is something that you know There's not like when when you look at and I'll post all these win totals from this public model on the site They're not up yet, but you know, there's not a ton of differences, right? It's tough to find too many teams where where the projected win total is different from from what the markets have This is one of them And I actually think you can kind of understand why the market is a little low Just with the drama there with the questions about harsh in But it's Auburn, you know, you can you can kind of imagine like a ten-win team You can imagine it all go into crap and a three-win team. Maybe right? Yeah So I think there's a wide range of possibilities here and Yeah, so so that's one that the numbers like all right So I'm gonna quiz you or I take it ask you a question here because you can get a different number depending on where you go Fandal you get the push at six because it's at six flat and it's minus 115 on the over you go to Redacted a different sportsbook. You can get over six and a half at plus 135. Is that Plus money worth it for you given how many Toss-up gains they have over six and a half at plus 135 or do you rather have the leniency of the push at six at fandal at minus 115 That's actually something you can quantify and I have some code to do that. So Yeah, I mean you can just run some simulations and figure out the odds and Exactly on six. Yeah, I don't have the answer off the top of my head, but I don't know. I mean it feels like I would rather bet over six and knowing that it has a pretty decent likelihood of landing on six Yeah, okay. I like that. So check that out That one is six at fandal minus 115 on the over and the Illinois under four and a half is plus 110 at fandal as well Any other wind totals you like for this year where you're finding value fandal has I think most I don't think they have all 131 up unfortunately, but uh, you know bummer for you building out your Wind total model there, but any others popping for you right now I think last time I checked I don't we don't want to throw John Shearan on the bus I think they were just missing a couple of independence. Okay, New Mexico was in the new Mexico states of the world Uh, yeah, let me throw a couple more at you. Um, they actually think the the numbers suggest a massive edge on Arkansas under seven and a half and Sam Pittman has come in and done a great job over two years like this program was a mess And they had a really good season last year. They're pretty good on on both sides of the ball So I feel like This number in the market is a nod to say we like Sam Pittman. We trust this guy But you know, they I mean it's it's hard It's hard to be a good coach in in the sdc west and a lot of people who try to do it with varying levels of success Uh, they do get the quarterback back On offense. So they should be good. They do lose three of their key receivers and they Lost a ton on a defense that was that was pretty good last season So they're rebuilding with with transfers there. So it's it's this seems like one where the numbers kind of don't support The optimism over the coach. I feel like that's kind of what uh, the that analysis is saying to me Um, it really did like Arkansas under seven and a half wins. Let me Pull up the total It was Arkansas. Yeah, I had the the model had at six and a half Okay, that's about as big as the difference as you will see So, you know, not not not not to necessarily say the market is wrong. I mean, maybe there's something I'm missing and maybe Pittman is Great, but it the numbers don't seem to to match that up um, and uh, yeah So another one that I've been thinking about is Michigan State So this is a team that I felt was clossily overrated and just remember all the biases that I have living here in Ann Arbor Uh, and the fact that Michigan State did be Michigan last year um, but last year that Michigan State team was a team that Kind of got fortunate in terms of big plays like as in they got a lot of them on offense That helped them a lot and they did not give up a lot of them on defense And and the reason I say that is when you look at the yards per play versus success rate On offense and defense the yards per play were significantly better than the success rate. So on both sides of the ball, they were uh, they they they They were fortunate in terms of not giving up big plays. Uh, I think the defense was particularly bad And uh, I think they were in the 80s when I look at success rate adjusted for who you played The good news is that they bring a lot of those guys back. Uh, the bad news is that they might not be very good football players Uh, I do like Peyton Thorne as the quarterback. I think he's pretty solid He's got one of his top receivers back Kenneth Walker is gone Probably matters a little bit because we're talking about college Right and not the NFL running back student out of there Also, you're talking about explosive plays and those those are probably Kenneth Walker on the other a lot of those Yeah, michigan had a really hard time tackling that dude last year so seven and a half wins from michigan state And the model is pretty much at seven and a half Uh, I would definitely mean under uh, if you were to bet this I would definitely suggest the under I I don't think I I can see a situation where the bottom falls out and everyone Is uh, asking a lot of questions about giving milk Tucker that obscene contract Uh, I think he's got a lot to prove. He had a good season last year. So let's give him credit for that But you know, not not a ton of wins at michigan state before that not a track record before that I personally think he's got a lot to prove right to to live up to that contract that that he got And we'll see whether you can do it. I mean, he certainly has a good good start with the quarterback there But uh, I think he's got a lot to prove. Yeah, uh the Under there is a plus 100 f handle sports book on uh, seven and a half, but also we got to mention, uh, mel Tucker Uh timing king Because he signed that extension last year. I believe right before the ohio steak game where they got toasted And so even if they regress Full respect to our finesse king mel Tucker for getting that contract done before the ohio steak game before Stuff got real bad in that game They might go under this year, but salute to you sir for getting that contract done before that game Let let's uh, I mean he probably had nothing to do with that. That's his agent. I have no idea who his agent is but That was either right someone deserves a raise. That's all I can say We could look back upon this and say look ohio state had the greatest wide receiver room ever in college football That might happen again this year at part two Well, maybe well, they they lost first two first round draft picks, right? Yeah, but they got another one who was their best receiver in the room last year who is coming back So jackson smith and the jibas is just Insane and some of those other guys could be just as good. So um, but like You know when you talk about We could be sitting here in five years Like watching those three guys just dominate the nfl. I mean that that's a distinct possibility And then maybe you know, that's that's the pass that mel Tucker gets and the secondary gets better heading into the 2022 season now and and it's all fine, but But yeah, I mean, I think that was a perfect example to just just how like they didn't get a donut defense um and and The lack of explosive plays earlier was was was very helpful for the michigan state team Yeah, they have some regression on offense in terms of those explosive plays that could further expose the defense and those issues there So uh some frailty in the michigan state team. So I'd like the under seven and a half at plus 100 That's all we got here for it today on our final pre season edition of covering the spread for college football because next week They're actual gains. We'll still have a show next week talk college football before I hop on a flight My air lingus flight out to Dublin to go watch the cats uh over in ireland But it's going to be a blast. It was fun to talk some college football with you ed talk about your numbers You mentioned that some of these numbers are public people want to find your public numbers Where can they get those and where can they start it to become a member to get the non public member numbers? The public numbers are at the power rank dot com. It's actually all at the power rank dot com Uh, so you can check out the college football rankings that will be uh available By the time this podcast drops and then I will post the win total projections from that on the site And then you can also figure out how to become a member. Um, feel very good about my college football model heading into this year And um, yeah, also, I mean and to get it to kind of get a taste for what is going on I would suggest signing up for the email newsletter I I give a sample of of some of my member predictions and some thoughts on about those predictions So you can sign up for that at the power rank dot com Anything going on for on for you on the football analytic show for this week? Yeah, I haven't done the interview, but uh, there will be a pod and then Definitely check out the episode with bill getting some really nice feedback on that on his yearly appearance And then, you know, we're a couple weeks away from the preview series Yeah for the football analytics show. So this is like a daily series. Uh, it'll start On august 28th or 29th or whatever that monday is So these episodes are about 10 minutes long And uh, just give you a number of space perspective for both betting and thinking about the 2022 season And you launched your patreon this week as well. Yeah, patreon. That's exciting. How uh, you happy with things so far Yeah, absolutely. Uh, just honored that people listen and um, a fraction of them are willing to part with their harder and money to support me that's always, uh, it's just an honor and and uh Yeah, no, it's uh, it's good. I'm looking forward to doing it more. There are some uh, patron only episodes so there's one on home and rest advantage in the nfl Which is interesting because I was kind of very surprised with the results and the journey that it took to get there. So Yeah, so every month, they'll be you know, there'll be one premium episode Perfect love to hear it. Uh, excited about that congratulations to you all launching that and uh, go check out all of ed's Work at the power rank dot com and check out the uh podcasts as well on the football and analytics show Check out the patreon. I'm shooting you links to that over at the power rank as well. Find ed on twitter At the power rank. I am on twitter at jim sonnis j i m s a n n e s as a reminder Make sure you're subscribed to covering the spread wherever you get your podcast tomorrow breaking down some mlb money lines for thursday They'll be look at heads because i'm recording it wednesday night But should get you a better number at that point as well then talking some NASCAR for Watkins glenn This weekend on the thursday show find that right here in the covering the spread podcast feed Good luck to you with all your college football win bets. We'll talk to you once again tomorrow To get you set for some more quality bets. This has been covering the spread right here on the fan dual podcast network


Welcome to this webinar around event-driven systems. I was thinking, talking a little bit about my thoughts of how to design events first, microservices and APIs. Really event-driven, but with an emphasis on events. That's why it's called events first, microservices and APIs. My name is Jonas Bonier. I'm the CEO and founder of Lightbed. I created Acca. It's like a long time ago now in 2009. And you know, the last product we've been pushing out, we've been working on the last four years we've pushed out. Last year is Calix. But this is sort of a general talk that is generally used for regardless if you use Calix or not. But I'm also going to, you know, lead in how Calix can fit into the picture and making things a lot easier at the end, so to speak. So I hope you stick around for that. Let's get started. So I assume a lot of people at least want to do microservices. And hopefully you're doing it for the right organization, microservices, APIs. And hopefully you're doing it for the right reasons, you know, that a lot of focus I think personally should be about scaling the organization. You know, there's a lot of benefits as we will, in most of this talk, we're going to be on the technical benefits. And I just want to have it said that scaling the organization is likely one of the primary drivers for for my for microservices and having multiple independent and fully autonomous teams being able to build and deploy. And in a features without getting in each other's way, so completely independent independently. The problem though with microservices, if you're not ready for it is that it's a quiz, it's quite a big shift from the from the monolith. When you know when we when we move to microservices we enter the world of distributed systems and that's really the world. I'm not determinism, you know, in a way, we sort of exit the boundary of the service, you know, we enter through this wild ocean, so to speak, of not determinism. And this is the world where, where systems can fail in the most spectacular in an intricate way when information get lost and reordered and garbled. And we're, you know, failure, failure detection, which is one of the better tools in distributed systems is, you know, it's, it's more or less a guessing game. And this, this is the world that might sound terrifying. If you're not used to it, you know, if you're if it's all new to you, but I have to say, you know, that is, this is also the world that gives us solutions for a lot of the hard problems. You know, there are, there are, you know, it sort of enables us to accomplish things that we can't do to just working on in a single machine, you know, on a single core or on a single part, etc. Because it gives us solutions for resilience, you know, for elasticity for true isolation and a lot and a lot and a lot of other things.  And what I, what I mean by microlith is that you have, you have this method calls that are replaced by synchronous RPC calls, and you're still using CRUD, you know, in a fully blocking way. And by, by, by, by bringing, you know, blocking IO and, and, and, and, you know, blocking database calls and all these things, you know, over from from the monolith where they, where they usually work very, very well over to the world of distributed systems where we have, we have, you know, we enter in a strong, strong temporal coupling, and this, and this, and this, and this strong temporal coupling limits us in the way we can to scale scalability and availability and also extensibility and, in my opinion, it's also maintainability, you know, you sort of start piling up complexity as you, as you, as you go along instead of having it on a, on a, on the same level, you know, across the lifecycle of an application, I think we can do better than this. I know we can. And thinking in events can help. Domain driven design from an events first perspective, I really think that is, that is sort of a gateway towards really good, you know, system design and architecture. So let's talk about that, you know, what, what, what, what does events first domain driven design mean, and let's try to sort of view the world through the lens of events. Okay. So this is one of the gifts or a world of warning, you know, domain driven design is really a great tool, but it can, it can, it can easily lead us down to in the wrong, in the wrong path and Greg Young said a few, a few, a few, a few years back. You know, in the domain events, it forces you to think about the, the behavior of the system as opposed to thinking about the structure of the system, you know, the, the problem with domain objects and things where we taught with ddd but also you know programming, you know, and so is that is that it's focused you also it, it, you know, it forces you or it leads you to focus on structure too early in the, in the design process. Well, while I think that we should, we should look at the events. We should not focus on the things, you know, this is what we've been taught in all the back of university when I when I took my first C++ course and it will get got introduced all the object oriented programming. It was, it was, you know, it was, it was taught that one should find them find the nuns, you know, because these nuns will become my my my objects in the you know in the in when it comes to domain driven design and my domain objects. Instead, I think that we should focus on at least first, you know, we shouldn't ignore the nuns and the things of course but we should focus first on what happens, you know, the verbs, we try the verbs and because the verbs would lead us to the events while the nuns lead us to to our more more rigid and stationary objects. Okay. But let's, let's take a step back and look at what is really an event and what is the nature of events events represents immutable facts of information. And facts only accrue knowledge can only grow you can't sort of unlearn and for sure you can't forget something but but but but in, you know, on the conceptual level, you can only accrue knowledge and facts, you know, just accrue. This however, you know, of course naturally, certain effects can be regarded and ignored. You might not believe in something that someone said we don't we don't have to accept everything that's being that we're being told is also very important that that events or facts can't be retracted once they are accepted, you know, then they're if you accept a fact, then then then they're part of your of your knowledge or pool of knowledge, so to speak. And also events and facts they are they represent something that has already happened, so they can't be deleted once once accepted. But of course they might have to be deleted for you know for legal reasons you know I think GDPR or more more at least reasons and so on. It's important you know in the way when I say that that that facts only accrue I mean is of course natural like new facts arriving can invalidate all facts or existing facts, because we, you know, we learn and we might change opinion based on new information. So, so we should ask ourselves you know what are the facts mind the facts like a detective, and one really good tool for that is event is event storming. You know, event storming is sort of very practical has on technique when you were bringing all the stakeholders domain experts and programmers into one single room, and your brainstorm using posted notes. And with the purpose then or trying to find the domain language and how we can talk and communicate across these different groups, you know stakeholders and programmers and so on, but do that through events. And we do that by trying to understand how data flows and who's talking to who and an understanding causality I mean what is what is leading to what how facts are causally related, and so on. And the, and the whole idea here is that to really understand how the system functions how it works in real time, not just like a map of stationary objects that might communicate you know that for modeling the objects and the nuns that I talked about. I really try to understand two things. First, the intense. When when we talk about intense we mean looking for things like Sir, these are hints for intense you know communication conversations expectations contracts between parties you know transfer control from one party to another. We also look for for for the facts, and when it comes to the facts you know hints for good facts or state history causality notifications transfer of state, instead of transfer control.  So this is something that I think it can be can be helpful to to to think about. So let's try to understand how commands and events, you know, work a little bit better here so commands you know they, there are the object form of the method, or an action, or over request. Okay, they're always stated in the imperative, you know the create order or ship product like do something. Well, you know, well, then we have reactions. Reactions, you know the represent the side effect, the result of that command, you know, create the order in order might be created that that sort of causing a side a side effect. But once you have done the job of sort of executing that order, for example create create or created that or then you create a fact, representing, you know, the fact that something was done. So, so an event is really a fact that some representing something has already happened. So they so so events should be always phrased in past tense, like order created, instead of create order order created something that already happened or product shipped, and so on. Make sense. Everyone's nodding. I hope at least. Let's dig a little bit deeper here so and look at the different between commands and events you know commands are really all about intent that they are directed from one party to another from a to B, you know, they have usually a single addressable destination. They, they tend to model personal communication very very well, and they do have a distributed focus. Okay, because they move across address spaces from one component to another from one system to another from from you know into message broker and then off to somewhere else, whatever it is. And they tend to really sort of model very well command and control events are very different you know there are intent or intentless. There are usually in or or true events should be emitted completely anonymously. They just happen you know for for anyone that's interested to observe can be zero can be 10 can be 100. The one emitting the event doesn't care he missed the event and whoever's interested in listening to that can do can do so, as you know, as much as he or he like she she like events model broadcast you know sort of speakers corner, you know me talking to you here I'm, I have no idea how many are listening or if I'm making any sense but I'm making my statements and hopefully state facts, regardless. events have sort of a local focus instead of a distributed focus I only admit events locally they might be relayed in distributed fashion using some other mechanisms but but but but you know concept conceptually you should think about them as happening locally or commands usually only make sense, if I you know in the distributed setting I'm telling someone else to do something. So events really model autonomy versus commands model command and control and autonomy is good right so events really lead us on a really good path here, but but so I think that we should, you know work with the events and let the events define, you know the boundary context and define the protocols that define that you know the the promises that we make tonight or component make to NASA world and and and defines also what happens if we can't keep those those those promises and in a way sort of these are inverts that the control here it's actually characteristic in in in control, and any and in charge of his own destiny. So the question is then how can we do how how can we do that. What are the characteristics of an event driven service. First, you know event driven services they receive and react or choose not to react it's okay to disregard, you know, but event driven service receive and react to facts that is coming his way. They publish new facts. Ideally, I'd say, you know it's not religious here you know sometimes it might make sense to publish facts in a synchronous fashion but I think ideally, they should be published asynchronously you know without any expectation that anyone will ever ever do anything to listen, you know, but it just publish new facts as they as they are created to the for the rest of the world to listen and this really has said inverse the control flow. And in and as is as such you know minimizing the coupling between components and increasing the autonomy, all good things. A lot of people are asking me what about me mutable state, you know, then then if everything should be immutable and immutable you know as a reputation being hard to work with and so on. I'd say mutable state is just, it's just fine. The important thing is how you work with it. I think it's fine, but it needs to be contained. It needs to be non observable to the rest of the world, because if other if the rest of the worlds are depend on mutable state, then they will depend on things that change, you know can change at any point right under the fingers. While while another other component is using it or observing it you know that that that that calls for a very, very brittle design. So so what you want to do you know is you want to contain it in service safe haven and only use mutable state for local computations. Okay, but when you're done with your processing and you're ready to tell the world about your results then you then you can use those immutable values and publish them as facts and to communicate I did this you know this is my result in the published that to the outside world. You know this means that others can then rely their reasoning and their actions based on stable information. Instead of something that might just change at any point in time. Let's look at a little a little example here. Let's say we have we have we have a user it sends a command to this this queue this mailbox or you know in this in this service and some sort of side effect is happening now. So that generates an event. It's it's it's sent to some sort of event stream where other services then can can can pick can pick can pick that up and choose to act on these on these events, or on this event you know single event that that happened. The interesting thing here now you know that this also is a really, really good it's not just you know gives you really really loosely couple architecture and and and and all the benefits for scalability and resilience and all these things it makes it very easy to integrate, you know with with external systems and integrate with databases and other other data storage is you know because of course you can replace one of these services or add, you know instead of course place that you can add databases and then you can sort of like a sort of external systems. You know we can they can all just subscribe to this event that happened and sort of built up their knowledge base of what's going on in the system. It's very important to understand that for this to work very well, you know in terms of the of the constraints of distributed systems. I really think that you know you need to dive into eventual consistency here which might be a little bit scary but it's okay you know it's not as hard as it looks and there are great patterns and tools that will help you work with that. You know if if you do that you know that this pattern is really really good for also managing failure, let's say that that that one of the services crashes here then and loses all this state, you know, then you can just re subscribe to this event stream or pull everything that it missed, or perhaps even like pull everything from it wasn't like dribble on disk you know you can pull everything from from from from from the start of the system, you know, if you but then you need to rely on things like events or I'll talk about in a second, but but it can it can just continue you know, sort of pulling events from from from where it left off when it when it crashed. So, so it makes it very very easy to deal with things like in the partial failures and having having a sort of rigid and very structured way of recovering from failure based on based on events. Do you remember, sort of, you know this picture what has this wild ocean of non of non determinism. I really think that events can help us or craft this autonomous islands or safe islands of determinism and sort of strong consistency and also sort of safe havens in this whole wild ocean of non determinism, you know, in which we can sort of live happily under the illusion that you know time is absolute that there's a single now, you know, and that and that the world is is deterministic, because in within each one of these little islands, no we can sort of pretend that the world is is is deterministic is single threaded. You get you pick a one command after another or one event by from another and you and you and you can execute in things in a linear fashion. The interesting thing is that then you know things can throw crash and burn around you but but but you don't lose your sanity in this little small safe island, you know, of determinism, so to speak. And so, to model this, I think we, you know, we need to go back to domain driven design and and and a really good tool here is the entity. You know, the entity is really is really our, our, our, our sort of unit of, of the integrity of consistency of our unit of failure. You know if it and also our unit of determinism, you know, an entity is always atomic if it sort of it fails as a whole, it moves around as a whole is sort of brought back to life and recovering from failure as a whole. And the entity means that you know that if you if you build it, you know, using event driven design, it is fully autonomous. And the question is then, how do you then coordinate state between all of these little islands, all of these sort of entities. Okay, we ensure consistency and consensus across these these islands, because it doesn't help much if we if we if we have full control in each one of these boxes but but there's no way making them, you know, work together, because I mean all systems are comprised of many different parts of course and they're all as important. So how, how, so how can we put together systems of these little islands them. Yeah, Pat Allen this that is that is, you know, one of my heroes, I've learned so much from him, you know, he talks a lot about you know, defining sort of clear boundaries between certainty and uncertainty.  Okay, then we have outside data. That is like outside our little bubble here. He calls that blast from the past. That's our events and our facts are flowing between these islands. And then between the services we have what he calls almost, you know, practically hope for the future. That's our commands, you know how you can dictate someone to do something or order someone to do something. I think this is a really good framework how to think about about the world that at least help help me a lot. You know, and is there a embarking on it on a journey like this if you if you if you model your world using events, and you admit them into an event stream that others can subscribe to. And then then you can use that event stream as a communication fabric between components or services you can use it as an in this integration fabric as I showed you earlier. You can use it as a replication fabric, you know, I mean, means are having some active passive replication where you always have a passive hot standby because that's just consuming the events and in the case of failure. You can just flip, you can just flip over there and it's everything is ready like it doesn't cost you much at all almost anything to have to build the you know really solid replication into the model here. You can also use the event stream as a persistence fabric and that is something I'd like to dive in a little bit deeper on here and talk about event based persistence. You know, the, the problem with crowd, you know, there's a little crowd is great of course it works beautifully in them, you know, in the in the sort of safe haven, you know, say, of the monolith where you can, we can where you can assume a lot of more things than you can do in a distributor system.  The crowd as I said is totally fine for isolated data. But the, but you know, the problem is that that that the consistency across crowd services is really, is really, really hard.   I really think that strong consistency is the wrong default in distributed systems. It's nothing wrong with strong consistency when it when it fits is beautiful it makes our lives a lot as developers of course a lot easier. But I don't think we should opt in on strong consistency as the default as the first thing we do. Why because it's really hard to make available. And you know, on the question. Okay, how does it map to the real world. Yeah, when you look at it and think about it, it's actually not how the real how the real world works at all. We never have strong consistency in the real in the real in the real world. And, you know, the real world is all bent on events flowing causality, you know one thing leading to the next, you know, spring it back from here and so on for all the asynchronous and fully autonomous, and so on. And we get by in the real world, just fine right so so so it's not so scary to dive into that world when it comes to building systems as well I think, because if we do you know if we if we use strong consistency as as as a as a default and and and you know it I think it just makes things work worse. And the question in that is then, what can we do. We have to rely on on an eventual consistency and you know I don't think as I said he says it's it's as scary as a lot of people say it's it's actually, I just encourage you to relax, and just think about how can I best model the real and because usually that's what we do as programmers we try to model the in some sort of business, business cases or business rules and you know operate you know model some some real world scenarios and, and when you really think about it it's usually all based on a strong consistency in the end. And, and, and so start with that start with try to model it using using eventual consistency and when you see an opportunity for strong consistency. Feel free to use it you know it's great stuff. But, but, but you need to be be sure that that the price for using it is not too high as effectively. But the main problem with crowd is is updating place and Jim Gray another one of my heroes. You know he, you know he's one of the ones doing most groundbreaking work on transactions and transaction processing. You know he said, in 1981 that update in place strikes the system designers as a cardinal sin, it violates traditional accounting practices that have been observed for hundreds of years. You should let us sink in. And again, you know, we should learn from the real world. Okay, if updating places so bad I mean how, how do we, how do other, other, you know, you know, so fields or, or, or, you know, industries doing it. I think we should just go back and look and relearn basic accounting principles, you know, and, and, and it's doing so, you know, we might have a lot of learning to do because we've been spoiled by computer science in this in the world of one machine one core one thread or whatever it is you have worked for too long. So, I really think that we should we should we should learn to rely on proven practices for bookkeeping you know they you know that's really technology that are centuries old, and has proven to be really good way of making sense of data. And the main concept sort of concept here is is is event logging. You know, if we translate that to our, to our, to our world here and event logging means that you store each event in the order they arrive durable on disk, just like transactions in the ledger, you know, like you can see on this picture here. And if we if we do so, you know, I think that event logging can really be the bedrock in our system that we can build, you know, that we can use to build consistency, you know, availability, scalability traceability, you know, that it can really be our source of truth in the in each system. And, you know, Pat Helen again, you know, he said in this really great paper immutability changes everything that the truth is a log, the database is a cache of a subset of the log. You know, this. There used to be a reason to use update in place in a disk space used to be quite expensive. But today is is is really really cheap. So there's really no reason why we, why we can store all events that ever happened in the system meaning all history forever. And the question is then why should we work with the cache of a subset of the real thing. Why not work with the real thing directly. And that is the event log. So, and that leads me to event sourcing, you know, that's a great pattern sits right on top of the event log, and I think that can be a cure for this cardinal sin, you know, update in place. And event sourcing is really is really easy, you know, it's just that you log every state changing event to component in the order as they as they are created. And, and, and, you know, and we use that sort to turn back up the entities. So we can have strong consistency as I talked about within each entity. You know, we have this this safe world safe haven this this island of of determinism so with which we within we can have strong consistency. And then we have an eventual consistency between the entities or the services. You know, and if you if you if you work like this then you, then you can have sort of then you have a way to replay that log, because all the history that happens to a service and the whole system if we look at a specific service, you know, everything that ever happened to that service is you put it up is stored in the order it happened, you know, so so this means that we can replay that log to bring the component back into into into into good shape after failure, we can we can replay it to do replication if we want to replicate something to some other place that we will get an identical replica because it's based on the same history. We have really rock solid audit without doing anything really. It's already we're there right in the event log, we can just look at it. You know so there's there's a lot of things we get for for for free here that actually are quite hard to build in a distributed system or in the cloud cloud based system. So let's look at an example here in events or service here we have some some users it's it sends a command, it ends up in the component, you know, and some side effect is triggered. Okay, we were talked about this out of that side effect I created an event representing what what just happened, and I'm storing that in the event log in the order as I'm doing that as a service. Okay, this is the happy path everything goes goes goes well I can I can push it out to the event bus, so to speak the event stream, and others can consume that event at their own pace. Now, now let's look at what happens. If we enter the sad path sir when we have to when things fail and we have to recover from failure from failure. It's very very easy we have we have we have the event log. The only thing we need to do we is that we bring we sort of re hydrate the events bring the the component back into into state. And that's it you know, then then it can then it can continue to serve new commands and trigger new events that we then emit out. So, event sourcing really gives us a single source of truth. You know, with all history that that's ever happened. And it allows for this for this pattern, you know, I encourage you to Google it memory memory image Mark and Fowler talks about that. You know, where you sort of have a way to have durable in memory state is sort of inverse the database in a way so your source of truth. You know becomes what you have in memory instead of what you have in memory is usually just a cash and the source of truth is in the database. You know, this is this are really event sourcing allows you to really invert that. So your source of truth. And the state that you can rely on being always correct is in memory. And you have sort of backup down on this. And just think yourself with what that opens up for when it comes to performance, for example, and, and, you know, if your data is always available in the memory and it's always correct. You never have to go down to the database to fetch it and causing all kinds of contention and then you're relying on a single point of bottleneck and single point of failure and so on. Of course you need that for the event based system but that can have but these things can be completely decoupled. Sorry, I got some notification from from zoom. Are we still running. I hope so. Okay. Another thing that it avoids is this, you know, in famous, you know, object relational mismatch in which you, you know, if you have a component models and for object oriented model you're always have to match that to tables in the day in the in the database. And that's why we got tools like, like hard, like higher hibernate and so on. It's, it's quite the hassle, both to map that correctly and efficiently but also maintain it. And then sourcing, you don't have to think about that you can you can work with your, with your domain model, you know, in the component in memory.  There's really no mapping at all happening which means that you that you can you can just have the ultimate way of working with state, as you would as you would like. Okay. Which is really beautiful. It also allows others to subscribe to state changes, as I talked about. And that's a really good side effect. It has really good mechanical sympathy mechanical sympathies or is a term that you know Martin Thompson often uses. And it and it and it means that it lends itself very well to modern hardware, you know, and in this in this in this particular case, you know you have the, you get sort of the single right to principle for for free where we can just have one thread just writing very very in a to disk in order just depending on pending and pending and pending, which means that you can move very, very fast. So that's all good but what about queries then, you know, I, so we use the event log for storing the events that is our source of truth queries is harder, you know, an event log is hard to query, you know, that's that that's one of the downsides here and CQRS can can really help you know because that's why you often see events working used together with CQRS CQRS means command query, responsibility segregation or separation. And, and you know the interesting here is that is that CQRS allows you to separate the right from the real model, you know they usually have very different characteristics in terms of consistency availability, you know scalability, and by separating the read and the right model from each other it allows you both sides to be stored in the optimal format on the right side I already talked about you know the only good things you get with restoring the right side in an in an event log. The read side you have many options, you might want to store it in a relational database in a no secret database in a graph database you might want to push it into the spark or flink or something like that. So it really gives you a model for polyglot persistence because you might want to mix these you might want to put into SQL database and graph database for different ways of looking at the data, for example. If all this is abstract, let me try to illustrate this here so let's say you have a user it sends a command to this to this service. This service now serves the right side model here is where we write to the event log. Okay, once we've done that was omitted to our event stream or our event bus here now, the read side model can pick that up and read from the data store, or actually, you know, the data store picks it up and stores it that can serve their the read model that that's a more accurate way of talking about it and this and this data stores it can be any type of database, you know, it can be a do if you like that or whatever. And then you, and then you, and then you can serve those that you know the queries from the read side completely independently of the right side. And this gives us a lot of a lot of good things you know it gives us increased resilience you have, you have, you have temporal decoupling of rights and side effects. And, and, and, and you know, and you know one good thing is a service doing the right and the service performing the side effect, they don't need to be available at the same time. It also helps you with increased scalability where you have like scale and you can scale the reads and writes completely independently of each other. For example, you might have a right mostly system, you know, where versus another situation where you might have a read mostly system so it gives you sort of more knobs to turn and to tweak, and not having sort of one getting each getting in each other's way you know sort of with a always ending up with the smallest common denominator. It also allows you to have multiple events subscribers as I said you can have multiple views of the data success, you know how the other systems pick picking it up at the services other database and this answer true polyglot persistence as well. One, one important aspect here though is is is that you know to get most of the benefits of resilience and scalability you should rely on eventual consistency in in practice it usually in in my experience it usually is not a problem. It might be sometimes you know, if there is a delay in the event propagation it might be that you sort of don't read your rights in a way you know you send a command and then update it and when you and when you read the query, you know it's still not there, so to speak. There is a solution for that though and that is that you can use a single database for for to serve both your region and your and your rights and then rely on on the database you know, you know functionality for strong consistency and transactions. And we should try to illustrate this here you might replace it with a single database here where you can write to the event log in the database and in the same transaction up to update through the real side the query side in the same database so you can serve both the right side and the right side, you know, using the same database, you know this if you if you have I'm only bringing this up, it's not something that I will I will recommend you start with. But but if there are use cases that absolutely demands strong consistency you can still use that in a in a in a in a CQRS event sourcing type of type of setup.  But then the, you know, some of some of you might wondering, you know, okay, how do I go about and implement this for real in the cloud or on prem but let's let's look at the cloud here now. The problem with with with cloud native as we are. You know, it's not that all of these things that I just talked about might be hard but we are, you know, in terms of infrastructure is drowning in complexity, you know, Kelsey higher tier post this is sort of amusing tweet a few, a few months, a couple of months back.  All you've got to do is pick 200 items from this list and you're, and you're good to go. You know, and this this image is taken directly from the from the CNCF website. You know, it's it's it can be it can be overwhelming. There's so many products, all good, you know, not all good but many, most of them I think are really really good. How do you choose which ones fit your use cases, and how do you stitch it all together into into single in a coherent working system how do you maintain guarantees across all of this all of these products how you how can you ensure to your to your customers and user that you can maintain the place that you that you have have have promised you know things usually fail between, you know, at the boundaries, you know, and then where you need to do handle between different subsystems.   You know, we're constantly trying to do to climb this ladder abstraction and, and to do more with less. And, and I think it's about time that we do that again. Yet another time I don't think you know Kubernetes and and and and and switching to get the your own stack over and over and over again it's really, it's really necessary, you know, some of some might like it, and some might feel the the necessity to do so but most I think not. So, so I think the the really important thing is then is then what is that I think we really need to provide more higher level developer experience and API for developers to building these new classes cloud cloud cloud native applications and and and all in, you know, leading to liberate the developers to focus on the essence, you know, and that is that is, you know, building business logic, building, contributing directly to business value.  So I think, you know, the good, a good starting point is to sort of distill the essence, sort of, so coming from a different angle, sort of distill the essence of what a developer actually needs to focus on. What is the bare minimum that a developer needs to do to contribute business value every day and nothing else. You know, I think it's sort of essentially three things, defining the API. I mean, how do you communicate with the outside world, and how do you communicate between through the contracts between the different services. How do you define your domain model, you know, you know, working with these events first domain driven design if you like or, or, or, or something else but but come up with model for my how do, how do I model my business case how do I model my domain here.  And, and, and lastly, you know, the, how do I, what do I do when I, you know, react on requests from from my users and what is what what drives sort of this whole domain model is the business logic, you know, so you have the API the domain model and the business logic. I really think that the rest the rest can be eliminated and should be eliminated. So there's, there's, I think, you know, the rest can be generated from the code. And there is sort of a new class of developer passes that really tries to address this. And you know, and one of them is Calix.  What does that mean yeah it means that Calix makes it very easy to build a complete cloud native stack, you know, an improved developer product immensely, you know, and, and, and he does that by providing serving out of the box cloud native. Cloud native stack. All powered by a really, really high velocity developer experience. Where, you know, where, where you do the work right in the code. And then you ship a ship that up to to the calix pass. And then your, your, your, then your job is done. There's really no operations required whatsoever. All that is on us, you know, we have we have a 24 seven s RET that that that that making that's that's making sure that everything just constantly like constantly runs is upgraded to the latest versions. You know, making sure that you know that that everything runs runs smoothly. And, and, and, and for us as a developer you know calix gives you really best in class top class high performance and scale and scalability you know we, we can, you know, in the in the latest benchmark we ran we we were serving reads at about six millisecond and writes at about eight millisecond, you know, round trip all the way from me from me from me getting the request from from the from from the you know, from the developer all the way down to the database and all the way up again, which, which should really be enough for most use cases. So, so a way to try to understand what calix does for you is like, I want you to try to envision your application necessary of a cube. That's your cloud native stack. Okay. At the bottom we have like cloud infrastructure like AWS Google cloud Azure.  Then we have the database layer, you know, there might be one database that that you choose or multiple depending on the use cases most most non-trivial use cases are polyglot persistence today in my in my experience it might be like Cassandra, you know, Amazon, DynamoDB, Spanner or Cosmos, UGB, whatever.  And GDPR, of course, and all of those things quite tricky stuff to get to get right. Once you get that done right, you know, all these first four layers, then you can start, you know, building pulling together the infrastructure that's more of the fun work for a developer to some extent because he can often be overwhelming of course. But here you have things like service meshes, API gateways, message brokers, you know, not gateways and so on. Finally, when you're done with all of that, you know, then you can start building the app. But the problem is that when then when things are moving, you know, underneath, you know, sort of shakes the whole cube, you need to go dive down there and start fixing things, you know, replacing, you know, infrastructure, you know, doing updates and whatever it might be.  So where does Kalex comes in? Kalex really allows you to focus only on the top level, you know, the only thing you need to do in Kalex is to focus on writing the code, you know, collaboratively configure that code. And the rest is on us, the rest is on Kalex really and everything around integration, security compliance database, Kubernetes management, cloud infrastructure, etc, all that is on us. So it really eliminates, you know, it's effectively all complexity to bring building a cloud native application. So what are the components? I don't have too much time to dive into, you know, what Kalex is, but I just want to give you a glimpse, it's probably the most developers here. So what are the Kalex components that you can work with? At first, we have the entity that I talked a lot about here. That is sort of a stateful function, allows you for like multiple durable storage models. You can choose the right sort of shape of your data, it might be key value, event sourcing might be what works well that I talked about, where it might be in a replicated state using CRDTs, you know, key value is more like crud. You know, working with this entity is a really, really high level abstraction that removes all the complexity around data distribution, things like caching concurrency distributed locking transactions and all of those things.  And you can use that for many different type of patterns like handle entity changes, subscribe to message brokers, building sort of the API control or pattern and so on. Then you have a very interesting concept called views, you know, they are really, they're truly materialized views and allows you know streaming views in real time, all the way out to the client using HTTP or DRPC. And in it gives you a really good model for modeling CQRS that I talked about that you have the entity and then you have the view you have the right and the read side. Then you have, then you have timers, you know, they're usually they're small, but powerful. You need them, you need them. And the latest addition to the careless components is something we shipped about a month ago now that is that is high level workflows, making it possible to do this, you know, this coordination and orchestration across these are safe islands that I talked about, you know, the entities. Buildings are distributed transactions and by implementing the saga pattern. If you don't know that I encourage you to Google that it's a really good pattern to have under your belt. But workflows implements that. So, and in workflows you can declaratively just define every all the steps in the workflow, and have a structured way of doing, you know, compensating actions and go into the next step and what happens if there's an unavailability or failure and so on. So it's effectively gives you a structured state machine how to work with with with long running transactions. So I just want to give you quickly a little glimpse in in in what it won't be okay this can look at your own there on the left hand side here, you have the developers responsibility meaning your responsibility on the right hand side you know you have you responsibility. So, so let's start by writing so very simple state for microservice and that's our in this in this in this case I'm picking the event source persistence model just because we talked a lot about it and and and as you can see here we create an aggregation entity. I don't have time to go through the actual use case here but but it looks more or less the same regardless of what you're doing. I'm inheriting event source entity this isn't Java by the way, and, and, and, and the interesting thing here is this is the lowest aggregate function it takes a request meaning the command here. And, and it, you know, it, it, it, it does is logic. I've sort of omitted that code here, but when it's done is sort of creates an event is add for aggregation event it emits event to the rest of the world to see and to be stored in an event source fashion, and then it replies with an acknowledgement saying okay, you know that's a code now you can see that you think these annotations here we are declared to be config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config config out of this. You think, I mean, enable it where you can choose to enable it through HTTP or GRPC or both. So that is the entity side. Now, let's say that we want to implement CQRS here and do a query representation as well. So a read side representation. It's no more code than this actually, where we hear CQRS with this API query view, where we extend the view, this sort of materialized view. We set the request mapping here to be slash API query. It means that clients then came through our HTTP endpoints and just get a streamed, sort of get a stream with constant updates based on what's going on in this particular view. And you can see here that we have this method get aggregation key. We annotate that with query and here we're able to put in sort of a SQL query. It's actually not a true SQL. It's actually querying the entity. It's querying your object model. So if there's an object query, query, query model here, that you can, where you can, so you don't end up in having to map your object, you sort of your domain model down to the underlying database. The underlying database is really nowhere to be seen. You always work on the highest level possible, meaning your own domain model. But from the simple query annotation here, where we define our query, we're able to create a fully streaming real time materialized view for other services to use, but also for your clients to use. So that's your responsibility, right? This code declaratively annotated how you want it to operate. And out of this, you know, Kalex can then infer everything else. So we have sort of infrastructure inferred from code. And this is just sort of a simplistic architectural diagram of everything that Kalex does for you. And this is, of course, more.  And, you know, each one of these functions is deployed on a Kubernetes pod sitting right next to the sidecars. You have extremely efficient communication between the sidecars representing the user code and the user code itself. And this sidecar then manage things like, for example, PubSub, we have broken less PubSub over JRPC that's extremely fast, or you can choose to use something like Kafka or GCP PubSub or AWS DNS. And then the sidecar also manages all the distributed storage in the event logging, these materialized views, and so on. And all these, all these, all the right hand side is completely generated for you in the optimal fashion based on your source code on the left hand side. So you have really good separation of responsibilities here, leaving the developer with only the minimum it needs to do to implement a full cloud native, super fast, you know, reactive, highly performance stack. So the key takeaway here is that I think events, events first design helps you to build, to reduce risk when modernizing applications, it allows you to move faster towards what we all want, you know, resilient and scalable architecture. And it really allows us to build highly autonomous services, you know, and autonomy means that we have a way to balance certainty and uncertainty, you know, being able to contain, you know, certainty and having really good patterns to deal with the uncertainty. Event logging, as I talked about allows you to avoid, you know, crud, avoid ORM mapping and really take control over your system's history. It allows you to time travel even when we talked about that, but it's an interesting concept.  But more importantly, allows you to balance strong and eventual consistency in a really good way, I think. So how do you implement that? I think KLX is probably the best platform to implement all these events first, you know, event logging, event sourcing type of type of system, truly event-driven microservices, because it really gives you, I mean, really, really low time to market while reducing the cost. And it allows you to focus, you as a developed focus on only the three things that matter. I think, you know, the API, the data model and the business logic and delegate everything else. Delegate operations, you know, true zero ops within, you don't need an SRE team or on staff, you know, to, to run this stack because all that is on life, man. And, and you can ensure that, you know, by just writing this code, pushing it up to KLX, you will run on a full reactive event driven, very high-performance infrastructure stack. So, so please check KLX out.   We also have a Slack channel, you know, hashtag KLX support. But go to KLX.io and scan this QR code and, and we'll, we'll be there for you answering all questions. Thank you.


So let's say you want this button to change the text of this button, not a problem. Click on the text that you want to change and make sure it's set to variable. Compile, save, click the trigger button and navigate to the clicked area to get to the blueprints. Now because we turned the text into a variable it should show up up here. Drag it in and then drag out a set text command, then drag in the target like so. Decide what you want it to say, you're done. Hope that helps and as always I hope you have a fantastic day and I'll see you around.