Being the pro gamer that I am, we're on foreign league, I wanted to see if I could make a robot that could beat me at a game. Knowing how dumb robots are, I chose a super easy game. And with what's happening outside in the world right now, internet in my house is going in and out. So I chose Chrome's Dino game. You know the one where you jump over cactuses and as long as you don't hit a cactus, you win? Yeah, that one. So all I need to do is take my trusty little Arduino, plug it into a couple things and make it beat the game, but how hard can that be? Here's my idea. The first step is to get everything we need to make this.      So here's the plan. See that Dino right there and that cactus right there? Those are white, gray spots on the screen. Put out light, whether it's green light, blue light, red light or just white light or no light, there's luminosity levels and they change throughout the screen. So when a cactus pops up on the screen in dark mode, it's going to be a bright white object moving across the screen or actually being lit on different pixels. All we're going to do is take our light sensor and we're going to detect light in a certain part of the screen and when there's light, jump. That's also why I 3D printed this little box to go around the sensor so that it captures the light and it's more obvious whether the area is lit or not. All it does is the box goes flat on the screen and now it's a little capsule of light in there. Right here on the screen, I got a refreshing console log of the light output of the monitor. So it's saying about 283, 284, 282. It's around that number. And we're going to go and put something dark in front of it like this thing. We're going to wait a second, wait another second and we're going to go back to it. And look at the light levels. It went from 282 to 830, 833, 834 and then went back to 282. So that's how we're going to differentiate whether we're looking at a cactus or whether we're looking at a background. All we got to do now is send that signal to our servo which will do the physical clicking of the keyboard. Here's what a servo looks like and this is what's going to be clicking on our keyboard that's going to be sitting like that and then it has a little arm and it's just going to tap the keyboard and go back up and tap the keyboard and go back up and it's going to repeat that process. These are one of the servos you put on like RC cars or any kind of RC stuff and usually you drill it in or screw it into something and I don't really want to do that into my table or into my keyboard. So I went and printed like 45 versions of these till I got it how I wanted it. Where all it needs to do is hold the servo down and then these tabs right here will go under the keyboard where it'll be held in place like that. So it won't go up, it won't go left or right. It's just stuck under the keyboard because of those tabs and then if I really want to I can lock it down again there and it's not going anywhere. Now all that we have to do is tell the servo to go between two different angles and press the space bar. We want to make sure it doesn't go too far in and then just lift itself and the whole keyboard or break the keyboard or break itself. We just want to make it click the very minimal and then pull back up. Alright here we go. Okay so I finished everything up, I cleaned it up. Now the game should actually work and we should actually win it. So let's go and run this program. Let's open up the Dino game. That was a great attempt wasn't it? So it looks like it's a timing issue. Now we have two options here.  Let's just find out the best spot on the screen for this thing. I'm going to guess where I over here. We beat the game. It works. Finally. If you guys want to see more of this style of content please comment, like, subscribe. Let me know what you want to see next. I got one video I was working on where it's a Roomba that makes the room dirty. So if you want to see content like that you know help me out support me with the like button if you learn anything if you found any enjoyment if I made you laugh. So yeah let me know what you think and I'll see you guys in the next one.


Quiz Automatic Grading If you want to assess learners formatively or summatively with questions for which there are specified answers, Moodle's very powerful quiz enables you to do this. We can only look at a few of the features of the quiz in this screencast, but it's worth exploring more yourself and in the Moodle documentation. A quiz allows you to use different types of questions, not just multiple choice, and it also allows you to add, as here, media, images, video, sound files, as part of your questions. If we go to our course and see how to add a quiz, the first thing to note is that in the more link from the gear menu, we can access the question bank. When a quiz is created in Moodle, you create the questions separately and store them separately, so they can be reused by you in a later quiz or by your colleague in the same course in a different quiz. So if you wish, you could start by adding your quiz questions to this question bank here and then make a quiz another day. But we'll make our quiz straight away, so to do that, we turn on the editing and then in the section we want the quiz, we click Add an activity or resource. This takes us to Moodle's activity chooser. Quiz is an activity because learners interact with it. Click once to go straight to the setup screen or click the information icon for more details and then the Add button. The first thing that we do is create the front page, if you like, of the quiz. The name and the description which quiz learners will see, and if you want the description to appear on the course page, just tick the box, Display description on course page. There are many different settings in a quiz and it is worth exploring all of them. If there's anything you're not sure of, the question mark help icon gives you extra information. For now, we're just going to click Save and Display and we have a blank quiz and what we need to do is to start adding some questions, which we can do by clicking the button Edit Quiz or Edit Quiz from the gear menu. We then see Add, and if we already have questions, we could add a random question to our quiz or a particular question from the question bank, which we might have added to earlier or a colleague might have added to earlier. But we are starting anew from nothing, so let's click to add a new question. We are then presented with a list of question types to choose from, and just like with the Activity Chooser, if we click the button next to the question type, we are presented on the right with some information as to what that question type does. And note that although most of these questions are questions where you provide the answer, it is possible by choosing Essay to have learners typing an essay which we would then manually have to grade. Note also there is a description question. This isn't a question type as such, it's just a text editor into which we could add an explanation, some instructions, images, videos or sound. For the purposes of this quiz, I'm just going to add a multiple choice question. We are then sent to the setup for this particular question. We have to give it a name, although the name doesn't appear in the quiz, but it's important because it's how it would be recognised in the question bank in the future, particularly if we have a lot of questions ourselves and perhaps shared with colleagues. In the question text, that is where we type the actual question, and then when we scroll down, what we see will depend on the question type, but we'll always be able to add general feedback for any question, and then in the answers, because it's multiple choice, we add the first possible answer with the grade. None, we add none if the question is wrong, or a hundred percent if it's right, however there are, as you can see, options in between. We can give specific feedback for each individual answer, and if we want to do more than just write simple text, we can use the icons in the text editor. So again, we write in our other choices, choose the grade, and we continue. When we click save changes, we have our first quiz question, which we can preview by clicking the magnifying glass icon. So we then go on and continue adding questions to our quiz. Finally, looking at a quiz that's already been made, it's easy to change the order of the questions by dragging them up or down, and to add or remove page breaks by clicking on the icon, and we can divide our quiz up into sections as well.


