Concern about child labour has always been a part of India's social and national consciousness. However, being complex and multifaceted, child labour has proved to be a pervasive problem, inherent in the cycle of poverty, unemployment and illiteracy. It is estimated that almost 6% of the total child population of India falls under the category of child labour. Over the last two decades, India has made great progress in implementing measures which benefit children. The government is now taking a committed and uncompromising stand to combat child labour in the country. Behind this massive effort are ministries, departments and agencies of the union government, concerned departments of the state governments and union territories, international agencies and non-governmental organisations. India is a permanent, founding and non-elective member of ILO. Six out of 20 ILO conventions have been ratified. In fact, in 1992, India was the first signatory to the international programme for elimination of child labour, better known as IPEC. Since then, 150 programmes have been implemented under IPEC, benefiting close to 200,000 children. India's judiciary has played an important role in the battle against child labour. In the 1980s, the Supreme Court facilitated a more dynamic, multi-dimensional use of the legal process by opening the courts to public interest litigations. This made it easier for individuals or groups to move the courts on behalf of the poor. Across India, efforts are on to break the vicious cycle of illiteracy, poverty and unemployment. For this, the Government of India has initiated various schemes for employment generation, training of youth and development of women and children at the national level. In addition, the Sarva Shiksha Abhiyan, or the Education for All Drive, has been launched to ensure the right of free access, retention and participation of all children up to the age of 14 in formal schooling in keeping with the article 45 of the Indian Constitution. The national child labour policy adopted in 1987 marked a paradigm shift in the approach of the Government towards combating child labour. The policy laid specific stress on general development programmes alongside creating a constitutional and legislative action plan. But the most important component of the policy is the NCLPs or National Child Labour Projects. Camps such as this one for girls operating out of an abandoned poultry farm house children through the summer months. Children come from neighbouring villages to attend the camps which prepare them for regular schooling through specially designed bridge courses. In one year, he will be holding an engineering diploma, the first one to do so from a population of more than 300,000. About 10 years ago, Atmaram was weaving carpets for less than $5 a month. His world changed when Krita volunteers convinced his parents to send him to one of the bridge schools and eventually to regular school. In central India, the state government started the Education Guarantee Scheme in the year 1996. The state government pledged to provide a school within a distance of one kilometre for every child in the rural areas within a period of 90 days. In less than a decade, the literacy level in the state has increased by almost 20%. Scheme such as the Education Guarantee Scheme clearly highlight the importance of community participation in the successful implementation of government initiatives. And this is reflected in the fact that the government's policies have created a great deal of awareness and sparked of social change even in the remotest corners of India.


Today, we as a nation are on a threshold. These seven decades of independence have been a journey of striving and sacrifice, corruption and bungling, great achievements and missed opportunities dotted with four wars and now the threat of terrorism. Yet, with all this, we have still managed to reach a point where we as a nation or on the verge of a completely new possibility. The coming decade will be crucial in solving the long-endured problems of poverty and privation of large masses of people. For the first time, for the very first time, we are in excess of an opportunity to take huge mass of humanity from one level of living to another. If we as a nation act in unity, awareness and focus, this will become a reality. We as a generation of Indians will have the fortune of realizing the never-before possibility. It is the duty of every citizen to strengthen the hands of those who have taken the responsibility of administering this nation. May the nation move into an era of new possibilities.


Hello and welcome to the session. In this session, we will learn some more important theorems of real numbers. First let's discuss fundamental theorem of arithmetic. According to this theorem we have that every composite number can be expressed as a product of primes and this factorization is unique the order in which the prime factors occur. The theorem basically establishes the importance of prime numbers and prime numbers are the basic building blocks of the positive integers. Also, if the prime factorization of a number is known to us, then we get the complete knowledge about all factors of that number. Let's consider a composite number 60. Now we will show that the prime factorization of this composite number is unique. This is the prime factorization of the composite number 60. As you can see this is unique. This cannot be factorized further. So generally fundamental theorem of arithmetic says that given any composite number there is one and only one way to write it as a product of primes. The next theorem that we shall discuss says let p be a prime number if this prime number p divides a square then p divides a where a is the positive integer. Next we prove root 5 is irrational. For this our first step is we assume root 5 to be any rational number with its denominator not equal to 0. Suppose the numerator and the denominator have a common factor other than 1. So we divide by the common factor and we get this rational number of the form a upon b where the numerator and denominator are co-prime. So we get this of this form which shows that 5 divides a square. So from the above theorem that we have stated we get that 5 divides a. Thus this a can be written in the form this where we take c to be some integer. We substitute this value of a in this to get which further shows that 5 divides b square from the theorem stated above we can say that 5 divides b. This shows that a and b have at least 5 as a common factor but we already know that a and b are co-prime. So this is a contradictory statement hence our assumption that root 5 is a rational number is not and thus we get that root 5 is irrational. Now we shall discuss rational numbers and their decimal expansions. First of all we have that if x is a rational number of the form p upon q where the prime factorization of q is of the form 2 raised to the power n into 5 raised to the power m where n and m are non-negative integers then we say that x has a decimal expansion which terminates. So for any rational number we will have a look at the denominator and the prime factorization of its denominator if it's of the form 2 raised to the power n into 5 raised to the power m then it has a decimal expansion which terminates. This is the basic idea. Let's consider a rational number now the prime factorization of its denominator is given by this or this can also be written in this form which is same as the form 2 raised to the power n into 5 raised to the power m hence we say the given rational number has a decimal expansion which terminates. Next we have if x is a rational number of the form p upon q and the prime factorization of its denominator that is q is not of the form 2 raised to the power n into 5 raised to the power m where n and m are non-negative integers then we say that the rational number x has a decimal expansion which is non-terminating repeating. Consider a rational number now if you look at the prime factorization of its denominator we see that it is not of the form 2 raised to the power n into 5 raised to the power m. So we say that this rational number has a decimal expansion which is non-terminating repeating. So this completes the session for today hope you have understood the concept of the fundamental theorem of arithmetic and the rational numbers and their decimal expansions. Have a good day.


