I wish we had another 150 foot of rope. I got like a hundred foot of slosh right here to get into it. The moment we've been waiting for since we left the breakfast table. Oh no. Oh no. Oh no. Now we're not good. It budged it. He only said if it'll go an inch, it'll go a mile. It moved it. There you go, baby, come on. There you go, Danny. Oh yeah, give it some. Oh hey.


In this question it's given that suppose a boy is enjoying a ride on a merry-go-round which is moving with a constant speed of 10 meter per second, so it's given constant speed It implies that the boy is a at rest be moving with no acceleration C in accelerated motion or D moving with uniform velocity now It's given that it's boys moving at a constant speed. So this is how a merry-go-round look looks like so it will It will go in this direction or Plop my direction whichever way so in this case speed is it's given that speed Speed is constant now in this case if If anybody is undergoing a circular motion It's constant speed. This is called uniform circular motion So This is called uniform circular motion. So a body is let's say this is the center and this is the radius so a body is Undergoing uniform circular motion if it is going in constant speed But then under no circumstances we can have Uniform velocity in circular motion. Why because every moment the direction is changing Right. So hence Though the magnitude of the velocity remains the same, but the direction is changing every second or every instance Direction is changing. So Obviously if there is speed if the speed is not equal to zero, which is given as 10 here 10 meters per second Speed is not equal to zero. So option a is ruled out. So when speed is not equal to zero. It can't be at rest Okay, now moving with no acceleration. Now, what is acceleration? Acceleration is acceleration is given by An acceleration happens to be a vector quantity. So a is given by delta v upon delta t So if velocity is changing whether due to the change in direction of the velocity or Due to the magnitude of the velocity if velocity changes in either or both ways There will be an acceleration in this case In case of a merry-go-round there is a change in direction of the velocity every moment. So hence there is an acceleration So hence Option B is also ruled out. Why because there will be an acceleration in this case There will be a centripetal acceleration towards the center So the acceleration will be like that towards the center and The value of that acceleration a and we denote it by a r is nothing but v square upon r towards towards the center Towards the center. So there is an acceleration So option B is also ruled out. In accelerated motion. Yes Since there is an acceleration and in this case it is a centripetal acceleration b square by r so hence there is an accelerated motion and Option B of again is ruled out why because it says moving with uniform velocity, which cannot be because direction is changing changing at every instance so Instance so this is ruled out. This is ruled out. This is ruled out So the right answer is it is going or undergoing an accelerated motion


Hello everyone, I am Mrs. Sunita Dore. Topic covered here is bottom-up passing, shift-reduce passing. A top-down passer tries to create a pass tree from the root towards the leaf, scanning input from left to right, while bottom-up passer constructs pass tree for an input string beginning at the leaves and working up towards the root. In this video, we are going to cover a general style of bottom-up syntax analysis known as shift-reduce passing. Learning outcome, at the end of the session, students will be able to derive the actions of a shift-reduce passer for a given string of grammar in passing and identify the conflicts during the shift-reduce passing. Shift-reduce passing constructs pass tree for an input string beginning at the leaves and working up towards the root. So we can think this process as one of reducing a string w to the start symbol of a grammar. At each deduction step, a particular substring matching the right side of the production is replaced by the symbol on the left side of that production and if the substring is chosen correctly at each step, a rightmost derivation in reverse is traced out. Consider the grammar for the arithmetic expression string id into id, leftmost derivation for id into id and the bottom-up passing for string id into id is also given on the slide. A handle of a string is a substring that matches the right side of a production and whose reduction to the non-terminal on the left side of that production represent one step along the reverse of rightmost derivation. Consider the grammar for arithmetic expression capital E derives capital E plus capital E. Capital E derives capital E into capital E. Capital E derives in parenthesis capital E and capital E derives id. Here we underline a handle of each right-sentential form. For example, id1 is an handle of the right-sentential form id1 plus id2 into id3 because id is the right side of the production E derives id and replacing id1 by E produces the previous right-sentential form E plus id2 into id3. The string appearing to the right of a handle contains only terminal symbol. As this grammar is ambiguous, there is another rightmost derivation of the same string id1 plus id2 into id3. In this derivation capital E plus capital E is a handle of capital E plus capital E into id3 whereas id3 by itself is a handle of this same right-sentential form. The first derivation gives star a higher precedence than plus whereas second gives plus the higher precedence. Rightmost derivation in reverse can be obtained by handle pruning. Consider the grammar and the input string id1 plus id2 into id3. The sequence of the reduction shown in the first table reduces id1 plus id2 into id3 to the start symbol capital E. As this grammar is ambiguous, there is one more sequence of reduction shown in the second table which also reduces id1 plus id2 into id3 to the start symbol capital E. Consider the same grammar after eliminating the ambiguity from the grammar considered in the previous slide. Since this grammar is unambiguous, so there here we get only one derivation for the string id1 plus id2 into id3. There are two problems if we are to pass the string by handle pruning. The first is to locate the substring to be reduced in the right-sentential form and the second is to determine what production to choose in case there is more than one production with that substring on the right-hand side. A convenient way to implement a shift reduced parser is to use a stack to hold the grammar in the symbols and an input buffer to hold the string w to be passed. We use dollar to mark the bottom of the stack and also the right end of the input. Initially, the stack is empty and the string w is on the input as shown here on the slide. The parser shifts 0 or more input symbol onto the stack until a handle beta is on the top of the stack. The parser then reduces beta to the left-hand side of the appropriate production. The parser repeats this cycle until it has detected an error or until the stack contains the start symbol and the input is empty. After entering acceptance configuration, the parser holds and announces successful completion of parsing. There are four possible actions a shift reduced parser can make shift, reduce, accept and error. In shift action, the next input symbol is shifted onto the top of the stack. In reduce action, the parser knows the right end of the handle is at the top of the stack. It locates the left hand of the handle within the stack and decides with what term, non-terminal to replace the handle. In accept action, the parser announced successful completion of parsing. In an error action, the parser discovered that a syntax error has occurred and calls an error recovery routine. Consider stack implementation of shift reduce parsing for id1 plus id2 into id3 using the grammar given on the slide. First table represents the action a shift reduced parser might make in passing the input string id1 plus id2 into id3 according to the grammar given. As the grammar is ambiguous, the grammar has two rightmost derivation for this input. Second table shows another sequence of steps a shift reduced parser might make. Till now, we consider the shift reduced parsing and stack implementation of shift reduced parsing. Now pause this video and reflect on this question for a minute or two minutes and write your response. Once you return the answer to this question, then you can restart playing this video. The question is derive the string id plus id from following grammar using shift reduced parsing. I hope all of you have completed this activity. So the question was derive the string id plus id from following grammar using shift reduced parsing. As this grammar is ambiguous, there will be only one sequence of steps a shift reduced parsing might take as shown in the table. There are context free grammar for which shift reduced parsing cannot be used. There are two conflicts in search grammar. Knowing the entire stack content and the next input symbol, parser cannot decide whether to shift or to reduce that is shift reduced conflict or parser cannot decide which of the several reductions to make that is the reduce reduce conflict. Consider the example that is statement derives if expression then statement or if expression then statement else statement or other. If we have a shift reduced parser in the configuration like stack contains if expression then statement and the input is else dollar. We cannot tell whether if expression then statement is the handle no matter what appears below it on the stack. So here there is a shift reduced conflict depending on what follows the else on the input it might be correct to reduce the if expression then statement to statement or it might be correct to shift else and then look for another statement to complete the alternative if expression then statement. So here we cannot tell whether to shift or reduce in this case. So this grammar is not ll1. Consider the example for reduce reduce conflict where we have a lexical analyzer that returns token id for all identifiers regardless of usage. Suppose the language invoke the procedure by giving their names with the parameter surrounded by parenthesis and the array are referenced by the same syntax. Since the translation of indices in the array references and the parameters in the procedure calls are different we use different production to generate the list of actual parameter and indices. So the grammar have the productions given on this slide. A statement beginning with a of i, j would appear as the token stream id in bracket id, id to the parser. After shifting the first 3 tokens onto the stack a shift reduce parser would be in the configuration that is stack contains id left parenthesis id while the input is comma id right parenthesis and the dollar. So the id on the top of the stack must be reduced by reduce but by which productions. The correct choice is a production 5 if capital E is a procedure and the production 7 if the capital E is an array. This is the reference used for preparing this presentation. Thank you.