It was like a great little dialogue going on between ascended masters and one that was struggling and going through a lot of very difficult emotions and perceptions. So it's almost like a symbol of a dialogue between the human condition and the ascended masters. I found that very helpful because that of course reflects my journey and it reflects everybody's journey. As long as you believe in the ego, there's going to be a bit of this back and forth. You want what? You're guiding me to what? You said what? There's going to be a bit of the ego reaction and resistance to these high teachings because the ego is the belief in separation and these high teachings are the teachings of forgiveness and oneness. And separation and forgiveness don't really have a meeting point and separation and oneness really don't have a meeting point because one is real, the oneness, and the separation isn't. So you can never really bring together reality and unreality. If you could bring them together, then of course one would dissolve and disappear and that's the basic teachings of A Course in Miracles is that this is a teaching and ending dissociation, ending the attempt of maintaining two irreconcilable thought systems. Love and fear do not go together. They may say in this world that oil and water don't mix, and I'll tell you one thing, love and fear, they just don't mix. And when you're experiencing the fear, then the love is pushed out of awareness. When you're experiencing the love, it's as if that's all that there is, that there never was anything else. You don't make it back to Heaven or Nirvana and then sit around and tell your war stories.  It's not like going to a 12-step meeting where you can kind of rehash over all of that. Do you know what I've been through? Sit down, I'll tell you my story. There's just none of that in bliss. Thank Heavens. It's just peace, eternal, total peace in us. It's great. I was in Australia doing one of these talks and the wind tried to blow the tent down when I was doing one of my movie gatherings, Exposing the Ego. But these look like my strong steel beams. I think we'll do okay for five days. No hurricanes inside. So, again, I think that was something that was very... I had just a warm feeling reading that disappearance and the immoral reality. And then traveling around the world, I've been doing this for almost two decades. So, it's just kind of fun to meet all the people and hear all the different thoughts and reactions. A lot of times I would go and stay with people and they would say, Gary was here and I'd say, wow, that's great. And they would say, yeah, this is good, good, good. But I didn't like this, and this, and this. And it was kind of funny because some of the things it was being spoke of was I don't like this, this, and this. It was like it's too uncompromising. And I remember we hear people say the same thing about the course. The course is too uncompromising. And I thought, well, if we're here to discern between illusions and truth or error and truth, this is something we want to be non-compromising. How can you be too uncompromising when you're working with a teaching that says, the truth is true and nothing else is true? Or you read a lesson like 152, the power of decision is my own. And he says, basically everything you perceive in all of time and space is the result of your own decision. Everything, without exception. And he says, Jesus says in that lesson, you may think that this is too all-encompassing to be the truth. But he goes on to say, truth has no exceptions. So truth is without an opposite. And if we look at that in terms of forgiveness, we could say the same about forgiveness. You're not going to be able to accept partial forgiveness. It's not like horseshoes, where if you get the shoe close to the pin, you get some points of recognition or some of these games, you get partial bonus recognition. It's not that way with forgiveness. It's really all or nothing. Some of the same things that we reacted to with Christianity, it's all or nothing, black and white thinking. Well, we get to the chorus and it's like, it is all or nothing thinking. Not in terms of behaviors. That somehow it's a sin if you don't wear a hat to church or some of these crazy beliefs and everything. But in terms of thought systems, this is completely uncompromising. So when I traveled around, sometimes people would say, Gary told me that what I was teaching was not the course. Or he told me that this isn't really the teachings of forgiveness or something and they would have reactions. And in one sense, there has to be different people to play different parts and roles and so forth. And in one sense, you could say that's just calling a spade a spade. Of course a miracle is a beautiful teaching, but like everything in form, it is open to interpretation by the ego. And the ego will interpret the course in many different ways to its own liking. Ascended masters are not really interested in multiple interpretations. It's just boom, here it is. Like it or not, here it is. And so when you get into interpretations, there's always going to be conflicts, disagreements, and so on and so forth. And the good thing about the state of peace or ascendance, or transcendence is that it doesn't buy into any of those conflicts. It sees that there really is not too to conflict. There isn't that duality that has to conflict, which is beautiful. That's the blessing of enlightenment. That's the blessing of the present moment. Ascension, I'll call it, does not have an opinion. So if you have an ascended master and you say, what's your opinion about this or about that? You're not going to get an opinion. Ascension does not give opinions. And I can tell you from experience that this is really a glorious state of mind because it is a very, very glorious state of mind not to have any opinions about anything. Not about people, not about fashions, about countries, politics, the environment, not about exercise, no opinions about nutrition. It's really very joyful. Opinions drain the mind, drain the mind. Mind is actually a state of vitality. It's just that spectacular energy and radiance and joy and opinions just put a damper. Try to, in awareness, not in reality, bring the mind down into a state of sleep, sluggishness, deception, and it's no fun. Above all, opinions are no fun. And so one thing I could say with you is that it is impossible to live a life and live in a state of mind that has no opinions without the Holy Spirit in Jesus or whatever name you choose to call Spirit. If you choose to use other names that aren't Christian, oneness. This Spirit is essential and trust in this Spirit is absolutely essential to that state of mind. It would just be a pretense to kind of make a statement like, okay, I will no longer have an opinion if you didn't have a very trusting relationship with Spirit because you would just be fooling yourself.