term challenges in the next iteration of your kind of 2050 vision yeah so what we're trying to do is a couple of things one is that every every second year we'll publish a much more detailed long-term projection for the moment that's still largely based around demographics and for next year we'll be doing a bit more about health inequalities and public health and putting that into there and that's larger because we know a lot more about that there's a lot more data in there what we're then going to do into in every in every other year is to do this sort of thing which is more a perspective thing where we take a step back and we say actually let's think about something like climate change what could the fiscal risks be but we don't have enough data we don't have enough information that we could then start to plug them into our more detailed long-term projections so what we're doing with this report is really highlighting the big issues now in time hopefully as we get more information and more detail then we'll be able to start to pull this together into a much more detailed long-term projection piece but for the moment we're going to be doing these riding these two horses to an extent between highlighting issues and then also doing these long-term projections we will necessarily be focusing a smaller set of issues. Just in closing I think the observations around the interoperability and the reliance on a collaborative approach between the UK Government and the Scottish Government not least in the kind of fiscal trajectory that the country takes to meet these challenges is absolutely right but do you feel that there are the institutions outside the fiscal framework that are reflecting these concerns do you think that ministers and senior civil servants are having these discussions about the scale of the challenge of where that might be met around the between the devolved institutions and the and Whitehall? I probably can't comment really to be honest on detail largely because we're still this is we've just published this report and I mean but I would hope that this sort of thing and highlighting some of these issues these interactions about issues around targets about responsibilities about funding elements etc I hope it's I hope it does inform these conversations and discussions and back to the point you know thinking about I think you have to look at this report alongside the committee on climate change report and also what they'll be are saying at the UK and it's when you look at all of these together you can actually see the key message which is the scale of the challenge but also the urgency but the need for planning and co-operation and if this report can help that planning and co-operation then be delighted with that. Thank you that appears to have concluded questions from the committee it's quite interesting the huge amount of money that this is going to cost given that Scotland produces 0.1% of the world's emissions and all the production is currently 108.6 million barrels per day so I think it's a real global issue and we can but play a part in resolving it. Are there any further points that you want to convey to the committee today or yourself or any of your team before we? I don't think so other than other than just to thank again the committee's support for this work on fiscal sustainability I think that the committee's support has been really encouraging for us and it's given us a lot of confidence in doing this work and moving into new areas and I think we wouldn't have been able to do that without the support of this committee so thank you very much. Well thank you for yet another excellent report and we have got a commitment from the deputy First Minister to have a debate on fiscal sustainability between now and the summer recess so we'll continue to press on that but I want to thank you today for all your evidence and for asking your questions and also I hope that members will come tomorrow to actually the spice event 830 to 930 bacon rolls and scrambled eggs included in the Holyrood room. Okay so look forward to seeing you again tomorrow. With that we'll have a five minute break in order to allow witnesses and official reports to leave and give members an extra break. Thanks. Public proceedings finished for the day. We'll have any private session.


