This is a tool for randomized testing. The paper's actually about Haskell, but the language doesn't really matter. And since it's such a practical paper for doing real things, I'm more going to just show how the techniques are used and give you a concrete idea about how to actually put them into play. Essentially, it's a technique for randomized testing of your programs and testing properties about your programs. So, say if you have a concatenate function and you're trying to test that it does the right thing, you have, sorry, I'll use a reverse instead because that's what's up there. So you want to write a function that reverses values in a list and you have some properties about reverse that you can test on it. With reverse, if you have two lists and you reverse each of the lists and then you add them together, it should be the same as reversing the lists added together before the reverse. So that's this property here. Now, when I demo this, this is all enclosure, which is a lisp. So it'll look kind of funny with all the brackets and everything. But to read it, it's really quite simple. You just move the bracket one element over and that's essentially the same thing, really. So let's come up with a reverse property. Okay. So let's write a reverse function. Let's write the property first. So my reverse of v. So this is just saying for all v's which are lists of ints, generated lists of generated ints, we want to prove the property that my reverse v, I'll prove this second property first because it's easier, my reverse v equals reverse v, my reverse v. So if we reverse it twice, it should equal the original list, right? I haven't implemented reverse yet. So we'll implement a reverse function. We want to say, let's say we take the last element, last element and we add it onto my reverse. So that's not going to work either because that needs to be a list as well. This is a very naive implementation. I just don't want to use it there. So let's just try it out. My reverse, now I've got a property, reverse twice. You want to try out this property? Okay. I know really the language, but I'm not confused because I'd be expecting that when we are doing the reverse, we will somehow pop the element. So here it seems that we are putting the element at the beginning, but we are keeping the list the way it was. I would expect the same as we need to last call. In my reverse call, we will have to do something to remove that last element. So how is that working? Yeah, well, we'll see as the properties find the bugs. Obviously, it's not working right yet. Which is hopefully going to help with the live coding because it's kind of fun. All right. So stack overflow exception, right? Let's go if empty call return that. Otherwise, concat, right? Okay. So stack overflow exception still. Well, stack overflow exception because we're never actually taking the element off, right? So, but last, right? Okay. It passed the 100 tests that were thrown at it, right? The seed that's there. Sorry. I keep forgetting them. So when things get evaluated, they get evaluated at the bottom. So we'll look at that. Maybe I'll make it a little bigger. All right. So, okay. And the seed that's there just gives you the seed for the random number generator that was used to generate the examples. So if you want to run the tests again and get the same result, you can, right? So I've implemented a very bad implementation of reverse and tested one of the properties on it. So now let's try out a different property. So let's try reverse concat. So we want to generate a vector of ints and another a vector of ints. And we want to test that reverse v concatenated with reverse w. Ah, my reverse. Yep. Thank you. No point testing the standard library. Now, let me just think about it for a second. So, reverse v, it's w. Concat v, w reversed. Yeah. So we can test this property now. So the failing test was 0, 1. So let's just see what, maybe I'll mix this up. My reverse v, w. So one thing that's kind of cool while I think about this for a second is that the failing test is a vector of 0 and a vector of minus 2, 0. But one thing that's done is it's shrunken down the example cases that's used to something that's a bit minimal that we can test on to make it a bit simpler. Yeah, should they be reversed? These two? Yeah. Yeah. Okay. Yeah. I had a feeling. Cool. All right. Now, let's say we want to test property. So this will give a good example of the shrinking that's used. So we'll generate a list of integers and let's say we want to make sure that there's no value 42 in that list. So it's generated an initial failing case of this vector, which is about 10 elements long. The shrunken version is actually just one element long, which is 42. And it uses a kind of shrinking that can shrink on integers themselves. So I think this should shrink to 0 instead of 42 every time. That's because 42 will actually shrink towards 0. So it's kind of nice when you get, in a list of really big integers, you might just get a whole bunch of zeros. It allows you to kind of eliminate that value as the cause of it sometimes. So the hard thing I find about testing in this way is you've got to think about the properties of your functions. So it requires a little bit more thinking than just unit testing because unit testing, okay, this value should give this value. You actually have to think about what your function is doing, how it works, sometimes as mathematical properties that you need to think of. The simplest one usually is if you can just apply a function and reply another function to it to actually get back the original value. So that was the reverse property from before. Another way that's quite useful is if you have just a much slower version or you can think of a much slower version that's fairly naive, but very easy to write, that can be pretty useful. So imagine, let's say, you're writing the function min, which just goes through a vector, finds the smallest element of it. You could trivially implement it by just getting the first value in a sorted list and you can just use the standard library to do that. Often, if you've got some code that you're trying to make faster and you have the slow version of it that was written and you know it's correct, then you can just take that, write your new version, write it faster and then use the old version as what you test against because it's known to be correct for what you think. So sometimes you'll find bugs in the original code. Yeah, or how inputs relate to the outputs. So for the example before with the reverse, we've got two reverse-concatted lists equals the reverse-total-concatted list. So we've talked about that. Okay, so with this test check, well, with test check, which is a quick check implementation, you can use sample on a generator. It just samples the generator. So it basically just calls into it and grabs a value. It's useful if you want to see what your generator is doing. Maybe you have one generator and you want to actually ensure that only some of the values are used. GenInt. So here I've got an int generator and I want to make sure that only positive values are actually returned by it. So that returns a generator itself. But then if I sample it, now I've only got positive inputs. All right. This sample by default does. But when you actually test the properties of your system using quick check or test check, it will generate vectors or arbitrary numbers of your values, depending on your generator that you're using. You can make them of any sort of size. There's ways to actually say, okay, only one vector is from this size to this size. So sample isn't actually returning a generator. It's just a way of applying a generator and getting some actual values out of it just to have a look at them rather than to use it in your testing. Does that make sense? Let's say we have... we want to select from some names. Bob's is not a name. So you can use GenElements. So just randomly selects from the list that you've got. Choose. Most of these are very similar to what's described in the paper. And you can find them in most quick check libraries. So choose allows you to only generate within a certain range. Return is kind of... I'll avoid using the n-word. Just returns a generator which will just generate the value that you've put in it. So if I GenSample, GenReturn3, I'll always return 3. Sometimes you just need it when you're writing recursive generators. I'm really powering through it. Does everything make sense? Yeah. So... Just leave yourself to it on-site if that's easy. That's not going to be a problem for me. Do you see it? If it moves it, it's going to be a problem for me also. How about that? Is that better? Sorry. Okay. GenBind just says if I have one generator, if I have one generator, you can essentially... I'm thinking of fmap for that one. What does it mean? It just means add one. So yeah. I gotta forget. Okay. fmap says if you have a function and you have another generator, apply that function to the generator, essentially in return another generator. It's kind of like peeking into it and just applying the contents of it. It's often useful. So let's say I want to generate ints which are powers of 2. Whoops. GenFmap says powers of 2, v2 to the v. All right. GenInt returns a generator. Then I go to the sample. Let's have a look at some of the values. So it's returning powers of 2. Let's just try implementing a function with a bug as well. So myink says we're silly and if v is equal to 0, we won't do anything. Otherwise, we'll add one to v, 0.4, 0.45. Now we want to test a property of it. So let's say probably myink. We can say since we're always adding something to it that the new value should be greater than the old value. So we'll go to greater v, myink, v. So for all v's, v should be greater. Myink v should be greater than v. Cool. Finds the incorrect statement. And so one thing that's kind of useful is to use Gen1 of which is a way of mixing generators together. So let's say we have a very simple one. So we've got my power of 2 generator now and we want to mix it in with regular ints but only occasionally use the power of 2 generator. That needs to be in a list. Now we have a new generator. Sometimes it'll return the int, sometimes it'll return the values of the other one. So now what I was thinking was, well, is everything making sense still? Yep. As I rush through it, I can try some sort of bit more TDD type testing. So let's say we have some sensors and you've got data that's coming in from sensors and every time you get a sample from a sensor you want to increment account, right? So what I'll do is we'll build a generator. The sample is kind of an event generator. So we've got events coming in. We'll just say sensor1, let's say sensor1 pings. So the event type is ping. The sensor is sensor1, right? Now we are going to pingPaste property. So positive, so positive or 0, right? So the number of events that come in should be either 0 or they should be positive. Can't be negative, right? So we'll generate some events and then we'll call our function event. We haven't written our function yet. All this is essentially saying is call the function handle event initially with an empty map, dictionary essentially, on all the values, all the events each time in turn calling it with the updated sort of count plus the latest event, right? Now we need to run and write handle event. First v ping, then we want to counts v plus 1, right? Otherwise we'll just return counts or just ignore all other types of events. Does this kind of make sense? So we've got handle event of ping sensor 1, sensor 1, 0. It should... It's not right. So what this is doing is if you get a ping for this sensor, just strip this up, sorry, ant type, sensor ant type is ping. So what we're doing here is we're adding to counts with adding to the dictionary under sensor and we're adding one to the count. I still have a problem. This is why life coding is a bad idea. There we go. No pointer exception. So we get counts sensor. I'm not doing it right. It does the job, right? I've got a property, plus or zero, and we'll have a test and we'll see what happens. Sorry, wasting time. Okay, so no pointer exception. It's the same thing that happened before, right? So that's because we're just trying to add one to the count. Yep. So we fix our bug because basically what we're doing, what we need to do is if count is nil, so current count... So we've got the current count, yep. If current count is nil, then we do something... Sorry, new count. We want one. If not, we want plus one to current count, right? Can you say nil for me? Yeah, I'm just trying to avoid getting too lispy, because otherwise, yeah.  Sensor new count, right? Okay, it should have worked. It should have worked. Why didn't that work? Okay, so it did work, right? So it's found one issue. Now, let's say we want to make it so that we have... Not only do we have pings, but we want it so that sensors have to be registered before their pings are recorded. You know, everything before the registration should be ignored, right? So let's make this ping generator and we'll make register sensor generator register sensor one. Now, we want to event generator be one of ingenerator or register sensor generator, right? So one of those. Now, it should be able to just put it in proposal zero still. Gen one of is wrong, because it's not in... Okay, cool. Now, when we register the sensor we'll say I'm making this so I can handle more conditions. That's what cond is. So let's say event type is register sensor. Is it register or register, yeah. That type is register. Then we want to say counts. You want to say sensors. And we want to add the sensor to it, right? So all this is just saying is it says it's saying add it to the list of sensors, right? And otherwise just return nothing. When I change the event thing I'll say sensors is a set with nothing in it to start, right? So everything runs still. Okay. So now we need to test the property that all of the values before the register are ignored, right? So for all events do that. And so this... I'll just explain what I'm thinking first. So if we reverse the list of events we could just take all of the events after the registration and ignore them. And the sum of all of the events before the registration should still be should be greater than or equal to the actual count. We should have ignored everything before it, right? Makes sense. So we'll say I'll just make a handle events function which does this for us. So that handle events V should be equal to reverse V. So we'll say drop until we hit... Sorry, did I say unregister? I meant sorry, drop handle events. Someone can... So essentially we're saying from the list of events we want to drop every event until the initial registration, right? And that should... the result of applying all of the events where we've dropped it until the initial registration should be equal to applying all of the events because it should have ignored the initial events, right? So let's see what it says. I haven't added a test for that. But prop before registering, ignored. Is there only one test there? Okay, cool. So that doesn't make any sense to me. Nothing. Sorry, I flipped back because it didn't make any sense. It's saying that it passes this test because there should be cases where it hasn't ignored it. Right? That's because it... Yeah. It should be until I've hit a register. You're right. And it should be first. Yes. Okay. Cool. Okay. So this... test it found was that, you know, a ping nothing else. So what we should do is we'll say if the event type is ping and sensors counts has V in it already. Sorry, not V, sensor. So sensors are already in senses and it's a ping increment account. Otherwise, we don't do anything. And it's passed. Now we could... How much time have I got? I think you'll get the gist of it. So I was going to have an unregistered sensor, but I think much point in going too much further. Any questions? Sorry for the rambliness.