The Cavalcade of America Many years ago when Thomas Jefferson was president and everything beyond the Allegheny Mountains was a wilderness The DuPont company began to play its part in the establishment of chemical science in the United States And so in presenting the Cavalcade of America DuPont has a feeling of kinship with the American pioneers whose faith and courage were such essential factors in the progress of our nation As you listen to these episodes from the nation's past You will have a feeling of reassurance in the knowledge that the same ideals of American character live today in the cities on the farm Marching forward in the Cavalcade of America Our first story this evening takes place down south in Georgia in the year 1842 It was just about then that Stephen Foster began composing the melodies that became the folk songs of America Our Cavalcade orchestra will play a group of songs by Stephen Foster Who unselfishly played their part in making our country a better place to live in Who did their work for humanity rather than for gain or glory? And nowhere is this spirit more truly found than in the great medical profession It is March 30th in the year 1842 In the middle town of Jefferson, Georgia a 27 year old physician Dr. Crawford W. Long is in his living room talking with a group of friends No wonder they don't take you seriously making fantastic claims like that. But Mr. He is I'm telling the truth. Well, laugh if you will, Mr. Long. The day is coming when a surgeon will be able to operate without causing the slightest pain to the patient Dr. Long for years the finest minds of the whole world have looked for something to dead in pain How a young man like you are hardly hot of the university can imagine I don't imagine Mr. Rose I've tried it here how you came across this pain killer Well, about a month ago young fellow came to me and asked me if I could make nitrous oxide What's that laughing gas when I was up north? I knew some students who sniffed laughing gas and said it stimulated a lot of students to try This chapter came to see me wanted some I didn't have any apparatus for making it So I told him I knew of a substitute I offered him a sniff of ether Bored some on his hand because he breathed in so deeply that it overpowered him He fell down those three steps leading to my laboratory and broke his leg what what when he broke his leg Under the influence of this ether he claimed that he didn't feel any pain It wasn't until the effects of the ether wore away that he knew anything was wrong That's different man may be insensible for a second and not be conscious of pain But an operation takes time. I haven't healed even been unconscious for at least 15 minutes unconscious perhaps But how do you know if you were insensible to pain? How do you know that a sudden pain wouldn't have aroused you? That's the law of fake part. Yes. Yes, sir. Yes. Yes Good afternoon doctor. Good afternoon, mr. Doctor I've heard a rumor that you can perform a surgical operation Without hurting a man who told you that your colored boy Jasper said something about it to my friend Jasper's trifle prematureness both What's the trouble? I have something on my neck Dr. Wilson says it's a tumor that ought to be removed and in the last turn I thought that you will sit down here, mr. Then we'll have a look. Thank you Yes, yes, I think I can give me without hurting me Are you willing to let me take a chance? Yes, I am Would you mind if I ask the gentleman to watch this operation? Why I don't know be really for your own protection They'll see that I don't try to deceive you. Oh, mr. Thurman, mr. Hayes, mr. All come here a moment. Will you please I want you to witness what may be a great achievement or a colossal Oh, don't say failure doctor. Oh, what's that? It is afternoon, then about there. Good afternoon, sir What is this young optimist proposing to do now? He says he can remove this tumor from my neck without my feeling It's all right to say I wanted to Please this is between mr. Thenable and myself I know you've called these gentlemen in to hold me down. No, I promise You'll have to trust me then Yes, I will just put this paper cool of your mouth What are you going to do doctor? What is in that bottle medical term? It's so curious I'm going to pour it into the cool Relax now, mr. Thenable Take a long breath. Take a long breath.  The bandage isn't too tight, is it? No, I don't feel Oh Yes, there is a bandage Are you saying it's out? Yes No, it's not the thing Can't believe it's gone. Oh dear mr. Thenable. I saw him do it. It's remarkable. Oh, it's a miracle An absolute miracle. After long I can never thank you enough What a blessing this is going to be for people in pain In the presence of his three friends dr. Corporal w long performed the first operation with ether as an anesthetic So his government was slow to recognize his gift to humanity There stands in Paris a statue of the man whose life was spent trying to make this a happier world The discoverer of ether as an anesthetic the georgia practitioner dr. Corporal w long Our second story in this tribute to medical science Takes place at the time of the building of the Panama Canal in 1904 Our cavalcade orchestra sets the stage with pan americana composed by victor herbert for the pan american exposition at buffalo in 1901 Pan americana makes use of indian themes of north central and south america American cavalcade moves onward Nowhere in this cavalcade is there a more inspiring figure than that of dr. William c gorgas Who sought to benefit all of mankind and serve postality? It is august 1904 the united states has decided to build the Panama canal army engineers lead a multitude of men in a mighty venture But the most desperate struggle is not against rivers and mountains, but against the deadly jungle pendulum At the office of the sanitary apartment and con hospital in Panama We find its chief dr. William c gorgas busy at his desk as one of his aides comes into the room Oh, pardon me dr. Gorgas. I'm sorry to be late. I met some friends of mine who just arrived mankind Made the grave of the engineers and his daughter. Yes. I know grave good man They're outside if you'd care to see him eat. I would I mean made the grave delighted to see you sir. Oh, how are you finals on? Good of you to call soon. I'll put some on a carnival reason. My daughter wanted to see this hospital Oh, excuse me. Have you met my daughter helen colonel gorgas? Welcome to Panama. It's great. Thank you, doctor Did you know my assistant captain blake captain grace? Well, it was lieutenant when I saw him last Don't be too excited over his promotion my dear They're given high titles down here to all the natives perhaps My part. I just assume a way of the title receive a little more help Dr. Gorgas might I borrow your assistant to tell me around the hospital? Certainly. Is this perfectly safe or quite well screened, but isn't yellow fever a very contagious? There's only one way to contract yellow fever to a bite from the stagelmaier colobus And that's our scientific name for the special mosquito Blake can be trusted not to let her visit the horrors. Yes, sir. We'll be right back. Take your time and blake You might inquire if there's a cable for me. Yes, sir. That's in the right Fine young man No, my daughter seems to think all to make some girl a splendid husband Well, just the person there's a young man in my division lutan and sandblower who seems to have the inside Oh Course blake isn't an engineer. What I'm sorry major. I didn't mean it as a sounder They haven't made it easy for me here Calabria hill and the shaggers river aren't our worst worry You came of course in the railroad today, of course you saw the masses of rusty machinery left by the french Those rows of crosses on mucky hills The remains of the de lessons Yes, the lessons didn't compare with our engineers. The lessons wasn't so bad He built the Suez canal And our governor of the zone general davis built the washington monument They didn't have to fight the jungle in the mosquito. I was warned You were a bit mad about mosquitoes and I first went to cuba some years ago I too was a skeptic The wall to read and carlis finley convinced me Finley developed this theory read boogers. Please god. I can profit by it This place is a pestle grave It's customary not so long ago for a council to send his predecessor home in a coffin Are you sure all man that you are not needlessly apprehensive We didn't expect this job to be a picnic, you know, I know But with health the mosquitoes would be wiped out And it must be wiped out if we're to build this canal Come in Oh, how about those own Yes, the cable you're expecting sir. Well, this may be what I've been waiting for. I pray so Bad innocent leaders Leaders loud the major gray may hear I cable washing them yesterday for certain necessary supplies that were refused me here Means the lives of thousands of our boys Need the answer In future send all requests for supplies by letter Cables cost money cables cost money and then die I can't do it alone I tell you gray unless I read this place a disease There won't be enough fees on the isthmus to provide courses to the cemetery Some time later major gray and his daughter are situated at empire a government settlement about calabra hill With a big cut is being made And bar plate often finds his duties leading him in that direction. Oh, well, that's in vate Are you here personally today or officially? What makes you? Well, it makes a difference in my attitude. I rather like you personally. Thank you But officially you're a great deal of trouble You see the last time you were here you men put oil in my watering cans and when I water my Water breeds mosquitoes ellen. You can't always see the larvae, but oil kills them Yes, and oil kills my flowers. You know, there's a fine of 10 dollars for anyone who leaves any water standing in the open Oh, well, my father's an official of the canal so that doesn't apply to me They find the president of panamara last week. They're even oiling the holy water response from the cathedral We're getting better cooperation from the panamanians and we are from our own government Oh, bob, you're so solemn about it. You've never seen a man die of yellow jack-o-lan Oh, that's all over I look at it here in empire a settlement built by the army It's clean. It's sanitary. There's no yellow jack here. You might give our oil spray some credit Well, if you're going to be disagreeable about my flowers again, I'll Well, anyway, it was clean water the sega maya mosquito breeds in clean water. What's more, she likes places where people live Rather a social little beast. You see and that's why we concentrate our oil in the residential areas I see you did come on an official visit captain blake You know really tom candler is much more careful. Oh All right, I suppose you're seeing a lot of tom candler these days Yes, he's here now He's going to take me to the dance at the office of clubs. Oh, uh, yes, i'm here Ellen, what's the phone number for medical headquarters? I can't seem to raise anyone anything I can do candler. Oh, hello blake Yes, yes, I wish you'd come in and take a look at helens father But what's the matter? Where is he in the living room? He's been complaining all afternoon about his head dizzy tired muscles hot. Yes. Oh, what is it? Well, I don't know yet. Oh, bob. What do you think? I'll tell you when I see him there. Where is he here? He wasn't here We've fallen Take it easy. Helen. He's fainted. He's perhaps candler. You get the more that's right away Helen get dr. Gorges on the phone. I'd like to speak to him. Oh, yes, bob. It was Here's the water. Oh, thanks major Major try now just to swallow That's all Here stand up help me put him up on the sofa. We just like what's the trouble? Well, I I want dr. Gorges diagnosis. I don't want Helen to take my word for it He's got every symptom of yellow jack yellow jack That's a loud Excuse me, hand here. We're not serious. You don't want me to touch him. Why yellow jack isn't contagious So you say but you don't know why I've handled hundreds of cases and been with them nice and Thanks, you're a doctor. Are you going to help me? I'm just down here. You can't ask me to touch a man with yellow fever Yellow jack Keep away from him. Helen don't touch him. Get out of here. You Get all right, Helen. We'll take him Weeks and weeks of devoted care and medical skills Finally pulled major gray through the terrible illness He was sent home to washington and it was over a year before he was able to return to panama I'm just to see what progress has been made on the canal He and his daughter stand on empire hills above the great calabra hut watching the afternoon blasting Major gray Oh god, you old guy. Oh, hello major. I'm sorry. I couldn't get off to meet you to vote But I got here just as soon as I could. I was so glad this is your house kind of garden Oh, he's working hard as usual He'd hope to meet you too before gorgas still have his trouble Well, I'm afraid so major. He's still grumbling about insufficient supplies I'd hope when the president appointed colonel gotel's head of the commission with gorgas himself on the board Things would be different. Oh, they are better, but Well, colonel gotel is an engineer first Oh, I beg your pardon sir. It slipped out. Oh, I don't blame you bob I was as bad as any of them. I had to be convinced myself and it took a pretty hard lesson to do it Well, I don't blame colonel ghostel though He's a marvel for speed and efficiency when he arrived the doctor had the mosquitoes pretty well licked When the doctor goes after anything, you know, he sticks to it Yes, I do know it I overheard him arguing with colonel ghostel a few days before I came away And colonel said Do you know gorgas that every mosquito that you kill cost the government 10 dollars? And the doctor sort of smiled and answered I just think if one of those 10 dollar mosquitoes should buy two colonel What a loss that would be to the country Thanks to you I'm quite myself again. Don't let him work too hard my dear now. He's back in harness. Don't worry. I won't Colonel gorgas a I'm not a sentimentalist. I don't know how to express myself exactly But I wish the world could be told that the panamoc canal would never be finished if it hadn't been for you nonsense What does it matter what the world thinks about it as long as it's done? This honor enough for us all in knowing We did what we were supposed to do the panamoc canal was formally opened in 1915 Its speedy completion knew largely to the perseverance of the man who fought and conquered a deadly giraffe Gorgas fame spread to other countries. He was offered a post by the british government Where he again waged a winning fight against disease it is july 1920 Far from st. Paul's to people Two men an american and an ingressman Are watching a solemn perfection as it winds its way up lutz gate hill There's always something impressive about one of your military funerals Must be someone as important as it has to her. They don't turn out a regimen, but a nobody A rider is forced following the gun carriage always gets weak So look Look the stars have stripes over the customers. Oh must be some pretty well-known countrymen of yours For our government to give him a good use like this. I'll ask about it. Oh officer officer Yes Do you know whose funeral this is? general gorgas Formerly surgeon general the united states army. Oh, yes. Arthur retired. He helped us clean up south africa He came over to McTidal Of course he refused. He did sir He can't stop us giving him a funeral in st. Paul's alongside willington and melton They'll take him back home to a letter They may write a letter But he don't belong to you alone He was a soldier of the world The highest kind of doctor He belongs to us all than the highest self men who through self-sacrifice and devotion to ideals Dedicated their lives so that the world might know greater happiness Through these two unselfish doctors cropper long and william gorgas who are glorious examples of their profession We salute the great medical fraternity ever in the vanguard of the cavalcade of america It is indeed true that all of us owe a debt of gratitude to the men and women too Who through the ages as well as through our own country's history have devoted their lives to safeguarding the public health In this connection, it's interesting to note that the duPont company recently established a permanent institution The haskell laboratory at willmington delaware for the study of occupational diseases In an effort to make life in industrial america safer and happier for every worker As the results of this study come to light, they will be available to all people throughout the world Modern chemistry has done much within this present generation to develop many medicinal products Among them a number of excellent antiseptics Starting with salt the chemist makes sodium perbore Widely used in diseases of the mouth out of chemical processes that start with sulfur air and water There comes hydrogen peroxide an antiseptic familiar to everyone The chemistry of zinc produces a new antiseptic zinc peroxide In working with coal tar the chemist makes phenol which you may know by its more common name Carbolic acid and from cotton the chemist derives that most important diagnostic aid x-ray film DuPont is one of the leading chemical companies making these products Which are eventually used by people throughout the land to protect human life Incidentally, those of you who are in or near new york may see with your own eyes the wonderful strides that chemical science has made in recent years By visiting the chemical show all this week at grand central palace in new york The interesting exhibits there will give you a mighty good idea of the importance of chemical research So well expressed by the watchword of duPont chemists Better things for better living through chemistry It seems appropriate on this program dedicated to medical science That we remind you of the annual sale of christmas fields by the national tuberculosis association Those stamps pay for direct care and research not only in tuberculosis, but in other communicable diseases This splendid work should be supported by everyone. So remember by christmas fields Next Wednesday evening at this same time duPont will again present the cavalcade of america This is the columbia broadcasting system wabc new york


