The Jack Benny program, transcribed and presented by Lucky Strike. You know, friends, in a cigarette, nothing, no nothing, beats better taste. And... Lucky tastes better. Cleaner, fresher, smoother. Lucky tastes better. Cleaner, fresher, smoother. For Lucky Strike means, lime tobacco, Richard tasting, lime tobacco. Lucky tastes better. Cleaner, fresher, smoother. Lucky Strike, Lucky Strike. This is Don Wilson. I think you'll agree that smoking enjoyment depends on the taste of your cigarette. For nothing, no nothing, beats better taste. And Lucky tastes better. Cleaner and fresher and smoother. You see, Lucky's better taste starts with fine, mild, good tasting tobacco. Remember, L-S-M-F-T, Lucky Strike means fine tobacco. But equally important, Lucky's are made better to taste better. Made round and firm and fully packed.  So friends, get the one thing you want most in your cigarette, better taste. On your next trip to the cigarette counter, be happy, go Lucky. Ask for a carton of Lucky Strike. You'll find... Lucky tastes better. Cleaner, fresher, smoother. Lucky Strike, Lucky Strike. Lucky Strike Program starring Jack Benny with Mary Livingston Rochester, Dennis Day, Bob Crosby, and you're truly Don Wilson. Ladies and gentlemen, last Monday, Jack Benny took the Super Chief to New York to attend the testimonial dinner given by the Friars Club in honor of Bob Hope. Let's look in on him as he packs for the trip with the help of Rochester. Well, I think I better take some more warm clothing. It's pretty cold in New York this time of the year. Yes, sir. I've already put in your long underwear. Good. I also want my heavy woolen socks. Uh-huh. My heavy suit. Got it. A couple of thick sweaters. Uh-huh. My hat and my woolen scarf. Yes, sir. My ear muff, sheepskin-lined coat, and fur-lined gloves. That oughta... Wait a minute, Rochester, what's in that bag? You may get hungry so I put in some whale blubbers. Never mind the jokes. It does get cold in New York. Let's see. I'm going to be on the train for three days. I better take something to read. Rochester, pack about five or six of my books. You know, the one's on the table. Yes, sir. Uh-oh. Which book did you draw? The one from the California bank. But watch it next time. I wonder whether I should take my violin along or not. Should we put it to a vote? Eh, I'm not going to take it. Now, Rochester, if anybody wants to contact me while I'm in New York, I'll be at the Acme Plaza Hotel. Again? Yes, and you don't have to use that tone of voice. They treat me very nice at the Acme Plaza. In fact, this time, they're giving me the penthouse suite. Oh, that's nice. That's the one that underlooks the part. Never mind that. Since you were there with me last, that hotel has made a lot of improvements. You remember how every time I'd want to take a bath, I'd have to stand in line? Yes. Well, they put a bench there now. And not only that, they... I'll get it, Rochester. Yes. Hello? Hello, Chuck. I have to talk fast, so don't interrupt. My father's found out that we're in love, so if we're going to get married, Chuck, we better elope. I'll get my things ready, and I'll be waiting for you. Goodbye, Chuck. Who was it, boss? It must be a wrong number. Must be a wrong number. I don't know any girls whose fathers are still alive. I hope Chuck gets in touch with her. It'll probably spoil her honeymoon. I've got everything ready, Mr. Berry, but you haven't got enough baggage. I know. I left mine in Palm Springs. But Bob Crosby's lending me a suitcase. He promised to bring it over. He allied going to New York. Eastside, westside, all around the town. You know, I sure wish I was going to New York with you. You need me, boss. Now, look, Rochester, I don't need you. I know that all you want to do is to get to Harlem, and I won't see you again until it's time to come home.  But, boss... No buts about it. The last time we went to New York, you didn't even wait until the train got into Grand Central. You pulled the emergency cord at 125th Street. I know. But what was the big emergency? I had to get over to Dorothy's faster. Her boyfriend was the engineer on the train. Oh, I see. Eastside, westside, all around the town. I'll be at the Acme Plaza penthouse two flights down. I'll answer the door, Rochester. You get my toothbrush and shaving stuff ready. Oh, hello, Bob. Hi, Jack. I brought the suitcase. Oh, thanks a lot. Come on in. Let's bring it in the other room where I'm packing. Oh, hello, Mr. Crosby. Hey, that's the most expensive bag I've ever seen. And look at those initials in gold. DC. Gee, Bob, this bag must have cost a lot of money. I don't know. You see, it's Bing's. He loaned it to me. Oh, well, it certainly is the most beautiful suitcase I've ever seen. Let me open it. She and it's just as beautiful on the inside. It's all fitted and made into sections. Bing had it made that way. Oh, really? What are all these compartments for? Well, they're all marks. The handkerchief, socks, ties, 20s, 50s, and 100s.  Now I see some of the green rubbed off there. Well, this is the most novel suitcase I've ever seen. Well, Bing thinks of everything. Jack, turn that little knob there on the side. The side of the suitcase? This knob here? Mm-hmm. Go ahead. Turn it. Well, I'll be darned. Minute-made orange juice. Well, Bob is awfully nice here to lend me this bag. Hey, wait a minute. What's this? Looks like a little sun bonnet. Oh, Lord, we packed the baby's things in this when we went to Palm Springs. I guess we forgot to take some of the things out. Oh, isn't this cute? The tiniest little dress I've ever seen. Look at these baby shoes, too. Bob, I mean, what does a baby need with all these handkerchiefs? Jack, they're not handkerchiefs. Oh, oh, oh! Oh, yeah. Well, Jack, I've got to be running along because... Excuse me, minute, Bob. I want to answer the phone. Hello? I'm already, Chuck. I've got my bags packed, and I'm in my room on the third floor. But I'm a little nervous, so you'll have to carry me down the ladder. Goodbye, Chuck. Well, that's ridiculous. See, I haven't thought of eloping since I saw Theta Bearer in Passion's Plaything. Why can't that girl get the right number? Is there anything wrong, Jack? Yes, Bob, but it's a long story. Well, I think I'd better get back home. You know, I'm rehearsing a new song, and Charlie Bagby's coming over to accompany me on the piano. Have a nice trip. Oh, thanks a lot, Bob. Give my regards to Charlie, and... Hey, wait a minute. Say, could it be... No, I guess not. But then again, nah, it's silly to even think that. What's the matter, Jack? But tell me, is Charlie Bagby ever called Chuck? Huh? No, why? Well, some girl keeps calling me, and she's going to a lope with some guy named Chuck. Oh, that wouldn't be Bagby. He hates women now. What do you mean now? Well, Jack, didn't you know that Charlie was all set to be married? And on the very day of the wedding, his girl jilted him? You mean she stood him up? Yeah, but he fell right back down again. Well, I don't blame her then. Say, Bob, what's the name of this new number you're rehearsing with Bagby? Well, it's called Keep It a Secret. Would you like to hear it? Yes, yes, go ahead. My darling, with somebody new Keep it a secret Whatever you do Why should you tell me And break my poor heart Then Fully's pride Would just drop Hating the town With a boy she once knew Attention And just let it be A secret from me With a boy and child And just let I'll catch you too. Gee, thanks, Jack. Well, I guess I'll run along now. Well, goodbye. See you when I get back. Oh, by the way, enjoy yourself. Oh, thanks.  Yes, I love myself. Enjoy yourself. The weather in New York can get pretty cold. Are you taking your long underwear? Jack, I said, are you taking your long underwear? Mr. Crosby, you're new here. We've done all those flap jokes. Well, so long. So long, Jack. Put all the extra clothes in the suitcase and hurry. Well, I want to be ready when Miss Livingston picks me up. Oh, Pauline. Pauline. Yes, Miss Livingston. If there are any calls from me while I'm gone, tell them I'll be back as soon as Mr. Benny's train leaves. Yes, ma'am. Miss Livingston, what's he going to New York for this time? Well, the Friars are giving Bob Hope a testimonial dinner, and Mr. Benny is supposed to make a speech there. Is he a good after-dinner speaker? Oh, yes. You should have heard him last night. He made one of the most stirring after-dinner speeches I ever heard. Where was that? At the thrifty drug store. Yes, right after we had dinner, he jumped up on the counter and complained about the bill. Gee, Miss Livingston, what did you do? What I always do, I paid it and we went home. Jack is a big hit in New York. You know, Miss Livingston, I don't think it's fair. What isn't fair, Pauline? Well, Mr. Benny goes to testimonial dinners and gets all the glory, but you're the real star of his radio program. Oh, Pauline, you're sweet, but Mr. Benny has more to say on the show than I do. Straight lines, yes, but you get all the laughs. Oh, Pauline. Yes, you do. And where would he be if you didn't read all those hilarious letters from your mother? Well... And what would happen if he couldn't make jokes about you working at the May Company? Yeah. And every week, he gets a great big salary and all you get is a few dollars. Hmm. I never thought of that. Barry, what's keeping you?  What is it? The stooge. It's the station, so I might as well do it. Well, here we are at the station. Oh, that's all right, Ry, testing. And now, boss, I'll park the car and take care of the baggage while you get your tickets. That'll make everything according to your schedule. Schedule? Yes.  I catch the Super Cheap here at 8 p.m. tonight. I'm at Chicago at noon the day after tomorrow. I get on the 20th century at 5 o'clock, arrive in New York at 9 a.m. Go to my room at the Acme Plaza, take a nap until 4 in the afternoon, get up, wash, shave, and shower by 5, dress by 6, get to the Waldorf by 8, and attend Bob Hope's dinner. Then catch the plane at 11.30 and be home the next morning. Boy, what you won't go through to get a free meal. Free meal, free meal. Come on, let's get in the station. Train no leaving on track 5 for Anna... Oh, Rochester, take your bag. How come you're carrying that suitcase? I want to take extra good care of it, Mary. It's a very expensive bag. It belongs to Bing Crosby. Oh. Say, Jack, let's go over to the soda fountain. I'm kind of thirsty. Just get a lily cup. I'll give you some orange juice. On second thought, we haven't time for that. Let's see, where do I get my tickets validating? Attention, please. Attention. The sunset limit is now leaving for Baton Rouge, New Orleans, and Jambalaya. Son of a gun, we have big fun on the bio. Mary, you wait here for me, will you? Okay, I'll go over to the newsstand and buy a magazine. Okay. Now, let's see if I... Oh, hello, Jack. Oh, hello, Don. Oh, boy, I'm sure glad I caught you. You almost didn't, Don. It's just a few minutes of train time. I know, but it wasn't my fault. My wife and I took her nephew Tommy out to dinner. Tommy? Oh, yes, I know him.  Ah, he's not so bad, Jack. Isn't he, Don? That kid can get into more trouble. Well, as a matter of fact, he did embarrass me a little. I can imagine. That boy is the worst. What happened? Well, after dinner, I paid the check and left a couple of bucks for the waitress, and then we drove home, and when we got there, Tommy stuck out his hand and said, Uncle, here's the two dollars you left on the table. See, what a wonderful kid. I had them all wrong, you know. The Union Pacific screenwriter now arriving from Las Vegas on track 17. Now, Don, excuse me, I've got to get my ticket, fellas. Oh, wait a minute, wait a minute, Jack. Before you go, the sportsman Quartet came down to say hello to you and welcome you back. Well, that's all. Say hello to me. Don, I'm going away. I'm leaving. They know that, Jack, but they can't be here at the station when you come back, so they're going to say hello to you now. But, Don, Don, that's the silliest thing. Pick it, fellas. Don, what kind of a thing is that? I'm leaving. I'm going away. The song could have made me late for my train. Now, I've got to get my ticket validated. Attention, please. Attention. We have a special announcement to make about our lost and found department. It's been lost. Let's see. Well, there's the window where I'm supposed to go. I hope I don't... Hello. Stop in here. Why? Well, what are you doing here at the station, Mr. Kitto? I'm waiting to meet my wife's train. She's coming back from Chicago. Oh, from Chicago, eh? Yeah. Was she visiting relatives there? No, she was a delegate at the Republican Convention. Wait a minute, Mr. Kitto. The convention was held in July. What kept her so long? They let her make a speech, and she just finished.  I say, the observation. In fact, it was because of this that we almost didn't got married. What do you mean you didn't got married? The preacher asked her, do you take this man to be your lawful wedded husband, and she went into our filibuster? Mr. Kitto, you're joking. Joking, he says. But anyway, I'm glad she's coming back today. This is our wedding anniversary, and when she gets off the train, I wouldn't even let her unpack her bag. I'm taking her straight to Niagara. Oh, Niagara Falls? No, Niagara, the picture. I want to see Marilyn Monroe. Oh, you like Marilyn Monroe, huh?  I want her to see why we don't get along. The super chief departs on track nine in ten minutes. Well, I better go get my ticket validated, Mr. Kitto. I'm going to New York. New York? How I envy you. What a city. How I'd like to see the bright lights, the tall buildings, the busy streets, the green fields. The green fields? Everything in Max Greenfield, my cousin. Yes, yes, I met them. Oh, by the way, Mr. Bennett, you can do me a big favor. Oh, I'll be glad to. What is it? Well, I got an uncle in New York, really a kid. He's like the black sheep in the family.  Uh-huh. The only way he gets along is when the family gives him a little spending money. Here, take this $10 bill and give it to him for me. Oh, it's certainly when I get to New York, I'll call him up. What's his phone number? I don't know, but he's living in a dump called the Acme Plaza. Well, I'll see if I can find the hotel. Goodbye, Mr. Kitto. Oh, there's the window. Attention, please, attention. The new 160-mile-an-hour super streak now leaving for Phoenix, El Paso, St. Louis, New York, and maybe London. What does he mean, maybe London? It has bad brakes. That's the silliest thing I ever heard. Hey, yeah, Halladated? No, I ran into Mr. Kitzel. Well, you better hurry. The super chief will be leaving soon. I know.  A Saturday evening post, Reader's Digest, Colliers, and Jack, you'll love this book. What is it? How to make money straightening Gopher's teeth. Mary, you're very funny. I may think so. Well, never mind. Attention, please, attention. This is contrary to our policy, but there is someone here who wishes to make a special announcement. Go ahead. Chuck, I got out of the house myself and I'm waiting for you. I would have been here sooner, but I stopped at the bank and drew out all of my money. $10,000. $10,000. Coming! Oh, excuse me, Mary. What's the matter with me? I don't even know her. Now, Mary, wait here. I'm going to take care of my ticket. There's that window over there. Oh, mister, are you the man who validates tickets? No, I'm just here because I was born with this rubber stamp in my hand.  Very well. Where are you going? To New York. Now if we can just get rid of the smart. Not my ticket, but not my Pullman's face. Well, would you like a compartment? No, no, I'm by myself. A roommate? No, I don't even need that. As a matter of fact, I don't even need a lower birth. Tell me, do you have any uppers? Well, I... Wait a minute. Ask me that again. Do you have any uppers? Yes, and if you don't go away, I'll bite you. You're very funny. You're my butler, I think so. Now cut that! We're leaving for Kansas City and Chicago. I will if this man will stamp my ticket. Okay, there. Now go already. Look out, Mary. I got a run for it. Goodbye. God, give me a boost. What? Oh, she's not talking to me. Come on, Chuck. Give me a boost. Okay, honey. Give me your hand. Well, I'll be darned. It really is Bag B. Ladies and gentlemen, thousands of people are destitute because of the recent floods in Holland. You can help these people in rehabilitating their homes and their lands by sending a care food, linen, or tool package. So won't you please help? Send your donations to care at C-A-R-E, care, Los Angeles or New York. Thank you. First, a word to cigarette smokers. Nothing, no, nothing beats better taste. And remember, Lucky tastes better Cleaner, fresher, smoother Lucky tastes better Cleaner, fresher, smoother Lucky's strike means Time to back off Richard's tasting Mind to back off Lucky tastes better Cleaner, fresher, smoother Lucky strikes Friends, the taste of your cigarette is all important. For in a cigarette, nothing, no nothing beats better taste. And Lucky's tastes better. Cleaner and fresher and smoother. You see, Lucky's better tastes really begins with fine, light, truly mild tobacco. Yes, LS, MFT, Lucky strike means fine tobacco. Good tasting tobacco, of course. Then too, Lucky's taste better because they're made better. Made to give you a cleaner, fresher, smoother tasting smoke. So friends, remember how important better taste is to your enjoyment of a cigarette. And remember that Lucky strike gives you the better taste of fine tobacco in a better made cigarette. But most of all, remember to pick up a carton of Lucky's tomorrow. Yes, be happy. Go Lucky. Be happy. Go Lucky. Get better taste today. Now let's see. After applying braces to the gopher's teeth, you apply pressure by tightening every three months.  I'll just sit here and... Hmm. I wonder why all the passengers are going up toward the front of the train. I think I'll follow them and see. Everybody's crowded around the engineer. I wonder what he's doing. By the power vested in me by the address in Topeka and Santa Fe, I now pronounce you man and wife. Good night, folks. This program is written by Sam Taren, Milt Josephsburg, George Balzer, John Packaberry, and produced and transcribed by Hilliard Marks. Be sure to hear The American Way with Paula's hype for Lucky strike every Thursday over this same station. Consult your newspaper for the time. Brought to you by Lucky strike, product of the American Tobacco Company, America's leading manufacturer of cigarettes. This is the CBS Radio Network.