Coach, welcome back to another episode with my good friend, Andrew Kosal from Valor Accounting Services. Andrew, how are you today? I am very well. I'm here in sunny London. How are you doing? Sunny London, fantastic. I'm very well, very well. So today, Andrew, we're gonna talk about seasonality. All right, so for those coaches, you might not understand what seasonality is. It means external factors that might affect your business. So for example, it could be a weather issue, which limits you to training your clients. A big example we had recently, well, a couple of years ago was COVID, right?  So Andrew, take it away because I know this is something you deal with a lot of coaches on a regular basis. Yeah, brilliant. Thanks, Leo. Definitely, and also other businesses as well. They're not immune to seasonality changes as well. So we're gonna just kind of reiterate what Leo said in terms of what is it? What are the various factors? So the first one is weather conditions. Summer months versus the winter months. Some sports may require certain conditions where it might be milder in the summer months or colder in the winter months. And sometimes the pitch just might not warrant staying on there because the condition is just too bad. Another one would be, is an indoor or an outdoor sport? Even though certain sports may not be affected by weather, they can still have their peak seasons as well. And we're looking at demand as well, demand of the type of sport and the competition schedule as well. So you may have certain leagues or competitions where they are more prominent at sometimes during the year and you would expect the sports coach to be more actively involved during those periods as well. Another one would be, school and university terms, depending on who you're coaching, that may affect you as a sports coach. And to be honest, a lot of these factors do interlink a lot because if it's to do with university times, school times, college times, it's gonna affect the demand as well. Sorry to cut you out Andrew, but all these factors are pretty much talking about cash flow, right? Yeah, exactly. And we'll get onto why these factors can adversely affect your business, but also can create an opportunity for your business as well. Another one is facility availability. Some sports rely on specific venues, facilities to be available. That is also an external factor where you as a sports coach have to be aware of to ensure that the classes still go on and everything's running smoothly. Right, so what does this actually mean for sports coaches? It's basically to do with quiet and busy periods during the year. Now, for some sports coaches, they may just take holidays. It might just be something that they just accept to how it is and they say, look, we're gonna take holidays for X amount of months during the year and that's okay as long as and we'll go onto the cash flow side of it as well, as long as they've managed to save enough to pay themselves during those quiet months and any running costs are covered as well. You may also get certain businesses where sports coaches where they just accept that is how the industry is. Do they think that is there another way to deliver a service during the quiet periods, the less active periods? So we're gonna basically go through that but anything from your side, Leo? Yeah, this is a really interesting topic, especially in our industry because there's certain times in the year and I know from working with especially football coaches that a lot of the business is shut down essentially. Times such as the summer when a lot of parents are away, Christmas is obviously one where everyone's away and there's no one around. So we're gonna get onto it but what can you do in your business to try and prevent these things from happening? You obviously mentioned a couple, make sure you have savings in place for those quieter months or it could be a case of offering other services during those months as well. So yeah, it's a very common one and I wanna give the example and I know we talked about this before we start recording. So on a couple of days ago, I spoke to a foot saw coach, right? So for those that don't know what foot saw is, foot saw is an indoor version of football. Now for the last two years, he'd been running his business using the same score, right? The same score he was using on a consistent basis but he came across a problem which was the hall that they were using, there was a leak, right? So it was just something because it might be because of the weather or it might be just old pipes, who knows? And that facility became unavailable for that coach to then use and that affected his business because he didn't have a plan B. So he lost the whole month's worth of income due to that and not having a plan B and that kind of interlinks with what we are talking about today. Yeah, amazing. And that, you know, it really does bring me along into how does it actually affect, how does seasonality affect your sports culture business? So the first one is cash flow. It means that you're gonna have inconsistent income throughout the year. What do you do then? You know, as you mentioned Leo, have savings during the quiet months and we'll get onto what can be done about it. Another one is purely from a business risk point of view. You are gonna, you are essentially relying on certain times of the year for the majority of your income, sometimes all of it. So what would you do? You book facilities in advance to make sure that they're there. Are there any other unforeseen issues?  How do we kind of mitigate that? Another one is your annual earning potential by its nature is gonna be restricted restricted due to the seasonality. So let's look at what can be done. So in terms of cash flow, ensure you have sufficient savings to cover your taxes in the year. You don't wanna have a situation where you're, you know, you've spoke to your accountant and he said you've got X amount of tax to pay and it's during a quiet period and you haven't saved anything for that. That can be an issue. Cover yearly or monthly costs that are during the quiet periods because some of them you may have to keep them running even if it's quite quiet for your business. Also paying yourself, you've got to live, you know, you've got to pay yourself as an owner, as a business owner as well. So having enough savings is important. Another one is cost management. Where can you reduce costs without risking the quality of service? So these may be things like subscriptions, monthly subscriptions for certain things. There's gonna be things that naturally are just not gonna be involved. Like if you have to travel to certain, you know, facilities, of course, travel costs is not gonna be an issue because you're not gonna be going to them during the quiet periods. You're not gonna be paying for the hire of certain sports facilities. However, having said that, you may be on a, it might be a lease hire, a hire where you're on a contract. So that might be another issue as well. Try to cut costs where you can. Another one is, okay, so the business risk. Look at where the sources of income are coming from. So if you are, you know, going back to the foot sole example, if he had thought of maybe other spaces to hire as a backup, might have been an idea. Book them in, you know, plan ahead of time, of course, that's the first one, but then there are gonna be things outside of your control where is there's a leak, there's damages if the venue is just trying to do a complete revamp, like a development, and it's gonna be closed for the summer, that's gonna be, you know, affecting. And also, that really does come into what we're talking about in terms of demand. There's gonna be a lot of demand in some times during the year where there may be other, you know, events going on. So that'd be another thing as well to look out for. And then annual earning, so this is really the crux of it. This is really where it kind of boils down to is providing additional services. Can you do online coaching, consultation, one-to-one training, sports conditioning during the, you know, off-season, off-season training or pre-season preparation?  You can take us through a bit more about how it all works. Yeah, no, I think you've given some really good examples. One thing I know a lot of coaches struggle with is when we get to like the summer, groups, right? So if they've been working with groups throughout the year, then when we get to the summer, when a lot of people are away, you know, instead of just kind of giving up with a group because everyone's away, there might be two or three parents that want to continue training because they're not going abroad. So you might look to set up one-to-one training. As we mentioned, you could maybe go online, you know, do Zoom sessions with kids that are still at your academy, but maybe they're abroad. So they continue training with you, right? So yeah, you've given like some great examples and there's a number of things that you can do to kind of limit the risks of seasonality becoming a problem and an issue in your business. Yeah, and you know, just to give a bit more context as well, I had a client who was a taught Zumba, Zumba and conditioning as well and was teaching at a number of different gyms. And what happened was when we were, I was working very closely with this client, still with me, and I realized that there was a major reliance on just two of the gyms. She had a few other ones, but most of the income was coming from, 80% of the income was coming from two gyms. And I mentioned to this client, look, be aware that if one of these gyms do, remove you from the classes for whatever reason, could be they may just wanna stop that class for whatever reason or there could be other factors. Just be aware of that. And what had happened was she started to diversify that and have classes in other gyms to ensure that she wasn't just relying on those two. And what had happened was, lo and behold, one of the gyms actually let her go because they just didn't wanna have that class anymore. They were changing the way they were doing things. And luckily at that time, she had income from other sources, other gyms. Whereas, relatively new business two, three years in, if something like that happened, that could really affect, could really affect the business and maybe could have thought of closing down because essentially about half of the income would have been gone. So definitely something to think about. And I think the whole point of this is building a resilient business and a profitable one, identify risks, ensure that there's reliance. Identify where the reliance is at the facilities, is at the customers, at the clients. You may have specific groups that are completely reliant and that could be your risk. Also opportunities as well, where to invest your time and money and see the trends in the industry as well and working with people to help identify that. Yeah, yeah, love it. Love it, great information Andrew. And going back to your Zumba example, another example in football soccer, especially here in the UK, is a lot of coaches during the winter use a facility called Power League. So Power League's a five-a-side venue that has loads of pitches and sometimes coaches use it for their sessions. But it could be a case where that Power League shuts down for whatever reason, it's going for a bad financial stage, they have to shut down and then that coach in the winter is left with nowhere to train their clients. So again, that's another example. And as you said, just planning ahead, they identify the risks because these things do happen and sometimes it's just out of our control. Yeah, yeah, that's true. So, fantastic, right, Andrew, anything to add? No, that's it for me, Leo. Excellent, all right. Thank you again for jumping on and sharing your knowledge, expertise with us today. It was a pleasure, thank you. See you in the next one. Bye.


