Part one of the Jingle Book. This is a LibriVox recording. All LibriVox recordings are in the public domain. For more information or to volunteer, please visit LibriVox.org. Read by Betsy Bush in Marquette, Michigan, February 2008. The Jingle Book by Carolyn Wells. The Tudor. A tutor who tuted the flute, tried to teach two young tutors to toot. Said the two to the tutor. Is it harder to toot? Or to tutor, to tutors, to toot? A serious question. A kitten went a-walking one morning in July and idly fell a-talking with a great big butterfly. The kitten's tone was airy, the butterfly with scoff. When there came along a fairy who whisked his wings right off. And then, for it is written, fairies can do such things. Upon the startled kitten, she stuck the yellow wings. The kitten felt quiver, she rose into the air, then flew down to the river to view her image there. With fear her heart was smitten, and she began to cry. Am I a butter kitten, or just a kitten fly? Two old kings. Oh, the king of Canoodly-Dumb and the king of Canoodly-D, they went to see in a jigamory, a full-rigged jigamory. And one king couldn't steer, and the other no more could he, so they both upset, and they both got wet, as wet as wet could be. And one king couldn't swim, and the other he couldn't too, so they had to float, while their empty boat danced away over the sea so blue. Then the king of Canoodly-Dumb he turned a trifle pale, and so did he of Canoodly-D, but they saw a passing sail. The one king screamed like fun, and the other king screeched like mad, and a boat was lowered, and took them aboard, and my, but those kings were glad. A Daydream. Polly's Patchwork.  Rumpled, crumpled, soiled, and frayed, will the quilt be ever made? See the stitches yawning wide? Can it be that Polly tried? Some are right, and some are wrong, some too short, and some too long, some too loose, and some too tight, grimy smudges on the white, tiny spot of red where poor Polly's finger bled. Strange such pretty dainty blocks, bits of Polly's summer frocks, should have proved so hard to sow, and the cause of so much woe. One day it was very hot, and the thread got in a knot. Drew the seam up in a heap, Polly calmly fell asleep. Then she had a lovely dream, straight and even was the seam. Pure and spotless was the white. All the blocks were finished quite, each joined to another one. Lo behold the quilt was done, lined and quilted, and it seemed, to cover Polly as she dreamed. Our Club. We're going to have the mostest fun. It's going to be a club, and no one can belong to it but Dot and me and Bub. We thought we'd have a reading club, but couldn't, because, you see, not one of us knows how to read, not Dot nor Bub nor me. And then we said a sewing club, but thought we'd better not, because none of us knows how to sew, not me nor Bub nor Dot. And so it's just a playing club. We play till time for tea, and oh, we have the bestest times, just Dot and Bub and me. Puzzled. There lived in ancient Scribbletown, a wise old writer-man, whose name was Homer Cicero, Demonsthanes McCann. He'd written treatises and themes till for a change, he said. I think I'll write a children's book before I go to bed. He pulled down all his musty tomes in Latin and in Greek, consulted cyclopedias and manuscripts antique, essays in anthropology, studies in counter-poise. For these, he said, are useful lore for little girls and boys. He scribbled hard and scribbled fast, he burned the midnight oil, and when he reached the end, he felt rewarded for his toil. He said, this charming children's book is greatly to my credit, and now he's sorely puzzled that no child has ever read it. An intercepted Valentine. Little Bo Peep, will you be mine? I want you for my Valentine.  None other is so fair and sweet. Little Bo Peep, let's run away and marry each other on Midsummer Day, and ever to you I'll be fond and true.  A long-felt want.  He had a florist's catalog, and turned the pages o'er. Till all at once he gave a spring. Hurrah! he cried with joy. Mama, here's just the very thing to give your little boy. For when we fellows go to school we lose our things, you know, and in that little vestibule they do get mixed up so. You often say you can't take care of them for me. Why don't you buy a rubber plant and an umbrella tree? The Musical Carp There once was a corpulent carp who wanted to play on a harp, but to his chagrin so short was his fin that he couldn't reach up to see sharp. The Intelligent Hen It was long ago, a year or so, in a barnyard by the sea, an old hen lived whom you may know by the name of Fiddledee Dee.  A great wise owl came down one day and hooded at Fiddledee Dee, just hooded at Fiddledee Dee, and he cried, Hi, hi, old hen, I say. Your provincial it seems to me. Why, what do you mean? cried the old red hen, as mad as hops was she. Oh, I've been round among great men, in the world where the great men be, and none of them scratch with their claws like you, they write with a quill like me. Now very few people could get ahead of that old hen, Fiddledee Dee. She went and hunted the posy bed and returned in triumphant glee, and ever since then, math little red hen, she writes with a John quill pen, quill pen, she writes with a John quill pen. The happy hyena. There once was a happy hyena, who played on an old concertina. He dressed very well, and in his lapel, he carelessly stuck a verbena. A great lady. This is the queen of nonsense land.  She carpets her ceilings and frescoes her floors.  Oh ho, oh ho, to think there could be a lady so silly down dilly as she. She goes for a walk on an ocean wave. She fishes for cats in a coral cave. She drinks from an empty glass of milk, and lines her potato trees with silk. I'm sure that for never and never was seen, so foolish a thing as the nonsense queen. She ordered a wig for a blue bottle fly, and she wrote a note to a pumpkin pie. She makes all the oysters where emerald rings, and does dozens of other nonsensible things.  Opulent Olly. One Saturday Opulent Olly thought he'd go for a ride on the trolley. But his pennies were few, he only had two, so he went and made mud pies with Polly. The two bears. Prince Curlylocks remarked one day to Princess Dimplecheek. I haven't had a real good play for more than most a week, said Princess Dimplecheek. My dear, your majesty forgets. This morning we played grenadier with grandpa's appellettes. And yesterday we sailed to Spain. We both were pirates bold, and braved the wild and raging Maine to seek for hidden gold. True, said the prince, I mind me well, right heartily we fought, and stormed a massive citadel to gain the prize we sought. But if your ladyship agrees, me thinks we'll go upstairs and build a waste of arctic seas, and we'll be polar bears. Yes, if you'll promise not to bite, fair Dimplecheek replied, already half way up the flight, her highness by her side. Princess, on that far window seat, go sit thee down and wait, while I ask mercy for a sheet, or maybe six or eight. A pile of sheets his highness brought. Dear princess, pray take these, although our path with dangerous fraught will reach the polar seas. To furry rugs his lordship bore, to pairs of mittens white, he threw them on the nursery floor and shouted with delight. He spread those sheets, the funny boy, or table floor and chair. Princess, he said, don't you enjoy this frosty bracing air? These snowy sheets are fields of ice, this is an iceberg grim. Yes, dear, I think it's very nice, she said and smiled at him. And then they donned the rugs of fur, the mittens, too, they wore, and curly locks remarked to her, now you must roar and roar. Dimplecheek looked out from the cowl formed by her furry rug. I'm afraid of bears that only growl.  The very merry voyage of the macaroni man. This figure here before you is a macaroni man, who is built, as you may notice, on a most ingenious plan. His skeleton, I beg to state, is made of hairpins three, which are bent and curved and twisted to a marvellous degree. His coat sleeves and his trouser legs, his head and eek his waist, are made of superfine imported macaroni paste. And if you care to listen, you may hear the thrilling tale of the merry macaroni man's extraordinary sail. One sunny day he started for a voyage in his yacht. His anxious mother called to him and said, you'd better not, although the sun is shining bright, I fear that it may rain. And don't you think, my darling boy, you'd better take the train? Oh, no, said he, no clouds I see. The sky is blue and clear. I will return in time for tea. Goodbye, my mother dear. Full merrily he started off. The day was fine and fair. And to his great delight he found no dampness in the air. You know, if he gets wet, a macaroni man is spoiled. And if he stands too near the steam, of course he may get boiled. But our hero used precautions carefully. He shunned the spray. And when the steam blew toward him, he just steered the other way. Now, as the breeze was from the land, his course lay out to sea. He sailed so far that he felt sure he would be late for tea. He sailed and sailed and sailed and sailed. He feared the dew would fall. He tried to turn, but, oh, that steam, it would not do at all. A single puff blew toward him, and it nearly cooked his face. The mournful macaroni man felt sadly out of place. But a happy thought occurred to him. Ha-ha! Ho-ho! said he. I'll just sail on around the world, and then it seems to me I'll reach my home, according to a careful estimate, in time for tea, so I'll be, perhaps, a trifle late. Then merrily his gallant ship sped o'er the bounding main. Quickly he crossed the ocean-wide. He flew by France and Spain. Covered the Mediterranean, spanned the Suez Canal. I'll reach my home tonight, he thought. Oh, yes, I'm sure I shall. He skimmed the Red Sea like a bird. The Indian Ocean crossed. But once in Oceanica he feared that he was lost. He passed Australia on the fly, cut over Capricorn, and as the sunset gun he heard, he swung around Cape Horn. Still at full speed he sailed due north. He rounded Cape St. Roque. Crossed the equator and found out the Gulf Stream was no joke. He coasted by the seaboard states. Hurrah! All danger passed. Quickly he sailed the last few miles and reached his home at last. His mother welcomed him and said, I'm glad there was no shower, but hurry in, my bonny boy, I've waited tea an hour. The 404 train. There's a train at 404, said Miss Jenny. Four tickets I'll take, have you any? Said the man at the door, not four for 404. For four, for 404, is too many. A valuable gift. Old Father Time, one day in his study, so they say, was indulging in a surreptitious nap, when from his drowsy dreams he was wakened, as it seems, by a timid but persistent little rap. He yawned and rubbed his eyes in indolent surprise, then slowly he arose from where he sat. He opened wide his door and nearly tumbled o'er the figure that stood waiting on the mat.  His manner was polite, but he said, I claim my right, and I've called, sir, to demand of you my hour. Your what, the old man said, as he shook his puzzled head, and the pertinacious puppy spoke with force. Sir, they often say, every dog must have his day, so a puppy ought to have an hour, of course. The old man shook with glee, but he said obligingly, the dog-days are all gone, I grieve to say, but since you come so far and so mannerly you are, I'll give you just an hour to get away. The Grand Deliquent Goat A very grand deliquent goat, sat down to a gay-table de-oat. He ate all the corks, the knives and the forks, remarking, on these things I'd doat. Then, before his repast he began, while pausing the menu to scan, he said, corn, if you please, and potatoes and peas, I'd like to have served in the can.  The poor rats were at their wits' end, their homes and families to defend, and as a last resort they took the case to court. It seems they called a caucus wise of rats of every age and size, and then their dean, with sapient mien, a very sullen of a rat, said it was best to bell the cat. The quaint old tale goes on to tell how this plan would have worked so well, but somehow flaws appeared because no one would hang the bell. Though there the ancient fable ends, later report the tale extends, no longer is the truth withheld, developments appear, and so you have it here, for the first time set down in rhyme just how that cat was belled. The council, as'd was getting late, was just about to separate, when suddenly a rat arose who said he could a plan propose, which would he thought succeed and meet their urgent need. Now as this rat was very small and had no dignity at all, although his plan was well advised, we really need not be surprised that all the rats of riper years expressed the gravest doubts and fears. Till suddenly he said, said he, if you will leave it all to me, I will avow three days from now that you shall all be free. The sullen council then adjourned each rat to home and fireside turned, but each shook his wise head and to his neighbor said, it is a dangerous job in truth, though it seems not to head strong youth. Now young Sir Rat, we next behold, with manner brave and visage bold, go marching down to London Town, where wondrous things are sold. We see him stop at a large shop and with the bland clerk's courteous aid this was the purchase that he made. A bicycle of finest make, with modern gear and patent break, pedometer pneumatic tire and spokes that looked like silver wire, a lantern bright to shine at night, enamel finish, nickel plate, and all improvements up to date. Said Sly Sir Rat, it suits me well, especially that sweet-toned bell. The shades of night were falling fast when Sir Rat turned toward home at last. The neighbors watched him as he passed and said, what is that queer-shaped thing? Surely that can't be made to bring. Sir Rat went on, nor stayed, to hear the jests they made, and just outside the old cat's gate he stopped and boldly braved his fate, for if that cat should smell a rat, how quickly he'd come out and catch him, and with what gusto he'd dispatch him. Sir Rat, against the picket fence, leaned the machine, then hurried hence, and hid himself with glee, and waited breathlessly to see what that contankerous cat would say when in the twilight dim he saw that brightly shining rim. Sir Rat, though hidden quite and safely out of sight, had scarcely time to wink his eye when Mr. Cat came sauntering by. Ha-ha! said he. What's this I see? A bicycle in just my size. Well, this indeed is a surprise. I'll confiscate this treasure great. How quickly I'll fly o'er the ground when I pursue my hunting-round. He mounted it with eager haste. It suited well his sporting taste. He guided it at will and used the break with skill. He grasped the handlebars, and then, you see it was his custom win, he did a thing to do it well. Of course he used the clear-toned bell. Victory now the deed is done. No longer at the set of sun the rats fly shrieking to their nests. They saunter round with merry jests and nearer a thought of fear, knowing full well they'll hear the bell when Mr. Cat draws near. And young Sir Rat, who did the deed, whose cleverness relieved their need, his wondrous enterprise was lauded to the skies, and everywhere his name was hailed with shouts of fame. In difficulties oft we see modern improvements frequently will prove a happy remedy. End of Part One. Part Two of the Jingle Book. This is a LibriVox recording. All LibriVox recordings are in the public domain. For more information or to volunteer, please visit LibriVox.org. Read by Betsy Bush in Marquette, Michigan, February 2008. The Jingle Book. By Carolyn Wells. The Rhyme of Triangular Tommy. Triangular Tommy, one morning in May, went out for a walk on the public highway. Just here I will say it was a bright sunny day and the sky it was blue and the grass it was green. The same sky and grass that you've all of you seen and the birds in the trees sang their usual song and Triangular Tommy went trudging along. But I can tell you he cared not for the view. He did just what small boys of his age always do. He shouted out scat at a wandering cat and he picked a big daisy to stick in his hat. The clovers he topped and the toadstools he cropped and sometimes he scuffled and sometimes he hopped. He took an old stick and poked at a worm and merely chuckled to see the thing squirm. Then he chanced to look up and in gorgeous array Triangular Tilly was coming his way. Triangular Tommy straightened up in a jiff and put on his best manner exceedingly stiff and as far as his angular shape would allow Triangular Tommy made a beautiful bow. Triangular Tilly went smiling by with a glance that was friendly but just a bit shy and Tommy so admired her that after she passed a backward look over his shoulder he cast and he said, Though I think many girls are but silly I really admire that Triangular Tilly. But soon all such thoughts were put out of his head for whom should come by but Triangular Ted? The very boy Tom had been wishing to see. Hello, said Triangular Tommy, said he. Hello, said Triangular Ted, and away these two children scooted to frolic and play and they had on the green where twas all dry and clean the best game of leapfrog that ever was seen.  Then one, two, three, go! With the greatest gusto Ted flew over Tom in a manner not slow. They played hide-and-seek, they played marbles and tag, they played they were soldiers and each waved a flag. Till at last they confessed they wanted to rest so they sat down and chatted with laughter and jest. When schoolmaster Jones they suddenly spied come clumping along with his pedagogue stride as usual with manner quite preoccupied with his hat on one side and his shoelace untied a surly old fellow it can't be denied and each wicked boy thought that he would enjoy an occasion the thoughtful old man to annoy and all of his wise calculations destroy so they thought they'd employ a means known to each boy and across the wide pavement they fastened a twine exceedingly strong but exceedingly fine and Triangular Tony laughed out in his glee to think how upset the old master would be. Although very wicked their mischievous scheme was a perfect success and with a loud scream a horrible clash a thump and a smash old schoolmaster Jones came down with a crash his hat rolled away and his spectacles broke and those dreadful boys thought it a howling good joke and they just doubled up in immoderate glee saying look at the schoolmasters tee hee hee Tom gave a guffaw and Ted roared a ha ha but soon their diversion had turned into awe for old schoolmaster Jones was angry they saw Triangular Ted turned swiftly and fled and far down the street like a reindeer he sped leaving Tommy to face the old gentleman's rage who quickly jumped up he was brisk for his age and with just indignation portrayed on his face to Triangular Tommy he quickly gave chase and hearing his squeals and his frantic appeals Triangular Tommy fast took to his heels now Tommy was agile and Tommy was spry he whizzed through the air he just seemed to fly he rushed madly on until dreadful to say he came where the railroad was just in his way and alas and a lack he tripped on the track and then with a terrible sudden kerf whack Triangular Tommy sprawled flat on his back and the train came along with a crash and a crack a din and a clatter a clang and a clack a toot and a boom and a roar and a hiss and chomped him up all into pieces like this if you cut out papers just like them why then if you try you can put him together again a modern invention old Santa Claus is up to date and hereafter rumors say he'll come with his pack of glittering toys and visit the homes of girls and boys in a new reindeer-less sleigh an April joke oh it was a merry glad some day when the April Fool met the Queen of May she had roguish eyes and golden hair and they were a mischief making pair they planned the funniest kind of a joke on the poor long-suffering mortal folk in a few mysterious words he said his fools cap close to her flower-crowned head then he laughed till he made his capbells ring at the thought of the topsy-turvy spring tis a fair exchange he said with a wink it is she said and what do you think the flowers that should bloom in the month of May every one of them came on an April day and they looked for April showers in vain but all through May it did nothing but rain an Alice alphabet A is for Alice addressing the Queen B is for Boro-Gov's Mimsy and Lean C is the Cheshire Cat wearing a grin D is the Duchess who had a sharp chin E is the Eglet who barred out long words F the Flamingo the queerest of birds G is the Griffin, loquacious and gay H Humpty Dumpty in gorgeous array I is for insects with curious names J is the Jabberwock burbling with flames K is the King who was whizzed through the air L is the Lobster who sugared his hair M the Mock Turtle whose tears freely flowed N is for nobody seen on the road O is for oysters who trotted so quick P is the Puppy who played with a stick Q is the Queen who ran very fast R is the Rabbit who blew a great blast S is the Sheep on her knitting intent T Tweedledum with his noisy lament U is the Unicorn valiant in feud V is the Violet saucy and rude W the Walrus addicted to chat X Executioner seeking the Cat Y is the Youth Father Williams surveyed Z is the Zigzag the Mouse's tail made The Funny Kittens Once there were some silly kittens And they knitted woolly mittens To bestow upon the freezing hotentots But the hotentots refused them Saying that they never used them Unless crocheted of red with yellow spots So the silly little kittens took their blue And white striped mittens To a bear who lived inside a hollow tree The bear responded sadly I would wear your mittens gladly But I fear they are too gay for such as me Then the kittens, almost weeping Came to wear a cow lay sleeping And they woke her with their piteous request Won't you wear our mittens furry? Said the cow, my dears, don't worry I will put them on as soon as I am dressed Then the cow put on her bonnet To the wreath of roses on it And a beautiful mantilla fringed with white And she donned the pretty mittens While the silly little kittens Clapped their paws in admiration at the sight The Strike of the Fireworks Twas the night before the 4th of July The people slept serene The fireworks were stored in the old town hall Stood on the village green The steeple-clock toiled the midnight hour And at its final stroke The fire in the queer old-fashioned stove Lifted its voice and spoke The earth and air have not to do The water too may play And only fire is made to work On Independence Day I won't stand such injustice It's wrong beyond a doubt And I shall take my holiday Goodbye, I'm going out Up spoke a Roman candle, then The principle is right Suppose we strike and all agree We will not work tonight My stars, said a small skyrocket What an awful time there'll be When the whole town comes together tonight The great display to see Let them come, said a saucy pinwheel Let them come if they like As a delegate, I'll announce to them That the fireworks are going to strike My friends, said a small cap pistol This movement is all wrong Gunpowder, noise, and fireworks To 4th of July belong My great ancestral musket Made Independence Day I frown on your whole conspiracy And you are wrong, I say And so they talked and they argued Some for and some against And they progressed no further Than they were when they commenced Until in a burst of eloquence A queer little piece of punk Arrows in his place and said I think we ought to show some spunk And I, for one, have decided Although I am no shirk That today is a legal holiday And not even fire should work And I am of some importance Here he gave a pretentious cough For without my assistance None of you could very well be put off You are right, said the Roman candle And I think we are all agreed To strike for our rights and our liberty Hurrah, we shall succeed The dissenters cried with one accord Our objections we withdraw Hurrah, hurrah, for the fireworks strike And they all cried again hurrah Then a match piped up with a tiny voice Your splendid scheme I like I agree with all your principles And so I too will strike Suiting the action to the word The silly little dunce Clamored down from his match safe And excitedly struck at once He lost his head and he ran around Among the fireworks dry And he cried, hurrah for the fireworks strike Hurrah for the Fourth of July With his waving flame he lit the punk A firecracker caught a spark Then rockets and wheels and bombs went off No longer the place was dark The explosions made a fearful noise The flames leapt high and higher The village folk awoke and cried The town hall is on fire So the strike of the fireworks ended In a wonderful display Of pyrotechnic grandeur on Independence Day The Arch Armadillo There once was an arch armadillo Who built him a hut beneath a willow He hadn't a bed so he rested his head On a young porcupine for a pillow A dream lesson Once there was a little boy Who wouldn't go to bed When they hinted at the subject He would only shake his head When they asked him his intentions He informed them pretty straight That he wouldn't go to bed at all And mercy-needent wait As their arguments grew stronger And their attitude more strict I grieved to say That naughty boy just yelled And screamed and kicked And he made up awful faces And he told them up and down That he wouldn't go to bed For all the nurses in the town Then mercy lost her patience And although it wasn't right Retorted that for all she cared He might sit up all night He approved of this arrangement And he danced a jig for joy And turned a somersault with glee He was a naughty boy And so they all went off to bed And left him sitting there Right in the corner by the fire In Grandpa's big-arm chair He read his books and played his games He even sang a song And thought how lovely it would be To sit up all night long But soon his games grew stupid And his puzzles wouldn't work He drew himself up stiffly With a sudden little jerk And he said, I am not sleepy And I love to play alone And I think The rest was mumbled In a drowsy monotone He leaned back on the cushions Like that night he had the croop His head began to wobble And his eyes began to droop He closed them for a minute Just to see how it would seem And straight away he was sound asleep And dreamed this awful dream He thought he saw a garden Filled with flowers and roses gay A great big gardener with a hoe Came walking down his way Aha! exclaimed the gardener As he clutched him by the head Here's a fine specimen I've found I'll plant him in this bed He held the boy in one big hand Unheeding how he cried And with the other dug a whole enormous Big and wide He jammed the little fellow in And said in gruffest tone This is the bed for naughty boys Who won't go to their own And then the dirt was shoveled in It covered up his toes His ankles' knees and waist and arms And higher yet it rose For still the gardener shoveled on Not noticing his cries It came up to his chin and mouth It almost reached his eyes Just then he gathered all his strength And gave an awful scream And woke himself and put an end To that terrific dream And he said, as Nersi tucked him up And bade him snugly rest When I am planted in a bed I like my own the best The Rivals Two well-built men Neither giant nor dwarf Were Monsieur Ellums And Mignir Norf They lived in a town not far away And spent their time in work and play Now Monsieur Ellums was loved by all By rich and poor, by great and small And Mignir Norf remarked one day Brother, explain to me, I pray Why no one likes me as well as you No matter what I may say or do I have stores of knowledge packed in my head I am learned and wise And very well read I can dance, I can sing I'm extremely polite I am worth a large fortune all in my own right But still, and this question has caused me much thought While I am neglected You're everywhere sought Monsieur Ellums replied My dear sir, that is true But you see, I am I And you see, you are you If I receive praises and you receive blame Tis doubtless because each lives up to his name You will find his defense rather puzzling, I fear But read their names backward The meaning is clear The new cup I have a lovely new cup from Uncle John, said Dorothy Only see, it has beautiful golden letters on And they spell, remember me Ho-ho, laughed Fred Why, Dorothy dear, they put that on mugs and plates I've studied geography most a year And I know the names of states And when you see that anywhere, at least since this fuss with Spain It's the president who puts it there And it means, remember the main A photographic failure Mr. Hazakahinkel saw a patient periwinkle With a Kodak sitting idly by a rill Feeling a desire awaken for to have his picture taken Mr. Hazakahinkel stood stock still Mr. Hazakahinkel felt his brow begin to wrinkle And his pose assume a sad and solemn style But the periwinkle trusted as the focus he adjusted That his customer would kindly try to smile Mr. Hazakahinkel felt his eyes begin to twinkle And his mouth took on a broad and open grin Said the periwinkle, sadly, if you stretch your jaw so madly I fear perhaps that I shall tumble in Mr. Hazakahinkel felt his hair begin to crinkle As it rose upon his forehead in a fright Though his comrade spoke so mildly Mr. Hazakahinkel wondered wildly How he could escape this dire and awful plight Mr. Hazakahinkel said I fear it's going to sprinkle And really for a storm I'm not prepared Then without a further warning He politely said good morning And the patient periwinkle stood and stared End of part two Part three of The Jingle Book This is a LibriVox recording All LibriVox recordings are in the public domain For more information or to volunteer Please visit LibriVox.org Read by Betsy Bush in Marquette, Michigan, February 2008 The Jingle Book by Carolyn Wells Christmas Gifts Ten Christmas Presents Standing in a Line Robert took the bicycle Then there were nine Nine Christmas Presents Ranged in order straight Bob took the steam engine Then there were eight Eight Christmas Presents And one came from Devon Robbie took the jackknife Then there were seven Seven Christmas Presents Direct from St. Nick's Bobby took the candy box Then there were six Six Christmas Presents One of them alive Rob took the puppy dog Then there were five Five Christmas Presents Yet on the floor Bobbin took the soldier cap Then there were four Four Christmas Presents Underneath the tree Bobette took the writing desk Then there were three Three Christmas Presents Still in full view Robin took the checkerboard Then there were two Two Christmas Presents Promising fun Bobbles took the picture book Then there was one One Christmas Present And now the list is done Bobbinette took the sled And then there were none And the same happy child Received every toy So many nicknames Had one little boy Young America We willy sat a thinking And he shook his curly head Around him on the nursery floor His treasures lay out Spread Firecrackers and torpedoes Trumpet and flag and drum Rockets and pinwheels And paper caps For fourth of July had come But it makes me sort Oh sorry, we willy said With a sigh to think Of those poor little English boys Without any fourth of July A bicycle built for two There was an ambitious young eel Who determined to ride on a wheel But try as he might He couldn't ride right In spite of his ardor and zeal If he sat on the saddle To ride his tail Only peddled one side And I'm sure he would Admit that an eel couldn't sit On a bicycle saddle astride So if he hung over the top He could go But he never could stop For of course it is clear He had no way to steer And under the wheel He would flop His neighbor observing the fun Said, I think that the thing Can be done If you'll listen to me You'll quickly agree That two heads are better than one And this is my project old chap Around our two wastes I will wrap This beautiful belt Of bottle-green felt And fasten it firm with a strap This done with a dignified mean The two squirmed up On the machine And rode gaily away Or at least so they say Who witnessed the wonderful scene Dorothy's opinion Mama has bought a calendar And every single page Has pictures on of little girls Most just about my age And when she bought it yesterday Down at the big bazaar She said What lovely little girls How true to life they are But I don't think they're true to life And I'll just tell you why They never have a rumbled frock Or rid of their life They never have a rumbled frock Or ribbon-bow or rye And though they play with Cats and dogs and rabbits And white mice And sail their boats and fly Their kites, they always look So nice And I am sure no little girl That ever I have seen Could play with dogs or sail A boat and keep her frock so clean The role of Roly-Poly Roy Once on a time A lad I knew His sister called him Bubby His cheeks were red His eyes were blue And he was plump and chubby Indeed he was So stout a boy Some called him Roly-Poly Roy They called him that For he was fat And very plump and chubby He caused his father Grief profound And made his mother worry Because he'd roll along the ground When he was in a hurry For as he couldn't see his toes He often tumbled on his nose So on the whole Twas best to roll When he was in a hurry Get up, the people urged But he replied, There's no use talking I roll around because you see It's easier than walking And though it looked Extremely droll To see the lad lie down And roll, it was Forsooth for that fat youth Far easier than walking One day he thought He'd try to ride Alas, he was so bulky He tumbled off the other side Which made him rather sulky He heard his comrades Jeer and scoff Again he tried And tumbled off And when he fell They'd shout and yell To make him sulky Just out of town There was a place With rolling ground and hilly And here Roy started For a race with Dick And Tom and Willie You'll know of course Before you're told That Roy just laid down And rolled And so you see He easily beat Dick And Tom and Willie Took a munk of alley Seeking some tenpins good and strong For their new bowling alley They reached the hilly sort of place Just as our hero won the race Look at him roll They said He'll bowl On our new bowling alley The other boys are Squarely built for tenpins They'll do finally No matter if a few get killed And then they smiled benignly Quickly they kidnapped Ten small boys All howling with a fearful Noise. They took them all And Roy for ball And then they smiled Benignly They hurried to their home And then began their Barbarous bowling They set in rows the children Ten and then set Roy A rolling But as the giants were strong Great they shot poor Roy At such a rate And with such might That out of sight Poor Roy was set a rolling He rolled and rolled And rolled and rolled But soon his fears dispelling With happiness he did Behold he'd safely Reached his dwelling Secure and safe From further harms His mother caught him in her arms And said with joy My darling boy You've safely reached Your dwelling Now rolling seems to him to be More dangerous than walking And rolly-poly Roy You'll see along the Sidewalks stalking He'll always have a certain fear That giants may be lurking near And so he'll go With motion slow Along the sidewalk Stalking My barometer My little maid with golden hair Comes each morning for a kiss And I know the day will be Fine and fair When Polly looks like this Or I know the clouds Will frown and lower The skies will be dull and gray And perhaps there'll be A passing shower When Polly looks this way But a violent storm Of rain or snow I can prognosticate For the sign will never fail I know when this Is Polly's fate The butter Betty bought Betty bought a bought some Butter But said she This butter's bitter If I put it in my batter It will make my batter bitter But a bit, oh, better butter Will but make my batter Better Then she bought A bit, oh, better Better than the bitter butter Made her bitter batter better So it was better Betty Bada bought a bit, oh, better Butter A marvel An old astronomer there was Who lived up in a tower Named Ptolemy Copernicus Flammarian McGower He said I can prognosticate With estimates correct And when the skies I contemplate I know what to expect When darkening clouds Obscure my sight I think perhaps twill rain And when the stars are shining bright I know tis clear again And then abstractedly He scan The heavens hour by hour Old Ptolemy Copernicus Flammarian McGower An alphabet zoo A Was an apt alligator Who wanted to be a head waiter He said I opine In that field I could shine Because I am such a good skater B Was a beggarly bear Who carefully curled his front hair He said I would buy a red spotted tie But I haven't a penny to spare C Was a cool chimpanzee Who went to an afternoon tea When they said Will you take a caraway cake He greedily took twenty-three D Was a diligent doe In summer she shoveled the snow In the spring and the fall She did nothing at all And in winter the grass She would mow E E was an erudite ermine Who tried very hard to determine If he should earn a cent How it ought to be spent And decided to purchase a sermon F was a fussy flamingo Who remarked to his family By Jinko I think I should go to that animal show But they all talk such barbarous Lingo G was a giddy gazelle Who never could learn how to spell But she managed to pass To the head of her class Because she did fractions so well H was a haughty young hawk Who affected society talk But when introduced At a large chicken roost He excitedly screamed out Oh, lock! I was an idle iguana Who lived upon curried banana With tears he'd protest With tears he'd protest That he never could rest Till he learned to sing Eileen a lana J was a jimp jaguar Who purchased a Spanish guitar He played popular airs At vets and at fares And down at the fancy bazaar K was a kind kangaroo Whose bonnet was always a skew So they asked her to wait While they put it on straight And he said While they put it on straight And fastened it firmly with glue L was a lacrimose leopard Who ate up twelve sheep And a shepherd But the real reason why He continued to cry Was his food was so lavishly peppered M was a mischievous martin Who went to the free kindergarten When they asked him to plait He tackled the job like a spartan N was a naughty nilgah Who wandered to near a buzz saw It cut off his toes And the shrieks that arose Filled all of the neighbors with awe O was an ossified oyster Who decided to enter a cloister He could not return So continued to yearn For his home in the sea Which was moister P was a poor old pole parrot Who had nothing to eat but a carrot And nothing to wear But a wig of red hair And nowhere to live but a garret Q was a quarrelous quab Who at every trifle would sob He said I detest to wear a plaid vest And I hate to eat corn from the cob R was a rollicking ram Attired in an old pillow sham When asked if he'd call At the masquerade ball He said, I'll go just as I am S was a shy salamander Who slept on a sunny veranda She calmly reposed But alas while she dozed They caught her and killed her And canned her T was a tidy young taper Who went out to bring in the paper And when he came back He made no muddy track For he wiped his feet clean On the scraper U was a young unicorn The bravest that ever was born They bought him a boat And they set him afloat And straight way he sailed For Cape Horn He was a vigorous vulture Who taught animals physical culture When a pupil dropped dead The kind teacher said You'd needn't consider sepulture W was a wild worm All day he did nothing but squirm They sent him to school But he broke every rule And left at the end of the term X was a zephyous brave Who lived on the crest of the wave To each fish he would say Good day, sir, good day And then a polite bow he gave Y was a young yellow hammer Who raised a ridiculous clamor And he chattered until An owl said, keep still I'm trying to study my grammar Z was a zealous old zibbit Toboggins he tried to prohibit If anyone tried to prohibit If anyone tried to Take a sly slide He ordered him hanged on a jibbit Found wanting There lived a wondrous sculptor Once a genius in his way Named Phidias Prexitellus Canova Mary Day He sat within his studio And said, I really must Begin Erodean anaglyptic Seroplastic bust My customers demand them Their fame rings near and far But then, alas, the trouble is I don't know what they are Though I could carve a Venus Or a Belvedere with ease My wondrous skill is lacking When it comes to carving these I cast and cut and chisel I model and I mold I copy-poses picturesque From studies new and old In marble bronze and potters clay In wax and wood and stone I carve the old-time statues With improvements of my own I have Apollo on a horse Minerva on a wheel Hercules going fishing With his basket and his creel A mercury on roller skates Diana with a hat And Venus playing tennis With Achilles at the bat It these my customers pass by And ask with interest keen For things with long and tiresome Names, I don't know what they mean And so I let my hammers hang And let my chisels rust For I cannot do an anaglyptic Seroplastic bust A tragic tale of tea The beetle was blind And the beetle was blind And they went to take tea With a scissors grinder The scissors grinder Had gone away Across the ocean to spend the day But he tied his bell To the grapevine swing The bat and the beetle Heard it ring And neither the beetle Nor bat could see Why no one offered them any tea So polite and patient They're waiting yet For the cup of tea They expect to get The erratic rat There was a ridiculous rat Who was awfully puffy And fat I'll carry, he said This plate on my head Twill answer in place Of a hat And then he remarked With a frown I suppose that I must have a gown I'll make me a kilt Of this old crazy quilt To wear when I'm going to town And, of course, though the weather is warm It may be there'll come up a storm An umbrella I'll make Of a caraway cake It'll match with my whole uniform And I'll carry a bottle of ink In case I should wish for a drink And I'll carry a bottle of ink In case I should wish for a drink In case I should wish for a drink In case I should wish for a drink And this flat iron So sweet I'll take with me to eat And now I am ready, I think The two friends A spider and a centipede Went out to take a walk The centipede said frankly I will listen while you talk But I may appear distracted Or assume a vacant stare Because to keep my feet in step Requires my comfort But to keep my feet in step Requires my constant care Said the spider I appreciate your most peculiar case And your feet must be quite handy When you want to run a race But though you gain in some ways In some other ways you lose And, of course, my friend You must be quite extravagant In shoes Ah yes, ah yes A heavy sigh escaped The centipede And I have other trials too My life is hard indeed Why sometimes when I'm very tired A long long time it takes To ascertain with certainty Which foot it is that aches And when I go to dancing class On Saturdays at three I find the first position Very difficult for me Though I put my best foot Foremost And good time I try to keep To my chagrin To my chagrin I often find a foot or two asleep Athletics I attempted But alas I must admit That every exercise I tried I put my foot in it I think I'll join a football team As many friends suggest Before I've one foot in the grave And gout in all the rest But now I'll say good morning For my friend I have to stop To get my boots blacked neatly At this late hour My boots blacked neatly At this little boot-black's shop And as you may imagine It will keep me here some time But what is worse I'll have to pay him many A hard-earned dime The spider said good morning And pursued his way alone And as he went he murmured In a thoughtful undertone I'm a happy little spider And I'm very glad indeed That I was born an octoped And not a centipede End of part three Part four of The Jingle Book This is a LibriVox recording All LibriVox recordings are in the public domain For more information Or to volunteer Please visit LibriVox.org Read by Betsy Bush In Marquette, Michigan February 2008 The Jingle Book By Carolyn Wells The Smiling Shark There was an old shark With a smile So broad you could see it a mile He said to his friends As he sewed up the ends It was really too wide For the style The Mercury's Plaint I don't know Why I'm slandered so If I go high, if I go low There's always someone Who will say Just see that mercury today And whether toward the top I crawl Or down toward a zero I may fall They always fret and say That I am far too low Or far too high Although I try with all my might I never seem to strike it right Now I admit It seems to me They show great inconsistency But they imply I am to blame Of course, that makes my anger Flame And in a fiery fit of peak I stay at 90 for a week Or sometimes in a dull despair I give them just a frigid stare And as upon their taunts I think My spirit's down to zero Sink Mine is indeed a hopeless case To strive to please The human race My spirit's down to zero To please the human race The pirate poodle Once there was a pirate poodle And he sailed The briny seas From the land of Yankee Doodle Southward to the Caribbean He would boast With tales outlandish Of his valor and renown And his cutlass he would brandish With a fearful pirate Frown So ferocious was his manner All his crew looked on aghast And his fearful pirate banner Floated from his pirate mast He reiterated proudly Not had power to make him quail Yet when thunder roared too loudly He would turn a trifle pale And he turned a little paler When there came a sudden squall For this funny little sailor Was ridiculously small And whenever a storm portended He'd be take himself below So much fear and courage blended Did a pirate ever show? An old love Priscilla, aunties promised me A brand new Paris doll And though I love you Yet you see I cannot keep you all Mercy declares I really must Throw one of you away And you're the oldest So I trust you will not care to stay You've lost in arm, your dress is torn Your wig is all awry Priscilla, you are so forlorn We'll have to say goodbye And yet, oh don't my dolly dear Don't look so sad, I pray You precious dolly come right here You shan't be thrown away You're ragged, yes, and lame and blind You're really but a wreck But dear Priscilla, never mind I do not care a speck Your eyes do nicely when they're shut And I can mend the rest Well, perhaps I'll love the new one But I'll always love you best Bobby's Pocket Our Bobby is a little boy Of six years old or so And every kind of rubbish In his pocket he will stow One day he thought he'd empty it So he again could stock it And here's an alphabet Of what was found in Bobby's pocket A was a rosy apple With some bites out here and there B was a bouncing rubber ball That bounded in the air C was a crispy crusty cake With citron on the top D was a dancing donkey That could jump around and hop E was a little robin's egg All speckled blue and brown F was a fluffy feather That was white and soft as down G was a lively grasshopper Whose legs and wings were green H was a grimy handkerchief That once perhaps was clean I was a plaster image That had lost its plaster head J was a jolly jumping jack All painted blue and red K was a keen and shining knife To cut the toughest bark L was a little wooden lion Straight out of Noah's Ark M was a marble large and round With colors bright and clear N was a bent and rusty nail Of little use, I fear O was a tiny oil can Which was always upside down P was a penny Bob had saved To spend some day in town Q was a quilted ear-tab Which had lost its velvet mate R was a ring with a glassy gem Of wondrous size and weight S was a string, a piece of soap A stone, a sponge, a stick T was a lump of taffy Exceedingly soft and thick U an umbrella handle Of silver-mounted horn V was a comic valentine A little creased and worn W was some sticky wax Lovely to pinch and mold X was an old express receipt Worn out in every fold Y was a lot of yellow yarn All bunched up like a mop Z was a jagged piece of zinc Found in a plumber's shop All these are Bob's possessions He loves every single thing And owning all these treasures He's as happy as a king The Instruct-a-Phone There was a youthful genius once A boy of thirteen years Named Cyrus Franklin Edison Le Voicière de Squeers To study he was not inclined For fun he had a bent But there was just one article He wanted to invent It's a sort of a contraption Which will work itself, he said And without studying Will put my lessons in my head He thought and puzzled or his plan He worked with might and main To utilize the wondrous schemes Within his fertile brain Until at last the thing was done And to his friends said he It is the wonder of the age Success I can foresee My great invention is complete And is no idle vaunt I'm sure that my Instruct-a-Phone Will fill a long-felt want The action is quite simple I will try to make it clear This funnel-shaped receiver I apply to my left ear Then in this hopper I will put whatever I wish to learn A page of history or of Greek And then this crank I'll turn The topic goes into this tube A sort of phonograph Which acts directly on my mind It does, you needn't laugh I do not have to think it all For as I pull this chain My wonderful machine transmits The knowledge to my brain The plan was good The works were fine And yet there was a flaw When Cyrus turned the crank around The neighbors watched with awe He confidently pulled the chain With motion quick and deft The knowledge entered his right ear And came out at his left He tried again a page of Greek He tried a theme occult A message and an errand Every time the same result Then Cyrus knew That somehow his machine Had missed its aim For though the works ran smoothly It was always just the same No matter what the book might be Or what it was about It would go in at one ear At the other it would come out So in his laboratory Baffled Cyrus sitting alone Strives to correct the sad defect In his instructive phone But it is my opinion There's no fault in the machine The trouble is that Cyrus Is like other boys I've seen The lay of the Lady Lorraine The Lady Lorraine was sweet and fair The Lady Lorraine was young She had wonderful eyes And glorious hair And a voice of a cadence Rich and rare Oh, she was a lady beyond compare By all were her praises sung Till valley and plain Took up the refrain And sang with the praise Of the Lady Lorraine And besides all charms Of form and face There were other attractions about her grace Besides her delicate lily-white hands She had rolling acres And broad rich lands Besides her patrician coat of arms She had far-reaching Fields and fertile farms And of many an ancient And wide domain The beautiful Lady was Chattelaine So, of course, at her door There were suitors galore They came by the dozen And came by the score They came in droves And they came in hordes Tilted nobility, princes, lords Dukes and marquises Viscont and piers Ambassadors, marshals Grandes, grenadiers Barons and baronettes Earls and esquires Illustrious sons of illustrious sires But was ever in vain They sought to attain The heart in the hand of Lady Lorraine And day after day They turned sadly away For the Lady Lorraine continued to say Decidedly, certainly, stubbornly Nay! She cared not for wreaths Of laurel or bae Or rent-rolls or uniforms gay Their metals or ribbons or gaudy display Their splendid equipment, demeanor or bearing She observed not their manners Nor what they were wearing Their marvelous exploits For her had no charms Their prowess and turny Their valor at arms Their wondrous achievements Of brawn or of brain All, all were as not The Lady Lorraine To each suitor she'd say With her hand on her heart Sir, I ask of you only That you will depart In vain they entreated They begged and they pled They coaxed and besought And they sullenly said That she was heart-hearted Unfeeling and cruel They challenged each other To many a duel They scowled and they scolded They sulked and they sighed Now the reason for this As you may have divined Was because in her maidenly heart Was enshrined the image of one Who was just to her mind Who was loving and kind To whose faults she was blind The Lord of her heart And the love of her life To whom she had promised To be a fond wife Her Highness was happy For even now he was hastening To her across the blue sea He'd written to say he was then on the way And would greet his fair lady On Christmas day. Twas Christmas Eve In the old oak hall Preparations were made for the Christmas ball. Gay garlands were hung From ceiling and wall The eulog was laid The tables arrayed And the Lady Lorraine And her whole cavalcade From the pompous old steward To the scullery maid Lightment and bluster And everything shown With a marvellous luster. Such savoury viennes The larders presented Such wondrous confections The bakers invented Such pastries and cakes Of eccentric design Such sparkling decanter Of rarest old wine And ready at hand Was the great wassel bowl And the jolly old boar's head Was carefully planned And carols and glies Would be played by the band. At last all was ready The workmen were done And awaiting the jollity Merth and frivolity The games and the dancing The feasting and fun The old hall was empty Save only for one. The Lady Lorraine Who surveyed it with pride And said, it is worthy Then a bright smile Illuminated her happy young face Rogish eyes twinkled And gaily her grace Crossed the old polished floor With a step light and quick And her high, slipper heels Went clickety-click. She looked cautiously round She was all by herself.


