CHAPTER XXII. of Mary Louise and the Liberty Girls by L. Frank Baum. Red for LibriVox.org into the public domain. A slight mistake. From the edge of town to the steel works the road led through a common, overgrown with brush and weeds. There was no moon, and, although the distance was not so great, it was a lonely, dark, and creepy place. As soon as the girl saw Kaufman take the road to the works, she decided to get there before he could do so. Knowing well she could not be seen, she branched off through the brush, and, finding her way by instinct rather than sight, ran swiftly in a half-circle over the fields, and struck the road again considerably in advance of the more deliberate Kaufman. She now set off at her swiftest run, and, on reaching the manager's office, in the front of the main building, perceived that it was lighted. Josie wrapped upon the door, and it was opened by one armed Joe Langley, the night-watchman. Quick, she said, let me in and hide me somewhere where I can't be seen. Joe pulled her in, closed the outer door, and locked it, and then he phased her. What's up, he demanded. There's a man coming here with a bomb and a black satchel, she panted. He intends to blow up this building in which all the shells are stored. I want to catch him in the act, Joe, and you must hide me somewhere. Joe glanced around with a puzzled look. Where, he asked, helplessly. Josie looked around her, too. This end of the long building was partitioned off for offices, as it fronted the town. The central section was a big space containing a table, benches, etc., while on either side were little glass rooms with partitions between them, reaching about seven feet in height, the ceiling being some twelve feet from the floor. The first room to the left of the entrance was marked manager on its glass door, the next office purchasing agent, and the third chief engineer. On the right-hand side the corresponding offices were marked secretary, examiner, and superintendent. All the office doors were locked except that of the purchasing agent, which stood a jar. Josie sprang into that office and cast a hurried glance around. The glass division between that and the manager's office was frosted with white paint, but so carelessly done that she found places where she could see through into the office of the manager. Also she could see into the main or reception room, even with her door closed. While she examined this place a knock came on the outer door, a loud, imperative knock. "'This will do,' whispered Josie to Joe. "'Go on and let him in, but don't let him suspect I'm here.' Joe was not quick-witted, but on the battlefields of France he had learned prompt obedience to orders. Josie, as a government agent, was now his commander, so he merely nodded to her as he walked over to unlock the outer door. Kaufman stepped in, satchel in hand. "'You're the watchman, I suppose,' he said cheerfully. "'Is Mr. Colton in?' "'No,' answered Joe. "'I was to meet him here at this time,' said Kaufman. "'He said he'd be back this evening,' returned Joe, just recalling that fact. But he isn't here yet. "'All right,' said the man. "'I'll wait.' He carefully placed the satchel on the table and sat down on a bench. Joe regarded him suspiciously, remembering the girl's warning, but said nothing more. Josie was watching Kaufman from her retreat, but as her little office was dark and the Germans sat under a bright light, it was impossible for him to know that his every movement was under observation. The minutes dragged. A big clock on the wall ticked with an ominous sound. Kaufman drew out his watch and compared it with the clock. He appeared to grow restless. Josie's quick ears caught the distant sound of a motor-car coming down the road. Perhaps Kaufman heard it also. He rose from his seat and, going to the table, unlocked the black satchel, pressed the top open and looked inside it. Still bending over the satchel he placed a cigarette in his mouth, lighted a match and applied the flame to his cigarette. His back was toward Josie, but she comprehended instantly the action. "'He has lighted the fuse,' she murmured triumphantly. The motor-car came to a sudden halt outside the door, which Josie had left unlocked. But while the German turned expectantly toward the door, the maimed soldier, hearing Josie's whisper, approached her little room and slightly opened the door. "'He has lighted the fuse of the bomb,' she said to him excitedly. "'The bomb is in the satchel.' Joe turned quickly to the table. He dived to the bag with his one good hand, drew out the heavy ball of steel, and rushed with it to the door, just as the manager, Mr. Colton, opened it and stepped in. So swift were Joe's actions that Kaufman had no time to interfere. Both he and the manager stared in amazement as Joe Langley rushed outside, and with all his might hurled the bomb far out upon the common. "'Confound you,' cried Kaufman. "'What did you do that for?' "'What is it?' inquired the astonished manager. "'A bomb!' cried Josie, stepping from her retreat and confronting them.   Put up your hands, Abe Kaufman.' The little revolver was in her hand, steadily covering him. Kaufman gave an amused laugh, but he slowly raised his arms as commanded. "'I don't quite understand,' said the puzzled manager, looking from one to the other. "'Well, I brought the new projectile, Colton, as I had agreed,' answered the German, coolly. But your quaint watchman has thrown it away. As for the girl, he added, with a broad grin, she has fooled me. She said she had brains, and I find she was mistaken.' The manager turned to Josie. "'May I ask who you are, miss, and how you came to be in my office?' "'I am Josie O'Gorman, an agent of the government secret service,' she replied, not quite truthfully. I've been shadowing this man for some time.  The bomb was in that satchel, but,' she added impressively, as a matter of fact the thing was harmless as I had already removed the powder from the fuse. Kaufman gave a low whistle. "'How did you manage that?' he asked curiously. "'Never mind how,' she retorted. I did it.' Kaufman turned to the manager. "'Will you please order your man to get the projectile?' he asked. "'It's lucky for us that the thing isn't loaded, or there really would have been an explosion.' He now turned to Josie, with his hands still in the air, and explained, It is meant to explode through impact, and ordering it tossed out there was the most dangerous thing you could have done. At the manager's command Joe took an electric searchlight and went out to find the steel ball. "'If you please, Miss,' said Kaufman, may I put down my arms. They are tired, and I assure you I will not try to escape.' Josie lowered the revolver. Her face was red. She was beginning to wonder if she had bungled the case. A second thought, however, a thought of the papers she had found in the old desk reassured her. She might have been wrong in some respects, but surely she was right in the main. "'This man,' said Mr. Colton, pointing to Kaufman, is known to me as a munitions expert. He bears the endorsement of the Secretary of War, and is the inventor of the most effective shells we now manufacture. What you have mistaken for a bomb is his latest design of a projectile for an eight-inch gun. He had arranged to bring it here and explain to me its mechanism tonight, and also to submit a proposition giving our company the control of its manufacture. If you are a government agent, you surely understand that these arrangements must be conducted with great secrecy. If we purchase the right to make this projectile, we must first induce the government to use it, by demonstrating its effectiveness and then secure our contracts. So your interference at this time is, ahem, annoying.' Josie's face was a little more red than before. A second motor car drew up at the door, and to her astonishment Mrs. Charleworth entered, and greeted both the manager and Kaufman in her usual charming manner. Then she looked inquiringly at the girl. "'Pardon me, madam,' said Mr. Colton. There has been a singular misunderstanding, it seems, and our friend here has been accused of being a German spy by this young lady, who is a government detective, or—or claims to be such. The precious projectile, in which you are so deeply interested, has just been tossed out upon the common, but Joe Langley is searching for it. Ms. Charleworth's face wore an amused smile. We are so beset with spies on every hand that such an error is quite likely to occur,' said she. "'I recognize this young lady is a friend of the Hathaway family, and I have met her at the Liberty Girls' shop, so she is doubtless sincere, if misled. Let us hope we can convince her—Miss O'Gorman, isn't it—that we are wholly innocent of attempting to promote the Kaiser's interests.' Joe came in with the steel ball which he deposited upon the table. Then, at a nod from the manager, the soldier took his search-light and departed through the door leading to the big room in the rear. It was time to make his regular rounds of the works, and perhaps Mr. Colton preferred no listeners to the conversation that might follow. End of CHAPTER XXII. CHAPTER XXIII. Perhaps—said Josie, her voice trembling a little—'I have assumed too much, and have accused this man, pointing to Kaufman, unjustly. I was trying to serve my country. But I am somewhat confused even yet in regard to this affair. Will you please tell me, Mrs. Charlworth, what connection you have with Mr. Kaufman, or with his—'Projectile?' Very gladly, said the lady graciously, I am a stockholder in this steel company, a rather important stockholder, I believe, and while I am not a member of the Board of Directors, Mr. Colton represents my interests. Two years ago we bought the Kaufman's shell and paid liberally for it, but Mr. Kaufman unfortunately invested his money in a transatlantic merchant ship, which was sunk, with its entire cargo by a German submarine. Again penniless he began the manufacture of suspenders in a small way, with money I loaned him, but was not very successful. Then he conceived the idea of a new projectile, very effective and quite different from others. He asked our company to finance him while he was experimenting and perfecting the new projectile. The company couldn't undertake to do that, but I personally financed Mr. Kaufman having confidence in his ability. He has been six months getting the invention made, tested and ready to submit to government experts, and up to the present it has cost a lot of money. However, it is now considered perfect, and Mr. Kaufman has brought it here tonight to exhibit and explain it to Mr. Colton. If Mr. Colton approves it from a manufacturing standpoint, our company will secure an option for the sole right to manufacture it. Mr. Kaufman has been in Dorfield several days, said Josie. Why did he not show you the projectile before? I've been out of town, explained the manager. I've returned this afternoon, especially for this interview, and made the appointment for this evening. I'm a busy man. These are war times, you know, and I must make my evenings count as well as my days. Josie scented ignominious defeat, but she had one more shot to fire. Mrs. Charlworth, she stated with a severe look.  Oh! so you are aware of that interview? Clever, said Kaufman. I had no idea I was being shadowed. Then the two exchanged glances and smiled. It seems impossible, continued the man, to keep any little matter of business dark these days, although the War Office insists on secrecy in regard to all munitions affairs, and publicity would surely ruin our chances of getting the new projectile accepted for government use. I am awaiting an explanation of that meeting, declared Josie sternly. Perhaps you do not realize how important it may be. Well, answered Mrs. Charlworth, a thoughtful expression crossing her pleasant face, I see no objection to acquainting you with the object of that mysterious meeting, although it involves confiding to you a bit of necessary diplomacy. Mr. Colton will tell you that the Doorfield Steelworks will under no circumstances purchase the right to manufacture the Kaufman projectile, or any other article of munition, until it is approved and adopted by the War Department. That approval is not easily obtained, because the officials are crowded with business and a certain amount of red tape must be encountered. Experience has proved that the inventor is not the proper person to secure government endorsement. He labors under a natural disadvantage. Neither is Mr. Colton, as the prospective manufacturer, free from suspicion of selfish interests. Therefore it seemed best to have the matter taken up with the proper authorities and experts by someone not financially interested in the projectile. Now, Professor Dyer has a brother-in-law who is an important member of the Munitions Board under General Crozier, and we have induced the professor after much urging to take our projectile to Washington, have it tested, and secure contracts for its manufacture. If he succeeds we are to pay liberally for his services. That was how he came to be at our house last evening, when arrangements were finally made. Was such secrecy necessary? asked Josie suspiciously. It was Kaufman who answered this question, speaking with a parent good humor but with a dinge of sarcasm in his voice. My dear young lady, your own disposition to secrecy, a quality quite necessary in a detective, should show you the absurdity of your question. Can we be too careful in these days, Vespianage? No emissary of the Kaiser must know the construction of this wonderful projectile. None should even now know that it exists. Even should our government refuse to adopt it, we must not let the central powers know of it. My own negotiations with Mr. Colton and Mrs. Charleworth have been camouflaged by my disguise as a suspender merchant. It was equally important that Mr. Dyer's connection with us be wholly unsuspected. When the projectile is adopted, and these works are manufacturing it in quantities to help win the war, still no information concerning it must be made public. You must realize that. That is all true, agreed Mr. Colton.  If you fail to substantiate that claim, we shall place you under arrest and turn you over to the authorities for our own protection. To be sure, said Josie, that will be your duty. I am the daughter of John O'Gorman, one of the high officers of the United States Secret Service, who is now in Europe in the interests of the government. I came to Dorfield to visit my friend, Mary Louise Burroughs, as Mrs. Charleworth is aware, and while here my suspicions were aroused of the existence of a German spy plot. Therefore I set to work to bring the criminals to justice.  Not altogether, retorted Josie, I have already secured proof that will convict two persons at least. And I am amazed that you have entrusted your secrets to that arch-trader Professor Dyer. Will you tell me, Mrs. Charleworth, what you know about that man? Mrs. Charleworth seemed astounded. Professor John Dyer is one of Dorfield's old residents, I believe, she answers slowly, as if carefully considering her words. He is also the superintendent of schools, and in that capacity seems highly respected. I have never heard anything against the man until now. His important public position should vouch for his integrity. Isn't his position a political appointment? inquired Josie. The lady looked at Mr. Colton. Yes, said the manager, it is true that John Dyer was active in politics long before he was made superintendent of schools. However, he was an educator, as well as a politician, so it seems his appointment was merited. How well do you know him personally, madam? asked the girl. Not very well, she admitted. We do not meet socially, so our acquaintance until very recently was casual. But I have looked upon him as a man of importance in the community. On learning that he had a relative on the munitions board I asked him to come to my house, where I made him the proposition to take our projectile to Washington, and secure its adoption. I offered liberal terms for such service, but at first the professor seemed not interested. I arranged a second meeting last evening at which Mr. Kaufman was present to explain technical details, and we soon persuaded Mr. Dyer to undertake the commission. We felt that we could trust him implicitly. When did he intend to go to Washington? was Josie's next question. On the five-thirty to-morrow morning, after exhibiting the projectile to Mr. Colton and securing the firm's option to manufacture it on a royalty basis, we are to take it to my house, where Mr. Dyer will receive it and obtain our final instructions. One question more, if you please, said Josie. What connection with your enterprise has Tom Linnett? Linnett! I do not know such a person, declared Mrs. Charleworth. Who is he? asked the manager. I know him, said Kaufman. He's the night-clerk at the mansion house where I stop. Sometimes I see him when I come in late. He's not a special account.  Josie swung around quickly for the sound. She knew it was a revolver shot, came from the rear. As Colton and Kaufman sprang to their feet, and Mrs. Charleworth shrank back in a fright, the girl ran to the back door, opened it, and started to make her way through the huge dark building beyond the partition. The manager followed in her wake, and as he passed through the door he turned on a switch, which flooded the big storeroom with light. In the center of the building were long, broad tables used for packing. A few shells still remained grouped here and there upon the boards. On either side the walls were lined with tiers of boxes bound with steel bands and ready for shipment. No person was visible in this room, but at the farther end an outer door stood ajar and just outside it a motionless form was outlined. Josie and Mr. Colton, approaching this outer door nearly at the same time, controlled their haste and came to an abrupt halt. The upright figure was that of Sergeant Joe Langley, and the light from the room just reached a human form huddled upon the ground a few feet distant. Joe had dropped his flashlight, and in his one hand held a revolver. Josie drew a long, shuttering breath. The manager took a step forward, hesitated, and returned to his former position, his face deathly white. What is it? What's the matter? called Kaufman, coming upon the scene, panting, for he was too short and fat to run easily. Joe turned and looked at them as if waking from a trance. His stolid face took on a shamed expression. Couldn't help it, sir, he said to the manager. I caught him in the act. It was the flashlight that saved us. When it struck him he looked up, and the bullet hit him fair. Who is it, and what was he doing? asked Mr. Colton hoarsely. It's under him, sir, and he was alighting of it. As he spoke Sergeant Joe approached the form, and with a shove of his foot pushed it over. It rolled slightly, unbent, and now lay at full length, facing them.  Oh! she cried aloud, and shivered anew, but was not surprised. I guess, said Joe slowly, they'll have to get another school superintendent. But what's it all about? What did he do? demanded Kaufman excitedly. Joe took the light from Josie's hand and turned it upon a curious object, that until now had been hidden by the dead man's body.  He was leaning down and bending over it, twisting that dial, you see, when on a sudden I spotted him. I didn't stop to think. My captain used to say, Act first and think afterwards, and that's what I did. I didn't know till now it was the school-boss, but it wouldn't remain any difference. I'd done my duty as I saw it, and I hope I did it right, Mr. Colton. Captain was already stooping over the machine, examining it with a skilled mechanical eye. It's ticking, he said, and began to turn the dial backward to zero. The ticking stopped. Then the inventor stood up, and with his handkerchief wiped the perspiration from his face. God! he exclaimed. This is no joke. We've all been too near death to feel comfortable. This is horrible, said Mr. Colton. I can't yet believe that Dyer could be guilty of so fiendish an act. I can, asserted Josie grimly, and it isn't the first time he has planned murder, either. Dyer was responsible for the explosion at the airplane factory. Footsteps were heard. Out of the darkness between the groups of buildings appeared two men, Chrissy and Addison. Are we too late, Mr. Gorman? asked Chrissy. Yes, she replied. How did you lose track of Dyer? He's a slippery fellow, said Addison, and threw us off the scent. But finally we traced him here and—and there he is—concluded Josie in a reproachful tone. Chrissy caught sight of the machine. Great Caesar, he exclaimed, who saved you? I did, answered Joe, putting the revolver in his hip pocket, but I wish you'd had the job, stranger. End of Chapter XXIII. Read by Cibella Denton. For more free audiobooks or to volunteer, please visit LibriVox.org. Chapter XXIV of Mary Louise and the Liberty Girls by L. Frank Baum. Read for LibriVox.org into the public domain. After the Crisis. Mrs. Charlworth drove Josie, who was sobbing nervously in quite bereft of her usual self-command, to Colonel Hathaway's residence. The woman was unnerved, too, and had a little to say on the journey. The old Colonel had retired, but Mary Louise was still up, reading a book, and she was shocked when Josie came running in and threw herself into her friend's arms, crying and laughing by turns hysterically. What's the matter, dear? asked Mary Louise in an anxious voice. I've bungled that whole miserable German spy plot, wailed Josie. Wasn't there any plot, then? Of course, but I grabbed the wrong end of it.   Never mind, dear, said Mary Louise consolingly. No one can know everything Josie, even at our age.  Josie complied. She sniveled a little as she began her story, but soon became more calm. Indeed in her relation she tried to place the facts in such order that she might herself find excuses for her erroneous theories, as well as prove to Mary Louise that her suspicions of Abe Kaufman and Mrs. Charlworth were well founded. No girl is supposed to know the difference between a bomb and a cannonball, or a projectile, or whatever it is, was her friend's comment, when Josie had reached the scene in the manager's office, and any man who was a German and acts queerly is surely open to suspicion. Go on, Josie, what happened next? Even Mary Louise was startled and horrified at the terrible retribution that had overtaken Professor Dyer, although Josie's story had aroused her indignation toward him, and prepared her for the man's final infamous attempt to wreck the steel-plant. And what about Tom Linnet, she asked? Chief Farnham is to arrest him to-night, said Josie. He will confess everything, of course, and then the whole plot will be made public. Poor Mrs. Dyer, sighed Mary Louise. But fate decreed a different ending to the night's tragedy. When the police tried to arrest Tom Linnet, the young man was not to be found. He had not bought the cigar store, but with what funds remained to him he had absconded to parts unknown. Chief Farnham wired his description to all parts of the country. Meantime, on the morning after the affair at the Steelwerks, an earnest conference was held between Mr. Colton, Colonel Hathaway, Josie O'Gorman, Mrs. Charleworth, the Chief of Police, and the two Secret Service agents. At this conference it was deemed inadvisable to acquaint the public with the truth about John Dyer's villainy. The government would be fully informed, of course, but it seemed best not to tell the people of Dorfield that a supposedly respectable citizen had been in the pay of the Kaisers' agents. It would be likely to make them suspicious of one another and have a bad influence generally. The criminal had paid the penalty of his crimes. The murders he had committed and attempted to commit were avenged. So it was announced that the school superintendent had been killed by an accidental explosion at the Munition Works, and the newspapers stated that Mrs. Dyer did not desire a public funeral. Indeed, she was too overwhelmed by the tragedy to express any desire regarding the funeral, but left it all to Colonel Hathaway and Mr. Colton, who volunteered to attend to the arrangements. The burial was very un-ostentatious, and the widow received much sympathy and did not suffer in the esteem of the community. Mrs. Dyer, in fact, was never told of her husband's dishonor, and so mourned him sincerely. Early following the conference referred to, Josie brought the chief of police and the secret servicemen to her room, and in their presence dragged the old pedestal desk from her closet. Mary Louise, who had been admitted, exclaimed in surprise, Why, Josie, I thought you sent the desk to Washington. No, answered Josie, I merely shipped an empty box. I knew very well that Dyer would try to get the desk back, hoping I had not discovered its secret, so I deceived him and gained time by proving that I had sent a box on by freight. That explains his decision to take the projectile to Washington, commented Detective Chrissie. He believed he could kill two birds with one stone, get back his papers, and earn a big fee for Mrs. Charlworth. Also added Josie, he would be able to give the German master-spy full information concerning the projectile, and so reap another reward. But all his diabolical schemes were frustrated by Joe Langley's bullet. Well, here's the desk, said Chief Farnham, but where are those important papers, Miss O'Borman? And what do they prove? added Chrissie. Josie slid back the panel in the square pedestal, disclosing the two compartments filled with papers. These she allowed the police and the detectives to read, and they not only proved that John Dyer was in the pay of an organized band of German spies, having agents in Washington, New York, and Chicago, but Chrissie was confident the notes, contracts, and agreements would furnish clues leading to the discovery and apprehension of the entire band. So the papers were placed in his charge to take to Washington, and their importance was a further argument for secrecy concerning John Dyer's death. So far as I am concerned, Josie said afterward to Colonel Hathaway and Mary Louise, the spy cases ended. When they arrest Tom Linnet they will be able to prove, from the scraps of paper I found in the printing room of the hotel, that Linnet printed the circulars from copy furnished by Dyer, and that Dyer and Linnet together directed the envelopes, probably in the still hours of the morning at the hotel desk, where they were not likely to be disturbed. The circulars may not be considered legally treasonable, but the fact that Linnet personally placed the bomb that destroyed the airplane works will surely send him to the scaffold. I suppose you will be called as a witness, suggested Mary Louise, because you are the only one who overheard his verbal confession of the crime. It won't take much to make Linnet confess, predicted Josie. He is yellow all through, or he wouldn't have undertaken such a dastardly work for the sake of money. His refusal to undertake the second job was mere cowardice, not repentance. I understand that sort of criminal pretty well, and I assure you he will confess as soon as he is captured. But somewhat to the astonishment of the officers, Tom Linnet managed to evade capture. They found his trail once or twice and lost it again. After a time they discovered he had escaped into Mexico. However they heard of a young man of his description in Argentina. Finally he disappeared altogether. The arms of the law are long and strong, far reaching and mercilessly persistent. They may embrace Tom Linnet yet, but until now he has miraculously avoided them. CHAPTER XXV. Colonel Hathaway and Mary Louise were walking down the street one day when they noticed that the front of Jake Casker's clothing emporium was fairly covered with American flags. Even the signs were hidden by a fluttering display of the stars and stripes. I wonder what this means, said the Colonel. Let's go in and inquire, proposed Mary Louise. I don't suppose the man has forgiven me yet for suspecting his loyalty, but you've always defended him, Grandpa Jim, so he will probably tell you why he is celebrating. They entered the store and Casker came forward to meet them. What's the meaning of all the flags, Jake? asked the Colonel.  Tears came to his eyes. Dear me! exclaimed Mary Louise with ready sympathy. I hope he—he isn't dead. No! said Casker, wiping his eyes. Not that, thank God.  His letter says in a few weeks he can go back to his company. I got a letter from his Captain, too. The Captain says Jakey is a good soldier and fights like Wildcats. That's what he says of Jakey. Still—said Colonel Hathaway with a puzzled look—I do not quite understand why you should decorate so profusely on account of so sad an event. Sad! exclaimed the clothing man. Not a bit. That's glory the way I look at it, Colonel. If my Jakey's blood is spilled for his country and he can go back and spill it again, it makes great honor for the name of Casker. Say, once they called me Pro-German, because I said I hated the war. Don't my Jakey's blood put my name on America's honor roll? I'm pretty proud of Jakey. He wiped his eyes again. I'll give him an interest in the business if he comes back. And if he don't, if those cursed Germans put an end to him, then folks will say, See Jake Casker over there? Well, he gave his son for his country, his only son. Seems to me, Colonel, that evens the score. America gives us Germans protection and prosperity, and we give our blood to defend America's honor. I'm sorry I couldn't find a place for any more flags. The Colonel and Mary Louise were both a little odd, but as Casker accompanied them to the door, they strove to express their sympathy and approval. As they parted, however, the man leaned over and whispered, Just the same, I hate the war, but if it has to be, let's stand together to fight and win it. Grandpa Jim, said Mary Louise, when they were on the street again, I'm ashamed.  CHAPTER XXXVI of Mary Louise and the Liberty Girls by L. Frank Baum read for LibriVox.org into the public domain, keeping busy. The Liberty Girls were forced to abandon their shop when a substantial offer was made by a business firm to rent the store they had occupied. However, they were then, near the end of their resources, with depleted stock, for they had begged about all the odds and ends people would consent to part with. What goods remained to them were of inferior worth and slow to dispose of, so they concluded their enterprise with a grand auction. Peter cannot, acting as auctioneer, and cleaned up the entire stock in a blaze of glory, as Mary Louise enthusiastically described the event. The venture had been remarkably successful and many a soldier had caused to bless the Liberty Girls' shop for substantial comforts provided from its funds. But what can we do now? inquired Mary Louise anxiously, as the six captains met with Irene one afternoon, following the closing of the shop. We must keep busy, of course. Can't someone think of something? One and all had been thinking on that subject, it seemed. Various proposals were advanced, none of which, however, seemed entirely practical, until Irene said, We mustn't lose our reputation for originality, you know, nor must we interfere with those who are doing war relief work as well, if not much better than we could. I've pondered the case some, during the past few days, and in reading of the progress of events, I find that quite the most important thing on the government program at present is the conservation of foods. Food will win the war, is the latest slogan, and anyone who can help Mr. Hoover will be doing the utmost for our final victory. That's all very well, Irene, said Elora, but I'm sure we are all as careful as possible to conserve food. Don't ask us to eat any less, pleaded Edna, for my appetite rebels as it is. I don't see how we liberty girls can possibly help Mr. Hoover more than everyone else is doing, remarked Laura. Well, I have an idea we can, replied Irene, but this is just another case where I can only plan and you girls must execute. Now listen to my proposition. The most necessary thing to conserve, it seems, is sweet. So it seems, dear. People are eating large quantities of wheat flour simply because they don't know what else to eat, Irene continued. Now corn, properly prepared, is far more delicious, and equally as nourishing as wheat. The trouble is that people don't know how to use cornmeal and cornflour to the best advantage. That is true, and they're not likely to learn in time to apply the knowledge usefully, commented Mary Louise. Not unless you girls get busy and teach them, admitted Irene, while a smile went round the circle. Don't laugh, girls. You are all very fair cooks, and if properly trained in the methods of preparing corn for food, you could easily teach others, and soon all door-field would be eating corn and conserving wheat. That would be worthwhile, wouldn't it? But who's to train us, and how can we manage to train others? asked Mary Louise. The proposition sounds interesting, Irene, and if carried through would doubtless be valuable, but is it practical? Let us see, was the reply. Some time ago I read of the wonderful success of Mrs. Manton in preparing corn for food. She's one of the most famous professional cooks in America, and her name is already a household word. We use her cookbook every day. Now Mrs. Manton has been teaching classes in Cleveland, and I wrote her and asked what she would charge to come here and teach the Liberty Girls the practical methods of preparing her numerous corn recipes. Here's her answer, girls. She wants her expenses in one hundred dollars for two weeks work, and she will come next week if we telegraph her at once. They considered and discussed this proposition very seriously. At the Masonic Temple, said Mary Louise, there is a large and fully equipped kitchen adjoining the lodge room, and it is not in use except on special occasions. Grandpa Jim is a high mason, and so is Allure's father. Perhaps they could secure permission for us to use the lodge kitchen for our class and cookery. The Colonel and Jason Jones, being consulted, promised the use of the kitchen, and highly approved the plan of the Liberty Girls. Mrs. Manton was telegraphed to come to Dorfield, and the cookery class was soon formed. Allure confessed she had no talent whatever for cooking, but all the other five were ready to undertake the work, and a selection was made from among the other Liberty Girls, of the rank and file, which brought the total number of culinary endeavors up to fifteen, as large a class as Mrs. Manton was able to handle efficiently. While these fifteen were being trained by means of practical daily demonstration in the many appetizing preparations for the table from cornmeal and cornflour, Allure and one or two others daily visited the homes of Dorfield, and left samples of bread, buns, cookies, cakes, desserts, and other things that had come fresh from the ovens and ranges of the cooking school. At the same time an offer was made to teach the family cook, whether mistress or servant, in this patriotic branch of culinary art, and such offers were usually accepted with eagerness, especially after tasting the delicious corn dainties. When Mrs. Manton left Dorfield, after two weeks of successful work, she left fifteen Liberty Girls fully competent to teach others how to prepare every one of her famous corn recipes. And these fifteen, divided into shifts and with several large kitchens at their disposal, immediately found themselves besieged by applicants for instruction. Before winter set in, all Dorfield, as predicted by Irene, was eating corn, and liking it better than wheat. And in proof of their success, the Liberty Girls received a highly complimentary letter from Mr. Hoover, thanking them for their help in the time of the nation's greatest need. A fee, sufficient to cover the cost of the material used, had been exacted from all those willing and able to pay for instruction, so no expense was involved in this work, aside from the charges of Mrs. Manton, which were cared for by voluntary subscription on the part of a few who were interested in the Girls' Patriotic Project. Another thing the Liberty Girls did was to start community concerts one evening each week, which were held in various churches and attended by throngs of men, women, and children who joined lustily in the singing of patriotic and popular songs. This community's singing became immensely popular and did much to promote patriotic fervor as well as to entertain those in attendance. And so Mary Louise's Liberty Girls, at the time this story ends, are still active workers in the cause of liberty, justice, and democracy, and will continue to support their country's welfare as long as they can be of use. We're a real part of the war, Mary Louise has often told her co-workers, and I'm sure that in the final day of glorious victory our Girls will be found to have played no unimportant part. The End Read by Isabella Denton in Carrollton, Georgia in May 2009. For more free audiobooks or to volunteer, please visit LibriVox.org.