Thank you very much. So my name is Pascal Kostanza. What he told me is that that was the best-rated rejected talk and now I'm the worst-rated accepted talk. Not sure what's better. So this is a talk about L-PREP, which is a tool that we have developed at iMac. This is a work together with Charlotte Herzl. You may not know what iMac is, so iMac is a research center with headquarters in Löwen. That's depending on the time of day, 20 minutes to two hours away from Brussels. And we have lots of different spots all over the world. Since more than 30 years, we've been working on microelectronics and nanoelectronics research. So we're primarily a hardware research facility. And if you have smartphones or computers or TVs, then there is hardware in there that was invented here in Belgium at iMac. So we are working with the big names in the industry like Intel, Samsung, DMSC and so on. So that's what iMac is. But we're also doing software research because we're realizing that more and more it becomes important to do software and hardware close together. And this particular research, so here is some of the names that iMac is collaborating with. And this particular research has been done together with Intel and Janssen, which you're probably not seeing because it's a bit blurred. Okay, so this is about DNA sequencing.  So DNA sequencing means when you take a blood sample, so real blood samples or other tissue samples, you can put them in a DNA sequencing machine like the ones you see at the top right corner. And what this does is it applies some chemical processes, turns it into smaller fragments and spits out these fragments, which are reads. While doing it, it makes mistakes. So these are not 100% accurate. So that's why you need to do multiple coverage so you can use some statistical analysis to make a better guess of what the right correct read was. And so out comes some file that gives you these fragments and then you need to use software to actually do something with those reads. So the sizes here, the DNA of a human is something like 3 billion letters, G, A, T, or C, this is called a base pair. And these fragments that come out of there are in the order of 150 base pairs per fragment. And the data that is generated is for raw data, 50 to 120 gigabytes compressed when you have a whole genome sequencing. For exome sequencing, it's 5 to 15 gigabytes. So that's the order of magnitude of the data that we're having. So what we're talking about is something like hundreds of millions of reads that come out of such a machine for one sample. What we then do in the computer is we do sequencing. So we have a reference that you see on the top of the screen. And then we take these fragments that we try to match against this reference. So we can use a reference because we are all not so different from each other. We only have 1% difference. So matching these reads against the reference gives us a pretty good idea where these reads are actually from. So this is the first step. It's called aligning, which aligns the reach to a reference. What you then want to do is we want to do variant calling where we look at each position and find out what the difference is from the reference. And what we have here as an example is that we hear we have a position where half the reads have an A and the other half have a T, which means it's a heterozygous SNP, A-T. You don't need to understand what it is. I also don't, but it probably means that half of these you got from your father and the other half from your mother. So that's what you typically do in software. There are the sequencing pipelines, which typically consists of several computational phases. I talked about the mapping, which you see on the top left. You talked about the variant calling, which you see on the top right. And there's also some processing of BAM files, which are intermediate files that are passed around these tools. These sequencing pipelines tend to take very long. We're talking about several days of computation. And we use certain file formats and so on. So one of the things that we did with Lprep is we focused on, let me go back, we focused on the middle phase, the BAM processing phase, which also takes a huge amount of time, but needs less domain knowledge than the other phases. And that was for our customer, a very important thing. So we looked at the BAM processing. And for the BAM processing, it's again, you have these several tools that all do certain simple steps, like removing certain reads that we were not able to map to the reference, sorting them in certain ways. This is very loud. Certain ways, removing duplicates because these machines may produce duplicates and so on. This is organized in such a way that each of these tools gets an input file, does its computation, produces an output file and passes it on to the next. And so what we thought is, OK, we can do better than that. Why don't we just produce a single tool, which is called Lprep, where you can just tell the tool, here are all the steps that we want to execute. Please do this in one turn, in one go. And so this allows us to do the file IO only once for the whole input and do the file output also only once. And then when we have the data inside the tool, we can use multithreading and clever loop fusion techniques to really make this much faster. So I'm not going to go into the details, how the software architecture works and how we got this faster, but the result is depicted here. This is for whole exome sequencing for a standard data set that is known in the bioinformatics community. If we take Picard SAM tools, that's the top line. This takes about one hour and 40 minutes for this data set. It's five steps. So you see these five steps in different colors. We could use Lprep in such a way that we also call it for separate steps. And for some of these phases, Lprep is a bit faster. For some, it's a bit slower. But the really interesting part is, is if we do all five steps with one single invocation, then we can reduce it down to 20 minutes. And there is a mode where we can tell Lprep, please use all the RAM available to you, and then we can even cut it further down down to 11 minutes, which makes it 10 times faster. And 10 times faster for such a pipeline is a huge win. So Janssen, for example, the pharmaceutical company that we're working with is now using this as a standard tool that can go to Amazon Web Services, they need to rent a bigger instance because we need more RAM, we need more compute power, but overall they're saving money because this is so much faster. So that's interesting. So now this is what Lprep is about. So now a bit about the history of Lprep. Originally this was implemented by Charlotte Haseel, who's also sitting here in the audience with help from me. And we did this in common list because our common list is an excellent tool to very quickly get a result when you don't know what you're doing and get to a production version. So this was a very good experience. We did six months of development time with lots of different design changes along the way and got to a pretty stable result. However, now that we have this in production, we ran across some issues and one of the major issues that we have problems with is the memory management. So the memory management is a key performance issue in Lprep. And the problem is that all common list implementations that we are aware of use a stop the world garbage collector.  It doesn't use any multiple threats. So it's extremely slow and costs us a lot of time. So Charlotte is smart. She was able to trick the garbage collector into making sure that it doesn't interface with our parallel phases. So it doesn't hurt us that much in production. But the code, the way to do this is not intuitive. The code becomes uglier. We have to put a lot of effort into a prep to reuse memory wherever we can. And it's not beautiful code anymore in the end, which is a pity. So the question that we are asking ourselves is did we achieve the best result possible? And is there an easier way to achieve the same thing? And yes, there are easier known things. You can use a parallel concurrent garbage collector, which is a known approach, or you can use reference counting, which is also a known approach, which both promise to work better with multi-threader programs. So the problem is, though, we can't do this in common list because it requires support from the programming language and from its runtime system. So we had to look at other programming languages. So concurrent parallel garbage collection, what is this? The idea of a concurrent garbage collector is that it doesn't stop your main program or just to interfere with it as little as possible and runs in parallel with the main program.  And when we started this experiment that we looked, and it's beneficial for performance because it plays nice with Amdahl's law. So when we started the experiments, the mature languages that are known to us that employ this were Java and Go. So Go introduced this in 2016, and we needed something that runs well on Linux, so these were the only options that we were aware of that support this well in mature languages. The other approach is reference counting. So with reference counting, instead of having a garbage collector, you record in every object how many pointers are pointing to it with a count with an integer. Every time a pointer is reassigned, you increment and decrement counts and when counts go to zero, you can deallocate that object. This has a few downsides, but normally for multithreader programs the synchronization is spread over the whole program. It shouldn't interfere with your multiple threads. So it should actually play nice with multithreading. There are more advanced implementation schemes where you try to avoid updating reference counts, but we are not aware of any mature language that does this. So the mature languages that we were aware of, that use reference counting are C++. I don't know how to talk about C++ languages that started with 11, but yeah, C++ 11, 14, 17. Objective C does reference counting, Swift does reference counting, and Rust does reference counting. But we can't use Objective C or Swift because their updates of reference counts is not atomic, so it's not thread safe. So we can't use it in a multithreader program. And Rust is a tricky case. We need, for a particular module, we need atomic compare and swap. And atomic compare and swap is not safe in Rust. It only works on unsafe pointers. And that defeats the purpose of using Rust in the first place. So we didn't use Rust. So the experimental setup, I'm not going into details. This is a standard pipeline that goes on a standard well-known data set. It uses five steps. The hardware environment is an Intel Xeon platform, a Broadwell platform, two sockets with 22 cores each, which gives us 88 hardware threads. And we have 768 gigabytes of RAM. And here are the results. So first, the C++ result. So that uses shared pointers for reference counting. So we don't have to manually manage our memory. We're using G++ 6.3 interthreading building blocks for multithreading version 4.4 and Google performance tools for low-level malloc optimizations. That gives us the following performance. We have something like 13 minutes and a half with 227.4 gigabytes of RAM. So that's the C++ result. Next comes Java. We're using the JDK 1.8 at that stage. This looks not so great. So we have run times that are better than the C++ run time, but at a huge cost of RAM. So we use a lot more RAM. For the parallel garbage collector, it's almost 500 gigs. For the G1GC, it's 360 gigs or something. That is really a lot. And even the one that uses the least amount of memory still uses a huge amount of memory. So that's not really practical. And that one actually takes very long. And by the way, the concurrent market sweep garbage collector is actually deprecated in Java 9. So we can't even use that anymore. And so now, drum roll, go 1.7. This is the result. With the default settings, note weeks, we get 10 minutes and 20 seconds, which is faster than all the others at an amount of RAM that's pretty close to optimal, also compared with the list version. So that was pretty impressive. We were skeptical in the beginning, but this is a really impressive result. And for that reason, we decided that the new version of Alper, which we released in September 2017 as open source, is now implemented in Go. It's on an open source BSD license. So it's a high performance tool for preparing some files for variant calling. It's a multi-fitted implication. It runs entirely in RAM and merges multiple steps with repeated file I.O. and can improve performance by a factor of up to 10 times compared to standard tools. There's other interesting things that we can now do. So we are now adding new features to Alprep. But what we also have seen now, so far the common list version, we basically only developed this ourselves, but we now see some first contributions by other users, which is really nice, which is a good sign that this is a good choice for programming language. One other thing that I should mention is when you compare the development time and how complicated it was to express these three different versions, C++ was doing incredibly bad. It was a pain to get this working in the first place. Java was the easiest to express. Java was the easiest to express because they have a pretty impressive streams library, which allows us to use parallel streaming, which gives us a lot of functionality that we can use to express this kind of framework. Because of that experience, we also decided to abstract away the stream processing that we have in Alprep and make this available as a separate open source library, which is now called Pargo, which you can also find under the BSD license. This gives you some constructs for parallel programming and constructs for pipeline processing. It's not quite as elegant as in Java because of lack of generic types, but it's quite nice in our opinion. So you can use that as well, and that doesn't have anything to do with DNA sequencing. You can use this with any kind of parallel programming. And that's the end of my talk. Thank you very much. I don't have any stickers, but if you have questions, I can answer them. Yes, so the question was, can we give you the benchmarks for the Lisp program? So the thing is, I could give you the benchmark for the best Lisp program, but the thing is, is that this is not a fair comparison because in that version, we completely deactivate the garbage collector in Lisp. So it's not a fair comparison to those other languages because there we do automatic memory management. The last runtime in Lisp, we have something like nine or nine and a half minutes at, I think it was something like 220 or 222 gigabytes of RAM. If you want to know more details, we have a paper about this. It was published. It's an open publication, plus one for bioinformaticians. So Charlotte had a paper there, just Google for plus one and Elprep. And you will find the paper and there's a more detailed breakdown of these benchmarks. If you keep the garbage collector running in the Lisp version, you get pretty awful runtimes which are beyond good and evil. Yes? So we've seen some usage. Yeah, okay. So the question was, if we see some usage in the do-it-yourself bioinformatician community. Is that correct, the question? So we do see some usage. I won't claim that we are extremely hugely popular, especially when we compare ourselves to the big bioinformatic centers. But we do see some uses. So the Github repository has 74 stars, which is not bad, I believe. We have some users at hospitals that are actually using this in production. Janssen uses Elprep worldwide for all its sequencing applications because of the cost reduction that they see. And yes, we made very sure in the development of Elprep that it can be used as a plugin replacement for the more standard tools. So we have tools like SUM Tools or Picard, which are pretty much regarded as the standard tools. And we made, put a lot of effort into making sure that our tool produces exactly the same results as those tools. So you can just download it, use it as a plugin, and save a lot of time with Elprep. Yes? Because, okay, the question is if you don't need a garbage collector, why do you need one? Why do you use it? As I tried to convey in the beginning, but apparently not very well, once we modified the Lisp code in such a way that you don't need a garbage collector anymore, the code became actually relatively ugly and relatively hard to follow. And we experienced this ourselves once we started to try to add new features, it became quite unwieldy to really do this well. And that's one of the things, as I said, the Java version is the easiest to express, but Go is also really, really straightforward, especially if you as a bioinformatician want to just add a filter that expresses one particular step, what should happen to your reads, this is very straightforward code. And we have this that we had users that came from the Python world, they looked at Elprep, and they just wrote their own filters and gave this to us, and we just could include it straightforward, and it was still as performant as before. And I doubt, even if common Lisp were a widely popular language, it would still be hard to do that. Yes? We tried all of them. So there's the concurrent mark-and-sweep, which comes with the JVM, and the G1GC, which comes with the JVM, and the ParallelGC. These are the three results. Now, we didn't do tuning. Yeah, but what we have as users in mind is end users that are bioinformaticians, which are not trained computer scientists. You can't ask them to tune these kind of things. And with Go to 1.7, with the default setting and no tuning at all, you get much better results. So I don't think it's worth the effort. Any other questions? Yes? We're currently in the process of repeating the tests, with newer Go version with Java 9, and with the GCC compiler version 7.2, because we have additional... Okay. I'm terribly sorry. So the question was, if we are currently trying to use... to do the experiments with newer Go versions. Yes. And also newer Java versions, and also newer C++ versions, because they all add new features that are interesting. In Java, it was interesting because they added compacted strings, where the characters use only 8 bits instead of 16 bits, which removed a lot of optimizations that we had to make in the Java version. And C++ also added things like any type and variant type, which is also interesting to use in this context. Yes. So did I understand the question correctly that in another talk... Yeah? Okay, so what you're saying is there is another garbage collector for Java, which is called ZGC, which is apparently much better and much faster than the current Java collectors. I'm not aware of this. This is something that's offered with the JVM as an option, so it must be some third-party tool. I'm not aware of this. We haven't tried this. But the thing is, I'm not claiming here that Go is generally better no matter what workloads you're running. This is workload specifics. For other workloads, the situation will probably be different. So I'm not claiming that this is a general statement. Okay, thank you very much again.