Quick tip when it's dirty heavy Strong rain like it is outside right now in my country today I want you to go out into the rain and just soak in it Just go into the same thing that you're so Resistant to you know because it heavy rain everybody's resist almost everybody is resistant to heavy rain You're like, you know, I don't want to get wet.  You know actually go towards it and we'll give you a cool lesson in life We're everything everything that you try to avoid usually comes back to hunt you and everything that you purposely try to go To it usually just disappears you can actually read a lot more about that in man searches for meaning Book by Victor Frankel and he calls it paradoxical intention He says for example that somebody who has a problem speaking correctly. He's like and he Doesn't want to do that anymore But when he tries to do that like for example, he wants to get you know some money for that So the officer stands and he checks him and he wants to you know try to do that intentionally so he's trying to do that and now he's actually speaking normal because when you try to do the thing that you resist It actually disappears, you know the resistance. It's what actually keeps it there It's called paradoxical intention read about it either in the book again Man searches for meaning by Dr. Victor Frankel or you can just search of the term Paradoxical intention and you're gonna find information about it So go do that go get in the rain if it's raining right now If not, just go do something that you resist take a cold shower or something Awesome. Thank you


Thank you everyone for coming. This is a collaboration between a student general in Yesen Toburg on our series introducing the Netherlands. The topic today is cycling culture and we have two speakers from the cycling institutes in Amsterdam that are going to tell us some information about cycling culture here in the Netherlands. Yeah, I would also like to thank Jarno from my academic committee for contacting the speakers and yeah that's it. If one of you Vikas or either Lindsay, whichever one of you can start. Good afternoon. I'm Vikas. I'm here along with my colleague Lindsay and we represent the Urban Cycling Institute that is the think tank in the University of Amsterdam which mostly we do the policy advocacy and research on the cycling in Amsterdam as well as sometimes we also like work with some other government other nations who wants to improve their biking infrastructure and I'm glad to be here today. Yeah, so me I'll be just explaining the brief about how the cycling culture how is the how we like Netherlands is seen as one of the cycling heaven in on the earth so like they have the best biking culture like highest motor share in the biking infrastructure so I'll be just trying to understand like make you understand how we came came here till now. All of you are Dutch or like are you from like any of you from the like other country? Okay cool because like just to give a brief about where I come from so I come from India and this is how our streets looks like so you can see so streets are definitely wider but you don't see a space in it at all and you can't even see the any biker there you can see the lot of their two-wheelers so basically we are the motorized two-wheelers but we don't have like a lot of bikes in there and and the biggest cultural difference that I realized when I came in here is how we look down upon the bikers so so basically when I was back in India I last time I rode a cycle was when I was 16 years old and now I'm almost 30 so so basically we only ride a bike when we are a kid and after like when we go go to high school we never touch the bike somehow but when I moved in here I was surprised or pleasantly surprised to see these things so that was kind of a lockdown when I moved in so streets are like mostly empty and I was so fascinated to see the empty streets streets dedicated to the bikers and especially this this street image on the left so that's tram and the bike path so they you can see so they got the like a green green grass on the track so that initially I could not understand why they are wasting the road space because they could use this the same space but later on I understood like why why it's like they got green space or the this thing and as my stay was as I was like a as days went by I realized so its bike is not only about like for one like it it's a culture it's you know it's like everyone uses the bike so for example when I look back and when I compare I see only bike bike is used by the kids and the people who cannot afford the public transport or they cannot spend money on the transportation so they use the bike and that was very surprising thing for me and I could never imagine our city square or some of the like a central space in the city would look like this and that was a very big surprise for me then then this this was since I I'm working on the mobility you know mobility my sorry I forgot to tell you so I'm doing a PhD and then my I'm working on the mobility innovations and certainly those were the shocks that I got and then I wanted to know more and when I started talking about it with my colleagues and other people and then I got the interesting answers so like and and it was like biking was so normal here so no one was talking about it like it it's just like you you use it like as you use like other appliances like you use as your phone you know you just use it you you don't know what's going on so that's analogy that I was told like so biking for Dutch people is like water for the fish so you just you know use it you don't really think about it up what's happened okay I think I made the slide but anyway since it's here let's take a moment and think so let's do this exercise so say for example I got a friend who is completely blind and who cannot see what's going on in here but you have to help me explain that friend of mine that what this picture is about anyone what this picture is about what do you see whatever so so there is no wrong answer right so it's like this all answers I mean no every answer is right it is this about the perspective that how we look at the things right it's dangerous dangerous for whom for the deer uh-huh anyone else like there is no wrong wrong answer to it so road in the forest and animal is crossing yeah see all answers are right so there is no right or wrong answer so it's about the perspective that how we look at it so so when I was back in India so for me streets was always like a kind of a pipeline which facilitated the transportation from one place to other or from point A to point B so so that was the only purpose of street because I show the picture so you you can't really do anything like as as a like apart from being stuck in the traffic and somehow hope to go where you want to go you can't really do anything but the question is is the street is really about the only about the transportation or from just for the movement from one place to another or you know to facilitating the most efficient movement possible is it or street has other functions as well so if we go back so if you look at this street what do you see you see people uh I don't see I mean I don't think there is a car there's a cars yeah cars so yeah so you see so what this street is serving as so this street is not only serving as the most efficient pipeline to transport you from point A to point B but it also facilitating the other functions such as you see people standing there maybe people are selling something also you can walk you can interact with people I mean uh if you're from the small village or small city where you know like a lot of your neighbors so you always say for example if I'm walking in my village so half of the time I'm doing like this you know like I see the people I wave at them I interact with them so so what uh uh yeah uh so that used to be the function of the street but with the motorized motorized vehicle coming then streets started looking to look like this right and and this is the Amsterdam so and now it again looks like this so so what fascinates me here is so street used to look like this then they turn to be like this and then again then nowadays they look like this and then what drives that change so my my interest is or you know or the interesting thing here is like what drives this change what what makes this change happen so I'll just give you like a few see again this is again another street in the city of Amsterdam sorry I mean I my most of the knowledge is very limited to Amsterdam that's why that's why I would be talking more in terms of Amsterdam so this is also interesting thing about Amsterdam so when they were laying the metro line and this is called the numart area where they used to have this you see this is the open patch that used that was planned highway but later they they converted it into a more like a they just grabbed the plan of highway and then the now the this square the this same landscape looks like this so what so this change now you see the change like that that has happened over a period of time so so this pictures are shown you is like almost eight decades of the progress that how we how the Dutch public transportation has evolved evolved from more of a very open space where people could interact with and and stitches to serve like a lot of functions then moving back to the cars and then again coming back to bicycles then how this change has happened so first thing it's not the first thing but there are like a lot of contributing factors to it so one of the major factor is and that's I find that is really important especially from the experience that we understand is the people's movement like how people can force the changes that they deserve because if you go into the history and you you would find that these changes were not brought up by the municipality these were forced by the local people who wanted to change or make use of public spaces as it would suit them and not for the very few people who could own a motorized vehicle so one of the one of the driving factor for this thing was in the year 1972 so in 1960 late 1960s there was a oil crisis that shot up the gas prices that that means the driving the cars were was getting expensive and on the other hand simultaneously there was like a highest number of deaths that is like in in the year 1972 there were like 3600 deaths caused by the motorized vehicle and people were enraged by the fact that those street used to be like public spaces where everyone had the equal access but now the access was restricted and people were dying so out of those 3600 people most of them were children and then there was a huge movement by the local people it's called pardon my the Dutch pronunciation it's called kinder mode stop the kinder mode yeah so basically I'll translate in English so I mean sorry it's like a stop the children murder so basically they were seeing the cars or the motorized vehicle as the killing machines they they literally used to call them a killing machine yeah that's the one of the representational picture so so you see how this the change is so this is the people's participation or the citizen participation can make that change happen because like if you I mean so we get a lot of delegations from the other countries and and they they they they say I mean when we take them on the tour and and they are like you know you all what what you're saying you know it makes sense but our city is not Amsterdam because Amsterdam looks more like a historical city it looks very very well preserved and all but but what what matters is so this was not the case all the time infrastructure that we see now the convenience that we see now for the biking infrastructure is was not there always but that was like forced that that was the result of decades long fight of by the citizens this this is the kinder mode this the protest was in other places as well but center was in Amsterdam because they were like a lot of but but this is the 3600 people death was across another land not only in Amsterdam this was also this picture you see so in the last bottom last picture that's a John Lennon I hope you know this is this was rocks this rock star and he came here and you see like a bike in his bedroom so this there's one of the famous hotel in Amsterdam and so so you see so this change is how the citizens is influencing the change they deserve okay sorry I forgot to ask you about your background but that's more of a technical planning thing I'll just skip that one for now also that's really important especially for me why this this the you know the biking is like a fish in the water for the Dutch people because not only people make it as a part of life or the culture but also the influential people make sure that they're seen as seen on the bike so this is the Prime Minister of Netherlands so what that does is that give the strong message that as I told you initially that the in India we look down upon the cyclist as they are like a poor people who cannot afford any other medium of transportation and that's why they use but what this does is that the influential people driving that the for example John Lennon the Prime Minister of or the other other influential people riding a bike makes a point that it's it's not only about the status but it's about the culture that we develop and and it's about the sustainability Lins is going to talk about this one but I had this thing so I would like to conclude here with this question here so you see the two news articles here one is says the Amsterdam becomes the cycling capital of the world on the other hand the car ownership in the Netherlands is increasing to the highest level and that's the interesting thing so so in in India when when we talk about the biking so usually we don't talk about the positive sides of the biking but this is what goes as a meme around you know people talk about it so basically they argue that the biking is not healthy so now here I would like to leave you with these two questions oh sorry oh I can't go back with this one yeah so now what's going wrong so what what is basically happening though the cycling is the answer sorry Netherlands is considered as the cycling heaven still we see the rise in the car ownership and also this this this kind of like a growth mindset where we we want to have the higher and higher higher economic growth so that economy prospers and that's the false assumption yeah so what what this demands is is like we we need more like interdisciplinary people people coming from a very diverse disciplinary background to contribute to the cycling research so that you we can put more holistic understanding of the biking because the till now the entire transportation domain is looked as a pipeline and more of a very like a through the eyes of the traffic engineers and is developed by the eyes of the traffic engineers and yeah from here Lindsay will take over and thank you for the attention and we'll take the questions after Lindsay's presentation thank you so we've had Vika's talk a little bit about cycling history in the Netherlands how the Netherlands actually became the sort of Nirvana of cycling as it's often described but I'm kind of here to ruin everything because my PhD goes over looking at Dutch cycling culture from a bit of a critical perspective so I think first up the best place for cycling in the world yes it is but does that mean it's good which means it's good right is it though I hate to ruin everything but yes it's good relative to ever else in the world but on a relative scale you know that's saying okay you come from Dallas Texas you come from New York City where there's barely any cycle lanes somewhere like Amsterdam is going to look like paradise because you have protected bike lanes because you do have a high modal share but when it comes to being objectively good you know cycling is still a minority modal share in the Netherlands and cars still remain dominant in both traffic design and engineering and also to an extent in public policy although lease cycling has a seat at the table which invigorate very great many other countries such as the UK where I'm from it doesn't so at the moment the Netherlands is approximately tied with Denmark for the highest rates of cycling in the world significant investment occurs annually both in construction of new cycling infrastructure like the underwater bike parks just over in Amsterdam as well as expansion and maintenance of existing cycle infrastructure modal shares approximately 25 percent of all total trips as a total of trips not necessarily of distance and that's one of the highest shares in the world about tied with Denmark repeat myself but what's the problem this isn't an exhaustive list but while cycling rates in the Netherlands are indeed the highest in the world cycling does still remain a minority modal share secondly Dutch law mandates the use of cycle paths wherever they're available which means road riding is illegal which means if your cycling infrastructure is inadequate legally you have to use it no matter how busy no matter how congested it is when you've got cars to one side which are using up the majority of the road space and what this also means the fact that the Netherlands does have extensive cycle infrastructure is in conscious places like Germany the UK and even some place in America there exists relatively little pro cycling advocacy at least nothing that might be considered radical due to almost a sense of complacency particularly from the government which is we are the cycling nation we export our expertise worldwide what do we have to do better not really a huge deal so it's like because cycling is enabled even though it's not necessarily prioritized and planning there's sort of a lack of the radical pressure that there was throughout the 1970s and the 1980s to actually improve and change things so we've got to get on to why that is and this graph here is from one of the uh from one of the studies which I reference extensively at master's level which was John Putcher and Ralph Bruehler's making cycling irresistible from 2008 now what this shows is average daily kilometers cycle relative to 1952 with 1952 being the peak at 100 and then you've got the scale going down to 2008 so this isn't completely up to date but the picture is more or less the same with the exception of the COVID pandemic from which an awful lot of the research hasn't actually come out yet so what we can see here is in 1952 if cycling was at 100 percent of its historical model share at the idea of of cycling rates in the Netherlands it got down to a little bit less than 40 percent of that peak and in all of the advocacy all of the campaign stopped the kind of mod all the investments in cycling structure has only managed to get it up to about 50 percent again of its historic peak and it stayed more or less level there for the last 40 years at this point so the big question the big headline question why is this well in a word cars but I think we should probably drill down to that a little bit more when it comes to cycling oops that's a bit back no no peace sorry I haven't done a presentation a while so as I mentioned earlier while the Netherlands does have a relatively high model share of cycling at 25 world leading the model share of cars is approximately double this is an enormous amount of investment goes into highways goes into car parking and I can speak to this personally by the fact that I work as a side job as a feats courier in Amsterdam and while Amsterdam does have cycling structure and cycling is very much enabled by the design of the city by the design of the streets whenever you're using a bike which sort of doesn't fit into the mold of a typical Dutch bike which is you know a spads feed so you've got the coast break you've got you know carrying racks planners of a specific size you kind of realize what the limitations of this infrastructure are for instance if you have a back feeds there's a there's only a few places you're actually allowed to park that because there's about a model of feeds it isn't really included in the thought of like well what kind of cycles you need to accommodate for when it comes to cycle parking so we ended with sort of shortcomings that in a way are sort of rendered invisible by the fact that cycling does have a place of somewhat prestige relative to other countries in the Netherlands but there's still at the end of the day a fair amount that's being obscured by the fact that the Netherlands is a cycling country but it used to be much more of one and this is sort of a topic of interest to me because when you're looking at how to develop a cycling country in the culture in the UK for instance Netherlands comes up constantly as a reference point it is the country which pretty much every other government of the other country points towards is order to say well this is the example we should be following this is the country which has got it right and credit regret it is due you know you look at this even on just relative terms the rates of cycling in the Netherlands are double that of the UK in terms of distance cycle per person per day and cycling is approximately 2% of trips in the UK where it's 25% here so yes the Netherlands has got things right but that doesn't mean it's perfect and one of the biggest concerns to me one of the biggest aims that I'm in terms of research is well has the actual progress that the Netherlands has made and arresting the client of cycling and making it part of the transport infrastructure has that actually prevented the rates of cycling from growing and reaching back to their historic highs which particularly in light of climate change and need to drive a mobility shift away from cars towards cycling again because the bike is a very efficient machine it takes about 1% the resource to make a bike as it does a car that's become more important than ever so this sort of brings me to the next point which is where else is looking at building a cycling culture and where else is perhaps taking a bit of a different tax which the Netherlands historically has so excuse me if we do a little bit of rearranging of the Dutch flag not like that I'm talking about cycling not farmers France so Paris in France at the moment has had a new government come in over the last few years which has made a very big point to prioritize cycling over car travel and while there are some streets in Amsterdam which historically were open to cars and no longer are whenever you travel around the center of Amsterdam particularly in the sort of work I do as a feed scroll you see an awful lot of streets which are historic cobblestone narrow streets on which cars are still allowed what they're doing in Paris is actually completely blocking off roads cars entirely they're not building dedicated cycle infrastructure they're saying this road which used to be for cars is now just for bikes emergency access yes that's fine but if you have a car nope you're not allowed and that's sort of a bit of an interesting difference in approach versus the Netherlands where they approach here has been we're going to have this road four lanes for instance you look at somewhere like you look at somewhere like the road the university of Amsterdam sits on you've got four lanes of cars and then you've got two small bike paths either side and what that says to me is that cycling has in a way become subsumed to this mindset of traffic engineering it's just one modal shared needs to be accommodated for it's got to have its place but then cars have got to have their space and that means that the share that the modal share of cycling is sort of frozen in place by the design of the infrastructure itself because you've got all that road space which cars are allowed to use bikes legally prohibited from doing so and if you don't fit on the bike path if you've got an electric bike you've got a backfeet if you've got much other than you know the stad speed standard which the infrastructure is designed for you haven't really got a place so Paris is a very interesting example to me because they are looking at what the Dutch have done historically what the Dutch government has done in relation to cycling and saying well how do we improve on that how do we drive a mobility transition from nothing to you know making a relatively car-free city the 50-minute city as it frequently comes up has and it's interesting how starting from relatively little as Paris has has actually driven a more radical approach than we're currently seeing in the Netherlands which is very much just sort of like an evolution on what already exists so my point of interest at this point is well how do we change that you know how do we get back to the historic share of cycling that was seen in the Netherlands at its peak in 952 from where we've been for the last 40 years which is this plateau of cycling rates with modal share barely growing with distances remaining relatively the same and as I say we've got the climate change to deal with cars are a major driver of that not just in direct use but in their manufacturing disposal and the entire life cycle chain and as much as it's made about electric cars they still consume an awful lot of energy they serve enormous embedded energy so they're not a solution either so in my mind we have to get cycling back up to that historic modal share we need to displace the car not just accommodate it along with cycling into a scheme of transport we've got to become in a way a cycling nation before a car nation whereas at the moment as much as the Netherlands is friendly towards bike it's also friendly towards cars a little bit too much if you ask me so that sort of is what I just talked about but this is the point I kind of want to leave with which is this last bottom point here the first tarmac roads were built under pressure from cycling groups they were not built to accommodate cars there's a wonderful book out there literally called roads are not built for cars going over this but this infrastructure this road infrastructure which is now dominated by cars was originally designed and built for bikes so I think it's about time we start looking at how to take it back and that's me