You are about to hear a romantic drama, two diamond bracelets from Love Story magazine featuring the love story girl in the role of Catherine Conyers. The scene is the Cafe Rousse, most popular of society nightclubs. Outside the street is rain sweat, but inside is a different mood. The golden glow of subdued lights, the soft seduction of Russian music. At a corner table sits the lovely Catherine Conyers, the most photographed girl in the world and another young woman, basking in the reflected glory of Catherine's popularity. Their escorts have excused themselves for the moment. Catherine, too bored even to light her cigarette, rests both listless arms on the snowy tablecloth. On her slender wrists lays the famous Conyers diamond bracelets. Now how you can sit there so calmly, I'd be scared to death. Scared? For goodness sake, what of? Imagine actually wearing the Conyers diamonds out in the open like that. A king's ransom on each arm. It's foolhardy, it's reckless, it's just asking for trouble.  Yes, well, if you think jewellery exists only in detective stories, Katie, you're crazy. You'll be lucky if you don't wake up some cold gray morning in some dark alley with your head bashed in. Sounds terribly unbecoming. Oh, relax, Bunny. I never go anywhere at night except in the family's car and winter's been driving me ever since I went to the kindergarten. That's more, I've worn this junk ever since I came out two years ago and never lost a single sparkler. Well, now don't worry, nothing's going to happen to me. Nothing ever does, was luck. I like that. Here you are, the most popular girl in town, engaged to Roger Hastings, the most eligible bachelor in the swim. Well, you're not entirely engaged. I haven't said yes yet. Oh, but you will. Everyone knows you will. You'll have the biggest and smartest wedding of the season and they'll happily ever after.  That's just it. Everything's too doggone perfect. No excitement, no zip, no real emotion. You know what, Bunny? Now what? I'm going home, tell Roger I'll see him for lunch tomorrow. Oh, yes, but Katie, what'll he say? I don't care. Look, you can't walk out on him like this. Can't I? Just watch me. Katie.  Yes, please. Now, if you'll just stand under the awning, Miss, it's raining cats and dogs. Lidlith, it is pouring. Where's the Noah's sudden? Speaking of that, there's the old family odd driving up now. I do wish Father could persuade Winters to let us have a new car. That's what comes of having old family retainers.  Yes, Miss. This way, Miss, mind the puddles. Thank you. Good night, Miss. Good night. Oh, goodness, what a night. I'm dog-tired. You can take me home, Winters. And, Winters, I know you know Barney Oldfield, but don't dawdle any more than you can help her. I'll be asleep before you get halfway there. Goodness. I must have dosed off. Raining harder than ever, I can't see a thing. Aren't we nearly there, Winters? Yes, Miss. Winters, the road is so slippery, do you have to go so fast? Yes, Miss. Winters, you took that turn on two wheels. This is where we turn in, Miss. That wasn't our gate, House. No, Miss. Winters, have you been drinking? No, Miss. Here's where you get out, Miss. Where do I turn on the light? You're not Winters. Right. Go to the head of the class. What do you mean by bringing me out here in the middle of the night? You take me right back. I'm sorry, but this is where we spend the night. Oh, so this is kidnapping.  Well, let me tell you, tomorrow morning, the police will be scouring every inch of the state. You're having a Chinaman's chance of kidnapping me. My father is a very influential man. I'm not particularly interested in your father. I'm not interested in you. What I want are the Kanye's bracelets. Hand them over. But that's what you wanted. Why didn't you take them a half an hour ago when I was sleeping? I thought it would be more considerate to let you give them to me yourself. Then you're not an ordinary gangster. Far from it, I promise you. Gentlemen raffles. How fascinating. I've always wanted to meet one. Well, you've got your wish.  And suppose I refuse? I'll have to come after them. You wouldn't dare. No? Well, don't say I didn't warn you. I'll scream. Go ahead. Ah! Pretty good. I bet it is no one to hear you.  Don't you. Please. Here, here, here. Hold on a minute. Let's get this straight. I have no intention of hurting you. If I get the diamonds. That's very noble, I'm sure. Never mind the bad in ours. Just hand over the bracelets. All right. I must. There. Now will you take me home? No, not tonight. You see that cottage there? It's the guest house on one of the big North Shore estates that happens to be closed up this season. I borrowed it for the night. That's where you sleep. It's really very cozy. I attended to everything, even to making sure that you'd have hot water for your bath. Please, I'd rather go home. I'm sorry to be disablaging, but that doesn't fit in with my plans. Tomorrow I'll drive you part way back to town, and I'll say goodbye and leave you with a couple of flat tires on a road that's not too deserted. I think you can manage the rest yourself. Yes, but tonight I can't stay here alone. But, well, I mean you wouldn't. Oh, certainly not. You couldn't be safer if you were cross-eyed, spab and not need and had lost all your teeth. I'm not interested in anything but diamonds. No, that's not very flattering. Can't help it. Come on, it's late. I'll get some sleep. Come on, the rain's stopping. Oh, dear, the ground's so muddy, I'll ruin my slippers. Sorry, I've no cloak, so I can't do a Sir Walter Raleigh. No, but you might carry me. Well, you don't seem to be so terrified of me, after all. Perhaps I'm convinced you're a gentleman first and a crook afterward. Pretty good judge of character, aren't you? I have to be. A girl in my position has every fortune hunter in the country on a trail from the time she's out of a cradle. Well, your fortune is perfectly safe from me. I prefer to earn my own money. By borrowing other people's coffee, juice and diamonds. That's one way. Come on, we're wasting time. Hold on tight. Here we go. There we are. Wait till I unlock the door for you. The light switches on the right-hand side of the door. You'll find the bed and the bedroom all made up. Thanks. And here's the key. Good night. Oh, I mean, wait a minute. Yes? What about you? Where are you going to spend the night? In the car. But won't that be horribly uncomfortable? Probably, but I have to think of my reputation. Hey, kitty, you gave us a nice scare of getting yourself kidnapped by a cutthroat like that. Oh, but, Father, I keep telling you he wasn't half bad. Yeah. There were linen sheets and bath salts and plenty of hot water. Well, I wasn't a bit uncomfortable. Uncomfortable be blows. I'll have his description and every newspaper in the country. I think she can run away with my diamonds, does she? I'm not here, Father. Which were you really worried about, me or the diamonds? Well, you, of course, mature safely back. Now I'm going to tell the newspaper. Oh, no, you aren't. Think what it would do to my reputation. Eris spends night with modern high women. Not that it wasn't perfectly moral, but who would believe it? Well, maybe there is something in that. Oh, but hang it, old kitty. Those diamonds weren't insured. Is that my fault? The Brewster Insurance Company has been after you for years to ensure your valuables.  Oh, whose diamonds are missing. Big pardon, sir. Yes, Jenkins?  Well, well, let me have it. Yes, sir. Let's see. Oh, rattles. I wonder... Oh, of course it couldn't be. It is. Father, he sent them back. Oh, a what? My young man, he sent back the diamonds. Oh, that was nice of him. Scoundrel. I'd like to lay my hands on him. Oh, I almost forgot, sir. Oh, what? That young man is here again. The one that's been trying to sell you the insurance. Mr. Stephen Brewster. Well, old Dan's boy. Well, why didn't you say so? Smart fellow. Show him in. Yes, sir. Kitty, I want you to meet this boy. He's worth two at that Namby-Pamby fashion plate you want to marry. But I've changed my mind, Father. Didn't I tell you? I'm not going to marry, Roger. Well, that's something. Kitty, you entertain Dan's boy until I get my fountain pen. I think I'll sign that insurance policy. He's been trying to sell me. All right, Father, but hurry back. Ah, nice young man bore me after last night. Mr. Stephen Brewster, miss. Oh, you. Hello. How's the kidnapped heiress? Oh, how dare you come here pretending to be the son of my father's best friend. But I am the son of your father's best friend. I take it the bracelet's got back all right. Yes, sir. Well, that is, I still don't understand why you went to all the trouble to take the... That was really quite simple. Your father's one of our toughest customers. My father said he'd give me a partnership in the business if I could persuade your father to ensure his valuables. Is the partnership a good thing to have? It brings in enough for me to marry on. Oh. And you were thinking of getting married? Well, I wasn't until last night. That's something I want to talk to you about. Couldn't we go out in the garden? Right. Yes, that is... Well, here I am, Stephen, pin in hand ready to sign that doggone policy. I'm sorry, sir, but that will have to wait. I have a more important proposition I want to discuss with your daughter. Look out for him, Katie. His sales talk is terrific. I shouldn't be at all surprised. All I hope is your sales resistance isn't as strong as your father's.  You have been listening to a romance featuring the Love Story girl and presented with the permission of Street and Smith, publishers of Love Story magazine. Listen for the Love Story girl in a new romance next week.