Hi Frederic, how are you? I'm doing well and how are you doing? Good morning. I do apologize. I just want to let you guys know I'm being summoned to an internal meeting I can't dodge. Related to all the various incendiary goings on. So I will have to duck out here and for the next hour as well. No worries. Are we still on for our nine o'clock? We are. Cool. Excellent. I guess it will just be the four of us. Cool. So what do we want to talk about? Other team members also joined. I think we can discuss the current progress. What's going on on our side at least. Sure. Please, could you start sharing details about the DNS changes and about the wire guard stuff you're doing? Yes, sure. By DNS I have provided PR for improvements and send the NAS part. For example, I have started to use our external plugin for now from separate repo. Also, I have removed an SM coordinates image from Mono repo. And also I have implemented coordinates suggestion to use forward plugin by default and use on out plugin for conflict resolution. And PR has been passed all tests. So please take a look. I can share my screen for project board. Yeah, let's do so. Do you see my screen? Yeah, we see your screen. Nice. Here is PR. This DNS improvements. Oh, sorry. It is another PR. DNS notification. I mean this PR. You can. Please remove the participants window. The participants for the zoom. Okay, sure. Okay, thank you. And also in two words, at the moment we will use both the fan out and the order. If we don't, yeah, if you don't have cross configurations for the DNS. Yes, it is correct. And it should work more better than if we will use only for now plugin because of for now plugin doing upstream requests in parallel and in most cases it is not needed. Also, I have worked with wire guard. Moving into VPP. I did simple steps. For example, I have created VPP plugin. Hello world. And also, I have started looking to wire guard Linux implementation. That's all from my side. Okay, sounds good. So we few steps, I suppose, in the direction to have a wire guard into the VPP. I hope the variant you're looking at the moment will work. Well, Alexander is not joining today, but he's working on a new version of the next manager based on a new SDKs. He in sync with me into this direction. We doing some diagramming to not miss the stuff. We want to have in just a new manager. At the moment, prototyping the direction of streaming and writing a spec to have a single socket for when this manager so we can use just one server socket connection. Without need for a workspace to do just a client request logic and for the most of the just endpoints without the Mimif. I already have a prototype on pure GPC servers. So the idea is, at the moment, every endpoint has a GPC on a client socket. And instead of having additional mounted volume. The idea is to use a beginner just one bidirectional stream of the GPC to pass all the just pure GPC calls back to the client. And according to just implementing the GPC client stream. Client interfaces and stream interfaces and just forward all the packets using just one GPC stream. All seems working. Planted to provide a poor request to review and the spec later today or early in the morning tomorrow. So we can probably discuss it and check if you guys if this approach will work. In this case, we could dramatically simplify when as managers, because we will know no need for a device plugin. And we sit up for the clients and endpoints will be much easier and clean because just one volume with just one server socket will be required. Yeah, actually, I think I would not find any solution with similar to what they wanted in this area. It looks nobody was scared about this. But if you think that the solution is clean and is useful to others, then we should consider the long run, perhaps publishing some information about it for others to use. Yeah, yeah, yeah. So at the moment, actually, it will look very clean because it's like just one go model with a protobooth file. And as before, you will create a two GPC servers, but the series call network activities only on the server instance of APIs. So if you want to call a client, you just will need to using a callback. So API, just call one function and it will forward all the GPC calls back to client. So from the go and the code point of view, it looks very nice actually. I can, it's not not compelling at the moment, but I can show how it actually looks like. So you have some hint. Do you see my screen? Yes. Okay, so what they're doing in this test, I have a server for server. I just register a callback service callback service. It's just one service with one method with bidirectional streams request and response for requests have some options like passing arguments and reply and type of requests. And on the client side, I do a client GPC server for test I register a network service on it. And I do just one call callback serve and server will be able to call for client. So how it looks for a server. Server do just a new client with identifier, identifier could be a specific ID or pasted authority. And it's a looks like an absolutely normal client connection interface. Thanks to the latest version of the GPC for having to interfaces. It make it possible actually before it was not possible. And I'm just do a regular network service client and do call. So from a code point of view, it looks absolutely as I've calling just a pure normal GPC server. But the underline, it will be packaged to this request stuff with invoke method, or if I would like to create a new stream to has a request model new stream and send the messages to and from. Most of my tests works the same way fast. So, at least for our scenarios for an SM and should work. I think pretty cool. Yeah, that makes a lot of sense and so the only challenge we may run into, and it's easy to solve is as people want to use more languages with an SM like they want to bring in. Let's say they have someone who does something in, in C or for rest or Python or so on. We may want to, we may in the long run wants to write some of this stuff out just to make it very easy for them to to ingest news. But yeah, it will be a problem. Yeah, you're right. That's okay, but it's it's it looks, it looks easy enough that someone could write out because at the end of that you're still talking over pure GRPC. Yeah, yeah, yeah. So it's just a matter of creating the pattern for them. And it may even be possible. So on client side, I've just reading the messages on a GRPC stream and do invoke actually underline at the moment for tests, I've tested both. I've creating a real client GRPC socket on a file or on a TCP. For tests, I do it creating socket on your PC on a TCP to not clean the files in the file system during the back and so I just forward to real your PC server. So probably it could be. I don't know, actually, to create this kind of forwarders it's not so complicated actually should just implement all of these methods, not so many of them. If you will have clients on different languages probably alternative is to have find proposal to have something similar to this one. It's like if any see the register on this manager and then do the same way, but having this request and response just in our network service manager APIs, but I'm not sure if it's make it more clean. It would be easier to implement for different languages, of course, but not so cool looking code and ease is to use. The previous approach that you showed me and, you know, it's, if I think in the if this is the direction we end up going with in the long run, you know, we can we can work with the community to just put out the right set of libraries so that it becomes easy for them to use the directional stuff. And it'll definitely be useful for others because I know that it's one of the main problems people have with your PC is that there's no real bidirectional abilities. No, it actually banked into your PC, but it's just a stream. It's not. Yeah, exactly. It's not. It's easy to use. But with API interfaces, it's possible to use because I think I don't remember exactly when this was introduced, but not so far away, I think, maybe two or three months ago. And before it was just a client connection without this interface stuff. What else? I think we still have some stuff in a gold leak area. And we're still working on some issues in the monorepo understand why sometimes pink is not succeed with these sweets approach. What's all from our side. Frederick, you have some areas we can focus. Yeah, so the things that are coming down the pipeline that that I personally care about is going to be focused in there's some some of them was was on trying to get wire guard support in VPP. The second one that I was looking at is trying to try to get some more advanced examples for open policy agent and spiffy interaction. And others given I was looking at what's available. We're able to make a decision based on the last token in the in the chain of last element. If I if I read it properly. And one of the things that we're going to be able to be able to do is to run policy that that traverses the whole, the whole chain for for all spiffy IDs that are in a in a given connection. But I think the right way to approach it is we come up with a set of scenarios for the things that we expect to see and things that we expect there to be policy on that that fits into open policy and we can use that to to guide to the next set of changes in in open policy agent and spiffy interaction. Does that make sense. Yeah. So, for me that that the spiffy and open policy agent ones are are the highest or probably the highest priority for for the use cases that I'm saying. So, yeah, and I'm going to see about setting up a call between you and me privately so we can go over some of this stuff in detail. So sometimes in a day or two, just just as a heads up. Well, we'll go over all this, we'll go over all this stuff. Yep. Okay. Hey, Nikolai. I miss you, I think. Hey. Did you join in? Anyone has something to say. We'll meet in 10 minutes in a community meeting. If we don't have any other main topics, let's go ahead and take a short break. Yep. See you in 10 minutes. See you shortly. Thanks. See you.