All right. Good morning everyone. Come on. All right. Exactly. All right. So 30 minutes modeling concurrency in Ruby obviously kind of an ambitious topic and we just spent half an hour talking about one specific aspect of this. So there's no way I'm going to cover this entire topic. So what I want to do is actually tell you a little bit of a story of my own exploration of this topic because concurrency is something that I've been interested in for a long time. You know, I'm going back to university. Some of the courses I enjoyed the most were around us and of course what I discovered was I learned all kinds of stuff about semaphors, locks, mutixes. I did my detection algorithms for deadlocks and all the rest and then I went out into the industry and realized that nobody gave a damn about any of those things and in fact it was something very different. So of course, you know, I picked up a few books and you know, if you do a quick Amazon search you'll find that there's probably over a million pages that have been written on this topic. So clearly this is something that a lot of people care about but nonetheless a lot of them are kind of the same flavor, right? You can find a book on concurrency for virtually any language and you know, I picked up a few and I found that, you know, we have books on patterns, we have books on anti-patterns, we have books for just about anything and everything on concurrency but nonetheless when people think concurrency the first thing that comes to mind is threads. Of course, it's not only threads, no, it's all about events.  Well, not quite, right? So it turns out and you know, I spent a lot of time pouring gasoline on this discussion as well, it's a religious debate. Turns out you actually need both and to understand why you need both, we actually, once again, need to take a step back and look at the hardware. And this is something I didn't appreciate until I actually, you know, put all of the software stuff aside and looked at the hardware. So first of all, here's a very simple architecture of a core, CPU core today, right? So you have this compute unit, you have a couple of caches and we'll see why we need those caches and then there's RAM devices and other IO devices attached to this thing. So today on most architectures, you know, these are rough numbers, it takes about 100 nanoseconds to go from the core to the RAM. So if you're trying to pull down an instruction to execute in your code, that'll take 100 nanoseconds. That's pretty quick, but not quick enough. So the reason we started adding all of these caches and in fact if you get really into this topic, you'll find that there's L1 caches, L2, L3 some even have L4 caches. There are different architectures for how those caches are constructed and how the data is shared between multiple cores and all the rest. So to go to L2, it takes us 7 nanoseconds, which is an order of magnitude or several orders of magnitude better than going to RAM. Going to L1 is about half a nanosecond, right? So that's pretty good. Now let's do some math. You take a run of the mill to give her CPU today and that one clock cycle is about half a nanosecond. So that's pretty good. That means that we can actually fetch the next instruction from the L1 cache in about one operation. But the converse of that is anytime you have to go to RAM, un-often times you do, you're wasting 2,000 CPU cycles. So to combat this, the hardware industry for the last, I'm going to say 30, 40, if not more years, have been inventing all kinds of crazy stuff that we don't even think about when we write software. There is prefetching, there is branch prediction, pipelining, hyperthreading, speculative execution, all kinds of crazy stuff that we don't really even have to think about. That all happens under the hood. And if you're interested in the sort of topic, follow the Bitly link at the bottom. So here's a very interesting example that I came across recently. This is an example from a presentation that was given by Joshua Block. He's one of the lead developers in a whole bunch of JVM libraries. He gave this example where which of these code blocks do you think is faster, will execute faster, one or two? So one and two? Well, your intuition is correct, but it turns out that we actually don't know. And the reason we don't know is because both the JVM and the hardware is crazy enough such that oftentimes those are actually the same today. But in some cases, for example, in the first case, when the operations one and two are not both true, it's significantly slower. So what happens here is once again if we rewind a little bit, we have branch prediction, speculative execution, and all the rest. What happens is the code, the runtime, will actually execute both of the branches in parallel at the same time, and you actually don't get any benefit. So while our intuition says that the second one should be faster, we actually don't know. So his message was we have to measure. And in order to measure performance today, you actually have to do statistical tests. You don't just run your code once, you actually have to run it 10 times or 100 times, build a histogram, look at the histogram, get your error bars and everything. Only then can you make some sort of prediction. And that also depends on your hardware, it depends on your JVM version and all the rest. So basically the answer is we don't know. So coming back, what this means is we have hardware parallelism, right? That's just embedded in the hardware. And in order to make our software run faster, the hardware has to do all kinds of magic tricks to prefetch instructions, to execute it in parallel and do all these things. And because of that, we actually have software parallelism. Because of that, we have processes, threads and events. And I'm not saying those are exclusive or in fact even very different. They're all basically the same thing. How you schedule events, what your event detection algorithm is, or if you have a runtime loop or something else is a whole different topic entirely. And I'm not going to go into that. What I think is interesting though is because we have the software parallelism, what we've done is we've basically invented a whole bunch of libraries like p-threads, which we've mentioned already, ePoll, KQ and all the rest. And we just bolted on all of these things to our operating systems, right? So these concepts are not specific to any particular language. They're just there as part of the operating system.  So it is not even the case that when you design the language, you actually actively think about concurrency. These things are basically an afterthought where we just say, oh yeah, the operating system gives me all this stuff, so here bind to this library and off we go.  So recently I've been making my way through this book by Bruce Tate. And anybody here read this book? Highly recommended, very, very good book. Within this book there's actually a chapter, one of the seven languages is Ruby. And one of the questions that the author asks Matt in the book is, if you could go back in time, what is the one thing that you would change about the language? And his answer was, well, I would remove the thread and maybe add actors or some other more advanced concurrency features. And of course the question that you should be asking yourself now is, what the hell is an advanced concurrency feature? Because certainly when I was taught concurrency, nobody even mentioned actor models or anything like that. We were taught threads and all the rest. So what he's implying though is, sure we have pthreads, epo, kq and all the rest, but there's something missing, there's something in between that we have skipped. And that's that advanced concurrency model. And it turns out there's actually quite a few of these guys, right?  In fact I could fill this entire slide. There is Dataflow, Petronet, actor models and all the rest. Follow that link at the bottom there. There's a very good collection of Wikipedia articles around this topic. In the interest of time I'm going to focus on just two. One of them you guys are probably fairly familiar with at this point. The actor model has been kind of going around and a lot of people have been playing with it. And then there's the Pi Calculus and CSP, which I find very interesting. Just because it's actually very similar to the actor model, but also significantly different. So before we get into the specifics, I think the value of a good tool or a model is first in what it enables us to do. But also one thing that's often overlooked is the constraints that a model will impose on us. So an example of that is a good model will give us something that we can't do before. So maybe it gives us a way to express something. So maybe that's a language feature. It's such that we can cleanly express it. It can dictate a structure. So think about Rails, for example.  But then later, once you're one year into development cycle, you're like, okay, it actually made sense. Like now I know where to put this stuff and I don't have to re-architect my structure. Whether you actually like that pattern or not is a whole different conversation, but that's an example of what a model can give you. And likewise, it can dictate a style. So for example, functional programming will dictate a style and that has its benefits and it has its downsides. So those are the things that a model can enable. But likewise, a model can disallow certain behaviors. So for example, it can impose restrictions on the language such that you just cannot make a certain type of mistake. And the best thing about that is somebody can think of what that is embedded into the language and then we don't even have to think about it because the language will just naturally not permit us to make that mistake. It can implicitly make the right choice. So the next time you choose your concurrency framework, it may be as simple as the right set of defaults. And then finally, as we already mentioned, it can eliminate a whole class of errors. So the actor model, how many people here are familiar with the actor model or know what it means? Okay, so maybe a half. The actor model and actually a lot of these concurrency models date back to the early 70s, which is in itself very interesting to me because there's been very little conversation, it seems, around this stuff outside of the academic community. It's only now that this stuff is making it into software development as we know it in a practical sense. So one of the first papers that was published was in 1973 around just the proposal, the idea around the actor model. And just to be clear, this is not an API or a programming model at that point. It's basically a language and a sort of, it's mathematical notation that they were after to create a process calculator, as they called it, where you could prove certain things, stuff like that this program will execute, it will finish, it won't deadlock, it will give you certain behaviors. All the things that we complain about when we say it's really hard to test threading or this concurrency code, they were after formal proofs and ways to develop a language that will allow us to actually express all of this stuff. Later in 1975, we had the first kind of practical application where somebody took the mathematical notation and put it into something that smelled like something you could write code for. And then since then there's been literally dozens and dozens of papers around this stuff. Some of the actual languages, the one that most of us are familiar with is probably Erlang. So that dates back to 1986. It wasn't officially released, kind of the first public release since in 1993, but it wasn't until 2003 that we even really heard about it. There is Scala, there is a whole bunch of frameworks that have been built with this model. So Kulim is a good example. That's on the JVM, it's not a language, it's just a framework that you add on top of the JVM. So needless to say, this has been around for a while. And the basic concept is very simple. I'm not going to bore you with the mathematical notation, but the practical aspect of it is there's two things. Every process has a name, every process has a mailbox, and you communicate by messages. And when I say process, that's a very ambiguous word. That could be a physical process in your machine, that could be a thread, that could be a different machine entirely. So effectively you have different things that have names and you communicate with messages. So what does that give us? Well, it gives us a message-centric view. It allows us communication between all kinds of entities, whatever that may be. And as you can see, it's a very natural fit for distributed programming. You can take this model and scale it out with one machine and between multiple machines. There's nothing in this model that prohibits us from doing so, which in itself is very interesting. That's not something you can do with threads and shared memory by itself. So that's a good example of what a good model can give us. It puts certain limitations, a message-centric view, but it gives us other things in the process. Constraints, no side effects. So we're not sharing variables here. We're passing variables. There's no race conditions. We don't need locks anymore. There's no semaphores. There's never a case where we're sharing a pointer to the same thing. So forget it. We don't need that stuff anymore. So that's the actor model. The CSP model is a little bit older. It dates back to 1978, and the first kind of seminal paper on this was the Communicating Sequential Process by Tony Hoare. Later, this evolved into a whole family, I should say, of other related systems, and the language adoption actually lagged even that of the actor model. So there's been limbo. Most recently, it's Go. So Google's Go language. How many people here have played with Go? A few. Okay, that's actually more than I thought it would be. So Go introduces CSP back, and I'm going to say this is the only language that actually has CSP built in that's actually interesting to play with today. So what's the difference between the actor model and CSP? Well, unlike the actor model, processes are anonymous. So instead of giving processes names, we will actually give the communication channel a name, and you communicate over these named channels. So the best analogy you can think of is a Unix pipe, where you create something on the system, and then you can shove stuff into it. You have a name for it. You can shove stuff into it, and you can get stuff out of it. Really, that is the only difference between the actor model and the CSP, but it yields very different results. So likewise, message-centric view. No shared variables. Allows communication between threads, processes, and machines. The distributed case is a little bit trickier, because now you have this pipe that's sitting in your machine. You have to somehow expose it to a different machine, but we can think of a way to do that. But nonetheless, distributed programming is a pretty natural fit. Once again, no side effects, no race conditions, no semaphores, and all the rest. So very similar, but also very different. So what is the advantage, or what is the feature of this model? Because we have, so I'm calling that arrow a named channel. So let's call it A, and we have multiple processes. Because we have A, we can have multiple processes just all pushed into the same pipe. We don't need to know who to send anything to. All we need to know is, where is the destination that I should be sending my messages to? So you could have 10 workers all pushing into the same pipe and not worry about who's on the other side receiving this data. You could do some crazy stuff, like, well, imagine if the channel itself, what if you could send a different channel over the channel? Then I could create this weird scenario where originally we had the blue process talking to the orange process, but then we have this guy at the bottom, and then the blue process sends the channel through which it's communicating with the orange guy to the guy at the bottom and says, hey, I'm talking to this guy, I'm talking to this pipe, take that pipe and talk to it as well. So we can actually delegate work to a different process. Or you can create a chain. So I can do the same thing and say, hey, the orange process, do something, and then talk to this other guy on the other end. So you can create very interesting flows of data using this model. So to explore this, I was playing with Go, I was looking at the source code, trying to really wrap my head around what does this actually mean? Because I find that, at least personally, until I actually write some code, I really don't get it. And until I write a blog post, I really don't get it. So I started basically porting the Go concurrency model onto Ruby. So you can play with this yourself, gem install agent, let's take a look at an example. So this is the hello world of concurrency world, right? It's the producer consumer example. What am I doing here? I'm declaring a named channel, right? I'm going to call it increment or incur here. I'm going to give it a type. So channels in Go are typed channels. You have to declare what you're going to be sending over this channel. So I'm going to be sending integers. Here's where the magic happens. You have this special keyword called Go, which in the language Go starts what's called a Go routine. In Ruby, in this case, what it actually does is it takes the code block that I'm specifying, and it actually starts a background thread. Now, you don't actually see any of the threading or the synchronization code because you don't need to, right? So the code that I'm implementing here will take care of all of that for you. You don't even have to think about it. But effectively, what it does is you, I'm defining a new keyword in the language called Go. Go will take a channel, and then we will, inside of this block, we will loop forever and just continue sending messages into this channel, right? Incrementing our number every single time. And then we're going to consume the results. So to consume the results we simply call receive on the channel, and that's all the risk to it. There is two threads running here. One is producing numbers, one is consuming numbers. There's no synchronization, there's nothing else. Very clean, very simple. And actually even more compact than probably anything you can write with threads in Ruby, right? So let's take a look at a harder but much more interesting example. So I'm going to implement something that resembles a multi-threaded web server. So first, I'm going to declare a new struct. It's going to be a request. The reason I need to do that is the channels are typed, so I'm going to transport request types over my channel, right? And the request will contain an argument and a resulting channel. Then I'm going to declare a new channel, right? I'm going to call it client requests. I'm declaring the type, and I'm actually saying that the size of the channel should be two. What that means is by default the channels are unbuffered. So that means you can send one message and then if you call receive on that channel it'll block until there's a message. When I'm declaring a size I'm saying you can push up to this many messages before you will block. We'll see why that's interesting in a second. Then I'm going to declare a worker or create a worker process, right? So all I'm doing here is just declaring a new proc. So I'm using regular Ruby, which will loop forever. It'll take a request object and call receive on it. So as you can guess, that's a channel. That's going to be a channel. Basically we have a worker that's going to sit there and listen and receive. It'll sleep for one second after receiving something and then it'll push a message back into the resulting channel where it'll print its current time, take the argument and add one to it. Pretty simple stuff. So sleep, increment, and add a timestamp. Then I'm going to start two of these guys. So I'm just using some Ruby syntax trigger here and instead of doing go with two different blocks I'm just capturing the block and passing it in which is why I did the proc at the top. So I'm starting two of these guys in parallel. So now we have two threads running in the background. Now I'm going to actually create two incoming requests. So here I'm kind of simulating this by myself but you could easily picture how you would attach a network socket to this and just create these things dynamically. So there's a request one and request two. The first one, the argument is one. The second one, the argument is two. And the second argument to a request object is a channel, a new channel over which we'll get back the result. And the type of that channel is going to be string. Then what I do is I take my client request channel, which is the channel on which the workers are listening. Both of them right now, they're running in the background and they have both called receive on this channel. So they're both waiting for a message. All I'm doing here is I'm taking the two requests that I've created and just shoving them into that queue. And then I call receive, right? And what happens here is because we have the client request channel, which is of size two, the moment I push both of these requests into this queue, both workers pick up the message, sleep for one second, and then print it out. And not surprisingly, if you look at the timestamps that get returned, we see that they both execute at the same time when we get our results back, which is two and three. So what we've done here is we have a main loop, we have two workers, and we have a way to receive messages in a thread safe way. And there's not a single synchronization point in this code, right? Never in here did I ever declare a join or a wait or I need to guard for some shared state or anything like that. Much simpler to write, much simpler to reason about, and much easier to test, in fact, because you can detect a lot of these cases. The language does not, or this model just does not permit you to make certain types of mistakes.  But once I have, it made writing these things very, very easy. So of course the question now is, well, you know, Ruby, so what do we do about all this stuff? We have many different kinds of rubies. We have JRuby, which doesn't have a global interpreter lock. We have JVM threads, which is great. There's in fact a lot of existing work that's been done in a JVM that's independent of Ruby. There's frameworks like ACCA and Kiliman and others, which have already implemented the actor model on top of the JVM. So in fact, there has been some work for how do we expose those primitives within JRuby, and I think that's really interesting. I'm yet to see something that is easy to use in kind of a Ruby idiomatic way right now in order to use something like any one of those libraries. You still have to go through a page worth of boiler code Java to get something up and running, which just feels plain wrong. But I think that's a very promising area to explore. So I think JRuby is a great platform to experiment with some of these ideas, these advanced concurrency models. Rubinius is also an interesting one because there is work being done on the hydro branch to remove the global interpreter lock. Rubinius actually has built-in channel and actor types. So in fact, a lot of the internals of the Rubinius are built around this channel idea. I don't have hands-on experience with it, but it seems like this would be a very natural fit. And in fact, lately Rubinius has been a lot of talk about using Rubinius for building other languages on top. So I think this is a very fertile ground for experimenting with these ideas. And maybe it's an extension to Rubinius. Maybe it's a new language entirely. I don't know. That's up to you guys. MacRuby has Grand Central Dispatch. I kind of see that as halfway there. It makes thread scheduling and all that stuff a little bit easier, but it doesn't expose an actual better concurrency model. So it simplifies it somewhat, but it's not the answer. But I do think that at a certain point we will see MacRuby in iOS. So maybe there's a reason to invest into that ecosystem as well. And I think you could take Grand Central Dispatch and build a higher-level API to do something really interesting. And unfortunately, finally, I think the MRI Ruby is kind of the big loser in this race right now because it has a global interpreter lock. There is some talk about the MVM, which is a multi-VM implementation, but that's, as far as I understand, barely at the research phase in Tokyo University. I'm not sure that there's been real work done in terms of getting it into the language and getting it into the language would be a whole other proposition. I have a feeling that's just not going to happen anytime soon. Maybe there's room for libraries like Agent, like the one I've built. Do I use Agent in production today? No, I'm not. Do I think it's actually feasible to use it? I think so. But nonetheless, you wouldn't get the benefits of the multi-core. You would get the benefits of much cleaner code that is testable code and sane code, but you wouldn't get the multi-core aspect of it. So that's not as good. But of course, I don't think we should limit ourselves to Ruby. I think in order to really understand what these advanced concurrency models are, I would encourage everybody to actually go beyond Ruby at this point and explore some other possibilities. So, you know, I've had a lot of fun working with these languages. I.O. is a fun language. It takes, you know, it's a weekend project for you guys, honestly, because it's a prototype-based language, very similar to, you know, if you've done JavaScript, you're familiar with that concept. You can read the entire documentation in about two hours. It has some very interesting primitives built in around the actor model, so I would encourage you guys to play with it. There is Go, of course, which some of you have already picked up. I would encourage you to look at Go routines and just work through the examples there. In fact, I've taken the examples from Go, put them into Agent, and basically re-implemented all of them in Ruby as well. That was my way of learning all of those concepts. So you can pull up the repo. You can look at the Go code, the Ruby code, side by side, and just, you know, play with it. Look under the hood. Look how it's implemented. Scala, you know, very popular nowadays. Clojure has some interesting concepts, you know, functional language, transactional memory, all of these kinds of things. So I think, you know, we, before we make any sort of advances in the Ruby ecosystem, we really need to understand what's happening elsewhere, because there's trade-offs to every model. You need to find out what works for you first. So in summary, there's hardware parallelism. It's not about threads versus events. And as I've said, I've put enough gasoline on that topic myself. So it's not one or the other. You need all of them. You need P-threads, you need E-paul, you need KQ, and all the rest. But what we're missing right now is that extra tier, which is the actor model, CSP, and all the rest. And I think that's where we should invest our time. I don't think threads and events are the right API to build concurrent programs in the future. I think it exposes a language that is air-prone, that is easy to screw up in, and easy to maim yourself on, basically. So we need something better. Now, there's a couple of blog posts that I've put up around this topic as I've been exploring this stuff. I would really encourage you guys to go out and follow some of the links in this presentation. I think it's a very important topic for us moving forward. And then finally, do take a look at agent, play with it, see if it makes sense. The specs are actually... There's examples embedded, and I would encourage you to look at the specs, because they actually talk about all the... I specifically specify all the behaviors that the GoRoutines should give you. And you can walk through those and wrap your head around what this all means. So that's it. I don't know if I have time for questions. A few minutes. If you have shared resources, it seems like the Go still wouldn't solve your problem. You still need to have mutexes, semaphores. So the question is, if you have shared resources, Go wouldn't solve that problem, because you still need to share them. Right. So the constraint that this model places on you is you communicate with messages. So instead of passing a pointer, there's never a point where two entities, whatever that entity is, a processor or a thread, the model basically disallows that two entities have access to the same resource at the same time. I mean, sure, you could probably create a synthetic scenario where you would try to do that, but that's kind of dangerous. Now, under the hood, I will tell you that Go is designed to be a systems language, so they actually biased it towards let's build a high-performance system that is within the same host, not for the distributed case. So what happens is when you pass a message, they don't necessarily pass a message, but they pass a reference, which is obviously faster. But basically, you're passing a reference or a process, so once you pass it to somebody else, you don't have it anymore. But that sort of abstraction is completely hidden from you. So sure, you can probably create scenarios where you still create deadlocks and all the rest, but it's just, I'm going to say, it's exponentially harder to do so. So the question is, I recommended seven languages in seven weeks. Are there any books specifically about concurrency? You know what? One of the first slides that I had had a whole array of different books, and honestly, I can say that I can't think of any one book that is specific about... I wish there was a book that talked about all these different models. I wish my university course actually mentioned the actor model or something beyond threads. That's just not the case. I think we're too focused on the hardware software parallelism. We're too focused on the P-threads and the E-pole and the KQ stuff. There's a ton of material around that. There's not enough material on the bottom layer, which is that advanced concurrency model. And I think the state-of-the-art research in that field right now is actually in the languages that are being invented at the moment. Go, IO, and a whole bunch of others. Closure and all the rest. So I think the best way to learn is to actually pick up some of the code samples and run them today. And I hope we'll fix that soon. I hope we'll get more resources about this. That's certainly my intent behind giving this talk, is to kind of open this topic up and encourage you guys to go out and play with this stuff. Is agent-optimized for... Is agent-optimized for anyone interpreter? It will run on... It runs on MRI. It runs on JRuby. It is able to take advantage of the No Global Interpreter Lock on JRuby. So there's actually a benchmark example in the repo that will run faster on JRuby because it can. It doesn't work today on MacRuby because their threading stuff is not implemented right. I basically just psych-fold MacRuby. So it actually exercises quite a few features. Rubinius, I haven't tested. But in principle, I'm not using anything that is specific to any one implementation. It's just using basic thread primitives underneath. So it should be able to run across all the platforms. That's certainly my intent. You said that it's blocking, but did you order to that? Yeah, I missed that. Sorry? You said that agent was blocking under over-circuit size. Oh, I said that agent was blocking after a certain size. Channels, right? So channels can be buffered or unbuffered. So when you declare a channel, you can say, this is the amount of messages you can receive. So you can keep up to, let's say, 50 messages in the queue. After you try to push the 51st message, it'll say, wait, hold on, stop. It'll pause that thread and keep it there. And the semantics of that depend completely on your application. By default, it has one message, but you can declare that to be something else. So for example, if you want to have a work queue with up to 10 workers, you would say, the size of my channel is going to be 10. That's how I control my concurrency. All right, thank you guys.