All right. Welcome, everyone, to what is the name of our talk really, navigating the processing unit landscape in Kubernetes for AI use cases. So today we're going to be talking about processing units will go over the basics of what they are, and then we're going to talk about how they're used in I'm a developer advocate at Google Cloud where I focus on GKE and open source Kubernetes. I'm also a co-chair of the special interest group for contributor experience in open source Kubernetes. So if you have any questions about contributing, feel free to let me know. I'm also a CNCF ambassador and a co-host of the Kubernetes podcast from Google. And my name is Mofi. I am also a developer advocate at Google focusing on GKE and these days my focus mostly is around running AI workload on Kubernetes. And hello everyone. I'm Rob Koch. I'm a principal at Slalom bill. I'm also at AWS data hero. So sorry in between amongst two Googlers here, but I also work in the CNCF deaf and hard of hearing working group. I'm the co-chair here and I'd like to welcome the rest of the group here that's supporting me today. All right, folks, we're going to start off with some heavy stuff. I'm going to tell you the truth about containers. Did you know that you can write containers in like 100 lines of bash containers really are primarily made up of a couple of core Linux kernel components called a C groups and name spaces. C groups allow you to do resource sharing. So you've got so much CPU. You've got so much memory on your machine using a C group. You can say this process gets this much of the processor and gets this much of the memory. The other core component is name spaces and name spaces are a logical environmental isolation mechanism. So they're a way of separating processes from one another. And aside from that, a container is basically just a process and that's going to come into play a lot as we go through our content today. So let's start talking about processing units. There are a whole bunch of different types of processing units actually. Not sure if you're aware, but there are a whole bunch of them. They all end in PU because they're processing units. But today we're going to be talking about them in the context of Kubernetes. So for a processing unit to be compatible or supported by Kubernetes, it basically needs to be supported by the Linux kernel. It needs to have a device driver that's compatible with Kubernetes and the hardware that Kubernetes works with. And it needs to be supported by the Kubernetes scheduler. Finding all of these components can be pretty hard. There's nowhere in the docs that actually has all of this written down, but basically there are three main types that are supported CPUs, GPUs and TPUs. And actually FPGA is also supported in Kubernetes. And there's a talk going on right now that is talking about FPGA and Kubernetes. So check out the recording of that later. That one is mainly used more in like personal use cases or on-prem use cases. It's not used in cloud environments really. So we won't be going into detail on that, but check out that other talk if you want to learn about it. So first up, we're going to talk about CPUs. So CPUs, a lot of work is happening behind the scenes there. So it's working on looking through memory, reading from memory, writing from memory, and going on and on with crazy amounts of what's going on there. So for the general purpose use of CPUs, there's a lot of different things that you could do with it. You can write code and have it be processed there and continually improve on your speed of your messaging and all of that going through every day. So seeing many different things happening per second. But because of the billions of executions, there's not enough of those things happening, right? So we have multiple core CPUs for the purpose of processing more, and they can work in parallel at the same time running all together. The CPUs also are receiving a lot of instruction and doing the basic math to create 3D avatars maybe, or processing graphics that way, maybe eventually sending what you know. So you can see here this kind of process of setting up CPUs. It's basically a switch, like an on-off switch, like a 1-0. And it tends to then go from there, writing input to the processors you can see here, and then it decides what's going to be done with it with that set of instructions that's being passed. So then that gets written to memory. And then we go through the control plane to pick up whatever's there in the memory, process it, and then it keeps going and going and eventually getting to the output. So this is well and good, and processors, CPUs can do all sorts of general things, which is awesome in how our phones and computers generally work. But there's one little problem. So the CPU is basically, as Rob said, either doing work or it's not doing work. And if it's not doing work, then it needs to go figure out what the next instruction is, and that's stored in the memory. So every time it has to go back to the memory to figure out what the next instruction is, that takes a lot of time and makes CPUs quite slow. And that's what we call the von Neumann bottleneck. So there's a way that we can adjust our architecture to make this at least a little bit faster. We can take the memory and instead of having it outside of the CPU, put it inside of the CPU. The closer it is, the faster it's going to be. So modern CPUs generally have multiple cores, and each one of those cores has some memory in it, an L1 and possibly an L2 cache, and there can also be an L3 cache within the multi-core CPU. So all of these different layers of memory are giving us faster and faster or less fast and less fast, depending on which way you're looking at it, memory that the CPU can access to make them feel faster. So when you think about how a CPU works, is like what we talked about, a CPU is constantly reading from memory what the next instruction is to be and computing it. In this line of code, if you have a variable y equals to wx plus b, it has w and x and b stored in memory, so it will multiply w with x, add that to b, and then store the whole thing into y. If that thing is running a loop, it has to constantly go back to see what is currently w, what is currently x, what is currently b in your memory. So in the best case scenario, that thing is constantly running and the memory is very close in the L1 cache, but sometimes they are not because CPU also does other things in your computer. So if for some reason CPU looks at somewhere else or on other processes, it will have to go back and reload that instruction back into its memory. So every time it goes and reads stuff from memory, this is a connection being happening over the memory that creates latency as well as produces heat to do that calculation over and over again. So in Kubernetes, there are a wide variety of CPUs that you can use. There are of course single core CPUs, but we rarely see them these days, so I have it marked out here. But generally these days you'll see multi-core CPUs, and those multi-core CPUs can be architected in different ways themselves. So there are ARM CPUs and x86 and x64, we probably learned about these in school. And Kubernetes supports a wide variety of these architectures. Here I've got an example of Kubernetes by Justin Garrison, which uses Intel processors and a Raspberry Pi cluster that Melfi made that uses ARM processors. So both kinds of CPUs work in Kubernetes. So now let's talk about the special type of accelerators that probably a lot of we are hearing in the last few months to a year. GPUs. Before we talk about GPUs, why do we care about this kind of special hardware for AI ML workload? It's a concept called embarrassingly parallel problems. So in computer science, there are certain sort of problems that can be computed the next iteration without looking at the previous iteration or other things that are running in parallel. These are also called perfectly parallel or pleasantly parallel. I like the other terms rather than embarrassingly parallel. It kind of makes me think there is something shameful about being parallel here. But in reality, those problems are really nice for us to be able to solve with multiple processor doing the work at the same time. So a GPU stands for graphics processing unit. They actually have been around for a while now. They're initially created to process your render your graphics from your video games or your computer monitor. And we use these things to speed up our frame rate on playing video games. Turns out when you're doing things like machine learning workload, the actual task of computing the next cycle on your neural network is very similar of you can do multiple of those things in parallel and compute that at the same time. So GPU works really nicely on that kind of workload. So the main concept here is a CPU has a very few really fast course like we saw for core architecture. You can even buy up to 16 core for a consumer machine in the cloud. You can even get up to a few hundred cores in a single VM. But what if we just did that but put like a few thousand of them in the same machine. So we could get the fast speed of CPU and do the work in parallel across few thousand of this course. And that's exactly what they did for GPU. A single GPU usually have multiple processing clusters. So they put this course in a single processing cluster.  And each SM will have some L1 caches and L2 caches for the quick access to memory. The problem of going back to the memory for the next instruction is still a struggle for GPUs. To solve that problem, they use something called caches within the GPU architecture. And the whole processing cluster communicates with high bandwidth memory so that it can handle a large variety of large volume of data at the same time. This would be probably a typical archetype of what a GPU structure would look like. The greens here are the actual cores that made a mix of streaming processors, which combined to make up a processing cluster, which have a shared L2 cache in between and each of the processors also have L1 cache for quicker memory access. And when the GPU needs to access like other data, but that's not in the cache, it will go to the memory controller to talk to GDDR memory. On the latest iteration of GPUs, you're going to see things like GDDR5 or GDDR6 memories. And each iteration of those memories are faster and faster, but also consumes a lot more energy to produce the information. And this is the same image, but for the NVidia H100. Now the second latest GPU from NVidia, like this slide became outdated in two days because NVidia had their GTC conference like in Monday. But NVidia 100, the same image that we saw here, now scaled up to a lot bigger because the H100 has a lot more of those green things at the cores, and between each of them you have the L1 caches, between them they have a L2 cache, and two of those processing clusters together make up the H100. For the B200 that got announced like two days ago, this same structure now got scaled to twice this size. So we're making bigger and bigger, more and more cores into the same system to be able to handle more and more data. Now the same task we saw for the CPU, the calculation of Y equals WX plus B, which by the way is a computation we usually do for MNIST, which is a model that can understand handwritten data set. So for doing the same computation one core at a time, but now on thousands of those cores, you can do the calculation parallely across all of them and collect the information at the end of it, that gives us the output at the same time. So the stuff that was happening, the computation time is probably a little bit slower because a single CPU core is probably faster than a single GPU core, but when you can have 5,000 of them working at the same time, your actual workload speeds up. Now let's talk about TPUs. So TPUs are specialized hardware built by Google Research for doing matrix computation. So TPU stands for Tensor Processing Unit and this is the definition of a tensor. This is from mathworldswhollform.com and it says an nth rank tensor is an m-dimensional space, is a mathematical object that has n indices and m to the power n components that obey certain transformation rules. So who in the audience understood this definition? Alright, those of you who understood, please explain it to me after because I did not. So I'm going to try to explain the definition a little bit in simpler form. So in the rank, what we're talking about, at rank zero, a tensor basically is just a number. We all know numbers in programming or math. At rank one, it is an array or vector for math. At rank two is a 2D array, an array in an array. At rank two plus, they're generally just called a tensor. So tensor is the general term for any rank of matrices. And turns out in machine learning and when you're doing neural networks, most of the data is very well presented in a tensor form and a tensor flow or libraries like PyTorch understands tensors and that's what they compute to figure out the next process in your neural network. So TPUs are generally designed to be really good at computing tensors.  What basically it means is it takes input in one end and it spits out two things. One is the multiplication of the previous two input and one is a summation that is continuously calculates. So it creates almost like a pipeline within your system to calculate the information that you're trying to calculate. So the TPU host that is sending data to TPU will send a bunch of data to the TPU through the input queue and store that in the high bandwidth memory inside the TPU. After calculation is done, the output queue will then collect the information for later or using on a different input queue. To perform matrix operation, TPU loads the parameter from HBM into matrix multiplication units. Those are internal cores of TPU that does the calculation. So if you have some information like previously we had, instead of computing one at a time, we're going to just load all the input parameters inside the TPU at the same time. So all the numbers gets chunked out and sent to the TPU at the same time. That just happened there. In the next step, we load the data, the other, so that you had WX plus B. We just did the X. Now we're going to do the B that we're going to add to this TPU from the HBM. As each multiplication is executed, the result is passed to the next step. The output is the summation of all multiplication results and during the whole process, the benefit of TPU in this case is that your machine is actually no longer going back to the memory for the next instruction because everything was loaded in the beginning. So we have all of the numbers loaded up inside the TPU and the input parameters now all gets pushed into the TPU, calculated both the multiplication and summation at the same time. And the pipeline progresses until it reaches the end of your systolic array and at the end you can collect all the results at the same time. So because TPU does not have to go back and forth to the memory, it becomes a lot more efficient in terms of energy usage because it's not reading through the wire back and forth. So now let's talk about processing units that exist in the AIML space. The first one is TPU. TPU is kind of like the main unit of compute for any kind of workload. And as Kaslin explained before, TPUs are just C groups and namespaces. Kubernetes does not really reinvent the wheel with containers. It just has APIs to talk to the underlying run C and container runtime to talk to the container underneath. So if you looked at any Kubernetes YAML definition before, you probably have seen some file like this. YAML is everybody's favorite. Yes, yes, yes. Everybody loves YAML. But in Kubernetes we define this YAML to define our workload in this case. In this case, what we're looking at is this block of resource and request, which we have defined for memory, which is our RAM. We're not talking about that as a compute unit per se. But the thing we're interested in this case are CPUs. We're saying I need 250 mCPU. What that means we're going to talk about in a second.  You can click this link. It goes into a lot more detail exactly what happens. But the part we're interested in is how does Kubernetes then schedule our workload onto the hardware underneath. So when a new node gets attached to our Kubernetes cluster, it lets the Kubelet know what kind of hardware, how much CPU and memory it has available for doing work on it. API server then learns that information from our Kubelet. And when a new workload comes, like a YAML file gets applied to our Kubernetes context, API server will talk to the scheduler, will ask, okay, I need 0.25 CPU. I need 2 gigabytes of RAM. What do you have available that I can run this workload on? If the scheduler finds something, it will then create that pod onto the node. A pod is multiple containers that have the same name space for network and mount. So a pod is just an abstraction on a container. And once that starts, that process will then directly talk to the hardware onto the node and use the resources to run the workload you're trying to run. Now, when you say request and limit, basically what happens is two Kubernetes API server, we ask, give me max of X, which is the limit in Y, which is the request increment. If the scheduler can find a node with resources greater than request, it will schedule it on that node. If your pod asks for more while it's running, and you have limit over that, it can restart the particular pod to start with more resources. And if it can't get any more resources, it will fail. So if you have run Java workload ever on Kubernetes, you probably have seen this dreaded OM killed on your pod because it asked for more RAM, and Kubernetes scheduler said, I can no longer give you any more RAM, so it gets out of memory killed. Now let's take a step back and think about what it means when you say something like 0.25 CPU. You can't really go to Best Buy or some hardware store and be like, I want a laptop with 11.5 CPU. That doesn't exist, right? So in the world of Kubernetes, when you say something like I want a fractional CPU, what that basically means is the scheduler and the container runtime with C groups and namespaces is going to limit that particular process from using more than 0.25 CPU cycle every second. So it is not necessarily saying, I'm going to chunk out and cut out 0.25 CPU to give to this process. If the process still runs on the entire node, it's just a software level isolation that stops the same process from using more CPU cycle every second. So let's try to see that in action, and hopefully that will work. Okay, ooh, reconnect. It is not doing it, fantastic. Oh, close. Welcome to the live demo segment. Okay, so the code we're running here, it's fairly straightforward, but what we're trying to do here is I want to run, GoRoutine is written in Go, but the main idea is I want to run this code in a thread that's going to do a bunch of calculations. It's just going to do a multiplication, and every time it does it, I'm going to count how many times I have done it. So if everything goes well at the end of this program running, which runs for about 10 seconds, I'm going to get and print out that says the calculation ran for 10 seconds, and it did that many counts of calculation. And what I have here is a Kubernetes, oh boy, okay.  Okay. And the node pools I have there are four different. I have an E2 standard, which happens to be general purpose. CPUs has two CPUs on this one, eight on this one, and 32 on this one. Okay.  So cat job one.yaml. So the job itself is says I have a node selector that selects the particular node under target, and I have made the Go application that I had into a container image, and I'm giving it a request of 500 millicore of CPU for each of the job that I'm running. And this is the same exact job definition that is targeting different node types. Okay, don't do like demos people. You know what, I'm going to abandon that particular demo real quick. Don't worry, there's another one. So I'm going to come back to that demo in a second. I'm going to continue on the other part, and we're going to get to that demo in a second. So basically what is supposed to happen, and what I'm going to show here is that, when you run a workload on Kubernetes, and that asks for how many CPU I have in this particular node, even though you said we want to give it only like 0.1 CPU or 0.5 CPU, because it's running as a process onto the node itself, it will actually see all the CPUs that exist in that particular hardware.  But because I have a C group limit that says, don't give this particular process more than 0.5 CPU, your CPU kernel will constantly swap out your work every half a cycle, so that even though you are supposed to get like all 32, you see all 32 CPU being available, your workload does not actually get all 32 CPU, it gets constantly swapped out. So if you have workload that requires to have constant CPU workload, you probably want to give it the full node. So if you have really CPU intensive workload, although a single node can run multiple pod, you probably want to get in the world of running a single pod per node when it requires the whole hardware underneath. Okay, so we'll come back and see what happened to the demo in a second. But CPUs are pretty well understood. Kubernetes understands CPU from the Go because that's how Kubernetes processes run. But GPUs and TPUs and all the other PUs that can exist are not something that is available in every single node. So Kubernetes core does not and should not care about these other PUs types. This is what is known as being out of tree for Kubernetes. So Kubernetes, if you go to the Kubernetes source code and search for GPU or TPU, you're not going to find anything. Now, how is then these things are found and used in Kubernetes? So Scheduler needs to know which node has these processing units, a container runtime to be able to talk to this hardware, and finally, Kubelet to know these code and code general devices. If you want to learn more about how exactly this works, there is a great talk from LastCubeCon from David, I forget the other name. And the link is here, you can go take a look. They go in a lot more detail. And I think they're giving a second talk, this conference, even going further about devices. But in a nutshell, what basically happens is when you have GPU drivers at the bottom here and that GPU driver talks to something called device plugin. So these device plugins are something, a hardware provider, you will write yourself. And that can talk to then Kubelet, which will basically registers itself as a named entity. In this case of a GPU driver, the name could be something like nvidia.com. If it's an AMD device, it will have some different name, but most of the cases these days are NVIDIA. And the API server now knows there is a certain device called nvidia.com. Now, when a new workload comes to the API server saying I want some resources, API server now tells the scheduler that okay, I know of a one node that has this nvidia.com GPU available. Scheduler then will create this pod onto that node. And the pod will then talk to container runtime and RunC to create containers onto the node. This container talks to the hardware directly because they're just processes running on that particular VM. So a lot of people have concern about using containers and Kubernetes for AML workload because they think they might lose out on some performance because they're going through some sort of virtualization. In reality, the performance difference between using a container versus directly talking to these devices, there shouldn't be any because containers are just processes that are talking directly to the hardware. So in the example we saw for CPUs is the very same for GPUs and TPUs. You have resources that you can set with named entity. For example, for NVIDIA GPUs, and the number of GPUs you'd want. In this case, I want eight GPUs. You also have something called NodeSelector that selects a particular node. This is to help the scheduler figure out which node it knows to have the GPUs that we're looking for. And these labels are self-created. So this is something either your cloud provider is attaching to the node pool or you yourself if you know that that particular node has a particular GPU you can add that yourself for this. In the same thing for TPUs, the example is very similar where you have this google.com slash TPU and that's the name the TPU driver is attaching itself with Cubelet and you have the node selected to do the same thing. So the second part of the demo which, okay, great. I have to go back. Okay, so I have this YAML definition of a TPU job which is going to be something that runs a fine tuning workload on a live language model. So I'm going to try to kick this job off if it wants to work with me this time but even if it doesn't, if you want to see how that is working, if you come by the Google boot we have actually a couple of demos running on the screen of that same workload that we can show you how this actually works underneath. But another workload I'm running here is an inference workload which is serving a large language model to talk to. You can have examples of talking to Gemini or talking to chat GPT. We have a very similar example running. So this is running an open model and I'm just going to reload this and I'm going to ask it a question and it should probably know what is Kubernetes. It's a KubeCon, so if it doesn't know we should teach it. But I ask it what is Kubernetes and this is a very small model compared to the bigger ones like a 2 billion parameter model and it gave it back with something and I'm going to ask it something fun. Write a poem about Kubernetes for its 10 year anniversary and it's going to come back. So the way this is working is I have a pod running on my cluster hopefully it comes back. I have a pod running on my cluster okay I can't tell if it's good or bad because I can't read all that quickly but it looks to be rhyming for the most part so I'm going to guess it's good. So what is happening here is I have a pod running on this cluster KubeCTXGPU I'm switching context to get PO so I have this one pod hopefully it comes back running in this cluster called TGI Gemma deployment which has GPU attached which loads up the memory which loads the entire model onto GPU memory and then I have a radio service that we are talking to to communicate and get information. So in terms of talking to this particular GPU bound workload the actual process of doing that is fairly similar to what we are already used to. So in terms of the process and talking to GPU bound workloads very similar way we can talk to CPU and memory bound workload. With that we are going to move on to Yes sorry that the demo got a little bit away from you this time seems to be the way with live demos right but in general the CPU's tasks is to write the code, the CPU runs and understands what you've written there and then writing to memory and going through that with a lot of transactions there. With the GPU you can play a game with smooth graphics and avatar generation and all of that is really wonderful for generating those images. With repurposing that concept for machine learning it's making the process a lot faster and with that machine learning on CPU's rather would be days to process all of that with this it can go down two seconds as you can see. So adding that TPU it will be more of a specific use case specific software TensorFlow libraries etc that can be used in parallel and so processing those tasks will be a lot faster. So reasons you should use Kubernetes for AIML Kubernetes of course generally uses containers and containers are language and framework agnostic they're just a process running on a machine so whichever framework and language you use is fine. Containers generally and also Kubernetes are open source which means that they can run on a wide variety of hardware and environments and Kubernetes is meant to manage many machines so when you have AI workloads which sometimes need a whole lot of resources and sometimes they don't need as much they're very bursty they're really good way to make sure that you're using your resources efficiently. Yeah we have so many varieties of hardware out there that could be used for very specific use cases and a lot of times they can run parallel tasks. For optimization of hardware and things like that you're already running machine learning processes and it costs time and money so the hardware can make that reduce costs and reduce time efficiency and get those products out to the market faster so that's what we all want is to get everything faster and get the fast answer out there. So couple of tips and tricks for using CPU so for critical batch worker as I said before often times having that swaps in the process can be very costly so if you're running a lot of batch workloads you might want to run one pod per node so we have customers that run all 5,000 node pods or even 15,000 node pods on GKE and consider using CPUs with higher clock cycle for more demanding workloads so the most basic CPU you can get from your cloud provider are probably the cheaper ones that does pretty well for most kind of workloads but if you want faster clock cycle most cloud providers or even data centers can offer more expensive faster clock cycle CPUs and finally number of ML workloads can offload to CPU and RAM so if you're running a GPU and TPU workload with a lot of memory and you give it less CPU sometimes some of the libraries will want to use offload some of the work so you want to use that. Couple of the things for GPUs and TPUs is that label your nodes appropriately so that you can find them easily and use taints to stop from non-GPU-TPU workload to be scheduled on to GPU-TPU hardware because again if you're using up that resource for non-ML workload you're just wasting resources at that point and if you're using a multi-node setup if you want to try to keep them as closely if it's your own data center schedule them appropriately if you're using a cloud provider use their semantics to find out how to get them closer and finally using GPUs they have things like multi-instance GPU time slicing and multi-processed services to use the same GPU for more workload. So that leads us to I know we have a short amount of time left but I'll try to condense this slide a little bit so that leads us to the sustainability portion of things so we want to be able to use you know I'm sure you've seen arms the laptops are being used out in you know Apple M1 and 2 and we've got Google Chromebooks as well as you know service arms so there's a lot of benefit to that with our batteries lasting a lot longer so we've got all of the cloud provider you know Amazon, Google and other cloud providers out there that are working really hard to reduce that footprint trying to go a little bit more carbon neutral and so they're adding them to their pillars of well-architected frameworks and various things like that now Google I know has within their UI you could pick a specific region to show you where it's more carbon neutral so that's really nice and then you know this is kind of a lot of information here but we probably have more and more PUs coming in the future so this is just a slide kind of emphasizing that feel free to check that out later. So in review, this was a lot of information and I know that you probably weren't able to consume all of it so if there are a few things that you take away I hope that you learned that containers essentially are just C groups and namespaces and basically are just processes on your machine. CPUs are great multi-purpose processors while GPUs make processing power even stronger through parallelization. TPUs both do parallelization and they load in all of their instructions all at once to make them faster so that they're not going to memory as often and through the power of device plugins all of these accelerators can work with Kubernetes. Kubernetes doesn't add anything in between it's just enabling you to make use of what's there with the applications that you're running. So with that, that's going to be the end of the talk of course provide your feedback if you want to it's going to be on the same page that you saw the talks in and with that do you have any time for questions? Not really but there's nothing after this so if you want to come we're going to be hanging out here and outside if you have any more questions about specific tasks with that thank you for coming to this talk. Thank you.


