Okay so in graph theory today I'm going to just talk about two types of graphs I'm actually going to just be about Mathematica today and I'm going to show you some Platonic graphs. Remember those are the tetrahedral, octahedral, cubical, icosahedral, dodecahedral graphs. I'm going to show you what they look like and then I also want to show you the Peterson graph. I just want to take the Peterson graph. Now you know what's happening in graph theory. You've seen a couple of lectures now and it's just graph after graph after graph. Well I like to introduce graph theory in this way because you've just got to get familiar with all of these things and what we're doing is we just have this box and we're just piling stuff in this box and later on when we're so familiar with them it becomes easy just to drag them out of that box.  So very interesting to look at these start developing the concepts, start learning the language. It's like a child learning a brand new language or an adult learning a brand new language. It's become familiar. Just enjoy these graphs at the moment and just get them in your head and later on they'll just pop out and you'll just be able to talk this language and use these things when we do some calculations or do some something more interesting with these graphs. So for now just absorb all of these interesting graphs and learn Mathematica, learn how you can use Mathematica, the power of Mathematica and play around with these and develop your own graphs or look up to various ones. So this one let me show you some great graph data inside of Mathematica and that's going to be very interesting for you to come up with and explore new graphs, explore this wonderful world of graphs.  So here we are in Mathematica. Let me show you these platonic graphs first of all tetrahedral, octahedral, cubical, icosahedral and dodecahedral graphs. Very beautiful. Let's look let's see what they look like and then just explore one or two things about them. So let's do all of them in one go. So for that I'm going to do the table, use the table function and I'm going to use the keyword graph data. Graph data and I'm going to use a placeholder called n comma and now let's specify what n is going to be. Now I'm not going to let n go from one to four to five or whatever. I'm going to let it cycle through some nominal data, some strings. So I'm going to put a comma and put all of those inside of square brackets. So the first one I want is tetrahedral graph. Tetra, now I must not make any spelling mistakes here because there's no autocompletion. Tetrahedral graph. Now I am not the world's best typist so if there's a mistake in here I'll correct it in post-production but let's go let's go with it. Octahedral, octahedral is, wait octahedral, there we go. Octahedral graph, remember to put the graph in the uppercase G there and then we had the cubical graph. There we go, cubical graph. The next one was the icosahedral graph, icosahedral graph and then the most difficult one of all the dodecahedral graph. Let's go for that one, dodecahedral, dodecahedral. This is very funny. Anyway, graph, there we go and I've got to close my curly braces so you see these are the strings and strings go inside of quotation marks. These are well these are all just nominal data types so it's this one, two, three, four, five of them, they're in a list so they go inside of curly braces but it's what N is cycling through. So N is going to cycle through first tetrahedral group then octahedral group, then cubical graph, then icosahedral graph, then dodecahedral graph and they are all going to be printed as graph data and this is all part of a table function so let me close that. We see that the Wolfram Research Data Server has been queried here in the desktop version and it's going to download this graph data from the Wolfram Research Data Server which might take a while depending on your internet access and how busy their servers are etc. And there we are, lo and behold, we have a tetrahedral graph, octahedral graph, a cubical graph, icosahedral graph and a dodecahedral graph. Okay let's just explore some of these. Let's just have a look here at this first one. Let's just do the tetrahedral graph. We see first of all that it's a planar graph and remember we did planar graphs before, we're going to get back to planar graphs, they're very important and look at this. If I look at the edge count of this top little vertex or node here, I note that it's 1, 2, 3. Let's look at this one down here, it's 1, 2, 3. Let's look at this one here, it's 1, 2, 3 and let's say the central one, 1, 2, 3. So this is a regular graph. Let's look at the octahedral graph. 1, 2, 3, 4. 1, 2, 3, 4. 1, 2, 3, 4. 1, 2, 3, 4. 1, 2, 3, 4. 1, 2, 3, 4. There we go. Explore these, look at them in a bit more detail. Of course just looking at them as they are drawn here, they are planar graphs. But please explore the number of degrees of each of these edges. Think about the things that we've learned before and the terms that we might have used before as far as these platonic graphs are concerned. Let's just look at the Peterson graph specifically and I'm going to use graph let's do this alt or command option key I should say on a Mac, alt or option and 4 and we're going to say the Peterson graph. There we go. Arrow down and let's just do this. Again we're going to find it using the graph data so that is querying the Wolfram servers just to get this information and you see a few come up there already. Look at all of these and it's not nearly all of them but look at this list of graphs that you can explore. Please explore them. Be adventurous. It's fantastic. Peterson graph is the one that I want. Let's have a look at that. Again it's going to install this from the data servers and it's going to take a couple of seconds and there we go the Peterson graph. As we look at it here is this a planar graph? Is it possible? Let's just look at the edge count. One two three, one two three, one two three, one two three, one two three, one two three, one two three, one two three, one two three. That seems to be all the same. Now have a look at this. Let's do graph data again. I'm going to say graph data. I'm going to say the Peterson graph please. Peterson graph and I'm going to use a second argument which is called alternate names. Alternate names. That's new. Look at that. 10 cubic graph 19. 10 cubic hamiltonian graph 1. 10 edge transitive graph 13. So many interesting tantalizing things to come. Look at all those alternate names for the Peterson graph and it all means something wonderful. Okay play with these. Play with graph data this time around and figure out some things about the platonic graphs with the information that is inside of your head right now. Play around with Mathematica. It's fantastic.


Hey there friends. Thanks for checking in this past month I've had more than a couple people contact me and say they were interested in buying a handgun for home defense they say you know I've been thinking about it for a long time and Given that we are in uncertain times. There's no end in sight This is the time to buy handgun that I explained to them Well, it's actually the worst time because it's inventory is very low although there are some choices out there And they say well, are you selling one? I'll just buy one off you and I said well, no But then we went out to talk about various calibers. They say well, I was told nine millimeters the best What do you think?  They know exactly what just took place just now But that's separate So they said no no no we want a handgun. I want something small I can keep it away from the kids the very people I have to protect I need to You know get a little finger safe and you know that way nobody can access it and everything we have that conversation But I reminded him nobody knows Your house better than you do All right, so you have that advantage there the disadvantage that you have is you don't know When this could take place and so that conversation took place but getting back to what is the best? You know, what is the best home defense pistol? Is it something like this or is it a revolver is Is it your carry gun? I know a lot of people it's just their carry gun They say you know what I've got night sights on this at the end of the day and put it down in the morning I pick it up. It's always there. That is my home defense gun, you know it bump in the middle of the night I hear the door kick in that's the gun. I'm comfortable with and I understand that you know that carry gun is your best friend It's an intimate decision and that is what most people shoot It's what they're comfortable with and I hope they have night sights on it Especially with their home defense firearm. Do you have night sights? Primarily because you need to know what you're shooting at in the middle of the night It makes perfect sense to me anyways and a light now this does not have a light Although I have lights at home, but it does have night sights. This is a Glock 21 45 ACP 13 rounds 4.6 inch barrel XS big dot night sight what I've had to teach myself and Actually remind myself is to raise that front sight a little bit with this sight picture It's got a line in the middle there a little more than pumpkin on a post For those who know that term But what is the best home defense pistol? Is it this or is it something else? Anyways, I'm gonna take a few shots here because I am at the range That's what you expect from this channel is to take a few shots and see what goes on I think this is a great choice and when I reviewed this Once I got it people told me they said that right there that gen four Glock 21 is the best home defense pistol out there and I can't disagree But here we go that 45 makes that plate bounce around more than a That's for sure. All right So it's just the best home defense pistol Or do you have a different idea or do you think it's a shotgun? Shotgun either a 12 gauge firearm or a shotgun with a stock both of those are Phenomenal choices for home defense. Let's get the conversation started if you like videos like this Please subscribe and share I always appreciate thumbs up button. Thanks for watching and you guys be safe