Because multiplication and division are related, any multiplication method that we have will also double as a division method. So we might consider the area model we have for multiplication, and we can reverse it and produce a model for division using areas. So let's consider that again, remember what the area model for products and quotients looks like. If I have two sides for a rectangle, the area is the product, and because of the relationship between multiplication and division, what that means is if I have an area and one side, the other side is going to represent the quotients. And so this leads to an area model, which I can use in the following way. So let's consider the division 221 divided by 17, and I'll use a tape diagram to represent this area model. Tape diagram are really interchangeable terms. So let's take a look at that. So remember, area is the product is the dividend, so this dividend 221 is the area of my rectangle, and the divisor is going to be one side. So I have an area 221, one side equal to 17, and my question is how big is the other side? Okay, so how can I approach this? Well, I might start by taking some chunk of the rectangle whose area I can find easily. And the only requirement I have is that I want to make sure that this rectangle has an area of 221. So maybe I'll take a chunk of size 10, and so now I have this 10 by 17 sub-rectangle, and it has a nice area. That's easy to calculate, 170, and I know that that is smaller than what I need, so that's a good starting point. So let's take another chunk. How about, well, I can take another chunk of size 10, because that's going to give me a total area of 340. So how about width 2, for example? So I have another rectangle here that's 2 by 17, and I can find the area 34. And now I have area 170 plus 34, that's 204, which means that I have area 17 left over. And so I can take one more chunk, area 17, and there's my rectangle with area 221 with width 17 and other width 13. And so my quotient is going to be 10 plus 2 plus 1, and that's going to be 13. Well, let's look at a harder problem. So 1,537 divided by 29, and again what I have is the area, 1,537, one side of the rectangle, 29, and so I can draw that figure. And so I'm going to draw it looking something like this, and so here I've kept track of how big this rectangle is, how long one side is. Now if you go back to how we did the area model for a product, it's worth remembering that we could, and often did, break up the one side into smaller, more manageable pieces. So we might break up this 29 into two pieces, one of length 20 and the other of length 9. So, take a chunk of the rectangle. How big? I don't know. How about 20? Why 20? We'll try it, see if it works. So now I have two rectangles, 20 by 20, I could find the area of that, 20 by 9, I can find the area of that as well. And those areas 400, 180. So now we might try and determine how much area do we have left. So I can do the subtraction. Starting with this area, 1,537, if I remove the area 400, I have 1,137 left. Remove the area 180. Again, you could do the subtraction, or again that's, if we count past, that's 200 down return 20. So that's down to 937, back up to 957. So there's the area that I have left, and notice that this area left is still greater than the 400 plus 180, still greater than 580, so I can remove another chunk of size 20. And again, I'll figure out how much area I have left after those two chunks have been taken out. So again, 957 left, take out the 400, leaves 557 left. Take out the 180, get rid of 200, and return 20, that drops us down to 357, back 2377. And not enough. These are bigger than what's left over, so our remaining chunk has to be smaller. So how big can it be? Well, if I am taking with 29, I know I can take out at least 10. And again, doing the same computations, this 10 by 20 rectangle, that's 200, that's 90, and what's left over, 87. And how much can I take out now? Well, there's 87 left, so I definitely can't take a chunk of size 10 anymore. So I'll take a smaller bit, turns out that 3 works out to be the ideal size. This is 3 by 20, that's 60, 3 by 9 is 27, and at the end of it, there's nothing left. Actually, I wouldn't believe me. Let's go ahead and make sure that we've actually accounted for all of the area. So let's see, that's 400, 800, 1000. Let's see, what else can I group here? So how about these 200, so that's 1200, 8 in 8 is 160, so that's 1360, 1460 minus 10, 1450, plus 60, 1510, and 27, 1537. So all of our area, add up to 1537, which is all we have. So that says all of the area is accounted for, and the length is the quotient. So that's going to be 20 plus 20 plus 10 plus 3, and I can just add those together to get my quotient 53.