OK. So, ddechrau'n gweithio. My name is Darren Barnes, and I grew up in the Office of National Statistics in the UK. And I heard Dave talk about a success story from the previous CSB comp material that we have done and the tool we used to actually transform the pretty handcrafted human-repeable spreadsheets that we create on a daily basis in the more user-reformant Before I actually show you a demo of the tour, we're going to go through some of the things that we have to go through and one of the reasons why we had to get to solve this problem. So Overnest produce is thousands of spreadsheets every year on the website and we become increasingly efficient. Crunch in numbers and bring that hand in the right thing to produce the sausage machine in the like of the date that we produced. The actual underlying structures in terms of the data we have no longer exist, I will be able to get our hands on that data in a machine-newn-able way. And we become so good at actually making the Excel spreadsheets as good as they can be on the website. We absolutely, at the cost of everything that needs to be done for the system that we use to build those things. So, I'm in a unique position. I can actually go to a desk of a colleague and say, any chart you give me is source information, a flat, thin file format of the data you produce each month. Gallwn ddarparau am y cyfacol yn ymddylch. Armwysau cychwyn iawn i nadod, mae'n amlwy Produce a Gwylwyddraethau. Mae'n iddu yng Nghymru o'r canaliaf a'r cyflwylliad gwahanol. Mae'n ér cyflwyllydd gyntaf, mae'n ddysgu'n gweithio'r gwybod. Mae un drwy sy'n argyflusiadau, mae hyn yn gwneud eu gwirioneddau o gwylwyddraeth. I can't afford to go back to the IT department and say, can you do this thing in sastry? Can you re-engineer some of the tool that will help me to get the information automatically? So it's cheaper and more cost-effective and quicker, but when you chuck it in Excel, you know all the work I need to do. I'm giving you guys on the website. So it's absolutely at the full cost of doing anything useful in OHS with the data that you have. I'm going to be wrong. We continue to kind of cross-back-bridge, get the data out on the website that people use. If they want to kind of cut and dice it and slice it, you really want to. And it's not going to tumble, the bridge is not going to fall, or it's a bit riffy. And we need to kind of move on in this new age away from the kind of 50 years with the expertise that we've built up, built in some of those spreadsheets that we saw a keynote speaker. The good thing for OHS in the next few years, we're actually looking to re-engineer our systems. So we're not looking to rely on third-party tools to transform our data or deconstruct it, back it, become machinery or formats. We're actually looking to rebuild our entire technical state. There's a whole piece of enterprise architecture going on at the moment to make sure that our data collection, our analysis and our dissemination platforms all work together. So we're actually shore-up instruction, we get the foundation of rights, so we can get that data flowing through systems and not rely on manual data, around it, and sort of putting it here that I used to have on there. So before we hit that slot in the environment, we saw a lot of work to do. I can't simply expect the guys in the tech department to completely re-engineer legacy systems when we're 12 years in a matter of weeks. It's been a few years to do so. So I can't stop doing the open data thing.  We've still got a lot of work to do and it's probably a much more steeper scale than that as well, if we're quite faithful. But actually what we should be doing is meeting the point of using the tactical solution to understand where our data needs are, whatever use and need from our data and actually working parallel with those guys who are going to deliver our platforms and deliver our services forward. So we can learn a lot of information and to do that to set me the sort of tactical solution in the bag that we want to do. Right, so, we, we'll go to the next slide. So, sorry, let me suggest some more. Two years ago, in this very room actually, I met this guy. You can't quite see him, but he has been sitting with me right now. And his name is Dave McKee, a.k.a. Dragon. And he is working for a company called ScreamyRiggy. And ScreamyRiggy, a great bunch of guys, probably a website, you've got lots of lovely online tools, ScreamyPDS and so on. And he delivered a talk in this room on X, Y, Path, which is a tool that those guys use. It's a kind of transformation tool. And from the part from the previous 12 months, I mean trying to fight with our IT department to get them to build something for me that will allow me to kind of take out those spreadsheets and make them more usable online. And so, when I kind of listened to Dave do his talk, I almost went myself excited. This guy was actually offering me something, but I've been fighting so hard and being told by our IT department, what do you expect? Do you know this typically at the house of his trousers? You've got to keep on on your tall buildings, get out back and you can't do this stuff. So, this guy really told me this. So, I'm going to go back and hostage for about an hour after his talk. And we're going to come together in the next couple of months, designing and building and developing the tool we call a big leg. So, that was our tactical solution. We basically have a tool now for about 40 months and I'll give you a demonstration of that. But it's based on a Python set of libraries. It's a very simplistic kind of programming style. We use command lines to run things. It's not a fancy UI to actually access this thing. And that was the point. We wanted to make it functional. We wanted it to do, want to focus more on deconstruct those spreadsheets and that was the important part. It wasn't a bug, maybe it looked pretty. So, I thought we should come out with this. As I said, there's no front end, there's no kind of web browser on this. So, I'm going to give you a couple of examples of the different things that we have to work with. And we've seen some really good examples of some bad spreadsheets from the earlier keynote speaker. And this is the kind of stuff that we have to work in, you know what I'm saying? You can see it's got word cells. It's bold. It's got rows. It's probably got hidden columns and hidden rows. Multiple tabs. You've got content tabs to tell you about the data set. It's probably formless, sat in the back of it. The usual kind of stuff that we have to deal with. We don't want a day-to-day basis. That doesn't make me wrong. It's great for people who want to use those days. You can look at them. You can kind of see them in logical charts. You can even probably print out quite nicely and take it away in meetings. But obviously for this day and age, that's not a good enough. We need to adapt and evolve. So, what we do with the day-to-day tool is we have to set up, and obviously we're not right with data code for you guys in this instance, but we actually set up some recipes and basically instructs Data Baker what file to go look at, where things are in the spreadsheet, so we can pick them up and actually do that transformation piece of work. It's literally saying, this is where my set of observations are. This is where my set of variables leads to the variable IDs. It will strip things up. We don't want such a huge list in the CSV. It will ignore the formless and actually correct those. We're actually getting real numbers, rather than just the formless behind the scenes and matching 4, 2 and a bit of detail. So, if I just, I'd say, we didn't do anything particularly clever with the UI, but we do have a sort of simple picture run. It's a command line-based thing. It basically says, it's a spreadsheet in my folder called this, and here's the recipe. Go and run that recipe against the spreadsheet and you'll generate some files. So, we've done some sort of clever jigglypogry, just to kind of run and actually run through very slowly. This thing kind of normally takes about 0.1 seconds to run. But it's going through, and it's actually taking out two spreadsheets that are in that folder. It's looking through all the different tabs that are in that folder. Look at all the columns, all the rows, where their observations are. And it's merging things together as we speak to actually provide us then with a CSV that we can then load with our data repository. That data repository then allows us to transform that spreadsheet into your soul and make it available into a JSON stack, JSON, XML, CSV, and so on. So, now that's actually done. What it does is it gives us a number of different spreadsheets to see the way you can actually present the dataset online. And one of the neat little things that we do have that it does is it allows us to kind of, well, there's a load of validation things anyway. It actually serves a number of spreadsheets for us so we can actually see and make sure we've instructed database to pick up like things up. So it's colour code for us to make sure we have made obvious mistakes like time is in calling me or where my dimension sets are, like dimension items that all live together. So it can quickly go through and make sure that I've done it right.  Then if we go back in, so these are the actual datasets that we've done. We'll open that up. And you can see now, so basically it's taken all that data from those two spreadsheets, probably about 10,000 records wherever it might be, and transformed it anywhere that was super sensible looking file. And we can actually change the template of this so that we can have it add extra columns in, for instance, for our statistical purposes, we have attributes like either the measure, whether it's a count, whether it's a percentage, whether it's a ratio and all those sort of things. So we can change the way that thing is output and also make sure that, if we've got sensible headings at the top, we can change the dimensions and so on. And that's the sort of thing that we can put in those old machines and actually it will make sense to that computer. No longer does it have to, you cannot consume the spreadsheets as you've seen before. We've got tentative talks going on about that over the last two days. The spreadsheets that we need are absolutely not in any shape or recognisable to a computer. So having this sort of tool that has really kind of revolutionised the way that we will start to take forward that data. So that's really, that's all that Data Baker is. You know, it's a set of, it uses X, Y, Half, which is the thing that underpins all the libraries and things that it uses. Don't ask me about pandas and Python because I'm not a technical person. I'm just a second-hand car salesman who basically goes out and does all the predominantly work with the statisticians to make sure they can speak in the right way. And there's some really clever people that I work with who do all the recipes and create all the kind of things that do the clever work in the background. And I think that for me it's about when the overnight's now coming into a position whereby we're starting to get the skills into our operational teams. So before, we always had to rely on IT departments. It would take six months to actually look at your requirements and then the 12 months to build it and then actually give you something that didn't work. Whereas we're having the sort of skills now in our statisticians, in our operational teams that are allowing us to create these scripts that can do the transformation work for us. So we're starting to evolve as an organisation of not just statisticians and economists that have put the numbers there but actually real big acilinists bringing this together. So we've gone to this. It's all available. It's all open source. It's available on the Github. You've got it in stores for Windows machines only. Doesn't mean you don't use it on a Macs in the ONS. All the documentation is available there. It's all open source free of charge to use. So if you want to have a look at it, be my guest. We've also pulled off another brand new base that we used in the ONS which was starting to create the pertain enhancements on the Github. So let's go back to the slides. Get that to the show and tell. One of the things we're interested in so I did mention the tackle solutions. We don't want these things in going on but we're not supposed to be there forever. That's relying on these third party mechanisms that are going to transform our data. We need to get the extreme processing done correctly so that it's actually there was Rufus that's going to open up a frictionless movement of data from machine to machine to machine and actually up on the website. That's where we need to be and that's what we're going to. But I would like to develop the data data tool further in terms of things like output in RDF for instance or output in JSON. That's a validation techniques so we can find out where things go wrong because the idea behind this is we create the recipe once and then we use all the time. It's not supposed to be something we have to be manually adjusted. So some validation rules where we get users who are creating spreadsheets and they have a capital letter that starts with rather than a small lower case one previously or they may vary one of those city blank columns that nobody for a reason at all. So those are validation tools you try to build in. We also like at the moment you can ignore all the metadata that's available in spreadsheets too so we'd like to perhaps look at how we could have a different part of the recipe looking at that metadata and pulling that out as well and it's going to inspire me with Jenny Tennyson's talk yesterday about CSD on the web we have a sort of JSON format for the metadata and we can put a link tether in between the files together or maybe that's something I can go back and we can talk about introducing in the next next version of this thing. So last but not least I said the script with you guys is a fantastic step with web tools check them out I got a link here today about how the built data vehicle and some of the things that the user underneath the hood so you can check that out I've struck in the github page this slide obviously will be up on the website later on and obviously if you want to actually my details are on there as well but we really encourage people to use this thing we put it out to open source we want this that the community tool when I invested in being you know something that just the office of national statistics uses are actually something that because we all know how difficult these spreadsheets are at work with and if this can help anybody do some stuff and also help us give into improvements going forward and we might improve documentation around things what are suggestions improvements you might have feel free we love such a uniform make and get that feedback so thank you very much