The one thing you need to know about opening jars is that you don't need a dude. There are three go-to methods for opening a jar. You've got your edge of the table, a wooden spoon, and a dish towel. Sometimes the go-to methods work, but not always, which is why we have a few other methods we're going to showcase. So what we're gonna try next involves friction. Friction is the force that we create when we rub things together and it can be really useful when it comes to opening a jar. Here I have a jar of pickles and a thick rubber band. I'm gonna just place it on the edge of the lid of this jar. What's going to happen when I try to open it is that I'm going to be able to use the magic of friction to open it more easily. No rubber, no problem. They say all you need is a common household sponge. Just dampen it a little bit and place it on the lid of your jar and twist. Yeah, no, let's try another jar. Supposedly the dampened sponge creates the friction that you want that we got from that rubber band, but I feel like I'm gonna spray my wrist truthfully. Let's talk about thermal expansion. I'm gonna get a little sciency here. Basically the thermal conductivity of metal is higher than glass. So I'm going to use this bowl of warm water to free. What's inside this jar? All you have to do is soak the lid for about 30 seconds. So now you wanna be as quick as possible once the, oh my gosh, big fan of thermal expansion here. Guys, anyone else? If you've tried every method of opening a jar and you still find yourself in a bit of a jam, there's one last resort that I'm going to show you. It involves a knife. Basically with a really sharp knife, you can very easily puncture the lid of the jar and break the vacuum seal immediately. Did you hear the pop? Cause I did. Oh my gosh. Seriously, it's so easy.  If you're having trouble opening a jar, don't sweat it. There are so many different ways you can open a jar using common household items. My personal favorite? Like this video, give it a thumbs up and subscribe to The Spruce.