Another proudly we hail one of radio's outstanding dramatic half-hours starring Lee Tracy and presented transcribed by your army and your Air Force. Radio City, New York, here is your star and host on proudly we hail the distinguished Broadway stage screen and radio star Lee Tracy. Hello everyone welcome again to proudly we hail a very spine-tingling title of our play Lee House in the Fog. A very spine-tingling title Ken and a very spine-tingling play a tale of high speed on a California highway which leads to well Ken we'll be ready for the first act after your very important message. Thanks Lee I do have a most important message for all the young men and young women of America. The United States Air Force needs volunteers. It needs volunteers right now so that they can be trained to fill specialized vacancies that exist in radio, radar, electronics and many other critical fields. Go to your nearest Army and Air Force recruiting station and volunteer for service in the Air Force today. And now with your star Lee Tracy in the role of Paul Carr your army and your Air Force presents the proudly we hail production of House in the Fog. One of the characteristics of our eight seems to be that we're always in a hurry. Paul Carr was a perfect illustration of this observation always in a hurry. Live fast and curiously with his cradle it may have been one of the reasons for his success as a writer for even his books and plays at speed. At 35 Paul Carr was a fast-moving light in the literary world a regular comet bound everywhere in a hurry always in a hurry. What do you mean the flight's been canceled? I'm sorry Mr. Carr but all flights have been grounded the fall. That's right I got to be in San Francisco by eight o'clock tomorrow morning I thought your guys flew on anything. No sir not anything not when our passengers lives might be in danger. Oh Poppy Cox your ticket people sang me a different song this morning. Oh yes Mr. Carr we'll get you there in plenty of time. No Mr. Carr there be no delay. The weather moved in very suddenly. I know it always does. Well you've got all the answers what am I going to do. We'll arrange a berth on the train if you like. Trained there isn't any train I can get that'll put me in San Francisco before 10 o'clock. I'm sorry sir I don't know of any other way unless you drive. Maybe you can supply me with a car too. I'm a stranger in town. Looks like you just have to wait until the fog moves out it might move out tonight. That chance. Oh I don't know. Mr. Carr I do not run this airline I only work for it. I don't control the weather either and I don't see any reason to take it out on me. Well I'm sorry miss I didn't mean to take it out on you. It's just that I'm in an awful hurry I got to get to San Francisco that's all. I want to get to San Francisco by morning. How much do you charge. What time in the morning. By eight. You don't want to drive you want to fly. That's right but with the fog I can't. How much. Just you. That's right. To go to Sacramento the two of you can split the cost to there. Okay how much. Fifty bucks. That's robbery. That's right. Hmm. Well I want to get started right away. Where are you. Hotel Hilton. I'll be in the lobby in five minutes what's your name. For a car what's yours. Mike. For a test in advance. If you guarantee to get me there by eight. Far and anything unexpected. Yep I'll get you there. It's awful foggy. You want to go or don't you Mr. Car. What about the other passengers. He's here all ready to go. A woman. That's right you got any object to. Oh no no no I guess not. Okay then hang up so we can get started. Mr. Car.  That's right. What are you staring at. Nothing you're just a kind of big that's all. Yeah I'm big all right. Is that your bag. Yep. Give me the drone we'll hit the road. Give me a receipt and we'll hit the road. Okay Mr. Car. Here you are. Nice and business like. Now I'll just count this. Even Stephen. After you. Forgotten a bit bit thicker since I came back from the airport. You won't be able to make much time in there. I may tell him in anything you probably need a new set of nerves by the time we get to San Francisco. I like speed never bothered me a bit. You were. Ain't that poor car guy that writes the books now are you. Now yeah I'm afraid so. You don't like them. I ain't much for eating I only read one. Well part of one. It wasn't my type I'm a mystery fan when I do read. Where do you write a mystery. All right one Mike. Now dedicated to you. Here's the car.  What do you like. Not my type. One kind of nice looking. Refined. New day. Well I think I'll put it in the back. Oh what's her name. Fenty I think she said. Mr. Method. I didn't go into a history I didn't think it was any of my business. Oh. OK Mike. Get in and I'll put your bag in the trunk. How do you do. How do you do. My name is Paul Carr. I'm going to. Well Miss Benton that. Looks like we're going to have a long foggy trip ahead. Well said folks. Close feet ahead. Wait till you hear this baby. If it'll fly it's all right by me. You in a hurry to Miss Benton. Some what but. But not so much of one that I want to risk getting my neck. With me is the wheel man. I'm the best driver this side of the Rockies. He certainly wasn't kidding was he. I wish he'd slow down. Oh don't worry he knows these roads and he knows his car. But the fog you can't see a foot. I'm a cigarette maybe that'll help. Oh yes I would like one. Thanks. Are you doing back there. Oh no. He really does. What do you do about seeing the road. Just follows it like a cat. The fast for you. No that's all I go fast you like. This is plenty fast enough for me. In fact I'd be a much better if you slow down. We're going to get Mr. Carr to San Francisco by eight. I can't remember. What is it Mr. Carr a matter of life and death. No no not quite. I have an important business appointment. I can't afford to be late. Is a business appointment no matter how important I'm worth risking our lives over. Oh now I don't think you should look at it that way. We'd be just as safe here as we would be on a plane or a train or anything that goes fast. I'm sorry I don't agree. Really Mr. Carr I hate to see you late for your appointment. What would you mind terribly slow down a little. I'm nervous. Okay. Mike he's off the accelerator. The lady's not in a hurry. Could give her the gun again. Miss Fenton are you asleep. No I'm not. Oh you're you wouldn't like to go any faster. The only way I'd really like it to go slower. You say why didn't you walk to Sacramento. You look for deceiving I had the idea you were a gentleman. I'm allowed and I'm in a hurry. You are. Let's go. What happened what happened. Miss Fenton Miss Fenton are you all right. You know what I think what happened. Miss that curve I guess if we can get out this door. No we're on our side I'll have to climb out through here. I'll go first and I'll pull you out. Are you sure you're all right. I'm not sure of anything. Take it easy now everything's going to be OK. Now give me your hand hold tight.  Sit down there like yourself one of these. Well I see how Mike made out Mike Mike. You're alive. Why are you Mike. You OK. I guess so. That's all clear. Will you look at that car. We're just lucky we're all in one piece. Yeah. The game OK. She's shaking up a bit. We're going to climb up out of here and see if we can flag down somebody. Look at my car. What did you have to be in such a hurry for. I think you're right. It's a driveway. Oh I wish you'd had the same attitude about being in such a hurry. Oh I'm sorry really I am. Well you should be. It's a miracle none of us were hurt. I'm hurt.  Well it's just what you deserve you should know better. You sound just like a school teacher. Well that's because I am. And the children I teach are a good bit younger than you in years Mr. Carr. But mentally they have far better judgment. I'll bet you're awful rough on them too. Hey look there's the house. It's in the windows people must still be up. Ah big place isn't it. There aren't many houses around here. Well here it goes. Maybe you'd better let me do the talking.  Fine but we had an accident back there on the road. Could we use your telephone. Do come in. Thank you. That feels better. Could I have a drink of water please. All right this way please. Would you mind waiting in the living room. Oh that's fine but could I use your telephone. I'm sorry sir that's one thing we don't have out here. No telephone. Well what do you know classy joint like this in your telephone. Make yourselves at home. I'm Morton. Should you need anything just ringing. Do you do you own this place. Oh no sir I only work here. Well where's your employer. Employer.  This is the living room. What. Well me.  Our car ran off the road. Well my name is Roger. We got here a while ago same sort of thing. Flying and had to come down in the fog. Great I did make a very good landing. Oh these other people were on a bus. Ran off the road. Amazing that we all found our way here. Slightly. Well what do we do. Just sit here and wait for the owner of this noop to show up. I guess that's about all we can do. They don't have a phone. Something very odd about this place if you ask me. Well Judah why don't you sit down. I will and the name is Miss Sentom. Oh no it isn't it's Judy.  Well since we're being so familiar could I have that drink of water. Sure you bet. Oh where do we ring for that character. Well that's another odd thing. We've rung for him from time to time and he never shows up. Well I'll go find a kitchen myself. I've already tried. What. No kitchen. No you can't get out. What do you mean you can't get out. Well the doors won't open they won't even bud. Same for the windows. Even if you could open up the windows it wouldn't do you any good. Look at those bars they must be at least two inch cast iron. You'll see about that. Well what's the matter Mike. I can't do it. Even punch. Paul what does it mean. I don't know. It's crazy. Paul playing this crazy. Lee Tracy starring in the role of Paul Carr in the proudly we hail production of House in the Fog will return for the second act in just a moment. These are critical times. Each day the headlines bring news of grave situations. Headlines that indicate our freedom is being challenged. Our American way of life being threatened. But there are headlines too about the number of young men and young women of our country who are meeting this challenge by volunteering to serve in our armed forces. Right here I'd like to point up the needs of one particular branch our airport. To continue the marvelous job it is doing now and what it may be required to do in the future more young men and young women are needed. Here is an excellent opportunity to help your nation build and maintain the best equipped Air Force in its history. Also as a member of the Air Force you can take advantage of countless educational facilities which may help you plan a career. Drop in at your local army and Air Force recruiting station today. Talk to the recruiting sergeant learn for yourself how you can be of tremendous help to your country in these critical times by volunteering in your Air Force. Now you are listening to probably we hail and now with your star Lee Tracy in the role of Paul Carr we present the second act of the House in the fog. Can't you sleep now. For some reason I don't feel sleepy anymore. I don't even feel thirsty. It's all kind of weird. Mike and I should be trying to tear the walls down to get us out of here but I feel kind of resigned to the whole thing like you'd rather wait here to see what's going to happen. Right. Kind of grows on you. Yeah. If you're worse than any point in being in a hurry anymore suddenly getting to San Francisco. As important as getting to Sacramento. Yeah. Seems we all feel alike. Here's a chance to write a mystery. Hey you do that Mr. Carr and I'll be sure to read it all of it.  What gets me among other things. How is it that all of us managed to find this place. Roger's there. He says he landed on the side of a mountain. Not he's playing all the pieces. Those four over there were with him. None of them got hurt.  The bus went off the side of a road like we did. The people here somehow got separated from the other passengers. Where are the other passengers. What are you trying to say. I don't know Judy. It's short it's cruise. Let's ask that creep for the bus whether what goes. Yeah. Well wait a minute how do we get hold of him. Gotta come back sometime. Does he. Look what do we do. We sit here till the roof falls in. What do you suggest Mike. We've tried every way that there is to get out.  And how do you knock down a wall Mike. There are about 20 of us here aren't there. If we break off a few table legs and things like that. We ought to be able to do something. What do you think Judy. I find I'm changing again. Well I'd like to get out of here very much. I don't like it. I'm getting sort of restless myself. Back down and starting to get sore again. I say OK. Let's get out of this place any way we can even if we have to burn it down. Now you're talking. Listen folks I don't know how you feel being kept here like this but we don't like it we want to get out. The doors are no good the windows or barred with iron. I'm Mike here. Think we might knock a part of the wall down. OK OK OK OK. So it's funny. But is it funny being stuck in this place, hell, prisoners? Anybody who wants to give us a hand is welcome.  Now, don't get angry. Now, take it easy. There's no need losing our heads. After all, where can you go if you do get out of here? It's a terrible night, and we seem to be miles from anywhere. Maybe our host does have a strange way of making us welcome. But you must admit it's comfortable and not unpleasant here. I'm sorry. I'm not that patient. Well, you can't go about wrecking a man's house. Well, you can if he won't let you out. I'm sure if you'll just be patient for a little longer, this whole thing will be cleared up. Maybe it will. We're not waiting. Well, I'm sure that the rest of us will insist that you don't start tearing the place apart. Or is that so? Listen, Bob, leave us not have any infractions. You might calm yourself. Look, right. Where's that devil of you been? I'm sorry, sir. I was called away. The car will be here shortly for all of you. Oh, well, that's a relief. Car for all of us? We're not all going to the same place. Quite correct, sir. But you'll all start from the central point. It will be much easier that way. Hey, you see, I told you everything would be all right. Hey, what's the idea? Luckness in here. Locking you in? I'm afraid there's some mistake. Oh, yeah, you can say that again, Bob. You know, we couldn't get out of here. We tried. You tried? Well, it showed me. Would you mind telling us who owns this house? I'm sorry. I must leave now, sir. The car will be here shortly. It would have been here sooner, but the weather always throws things off. Please be patient. Hey, come back here. Tell me if that thing just won't give at all. I've thought it all over. When G's there, or whatever his name is, shows up again.  We go through that door no matter what. But he said the car was coming. Listen, Judy, nothing has been right since we got here. We don't know who owns this house Why we're held here. I'm through being thoughtful. Let the others go for a ride. I say we break out of here and keep running until we get back to the road. I'm all for that. I was running to feel it. Well, what about you, Judy? I've come this far with you, or because of you. I might as well go the rest of the way. Good. Now, let's sit here and keep our eyes on that door. Just as soon as it opens, we go through it. And the devil takes a hindrance. He said shortly, I wonder how he measures time. I feel like a sprinter waiting for the gun. I feel like busting somebody's jaw. As the good Mr. Rogers said, let's not get excited. What time is it, Mike? My watch got broken in the festivities. Lane's all smashed. Time's up at five at the nine. Well, let's take care of that. I didn't really care, anyway. Why don't you ask one of the others? The way they're all sitting there. I think they were dead. Yeah.  Come on, let's go. See here, oh, what are you? Out of our way, bub. Hold on, Judy. Get him out of the way, Mike. He's as strong as he's not. Really, this is a fine way to act. Go on, you two. I'll handle this guy. Run. Come back here. You can't leave now. The front door is wide open. There's a bus in the driveway. Head off to the other way. Please, can't we stop now? Not until we reach the road. I can't run anymore. Please, let's rest a minute. He's thinking somebody was after us. OK, just a minute. What about Mike? I don't know. I was really giving him a hard time. He shouldn't be waiting until he gets up. This fog might mess us all together. Come on, Ollie. We've got to go on. What's the rush all of a sudden? I don't know. I just have a feeling we should hurry. Oh, hurry, hurry, hurry. Well, you'll have to help me. I've got the heel on my shoe. Oh, of course. I'll help you. I hope you could wait for Mike. He'll be all right. No, if it hadn't been for him, we wouldn't have gotten away. Well, you're right. He hung on with everything he had. I wish I could understand all this, Paul. I wish I could. About it, Doc. The big guy's all done, Sergeant. If his body hadn't blocked that engine, the woman, the man, may be done, too. He got much chance, while they'll pull through. Both pretty badly banged up. Tell him to get the stretcher. I'll just put a mess. Some guy always in a hurry. Hurry for what? He'll get nowhere. First the airplane, then the bus, then this auto. Our star, Lee Tracy, will return in a moment, with a word about next week's show. For many weeks now, I've been telling you young men and young women of America that the United States Army and the United States Air Force need you now more than ever before. The ever-changing global conditions of today make it mandatory that our Air Force be up to strength and ready at all times to carry out its mission. Visit your nearest Army and Air Force recruiting station and find out how you can best serve. If you meet the physical and educational qualifications, you can join the aviation cadets. And when you successfully complete your period of training, you'll receive your commission in the United States Air Force. You'll be proud of your silver wings. And don't forget, you'll be serving your country when you're needed most. Volunteer today. This has been another program on Cloud Lee We Hail, presented in cooperation with this station by your Army and your Air Force. Proudly We Hail, stars Lee Tracy. House in the Fog was written by DeWitt Cobb. Music was composed and conducted by John Guarnieri. Proudly We Hail is directed by Charles Wilk. This is Kenneth Anghardt speaking. And here again is your host and star, Lee Tracy. Join us next week for Proudly We Hail, won't you? Our play is called Hideaway. And it's a story that'll keep you guessing right up to the final turkey. I hope you'll be listening. Goodbye.