Design a Youth Exchange Activity Program. The programme of activities will form the basis of your exchange and will enable participants to explore the exchange's theme, whilst learning about each other's cultures. It will be the culmination of all your preparation and planning. Therefore, in the joint preparation sessions, you should research ideas for the programme. What are people interested in doing? Provide the partner groups with opportunities to give feedback on the proposed programme and include their proposals and changes. There are some pointers which should be implemented by the Exchange Activity Program. Allow time for getting to know one another, such as ice-breaking and group-building activities. Look at the possibility of holding group presentations to introduce each other and each other's cultures and countries. Ensure that all participants have time to become familiar with the local area. Organise some visits, which may be directly linked to the exchange theme or might be important sightseeing places. Timetable the project or theme work early in the day and allocate enough time to allow it to be completed by the end of the exchange. Give yourselves time to interact with each other and learn about working and living together. Program activities should allow participants to challenge one another, learn together, resolve conflicts and challenge prejudices. Allocate time to review the exchange experience regularly. This can be done in single or mixed nationality groups. Get involved in local community activities. You might also consider one programme day or evening with host families. It is essential to schedule a final evaluation meeting with all partners at the end of the exchange programme. Some tips to build a good youth exchange programme. Organise a well-balanced programme. Divide time between work, rest and play. Be aware of language limitations and ensure that communication is not hindered by language barriers. Where possible, participants should work in mixed nationality groups. Always have a plan B ready in case your original activity plan does not work or is dependent on weather conditions. Leaders need to set time aside to assess the day's activities, identify problem areas and discuss the following day. Always involve partners, where possible, in making decisions about the activity programme and dividing tasks to implement the activities. When applying for a RESMAS Plus Youth in Action funding, you will be asked to submit a timetable with details of your activity programme.


okay so mommy's opening a special prism for Eli which was made by grandma look at that this was handmade hand-spitched by grandma for Eli to learn all the alphabets in dutch oh it's nice look at that