Two major photographic exhibitions have been opened today at the Scottish Parliament. The world-press photo display of the past year's winning images is being hosted in the main hall, while a collection of images from the 1950s and 60s by the revered photographer Michael Pito is being shown in the Burns room. Access to both is free. Michael Pito was a Hungarian immigrant. He came to London three weeks before the border closed Budapest. He was a Hungarian Jew. When he arrived he had to find a living for himself, his wife to be in three-step children. He became a humanist photographer and started to work freelance for the observer and for a number of other people. This is a selection of political photographs, both politicians, statesmen and activists, including international leaders such as Nelson Mandela, the Dalai Lama. And then of course the great statesmen like Churchill, Wilson, Heath, all of whom are in this exhibition. I think the distinctive thing about this is that it represents a time that no longer exists and statesmen and people that younger people just don't know. So hopefully this exhibition will help them to understand that period and I think it's nice to look back and look at the people that shaped Britain. What people can expect in the exhibition is the major news topics of last year, so there are some tough images. We see pictures of the fighting on Maidan Square in Ukraine, but then there's also lovely images like there's this picture of an orangutan in Indonesia, a really nice nature imagery. I would really hope that people come away with a sense that they are surprised by something that they haven't seen, there are stories from all over the world. It's such a democratic medium. Everybody's doing photography, but then coming away, seeing all of this, thinking, OK, this is really extraordinary. The World Press photo and Michael Peter exhibitions are being held in the Scottish Parliament from Wednesday over 22nd of July until Saturday over 22nd of August, and admission is free of charge. You can get more information from our website and you can keep up to date with events at the Scottish Parliament through social media.