Hello and welcome to the Grand Line Review, your source for everything One Piece, and more specifically, welcome to Saga's In Minutes, the very occasionally produced series that aims to equip you with the basic knowledge to leap into the wilderness of One Piece. And today, we are finally, finally, going to be concluding the massive piece of story that was the Paramount War Saga. So I've stated this a couple of times already, but the Paramount War Saga is the sixth in the series, consisting of 108 longer chapters and 122 anime episodes. And in previous editions, we have explored the straw hat separation, Luffy's adventures in Impel Down, and spent an entire episode covering the events of the Paramount War itself. And today, we find ourselves covering the post-war events of this saga. And we pick up in the immediate aftermath of the Battle of Marineford, the strongest man in the world Edward Newgate has fallen, and the Marines have emerged victorious. And this is an event that would reshape the world as we know it, with pirates everywhere immediately spring into action to claim white bids from territories in an effort to fill the power vacuum left by the death of one of the four emperors of the sea. One such example of this would be Brownbeard, who attacked the town of Foodvulton and claimed that he now ruled the island. Well, we'll see how long that lasts, a Brownbeard. But repercussions of the war aren't simply condensed to those affected by white beard, as the world government has also begun to readjust the warlord system, and the powers that be judged that Gekko Moria was now too weak to be amongst their ranks, assigning fellow warlord Del Flamingo to assassinate him, although this attempt was ultimately unsuccessful. To start filling the vacancies left by Moria and Blackbeard though, the world government invite a most unlikely candidate into their ranks, being Buggy the Clown, who made a name for himself during the battle, mainly through shooting propaganda videos. But nonetheless, Buggy had developed an impressive following, and would come to accept the offer and become a warlord of the sea. Meanwhile, in a more somber state, Luffy was taken to Amazon Lily, and having regained consciousness, he is now lamenting Ace's death, which becomes our gateway into a most unanticipated Luffy flashback, where we find ourselves on Dolan Island 10 years prior to the modern day. This story tells of how Luffy's grandfather Garp took him to be raised by mountain bandits after being, in Garp's own words, influenced to become a pirate by Red Head Shanks. So at this point, Luffy has a straw hat, as well as his dream to become the pirate king. The bandit group he was dropped off with was led by Curly Dodan, a name that has come up before in the series being mentioned by Woopsap. Remember Woopsap? But also present within the bandits territory is a young portgasty Ace, whom Garp had also taken in, and then promptly dropped off with bandits after a request from his rival Goldie Roger, the father of Mr. Ace. Now Luffy being the charming boy he is immediately attempted to make friends with despite the fact that Ace had spat on him and very, very clearly wanted nothing to do with him. But as we all know Luffy is persistent and eventually after a montage, he stumbles upon Ace and another boy by the name of Sabo in a series of events whereby Luffy was captured by a member of a group known as the Blue Jam Pirates, specifically by the member Porchemi. And now in what is probably one of the darkest moments in one piece history, Porchemi proceeds to torture a very, very young Luffy until he is eventually saved by Ace and Sabo, which acts as something of a bonding experience and the three boys soon become friends. And shortly after that they even take things to the next level by becoming brothers through the ritual drinking of sake. Now something important to note about Sabo is that he comes from a very different background to Luffy and Ace, and in fact Sabo was the son of nobility of the Goa Kingdom, the ruling faction of Dawn Island, specifically a man named Outlook the Third, who hired the Blue Jam Pirates to find and return Sabo, which they successfully did. And after being re-inductinated into his life of aristocracy, Sabo soon discovers a plan to cleanse the Goa Kingdom by setting fire to the entirety of the Great Terminal, an area of the island where the poorest of the poor reside. And this was being done because a world noble was on their way to inspect the Goa Kingdom, and so Sabo ran away once more in an attempt to warn everyone, but it was too late as the fire had already been ignited, also trapping Luffy, Ace, and the Blue Jam Pirates amongst it. Now the majority of the citizens, including Sabo actually, would go on to be saved by a certain Monkey D. Dragon, who invoked a particular power to provide the Great Terminal residents with a path to safety, and even offering those who desired it a place amongst his revolutionary army. In the meantime, amongst the Blaze, Ace and Dadan became locked in combat with Captain Blue Jam, while Luffy was taken to safety by the rest of the mountain bandits. But together, Ace and Dadan would have a hard fought battle, but they would eventually overcome Blue Jam, with Dadan becoming greatly injured in the process, and being carried back to the bandit residence by Ace. Although by this time, Sabo had made the decision to set sail, and fulfill his dream of becoming a pirate.  Spoiler alert, he didn't, and we never believed that. Ace and Luffy did though, and that's what's important. In fact, they both took Sabo's death particularly hard, although Ace eventually summoned up the resolve to say to Luffy that they had to live their lives with no regrets. That one of these days, they were going to live lives freer than anybody. They were bound to make enemies, and their lives would be in constant danger, but they would be free. Ace then decided that he and Luffy would each set sail when they reached the age of 17, a time which came swiftly for Ace, and then also for Luffy. Which took us back into the modern day, with Luffy still gutted over the death of Ace, and disgusted by the fact that he was too weak to have saved him. But instead of Ace being here to comfort Luffy, this time that role would fall to Jinbei, who proceeded to lovingly strangle Luffy, and force him to remember that he still had his crew. All of the straw hats were out there, ready and waiting to resume their adventure with Luffy. But a reunion would not be quite that simple. This is because by this time Rayleigh had literally swam to Amazon Lily, because that's just what a living legend can do casually, swim through the calm belt like that. But upon arriving on the island, he offered to train Luffy in the Art of Haki, a power system that had made vague appearances before now, but that we had never really delved into. But this offer would be the catalyst of Luffy deciding that the straw hat pirates would take a two-year hiatus. And in order to pass this message on to the rest of the crew, Luffy, Jinbei, and Rayleigh caused a big scene by sailing to the remains of Marineford, in the guise of paying their respects to the departed Ace. However, rather sneakily, Luffy was also sporting a tattoo on his arm sure to be photographed, and published in newspapers all around the world, which read as 3D2Y with the 3D crossed out, implying that instead of meeting up in three days, they were instead going to reunite on Sabotee in two years. And all of the straw hats immediately understood this message, as well as the fact that they themselves needed to get stronger, so that they could not only achieve their own dreams, but also allow Luffy to reach his dream of becoming the pirate king. And this led to an unwavering display of loyalty amongst the crew, especially from Zoro, who had been sent to Kuragana Island, the home of Dracul Mihawk, the world's greatest swordsman. This was the man that Zoro had his sight set on defeating, however for the sake of Luffy, Zoro got on his hands and knees and begged Mihawk to train him. And all of the straw hats would find themselves in similarly convenient situations, thanks to the efforts of Bartholomecuma. In regards to Nami, she was now present on a tiny sky island known as Wetheria, where she would be able to study and innovate with the world's leading weather scientist. Hussot was bonked on the boy in Archipelago, where he would meet Heracles, and be taught about all sorts of incredibly dangerous yet powerful plants that could be harnessed for a variety of purposes, very much including combat. Sanji, to his eternal dismay, was sent to the Kanbaka Kingdom, the land of Okama ruled by Emporio Evenkov, who you may remember as an ally of Luffy during the Impel Down and Marine for Darks. And after a rough start to say the least, Sanji took up the challenge of defeating the 99 masters of newcomer Kempo, with each of them holding a special recipe for a dish designed to drastically improve a certain aspect of anybody who consumes it. Chopper would end up within the Torino Kingdom in South Blue, which, while it initially seemed like a fairly backwards tribal area of the world, was actually home to an extensive library of various rare and unique medical texts that once belonged to a significantly advanced culture. Niko Robin was probably given the Rora Steel of all at first, being sent to the bridge nation of Tequila Wolf, a bridge that has been under construction for 700 years at the time of Robin's arrival, where she was captured and made a slave until being rescued by the Revolutionary Army and then accepting their offer to travel to Baltigo, and therefore spent the two-year time skip incorporating all of the knowledge that the organization had gathered, led by Luffy's father, Monkey D. Dragon. Frankie found himself on Karakuri Island, which as it turns out was the birthplace of the legendary world government scientist Dr. Vagapunk, as well as home to one of his former laboratories. Well, two of his former labs, which was very good news for Frankie after he accidentally self-destructed one of them. Luckily, that was the least important one. And finally, Brook, in probably the weirdest situation of all, landed on Namakura Island in the middle of a cultist ritual, after which he was worshiped as Satan for quite some time, before being abducted by select members of a long armed tribe and becoming a traveling sideshow attraction, all the while working on his musical prowess that would eventually see him turn into a global superstar. As for the rest of the world though, the other notable factor is that the entirety of the worst generation minus Luffy's Zoroan Law, the latter of who was currently on Amazon Lily after having treated Luffy's injuries, all embarked into the new world, with many facing immediate challenges of the world's most unpredictable sea. And that just leaves us with Luffy, who was taken to the island of Rusukaina, by Rayleigh, to begin his Haki training. And after demonstrating the basics of all three forms of Haki, Luffy realized that he had encountered these powers over the course of his journey and was astonished at Rayleigh's capacity in regards to wielding them. However, before finally beginning his training, there was one thing left to do, as Luffy removed his straw hat, ceremoniously indicating that he was putting his pirate journey on hold, only to be recommenced in two years' time. Next time on Saga's In Minutes, we are finally taking flight in the new world era, as the straw hats gloriously reunite to take on a chunk of story known as the Fishman Island Saga. If you enjoyed this video and the content this channel produced in general, then please do consider donating to the groundline for you Patreon, because the support of all of your amazing people is what continues to make this channel possible. And if you'd like to see more videos like this but applied to other anime manga series, then please do feel free to check out my second channel, New World Review, for all of your wider needs. And if you'd like to join the fun at any time, then please do head over to my Discord server, where a wide array of shenanigan retex place on a daily basis. And finally, please do comment with your thoughts on the post war events of the Paramount War Saga. This has been the groundline review, and I'll see you next time. Is there any point in the One Piece story that got you thinking to drop the series? So I've been reading One Piece ever since fairly early issue in the anti-slobby arc, and I have to say that by and large, this series has kept me 100% captivated from that time right up until where we are today. I've definitely never considered dropping the series, which I think is actually insane, because I've dropped most long running series after a while. But I will admit that there have definitely been moments where I have considered taking a break from One Piece and letting chapters pile up to read in bulk. One of those points was during Thriller Bark, which I think was a really difficult arc to read weekly, because we were coming off this high of anti-slobby, and all of the really great stuff in Thriller Bark was heavily weighted at the tail end of it. So it was a tricky year or so to get through reading weekly for me, but I still kept up with it anyway. The only other point I've seriously considered taking a break was during Dress Rosa. In fact, there was one chapter in particular that almost broke me, and it was the one that featured Rebecca, Bartolomeo, and Robin flying on the Tontada, whatever. And by this stage, Dress Rosa had just gone for so damn long with no end in sight. And you know what? I don't even remember what else happened during this chapter, but it just felt incredibly weak, like the weakest One Piece chapter I've ever read in my entire fan lifetime. And I just felt so dejected, like, screw Dress Rosa. I should just wait until this is over and catch up. But once again, that was a fleeting feeling, and I was straight back to reading it the next week. Luckily, the chapters were all pretty solid after that, though, but it was a, uh, oh, it was a true slog to finish that arc. Two years of my life spent reading Dress Rosa weekly. Two whole years. And to put that into some perspective, in that time, I both started dating and asked my now-wife to marry me, all during the events of Dress Rosa.