Hi there, I'm Farika and I'll be guiding you through the different steps of our online application system called OSIRIS Ammelt. Once you've clicked on the link in your email, with the login details you will see the screen. You can then select your preferred language, in this case a lot for English. Then you will need to fill in your username and password. Do note however that when you log in for the first time you will be asked to change your password. In any case that you have lost or forgotten your password, you can simply request for a new one by selecting the change username, password forgotten option. Now that we're logged in, you'll see a summary of all the programs that you have registered for at Tilburg University. This includes the application status, the progress you have made in your application and once you've submitted your application, you'll find the decision made by the admissions committee here as well. When you're ready, do click start change application process. On this screen you'll see all your personal details. This has automatically been transferred from the city link, so if you'd like to make any changes to this information, please head over to the city link to do so. If all this information is correct, you can then click on continue. On the top of this page, you'll find the different tabs as it relates to the steps you'll need to take before submitting your application. We will start with the tab identification. Here you will need to upload a copy of your passport or ID card. Please note that your password should be valid for at least six months after the start of your studies here at Tilburg University. Once you finalize all your details, click continue and by clicking continue, you will automatically save what you've done thus far. In the educational background step, you will need to fill in your secondary school education. You will start first by providing the name of your diploma slash certificate, followed by an array of questions covering name and country of high school, and expected date of graduation. In case you have not been awarded your diploma, you can select the option in the drop-down. Also, be aware that you must provide the admissions committee with your diploma before studying your studies here at Tilburg University. After completing the diploma related questions, you will be asked to upload your great list, and in the case that you do not have your diploma yet, you can provide us with a statement of educational institution. You can actually easily find this on our website by searching statement of educational institution in the search box. This is a good moment to mention that all files uploaded should not exceed 10 MB and must be in PDF format. Finally, for those who may need to add an additional educational institution, you can do so by selecting either secondary education or higher education, an example for those who have a bachelor's degree or did one year of university. In all other cases, you can select no, which is what we will do. Once you find all the details, click continue, or you can click save to continue your application at a later time. The third step, you may need to provide us with your English proficiency test certification. To know whether you can be exempted from such, please refer to the English requirement page on our website. You will first need to select the language of instruction, which in most cases will be English. Do note, it is mandatory to have your English proficiency test scores and certificate at the time of application. If you do not have them as yet, unfortunately, the admissions committee will not be able to process your application. Unless you're exempted from taking an English proficiency test, you can opt for the exempt from this requirement option. A text box will appear where you will need to provide us with a reason for your exemption. In this next step, you will need to upload the documents stipulated in your application package. Do note that the required documents vary per program. In this specific example, a CV is needed. Please check the admissions and application webpage of your desired program to get further details about the required documents. Once you've uploaded all necessary documents, you can click continue. Here, you will have the option to add any additional documents to your application. Do note that your admissions will be based on the required documents, which are specified on the admissions and application webpage of your desired program. In this case, we do not need any additional documents so you can proceed to the next step. The service step is only relevant if you had an assistance of an agent throughout your application process. If this is not the case, you can select no. Now that you've uploaded all required documents in PDF format, you can review your application to ensure you went through the steps correctly and that you're not missing any relevant documents. Before you submit your application, here are some points you need to keep in mind. Ensure that you submit your application before the deadline. The deadline can be found on the admissions and application webpage of the program you're applying to. If you need to make changes to your application, you can only do so if you have not submitted your application. Once submitted, changes are no longer possible. In case you need to change a key part of your application, you will then need to contact your international admissions coordinator. You can find their details by simply searching international admissions coordinator on our website. Once you've checked everything, you're then ready to submit your application. You'll receive an email confirming its receipt. You can always log back into the online application system to check the status and progress of your application. By clicking on the progress option, you can get more information about your application. You'll be able to see at what stage in the application process you're in. For example, whether your application has been marked as complete or your diploma has been evaluated already. When a decision has been made, you'll be informed by email, but you will also be able to find the decision here. You can expect this decision from the admissions committee in approximately four to six weeks. It's possible that your international admissions coordinator will need new documents from you. If that's the case, you will be contacted by email. You will then need to log back into Syrc's ML to make the requested changes. This means the processing of your application will take longer than four to six weeks, which is why you should always double check your application before submitting. Now that we've guided you through the steps, we wish you much success with your application. Check out the following videos if you'd like to learn more about the sealing process or about the different systems you'll need for your application.