Part of what we do to spread the Moosehide campaign is through these cards and people that don't know about it often ask and so having a few on you to give away and to share about it and talk about it is the way that we've been talking about it. So the card here talks about what the Moosehide campaign is and on the back there's all of our social media sites and how to start one in your own community. That's part of the Moosehide campaign as well is that we try to make it as accessible to people as possible so giving them away for free makes sure that there's no barriers for people to access the pins and to share them and talk about it.


All right, so let's begin. My name is Alexander Matushensov. I'm really happy to see you all here and happy to welcome you to our presentation. We're going to talk about using Cargo CD Core as a pure GitOps agent for Kubernetes. So I'm a long-time maintainer of Argo project and currently chief architect at Acuity, company that tries to move Argo to the next level. We have two speakers today. I will let my co-speaker introduce himself. Hi, everyone. My name is Leonardo. I usually go by Leo. I'm one of the maintainers of Argo CD and Argo Rollouts projects. I work as a staff software developer at Intuit. OK, let me start by presenting the agenda for today. I will start by providing you the problem statement, providing a list of use cases that Argo CD Core aims to address. But before jumping into what Argo CD Core is, I want to provide you a quick overview on Argo CD component architecture. I believe with this small piece of knowledge, things are going to be less magical and more logical. Honestly, I prefer this way. Maybe you do too.  And that's the moment where Alex will join. The presentation showing you the use cases that I listed in the problem statement slide. And also providing you a demo. One quick note, think that in one of the future slides, Alex is going to provide you a QR code with the links to the GitHub repo that he's going to be using during his demo. So if you want to have access to that repo for future reference, maybe it's a good idea to keep your cell phone prepared to scan that QR code. Cool? All right, so let's get started. And yeah, in the project, we like to hear constructive criticism. And actually, this talk was based on a list of those. OK, and it usually goes by, Argo CD is great, but Feature X doesn't fit our use case to the point that for those users, they will consider alternatives, which is not a problem per se, but let's see what are those Feature X that some users are complaining. OK, so first one is multi-tenancy. So there are some use cases where, for example, you have cluster admin who wants to manage the old cluster and they have no intention in sharing that cluster with other teams, they don't need isolation. So multi-tenancy is not something that, for this type of use case, it's going to make a lot of sense. That next common complaint that we hear is the proprietary or back model, right? So if you know a little bit about Argo CD, you know that we ship the default installation with a proprietary or back model, which means that for you to configure roles and decide what those roles can do in Argo CD, you have to configure a dedicated config map with following a syntax provided by Caspin, which is a library that we use, which provides great flexibility, but for some users, they are willing to trade this flexibility for a centralized approach. They prefer to centralize all or back configuration in Kubernetes, which is a valid use case as well. Another complaint, proprietary API. So for some users, they prefer not to learn a new API, the one provided by Argo CD. They would prefer just to rely on GitOps and applying things directly in Git, in a push commit, and then just expect that the GitOps tool will take care of that state and apply in Kubernetes. OK, moving forward, YDC-based authentication. Sometimes some users, they work in startups. In this case, there are maybe three or four people working in the company. Why bother configuring YDC-based authentication? So maybe not interested in those cases. And UI and CLI, most of the people, the green majority, they like the UI and CLI that Argo CD provides. But sometimes it gets in a way that because some people think it's way too powerful, and they prefer not to make that available for the development team. So they would prefer to have that not available at all. This is all valid use cases. And we heard that. But honestly, for us, it was a little bit disappointed because Argo CD already addressed those use cases. So Argo CD version 2.1 was released in July 2021. And that's the first version that shipped with Argo CD Core. We recognized one major issue internally, which is the documentation that we provide was very, very minimal. So it wasn't really guiding users on how to configure and what to expect from this feature. But this is a problem that we fixed. So last Friday, we merged the PR in Argo CD repo. So now the official Argo CD documentation has a dedicated page with everything that we are going to be talking here today. Cool. OK. As I said, before I jump into Argo CD Core, I want to provide you a quick overview on Argo CD component architecture. And here, I'm presenting you a component diagram. This component diagram is grouped in four different logical layers. Why I say logical layers? Mainly because they don't exist in reality. The main purpose is to facilitate how you read the diagram. The first logical layer on the top, the UI, then right below the application, then the core, and then the infrastructure layer. So the way to read it is that think that dependencies, they go always top down, never bottom up. What I mean by that? I mean that components from the upper layers, they will be able to depend on any of the components from the layers below it. But the reverse isn't true. Cool. So an example of that, which is very easy to understand. Imagine if Redis, for example, had a dependency on Argo CD API server. It doesn't make a lot of sense. So the dependency never goes bottom up, always top down. OK. Real quick going into each one of those components and the responsibility that they have inside Argo CD architecture. Starting from the upper layers, the UI layer we have the web app and the CLI. I don't think I need to speak a lot about this. I think it's a sub-explanatory. Web UI is the web interface that you probably were already interacting with. The CLI, Argo CD CLI. So those two components then depend on Argo CD API server, which is the component that we have in the application layer here. So the Argo CD API server main responsibility is to orchestrate all the functionality exposed by those two components on the top. So everything that is there in Argo CD UI and in the CLI is powered by Argo CD API server. Cool. It orchestrates things. Then right below it, we have this core layer where I'm presenting you the application controller, which main responsibility is to reconcile the application CRD. It does a little bit more, but just to make things simple, I would just mention the application CRD. So basically, in the application CRD is what get things applied in Kubernetes. Then we have the application set controller, which is responsible for reconciling the application set resource, which is what creates application resources. It's just a way to automate things more nicely. And in the same layer, we have the repo server. Repo server main responsibility is to interact with Git. So it extracts the desired state from Git, generates the manifest in case of customize or help. It will generate the manifest and send it back to whoever executed that operation in case application server or application set also depends on repo server. At the bottom layer, I'm presenting the components that Argo CD default installation depends on. So here we have Redis. Those are not components that we develop itself. It's just that are available in the default installation. So at the bottom, we have Redis, which is responsible for having some level of cache. So Argo CD will rely on Redis to avoid hitting badly QBPI server, which is a good idea. Again, QBPI, as I said, we have to apply things in Kubernetes. So we have to rely on QBPI. It's another component that we depend on. Git, obviously, because that's where we get our state from. And DEX, which is the component that is responsible for the authentication. Cool. Two aspects I'd like to mention about the component architecture. First one is modularity. So someone, for any given reason, could rewrite repo server if they wanted. And as long as this new repo server exposes the same interface that the current repo server does today, it will be very, very easy to just replace it without requiring any change in any of the components that depend on repo server today. That's the modularity that we have with this component architecture. The other example, the other aspect that I wanted to highlight from this architecture is this. If I'm not really interested in a group of functionality that a given component exposes, I can just shut it down or not deploy it at all. And that's exactly what Argo CDCore is. Argo CDCore is nothing more than special Argo CD installation that will keep deploying some of the components that are exposing some functionality that is not required for those use cases, those use cases that I explained at the beginning. OK? And with this characteristic, we have obviously less functionality available. But for the components that remain, they will still have their, they will still be operational. OK? All right, so in what is, and how can someone install Argo CDCore? So in Kubernetes, sorry, in Argo CD GitHub repo, we have a folder called core install. There you can find customized project. And in this customized project, I'd like to highlight this list of resources that you're seeing here. So what at the end of the day will get installed by this specific customization, right? CRDs, Orbex required by the controller, configurations, and then the four components that I showed in the previous slide, right? The application controller, application side controller, repo server, and Redis. Cool? OK, so enough of theory. Alex, this is the point that Alex will join the presentation, and it will show how this thing works in real life with your Alex. Thank you for a great overview of the problem and explaining how Argo CDCore can help. And so the next part of the presentation is going to be a bit more practical. So we will have a demo. There is a one known issue with every Argo CD demo. It's usually fully GitOpsed, and there is nothing to do.  This is why I still have two slides to explain to you what we are going to implement and explain the idea, and then we can switch into the demo itself. And so long story short, there will be two parts. First, I want to show you Argo CDCore in action, and the reason is Argo CDCore is a kind of headless Argo CD installation, but it's not just a YAML file which installs less number of components. There are also features, and those features help you replicate experience of the full Argo CD without actually running full Argo CD. I will show you that. And next, we will talk about how to use Argo CDCore practically. And reason for this topic is Argo CDCore meant mostly for Argo CD administrators. And so Argo CD administrators use it to bootstrap clusters, and I will try to address config management problem. And by configuration, I mean applications that needs to be configured in Argo CD, so it knows what exactly you want to deploy. And so because Argo CDCore is used by administrators to bootstrap clusters, it is typically installed in managed clusters itself, which makes it a little difficult for administrators because now they need to jump back and forth between multiple clusters and use QCTL to configure Argo CD. What makes problem even worse is typical cluster administrator team manages way more applications than average application developer team. Instead of managing five applications, let's say cluster administrator might manage 100, which pretty much means it's not an option to use QCTL. And we want to offer a solution of this problem. And in particular, we want to leverage GitOps as usual. And on this slide, you can see Git repository that kind of proposes a convention that allows administrators to only make Git changes. So administrator would need to bootstrap Argo CD once and then rely on component called Argo CD application set to reconfigure Argo CD every time when this Git repository has any change. And to make it a little bit more clear, we broke down kind of the convention that we are trying to implement into two use cases. And the first use case is called cluster addons. And cluster addons refers to a homogeneous set of applications that needs to be installed into each and every cluster. That's a super common use case. And idea is administrators usually provide a set of critical components installed in every cluster and provide them as a service to developers. And components usually include things like Carfana, Primitives, Argo CD itself, and things like that. And the use case of cluster addons we propose to solve using this base directory. And I will try to quickly explain the idea here. So what we want to do is we want to let administrator to bootstrap cluster once. And then in this bootstrap configuration, we will have application set that watches continuously this repository and look for subdirectories under the base directory. Every time it notice a new directory there, it will create Argo CD application with the matching name and use manifests from this folder to serve that application. And so imagine if you have a hundred clusters that you bootstrap all of them once and then you can forget about those clusters and simply make changes in one repository, introduce folders, remove them, and then application set will keep reconfiguring itself and it will be deleting, removing applications. So I assume this use case is very useful for everyone, but we heard from our users that in real life there is a little bit of complication. Typically, yes, you install same set of applications everywhere, but those applications rarely have exact same configuration.  And idea that often we want to logically group our clusters and one example is you might want to split your clusters into test clusters and production clusters and test clusters maybe get new versions, upgrades a little earlier than production. And obviously we do not want administrators to queue CTL, access a dozen of test clusters, reconfigure them one by one and then rework the temporal configuration. We want to leverage Git for it as well. And so this Git repository kind of have a room for this use case as well. So here we have groups directory that represents groups of clusters. Each sub directory is a group. And so idea here that administrators can bootstrap all test clusters with the manifest from group test. And next, let's say administrator wants to upgrade traffic component. To do so admin would need to create this directory and name important here. It has to be named traffic. And then application set should notice it and it should switch traffic application in all test clusters to this folder. And basically if administrator does a good job and put appropriate manifest there then traffic will be running a new version. So is that enough talking? We can see it in action. Let me switch from screen mirroring actually to screen mirroring so you could see. Awesome, yeah, you can see my screen. Yeah, we can see that. Let me stop this and stop this. Okay, I hope you can see my screen well. So what I was going to say is I hope you followed me. If not, don't worry because we have this awesome Git repository. And it kind of describes everything that I just said and basically it implements the idea that I was proposing to implement. So I hope you had a chance to take a screenshot and the presentation itself will be available in the talk profile page. And let's go ahead and open the repo. Few words about the repository is as I said it's kind of a repeat of the same presentation that I described. It has a set of steps that explaining what we are going to do. It has list of things that you need to have before you run this demo. It's not a very long list. So we have here kubectl customize argocdcli and some Kubernetes cluster. It doesn't really matter what kind of cluster. I'm using K3S. You can use kind or mini-cube. And that's it. We can go ahead and do the demo. So, and I already gave you a heads up. Basically, this demo is like super GitOps. There is not many things to do. It's just to show. And I need to run one command. I will run it really quick and then I will explain you what I just did. So I applied a set of manifests and I bootstrap my K3S cluster with the base set of manifests meaning it's not part of any group. It uses just the base configuration. And this base configuration it's represented by the manifests in the base directory of my Git repository. And so here we have three folders. One for argocdc itself, grafana at traffic. And so expectation here is my cluster should magically get three applications including argocdc itself. And there will be also grafana and traffic. And so as I was describing, oh, and let me actually show you what the argocd installation is. So argocd installation is described in this customization.yaml file. And so as Leo mentioned, we have in official repository, we have a set of manifests specifically for argocd core. And this is what I'm using in my customization.yaml file. And plus I'm also, I have an application set that implements the magic logic that I was trying to describe during the presentation. So I will quickly show you application set. And it has around how many 51 line of yaml. So it's a little bit complex, but trust me, it's not that difficult to understand. We don't have too time to actually learn how exactly it works, but trust me, it's not that difficult. And it's pretty powerful component. In case you want to improve this conversion driven setup, you can definitely do it and leverage application set to do the work. So we've got the idea of what we just installed. Let's see if it actually worked or not. So I'm switching back to my cluster. Hope you can see my screen. And so we installed base, so core argocd, there is no UI, no IPI. So the best we can do by default is to just use kubectl to get list of applications. We've got three of them, which is good. So application set did its work.  One is broken for some reason. So traffic is, for some reason has unknown status. And next we want to maybe figure out why did it broke. So we can try to use kubectl again to get the yaml output. Sorry, yaml. So it works. I already know what is broken, but it's kind of, it's not the best way to explore what's happening in argocd. And now it's time to teach you about one of the features that supports argocd core. So argocd-cli has a magic option. Basically you can teach the cli to assume that there is no IPI server and it just needs to use Kubernetes itself to get the metadata of argocd. To do it, you just need to run argocd login command that probably already are familiar for you. Instead of giving an IPI server URL, you can just provide this flag, argocd-core. And that's it. So cli knows it needs to talk directly to Kubernetes. And now I can use a little bit more powerful kind of cli-based UI to get information about applications. So I can, for example, list my applications and get more meaningful output. So traffic was broken. We can check more details about traffic. Hopefully this is a bit more easy to understand what's happening with the traffic. But it's still, it's not perfect because there is also a user interface. And now it's time to show you how to get access to the UI, assuming that we have no IPI server. And it's basically, there is not much to do.  It just starts an IPI server on your local host and IPI server configured to use no RBAC except Kubernetes RBAC. So if you as administrator has access to that cluster that run argocd, that means you're able to access this user interface and there is nothing to configure. And so here I just opened the UI that runs on local host. It has three applications. Argo CD itself, Grafana and broken traffic. I kind of I know why it broke and knew it will happen before the demo. The reason is when we kind of bootstrap Argo CD itself and all those applications, Argo CD needs time to start. And the application will be, it will remain in a broken state for like three minutes or I can click just refresh button to fast track it. So yeah, it, I told application Argo CD to kind of check it one more time. It did it and it immediately synced the traffic. So that's it. Now we have Argo CD. It has no UI, but I'm able to use it just like a normal Argo CD using CLI and UI. And now it's time to see if we're able to solve the second use case which is groups grouping of clusters. So I kind of for the sake of time I decided to just not introduce any new applications and overrides. Instead I'm going to reboot strap my cluster and kind of assign it to group, the clusters group that I'm calling test. And here I have override for Grafana application. And what that means is I just want to make sure that Grafana now is going to use different set of manifests which is specific to the test cluster. And to make it a little bit more self-explanatory. So here is my Grafana application. It has a path in my Git repository. Currently it points to the base which proves that it's basically using this base set of manifests. So next I just need to kind of reboot strap my cluster and assign it to the test. To do so I need to apply test manifests of Argo CD. And then Argo CD and application set is going to know that cluster belongs to the test group. So if we switch to the user interface you can notice that Grafana was doing something. It was basically upgraded to a new version and the path changed to the test. So and that's pretty much it. So we solve the use case. Now as an administrator I pretty much never, I have no reason to access my Kubernetes cluster to reconfigure it and create or delete applications. I can do all my operations in Git and I no longer need to run user interface. So I don't need to protect it. I don't have to set up any groups and any SSO authentication and so on. So I hope you enjoyed the presentation. We really value your feedback. This is your chance to give that feedback. So let's carry this QR code to access the UI that lets you provide feedback and please ask us any questions if you have any. Thank you. I'm supposed to I guess choose who. Yeah, go ahead, please. I think you had a question. Sorry, we don't have a mic, I will repeat it. Hi, to understand the purpose of CD core and usual Argo CD you would recommend to use CD core for production to have less way to secure to protect? Basically, Argo CD core idea that we recommend to use it for cluster bootstrapping. So in case of application, if you want to serve multiple application developers teams I would still recommend to use centrally managed Argo CD because that will serve application developers better. They will have a single glass of paint that show them application across multiple clusters. And then as admin, you might choose to use Argo CD core installed and managed clusters to manage system add-ons, kind of cluster add-ons. Thank you. That's because you mentioned that advantage is not to have the burden of SSO, but other way SSO can be used fully depends on the team and if the target is a bunch of developers or only admins, yes. I think cluster administrators is the best example of a team who already has full access, good level access to all the clusters and this is who we hear a lot from. So those people basically kind of explaining that hey, we don't need SSO, we have cluster access, but we just want to have a tool to manage clusters. Yeah. Any more questions? Thanks for the demo. So I have a question. How do you solve the dependency between two components when you're installing a cluster? Because just to give you a context, we have a cluster, but we have like 10 to 15 different components like cert, manager, leds and script and tons of different of those. Sometimes there are dependencies between the component that you need to manage, but we solved it differently, but I was just trying to understand if you use ARGO CD as an installation, how do you do that? Yeah, that's a known problem and there was a progress. So the most recent version 2.6 has a feature in application set. It's called throughout strategy. So you can literally define dependencies between applications and application set will respect it. It will sync the applications in the order that you specify and it would wait for first wave to be healthy and then it move on to the next one. The only caveat, it's like alpha feature. Basically, it's been available and we're waiting for feedback from users. We're going to fix bugs. Once we get enough feedback, we'll mark it as ready for production. And the other, yeah, thanks for that. Now we know. And the other thing like you said that you need a controlled group, like let's say if you want to upgrade the Grafana and not changing the configuration for all the cluster, then you use the different group and then you point the application set to choose from that path. Invariably, if you like, just a suggestion or maybe I just wanted to validate my thought. But if you have everything in a base, but then on top of base, if you have another folder called patch, which you have apparently, like you have a Grafana folder in the patch and you have just resource YAML in this, which means that you have the only thing that you need to override, which means that you want to upgrade. You cannot point the exact path to that patch to from start, from get go. So maybe I misunderstood the question, but let me try to answer and correct me if I got it wrong. So basically what I was trying to demonstrate, I think exactly that. So application set, assume that everything in base is the base and then what's in the test group, those things are only patches. So if you introduce, let's say, patch for traffic, it won't touch anything else. It would only update traffic. Yeah, what I didn't implement, but it's implementable, I did not implement deletion of applications. It would require a bit more complex application set, but it's 100% possible, yeah. Yeah, no worries, thanks. Thank you. Any more questions? Hi, and yeah, thanks for the presentation. Question, multiple clusters. Is there a preferred way to manage them? Is it multiple, RGCD installations, central installation, or anything else, control plane? Yeah, does it? I think there is no officially preferred way by the community. I can tell you my opinion. So just from experience, we worked with the team and it was preferable to have a single cluster that manages multiple clusters. And it worked well for us because anyways, we already kind of solved authentication problem and it just fit well into the way we were using RGCD.  It was consuming like 40 gigabytes of memory and managing like 350 clusters. And then so if I started it from beginning and we didn't have context, I would refer to install RGCD core into each and every cluster and manage it the way I just described right now. Yeah, so, but, you know, with the context that we had, it just fit better into the workflow. So I didn't really answer the question. I guess both ways works and only one hint is if you choose to use centrally managed RGCD, you will have to deal with scalability issues because it kind of implies this instance will have to manage a lot if you have many clusters. Yeah, and like single point of failure argument as well. Yeah, that's true too. Okay, thank you. Thank you. I don't think we have more time for questions, but we have one plus sheet to give away. Anyone interested? Okay, he... You were the first. Thanks everyone.