Evan has a question. Our business has some unique requirements that the standard SharePoint features don't fully address. What? Yeah. However, developing custom solutions can be resource-intensive. How do businesses typically balance using out-of-the-box features with the need for custom solutions? What factors should be considered in making this decision? That kind of goes back to what I just said about the other one. You really need to build something new if you can get 80% of what you need out of something that exists and maybe build the other 20. But yeah, it's time or money. You can move with an out-of-the-box solution or 80% and move forward or you have to go back and gather those requirements and figure out what people need. And following up on that, how much money do you have? And how much time do you have? That should answer that question. Maybe you have the resources to do it. Yeah. And there's a lot of plug-and-play solutions out there from third party suppliers. You know, sometimes you can find something that's really simple that will do it for you without having to build a ton of personalized content and start researching and the cost benefit of doing that. What are you trying to do? This is still for the job range. Yeah. I'd also add that from the SharePoint perspective, make sure you're familiar with the roadmap because some things that people are asking for, like as a PM in the SharePoint world, there's a lot of things people are asking for that are on the roadmap and they're in the pipeline, right? They're gonna come. So make sure that you're not spending money building custom solutions when we already have something that's on the way. Neil, you have to share that with us now. She can tell us all the sleep. The roadmap, come on. I'll share the public roadmap. I can give you a link too.  You know where the other roadmap is. But like things like your SharePoint Premium, for example, right? There's a whole ton of features and capabilities and experiences coming on the pipeline with SharePoint Premium that we've never shipped before. So I think whoever asked this question didn't specifically mention what they were looking for. But I think experience, understand the roadmap, understand what it is you're trying to do. And to other folks' comments, right? Third parties provide solutions. There's usually a way to solve a problem without just sitting on the shelf waiting for it or investing like a massive amount of money just to make it happen. There's so many ways. Two minutes, there's multiple ways to skin that cat, as we say, right? Well, we're going back to the first question we addressed, the ROI and figuring that out is what are you trying to do? That sometimes, what's the gap in the functionality? What's the value of buying an off-the-shelf third-party solution today until the features come out in the future with Microsoft? And then other questions, like is, well, if Microsoft, out of the box or with some minor automation, give me 80% of what I need, is that enough of a difference for me and a cost difference? Well, I'm already paying for with Microsoft 365 that it doesn't make sense to go and buy the other things. So what is that value? What is the opportunity cost of not moving forward today with another solution versus waiting for that functionality to be there with Microsoft or going and building that? So there's a lot of those factors that's just back again to that ROI. And once you've defined what you're wanting to do, then you can define what tool makes sense. If you're trying to use Power Apps because you don't like the single column SharePoint form, well, maybe you don't need to go all the way to Power Apps, just throw some JSON in the form and give it a little bit better layout, maybe a little bit of extra functionality. If you don't like the list view, so you're using a Power Apps gallery to make the list view different, again, maybe a little JSON, grab a Chris Kent video, change your list view to look like what you want it to look like, and you've saved yourself a lot of time and a lot of maintenance. And one of the things that hasn't come up as we've been talking about this, and then Neil mentioned being able to look at the roadmap and going out there to see, because I always try to recommend to people if it's coming, maybe don't make it yourself. What I have noticed is over the last year or so, Microsoft has introduced a lot of customer engagement programs that didn't exist in the past. So if you're a business that is trying to make these decisions before, there was a lot of these for these large enterprise businesses, they're building more and more of those programs for smaller medium sized businesses. If you're interested in a specific feature set, reach out to a partner or an MVP, or somebody that you know that might be affiliated with Microsoft and see if potentially there is a customer engagement program that you could participate in, because two things happen. One, you might get the opportunity to use that feature earlier. And second, you can provide feedback that can influence what that feature does or how it goes forward, which means that you're gonna get more out of it and potentially maybe even get to do that for a lot cheaper than it would cost you to build it yourself.