We begin with the praises of Allah, the Lord of the worlds. We praise Him, and we seek His aid, and we seek His forgiveness, and we seek His protection. Whomever Allah guides, none can misguide. And whomever He misguides, none can guide.  Praise be to Allah as well for bringing us together on this day of gathering, on this day of Jumu'ah. As we know, this day of gathering is a reminder of that first primordial gathering on the day of the Covenant.  And we all witnessed Allah's Lordship, and we testified based upon that saying, Bala indeed you are. And so this gathering is a reminder. But this reminder is also a warning, a warning of that upcoming gathering on the day of judgment, when we will be asked whether we were truthful and faithful to that primordial Covenant. In this life then that we have between these two days, the day of the Covenant and the day of judgment, there are times that Allah gives us moments of opportunity. There are times in this life that we catch glimpses of paradise in the dunya. There are periods when the dunya seems to fade into the background, and the nearness of Allah comes into the foreground. And Ramadan is one of these moments. This is something that I believe most people recognize intuitively. We can see in ourselves the expansion in our capacity to stand for Tahrari and for Tahajjud, the expansion in our capacity to read Quran, each juz passes one after another. And these blessings are such, so concentrated, that it is said that the Salaf, the early generations, they would make dua to reach Ramadan for six months before reaching Ramadan. And they would make dua for the six months after Ramadan that all of their worship in Ramadan was to be accepted. And so Ramadan is a time of expansion as we know. And yet what is sometimes overlooked or underappreciated about Ramadan is that this expansion is accompanied by something else. That something else is a restriction, a fast. As-Salam in Arabic or Som literally means al-Qaf is to restrain yourself. And so think about this dichotomy, that Allah places expansion in matters of the afterlife, expansion in matters of the material, exactly where He places restriction in matters of this world. An increase in the spiritual and in the metaphysical can only come when there's a decrease, when there's a diminishment in the material and the physical. And so we should pay attention to this wisdom for it has far-reaching practical implications for our fasts. We know based on the famous hadith that the Prophet, sallallahu alayhi wa sallam, says Many are those who fast yet gain nothing from their fast except hunger and thirst. Now, why would this be the case? What are we actually commanded to do when we're commanded to fast? Is it just to delay our meal times until after madrub? What a fast is? Is it fast just to not eat so that we become hungry in the same way that if we skip breakfast or lunch, we become hungry? No, this is not. But the fast is meant to be. The purpose of the fast, as the Mufassirin explained, is to weaken your physical appetite, to weaken your physical capacities. That is to diminish your attachment and your need of this material world. It is to wean the lower self, the ego, off of its halal appetites, so that the soul, so that the Ruh can ascend, so that it's not stuck and bound to this material world, and so it can be free to engage with Allah, with the Sublime and the Majestic. That is rather than the soul being occupied in managing the affairs of this world. And in accordance with this wisdom, with this dichotomy between the material and the spiritual, that the masters of the heart outline four conditions for the acceptance of the fast. And what they mean by the acceptance of the fast is not so you can gain a certain number of rewards. But what they mean by making the fast acceptable is for the fast to achieve its intended purpose. And so the first of these conditions and all of them, all of these conditions are restrictions. The first of these restrictions or conditions is to lower the gaze from the unlawful. The Prophet, peace be upon him, says that just a single gaze upon what is unlawful that is, just a single gaze is a poisoned arrow from the bow of shaitan, la'nahullah. And so whoever foregoes it and does so out of fear of Allah, Allah will grant him a faith in which he will taste the sweetness in his heart. And these days this gazing upon the unlawful has a special applicability to screens, to social media. Because if we think about it, how often do we see ourselves scrolling past something or watching a video? And what the video is depicting or what we're scrolling past is just a description of gluttony or of lust or something else. And we know that just seeing these things can excite our passions, can excite these desires in us. And yet these are the very appetizing fastings meant to diminish. These are the very things that fasting is meant to accustom us to not needing. And yet screens are designed to get us hooked, to get us addicted to wanting more and more. And so this then is the first restriction upon us to restrict the eyes. The second condition that the scholars mentioned is to restrict the tongue. That is from endlessly talking, from lying, from gossip, from arguing. The Prophet, peace be upon him, said, is related to have said, fasting is but a shield. If one of you fasts, be not foul or hot-headed. If a person fights him or insults him, let him say, I'm fasting, I'm fasting. In another hadith it says, whoever does not leave false testimony and acting in accordance with false testimony, Allah has no need for him to leave his food and his drink. This is the weight, this is the heaviness with which the sins of the tongue are weighed. And so what fasting demands, as we see in these hadith, is silence. Fasting demands that we stop speaking so much because of how easy it is to fall into the sins of the tongue. And even the physical fast, the fast from food, helps in this regard because you can't really carry a conversation if you don't have the energy from your lack of food to carry that conversation. But what this lack of conversation, what the silence then does free the tongue to do, gives the tongue time to do, is to recite the Qur'an, to be in dhikr, and this is the purpose for which the tongue was created in the first place. And so this is the fasting of the tongue, this is the second of the four conditions. The third condition is to restrict the ear, to restrict the ear from listening to anything that the tongue is forbidden to say. We know that one of the prohibitions of the ear is to remain silent in the presence of backbiting. That is, if someone is backbiting in front of us, then for us just to sit there and listen to it. Either we must leave the room or we must say something against the backbiting. Allah says in the Qur'an, Sit not with them, meaning don't sit with the backbiter until they delve into another conversation. You would then be like them, meaning that had you stayed, you would have been like them in sin. Additionally, listen to how the hypocrites, those who don't believe but just pretend to believe, listen to how Allah describes them. They are always listening to lies, they are always devouring the unlawful. And we know that just as the tongue is meant to recite Qur'an, the ear is meant to listen to Qur'an. But if the ear is clawed with listening to all these unlawful things, if the ear is clawed up by listening to gossip and argumentation and listening to music, because a lot of music very often contains, again, these descriptions and depictions of the unlawful, how will there be any room remaining to listen to the Qur'an with your heart? Or will you just listen to the Qur'an as sounds? And so this then is the third restriction to restrict the ears. And the fourth restriction then as mentioned is to restrict the stomach. Not only during the fast, obviously, but when breaking the fast as well. In short, we are commanded not to feast during iftar and sohoor, to not indulge ourselves excessively during iftar and sohoor. The hadith we listened to at the beginning, Many are those who fast yet gain nothing from it, except hunger and thirst. And just think about this. Think about how foolish it would be if at the end of a month of working in the office, a month of hard work and difficulty, as you're leaving the office, you get your paycheck and you throw your paycheck in the dumpster. Think about how worthless all that work would have been, how useless all that time spent was. And think about then how this month should go, how this month of work should be spent, whether it should just be thrown into garbage as soon as you, as soon as Eid comes or as soon as your iftar comes. We know that the stomach is an inroad to evil as it comes in the hadith, just as the ear and the tongue and the eyes can be inroads to evil. And so the Prophet, peace be upon him, says, and he says this about eating excessive halal food. He says, There is no vessel worse than the stomach that the child of Adam fills. And so we're commanded to restrict the stomach to the point that we don't feel, that we feel more hunger and more thirst than we would normally feel because this is the medicine that is prescribed for man to gain our spiritual strength. We should not enter our iftars gorging on a 10 course meal, eating all kinds of food, seeking special foods for Ramadan just because we feel hungry. We are meant to feel hungry and that is the purpose of the fast. I say this to you, and I ask Allah's forgiveness and to you, the followers of the Muslims, forgive him. He is the Most Merciful.