�江 messages longer when when when when when when when when గాడిికోస్న్ికిలి న్బ్విరిన్నంవట్లి ఖాఖ్వినండిన్న్లా. . songs to your దిిక్నిట్నెనూతు నినిక్లి నికిట్ధితెతు బ్విన్న్లె .  stimulate  सी चादलन्चप्रीझा  सी चीहट़ी करो कूई बास्ठाच्स। श्त्ट्ङीं क्य factorial । tactical । । underground । ।.. । । । ज़ोअ वो जी धेंप करे हैं च्छॉँभो, गो आआडि़्तिप करocide. च्ल्ट खब से टिख उसब्रों़्स,拜拜 manon voy. आज्च estou deshi fazar kahending. ती ज़ांगी खुध है थी यम मेंच मश्norm मैंगउया। Wangya rescued hispp почaro, भीक शाए। तेंसा कहता यह वो जे किछा। We will clarify the following reference. నా కిగైట్ల్ల్కోచి. ఍ర్ట్ట్ల్ల్, కా దికాటుత్విండివినాచూ. అనఘిరడ్రాప్ప్స్డివిల్నాసర్టి. విమెల్ల్లు , మర్టిండి. మర్పికి వా� बार विस्गासो बाद़ी मैं से अगर आप मैं प्शूट्एँ. तो मुझ्व कहँडान्सें क्यदादिगा होष्ट्ले कमपोन है अच्टी of a रोड रोल तो लगाँँँगते वो शाच्टी बाटी करम्म्ही को रवाई अच्टी औरमात बँनारकार बअसम सबस्तुँराब्वा कोल ॐ। ौ ड़ौ ौ ॖौ ॎ Brock Taylor copyright is ौ । ॔ ॔ तट कि पवाए था वेस्टःा। कर लगन वि तिमर्आस Rama-asura- बग्यःई स्थ� manya c кар causa. तट फ्नजिम की लेट ना और विस्खर जी बगयी श� light splitara- विया की लेट विस्� hed剖ाँ को लेट विसच 립ॉत न ऋन था फिण. द़म् town from the student variable consequently I can now perform all operations that I perform programically on these individual components notice that s-.own is a character string effectively a character string show his rules hostel is an integer number so s-.hostel is an integer number is s integer? is it character? is a floating point? it is neither of thatóns is a composition of the three-component that we saw again to go back these are their thrwy components of any variable defined to be of type sttudent info And the beauty is that you are effectively defining a new type which is not provided by the programming language Programming language permits in-float, care, whatever, whatever string but you are defining a new type making CC++ aware that this is now a new type name that I'm giving And therefore hereafter if i define a variable of this type then Automatically every variable which is so defined with there a three components which are listed under that structure And i can do with individual component exactly the same thing thats i could do with the corresponding variables of the type in my Program The way in which we exist or refer to these components is always to say a make variable named .component ॐ जो एक तो पास्वाँँ वाँ ुपती्ने वाइडी क्या. वाँँँँँँँँँँँँँँँँँँ वाँिज़ावाँँँँँँँँँँँ.  कोई पहली ुरी आब आठी आर लोग आई गोभाव। ॑आद व्रउव माझे थे, the structure definitions are incorporated and understood by the compiler when the compiler is looking at either the main program or the function. आद is how the compiler will understand that when I say student info I mean that ST is a variable of the type student info which means ST also has 3 components. And all that I am doing here is I am using a printf segment. Please note also you see out for individual components. This printf is to mention to you that if you want a formatted output each particular value being printed in certain number of columns. You remember that we discussed this pretty printing months and I requested you that you should look up the printf statement and the formatting features. They are available in any standard textbook. In this particular case I am saying printf the first value is to be printed as a string in 6 characters. The second value is to be printed as a string in 8 characters and the last value is to be printed in 4 digits. Please remember that ST dot roll and ST dot name are individually character arrays of 9 and 31 characters respectively. Because when you declare a character array to store a string you need an extra character position at the end to store backslash null that is 0. So is this understood very clearly? Now you can see that while dealing with let us say a record of a student which is very long and which contains many attributes. It may contain date of birth, it may contain address, it may contain father's name, mother's name whatever whatever. You can actually have maybe 10, 15, 20 attributes describing a student. Now ordinarily we had seen earlier how we could create independent arrays to store every attribute and we could have one array containing roll numbers and the only connection between roll number and the other attributes would be through an index. So you said the roll number is let us say 27th roll number in that array. Then 27th element of the names array will contain that student's name, 27th element of hostel number will contain that student's hostel number etc. Suppose if there is any goof up and some array gets disturbed because these arrays can be handled independently then you could have a very funny situation where some roll number is big to some other hostel, to some other room, to some other name. To avoid that it would be nice if you would combine all the information about an entity called student, define it as a part of the structure and within that structure you can have individual elements which refer to a particular entity. So this roll number, that roll number's name, that roll number's hostel, that roll number's room number, that roll number's marks, that roll number's address, whatever whatever. From the point of your project there is an additional information that you might want to include in such a structure. What would be that information? You remember you are going to collect fingerprints of that student. Now that fingerprint cannot be stored inside a structure like this very easily. Obviously the fingerprints will be stored in separate files. But if you have decided intelligently on naming those files, then you can store the base name of any such file for fingerprints as a part of that student's information. So if one student has a file name associated with it, then you can extend the structure definition, can have roll number, name, hostel number, room number, whatever whatever other information and fingerprint file name as a character name. The actual file may be somewhere else, it doesn't matter. It may be in some big directory, there may be 500 such files. But once you know the name which is taught to that particular student, you will always go to that particular directory, open the specific file and you know 100% that that fingerprint belongs to that student. If there are multiple fingerprints, you can have multiple file names in this structure or alternately you can have an array of file names inside this structure. What is important to know is that structure is not limited to have simple components like integer, real, only these things. It can also have arrays as components. So this is an extremely important and flexible feature that permits you to extend the notion of collective groups of information all being given a single name through which you can extend. I am extending this concept to suggest to you that you can actually write a database kind of program. What is a database? Typically you write a whole lot of information about different entries such as student courses, their age, whatever, whatever. There is something called database schema which you define. There are database products and there are millions of lines of code that is written to have those database products. So in those databases you insert all your information. For example currently all the students information is stored in the ASC database. The product that they use is called oracle. There are multiple database products as I had once mentioned when I described the packages. Such products once you put the data into the database you can accept the data by running what is known as a query language processor to which you give queries. For example if you want to get all students of hostel 3 you might write a SQL query called select star from student database where hostel equal to 3. This becomes a simple instruction in a programming language called SQL. The SQL interpreter or SQL compiler will actually handle that query. Go to the database, extract the data and give it to you. What I am trying to show you is that it is possible for you to construct a database of a simple file and write a program which acts as an interpreter to answer simple queries. So let us see what this problem is all about. It says write a program which will read the data about students from a database file called database.txt and will answer queries of the following type given as input. So there is a file called database.txt. Resumably this file stores information in text form about a student and will limit ourselves to the information which we have seen as a part of that structure definition but as you know you can extend that structure definition. So the purpose is that the program should first read this file and read all the data in memory because you can actually have memory RAS which can contain all students data. But anytime any changes happen those changes should be reflected in the file because file remains permanently, memory vanishes. So every time the query has to be answered your program should read the entire data from that file into memory and then answer those queries and we are defining a new query language all about. What is that query language? That query language consists of a query code followed by a parameter. So here is a query code N. If I say L it means I want the name of the student and if I say 8 it means list names of HAT students. If I say R that means I want information about specific role number. The parameter is the role number. So full information about given role number. If I say H followed by 3 I want all information about H3 students. If I say X that means exit. You can see that the definition of M, R, H, X is completely artificial. I am defining it. You can define your own query language, your own symbols. Z means this, P means this, whatever one. It need not be a single character symbol. You can define a query which is more meaningful. So you see the amount of flexibility that you have you can relatively define your own queries and write programs which will answer those queries using the information which has been stored in the files first. It is almost like defining a new programming language and writing an interpreter for that language. Of course the actual programming language definition and writing an interpreter is a big time task. What I am telling you is that fundamentally and conceptually it is a very simple thing which all of you can do. And in fact I would encourage you to consider query for the project databases that you will create or project files that you create. For us database means one or more files. We know how to create files. We know how to read files. But instead of writing a specific program to answer one query I might generalize and I might include the interpretation and execution of those queries in a generalized program. So here is an example. This is a sample program to answer one query. This what is written here is called pseudo code. It is not written in any programming language. It is written in plain English. While we have not studied this way of designing algorithms this is the most popular way in which serious programming starts. You don't start writing programs but you start writing an algorithm on a step by step process in something like a pseudo language or an English like language. I presume all of you can understand what I am trying to write it here and that is the beauty in this simplicity. So what this program says this is not a program in a programming language this is a pseudo code. It says read in the database.txt then set up some variable term equal to 0 while term is equal to 0 reading the option. Option means h or x or r or whatever. If option is h perform action else if option is x that is exact then is equal to 1 n. Now this is the simple kind of query interpretation that you can write. If you have multiple options you can put an else if ladder or the switch statement. If option is h then do this if option is n do something else if option is pq or do something else and at the end you get out. Observe that I have said student info student list 100 this permits up to 100 students data to be stored here. What if I want to input data for all students attending CS 101 the only thing that I have to do is to increase this number from 100 to let us say 1000. What if I want to store the data for all students in the institute campus well let us estimate how many students are there about 7000 Assuming that the program will be used for next 4 or 5 years during which time the population may grow it would be safe to change this to say 10000. As a matter of fact we should not put explicit numbers in real programs we could say something like max student which is defined as a constant because if this number is required to define multiple arrays then by changing the constant value of max student ones and recompiling the program every array that you have defined using that value will automatically be recompiled properly but it doesn't matter. The point I am making is that as per the structure that we have defined we have seen how we define individual variables I can even define arrays where each element of the array now is of the type student info or option it is assumed that the query language that I am designing has one character code h means hostel n means name r means role x means exit etc but you can easily change it to whatever you wish to do there are some integer variables defined I am now defining a file called input stream input file stream f in this is artificial name of which I am giving fin.open.database.txt it will open the text file observe that my structure contains a value which is integer some values which are character there could be some values which are float etc but the file in which I am storing all of this is a text file why? because it is easier for me to see the text file whether it is correct it contains correct data or not etc of course I could define this file to be a binary file we shall see how binary files are handled in the next lecture I am also defining a variable called s which is student info what is the purpose the purpose is when I read one line from that file I would rather extract information about one student into a simple variable of the structure type s in different components I would also like to answer query why I am reading the file where I know what the query is so instead of first reading and then again going through all the other that I have created and finding out the query answer I might as well answer the query as I am reading the data ordinarily however this is not how you will organize you will organize your program such that you read the entire data stuff it into the arrays inside your program variables and arrays and then start looking at query one by one so you can answer multiple queries if you look at the data in the arrays rather than in the files this is a simplistic program where I have written the following way that I read the data and I also answer the query while reading the data let us see what I am doing I first read the value of l this is the number of students then I say for i equal to 0 i has the name i plus plus I read in the s dot name s dot rule done is equal to 0 while done equal to 0 give your option I read the option if the option is x done is equal to 1 that means I exit if the option is h I want to get the hostel number I read the hostel number I output the hostel number now s is equal to student list i so please note I have read the data in the student list array at any point I am going through all the information there are n students so there are n numbers in student list for every value of i I am extracting the information from that student list and passing on to the complex type structure that I have created and the variable is s so every time I do this this assignment is perfectly legal by the way I am taking a complicated group variable array some element from that array and putting it into a single variable s which is again of the same complex type once I do this assignment s not hostel, s not may, s not roll everything gets defined what was my query query was that for a given hostel number give me all the information I will simply check if s not hostel is hostel number that is the hostel number which I have desired that is the parameter for my query say hostel number is 3 for example any time out of these n students every student has s not hostel as 3 that students information will be printed and I am again using the same function print student s this answers the query this is end of y so I can go back and again give another query I can go back again give a third query when I say x when x is given you remember that done would have been said to 1 and the while loop will be back I will come out of so the point that is being made in this kind of query is that in general you should work for storing your data permanently in computer files on the desk arrays are useful to store data temporarily during which time your program is executing so that you can answer different queries but if there is any change that happens by changing the students hostel number or room number for example in a memory array is good for execution of that program but once the program execution stops the changes will disappear correspondingly you may also write another program which is called update database program what does that update database program do it will take any new information about a student and will replace the old information in the file with the new information for that there are 2 ways of doing it one you of course read all the students information from file into the memory then you keep collecting update information about different students every time you get a whole number let's say room number change or a hostel number change you make that change in the corresponding arrays and after all changes are collected you recreate that file you rewrite the entire file with the new information that is one way the second way is that if you are going to update an individual student some information about two students why do you want to read the entire information about all students why not go directly to the file to the place where that student's information is stored and update that information in place that is read the disk as if it is an array of bytes provided you know exactly which byte to update to change the whole number or which bytes to update to change the hostel number you will be able to correctly update that directly this is what we are going to discuss when we discuss random access files and binary files unfortunately this discussion has to happen in the next lecture so we have to close this but this is the direction I would like you to take while you design your file formats and so on thank you