So we have an interesting story here. Alistair came by and told me a little bit about it. Please have a seat. Kreev, Dave Vellante, good to see you again. Thanks for coming on. This is my co-host, John Furrier. Hi. How are you? Nice to meet you. So Kreev, why don't you introduce yourself to the audience and then tell us, we'll talk a little bit about the story that you have that's just pretty transformative from what I understand. But please, tell us a little bit about who you are and your background. Well, I was trained first as a chemist and then in Berkeley as a nuclear scientist. I was doing experiments in particle physics. And what happened was we actually couldn't understand the data we were taking. Now, at that time, it was only six-dimensional. But so I started working only now. Oh, believe me, that changed quickly. That's kindergarten. But so I started working first on batch programs to try and understand it, which is marginally successful. And I said, but I really don't understand what's going on. And sometimes there were problems in the experiment. So I developed the first interactive system at Berkeley and then actually connected it to the real-time experiment so you could see things as they were coming in. And we had such success with that, about understanding. But the time it took me to do that, the six dimensions, it had become 12. And so I had to do more. And it turns out that I spent more and more time trying to develop tools to handle complex information. And when I finished my degree, I did a postdoc in nuclear physics. But then the choice came. Do I stay in physics? And I go into computing. And I decided, I really like it. It was something very satisfying about understanding what was happening. Because now we're probably up to 15-dimensional data. And so I spent, not only did I spend time developing software, interactive software, personal software. But then the machines weren't fast enough, so I started designing computers. It's a moving train, right? You've never seen you move it. But the reason that's interesting is that if I had a comment to other people in the field, is to me, the computer has always been a means to an end, to understand whatever it is I'm trying to understand. Not an end in itself. And I worry at times that people who were trained in computer science, they come up with the computer being the end result. And often, I have encountered, sadly, people in very prominent positions that don't really understand how people use the computer. And that's sad. To me, no software that I've developed, no hardware that I've developed, has any other purpose than to help me and others understand. And if it doesn't do that, it really isn't worth my time and effort. So talk a little bit about this example that you shared with the audience today. This is a fascinating piece here. We developed, we started as a advanced research program at Sandia over a decade ago. Essentially, we were using, at that time, the catchphrase was virtual reality. It was immersive environments.  It wasn't like we were trying to create a reproduction of, say, this building.  And if we do this in a way that plays to the human function, the way humans actually interact with their space, that learning would increase. And we were successful there. We were so successful that it spun out from Sandia as a private company, then went public.  You interact the way it tells you to interact. You use a keyboard. Even mouse clicks and stuff like that, that's not the way you do things, as I said in my talk.  That way you put some virtual buttons, let's say, that came down three-dimensionally, and you would press them, and you wouldn't drive the car. But you will run your computer that way. And what people have lost sight of, and one of the things I mentioned is a study done by IBM some years ago. They were interested in productivity. And so they did a test where they had a CAD program, a design program. They would give people a specific thing to do. What they didn't know was between the time you said, do this, hit the key, and the time the answer came back, they had put on a little knob that varied. So they could put a delay in. They wanted to see how that delay just between clicking the key and the result, how did that affect your productivity? Well, they started lowering the time, lowering the time. They got down to a second, and productivity was shooting up. OK, one second response, then they lowered it. Half a second, productivity shot up. Three-tenths of a second, productivity shot up. My god, the faster we go, what happens when the computer is truly responding to you as fast as you can ask questions, you get answers? Your whole way of working changes. It's like a video game. You become engrossed. So question for you. Obviously, the personal computer revolution had a lot to put in place to put these static or glass ceilings, if you will, relative to the design. But with cloud and mobility, Eric Schmidt has been talking about Google design for mobile. So as an opportunity for young smart guys in Berkeley or wherever to design the next gen product, what would you advise them? What would you share with them and say, OK, as mobile, which is an opportunity to change the game a bit? Because now you have form factor changes. It's potentially a new car, where the PCs, the horse, and buggy mobile could be the car, if it's stretched. But if there's an opportunity to influence a generation, what would you say? I mean, throw it away, redevelop, build the platform? What I would say is, based on actual real world experience that we've had, and this may be hard for you to believe, if you provide a human interface to that data, now I'm going to be a little demanding. I'm going to tell you, you need between the time my query and the time the result comes back, I better be less than a second. And the way I interact with it is not pushing buttons and stuff. Again, think about driving a car. Think about what you do. You don't look at your hands. You don't look where buttons are.  You're taking in motor noise. You say, well, I don't hear the motor noise. You let the motor make a ping and see if you don't hear it. Vibration from the road. You say, I don't feel the vibration? Yes, you do. Your mind processes the roughness of the road. It processes. And you can be talking to someone, and you can have the radio on. You're doing all of these things in real time, and you're not breaking a sweat. Make the computer respond like that. If you make the computer respond like that to these large data sets, if you allow people to ask questions, and that's really the miraculous thing. No one knows what's in the data sets. No one. Even people that think they do, I will guarantee you there are surprises in them. Is there an analogy in your mind to chemistry with content? I mean, data is, ultimately, it's information. There's different elements of data, different meanings, different databases. In a way, it's almost like a chemistry, or it's physics and chemistry kind of blending together. I mean, because if you want to have a low latency response like that, you've got to have a new way to interface with the data at a root level. Absolutely, you do. And do something different. So I guess that's kind of a mind-blowing position to kind of get these young computer scientists. But it's gotten easier. When I started this work, I mean, virtual reality at the time was a big thing. I didn't, and still don't like the name virtual reality. But people developed interfaces. But they weren't trying to use them for data. They were trying to use them for Hollywood and various other things. But we've come a long way. I mean, you can buy a stereo TV now. Very inexpensive, a stereo TV. So I can show you your data in three dimensions on your own stereo TV. The advent of many of the game systems, which will recognize hand motions and things like that. Now, that can be used as a gimmick. All of the stuff can be used. But it can also be used to help you. You want to turn a data set around? Just do that. What a bit is to a bite, you know, you think about large data sets in that kind of reference because you have to act on a whole new processor, a whole new operating environment has to kind of be created.  Well, it's, historically, in business, if you were a computer company and someone, two people came to you with a plan for something new. And one of them was to enhance the user interface. And the other one was make the processor 10% faster. Would you like to bet which one would get the money? And the reason is because having the processor go 10% faster is something that can go up on a sign. You can use it in advertising. Yeah, it's a gimmick. The fact that I made a user 50% faster, that's much more difficult to quantify. And they didn't put the money there because they didn't think it would bring returns. But we are reaching the point now, where at the whole conference, you're drowning in data. And I will tell you from firsthand real-world problems, we have accelerated people's comprehension and understanding of data. Three orders of magnitude, 1,000 times. Can you give us an example? Is that good or bad in your mind? Oh, that's fantastic. You ought to see. Three orders of magnitude. Three orders of magnitude. It's Moore's law for the brain. I'll give you an example. I'll give you two that sort of illustrate it. In the first case, we had a company that will remain nameless, one of the largest chip manufacturers in the country that had prototyped a new chip, and they had five different programs that run analysis on it, vibrational heat, electrical, and they were trying to figure out. They had screens that they could bring these data up on. We fused it, turned it into a chip, allowed you to fly around it. The engineer in charge found that there was a flaw in the design in 15 minutes and corrected it. Didn't know it was there. 15 minutes. They'd had it for four months. That's not the story. The story is, as an item of curiosity, we actually queried people in the company. Who knows the least about electricity? One gentleman volunteered his wife and said she still blows the circuits out in the house. So we actually brought her in. We put her down in the same model. We did not talk about volts, or amps, or circuits, or ASICs, or anything. There was color flowing over this. There was sound and she could fly and she could touch things and things would happen. She really didn't know what she was doing. But you know what? Something went red. Sounds went off.  What's going on? What happened? We said, well, I don't know. Figured out. She went over it. Look, if there's something going on here. She found the problem. And she suggested a solution to that problem. Now the only difference between her and the EE is it took her 30 minutes instead of 15. That's fascinating. So the human mind is its own processor. So what you're getting at is that the current state of what computers have been designed for is like a horse and buggy. And that there's yet that. And people get funded based upon certain standards. But a new standard kind of needs to evolve. I'll give you one more example in a different area. This one I can't mention, because enough time's passed. Roger Pinsky and Goodyear Tire and Rubber. Pinsky was running race cars, obviously. And he was losing races. Not by a lot, by fractions of a second. And but it was continuous. This was bad. Why are we losing races? I couldn't figure it out. So they instrumented the car. They put telemetry on it that would, NASA would put to shame. They broadcast it on five different tracks, full races, brought all the data back, set a team of people down. OK, why are we losing races? Two years later, they hadn't a clue. Now they were using the same sorts of interfaces, frankly that you see here. They spread graphs, comparative graphs of all the stuff sliced this way. But they didn't know what they were looking for. They just knew they were losing races. Somewhere in that information was the answer to why they were losing races. Well, Pinsky, after spending several million dollars, said, OK, we're getting nowhere. I'm pulling the plug. And as a last resort, they came to us. And it took us about two months to build a model with all that data in it, all of it, simultaneous, 20 dimensions. There wasn't a number showing. There was no graph showing, none of that. Wheels on the car would morph in size as the pressure changed. You'd think it's cartoonish, but everything that was happening was exaggerated so that as you drove the car, you could see it. You could experience it. Five minutes, they found the answer. Two years, nothing. But the computer didn't find it. The human mind found it. I just, they just had the data in front of them. That's been a big theme in this conference, is the human aspect of data curation. So in the linguistics world, you'd have to have some knowledge around ontologies, which has been a field in AI and academic, where machines can do something. But without human interaction, this data stuff doesn't work, because there is an element of humanness that needs to interface with the machine.


So, Priscilla, when people approach you and ask you, I want to become a better service designer. What is the ultimate tip you give them? Well, I think that I have three things on my mind. The first one is to realize as much as possible about service design and to search case studies, to see what have been done and what logic have been applied to certain projects. The second one is to talk as much as possible with other service designers to know what they're doing and with what are they experimenting because I think that I have learned a lot from hearing other conversations about service design. And the third one is always experimenting on the projects to see what methodologies or what kind of thinking can apply to certain projects. I always try to play with different methodologies to see what outcome I can have of each one of them. And I think that that has made me a better service designer.