I didn't realize this until I read your article, and everybody should read this article. It's over at theamericanprogress.org. I realized after reading your article that Rex Spillerson being named to be Secretary of State was a red herring, a distraction, so people wouldn't notice the other Exxon Mobile puppets who are being installed within the cabinet. So, Rex Spillerson, if he becomes Secretary of State, how does that benefit Exxon Mobile? So I think, yeah, in the obvious way that he has been a lifelong Exxon employee most recently, their CEO, it's tough to believe that maybe he would be looking out for the best interests of everyday Americans rather than still holding on to some of his corporate interests. And so, as Secretary of State, his relationships with other countries is primarily how he could benefit Exxon Mobile while he's not there. Exxon produces oil and gas in 22 countries, and I think most recently have had plans to expand that. We also know that Rex Spillerson has close ties to Russia. That's what, during his confirmation hearing, that he got questioned on that a lot. And there is a lot of oil and gas in Russia and a lot of oil and gas that Exxon Mobile would like to be further producing but haven't been able to right now because of US sanctions against Russia. We put in sanctions against Russia after they seized Crimea, which maybe they're entitled to. Some say they had every right to take Crimea. And we ended up blocking a pipeline that Putin wanted and Exxon wanted. If he becomes Secretary of State, pipelines fall under the purview of state, like the big pipeline from the Canadian tar sands that we're still waiting to hear about, right? Exactly. So international pipelines are under the purview of the Secretary of State. And the most famous one is, I think that you referenced, is the Keystone XL pipeline that President-elect Trump has talked a lot about. As Secretary of State, Tillerson could speed up the approval of international pipelines. And that would help Exxon because they have a lot of stock in the Canadian tar sands. I think about 35% of their holdings most recently were in tar sands. So getting those to market could really be a windfall for them. So aggravating. It really is. It is. And I think you're right that in some ways, you know, a little bit of a red herring, it seems so obvious that Rex Tillerson might help benefit Exxon Mobile. But really, Trump has seemed to try and stock his cabinet with as many people funded by the oil and gas industry and even Exxon Mobile in particular, that they could really have some impactful decisions for the future of the company. Yeah. How do you keep from being overwhelmed by all this information? How do you keep your head on straight? Because it's definitely a concerted effort by Trump and Bannon and Kushner. They're really manipulating the public, just throwing so much stuff at us. It's like a document dump. There's just so much corruption. Your head is spinning. How do you stay focused and not just how do you get out of bed? Well, I don't know that I do, but I don't know that I have a great answer for that, except for that you're completely right. I mean, this Wednesday, they had Trump's first press hearing and so long, and they had Tillerson going, and Sessions going, and Congress doing a Voterama, trying to repeal Obamacare. We're seeing almost every single one of these cabinet nominees that I mentioned are having hearings one day after the next. They get Zanky on Tuesday, Truett on Wednesday, and Rick Perry on Thursday. And so it really is just a document dump that try and get a handle on and try and pick out what's really most important.