Welcome back away from that feature on the real estate. Let me introduce my guest Stanley Achono is the country director of the one campaign here in Nigeria and he joins me now to speak on Nigeria Africa's ties with Germany vis-a-vis the German Chancellor's visit. Many thanks for joining me Stanley. Thank you for having me. Okay, let us just start this way. How crucial is Germany's partnership with Africa at this time? Germany's partnership with Africa is increasingly becoming crucial, especially in the light of the global economic development of sustainable cooperation that we have been talking about. Germany supports largest economy in the world and one of Africa's biggest trading partners. On our side, we have on the African side, we have seen that we have the potential to be crucial contributors to solving global challenges. We have abundant human and natural resources and we are seeing how extraordinary human resources side where Africa is not becoming a huge contributor to the tech team and all of the other challenges the world sees. Germany's partnership is real. Africa, you know, finally became a member of the G20, a country of partners like Germany who put in the effort to get Africa, you know, in seats at the G20. A really big crucial global decision making body. So to have a seat on the African Africa, that global body is also important and Germany played a really crucial role. But Germany is very clear about how they want to work with Africa. They have established compacted Africa where their approach to support Africa is mutually agreed and discussed. So there is no better time to strengthen the German-African partnership, especially the Nigerian-German partnership than now. So the willingness to do that is put on the side of the Nigerian government and on the side of the German government. And this is why the German leadership is making frequent trips to Africa. The president to be in Tanzania and in Tibet, this will be the second time the chancellor is on the continent. So Africa is beginning to gain global attention and that partnership is not crucial. You know, that you have laid so far. But what then are your expectations, particularly from this particular trip to Africa? A lot. For one, I expect a lot of conversation around direct investment in between Nigeria and Germany. As you know, the economic situation in Nigeria is crucial and we need to attract as much investment as possible in the immediate. This is to present a unique opportunity and I expect that the Nigerian government to put out a clear set of demands or requests in terms of private sector led direct investment from Germany and German businesses into Nigeria and Nigeria businesses. We also expect a bit of conversation on reforming the global financial architecture. Germany is an influential leader and Africa is facing significant talent in assessing affordable financing from the global multilateral development banks like the World Bank and IMS. And this challenge is in progress in various sectors on the continent. We expect that to be on the table during this visit. There's been an ongoing conversation to reform the global financial architecture so that it is suitable for people. At the moment, it is more difficult for the countries in need to find the finances they require in a timely fashion. I hope that that could be discussed and that the road again we can continue to advance in support of reforming a World Bank, IMS and those multilateral development banks to be on the table. We also need to ask for an increased voice in the decision making level at these global institutions. IMS, World Bank, UN, we need to really be on the same level and I'm talking about the need for investment. These global bodies meet and direct global investment flows. So it's important that we engage in the discussion that affects us directly. And we're also seeking a two-way partnership, especially between Gemini and Nigeria. German businesses hold a lot of capital, they hold a lot of influence that can help a sort of speed up Nigeria's economy and that should be priority on this basis. And I expect there to be a lot of conversation around Nigeria's tech space. Our think-takes would be discussed and how Gemini can continue to partner and support us will also be very crucial on this topic. Yes, that's my expectation. Okay, let me still button. Good thing you've mentioned the trade relationship between Nigeria and of course Gemini. Now the relationship, the trade volume rather reached about 3 billion euros in 2022, which was a substantial rise from the previous year's 2 billion euros. In what areas, I know you have mentioned FinTech and all of that, but in what other areas can Gemini invest more in the country? The creative industry is booming in Nigeria, so I would expect Gemini to look to that sector. Gemini's gas, Nigeria has abundance of gas. I would expect conversation around natural resources to be on. All right, it's still Business Insight and Plus TV Africa. We lost Stanley Achonid there, but we'll take a quick break and see if we can reconnect with him in a minute. Stay with us. All right, welcome back. It's still Business Insight and Plus TV Africa. We had to take a quick break there, but welcome back there. We still have Stanley Achonid, he is the country director here in Nigeria of one campaign, and we've been looking at the German Chancellor's visits to Africa, specifically Nigeria and how economic bilateral ties can actually be strengthened. Stanley, just before we took that break, we were talking about what other areas Gemini can invest in the country, but then again, Nigeria is a major player in gas supply in Africa. With the gas situation in Europe, can the country harness this visit to explore more ties with Gemini in that regard? Yes, I mentioned that Nigeria's gas will be part of this conversation. There is already an effort to build Africa gas pipeline going from Nigeria all the way to Europe to improve gas supply to Europe. So I expect that to be on the table, but the challenge is that harnessing this opportunity and potential in gas is captain intensive and requires a huge amount of money to invest in gas infrastructure to enable that benefit to be reached. Our debt is mounting. We have declining revenue that makes it even more difficult for governments to channel the required investment. I think that Gemini would be interested in supporting Nigeria in harnessing our gas potential to become available for the German economy. It would not be an immediate result. It would take a few years for the investment to mature, but I expect there to be a concrete outcome on this one between President Thinibu and Chancellor Thao on this visit. Gas development will play a crucial role. Just also add that the peace of the region, the African region, especially what we have seen in Nigeria, will be crucial because in talking about gas, the pipeline will have to pass through some of the difficult areas we have in our sub-region. All of the Maori, Niger and the areas where we have seen an increased number of military coups. Discussing the security of the region will also form part of the environment that enables the state of investment to happen, but gas will be very crucial in increasing our bilateral trade with Europe. All right, Stanley, just before we let you go, in passing you mentioned the creative industry, but we sort of lost you there at some point. Can you just wrap up your thoughts concerning how Nigeria and Germany can play in that particular light? Yes, the creative industry is one of the biggest. We have seen movie music in a sort of cut across cultures and go around the world. We are one of the biggest music sector at the moment that the world is paying attention to. Our fashion is also taking on the world to our creative industry broadly. Movie music fashion in all sense is growing and the world is paying attention. So I expect there to be any sort of cultural integration and stirring up ideas. Countries are made by how much of the world know about them and Nigeria is beginning to gain global attention. I also mentioned that our agricultural and agribusiness processing sector should be one area where Germany is looking to invest. It's a labor risk, job intensive, it's great to put multiple in jobs, but it's also very profitable if it is done right. So if the Nigerian government puts in the right policies that enables German businesses to make the right investment, it's uniquely beneficial to both sides. There are countries who make huge revenue exporting at the cultural produce and Nigeria is well positioned. We have six hours away from Europe. You can get fresh flowers down to Germany. You can get fresh food in the down to Germany in six hours in the whole of Europe. So we are well positioned to feed the world. This is the right investment to make. Supported by a good manufacturing sector would be areas where I think we can look to grow our great relationship with Germany and get to beyond the three billion dollars indeed in 2023. All right. Well said, Stanley. Many thanks for the very wonderful inputs and insights that you have shared on the show today.