All right, I always get the question, is Helm popular? Hmm, this room seems to be so much full. So it must be somewhat popular. Hey everyone, welcome to the session today talking about Helm. Chart your course like a champion. My name is Andy Block, I'm at a single shark attack at Red Hat and a Helm maintainer. I wanna introduce the wonderful pal here that's gonna walk you through the entire charting your course like a champion. Let's start over here with Scott, Scott. That'll help. Hey Scott Rigby, I am one of the Helm maintainers. I also co-maintain Flux and some other things in CNCF. And yeah, I used to co-maintain the stable and incubator charts repose so I can help answer questions about that as well and it's just nice to be here. I'm Joe Julian, I also am a Helm maintainer. I work somewhere I can't talk about. Some kind of stealth thing. Stealth thing. I have written a lot of charts professionally so I know a little bit about it. Okay. And I'm Karina Angel. I also work at Red Hat and I'm also a tech lead in tag app delivery, technical advisory group. Does anybody know what the technical advisory groups are? Raise your hands. I don't see many hands. Okay. All right, sounds good. Okay. Go ahead and getting started. Really, we're looking at mastering the art of Helm charts because what is a Helm chart? It is like a recipe. Okay, let's look at the menu. We have our chart structure, our life cycle, our objects. Let's go on to the entrees which they actually are all gonna talk about in a little bit and then your desserts, your testing, your release management. And then as we look at, we don't even have notes up here. What happened to them? I'd like to say that I can do this without notes but it's been a very long week so bear with me while I actually look at the notes. Okay, that's okay. Who here is new to Helm? Actually, okay. Anybody on this side? You are? Okay, okay. If you go to Helm.sh, we have, Helm.sh, we have, it's really comprehensive. Our web docs, all the intro docs, please go there. We didn't focus this on an intro to Helm session because we do have a lot of people here that know Helm. So we're looking at, so I also wanna know who here is a maintainer of a project or contributes to a project? I only saw like three hands, seriously? We're at KubeCon. No, let's be serious. There's plenty of opportunity in the room. I know, right? Okay, okay. Wow, this is gonna be, we have to talk. So I know who wants to be a maintainer? Who wants to contribute? Okay, thank you. Please go to Helm booth. Please show up to the meetings because this project that many people rely on requires contributors, requires maintainers. Not everybody gets paid to do this, right? Anyway, this is a very popular project and for good reason, it's package management for Kubernetes, right? Okay, so who here does use Helm charts in their applications, see? A fair bit more than the number of maintainers and contributors. Right, and who writes Helm charts? Okay, okay. All right, so we have to talk to all of you. All right, so when you're, let's look at the primary components and we'll keep moving on. All right, you have your Helm chart, right? You have your values config. And then using the CLI, we can release your chart and let's look at the chart structure. It's like a tar ball, right? And these are the files that we're gonna look at, but really, I do want to pass this on because actually the meat of this is gonna be between these three. So the Helm chart, as you saw in that structure, has a number of components. The first topmost one would be the chart YAML. It's the tool to tell Helm what this thing is, how it's used, mostly to communicate that to users. So there's references to the chart homepage, there's documentation, there's support resources that should all be linked from your Helm chart so that your users can find out how to use this thing. There's annotations which are fairly free form. If you want people to find your chart, you can go to Artifact Hub, they've got a long list of annotations that you can add to your charts so that it'll actually populate their GUI and make it look all nice and pretty. And it makes it discoverable. Super useful. The big one also is if you have issues with the charts, as you're consuming it, because there's a lot of charts out there in the open source, being able to understand what resources provide assistance, whether it be a GitHub repository, whether it be an email that you can email or email support channel, or even a Slack channel. Being able to provide as much information as you can inside your chart.yaml makes your chart more consumable. The worst that I ever see is a chart yaml that has a name, a version, and a description. That's not gonna be very helpful. If you provide full metadata, you make your chart more discoverable, more usable, and more consumable, and easier for you all. Yeah, can I chime in on that real quick? And specifically, my favorite is the Git repo. So, the reason for that is there are people that want to probably contribute to your chart. There are possibly people that want to contribute to your chart, that's what I mean. I don't know what charts you maintain, or what charts see you, right? But it's very likely, you know, especially if someone finds it there. And what's going to happen if they don't know where the source repo is? There may be emails, you know, for the list of the chart, the maintainers of that chart. But honestly, a lot of people are shy, and also impatient. So even if there's a way to possibly contact you, it's very likely people aren't even going to bother because they say, well, we need to use this now. They're going to fork that, and they're going to make their own changes themselves, and any benefits that they add aren't going to get into your charts. So that's just a suggestion. Please do that. And yeah, if you don't want to know what we're talking about, it's not part of the main chart.yaml, but if you look on artifacthub.io, what Joe was talking about, there's a list of the annotations. So that one would be great. It's just key value, and just say source, or something like that. And people will love you for it. I even do that with the charts I just write for myself. I still post them up publicly. Every once in a while, somebody actually finds one and wants to use it, and actually sends me a pull request. It's really surprising. Oh, and the other thing you can do on them is you can clearly denote which charts are deprecated. So if you're done with this chart, you don't want to do it anymore. There's a weight of mark that deprecated so that people can still find it, so use it, but they'll know that it's the end of life, and they need to figure something else out. Can I see some of those self-documenting? Yeah, I can talk to this as well. Definitely utilize the tools for self-documentation. So if you're looking at really making life easier on yourselves as creators, I can't tell you how much pain I had trying to go and populate or read me to make my values consumable. How many experienced the challenge of creating good documentation for Helm charts? How many of you are doing it manually? There are tools that can help with that. So they're not necessarily a part of the Helm project, but other projects have seen some of the challenges, and you can leverage those and adding comments into your values.yml file will allow those other tools to be able to render, read me automatically. You can create basically a template for your read me, and it can get rendered. You can do it as part of a pre-commit hook. You can do it as part of CI. You can really start taking advantage of the tools available to make a chart, you know, US chart designers and producers much easier. One of them is Helm docs. There's a couple other ones out there, but Helm docs is the one that I personally use. Definitely look into that. Also, honestly, I'm lazy, so I had started for a long time not making a big table of the values in the read me, but if I had Helm docs earlier on, I totally would have done that. But it's also legit to say, hey folks, just do Helm show values or whatever, and just make sure you put comments in your values file. So the next one is gonna be on the library charts. How many of you either know what a library chart is or have used a library chart itself, you know, created one? Okay, as you start to develop more and more charts, similar charts, you're gonna start seeing patterns evolve. And instead of having to do the same pattern over and over and over, one that I use typically is I wanna be able to support either a, for the image reference, either a tag or a char digest. But I don't know which one I wanna use, potentially. Some might be available in shop formats, some might be available in digest formats. So I can go ahead and create a reusable partial function, put that into my library charts and then just bring that into all my other charts. It makes it really easy to create, you know, a set of very clean application charts without having to fill out your helper's demo file or any of your parcels with the same data over and over and over. And then finally, use, you know, intuitive names for your functions and your parcels.  Makes it really easy for you to plop it in over and over. It makes it easier for consumers to be able to do the same. Now let's switch over to Joe now. So obviously, as everybody knows, a Helm chart is made up of templates that are rendered and applied against a Kubernetes API.  And it'll create your resource and it will apply it to the API, creating all the deployments and services and all that stuff that you wanted to deploy. For those who don't know, Helm templates use the GoLine template engine with a bunch of functions. There's most of them are sprig. There's a few others that are just built into Helm. But they're a really powerful set of tools even though they're really simple and you can do some really powerful things with them if you use them correctly. And then the other question, which I hear a lot is why do I need to use Helm? Why wouldn't I just create manifests? And I tell people that if manifests are right for you to do it, sometimes you don't need to template things. You only need to deploy the same thing over and over again, it's no point.  Oh yeah, and remember that value sample is not a template. Don't put your GoLine formatting into it because it's not gonna render. But really the powerful part of all this is those functions and name templates. So with name templates, you're able to write your own functions to do processes, maybe they may be complex processes, they may just be repetitive processes like he was talking about. So with complexities, like on this one, I got this complex project. This complex, I've seen actually, this is simple by comparison. I've seen some that have ands or ifs, ands or or ifs. And just like it goes on for like, literally to went for a half a screen that I had to tear apart. It's unreadable, you can't, you don't know why it's doing what it's doing, how it's doing it. It's just really hard to read. But if you take this all apart, and I didn't, I don't have an example, but if you take it all apart and put in a name template, you can actually just do like, if this thing, then do this.  And then when you go to call it, you just say, include this named function dot, and then it'll do all that complex logic and actually give you a result, whether it's, well, it gives a string result and I'll go over that in a minute. But yeah, it just accepts a dict also, so you don't have to pass it all your values. You can just say, oh, I want this function and it's gonna process these three things and you build your dict and pass it in. So it's really powerful if used correctly. Can I note one quick thing? I don't think, we don't have a slide to talk about this right now, but we can talk afterwards if anyone wants to. If you're not using a post renderer, this is a really good section to think about it in. Because if you've got, I don't know if any of you know about this, but Joe, you were saying, people ask you, why not just use manifest or why not use customize? They are great tools, do it, do it, absolutely. But one thing is you don't have to choose. Either or, you can have your Helm chart with these name templates you can have, basically you're repeating common logic that you two were talking about. But if you've got edge cases, like say you reuse this template across your org, or excuse me, this Helm chart across your org, or between several orgs or whatever, and you've got an edge case that you're only using once, use a post renderer for that. You don't necessarily need to clutter your chart with that logic and what a post renderer is just means that you can actually use a customized patch with a Helm chart and that you don't have to spit out templates for it. You can, there is a step during the Helm release life cycle that you can choose a post renderer and just use that little patch. One or two, however many patches you have for your edge cases. It's nice, it can keep your charts clean and look into it if you haven't. Absolutely. Yeah, it's really great too because then you can take some upstream chart that doesn't support the things you need for your dev integration in prod, and you can use customized to build dev integration in prod. So name templates, here's an example. This actually comes from your basic Helm create function. And it's slightly complicated because first of all, your names of things can only be 63 characters long. So if you happen to name your release, you know, some really long string, it's gonna fail if you try to append, say, the name of your release to it. So you've got your chart name and release name and that's how it creates some defaults. And it shrunk into all the 63 characters. But you also might want to override it and that's where you have the chart name values, name override. So if you put in your values, name override equals something. When it comes to that part, it'll replace all the stuff that it's creating with the name that you wanted it to be. So this is really cool because then you can take and you can put a reference to this any place you need to name something.  And that way you only have to do it once. You don't have to have all this complex logic of figuring out what is the name of this resource. You just have this named template that you call with just a include. And include food.fullname. And it'll actually do. We just spit out the formatted name based on that thing. And you can see, as I did, as I show there, if you run a Helm template, my release foo, that whole thing just creates my release-foo. Anything else to add? And you can do a lot of this stuff because there are a lot of built-in objects. So obviously we talked about values.  Values is what goes in your values.yaml file. It's presented as values. And then whatever's in your yaml. I think everybody's familiar with that. But there's also release, which actually, the previous slide, can I go back with this? Oh yeah. So you can see here it actually uses .release.name. So it's the name of the release. So when I Helm template, my release foo, my release is the name of my release. And so it actually uses that information in building the name. So you can use, there's several fields under release you can look at. There's actually chart, subcharts, and templates. So under those objects, you actually have all the data that's in the chart, the subchart, the template. I actually have a chart that I wrote at Red Panda that I wanted to pass a bunch of values to it, but I didn't wanna have to make the user duplicate all the same values in the values.yaml file for the parent chart and the subchart. So I had set a flag in the subchart, which is basically tells the subchart don't render this chart. And then I built all the values from the master values for the subchart. And then I just used the files, actually I used files down there to reference the file of the subchart and template the whole thing in the master. It's really hacky, but it works really well. So it's fun little tricks like that. You can use all of these for capabilities, of course, we'll tell you what capabilities your API has. If you run this against the actual CUBE API server, it'll tell you the capabilities of that API server. If you wanted to look at all these objects, which I do all the time, because there's always things that I forget where they are, it's really simple to just create a yaml file that just dump everything. I usually throw something like that into the actual chart that I'm rendering. And then I'll do a Helm template and get all this massive amount of data and then I'll find this piece that I want. But it's really handy to look at all the different variables in there. The documentation lists them, but it doesn't list them in depth because in depth there's a bunch of things that are there that aren't there and only there because of the way you wrote your chart. It's these little tips and tricks that save you a lot of time. You do the same thing over and over and over. Okay, maybe you save 30 seconds here, but that adds up. You can look at all the different types of objects, not all the different options that are available. So we really want to emphasize today is really a lot of the tips and tricks that you will often use to be successful. So out of the functions, those are the built-in objects you can use although much of these functions on those objects. Primarily the functions are provided by Sprig which is an upstream repo. Sprig provides a complete list of a library of functions, the string manipulation, mask, dates, lists, everything listed there and then a bunch more. Some of the ones that I'm going to highlight here to from YAML and JSON, those can be really handy. For one thing, the name templates that I was showing earlier, they always return a string, always. But if you may want something more than a string, you may want it to return a dict. If you take your output from the named pipe, run it through to YAML or to JSON and then take the output of that and run it from JSON, you end up with a dict. It's super handy. And you can do things like version comparison which is also useful. You've got an application that supports this flag this way and this version but then the major version upgrade changes that flag and you have to do it a whole different way. If you compare the, if you do the version comparison against let's say the tag which should hopefully represent the version of your application, you can change the behavior of your chart to match the version of the software you're serving which means you can have one chart that supports multiple versions of your application. I use that heavily at Red Panda. And of course you can also, because it's checking versions, you can also query the capabilities of Kubernetes and it'll tell you the version of Kubernetes and you can check against that and test, oh this version of Kubernetes doesn't have this resource. You're running a very, very old ingress resource for some reason. You can ensure that, well, okay, we want to make sure we use this API group versus that API group. So you can extend the range of Kubernetes versions that you can support with your Helm chart if you have, say, enterprise customers who don't like to upgrade. I know, yeah. Oh yeah. And then a very underused function out of Sprig that I see is dig. Digg's really cool because if you've got your Helm chart, it has, are you seeing, your values and you want to deprecate some value and move it somewhere else. Say I had under, well, Red Panda listeners, HTTP, internal, TLS enabled. That was a long way down. And you had to do that for every listener. And maybe you want that, maybe you don't, but one of the things we wanted to have was like, no, I just want to turn them all on. So we had a top level TLS enabled, but then it was like, okay, well, how do I know if it's enabled? So, well, what if the enabled isn't on the listener? Well, then if you evaluate it, it's always gonna be false if it's not there. But it's not an actual, it's just bizarre because if you wanted to override something, you end up with this false when it's not really false. So a dig you can go through and you can say, from this resource, I want to go this depth, this depth, this depth. And if it's not there, this is the default I want. So you can set something to true even if it evaluated to false, even if the key wasn't there when it got to that level. Which is super handy. So, oh yeah, I actually have an example. So, oh no, this isn't that one. It is that one. Yeah, so this is one where if oh, this is just about returning JSON. Yeah, so returning JSON. So, I think I remember this. So if you, I've got this helper and it's gonna check to see if TLS is set. But TLS is commented out. So, or excuse me, enable is commented out. So, normally it would error if you tried to get values.tls.enabled because enable doesn't exist, he doesn't exist. But with this dig, it's gonna check under TLS. Can I point to it? There it is. Dig's gonna check under TLS, under enabled. And if any of that fails, just the result is false. So even though that key isn't there, it's gonna return false. And because I've got the two JSON, I put it into a deck with the key bool.  It's not an empty string. It's not a, you could get an empty string. This is actually, I don't want an empty string. I just wanna know if it's true or false. This is the way to do that. Got any other cool tips? You gotta get them, I gotta roll them. Okay. Version comparison. Again, this is how you can compare your application version. I've got a named template that is called apt-asimver. I can compare the versions and do something based on the results. Or my app doesn't support that deprecated version. I just call a fail and avoid melting your CPU. By the way, the fail function, go back and check this out if any of you aren't using it. It's so handy in so many ways. We can do a whole session on that. So talk to us after. Another spree, another spree function by the way. All right, nice job. All right, test it. Okay, awesome. How much time do we have? Five minutes. Okay, cool, because I can talk for like five days in a row about this kind of stuff and just, I'll try to keep on track, but easy to fill up time. So, oh, thank you. All right, yeah, so, okay. So how many of you actually have like, use Helm testing to test your charts? And you can be totally honest about this. Usually it's not that many people. But it's cool that some of you- We're talking the in-provided Helm testing, not any others. Yeah, yeah, it's cool that some of you do. And it's so handy, basically. I mean, whether you're making your charts available to the public or not, it's really, really handy. It's so handy that when we had maintained the, I don't know how many of you used the stable and incubator repose when you first started using Helm, like Helm install, stable, WordPress, or things like that, that hasn't been around for a few years now. We've moved to distributed repose. But if you did, you'll know that they were all very well tested. That's one of the reasons that people use them. There are still important Helm repositories out there. And not just, I don't mean just necessarily reposing as an HTTP repose, like for example, build Bitnami is one very good example of a Helm repository, even though their charts are an OCI too. But the actual source repository uses Helm testing before every commit and they also regularly run Helm testing. How many of you have either used Bitnami charts or have seen them, referenced them? If you haven't, please just look at them. You don't have to use them. They are a great resource on how to develop against Helm. Yeah, yeah, a lot of the Bitnami folks initially were also co-maintainers of that repo I was talking about, the former centralized Helm charts repository with the hundreds of apps and stuff like that. It's still archived, so you can check it out if you want to, even though they're way out of date now. But the point is, they were on that and they continue to follow a lot of those processes that they themselves set up and many of us also set up and collaborated to develop, to help consolidate and build best practices for Helm charts. Again, some of them, you might have better best practices, so I really wanna hear from all of you who are doing this in the wild now because things continue to improve. But anyhow, so testing, the, really the easiest way to start is you'll see a template if you do Helm create foo, your foo chart is going to have a test, a test directory, yeah, in the templates folder and it's going to have an example template and it's going to use, I think it uses the Helm.sh slash the test hook. It does. Thank you, Andy. Yeah, I haven't looked at it for a while, but yeah, it should if some glad it does. So you can look at that and it's really basically follow a similar model. The idea there is that that, you can put any templates you want in there. They won't run any other time unless you're running Helm test. So it's very handy because if you, if for your chart that you're writing, you need, I don't know, some, you need some custom CRDs. You need some, you need some stateful sets. You need lots of different things that you would be doing in other ways for your actual chart for production or for any other environments. You can mock those inside of this test directory. You got two minutes. Cool, so, so yeah, check that out. Thank you. Also check out the github.com slash Helm slash chart dash testing project. A number of the former charts maintainers are still a team on the Helm team and help to maintain that project as well as other tooling. You could just use that. You could just actually use that and not do anything special in your charts and you will have testing. So basically in a similar vein, that same team of people, a subset of the other Helm maintain, a subset of the total Helm maintainers, also maintain the chart releaser project. That is just a simple way to allow you to have a Helm repo without having to do anything, any kind of special steps yourself. There's a github action setup for it. If you use github, if you use GitLab, you can still use the chart releaser project. You don't need a github, or excuse me, a GitLab CI. But if you do develop one, let us know because we'll, I don't know. Contributions welcome. Yeah, we'd love to have that because right now we only have a GitHub action that wraps that. But the project itself, you can call directly and through any other CI any way you want. So please, please check that out. There is also a nice little setup. It's not actually built in, but there's a nice way to additionally push your charts to OCI registries. Speaking of the devil. Yeah, yeah, exactly. Oh, next one. Okay, so let's, yeah, you should, well, you should consider this. The reasons for it, since I know we don't have a whole lot of time, I'm not gonna just read off of this, but OCI has a lot of benefits as opposed to using HTTP repositories. One being that if you have a ton of Helm charts, there's no concept of an index file in an OCI registry. You don't have to worry about that. It will never be a continually growing thing. How many of you have heard of the concept of OCI artifacts that was like drilled into everyone's brain throughout the keynote in a couple other sessions today? Guess what? Helm has been doing this for many years. So we've kind of trailblazed a lot of the work and a lot of the maintainers are currently working in open source projects like myself. I'm a maintainer on the Aura's project. I joined Helm to become one to help push OCI artifacts across the finish line a couple of years ago. I see OCI artifacts doing a lot of things and Helm is gonna take advantage of this entire ecosystem that is just starting to incubate. And like one way we're using OCI artifacts is around signatures. You can now go ahead and sign your Helm charts. Very easily using tools like SigStor and other tools out there to make it even easier to provide providence data to your charts. Exactly. Pretty much anything that, well, most of the tools that are there to make working with containers nice and secure also apply to the artifact type, OCI type. So take advantage of it. You're all at KubeCon. So containerized workloads is not a new concept. It's been going on for a long time now. It's been going on for less time for config as code. That's essentially what OCI artifacts are. Anything you want to store in there, you can store a database in there, but don't. You want to generally use config and so you can deploy that along with your containers. That's the basic idea.  Please stop by the booth and say hi to us. We've had like really awesome people maintaining the booth so far. I have not done it, but I will tomorrow. And say hi to me and then say hi to us on Friday. Yeah, if you're really interested in, we're gonna make this a little interesting here. If you're interested in contributing to Helm, wanna influence the project, but most importantly, if you're interested in this thing called Helm 4, yes, it's coming, come on Friday. We're gonna talk about it. I know it's unfortunate, the last session of the day at a conference, so if you're able to stick around and join, please come down to us. We're gonna be in room E08 on this level. And aside from that, thank you very much for your attention today and enjoy Helm.