The first phase of the John Compton Dam project saw the removal of the sediments around the dam wall to clear the lower abstraction port with the overall aim of increasing the plant's water reserve capacity. The John Compton Dam had accumulated over 1.7 million cubic meters of silt over the years, displacing over 400 million gallons of water. According to the head of the project management unit at Wasco, Gordon Wyck, a large share of the silt can be credited to the passage of devastating hurricanes and tropical storms, including Hurricane Thomas in 2010 and Tropical Storm Debbie in 1994. Our dressing, therefore, took place from about October of last year till about February of this year where we were able to remove about 85,000 cubic meters of sediment from the reservoir itself so that reservoir immediately has more capacity and it allowed us to clear that lower port completely so that lower port is now available for use. So along with this, of course, is that we had to take the sediment from here and place it at what is known as the sediment disposal area. That area, so that the sediment is now there, that area was completed in January of this year and now accommodates the sediment we have removed. So the project in its initial phases is now fully complete with the successful removal of sediment clearing the lower port and the building of the sediment disposal area. Chairman of the Board of Directors of the Water and Sewage Company, Wasco, Francis Denbo, explains that there is still a large amount of sediment to be removed which may take up to approximately 10 years. Wasco's immediate goal, however, is to extract an additional 300,000 cubic meters of sediment. And to illustrate the amount of silt, it's the equivalent of roughly 50 football fields, each football field filled with 20 feet of silt. So that's a tremendous amount of silt that has to be desilted or extracted from the dam to go into the sediment disposal area and there is no way that this could be done within one year or two years. It's a long process, it's a long process between one year to ultimately 10 years, 8 to 10 years to do that process. And why? In any one year you could only extract roughly 200,000 cubic meters of silt and you could only do that during the rainy season. You cannot extract silt from the dam during the dry season or during the drought. Minister for Agriculture, Fisheries, Natural Resources and Cooperatives, Honourable Ezekiel Joseph, expressed his satisfaction with the work done by the Wasco team and contractors, saying that the milestones achieved thus far on this initiative ties into the broader program agenda for development within the sector. I mean it was very challenging and like we just said a while ago we have no control over the weather and when we gave a contract to do the construction of a sediment disposal area we targeted to coincide with the dry season. Unfortunately that year it was not a traditional dry season, it was a rainy season and with the contractor unfortunately lost almost one year of long time as it pertains to the impact of the rain that affected the drought. But I must say it's something new to us in the region and we have learned from the experience and we're able to accomplish it because they have been talked from since Thomas 2010 as far as regaining the John Compton Dam. The second phase of the John Compton Dam Dissulting project is expected to commence in approximately three months. From the communications unit of the Ministry of Agriculture, I am Anisia Antoine reporting.