Okay, we're back, we're live at the one o'clock clock here on a given Tuesday with Rabbi Yitzchel Krasnjansky on Community Matters. We have much to report. It's a chock-a-block day for news in the Jewish community. Welcome back to the show, Rabbi. Thank you, Jay. It's a pleasure to be here, as always. Well, let's talk first about the hot copy on Israel. Today was the election day in Israel and the day in Israel would have been done. I'm not sure they fully counted yet, but what does it look like? For what I just saw, my way in, is that the right block, the right block of parties carried the day. So that means Bibi Netanyahu, he won the day. That means that it's going to be Likud, which is the right block, which is very good for the security of Israel. Well, he ran a very aggressive campaign. I know we heard about that. Well, he had to defend himself from a very aggressive effort to unrail him, to derail him. All right. We're going to hear more about that in the news tomorrow. I think we'll be all over the newspapers everywhere tomorrow. So, well, let's go to the second point. I really wanted to talk with you. So, yes, I shouldn't say yesterday. Sunday. Sunday afternoons. Sunday, what, the 7th? 7th. For your imitation, I went down to the ceremony you had at the synagogue on Atkinson to see what was going on with the two new Torahs that you have to replace the two Torahs that were stolen a year ago, and they were really good-looking Torahs, by the way. The whole thing was so good, so beautiful. And I might add that it was very touching to participate in writing the letters at the bottom you had ascribed there. He must have come from New York, maybe. Yes. He was really a fine gentleman, and he was so good at it. And so that was impressive. The food is always good, by the way, and Chabad of Hawaii, the food is always good. I know the Reviton has a lot to do with that. And finally, the sense of Stimka Stora, of happiness with the Torah was pervasive. You know, a lot of people showed up, and then the Kudugra was when you went out into Atkinson with the chuppah, the tent canopy over the two Torahs was one out there or two, I don't remember. Two out there, and the two new ones. And people were dancing up a storm, and the music and the dance, and people were so happy and involved and engaged. It was really an issue in the heart how the congregation came together from all walks, including our friend Josh Green. He was there dancing with one of the two Torahs. That was really something. But it was a beautiful thing you set up, Rabbi. I must say. Well, thank you, Jay. And, you know, Torah celebration in general strikes a very, very deep chord in the Jewish community and the Jewish community. The Torah actually is at the heart of Judaism. The Torah, by the way, is the Hebrew word for the Bible Testament, the Old Testament. And in the Jewish tradition, a Torah is a scroll, and it's written with ink and parchment with a feather. I describe. It takes about a year to write a Torah from the start to finish. And welcoming the Torah, the new Torahs, into our community was definitely a very, very special moment and a very joyous one. There's an interesting saying by one of the early Jewish commentators who lived in the 14th century, and he says that our nation, meaning the Jewish nation, is defined by the Torah. All other nations in the world are defined by their land, their borders, their culture, their language. For the Jewish people, the Jewish nation, what defines us is the Torah. Our mission is to spread the word, spread the document. Throughout our history, it was large time, most of our history, we've been exiled from out there. And yet, the Jewish people were able to keep it going only because of the Torah. The Torah is a very, very special part of Jewish life and of Jewish community. Well, you see the Torah as a very serious book. And indeed, it's the most sanctified book in the Jewish religion. It's the Old Testament, isn't it? Serious, serious, but the congregation was dancing up a storm on Sunday. I never saw so many people dancing for so long. I saw you dancing. I didn't realize you were young and sprightly like that, Rabbi. You were dancing for as long as I was there. You kept dancing. Well, there is a story in the Old Testament where King David, when they welcomed the tablets, that was before the Torah scrolls were written with different tablets, and they were going to bring it up to Jerusalem to put it into the temple. So it says in the Book of Kings that King David danced very feverishly. And his wife thought that was unbecoming of the king to behave like that in public, but she rebuked him. And he responded to her by saying that because this was glorifying God, it wasn't, you know, it was something bigger than himself than it was fully, fully appropriate. So that's the tone for all of this celebration, subsequent Torah celebration. It was really interesting to watch. It was infectious. You know, everybody was there celebrating the two new Torahs. And now they'll be placed in service now. They'll be in the ark. Every Saturday you will read from them. Looking forward to see, you know, the new energy they bring. Thank you, Dr. So let's go to Passover. Passover is coming soon. We need to discuss it. We need to know what it is. It's a very important holiday. It's a holiday of freedom, of liberation, a celebration of leaving Egypt where we were slaves. Tell us about that. Sure. So actually, so this year Passover falls out on Friday evening, April 19th. And it is an eight day celebration and it ends Saturday the 27th. And it is not only one of the three biblical holidays, because biblically what we find in the Bible is basically three holidays. Passover, when we commemorate the exodus of Egypt, the nation out of Egypt. Then there is, in Hebrew, Shavuos, which is Pentecost, 50 days later, when we commemorate the receiving of the Torah, Mount Sinai, the desert. Then you have the Feast of the Tabernacle, which is in the spring, in September usually, where we go out for seven, eight days and we rejoice. So those are the three holidays, but from the three, Passover is considered the the most important holiday and it's the first of all, the holidays. Point to Jewish calendar, as far as the holidays go, Passover is the first one. Because what happened on Passover is by our exodus of Egypt wasn't just gaining our freedom, but as we find in the Torah itself in the Bible, that we emerged as the nation in that exodus. Before that, we were family, tribe, several tribes, Jacob and his 12 children, there were tribes with a big, big family, but it was only through the crucifix of the exile of Egypt that we, the Jewish people, emerged as the nation. That's why in the Bible, in the Old Testament, the story of the exodus of Egypt and our remembering it is the most oft repeated commandment in the Torah. Even though there are a total of six or thirteen commandments, many other holidays, our exodus of Egypt is like the starting point. It's one holiday that has a clearly defined story attached to it with many, many lessons and there are so many parts of the Haggadah that are memorable, that teach us so much, that are repeated every year, if you go to Seder. I think what is really remarkable is that you go to a Seder, you learn the lesson and the lesson is reinforced every single year. So if there's one holiday, at least in my experience, that sticks in my mind and memory in terms of what it represents and what it is and what it teaches and the various ceremonies and rituals that go with the Seder, it's Passover. Passover is special in that way. And as everyone knows that on the first night of Passover, the tradition is to have what we call a Seder. A Seder is the Hebrew word for order because it's an evening that's very structured, the whole meal is very structured and the most important part of it is the whole narrative of the story of Passover and you must be telling that story and that's called the Haggadah, that is the retelling of it and that fulfills the commandment in the Bible where it says, children, you should talk with these children, tell it to your children, that's where the four sons and the Haggadah come in. And that's one of the messages that, yes, you hear the story, yes, you go through the Haggadah, you go through all the statements of what happened and you stay atheistic. I was sitting here April 19, 2019 and this ritual has been going on for the Jewish people since Egypt. So that's a lot of years every year. And so it's not just me, it's my My ancestors were hundreds of generations back. I'm in a continuum with all of this. And so Passover, the theme that Passover celebrates is the theme of freedom. And in fact, I believe that throughout history, the story of Passover, the story of Moses leading the Jewish people out of Egypt inspired many freedom movements throughout different generations. I believe even Martin Luther King referred to Moses taking the Jews into the desert as his calling to lead the people forward. How does the expression go? In every age, in every generation, a person is obligated to see himself, to see himself as gone out of Egypt. It has to be a personal experience. It's not just historical that we commemorate something that happened in the past, but we have to somehow experience it. And there's a very, very deep and fascinating insight into this whole idea of Passover. So on the very simple level, on Passover, we celebrate the freedom from oppressors. Today, thank God, for the most part, early Jews in the Western world are not oppressed. We live in freedom, and we're allowed to do the things we want to do. But oppression not only comes from without. It could come from within. When a person is enslaved to one's ego, a certain habit, in a sense, we lose our freedom. An idea of Passover is to liberate ourselves from this slavery, from the inner insolation. And actually, it's explained in Jewish mysticism that in Hebrew, Egypt is called mitzrayim. Going out of mitzrayim, mitzrayim is the Hebrew word for the nation of Egypt, country of Egypt. In Hebrew, the word mitzrayim also means limitation. And the idea is taken that on over the years, yeah. Exactly. And the idea is that we all have limitations. We all have things that hold us back from fully expressing ourselves, fully realizing our potential. Limitations could be of an intellectual nature, whether it's doubt or things like that. Or it can be on an emotional level, fear, or many other kinds of emotions. And the whole idea of Passover is to liberate oneself to transcend these limitations, to rise above these limitations. We're going to take a short break, Rabbi. Rabbi Itchel Krasnjansky of Chabad of Hawaii. We're talking about Passover. A very important holiday. It has so much significance, not only to the Jewish people that celebrate it at Stater, but to the whole world. It's about exodus. It's about abhorning slavery. And all kinds could be right there. Hi, I'm Rusty Komori, host of Beyond the Lines on Think Tech Hawaii. My show is based on my book, also titled Beyond the Lines, and it's about creating a superior culture of excellence, leadership, and finding greatness. I interview guests who are successful in business, sports, and life, which is sure to inspire you in finding your greatness. Join me every Monday as we go Beyond the Lines at 11 a.m. Aloha. Aloha, this is Winston Welch. I am your host of Out and About, where every other week, Mondays at 3, we explore a variety of topics in our city, state, nation, and world, and events, organizations, the people that fuel them. It's a really interesting show. We welcome you to tune in, and we welcome your suggestions for shows. You got a lot of them out there, and we have an awesome studio here where we can get your ideas out as well. So I look forward to you tuning in every other week where we've got some great guests and great topics. You're going to learn a lot. You're going to come away inspired like I do. So I'll see you every other week here at 3 o'clock on Monday afternoon. Aloha. We're back. We're live. We're here with Rabbi Itchell Krasnijanski. He's the Rabbi of Chabad of Hawaii. And we're talking about Passover, which is coming soon. So Rabbi, let's talk a little about setting up for Passover, cleaning house, so to speak, for Passover. And I would like to talk to you about the Seder itself. Sure. So just like the basics, the 101 of Passover, during the Jewish holiday of Passover, the Torah, Jewish Old Testament, prohibits us from eating any khamet. Khamet means leavened bread. Any bread that the dough has risen and turns into bread or cake, that's prohibited to eat on Passover. This is because when the Jewish people left Egypt after God broke the will and spirit of Barrow, who was the evil king at the time who enslaved the Jewish people. Because the Jewish people, they ran out so quickly that there was no time for the breads that they were baking for their provisions on the way to rise. So they baked it and ate it as matzah, matzah meaning like a cracker. So till this day, the highlight of the observance of Passover at the Seder and throughout Passover is that instead of eating bread, we eat matzah. But it's because, for example, today, most of the foods that we eat are derivatives of all different kinds of ingredients. So pasta, for example, is also would be khamet because it is wheat, the grains are mixed with water. So all of that is put aside and on Passover, we bring out the Passover foods. But it's not only that the Torah doesn't allow us to eat bread on Passover, but we now even possess the bread on Passover. And hence, the intense Passover cleaning that goes on in all Jewish homes before Passover, where the house is thoroughly cleaned from any leavened or leavened bread or just cleaned in general. It sounds like spring cleaning in a way, yeah, exactly. And that's the setting in there for the preparations of Passover. And the reason is that we want to remember what it was like when we left Egypt on a short notice, right? And that's why the matzah is eaten. Also it's brought down, and we say it in the Haggadah, that the matzah is a poor man's bread. Therefore, we do many things on the night of Passover and the Seder night to remind us of that part of our history when we were enslaved. And at the same time, we eat reclined because that's a symbol of freedom. You slide back on your chair. Right. And so we celebrate both our freedom and remember our humble beginnings. That's why we eat matzah. That's also the reason there are many, many foods that we eat on Passover night at Seder. There are there just to remind us of the experience of our ancestors in Egypt. And that's why we eat the bitter herbs tomorrow, which reminds us of the bitterness of slavery, all kinds of symbolic foods, all to remind you of the story of Passover. Right. And also, as the commenters explained, by eating certain foods, we somehow, in a very concrete way, we take it from the abstract and history into something tangible and real. And with it, the tactile has a taste. And you can remember the taste. And the Chara said you can remember the taste of the bitter herbs. And that takes you back to your memory. It's Proustian. It takes you back to your memory, even when you were a child, thinking of the continuum I mentioned, this helps you sort of integrate the whole experience for all these generations because everyone has tasted the morar over all these years. Everyone has tasted the Chara said over all these years. And this memory, this collective memory of the Jewish people is really the heart of the living Judaism, because there is this common memory that we all share, even those of the generation like ours that did not experience it that way. Two sets of dishes, I remember that. So you have your regular, four sets of dishes, what am I saying, it's four sets of dishes. Regular Jewish household, you have dishes for the meat and the dishes for the dairy. And you don't mix them up. But on Passover, you trot out another two sets of dishes, one for the meat on Passover without any comets, and one for the dairy without any comets. So a good Jewish household, I'm sure, an Orthodox Jewish household, four sets of dishes. Correct, correct. The reason for that is because according to Jewish law, China, earthenware, it cannot be kosher because once it absorbs something, it doesn't spit it back out. You have a glass plate, actually not glass, that's the question, but if you have tin or if you have, I don't know, if you have metals, things, but metal can be kosher, but China cannot be kosher. That's why the whole, Because it absorbs the food, yeah, the whole new set of dishes. And there's, gee, there's so many parts to the Seder, I hope we can regroup on some of them and explain them. But the one, the one that I did wanna catch before we had to close the show is the one about the four children because there's a description of four sons, four profiles of sons, and they're all different and you treat them differently. Can you talk about that? Sure, that is the highlight of the Seder and that is that because the Torah says that our primary responsibility this holiday is to pass it on, to teach it to your children and in the Jewish experience, the way to teach is interactive. Not just you talking and your children listening, but the interaction between the parents and the children. So it begins with a question and answer, a dialogue and the children, there's four sons, there's the wise son, there's the wicked son, there is the simple child and then there's a child who doesn't even know what to ask. And the Torah tells us that you need to speak to each child on their level. There's no uniform message you can give to all the children. Every child is different and every child needs to be addressed directly and this is the difference between the four sons and as you just said before during the break that on a deeper level, we all embody within us the four sons. We all have a little piece of each one of the four.  And what the whole message is, is that there is no child that's beyond reach. There's no person that is beyond reach. Every person can be reached. I remember in other aspects you would go wrap up if I could share it with you. You know, when I was a kid, each time the fader went through the four children, I said, gee, I don't wanna be the wicked son. Bad idea. I don't wanna be the simple son. Oh, that's terrible. I don't wanna be the, you know, what was the other one? It doesn't even know how to ask. Right, don't even know what to ask. I wanna be the wise son. I hope I'm the wise son. I have to strive to be the wise son and I have to exclude the other three possibilities from the way I live. And I remember, you see, I wouldn't want anybody to think I was the simple son. And in fact, you know, the way it's set up is that the people at the table and the sader, you know, they rotate the readings. So somebody is assigned to read the story of the wise son, somebody, you know, the simple son, somebody, the wicked son, somebody who doesn't know that. I don't want any of the readings except the wise son. That's the one I wanna read. And you're correct. Firstly, as we all know, that the sader evening is geared towards the children, the children play the most central role, not only in the questions, but the stealing of the aficomen, which they have, so you remember. Yes, I do, but you have to tell the people what that means. Yeah, the aficomen is the last piece of matzah that's eaten before the conclusion of the sader. It's actually a Greek word, which means like dessert. And it commemorates the sacrifice that was brought during the temple on Passover. It was a paschal lamb that was sacrificed. And so the custom is to engage the children, that the children, and you have to eat that piece of aficomen in order to be able to conclude the sader. So the kids, you know, so the leader, the head of the household hides the aficomen. And any of the children that are able to find it, you know, they can ask a high ransom for that piece of matzah. That's a very... It's usually a little money involved. Yeah, a gift, you know, they ask for a gift. A little gift. The idea of one last thought in this, that on Passover, as you mentioned before, the leaven bread is prohibited and the matzah is what's eaten. That's the staple of food on Passover. In the spiritual sense, bread, though that rises, represents ego, arrogance. The matzah that just flour on water, it doesn't rise and it's needed before 18 minutes. It doesn't rise, yeah, so the dough doesn't rise, that represents humility. And ego is really the culprit and the cause of enslavement. When a person is ruled by their ego, they're in fact like a slave to their ego, a literal slave to themselves. And it says in the Torah, we know that the most famous, prominent figure in the entire Torah is Moses Moshe Rabinu. And he was the first of the Jewish leaders. He took it out of Egypt, he gave us the Torah. But there's only one single description about his character in the Torah. That is that he was the most humble man of all people. So Moshe, Moses symbolizes humility, took us out of Egypt, which is caused by arrogance, puffed up, which is personified by Pharaoh. Rabbi, we have miles to go before we finish our discussion of Passover. We talk about going out of Egypt as the Red Sea. As passing through the Red Sea, we have to know more about that. There's the four questions. We have to know more about the fear-cautious. We have to know more about that. We have to talk about the psalms. We have to have a discussion about the visit of Elijah when you open the door and sing for Elijah. There's so many things in the Seder, so many things. And we should talk about the Haggadah as a piece of literature because it's been rewritten many times because it goes in so many directions. Not only that, but it is the most singular Jewish text. It has more editions printed than any other Jewish text. There's even, there was a movie out several years ago called the Haggadah of Stereovo, the Stereovo Haggadah. It's about a person who finds a Haggadah in his attic and it's the family Haggadah passed down from parents, grandparents.  Those are the best ones.  Fascinating. Through the Haggadah, the stains, what have you. It's again, it's Proust, Marcel Proust. And the Petite Madalene, how you open your whole life and you can see those other generations. Well, thank you, Rabbi. Yes, one thing, I just want to invite everyone who sees this. We're going to have public status where everyone is invited to come. It's called Haggadah<PHONE_NUMBER>. We also have public status all throughout the island. Everyone is invited to come or if you need any other help. We made it to Passover, please reach out to us. Celebrate freedom. Thank you so much, Rabbi. Thank you.