When you learn quantum mechanics you inevitably come across a thought experiment known as particle in a box. Although that's got nothing to do with shodding as cat in a box, it's still an integral thought experiment and model for learning about the nature of quantum mechanical systems and it can even be used as a starting point for predicting the energies of real atoms and molecules. In short, we have a box and to simplify the maths a little bit we make it one-dimensional. Just go with that. We drop a particle into this one-dimensional box and we allow it to move completely freely. It can move how it likes and where it likes but it can't leave the confines of that 1D box. In quantum mechanics the particle's probable location is determined by a mathematical expression known as a wave function. And we can figure out that wave function by looking at the constraints of the system. For instance the function must be zero at both of the extreme edges of the box. We apply a relatively straightforward mathematical operator to that function and out pops an expression for the particle's kinetic energy. But the important result that we are interested in is that that energy is quantized. The particle's kinetic energy can only take a certain discrete energy values with nothing in between. And each of these so-called energy levels is related to a single number known as a quantum number. When we talk about energy being quantized in quantum mechanics it's often treated as if it's a strange and mysterious thing like a car going at one speed and then another speed without ever passing through any intermediate velocity. But I want to show you one interpretation of this where we actually expect quantization and it absolutely reflects the 1D particle in a box model. When you play a note on a musical instrument you expect the same note to appear again and again. Music would be incredibly difficult if there was any randomness to this. And on a stringed instrument like a guitar you can quite easily see why that's the case. At one end we have a nut and the other end a bridge and both of these fix the string in place and the string must vibrate in such a way that these points always remain fixed. So is that starting to sound similar to one of our particle models yet? If we look very closely at a vibrating string we see the peaks in the middle. The maximum displacement is here and it's stationary at the end. Now the sound produced is controlled by a number of factors. There's the weight and size of the string and the tension but mostly it's the length. For a given weight and size and tension of a string only certain frequencies satisfy the other constraints. So if we reduce the length of the string the pitch or sound herd changes. This is analogous to changing the length in our wave function equation. The exact sound you hear however is a little more complicated. There are various harmonic frequencies vibrating through the string at once although you can dampen them out if you pluck very carefully in the middle and get this almost synthetic sounding tone out that's a pure ish sine wave. Pluck more closely to the bridge and you get a much more tinny sound as the higher frequencies get thrown in there. But the note remains the same. But that's not all. We can change the pitch of the string without doing anything else to it. We don't need to shorten it or tighten it. We simply need to touch lightly in the right location and there you have it. The first natural harmonic. The string length is the same it's tightness and mass is the same but it's now an octave higher. What's happening here particularly if we look very closely is the shape of the vibration has changed. It really is stationary in the middle and its maximum displacements are a quarter and three quarters of the way along the string. That means that the wavelength has halved the frequency has doubled the sound has gone up an octave and this is possible precisely because that shape of vibration still satisfies the constraints that it must be fixed and zero at the edges. But there is more. We can do this a third of the way along. Not quite doubling the frequency again but this one is curious because the string really does have two stationary points and maximum displacements at three. We can't replicate the trick just anywhere however because these waves don't fit they don't satisfy that constraint. Incidentally this is why perfect fifths sound well perfect. The peaks troughs and nodes of the waves line up pretty nicely. When the wave does this in the particle in a box model the quantum number has increased by one and the energy has increased only certain wavelengths fit into the box only certain frequencies fit into the box and because energy is related to frequency the particle can only take certain energies. So the idea of a particle in a box isn't that crazy or unexpected much of what we think about when we're told about quantum weirdness really falls out of using these concepts of waves of frequencies and vibrations and what constrains them but applying them in a slightly different context.