The Scottish Parliament's presiding officer, the right honourable Tricia Marwick MSP, meeting teenagers in Dumfries, along with young female staff of the Scottish Parliament. Her message, be the best you can be. Now she's embarking on a major new initiative to bring young women from here and all over Scotland for a day of events in Holyrood, encouraging them to grasp their value and be unafraid to fulfil the potential they maybe don't even realise they have. The theme is inspiring young women. The Scottish Parliament has got a golden moment to involve particularly young women in the work that we do. We have for the first time ever a female presiding officer, a female First Minister. In addition, the leader of the Labour Party in the Scottish Parliament is a woman as is the leader of the Conservative Party. So we have got very, very senior women at the moment and it seems to me that to try to involve and engage young women now is the moment that we should be doing it. 128 young women from 32 schools across Scotland are set to participate in the event later this month. The presiding officer is supported in this initiative by those senior female political figures. The First Minister, Nicola Sturgeon, Scottish Labour's Deputy Leader, Kezia Dugdale and Conservative leader Ruth Davidson, along with the Lib Dem MSP Allison McKinnis and Scottish Greens MSP Allison Johnson. Other inspirational women in Scottish public life are also set to take part sharing their stories with the participants and taking them through workshops aimed at helping them overcome common obstacles faced by women. And there will be a session in the Scottish Parliament's chamber where the young women will be encouraged to make their voices heard. What's important is that we try to capture what happened within the referendum of people who were engaged. And that's one of the reasons why we're having this conference for young women. The day itself will be an exciting day. It's not just about politics. It's about encouraging young women to be all that they can be. And we have got inspiring women, whether they be politicians and from the charity and business fields who will become to talk to young women about a number of issues that concern them. And sometimes some of the barriers that would stop them getting involved and that's about confidence, that's about body image. That's a whole number of things that sometimes prevent young women. So what this conference is going to do is encourage young women to get involved to be all that they can be and that we hope that by the time they leave the conference they will be inspired. And I'm quite sure that all of those who are taking part in the conference including myself will be inspired by the quality of the young women that we have. More details will be announced closer to the inspiring young women event which takes place on Monday March the 23rd. In the meantime, find out more on our webpage including how to get tickets for the public gallery of the chamber and you can join the debate on social media.