Corey understanding you were focused on pitching and the task at hand but was there an added emotion tonight considering everything that was going on pregame and with nine eleven. Yeah I think. Yeah for sure. You know I think that. The anniversary of nine eleven and being in New York and the tributes on the field and stuff. We're pretty emotional. I didn't I didn't get the greatest chance to take it all in getting ready and stuff but. There were. You know moments that I was able to catch and I thought the. America the beautiful and the anthem those were really well done. So I kind of got to soak those in but yeah I'm sure that for for myself and a lot of people that were here tonight and watching and stuff probably pretty emotional time. Just just how impactful is that considering everything that's gone on in New York and the two teams coming together for this 20th anniversary. Yeah. You know I. I wasn't in New York 20 years going to happen but you know I think even people that weren't. Directly you know in in this vicinity it was still impactful I think you know anytime you.  Just overall how did you feel on the mound tonight. Kind of same you know had some some good some bad just just not. Consistently as as many you know well it's keep it so like you didn't really control the count that great you know when I was at the count we're fine when I fell behind the count. Kind of got myself into back myself into here's count so that's kind of when they took advantage of it. Anyone else for Max Merritt Gord just what did you think of the evening that Aaron Judge had yeah I'm not sure I'm you know have have words really to really say you know it's like to to big home runs diving player in the ninth you know I made it he made a nice play in the in the fourth when I was still out there you know he can impact the game in so many ways it's not just you know the offense the home runs. That's probably what gets most notoriety but I think he's a very underrated outfielder he's a good base runner you know I think he. There's there's numerous ways he can he can help a team in a ballgame and tonight you show. And obviously this team has been going through a lot lately is there a collective exhale as a unit considering the fact that you guys have really struggled over the last two weeks. You know we we talked about as a group after game last night that you know since maybe we were all pressing a little bit you know kind of trying to do too much sort of thing whether whether the next win would come tonight or would come tomorrow or the day after you know like to think we weren't going to lose every game the rest of the year so I think it's just a matter of kind of keeping perspective and and knowing that you know take it one day to time one game at a time. One picture time and not trying to do too much not trying to play the hero and you know tonight was was a good example that we know we were we're down late in the ballgame and guys didn't hang their heads they kept fighting and we're able to battle and come out the win. You mentioned the conversation last night how was that conversation initiated and and who kind of spoke to the task at hand. A couple guys spoke you know I think there's there's a few guys that just had some things that they want to say that maybe I don't want to say they're bothering but just some things that maybe we thought was what would be constructive to kind of help us get out of the funk.