section 20 of good things to eat as suggested by Rufus this is a LibriVox recording all LibriVox recordings are in the public domain for more information or to volunteer visit LibriVox.org good things to eat as suggested by Rufus by Rufus Estes section 20 desserts sauces for puddings and beverages desserts apples stuffed with dates core large slightly acid apples and fill with stoned dates pour over them equal parts of sugar and water boiled together base the apples frequently while baking serve as a dessert at dinner or luncheon apple sponge pudding one cup of sifted pastry flour and sifted with one level teaspoon of baking powder beat the yolks of three eggs until light colored add one cup of sugar and the juice of one lemon fold in the stiffly beaten whites of the three eggs and then the flour spread the batter thinly on a large shallow pan and bake about 20 minutes in a moderate oven turn out of the pan trim off any hard edges spread with stewed sweetened and flavored apples and roll up at once like a jelly roll serve with a liquid sauce or a syrup made from sugar and water apricot kisses beat the whites of two eggs until very light and still flavor with one half teaspoon vanilla and then carefully fold in one cup of fine granulated sugar lay a sheet of paraffin paper over the bottom of a large baking pan and drop the mixture on the paper in any size you wish from one teaspoon to two tablespoons have them some distance apart so they will not run together bake them in a very moderate oven and be careful to bake sufficiently say 45 minutes they should be only delicately colored and yet dry all through when done remove to a platter and break the top in remove a little of the inside and fill pulp of sifted peaches sweetened and mixed with equal parts of whipped cream sprinkle pistachio nuts over the top and serve fancy cakes baked custard beat four eggs whites and yolks together lightly and add a quart of milk for tablespoon sugar a pinch of salt and flavoring bake in stoneware cups or a shallow bowl set in a pan of water baked bananas put a recon fashion select rather green bananas put them without removing the skins into hot ashes or a very hot oven and bake until the skins burst open send to the table in a folded napkin the skins help hold in the heat and are not to be removed until the moment of eating serve plenty of butter with them banana and lemon jelly cream soak one half box of gelatin and one cup of cold water shave the rind of one lemon using none of the white and steep it with one square inch stick of cinnamon in one pint of boiling water ten minutes add the soaked gelatin one cup of sugar and three fourths of a cup of lemon juice and when dissolved strain into shallow dishes when cold cut it in dice or break it up with a fork and put it in a glass dish in layers with spiced bananas pour a cold boiled custard over them and cover with the meringue brown the meringue on a plate and slip it off over the custard custard pudding line a baking dish with slices of sponge cake make a boiled custard with four cups of milk and the yolks of five eggs one half cup of sugar and flavored with vanilla pour the custard into the baking dish beat the whites of the eggs to a stiff froth with one half cup of powdered sugar and spread over the top set in a very slow oven to brown slightly custard souffle mix one fourth cup of sugar one cup flour and one cup of cold milk stir till it thickens add one fourth cup of butter cool stir in the beaten yolks four eggs and then the stiffly beaten whites turn into a buttered shallow dish set in a pan of hot water and bake in a moderate of in half an hour serve at once fig and rhubarb wash two bunches of rhubarb and cut into inch pieces without peeling put into a boiler with a cup full sugar and four or five figs cut in inch pieces put on the cover and cook over hot water until the rhubarb is tender and the syrup is rich and jelly like in consistency raisins are nice cooked in rhubarb the same way if preferred and you are to have a hot oven anyway put the rhubarb and figs or raisins in a stone pot cover closely and bake in the oven until jelly cold rhubarb dessert peel tender stalks and cut enough into half inch pieces to measure two cups cook with one cup of water the grated rind from a large orange and two cups of sugar do not stir while cooking but lift from the range now and then to prevent burning when soft but not broken add two and one half teaspoons of gelatin soaked 15 minutes in one half cup of cold water stir with a fork just enough to mix and pour all into a large mold when formed unmold and serve with cream German dessert beat two eggs in a pinch of salt and two cupfuls of milk and pour into a deep plate soak slices of bread in this one at a time until softened but not enough to break melt a rounding tablespoon of butter in a pan and in this brown the bread on both sides serve with an orange pudding sauce or any kind of liquid sauce preferred lemon sponge soaked one half box of gelatin in one half cup of cold water add the juice of four lemons to one cup of sugar then the beaten yolks of four eggs add two cups of cold water and bring it to a boiling point stir in the soaked gelatin and strain into a large bowl set in a pan of ice beat now and then until it begins to harden then add the unbeaten whites of four eggs and beat continuously until the sponge is light and firm fill into molds before the sponge is too hard to form into the shape of the mold mosaic jelly one and one half cups of milk two level tablespoons sugar rind of one half lemon one half bay leaf one level tablespoon granulated gelatin one fourth cup of water yolks two eggs scald the milk with the sugar lemon rind and bay leaf then add the gelatin soaked in water for 20 minutes stir until dissolved and strain the hot mixture gradually into the egg yolks slightly beaten return to double boiler and stir until thickened remove from fire and color one half of the mixture either pink or green and turn each half into a shallow pan wet with cold water when cold cut into squares or oblongs line a mold with lemon jelly and garnish with the colored pieces add the remaining jelly chill thoroughly and serve on a platter garnished with whipped cream pineapple Bavarian cream grate enough pineapple to make two cups soak two level teaspoons of gelatin in one half cup cold water for 20 minutes heat the pineapple to the scalding point add the soaked gelatin and stir until dissolved then add one third cup sugar stir and fold in three cups of beaten cream turn into molds and chill scalloped apple measure two even cupfuls of fine breadcrumbs and pour over them one quarter cup of melted butter mix two rounding tablespoons of sugar with the grated yellow rind and the juice of one lemon and four gradings of nutmeg butter a baking dish scatter in some crumbs put in one pint of paired cord and sliced apples scatter on one half of the seasoning another pint of apples the remainder of the seasoning and cover with the last of the crumbs put a cover on the dish and bake 20 minutes uncover and bake 20 minutes longer Spanish cream put one and two-thirds teaspoons of gelatin into one third cup of cold water heat two cups of milk in a double boiler add the yolks of two eggs beaten with one half cup of sugar until light and when the custard thickens take from stove and set in a pan of cold water beat the whites of two eggs until stiff and dissolve the soaked gelatin in three-quarters cup of boiling water when the custard is cool add a teaspoon of vanilla the strained gelatin and the whites of the eggs beaten stiff stir all together lightly and turn into a mold steamed pudding beat one half cup of butter with one cup of sugar to a cream add two beaten eggs and cup of flour sifted with one teaspoon each of cinnamon and soda two cups of breadcrumbs soaked in one cup of sour milk add one cup of chopped and seeded raisins and one half cup of chopped dates steam two hours and serve with whipped cream strawberry sour bond whip a cup full thick cream until very stiff then fold carefully into it a pint of fresh berries cut in small pieces with a silver knife have ready a tablespoon full gelatin soaked in a quarter cup cold water for half an hour then dissolved by setting the cup containing it in hot water add by degrees to the berries and cream whipping it in so that it will not string add three tablespoon fulls powdered sugar and when it stiffens turn into a cold mold and set on the ice when ready to serve turn out onto a pretty dessert platter walnut sundae put one cone of vanilla ice cream in a sherbet cup or butter yet in a champagne glass and sprinkle with minced walnuts Yorkshire pudding take an equal number of eggs and tablespoon full of sifted flour and when the eggs are well beaten mix them in with the flour add some salt and a little grated nutmeg then pour in as much new milk as will make a batter of the consistency of cream stir the batter with a fork well for 10 minutes and then put it in at once into a baking tin which must be very hot containing a couple of tablespoons of hot drippings set the pudding in oven to bake or before the fire under the roasting meat when ready to serve cut the pudding into squares and send to the table on a separate dish apple pudding butter a pudding dish and line it with slices of toasted stale bread buttered and wet with milk over these put a thick layer of peeled cord and sliced tart apples and sprinkle generously with granulated sugar and cinnamon or nutmeg over these put a cover of more toast buttered moistened and sprinkled with sugar cover with a plate and bake for two hours in a moderate oven taking off the plate toward the last that the top may brown serve with maple or other syrup for sauce apple pudding four cups flour one level teaspoon salt six level teaspoons baking powder four level tablespoons butter two cups milk two cups finely chopped apple one half cup butter two cups sugar one and one half quarts water sift together the flour salt and baking powder work in the butter with the fingers and add the milk mix well turn onto floured board roll out one half inch thick cover with the apple and roll up like a jelly roll put the ends together and press down the side to keep the apple in place in a buttered pan and add the sugar butter and water bake in a moderate oven for one and one half hours baked cherry pudding cream one quarter cup of butter with one half cup of sugar add the yolks of two eggs beaten very light two cups of milk two cups of flour sifted twice with four level teaspoons of baking powder and last the whites of the eggs beaten stiff stone cherries to measure three cups drain off the juice and put them into a pudding dish baked pudding stir one half cup of flour smooth in one cup of cold milk add two unbeaten eggs and beat several minutes then add one cup more of milk and a salt spoon of salt stir together pour into a buttered baking dish and set directly into the oven serve with lemon thickened sauce cocoa rice meringue heat one pint of milk add one quarter cup of washed rice and a salt spoon of salt cook until tender add one level tablespoon of butter one half cup of seeded raisins half a teaspoon of vanilla and one slightly rounding tablespoon of cocoa cook five minutes fold in the stiffly beaten whites of two eggs and one half cup of beaten cream turn into a buttered baking dish cover with the whites of three eggs beaten stiff with one third cup of powdered sugar and a level tablespoon of cocoa set in a moderate oven for a few minutes until the meringue is cooked cottage pudding beat the yolk of one egg add one cup of granulated sugar one half cup of milk one and one half cups of flour and two spoons of baking powder stir in the white of one egg beaten stiff bake in a moderate oven cranberry and custard pudding here is a new suggestion which comes from a high authority take one sugar cookie or four ladyfingers if you have them and crumble into a baking dish cover with a thin layer of cranberry preserves or jelly dot with small lumps of butter and add a sprinkle of cinnamon beat three eggs separately very lightly add two tablespoon fulls of sugar and two cup fulls of milk pour over the fruit and cake bake as a custard and served with whipped cream date meringue beat the whites of five eggs until stiff add three rounding tablespoons of powdered sugar and beat again add a teaspoon of lemon juice and a half a pound of stoned and chopped dates turn into a buttered baking dish and bake 15 minutes in a moderate oven serve with a boiled custard egg souffle make a sauce from one cup of hot milk and two level tablespoons each of butter and flour cook together five minutes in a double boiler add the yolks of four eggs beaten well stir enough to mix well and remove from the fire add half a level teaspoon of salt and a few grains of cayenne fold in the whites of the eggs beaten stiff turn into a buttered dish set in a pan of hot water and bake in a slow oven until firm serve in the same dish fruit pudding one and one half cups flour two and one half cups raisins one half cup molasses one half cup milk two tablespoons butter one teaspoon cinnamon one half teaspoon allspice one half teaspoon nutmeg one half teaspoon salt mix all together one half teaspoon soda dissolved in hot water steam two hours hard or liquid sauce or both Indian tapioca pudding one third cup tapioca one fourth cup cornmeal one quart scalded milk half cup molasses two tablespoons butter one half teaspoon salt one teaspoon ginger and cinnamon mixed one cup cold milk soak the tapioca in cold water for one hour then drain pour the hot milk onto the cornmeal gradually add the tapioca and cook in double boiler until transparent add molasses butter salt and spice and turn into a buttered baking dish pour the cold milk over the top and bake for one hour in a moderate oven lemon meringue pudding soak one cup of fine breadcrumbs in two cups of milk until soft beat one quarter cup of butter and one half of sugar together until greasy stir all into the milk and crumbs grate a little yellow lemon peel over the top and pour into a buttered baking dish set in a moderate oven until firm and slightly browned make a meringue of the stiffly beaten whites of two eggs and four level tablespoons of powdered sugar spread over the pudding return to the oven and color a little lemon pudding three eggs one scant cup sugar one lemon juice and rind two cups of milk two liberal tablespoons cornstarch one heaping teaspoon butter scald the milk and stir in the cornstarch stirring all the time until it thickens well add the butter and set aside to cool when cool beat the eggs light add sugar the lemon juice and grated rind and whip in a great spoonful at a time the stiffened cornstarch and milk bake in a buttered dish and eat cold little steamed pudding cream one quarter cup butter with one half cup of sugar add one quarter cup milk then one cup of flour sifted with two teaspoons of baking powder and a pinch of salt and last fold in the stiffly beaten whites of three eggs have some small molds or cups buttered fill half full with the batter cover with buttered paper and steam three quarters of an hour serve hot with the sauce new Hampshire Indian meal pudding bring a quart of milk to a boil then sprinkle in slowly about a cup and a quarter of yellow meal stirring constantly an exact rule for the meal cannot be given as some swells more than others as soon as the milk is thickened take from the fire and cool slightly before adding three quarters of a cup of molasses half a teaspoon full salt and a tablespoon full ginger beat the mixture until smooth and lastly turn in a quart of cold milk stirring very little pour into a well greased pudding dish and set in a very slow oven this pudding needs about five hours of very slow baking to ensure it's becoming creamy instead of hard and lumpy the batter after the cold milk is added should be about the consistency of pancake batter serve with cream or maple syrup orange pudding take one cup of fine stale breadcrumbs not dried and moisten them with as much milk as they will absorb and become thoroughly softened beat the yolks of four eggs with the whites of two add four tablespoons of sugar and the grated peel of one orange using of course only the outer cells stir this into the softened crumbs then beat the other two whites until stiff and fold them into the mixture turn it into a well buttered mold and steam it two hours turn out into a hot dish and serve with orange sauce peach tapioca prepare a dish of tapioca in the usual way into a buttered pudding dish put a layer of cooked and sweetened tapioca then a layer of peaches fresh or canned next add another layer of tapioca then more peaches and so on until the dish is full flavor with lemon and sprinkle three fourths of a cup of sugar overall then bake in a very hot oven until a light brown raspberry dumplings wash one cup of rice and put into the double boiler pour over it two cups of boiling water add one half teaspoon of salt and two tablespoons of sugar and cook 30 minutes or until soft have some small pudding cloths about 12 inches square ring them out of hot water and lay them over a small half pint bowl spread the rice one third of an inch thick over the cloth and fill the center with fresh raspberries draw the cloth around until the rice covers the berries and they are a good round shape tie the ends of the cloth firmly drop them into boiling water and cook 20 minutes remove the cloth and serve with lemon sauce spoon pudding cream one tablespoon full butter with two tablespoon full sugar two tablespoon full flour pinch of salt one tablespoon full cornstarch beaten yolk of one egg and tablespoon full of cream beat well and lastly add beaten white of egg and one teaspoon full baking powder pour over berries and steam 40 minutes serve with whipped cream squash pudding one pint of finely mashed cook squash one cup of sugar one teaspoon of ground cinnamon a little salt the juice and grated rind of one lemon and slowly one quart of boiling milk stirring well and when a little cooled add five well beaten eggs bake in a pudding dish set in a pan of hot water in a moderate oven until firm in the center serve with cream steamed berry pudding sift two cups of flour with four teaspoons of baking powder rub in a rounding tablespoon of butter add two beaten eggs one cup of milk one half cup of sugar and last two cups of blueberries the berries should be rinsed in cold water shaken in a cheesecloth until dry and then rolled in flour before adding pour into a pudding mold and steam one and one quarter hours serve with liquid sauce steamed pudding beat one half cup of butter with one cup of sugar to a cream add two beaten eggs and cup of flour sifted with one teaspoon each of cinnamon and soda two cups of breadcrumbs soaked in one cup of sour milk add one cup of chopped and seeded raisins and one half cup of chopped dates steam two hours and serve with whipped cream tapioca meringue soak one half cup granulated tapioca in a pint of cold water for half an hour cook slowly 20 minutes until transparent if too thick add a little more boiling water boil one quart of milk in a farina kettle with a pinch of salt and the yellow rind of half lemon beat the yolks of four eggs with a cup of sugar add slowly to the milk stirring until smooth and creamy but do not allow it to boil when thickened remove from the fire add a teaspoon full flavoring and blend thoroughly whip the whites of the eggs to a stiff froth with three tablespoonfuls powdered sugar and a teaspoonful flavoring spread over the top of the pudding which should have been poured in the serving dish and set in a coolish oven to puff and color a golden yellow tapioca pudding cover one cup of the flake tapioca with cold water and let it stand two hours stir occasionally with a fork to separate the lumps put in a farina kettle with a pint and a half water slice three tart apples and put it in with the tapioca together with sugar to sweeten to taste stir all together and cook until the apples are soft and the tapioca clear serve hot or cold peaches may be used in place of the apple serve with cream tapioca soufflé soak three tablespoonfuls pearl tapioca in water to cover for three or four hours then add a quart of milk and cook until the tapioca is perfectly clear and the milk thickened it will take about 20 minutes and unless you use the farina kettle must be stirred constantly add the yolks of four eggs beaten with two-thirds cup sugar and cook two or three minutes stirring steadily whip the whites of four eggs to a stiff froth fold through the cooked cream and take directly from the fire flavor with lemon or vanilla and bake in a moderate oven for 25 minutes chill and serve this may also be served as a pudding without the final baking whole wheat pudding put one cup of milk one half cup of molasses two cups of gram or whole wheat flour one cup of chopped raisins and half a salt spoon of salt into a bowl and add one level teaspoon of soda dissolved in a tablespoon of warm water beat hard for three minutes pour the thin batter into a buttered pudding mold and steam two and a half hours serve with a lemon sauce or cream sauces for puddings fruit syrup sauce one cup fruit syrup one half cup sugar one teaspoon butter use the syrup from apricots peaches cherries quinces or any fruit you prefer the amount of sugar will depend upon the acidity of the fruit mix the cornstarch with the sugar add the syrup and boil all together five minutes add the butter last lemon sauce grate the rind and squeeze the juice of one lemon mix together three teaspoons cornstarch one cup of sugar and two cups of boiling water and cook 10 minutes stirring constantly add the lemon rind and juice and one teaspoon of butter lemon sauce mix three dessert spoons of cornstarch with one cup of sugar pinch of salt in a saucepan pour on two cups boiling water and stir quickly as it thickens when it is smooth set it back where it will simply bubble and simmer and stir occasionally add the grated rind and juice of one lemon and one rounding tablespoon butter if this is too thick add more hot water as it thickens in cooling and you want it thin enough to pour easily lemon sauce mix three tablespoons of cornstarch with one cup of cold water and turn on one cup of boiling water boil 10 minutes then add one cup of sugar the juice and grated yellow rind of one lemon and two rounding tablespoons of butter lemon sauce for fritters mix four level teaspoons of cornstarch with one cup of sugar and stir at once into two cups of boiling water add the juice and grated yellow rind of one lemon and cook six minutes add three level tablespoons of butter orange sauce number one mix one and a half tablespoons of cornstarch with one cup of sugar and stir it into one pint of boiling water let it cook quickly and stir as it thickens and after 10 minutes add two tablespoons of butter and one half cup of orange juice cook two minutes longer then serve orange sauce number two chip the yellow rind from an orange and squeeze the juice over it let stand half an hour stir one quarter cup of flour into one cup of sugar and turn into two cups of boiling water cook 10 minutes add a pinch of salt the orange rind and juice stir and strain raspberry sauce for ice cream if you think that a good ice cream is not yet quite fine enough pour a raspberry sauce over each portion as served add one quarter cup of sugar to one cup of raspberry juice prepare it as for jelly making and simmer five minutes add a rounding teaspoon of arrowroot made smooth in one tablespoon of cold water and cook five minutes now add one tablespoon of strained lemon juice and let boil up once sauce for cherry pudding pour two cups of cherry juice or juice and water into a saucepan stir in three level tablespoons of cornstarch and cook 15 minutes add two thirds cup of sugar and a tablespoon of lemon juice sauce for batter pudding beat together in a bowl three rounding tablespoons of sugar two level tablespoons of butter and one a flour when the mixture is white add one half cup of boiling water and stir until all is well melted add a little lemon juice and serve sauce for puddings beat the whites of three eggs until stiff add one half cup powdered sugar and the grated yellow rind of half a lemon pour on slowly one cup of boiling water stirring all the time and the sauce is ready to serve strawberry sauce beat together beat together one half cupful of butter and a cup of sugar until white and light the success of this sauce depends upon the long beating add to the creamed butter and sugar the stiffly whipped white of an egg and a cupful of strawberries mashed to a pulp beverages cocoa with whipped cream heat four cups of milk to the scalding point over hot water or in a double boiler milk should be heated by direct contact with the fire mix a few grains of salt three level tablespoons of cocoa and one fourth cup of sugar to a paste with a little of the milk then add three fourths cup of boiling water and boil one minute add to the hot milk and beat two minutes by the clock serve with a tablespoon of beaten or whipped cream on top of each cup current julep pick over currents and measure two cups mash them and pour on two cups of cold water strain and chill the juice put one tablespoon of simple syrup and a tall glass add three bruised fresh mint leaves and fill with the current juice add three or four perfect raspberries and serve the syrup is made by simmering for 20 minutes one cup of sugar and two of water current shrub pick over and mash two quarts of ripe currents add one pint of vinegar and let stand overnight set on the range and bring to the boiling point then strain twice measure the clear liquid and allow one cup of sugar to each cup of liquid simmer 20 minutes and seal in bottles raspberry shrub put one quart of ripe raspberries in a bowl add two cups of vinegar mash the berries slightly and let stand overnight in the morning scald and strain until clear measure and to each cup of juice add one cup of sugar boil 20 minutes and seal strawberry syrup pick over rinse drain and remove the hulls from several quarts of ripe berries fill a porcelain line double boiler with the fruit and set it over the lower boiler half full of boiling water and let it heat until the juice flows freely mash the berries then turn out into a cloth strainer and cook the remainder of the fruit in the same way when all the juice is pressed out measure it and allow an equal amount of sugar let the juice come to the boiling point add the sugar and cook five minutes from the time the hole begins to boil turn into jars or bottles and seal the same as canned fruit this is excellent for beverages flavoring ice cream and other fancy creams and will be found desirable for many purposes when fresh fruit is not at hand end of section 20 and end of Good Things to Eat as suggested by Rufus read by Dennis Sayers in Modesto California for LibriVox spring 2007