Okay, okay, let's start Good afternoon. Welcome and thank you for coming. I'm pleased to introduce the engineer Daniel Pope who talks about pale game zero No, ah, okay. Hi. I'm Dan I am a reliability engineer by day But for many years my hobby has been programming games. I remember my first computer was an Atari ST and I Had ST basic and stuff and I immediately put that to one side because it came with loads of games And so my my interest in programming came from my my love of games and I continued to Program games in my spare time Particularly during two weeks of the year which are Pi week so Pi week is a week-long games programming contest Where you are challenged to write a game from scratch in Python On a topic that is given to you at the moment the contest starts So you have exactly one week to write a game and then you have to upload it and I've taken part in Pi week about ten times, but I've won it twice so I That that kind of background Was particularly of interest to Nicholas when he set up the PyCon UK education track And he kept saying well Dan you have to kind of get involved with this because teachers we love this kind of stuff So About is it four years ago the first five years ago the the first PyCon UK education track rolled around and We were challenging we were putting into groups and challenged to groups where teachers met developers and challenged to come up with some course material that the teachers could teach And so I from from my Pi game or Pi week and Pi game background I dashed off the simplest possible Pi game program It's about sort of 20 lines to do import pi game in pi game in it while loop something you know, whatever and One of the teachers said no, that's that's too difficult that can't work in a classroom Because the amount of code that he would have to teach for a student to be to get something productive by the end of the lesson was too much so the the the best program was in the class the people with Who got it would race away and be bored and the people who didn't get it would not have got it by the end of the lesson so that problem sat around with me in in my brain for three or four years and then In 2014, I think the October 2014 Pi week I sat down to write a game and the theme was one room I thought I'm gonna write this in a kind of way that I would write it if I was Creating a framework for complete beginners to Pi game and then last year I Turned that into a library, which is Pi game zero So this is a library that takes all of the boilerplate out of Pi game Pi game is a library for Access to graphics and sound and input But wrapping that with a kind of thin Python layer that lets you Training wheels for Pi game as it were so you can get up speed faster The teachers can teach like a couple of lines at a time and make sure the class is caught up But then it is just Pi game underneath so you can throw away the the training wheels at some point and migrate to Pi game proper If you want, so I'm gonna show Pi game zero today I've written a blank file that's called demo dot Pi The secret of Pi game zero is that it doesn't run with the standard Python interpreter you run it with PGZ run So PGZ run is all their clever machinery a blank File is a valid Pi game zero program It creates a blank window, but you can quit it Which is great because you can't do that with a blank time by game. So that proves you've got things installed then you can say So two lines of code And I put a blue screen So Let's write a little game. I'm going to So that's a couple more lines, but that is using Pi game zero magic The sorry the this mouth refers to an image. So if I do I've got a directory called images And that's where my my image files are so I don't need to do any Fafting to load those path manipulation They are just as sort of available as as strings You can also this We can access them as objects in order to get the width and the height if you want But the actor there has a width and height. It's a Pi game rectangle, which is why I could position it by Mid-bottom. It's got all of the Pi game Attributes by left right X and Y So I'm going to have another thing. You're gonna be very topical. So I've got a pinch. Oh These were drawn an inkscape by the way and then exported as pings and Pi game can load Sorry, pi game zero can load pings or jpegs So whatever file format you could you should just be able to save something off the internet maybe and use it immediately in the game And then I draw a great function called update So a couple more lines so two lines at a time. That's what we're aiming for so if I say if keyboard left Shouldn't I should have chosen a word that's easier to spell And then I said these these actors are I'll just RET so I could do if So I Think that program is easy enough to grasp I think the by moving all of the complexity out of Out of the pi game program that you would write into pi game zero We've created something that is much simpler to get started on just at that that level where you're transitioning from something like Scratch so kids will do scratch up to the age of 10 9 Like subtle nods and then in the UK curriculum they have to transition to a textual programming language but scratch has the ability to create characters and move them around Out of the box so that stuff is very accessible for Python programming. I think we're in a situation where the out-of-the-box experience is Worse I think you if you if your basic programs are What is your name hello name That's a big gap from where you work just were in scratch to where you are in Python so pi game zero sort of fills that niche for getting up to speed You know Getting something graphical on the screen to keep kids engaged as they as their programming career continues This was written in Python 3 I think that's important as well so the background for Pi game and Python 3 is is sort of a bit incomplete Teachers told told me that they wanted just pi get a Python 3 stuff They wanted to be able to teach one language and so the Python 2 3 split was a big problem When this was written, and I think this is still the case. There is no official release of Pi game for Python 3 so a part of this was Actually finding ways to install pi game and Python 3 And that is all in the documentation so There are ways of doing it it works But pi game is catching up actually so there are now binary wheels on pi pi, but I think off of the Pre-release tags, so you have to say PIP Minus minus pre or something, but you can install pi game And Okay, so I was going to show you Some of the other things that pi games era can do so Draw an update or your basic bread and butter for creating games for animation So draw will draw the screen that will be called whenever pi games area wants to update Draw the screen refresh the screen update is called 60 times a second anyway so if you don't define update you can create games that are Click-driven. I'll show you the click API. So Right, so all I needed to do was create a function called on on mouse down and Pi game zero will call that function If I wanted to know what button I what button was clicked I could go Do anything with a button so you see I've got Pi game zero is adapting to the the callback that I define and I Was demoing this to I was sharing this around the internet with some of the teachers who've been involved in the Python UK education track and Dave Had said it doesn't work. It's just not working. He'd written that and I was dismayed that the very first experience he had with this this tool was Something that just didn't work and didn't give me any feedback on why so If you misspell a function It's got a spell checker and will tell you that you might have misspelled things I think that's the the kind of philosophy of pi game zero is that we've done a lot of work actually in sort of catching Errors re-raising them with better messages because that kind of feedback about If you if something breaks and it doesn't give you any information as to why That is a An obstacle to Continuing your your learning so Every time we could take something That the the underlying pi game was doing and make it more explicit. We've done that I Think I will stop there and invite questions because the questions have been very good in the previous times I've taken this talk and I'd rather sort of I Want to know what you want to out of this this tool, so any questions? Do you want a Yeah, so I just wanted to ask if there is like an included way like For easy publishing of your game especially for kids. Yeah, so because like they won't go into different No, but Pi game zero was created with a an understanding of the kind of portability problems that show up on When you when you distribute games so having done pie week a lot of times every time you use open gel for example It will work perfectly on all of the machines that you develop on and then somebody will run it and there's a driver problem So pi game is ideal for the distribution of games because it just works if it's there It just works. It's CPU rendering which is slow, but it's Incredibly reliable also pi games area will catch problems with file names for example, so if I if I rename Then it will give me an error that my game could possibly not be exchanged with somebody with a different file system That was case-intensive Case yeah case-intensive so that kind of problem is To the best of my ability sort of dealt with by by pay game zero the actual sort of packaging of games Distributing them. I think is a is a future problem, but something I think we would like to solve Why sorry? Well, yeah, it's a problem for everybody. Yeah Yes, so packaging yes and distribution Yes, I think that comes later. I think that's something that we should we should build the Pi game zero Distribution is just like a directory really so if you have pi game zero installed zipping up a directory and just sharing the Images directory and the sounds directory and the script And generally it's assumed there is one script. This is for For programs that are simple enough to be in one module Then that can be run on any computer with pi game zero There is another project I've got internet I can I've been working on something called the edgy bundle Which is an attempt to provide a redistributable sort of bundle for Python for education that has pi game zero pi game Pi Qt Nicholas's mu editor available so I think By pursuing all of these avenues we can make games easier for and Python easier for kids to to use at school run at home Yeah What about networking because in in games it's also interesting if you're I don't know you're a colleague from school can play Right your latest game. Um, yes, so Nicholas is putting his hand up So there's network zero for that we're gonna answer more for you So inspired by Dan's awesome work with pi game zero As I mentioned in my keynote other people have been doing something something zero libraries Following the same philosophy that Dan has And Tim Golden who's Python core developer based in London has created network zero He tried out at the London Python code ojo and we had an awful lot of fun Breaking it the important thing is is that Tim has also been trying it out with teachers as well and getting their feedback And just to echo what Dan was saying I'm getting teachers involved in this is essential because they are the experts in dealing with children as developers we we can think Kids might want to do but it's teachers who actually deal with them every day, but there's network zero I can't see why network zero couldn't work with pi game zero and you're right and Ben Nuttle of the Raspberry Pi Foundation created GPIO zero and also the hashtag zero all the things so what you need to do is create a Pi game zero project that uses GPIO zero on a pi zero Raspberry Pi zero with network zero as well And then you've zeroed all the things and you can legitimately use that hashtag. Hi so we talked yesterday evening and I just want to Repeat this suggestion you can actually bundle this thing with the pi two extra to have a single executable file that doesn't need installation I think that would be a good thing to have but I have not written that yet Yeah, of course, but I'm just saying that maybe that's a good thing to look into and Also, you could run the zip files directly, right? Yes, like zip app. Yeah Yeah, so I I guess as you suggest features I should mention that this is on bit bucket G zero and so pull requests are Accepted and this is a community You pointing Okay thumbs up right. Okay. Yes it's community project and and and it sort of relies on the feed, but I'm not a teacher I Going on feedback from teachers, but I need the feedback of people who have tried teaching kids with this to improve it And any time that you see an error message that is opaque Or something doesn't work And doesn't give a trace back or doesn't give any indication as to why it's not working that could be considered a bug So, please report it if nothing else Okay So since arriving in Bilbao, where am I? Sorry? Hello? Right right at the back. Okay, we're underneath the light since arriving at Bilbao I've discovered that my Spanish is exactly zero and a lot of Spanish people's English is also zero What options are there for internationalizing so that an 11 year old Spanish kid? For example doesn't have to learn English to do on mouse down, etc um Yeah, I think it's probably Difficult to conceive of a way that you could internationalize this without Making incompatibility problems. I think also that English is the language of programming and You know the Python libraries are And the and the Python keywords are English On the other hand, I think it's very reasonable that the documentation should be translated So if anybody would like to contribute a translation for the documentation Or I'll contribute any kind of tutorial or blog post that would be appreciated Okay, the last question Thanks very much. Um, this looks like it would be quite a nice way of building Not just games, but generic interfaces for interaction with all kinds of things How suited is it to playing the role of a kind of generic graphical interface builder? You can write Full graphical interfaces in Pygame and people have done it But I think at that point you're probably not you're probably best if you you want to attack that kind of problem using Pygame itself and there are libraries that do sort of the GUI widgets for A Bedding in a Pygame game that sort of mimic the the kind of platform widgets But I think it's not That that kind of programming becomes more complicated than I think Pygame zero is targeting So I think if you want to do that that's and I certainly could see that if Pygame zero was Was to include some GUI tools To share games for example To like to bundle them up to sort of enter some some details and an icon or something Then that could be done with a GUI that was written in in Pygame, but may not use Pygame zero to do it Okay, okay. Thank you Daniel for your interest companies and thank you very much