The FDA's Office of Generic Drugs has developed scientific research programs to accelerate the development and assessment of generic drugs using model-integrated alternative B approaches. These include PBPK modeling for ophthalmic, injectable, nasal, and implant drug products. The purpose of this workshop was to provide research updates and information on the current state of the use of PBPK, modeling approaches to support generic product development. This article was authored by Mingliong Tan, Sajiv Chandran, Rebecca Jarab, and others.


Thanks everybody. Yeah, so today we're going to talk high-performance Django basically taking your site from run server on your laptop to being able to get on the front page of Reddit. So my name is Peter Baumgartner. Like you said, I'm the founder of Lincoln Loop. We are a Django web agency so we build Django sites. We help people with Django problems and we help people learn how to scale and build new sites that are built for large, high-scale traffic. So we've been around since 2007 and in those seven years we have learned a lot about Django and how to make it run fast and handle lots of traffic. We've learned a lot of those lessons the hard way so we actually recently wrote a book by the same name high-performance Django that kind of bundles up all those lessons we've learned and packages them. In a nice little e-book now and probably a print edition later actually I have a couple here and we can give some out to people asking questions at the end. So if you're a reader of Hacker News or any any other web publications you may have seen this before. Django doesn't scale. How many people here believe that? Does Django doesn't scale? Okay. I'm going to be a little controversial and say that's true. Yeah, Django does not scale. You may say what about Instagram and Pinterest and discuss. All these people are using Django and they're you know at massive numbers of users and traffic. How are they doing it? Well I'd say they're not actually using Django as much as supporting cast of players. So it's their database Postgres or MySQL. It's Memcache and Redis doing load balancing with Nginx, maybe doing caching with varnish. None of these are Django, but they're really what makes Django site scale. You could use them just as easily with PHP. So all those servers, how do they work? How do you plug them all together? That's that's going to be the focus of the talk today. We're going to do a lab demo. I am basically going to take a site from running and run server and we're going to blast it with a lot of traffic, see how it performs and then scale up. I'm not going to talk at all about how to optimize your code today. I'm not going to talk at all about tuning your databases or how to do caching. We're basically going to work higher in the stack than that. So we'll be talking about how you serve your Django application, how you do load balancing and things like that. I can't do this on my laptop because I literally need multiple servers.  So like I said, we're going to be throwing a lot of traffic at these servers. It may look like we're benchmarking Django, but really what we're going to be doing would be a terrible benchmark. I'm going to set up a fake Django application. It's going to have fake data in it. I'm going to use EC2's network who knows what's going on there and I'm going to use Docker containers inside virtual machines on shared infrastructure. Again, neighbors could be doing anything. So don't take the exact numbers. We're going to see here to heart, but more of the difference between each different set up we're going to have. Okay. So first up, we'll take a look at Django. So let's see here. This is a EC2 instance I have set up. It's got a Django application on it. It's an M3 extra large. So that has four cores in it and about 15 gigs of RAM. So a decent sized box. It's not massive, but for what we're doing, it'll work well. I also have a RDS Postgres database server. It's a T2 medium. I think that is two CPUs and four gigs of RAM, probably a lot less than what you would use on a big production site. But for our purposes, it'll work well. So I'm going to use a tool called Fig. Fig, let's see, is a way to kind of manage Docker containers. So what we're going to do here is we're going to spin up Memcache D instance that is going to handle cache sessions. And then we're going to spin up our web server running run server. So that looks like this fig and we'll call our fig file and spin it up. So that creates our web container and our Memcache D container. And we're up and running. So I can show you what the site looks like right now. This is another box running in EC2 and it's going to be what we're going to throw all the traffic at it. So this is just an app.  It's user profiles and the users have a couple of foreign keys to a company and their job title. And they have a profile. That profile has a decent sized text blob in it and some links to the people they share a birthday with. So it's not a totally trivial hello world app, but probably not as crazy as what you'd be doing in production. Again, just kind of a demo here. So what you'll see in the real world is going to be a little different. Okay, so this is Jmeter. So you may be familiar with Apache Bench, AB, or Siege. They're good at kind of blasting specific page with lots of traffic. Jmeter is kind of like those on steroids. You can do really complex test plans and run them against your site. So what's going to happen is we've got this request object and it's going to go loop through everything that's under it. So first it's going to hit the home page of the site as an anonymous user. Next it's going to hit what I'm calling a hot profile page. So in real world site, typically you'll see there's kind of a, if you have a site with lots and lots of pages, there's usually a small subset of pages that really get hammered and then kind of a long tail after that that don't see quite as much traffic. So we're going to try to simulate that. So this is going to pick a random profile page between 1 and 50 and hit that. Next up we're going to, on 10% of our loops, we're going to log in. So that log in will basically, we'll hit the admin login page that'll give us the C-Surf token. We'll use that token and credentials to authenticate against the server. And then we'll post to create a new profile and then we'll hit the home page as an authenticated user. So we're kind of stimulating, you know, a site that's got some logged in traffic and those users are doing something. Another 10% are just going to hit a random profile page. So the database has about half a million profiles in it. This is going to kind of simulate that long tail of web traffic. So I'm all set up here to hit my web server. I'm going to do 50 current users and we're going to go through this loop 10 times and see what happens. So fire off my test here and we can see our response times. So what's happening is, we started off pretty good. We were below like 200 milliseconds, but really quickly we are getting really bad response times. We're now up to a second and a half. That's not really a great response time to serve requests out of Django. So basically what's happening is we're overwhelming the server. And if we go back and look, this is H-top. So we can see our, you can't quite see, but those are run server instances in Python there. And we're not really utilizing the whole server. At most maybe 30, 40% of any of the CPUs are getting used. But requests are queuing up. Basically, this is because run server is just a single process. As of recently, it's multi-threaded, but still we're only using a single process. So not really great performance. Basically, the server is not fully utilized. I can go back here and I'm going to pull and we're going to keep track of the data we're seeing here. So this is going to be, shoot, font a little smaller so it fits on the screen. So that's run server. 50 concurrent connections and our request per second were 28.2. And our average response time was 1,353 milliseconds. So about 1.3 seconds, that's not going to fly if you're on the home page or on the reddit. It's a little too slow. So let's go back and see what else we have. So normally you're not going to put aside into production with run server. That's a bad idea. Usually you're going to use a production whiskey server. We're going to use you whiskey today. You might be familiar with G unicorn, Apache bond whiskey. Any of those really are going to get you by. This is just the one we prefer.  And while that's happening, I'll show you our you whiskey configuration. So you can't quite see the edge of the screen there, but these are processes. So instead of running one process like run server, we're going to run six processes. And again, we have threading on. So multi-threaded six processes. We should expect some better performance here. The rest of this stuff is kind of boilerplate. You don't need to really worry about. So I'll show you as well. So this is how we are going to start off our you whiskey process here. Fig. All right. You whiskey's up and running. And we'll erase our previous test results. You was just going to go a little faster. So we'll loop through over this 20 times here and start off our tests. So you can see here performance is much better. We were pretty quickly over a second with run server. Here we're, you know, under half a second on almost all our requests. You can see the authentication takes a little longer. That's the password hashing in action. We actually want it to take a long time. So that's good. And we can see we're serving a ton of requests. Let's see how our processors doing. So we're utilizing a lot more the machine. There we go. So it's, you know, it's it's definitely we may have just finished the test run there. But as you could see, you know, we were hitting 90 percent CPU usage. And it does look like we finished. So let's see our results.  Again, 50 concurrent users and our requests per second are up to 72.4. So 150% better. That's that's a pretty good improvement. Our average response time is down to 279. So much better performance exact same server. All we did was with swap out run server for basically a real whiskey server. Let's see what happens if we take that same server and instead of throwing 50 concurrent connections at it, we throw 100 concurrent connections at it. And I think this is going to take a little longer. So for short on time, I'm going to bump that down to 10 loops through, erase our old results and fire it up again. So we should see here, we're pretty much maxing out the server. It's under a lot of load and the load average is just going to keep creeping up here. And if we look at our response times, we can see they're also jumping up.  Now we're hovering around a second. So in the real world, if you saw this on a server, what you would be saying is, you know, we're maxing out the server. If we throw much more load at it, we're going to start our requests are going to start timing out. We're going to start dropping requests. So this isn't going to get us what we need. So anybody know what the next step is? What's that? That might work. Anybody else? Cashing, we could do caching. So this server, you know, we maxed it out. We could get a slightly better optimized whiskey server that might buy us a little bit. We probably would be a really good idea to look back at our application and see if it's, you know, if there are places we can optimize it with caching and improve the situation. But let's just, you know, throw more money at the problem. You know, one server is not enough. Let's try two. So that looks like this. We're going to use engine X as a load balancer and put two servers behind it. Instead of engine X, you can use something like HAProxy, Amazon ELB. There's lots of options here.  I'm going to bring up another one. So this is web two and web two. There we go. So web two looks just the same as the other box. They're identical. This time we're going to bring up you whiskey. You know, it's the other one that said you whiskey HTTP. This is you whiskey using the you whiskey protocol. So it saves us a little bit of overhead basically converting HTTP into what engine X wants to use and then back to HTTP and then down to you whiskey. So we should get a slightly slightly better performance by using you whiskey's internal protocol, which engine X can speak. So here's our load balancer. I'll show you this is our engine X configuration. Sorry. Nothing exciting here. These are some settings that are known to boost the performance a little bit kind of just boilerplate. Here's our server that we've defined. We're going to pass back to a you whiskey cluster that will define when the container spins up and this include you whiskey params does everything we wanted to do. So that looks like fig engine X. Okay, so there's our you whiskey cluster we defined. Let's see if our web server is running. Okay. So we're going to go back to our test plan here. We're going to loop over at 20 times and instead of pointing to our web server, we're going to point to our load balancer, which is called LB. I haven't put in our other you whiskey here so that we did run it with 100 and we got better throughput there 101 requests per second. But our average response time jumped up to 750 milliseconds. So yeah, we we kind of decided that we overloaded the server there. So let's kind of forget about that one. That's not good performance. Overall, so I'm going to erase this start up against our load balancer. And we can see we're already doing pretty close to double the requests here. Let's see our response time is our response times way back down. So kind of what we'd expect, you know, we we served a certain amount of requests with one server, we double the servers and we're getting close to double the requests. At the same time, we're probably throwing twice as much traffic at our database. So you want to make sure that your database can withstand all this extra stuff. I think there's some kind of funky stuff going on with the network here with these those those gaps, but hopefully we still get a decent result out of this. So that was 100. Let's see. So we have engine x 100 concurrent users. And we did 403 average response time. And 137.4. So we came pretty close to doubling our first option here. The response time, that's higher than it should be. I think we kind of had some anomalies if we ran the test again, I think we would see it's it would be really close to that initial you whiskey instance. Maybe a little bit overhead, but engine x is pretty efficient in proxying. So that's that's engine x 100 concurrent users. What if we have 200 concurrent users? Let's see what happens then. So I'm going to erase these results. Fire it back up. And see our response times are starting to go up. Let's see what our servers look like. So this is web one, it's pretty maxed out there. This is web two, it's probably also going to be pretty maxed out. Yeah. And let's take a look at what our load balancer is doing. That's nothing. So load balancers are super efficient.  And it can handle lots and lots of traffic on a small machine. So let's see how we're doing overall, kind of like when we bumped up you whiskey to, you know, more than it could handle. We're seeing about the same thing now. I'm guessing our average response time is probably going to get close to to a second here. And request per second, we did better 166.8. So 166.8. So a few more requests per second at 200. But our response time was 805 milliseconds. That means basically we saw with very little load, we should expect response times around 200. So if we're at 800, that means we're basically overloading our server processes are waiting. So let's let's strike this one out as well. So next up, we could keep adding app servers, right? So if two didn't work, then we could add three. And if we can't handle it with three, we can do four. But maybe we can get a little smarter here. If you keep adding app servers, you're basically pushing the problem down your stack. And having load issues on your database is is not fun. You know, you can throw hardware at that for a certain amount of time. But once you run out of hardware options, that problem gets a lot trickier. So maybe we can get smarter. Whoops. And this is going to be the last one that we're going to benchmark. So instead of using engine x as a load balancer, we're going to use varnish. varnish does the load balancing just like engine x, but it can also do caching. So when those requests come back from varnish or come back from our backend through the load balancer, varnish can grab a copy of it and serve that to other users. So with varnish, I'm going to bump up the number of times we're going to loop through this here and erase the previous results and fire it up. So pretty quickly, we should see the request per second jumping well above what we were at before. And let's take a look at our response times. Our response times are actually a little Oh, okay. I didn't switch to to varnish here. So that explains why we're seeing the same thing. So we're going to stop their web servers. I'm going to stop engine x varnish does not speak the whiskey protocol like engine x does. So I'm going to start those up again. In the HTTP with the HTTP protocol. So there's their first web server. Here's our second web server. And varnish is is really amazing. And I don't think it gets enough love in the Django community. I don't hear a lot of people talking about using it. So let's let's take a look at the varnish config and kind of walk through that really quick so you can see what's happening. Just like engine x, we're going to define our back ends when our containers spin up and include that file. Varnish uses a configuration language called DCL. It's sort of like the old maybe looks like what you would use to configure engine x, but it's a lot different. So you define these functions. VCL received is what happens when a new request comes in. So it sees a new request and what we tell it is if that request is to the admin URL, or if the request has a cookie called session ID, we want to bypass the cache. We want that person to always go through to the back end and access the admin and log in or something like that. If they're not in one of those, we want to unset the cookies. So varnish will look at a request and basically determine whether or not it's unique. One of the ways it does that is by looking at the URL. Another way is by checking the cookies. So your Google Analytics package is going to set cookies for a user and you may have other reasons that there's cookies set for anonymous users. The back end doesn't care about those so we wipe all those out. Next up is the VCL hit method. The VCL hit method, that's what happens when it finds something in the cache. So first, what we do is we check the TTL, the time to live. If it's still basically still valid, we're going to deliver that right from cache. What this next part does is, let's see here, there we go. This next part, we can also define a grace period on our cache. So there's basically two timeout values. One, if we're in the first timeout, we just deliver it. If we have passed the first timeout but are still within the second grace period, what we're going to do is serve that stale content to the user and fetch new content from the back end in the background. So the user doesn't have to wait for Django to return the response but any future users are going to get a new copy of that data or that page. So that's really nice. It can prevent, if you have a really hot page, like you're on the front page of Reddit and you have one page that's just getting hammered and hammered and hammered and then your cache expires, what's going to happen is you're going to have 100 users all flood through to your back end and request that same page before the cache refreshes. So that's, I might call it a cache stampede or dog piling. So this is basically protection against that. And then the last method here is where we actually said the VCL back end response, we're going to set the grace period and the time to live on the requests that are coming back out. Varnish also respects cache headers. So this is something you can define in Django. But for our purposes, we're just going to keep it simple. And we're setting a five second time to live and a five minute grace period. In production, depending on the type of site you have, you maybe could run those much higher. But when you're on Reddit, even having those set really low, five seconds might be enough for you to withstand that. Basically that means if you've got 100 concurrent users sustainly hitting your site, only one request every five seconds is going back to your back end.  So all right, now let's spin up. Varnish. Oops. I did switch those over. Okay. So let's try this again. Erase our previous results. That's what I'm expecting. Okay, so if you can see there, our throughput skyrocketed. We're 550 requests per second. And if you look at our average response time, it's 178 milliseconds. So and this is the really interesting one to me is if you look at the average and median response times on our hot pages, two milliseconds. So you're never ever will get Django running this fast. Varnish is very, you know, it's a cache. So it does what you'd expect. No matter how much optimization you do in your code, your database, anything, it's never going to do this. You can have the full page caching on. So this is where Varnish really shines. So that test is already done. Let's add that to our list here. So we're running Varnish, 200 concurrent requests. And we did 456 requests per second. Oops. And then we did 256 requests per second. And our average response time was 203. So compared to engine X running on the exact same servers, we more than doubled the request per second we're handling, and we cut our response time in half. All the exact same hardware, all we did was change engine X with Varnish. So that's a huge difference between what Varnish can do if we were to throw 400 concurrent users at it. So there's a lot of traffic. This is 400 people simultaneously hitting your site. Most sites will never see as much traffic. So we're going to run that again. And then while that's running, let's take a look at what our servers are doing. So this is Web 2. This is Web 1. Load is a little bit lower, you'll see, than what it has been in the past. Before when we were overloading the servers we were really just totally spiked. They're getting used pretty heavily, but still not a ton. Looks like we might have finished already. Yep, so we're already done. That's, I'll add that to our list here, Varnish. That was 400. Oh wait. I think I might have had another one of these kind of blips in the network. Yeah. That's not normal. That doesn't happen. This is why this is a terrible benchmark. Usually that would be smooth. So just pretend you don't see that giant spike there. Anyhow, while that's running we can also look at Varnish. Just like Nginx, it's not even breaking a sweat. You put a bunch of RAM in your Varnish machine and you make sure it's got lots of network capability and it'll handle a ton of traffic. So it looks like it's wrapping up now. So that was 400. These results aren't great, but we'll add them in. I've run this like testing it a million times. So just take my word on it, but normally it's about the same as far as the response time and slightly better request per second. So 360, wait a minute, 476. I got these backwards here. And 364.8. So while we have this up, let's look at some other kind of cool things about Varnish. I've got a few minutes left here. So I'm going to go in and instead of looping over this 30 times, we're going to loop over it 100 times to give me some time to show you what's happening on the servers.  So one kind of cool thing Varnish comes with is this Varnish histogram. This is showing us in real time the requests that are hitting the server. The dashes or the pipes, the vertical lines are ones that are hitting the cache. You see that 1e-5, that's 1 millisecond. And then the hash marks are the ones that are cache misses and hitting our back end. So those are getting returned around in the neighborhood of a second. It also has Varnish top. No, that's not what I want. Varnish stat. So here you can see hit-miss ratios, number of connections and all that. So a big performance win is basically just letting Varnish serve more of your cache and you can track that. It does a really good job of showing you what your hit-miss ratios are. And this is the really awesome thing.  So take a look at this. Our hot pages are not errors. We're still serving content on all those pages.  You've deployed a massive breaking change to your live servers in the middle of being on the front page of Reddit and Varnish is still chugging along serving your content. And 10% of your users are getting errors. Yeah, that's bad, but your important content is still up and running. So you can see the error ratio shooting back up on all these, but Varnish is still serving our homepage and those 50 profile pages in two milliseconds. So we can spin back up our Web servers and Varnish is going to reconnect to them and basically fix all that stuff. So use Varnish. It's really great. That's the lesson of this talk. So we did about 450 requests per second with Varnish. If you were to do that sustain for a day, that's 40 million requests in a day. There's people that do a lot more than that in a day, but they do it on a lot more than three servers.  You could probably do it on a lot less. It wouldn't be surprised if you could do it on one server running Varnish and Android application. So pretty good results from where we started with, hang on, so we started, there we go, with RunServer at 28 requests per second. So like I said, Django doesn't scale. Don't use RunServer in production. Varnish scales. Use Varnish. And yeah, that's all I have. So like I said, we wrote a book. It's called High Performance Django. You can check it out at highperformancejango.com. I also have a few copies here that are loaded on these nifty little USB keys. If anybody wants to ask questions, you can win a copy. Thank you.