Okay, so we have Alan Martin speaking about how to build C++ applications with Python as the core Kind of so please introduce him and Big applause for him Hi everybody, I'm Alan and I work as a software engineer at Ableton in Berlin, Germany Let me introduce you to what we do At Ableton we make live push and link Software and hardware for music creation and performance First we make live, but you can see on the laptop screen here Live is a digital audio workstation for creating musical ideas turning them into songs and performing on stage On a technical level, it's a C++ desktop application built for Mac and Windows from a pretty old codebase 16 year old Then we make push Push is a USB device which becomes a powerful Electronic music instrument when combined with live it embeds Multicolor display at the top that renders a cute quick scene powered by cute, which is a C++ application framework And then we make link Link is a technology that keeps music applications and devices in sync by synchronizing their beat It is available to app developers as an iOS SDK Now you might ask, but what does that have to do with Python? Well, we do use Python at Ableton First we use it to write remote scripts for MIDI controllers these MIDI controllers are Devices like push that musicians can use to interact with live in order to enhance Their music creation workflow and to perform Then we use Python scripts to automate continuous integration and releasing new versions of live and Last but not least since it's the topic of this talk We are using Python to build and test C++ applications such as live So let's see how we are building live with Python In order to build C++ applications You have to compile C++ source files and sometimes also see an objective see source files And so you compile them into object files binaries Which then are linked by the linker into libraries and executables When building live more than 1400 files are compiled to product 88 libraries and eight executables Fortunately, there are tools to help you Build C++ applications, so you don't have to call the compiler and the linker manually yourself These tools are called build systems and you might already know the ones I've listed here Unfortunately most build system tools Support only one platform and we want to build live on Mac and Windows and actually Live used to be built from Mac files on Mac and visual studio projects on Windows and it was a total maintenance nightmare So we started using a higher level tool that would abstract most of the platform differences This tool is JIP JIP stands for generate your projects and it's a meta build system a bit like CMake and Qmake It's a multi-platform tool that generates files for platform specific build systems It can generate Mac files, ninja build files, visual studio projects and Xcode projects And it is written in Python Nowadays it is mostly used to build Chromium Electron which is the base of GitHub's Atom text editor Node.js and the V8 JavaScript engine And it is also integrated in the live repository to actually build live Here is the live git repository very minimalistic view with just what matters for that talk and At Ableton we use git some modules to integrate third-party code Or to reuse our own code across several projects and here in order to build and test live The live repository contains build system, which is also an Ableton repository as a Git submodule And there's also a root-level JIP file named live.jip Now let's see the content of build system So build system itself is a git repository And it contains first of all the JIP repository as a submodule So we have some kind of submodule exception happening here, but it's manageable Then it contains Python scripts To build and test C++ applications. There are three top-level scripts Configure.py is responsible for calling JIP with the right arguments Then build.py calls the correct build system to either MS build, ninja or Xcode build And then run.py calls C++ test runners or Qt specific tools Going into the full details of how live is built would take way too long for this talk So we're just going to use a simple hello world example to see how the build system scripts do their work So here's the hello world project really Simple for now. It obviously contains a copy of the build system repository otherwise that wouldn't be the build system hello world And like in the live repository it has a top-level JIP file The C++ code to compile is spread between a source folder and a test folder Which also contains a copy of catch, which is a C++ unit test framework Now let's have a look at hello world.jip Here two targets are declared hello world and hello world test They both will produce one executable build from one source file So pretty simple, pretty easy You might find the JIP syntax familiar and That would make sense because well, it's a Python dictionary actually The content of hello world.ccpp is straightforward classic C++ hello world And in test hello world.cpp we use the catch test framework to just write this really dummy unit test that always passes Now let's build that So to build and test the hello world project we first call the configure script it indicates What it's doing and for which configuration? So win is the platform it could be Mac, but I'm running on Windows 64 stands for 64-bit could be 32 and DLL is the linking style. It could be static Configure.py is as I said responsible for calling JIP which loads the hello world.jip file and generate Visual Studio files since we are running this example on Windows The generated files end up Under the id folder in a sub folder which matches the configuration In a second time we call the build script Based on the configuration it prints what is about to happen Then it calls MS build since it's the default on Windows a bit repeating myself You can see in the MS build console output that two executables have been built Hello hello world.exe and hello world text.exe Build.py finally prints what happened Which is really convenient when there are dozens of targets with hundreds of files and you don't want to scroll Everything like when we're building live The build artifacts end up under the output folder Here again in a sub folder based on the configuration there's one sub folder more Called debug because when calling build.py we can choose between debug and release This division into sub folders based on the configuration allows us to Simply build and test several configurations of the same application in the same repository And now we can run the hello world executable Hello world To finish that example Oh, sorry We call the run script with the cpp test command And it will basically call every c++ test runner from the correct output folder By convention only executables ending with tests are treated as c++ test runners Thus hello world.exe won't run here only the hello world test.exe Run.py also prints a summary of which test runners have passed and which have failed Which is again pretty convenient when you have dozens of them and you don't want to read all the output So now we've seen how build system works in a very small project But now let's talk about what it means to use it with complex applications such as live So compared to the hello world project, there are a lot more files in the library repository so it takes Much more time like really much more time to build and test But it works in the exact same way The only thing to do is simply configure build and run nothing more But don't get fooled by the appearance simplicity The fact that there are only three scripts to call Doesn't guarantee on itself that these scripts are easy to use maintain and extend in fact these scripts could have been developed in a totally chaotic way and It would be a mess Not only for developers who work directly on them But also for developers who are using them to build and test their applications And developers really don't like to work with a mess So, I mean you may have guessed we didn't develop our build system in a chaotic way. Thanks Otherwise, I wouldn't be giving a talk Would still be in Berlin hiding from my angry colleagues So no everything's fine instead of chaos. We embraced consistency The three top-level scripts configure build and run share a common architecture They only use modules from the Python standard library principally our class logging and sub process and They follow the same sequence of actions first the past the arguments Including finding the project jib file since it's the entry point Then they figure out what the users the user wants to do and then they just do it More than just a common architecture these three scripts Actually share a common design this design is made of design principles and by implementing these principles the scripts become easier to use Maintain and extend now right now. I want to share with you three of these design principles They are generic so you should be able to apply them to your own strips First principle fail early loud and clear I don't really think I have to explain why but we'll go for an example just to be sure Here is a small script We declare an argument buzzer with one argument target dear Then we get the target directory actually out of the arguments and We count how many entries they are in that directory and We print it on the console When running the script on the hello world project, they are six entries Everything's fine Now let's try to do the same thing on a non-existing directory Well exception So we get an error which is actually a platform specific error. It's a Windows error So my colleague working on Mac won't even see the same thing Here it's pretty easy to trace back where that error comes from then they are not so many lines in that script and It's pretty obvious what happened, but if you have a really complex script, which does a lot of things It's really helpful to explain to the user. What is wrong is what you type on the common line It's not a bug in the script So how do we do that in Python? Well, the trick is to check the argument type as early as possible So here I have a function which Basically takes a path figures out whether that path is the directory if it's not it raises an argument type error exception with a comprehensive message Otherwise, it just returns the path and we use that function in the type of the argument So now when passing the arguments the arch parser will actually call that function and if Everything is fine Nothing changes still the same output the user sees the result but if The folder doesn't exist Then we actually get an error message which is clear because now we know it's something wrong When passing the arguments and not a bug in the script So fail early loud and clear just to make your scripts easier to use The second design principle is support custom defaults, so you might be wondering custom defaults Don't really go together. Well, let me explain I've showed you that Jeep can also generate ninja build files Ninja is not the default build tools on Windows and Mac, but we support it because it's pretty fast So if I want to configure the halo word project with ninja, then I call configure the configure script with minus minus ninja I get The output with extra ninja Indication then I call the build script with minus minus ninja and I get the ninja output And then I can run the halo word and everything is the same. It's the same C++ code and The compiler calls should be identical But I'm a lazy man. I don't want to tap minus minus ninja every time I call configure or build and I do that a lot every day So to solve that issue We've created a way to have custom defaults So in a file, which again is a Python dictionary Users can write what they want to be given to the arc parser as the first argument So these arguments go at the beginning and then whatever they put on the common line goes next So they can always on the common line override anything that is in the dot RC file So There's one dot RC file per user in the user folder Then they can they can be one RC file per Build system repository. So when you have several working copies, it can be useful to have different settings based on the working copy So this file is getting ignored. It's not checked in the build system repository And then as I said common line arguments at the end Text precedence since the arc parser reads the arguments from left to right so now with the content of the RC file Including minus minus ninja when calling configure dot pi and build dot pi. I can just call configure and Call build and I don't have to type anything else Now the third reason principle do not integrate project specific features So the build system repository is completely Live agnostic. It doesn't know that it's used by life It can be used actually to build any C++ applications If we have a look at the build system repository and how it's composed We saw there's jip there are the three main scripts and to Share code between the three main scripts base a Python module Which contains functions for Argument passing like the existing deal function. I've just shown functions for getting the default arguments based on the platform and Function to figure out where is the top-level jip file So there are some heuristics. So As you as you've seen I don't have to Specify where is the halo world of jip or the live the jip file when calling configure and build So now for this example, let's imagine there is a fourth script Because configure build and run are pretty big pretty complex So let's just go with a simple arg parser Here is the content of the simple arc parser We import arc pass. Obviously We import constants from build system but then we can use to define to Specify the default value of the first argument, which is the platform Then we have the word size and then we have the linking And this script only prints the content of the argument namespace nothing fancy So let's call it just to see how it looks Here we go just prints Linking is DLL platform is win and what has a 64 since these are the default values Now let's go back to the halo world project In the halo world project. I would like to call this script with I don't know a Specific argument that I really would like to have So here we could imagine But we want the halo world to Change the language. So instead of saying halo world it would say bonjour le monde or hola el mundo or whatever So we give the language on the common line Obviously that won't work for now. There's no such argument so now I might Be a bit sneaky and ask can we add that to build system, please No We do not integrate project specific features ever because it adds maintenance cost and It leads to API breaking changes as soon as another project starts using that feature and then the original projects Decides to change to change it. So no instead We make it easy to write script extensions So here we're back to the simple arc parser script with some space because I'm going to fill the blanks first thing we do is include another Module from the build system Then we create the script extension I Will come back to that part In a few slides, but basically we create the extension and then Afterwards we use it So we have a function called extend arc parser before Which we put before defining the other arguments and another function called extend arc parser after that we put after Defining the arguments So this is the only thing we have to write in the build system script Now, let's see how it works in the top level projects The first thing they have to do So the first thing hello world has to do here is Create a Python module named build system extensions. That's the convention It has to be like this and in that Module They can there should be one file at least one out called simple arc parser And this file matches the name of the extension that was created Here we define only one of the two functions So here we define the extend arc parser after and now when we call the script with our specific argument It works No errors So how does that black magic happen? Well first as I told you there is a A script extension Python module and In that Python module there is a function called get script extension When calling that function we pass two things the first thing to pass is the script name and The minimal API So the minimal API will define what are the functions that the extension has and Now we go into the dirty bits So who has ever done the first line import I am P Okay, let's maintain So this is the low-level way of importing a Python module The first thing you have to do is to find it like Sorry Using a collect a list of paths Where that module could be and the name it has Then if it has been found you can actually load it Then there's a bit more craft to handle closing files and what not but what you have to keep in mind here Is that now we have a function called find and load? Find and load module and this is now really useful to create the script extension So creating the script in sanction for real So we're back to describing that get script extension function takes two arguments the script name and the minimal API So the first thing to do is to find The build system extension module so the one I told you this is by convention It's how it works and we basically do that by just going up on the tree structure And listing all the parent So we start at the hail world Repository and then just go up up up up up until the root of the drive And if in any of these folders there is a folder named Bill system extension actually not just a folder a Python module name bill system extensions then it is loaded and If we have found it then we can try to find inside it a module which has this desired script name if Nothing has been found that can happen Because maybe the user the halo a project or another project hasn't Defined any extension This script extension is just a dummy empty object and Then we iterate over each attribute of the minimal API and if The script extension doesn't have that attribute yet. We just set it so that way The script extension that is written by this function is Complete so the script that is using this object doesn't have to check whether the attributes exist and It can just rely on this minimal API being complete and Yeah, just work to wrap it up We're building live with Python To echo the title of the the talk Python is indeed the keystone since Without Python nobody can work on life About the design principles The thing to remember is that having some is good it helps you write better code But knowing and sharing them is better. So I invite you to come to me and to your fellow Europe by finista and share whatever design principles you are using in your code and in your scripts to make them better So then all together we can make the users of our scripts happy Thank you for attention We actually have like a lot of time for questions. So raise hands, please Yeah, so just a small question. I was wondering why would you why did you decide to include the Debal system as as a model instead of packaging and deploying it We have kind of a history at Ableton of Having everything in the repository. I mean almost everything. So we obviously don't have the C++ compiler. We don't have The Python interpreter itself, but all the code we run we compile and we use is inside The live repository. So I think the some module So so then that means that if you want to pick something like a hot fix or anything for your libraries You actually have to update your submodel, right? Yes How is the experience going that way? I mean, I'm not I'm not saying that's bad No, no, it's fine. We have done Way more acrobatic things with some modules Hands up, please someone else Did you think about using waf on score scones instead of building your own build system? So, yeah, so Python based. Yeah, I know So the thing is waf and scones Call the compiler directly But we are really attached to Using certain IDs like Xcode. I know that Mac developers really like to use that tool and Unfortunately, Xcode only works if you have an actual Xcode project So Jeep being able to generate project files that are really look alike that really look like the native projects was a big plus and Then the build system repository is merely a wrapper around Jeep more questions The talk is being recorded. So Done the question, but did you look at CMake? Yes Yes, we looked at CMake and we actually have a colleague who is one of the main maintainers of CMake The thing is that when the transition was made from the Mac files and visual studio that were checked in the library repository to Jeep at that time CMake was still pretty annoying and But nowadays it's a viable option Let's say more questions I have one myself How do you actually do do you support dynamic loading like you have gone through the packages and going up like a recursion the directories to the parents Looking for modules, but how do you actually set up the order in which they are executed? So here basically the all parent folders function returns a list or No, I think it's even it's a generator, but anyway, it's So the list of the current folder and then its parent folder and then its parent folder until the root and just because of the order in which the paths are Yep, we have to go back here The find module function which takes all this path just does it for you So you just have a one extension. You can only look for one file. Yeah, so the first much build system extensions Python module that matches is the one loaded and that's the default behavior of Python for any kind of module Have you actually looked into them with setup tools you have like entry points and you can Register like extensives if you want to have a look they If you have seen track for example or by test they load the functions like setting up extensions points You can actually extend through those points and yeah more than I make although it doesn't look like you need it Yeah, actually in the end we were pretty happy about the number of lines. It is it's It is small Okay, please Thank you