Good morning! Where is some nice lighting in this place? Hi, good morning. Welcome back to my channel. Welcome to another video. So, I haven't done these in a hot minute, I think since last year. I am at uni right now, obviously, it is currently November. Getting near the end of November actually, which means there's a lot of assignments due in, so I'm a bit of a busy girl. Am I? But yeah, today I'm gonna be filming a what eat in a day. You guys seem to like these, I don't know. Are these interesting? I don't really know what kind of content we want at the moment. I'm a bit stuck for ideas, but I thought I'd do what eat in a day. Obviously, I'm a uni student. We be living on a budget, kind of, but I'm terrible at budgeting. But yes, good morning. The first thing, obviously, that I'm doing is getting a coffee because it's my lifeline, so let's make one. I've also run out of actual Nespresso pods. My parents bought me some ages ago when they bought me the coffee machine, which is my 19th birthday by the way, and I'm almost 21, so that's quite a long time ago. But yeah, I've run out of the actual Nespresso pods now, so we're on to these. These are from Lidl. I'm not entirely sure about them yet, but they do the job. Good morning. Morning. Cheers girls. It's going to be really hot. Right, so I apologize for the state of my room right now, but while I'm drinking my coffee, while I'm drinking my coffee, I just wanted to show you guys some new jewelry I've got. This section of the video is very kindly sponsored by Ana Luisa. If you guys have watched me before, I have actually worked with them a few times because I'm obsessed, so they are currently running a massive sale on their website. I believe it's buy one, get one 60% off, which that's like 30% off by the way, kind of. The first similar price. Someone's walking past my window and can see me talking to a camera. But yeah, we've got some new packaging. These are really cute. They're magnetic. Okay, go off. Obviously, as always, I will put my link in the top of the description. Okay, these are the first things I've got. These are the tier medium gold hoops, and I have actually got these ones before. I lost them, so I want to get them again because I literally wear them every single day. They're like the perfect size and width, and they're such good quality. This brand has like designer quality, but like not designer price. Do you know what I mean? These have never made me go marine, which a lot of my jewelry does. Here's what they look like. I'll put all the details on the screen for you. Okay, so next I got a necklace because I really don't have any. Like I have the little lock one that I wear, which is actually also from Ana Luisa, and I'm obsessed with it. I wear it all the time, but sometimes there's just not the buy. So I wanted a little shorter one, a little chain. I was about to sing a TikTok reference, but that's probably not appropriate. This is called the Jusuf. Jusuf? I'll put the details on the screen because I'm probably butchering that pronunciation. Oh my goodness. Wait, I didn't even notice that. That's so cute. I don't know if you're going to be able to see because it's in tiny writing. I'll insert a little overlay of what it says, BU on it. That is so cute. I just think this is a really nice length, and then finally, I've got one more to show you. This is called the Mecca off-white ring, and look how pretty that is. Again, I don't really wear rings, but I really want to. So I thought I'd get like an actual nice quality ring. I love this. The white and the gold together is so pretty. Anyways, as I said, it's currently buy one, get one 60% off, which I think is a brilliant deal. So if you are looking for any Christmas presents for anyone, I would highly recommend. And as I said, the link will be in the description. Thank you guys so much again for sponsoring the section of the video. Well, let's go see what I ate next. Take it away, Gemma. Take it away, babe. So we tried to go to an actual cafe for brunch, but it's sharp. So now we're in Costa and he's really embarrassed that I'm going with this. But I actually don't think we're getting anything in here. Yeah, because you don't want to. Well, instead, I think we're all going to do. I don't know. No deal. Yeah, nice. Is this embarrassing? Yeah. Hi, we're home. Didn't go anywhere. We went to Tesco's and I'm making pancakes. This was literally a pound and we just add water to it. They might taste absolutely rank. Have you had these before? What are you eating?  So hey, do you want to be in the video or not? I just don't mind. Replace the cap and shake the bottle for two minutes. Lemon juice. It's not focusing. Do you want to place it on top of it? Oh my days. Give me some weather, you know. I need to go to the gym. I got it. You always think they know best. And they never do. Oh my God, guys, I got gems on my teeth yesterday in case you're all wondering what is on my teeth. And I got my nails done. This one says love. You can't do it. Okay, we'll get back to you if we've actually made a pancake. Yeah, metal does that when it gets hot. Hey, did it work? Brilliant. Lovely. Okay, okay, they're getting a lot better. That is sexy. Raise it out. 10, please. Six. That was all right. Hungry. Gems are still on. Does it feel weird brushing your teeth in the middle? No. Can you fade it though? Can you brush it? No. This is just divine. Do you say they're like Swarovski Gems? Swarovski crystals. Hey, it's been a minute. We're about to make dinner. I'm making my Karmina, which is, I feel like I've really big it up actually, but I don't actually think it's that nice. So it's good. Right. This is okay. I don't want anyone to judge me because I don't like cheese. So I make my Karmina without cheese and I do for double cream in it and I don't want to hear it. I don't want to hear it. You're gonna need eggs. Yeah, eggs is normal. This is not normal. I also put garlic in it. Also not normal. Garlic? Yeah. Garlic goes in everything. Red onions. It's a bit of a modern take. Mushrooms? What kind of carbonara are we making? Quite a few carbonara. Anyway, I'm going to walk you through it. What's going to say I make four portions, but you'll probably eat at least two of them. Yeah. Hey. Right, the mushrooms are frying. The pasta's in there. We're gonna get hurrying, actually. I know it looks like a lot, but they will shrink down. Right, the mushrooms go in, then we're adding garlic to this, then the onions and the pancetta. The sauce we make, you just mix double cream and egg yolks. Only the egg yolks, ladies and gentlemen. Egg yolks. In a bowl. And there she is in all her glory. Actually smells good, no? Actually does smell nice. Okay. Okay. It's ready. I'm so hungry now. You've got to try it first. Yeah. No. It's always good though. I bat myself. That's actually really good. Yeah. Okay. This lighting is horrendous. I'm going to try and film as little as possible here, but I'm currently editing the footage that I already have today from today, because this video needs to go up quite soon. And I've got my coin here. Hey. Oh my goodness. And we're having lovely, we're having cup of tea and some cute little brownies. Anyway, the point is we're very wholesome and we literally bake together. Like we're actually a little married couple. So we're going to have a little brownie and a cup of tea now. Nice.