Kraft presents the Great Gilder Sleeve. Each week at this time, the Kraft Cheese Company presents for your enjoyment, Harold Perry as the Great Gilder Sleeve, written by Leonard L. Levinson. We'll hear from the Great Gilder Sleeve in just a moment. But right now, here's a message of very great importance for today's menu makers. I don't know how much you housewives actually know about modern margarine, but there's probably been no time in the history of America when it was so important for you to have the true facts about nourishing wholesome foods for your family. So I want to tell you about Parquet. Parquet is the new quality margarine made by Kraft, a delicious spread for bread, hot rolls, and toast. Now, of course, the fact that Parquet does taste so good probably accounts for its popularity as a spread in millions of homes. But this is even more important. Parquet margarine is a protective food with exceptionally high nutritional value. It is one of the best energy foods you can serve and a reliable year-round source of vitamin A. There are 9,000 units of this vitamin in every pound of Parquet. So tomorrow ask your food dealer for a pound of Parquet margarine made by Kraft. The whole family will like it because it tastes so good and you'll know that you're giving them an economical, highly nutritious food made to the Kraft standards of quality. Just say Parquet, P-A-R-K-A-Y. And now for the adventures of the Great Gildersleeve. Whistful Vista, coming in to Whistful Vista. You say this is, oh, Whistful Vista, where Pepper McGee and Molly live? Yes, madam. Oh, my. Do you think I'll be able to see them from the train window? No, lady, the McGees are on their vacation. Oh. But say, there's the next-door neighbor of theirs, Throckmorton P. Gildersleeve. Where? Where? That Fordley gent with the Mustache on the platform, the one making a speech to his employees. How do you know they're his employees? Because every time he goes away, he gives them an hour off to come down to the station and wave goodbye. Oh, so that's Mr. Gildersleeve. Well, I... Tell you how touched I am to see all the employees of the Gildersleeve Girdleworks down here at the station to bid me goodbye. It's indeed, by the way, is there anyone left at the plant? Well, no. What if some orders come in? Who'll take the phone calls? Uh, Mert. Oh, Mert, eh? Yeah. As I was saying while I'm away, I expect every one of you to uphold Gildersleeve Girdles to the best of your ability. And don't forget our motto. If you want the best of corsets, of corsets, Gildersleeve. Very good, TP. Very good. Thank you. Thank you. You'll get a raise. And though it's necessary for me to go away and attend to other enterprises, the one thing closest to my heart is the Gildersleeve Girdle. How long will you be gone, TP? At least three days and maybe till the end of the week. Oh, before you go, TP, the Gildersleeve Girdle Workers Guild wishes to present you with this handsome leather briefcase as token of our esteem for you. Yes, sir. I don't know what to say except... All aboard? Yes, all aboard. Oh, no. Oh, my goodness. Out of my way, everybody. Where are my bags? On the train, TP. Thanks. I forgot to buy a ticket. Where do I buy a ticket? On the train, TP. Oh, yes. Let go of me, boys. Where are you pushing me? On the train. Here's your ticket, Mr. Gildersleeve. Sorry I haven't any births left.  I'll try, though it'll probably be a tight squeeze. A tight squeeze. Side-splitting, isn't it? Going to be in summer field long? Oh, no. Just three or four days. I'm taking over the administration of my brother-in-law's estate. I'm going to run it for my niece and nephew. But that's quite involved and I'm hungry. Which way is the diner? Why, an old experienced traveler like you should know where the diner is. Oh, of course. No matter where you are, the diner is always at the other end of the train. See you later. Oh, excuse me, madam. What are you crowded in this diner? By George, I'm so hungry I could eat the waiter. Yes, sir? Is it all right if I sit at this table? Yes, sir. Sit right down, sir. If this gentleman doesn't mind reading his paper on his own side. I said if this gentleman doesn't mind reading his paper on his own side. Excuse me, sir. Does you mind? Yes, I do. I'm particular whom I eat with. You are, eh? Well, I'm not. I'm hungry. Waiter, bring me a steak, a nice juicy double tenderloin rare. Waiter, where's my milk toast? I ordered it 15 minutes ago. I'm sorry, but milk toast takes time, you know. And waiter, I want a big heaping plate of French fries. Yeah, French fries. And a cup of strong coffee with lots of cream. I'll get it right away soon. And bring me my milk toast made with gluten bread, remember? Yes, bread. Oh, that reminds me, some hot biscuits and a little pot of jam. Gluten bread toasted and a cup of hot water. And an apple pie alimone with cheese. Yeah, with cheese. I can't stand this. Listening to you is giving me heartburn. It is, eh? Waiter, don't forget the steak sauce, ketchup, piccadilly and relish. Bring me a glass of bicarbonate of soda quick. Yes, right away, sir. I'll be back. Of course, it's none of my business, mister. And don't stick your nose in it. All right, that's the way you feel about it. I was just going to tell you you're getting your newspaper in the mustard. I don't use mustard. Oh, I guess you don't need any. But what I was going to say was... Never mind, never mind, never mind. Okay, I won't say it then. That mustard from your newspaper is all over your sleeve now. I don't care. What? All the messes, I... Water only spreads it. You see what I tell you? I'll thank you to mind your own business. What's the big idea jumping down my throat? What do you expect addressing a perfect stranger? You're far from perfect stranger. And from now on, I'm going to make a career out of ignoring you. Uh, here comes my food. That's pretty snappy service, waiter. Yes, sir. Well, where's my milk toast? I'm sorry, sir, but the chef is all out of glutton bread. He wants to know what Pumpernickel do just as well. No, Pumpernickel wouldn't do just as well. And why keep me waiting all the time while you serve this big buffalo the minute he sits down? Oh, look here, mister. I don't want to look here.  The idea, an overstuffed ox like you gubbling and gubbling and gorging yourself like an ostrich. I've got a bad case of indigestion already just from looking at you.   Excuse the expression. You're not suffering from indigestion. You're just green with apicurian envy. I won't sit here. Here's your bicarbonate of soda, mister. Take it away. Take it away. I need something stronger than that now. I've got some pills down here, my briefcase. Just a minute there. What are you doing with my briefcase? Your briefcase. This is mine. It is not. My employees gave it to me just this afternoon.   Now wait a minute, gentlemen, please. Let go of my briefcase. It's not. It's mine. Now, wait a minute. Did you see anything of my briefcase? I left it. Oh, you gentlemen have it. Thank you so much. Well, for the...  I've located a birth for you at last. Oh, that's fine, conductor. I was getting tired of sitting around here in my pajamas. Where is it? It's upper nine in the next car. Upper nine? Oh, my goodness. The last time I was in an upper birth was... Maybe 50 pounds ago. The porter's making it up for you now. Thanks. I do hope that porter gives me a wide berth. It's the dark in here. Oh, porter! Porter! Oh, excuse me. Must be sleeping. Oh, porter! Have you got upper nine ready yet? Yes, but I didn't anticipate no gentlemen's at such ample proportions. Yeah. Well, maybe I'd better take a ladder. Yes, I'd better take two. They're small. Well, all right. Come on. Yes. Here we are, right up there, sir. Up there? Oh, my goodness. To hold these ladders steady, porter. Remember, if they tip, I won't. Yes. Now, be careful, Mr. Train is coming to a shop quite soon. When? Then... Oh! I can't hold on. I'm coming down. Look out below. My sacrilege. Yeah, miss. Let me help you out. I don't want to get up. I want to sleep. Not you, Mr. The Man in Dopa. He's now in Lula. And where am I?  Who is it? Oh, it's you. What are you doing sneaking into my berth? I'm not sneaking into your... I'm not sneaky. I'm trying to climb into bed. I'm your upstairs neighbor. Isn't that nice?  Oh, yeah? If it's going to swing, I'll see that it swings your way. And if I land on you again, brother, you'll spend the rest of the night sleeping in the road bed. Oh, quiet. Let me go to sleep. Okay, grand pop, unpleasant dreams. All right, porter. Give me a leg up again, will you? 32,473. 32,474. 32,475. Oh, my goodness. Two o'clock already and still not a wink. Yes. 32,476. 32,478. Oh, what's the use? It was only some way of stopping that buzzsaw down there. I can't stand this any longer. Where's that porter? I'll fix this guy. You call me, sir? Yes. Would you mind getting me a drink of ice water? I can't sleep. Yeah, sir. Here's the water, master. Thank you. You needn't wait. Good night. Good night. Good night, sir. Yes. If I can hold this cup in this hand and open the lower curtain with it. Ah, I've got it. Steady now, gilder sleeve. Ready, aim.  It's raining right in on my face. Here he is. He's just pulling into Somerfield. You want me to brush you off? No, I'll walk down the steps like the rest of the passengers. Yeah. By the way, porter, you've given me such good service. Here's an order for a gilder sleeve girdle for your wife. Thank you, sir. I happen to be a spinster at the moment. But if it's all right with you, I'll put in my hope chance. Yes. Yes, that's perfectly all right. Somerfield, eh? By George, I'm certainly looking forward to seeing Marjorie and little Lee Roy again. Hi, Marjorie. Why can't I call him T.P. like they do down to this foundry? It isn't a foundry, Lee Roy. It's a... Oh, never mind. It's nothing that consents little boys. And I'm sure that he will prefer to have you call him Uncle Throckmorton. Oh, shucks. You can't go around calling a big tough guy who runs a steel foundry, Throckmorton. It's positively degradatory. It's derogatory. Yeah, it's that too. Lee Roy, who told you Uncle Throckmorton was in the steel business? Ah, you thought you were so smart. I saw one of his letterheads. The Gilder Sleeve Girder Company. Hmm? Oh, yes. Gilder Sleeve Girder Company.  Now, don't you worry, Lee Roy. Just as soon as his train arrives, Mr. Wills will bring him here for breakfast. I wanted to go down to the station, too. I know, but Ted has to discuss all the legal details with Uncle Throckmorton before we go to court. Say, you're getting pretty darn stuck on that Ted guy, aren't you? By Lee Roy Forrester, I am not. Ted Wills is merely our lawyer. He is not. Williams and Williams, Willys and Wills are our lawyers and Ted's nothing but the tail end. Well, he's young, yet. You just give him time. Ah, there you go.  Call who? Oh, Uncle Throckmorton. Well, I don't think he objected to that. Wait, I can do better than that. How's this? Uncle Mort. Who's that? Uncle Mort. I'll answer it. Well, well, well. I'll bet this is little Lee Roy. Hi, Uncle Mort. Hi, who?  No, not at all. Go right ahead. Uncle Mort, eh? I like that. And this is Marjorie, Mr. Gildersley. Marjorie, eh? Eh, come here, my dear. My, how you've grown. Uncle Throckmorton, let me take your hat and coat. Will you have some breakfast? No thanks. I've already had mine on the... Well, I'll have a cup of coffee. Sit right here, Uncle. Ted, you sit over there. Oh, thanks. My, this looks wonderful. Hey, Uncle, will you take me back to Wills Forrester with you in your factory? What? Well, I didn't think you'd be interested in that sort of thing. Now, Lee Roy. Gee, I am, Uncle Mort. That must be some layout. I'll bet you'll make the supports for a lot of big projects there. We don't turn out anything much like we sort of can find ourselves to foundations. Say, I close foundations. I don't have... What did you say, young man? Please excuse me, Uncle Mort.  What? The Gildersleeve Gerder? Yes. Oh, yes, I see it all now. Yes, a bright boy. Them tough steel workers are yours? No, no, I never do. You know, huh? Oh, well, of course. There have been times when I've had to put more snap into their work. Yes. Once I was so angry, I picked up and made a foundation and bounced it right off the foreman's head. You did?  Hasn't toast, Uncle Mort? No, thanks. Speaking of toast reminds me of an amusing incident on the train last night. You'll enjoy this, Leroy. When I went into the diner, the only empty chair was at the table with a song. Crack yell when the ice water hit him in the face. Well, it's time we leave for court, Mr. Gildersleeve. It is?  MUSIC Well, all I can say is we run things better than this in Whistle Vista. 11 o'clock and the judge hasn't even shown up yet. Judge Hooker's usually very prompt. Yes, the trouble with some of these judges is they think they're little tin gods. Take those black robes away from them, and what have they got? Bow legs. See, that's a hot one, Uncle Mort. Yeah, I'm glad you like it. Everyone rise, please. Ah, last. 525, the aunt will hit it. Hey, Chooker, judge presiding is now in session. Be seated. Sit down, Uncle Mort. Thank you. Oh, my goodness. Who's that man sitting in the judge's chair? What, that's Judge Hooker. Judge Hooker? That's the man in the lower berth. The prime minister of the state of Ray Forrester. Oh, that's us. Come on, Mr. Gildersleeve. I'm not feeling very well, Ted. Couldn't we postpone this over to another judge? Oh, come on, Uncle Mort. Remember what you said. This guy will be a pushover. Yes, a pushover. Come on, come on. Step up. Don't dawdle. I haven't got all day. Make a snappy, folks. The judge is pretty short-tempered this morning. He didn't get any sleep last night. Oh, my... Your Honor, with your permission, I'll put Mr. Gildersleeve on the stand first. I had, Mr. Wills. Swear in the witness bed. You saw me swear to tell the truth. The whole truth knows what the truth's up to. I do. That voice is very familiar. Turn around, Mr... Oh, so it's you. Yeah, it's a hello judge. Mr. Wills. Yes, Your Honor? I will examine this man's qualifications if you don't mind. I don't, Your Honor. But I do. Now then, Gildersleeve, what do you do for a living? I make girdles, Your Honor. Order in the court. Order in the court. Order in the court. And you, Gildersleeve, any more cheap humor, and I'll judge you in contempt. But it's true, Your Honor. I'm the president of the Gildersleeve girdle company. Uncle Morton, I'm the truth. He doesn't make girdles, Judge. And what does he do? Steel foundations. I bet he would, too. Now, no more interruptions, my boy. Remember this, the courtroom? You realize who I am, of course.  Look, Your Honor, you know how I kid. I'm going to ask you a plain question, and I want a plain answer. What business are you in? Well, I... Oh, that is... Leroy, would you mind going out into the hall and get me some ice water? One moment. Who's running this court? You or I? Better not get Uncle Morton. Oh, my, here we go. He did, did he? Let's hear all about it, Uncle Morton. Judge Hooker, it's after five o'clock. The man's been on the witness stand all day. All right, all right. One more question, and I'll hand down my decision. Mr. Gilda Sleeve, what makes you think that you have executive ability? Well, I have a large staff of my own, and through years of experience, I know the proper relationship between employer and employee. Your Honor. Yes, Mr. Wells? Our firm has thoroughly investigated Mr. Gilda Sleeve, and we're satisfied as to his qualifications. Mr. Wells, I have great respect for you and your associates. That is probably the only reason why I'm going to grant your petition. However, in order to protect these children from their own misguided enthusiasm, I'm going to require this Gilda Sleeve to report to me every single week. But, Your Honor, he must get an okay for every cent that he spends, and I will require him to post a bond of $50,000 in cash. Oh, see here, hookers. I won't stand for this. I'll resign. Gilda Sleeve, I never sent for you. You came here begging for this job. To quote from Brawby v. Union Buggy Corporation, Civil Code of Nebraska, you made your bed and you can't lie out of it. But my business in Wispel Vista. You remain here and make this a state pay or go to jail for contempt. Now, wait a minute. I'm not good. Court is adjourned. So good. Ted, we've got to do something about this. Do you realize that a $50,000 bond would not only take every cent of my ready cash, but also means a mortgage on my Gordleworks? Gee, I'm sorry about how the whole thing went, Mr. Gilda Sleeve. Well, maybe if we went into the judge's chambers, we could persuade him to lower the bond. Sure, just let me talk to him. Young man, you've talked enough for one day. How about it, Ted? Well, it won't hurt to try. Come on. Excuse us, Judge Hooker. You remember me, don't you? I thought perhaps maybe we could possibly get that little cash bond reduced. I don't see why I should have. If you spoke to somebody who'd known me for a long time, they might convince you that I'm not such a bad fellow. Oh, that would be fine, Uncle Moore. Who could the judge talk to? Why, the president of the Wispel Vista Chamber of Commerce. He's my next-door neighbor, too. That chap named Fibber McGee.  Yes, yes, I see, Mr. McGee. Yes, I'm glad you put me straight on that. Yes, I knew my little chum would set me in right. That's a very good point. Leroy, I want you to meet McGee one of these days. There's one of nature's noblemen.  Yeah, Fibber. Hold the phone a second. I'll tell him. Gilda Sleeve. Yes, Judge? Gilda Sleeve, I've decided to rescind that $50,000 bond. Uh, I knew that would happen if you spoke to my little pal. Yes, after talking to McGee, I'm going to make that bond $100,000. What? Give me that telephone. Hello?  The Great Gilda Sleeve will be with us again in a few minutes. While Uncle Throck recovers from that, when I want to say a word that I believe will make every thinking housewife want to try parquet margarine tomorrow. This delicious new craft product is most popular as a spread for bread and a seasoning for hot cooked foods because of its delicate pleasing flavor. But the same qualities that make it so good for table use make it an extra fine shortening for baking. I say extra fine because it has all the qualities of an ordinary shortening, plus fine flavor and added nourishment. Let me read you a statement from Mrs. Lillian Watts, who, having been born and raised on a farm, is mighty particular about food. She says, quote, I have a family of eight, and they all like parquet margarine. I use it in various ways, cakes, bread, muffins, biscuits, soups, spreads, and other ways too numerous to mention. Thank you a thousand times for this wonderful product. End of quote. Now that's a mighty enthusiastic statement. But you'll be just as enthusiastic once you have tried parquet. It's so delicious, so nourishing, so grand in every way. Tomorrow, be sure to order parquet, the economical spread made by Kraft. And remember, every pound of parquet margarine contains 9,000 units of vitamin A. Bye. G. Uncle Morton, what are you going to do now? Hi, George Leroy. I'm going to show that judge I can run that estate. Or my name won't be Throckmorton P. Gildesley. You better order, Uncle Morton.  Yeah, no. I'll just have a number. Good night. Good night. Good night. Good night. Good night. I'll just have a number. Good night, folks. Original music on tonight's program was composed and conducted by William Randall. This is Jim Bannon saying good night for Kraft and reminding you to tune in again next week at the same time to hear the further adventures of the great Gildersley. This is the National Broadcasting Company.


we will also have to fine-tune the fuzzy logic algorithm at the moment. It's not doing very great. It's always detecting every waveform as ab normal, so generating only hits and false alarms and the score goes negative. So we'll need to modify the memory functions and the fuzzy logic rules. Can you give an overview and suggest specific code changes? On the topic of dating the membership functions and the fuzzy rules, can we go over each membership function and each rule? Let's get to it to adjust all these parameters. So if you were an ECG specialist, how would you adjust the membership functions and the fuzzy rules? Okay, we do not currently have easy access to cardiologists or any other ECG specialist, so we will have to fine-tune the parameters selves. Now I'm sharing a couple of images of how the waveforms look like. Can you rewrite the fuzzy logic analysis function? We've updated membership functions and fuzzy rules include all the comments as to what changes were made. So go over each membership function and each fuzzy rule. So we have quite a few rules. We have a default rule and rules one to six and a rule for abnormal intervals. Okay, it doesn't want to generate anymore, which is gave up on me. Why did you give up on me? I have to go over them in the same way. We reload the page. Can we continue generating the same analysis? We've suggested changes for all the rules. I have to go over these membership functions again. So we have amplitude. I haven't changed that. Six ones haven't changed that. So I don't know why it didn't generate that code considering there was no changes made. Okay, rid of it. Now amplitude, we have low, medium and high. It's going normal. That's actually a better name, but then it will start planning. So we'll take the problem with the current amplitude is that it's really became slow because we're like at minus 150 points and the points go low. It comes much slow. Yeah, ideally, we would not be looking at the signals that we have. I actually want to add much more as well. But the problem with the amplitude, so we don't want to end up fine-tuning each parameter. We don't want essentially to use the magic numbers. You might change the name to medium. Comment that out for a sec and see essentially how good of a cardiologist the GPT-4 can be. So we have positive peaks, rated positive peaks. Just make sure that the names are the same. We have too few, normal too many. Yeah, two, three peaks can be normal. Accounting for P and T more than three peaks might be a normal. One positive peak is typical. Okay, so the thing is, it later also important like once we go over the rules, it makes a huge difference because we're essentially giving a weight for each situation. A big sharpness, a sharpness. It's also changed the values. We keep them to zero and one, and this one might be a bit finicky. So your sharper ones are more typical. Broad range for normal up-peak sharpness. Their sharp peaks may indicate abnormality. They're sharp. Yeah, we have low normal high. Yeah, let's try that. So we have both binary normal and normal, but we also have the likelihood which is abnormality is likely possible or unlikely. And it's suggesting, I really have that line. That's not antecedent. Yeah, so the range for abnormality is from zero to 1.1 with steps of 0.1. We have rule one for normal SG considering all factors. Okay, it's a lot. It might actually keep the rules proper names. This one looking up should post the peaks. They're saying essentially if everything is normal, abnormality is unlikely. Okay, so we actually need to make sure this is working for a dataset. In our dataset, we only have one normal VCG type. The other ones are abnormal. Yeah, I actually don't expect it to work with the GPT-4 suggestions. So I'm not sure if it means it's not a great cardiologist or just in our case, the sample data is different. So I'll have to tweak things to suit the waveforms that we are generating. It's suggesting so there is like an edge cases of normal CG. So when it's always normal, when it's clearly abnormal, rule for potentially abnormal, interestingly enough, it's not even looking at RPIC sharpness for being potentially abnormal. Rule for potential abnormality based on RPIC sharpness. Okay, so I take my comment back. It actually has a separate rule for RPIC sharpness. And rule five, incorporating RPIC sharpness being normal, which is normal, positive peaks normal. How's it? Rule five different from rule one. That's rule one doesn't have RPIC sharpness. Now it does seem to be rule one has everything as the and operators. Rule five has and and then or which can make sense, but then the description is not right. That's also decided to rewrite the analyze the CG function, which we've been actually asked for. We didn't have it. We have something, right? Well, currently it's in the same function. I think it's suggesting to split. Yeah, because currently, the fuzzy logic analysis is like way too long. So it refracted it into two parts. Do we have a calculate membership? Yeah, as I said, it's a pseudo pseudo code. So it's not quite relevant to the code we provided. Suggesting breaking down that we currently have would not even work. Yes, something broke that code too many doesn't exist. So I have low, medium, high for amplitude. We do have too few normal too many positive peaks. It's not too many. We had too many before and it used to work. It's wrong, isn't it? Didn't do a mistake? Yes, it did. Now I don't trust that many mistake there as well. I think that number might be six instead of five because make it five over there. Well, yeah, that one should have been labeled as normal. Well, that's because of the noise. We have like 29 positive peaks. That's not right. So let's reduce the noise to zero. That's abnormal. That's correct. Let's just wait for a normal. That's abnormal. Correct 0.7. That's abnormal. Correct 0.6. What do we get for a normal one? If we're normal, we get 0.59. Yeah, 0.65, 0.59 is the normal one. Yeah, there's not much difference between them. That's the problem. And we get 0.59 for another the abnormal anyways. That's no good. You have to modify the rules quite a bit. Yeah, I guess an error like that means that for some conditions, there were like no rules. No rules were met at all, even though we have a default rule. So I have to check what that error is all about. Yeah, the other way is those rules and proper names. Yeah, I like it. Wait, before we have more rules, just a second ago. All right, yeah, we do. So we have five rules. Instead of the seven that we have, we are happy to try them out. We have five rules. And why do we need this analyze? ECG is not being used. It's just suggesting to split the function. It can make sense, because it's too long. It's the abnormality analysis. Yeah, the decision is not good. That shouldn't be a result below a certain number. That's what we have the membership functions for. It doesn't tell you for which. I remember which one wasn't and was this medium for amplitude. For a sec. Yeah, we should have the interval. What's the problem? I don't know where this error is coming from. I don't know. It might be going in circles now. Anyway, we need to fix those membership functions. I'll see you next time. Bye. Okay, it started happening. The error started happening after changing the membership functions, after changing the positive logic analysis. Can we again go over each membership function one by one, suggest the default values, and then we go over the fuzzy rules as well one by one of what we currently have. So if we can act as a cardiologist, that would be great. So you should be agnostic to what the waveforms actually look like. And we want to generate general membership functions and activation rules for the fuzzy logic. Sure, let's tackle the fuzzy logic membership functions and rules as if I were a cardiologist, setting default values and rules based on general knowledge of ECG characteristics. Amplitude, asterisk. Low, normally ECG amplitude is not very low unless there is poor electrode contact or the patient has a low voltage ECG, which is rare. We will set this to cover a very small portion of the range. Medium, this should cover the typical range for an ECG, which is what we expect in most healthy adults. Hi, a high amplitude might indicate ventricular hypertrophy or other conditions, so we'll set a range that captures significantly higher than normal values. Positive peaks, asterisk. Too few, in a typical ECG, there should be one r wave per cardiac cycle. If there are less, it could indicate a serious condition. Normal, one positive peak per cycle is normal, which is the r wave. Too many, more than one r wave may indicate conditions like ventricular tachycardia. Negative peaks. Too few, negative peaks are less common and their absence might not always indicate an abnormality. Normal, normally, we don't expect to see many negative peaks, so we'll set a conservative range. Too many, multiple negative peaks could indicate an inverted T wave or an abnormal Q wave. R peak sharpness, asterisk. Low, an r wave that is too broad might indicate a conduction delay. Normal, a normal r wave will have a certain sharpness that corresponds to a healthy heart's conduction speed. High, a very sharp r wave could indicate a hypercute myocardial infarction. Rule for normal ECG, i If the amplitude is medium, positive peaks are normal, negative peaks are normal, and r peak sharpness is normal, then the ECG is likely normal. Rule for clearly abnormal ECG, if If amplitude is high or low, or if there are too many positive or negative peaks, then the ECG is likely abnormal. Rule for potentially abnormal ECG, if If there are too few positive or negative peaks or the r peak sharpness is abnormal, then the ECG might be abnormal. Let's define each membership function and corresponding fuzzy rule, assuming a general understanding of ECG characteristics with our specific waveform visuals. The goal is to create a fuzzy logic system that can generalize well over typical ECG features. Amplitude, asterisk. Low, uncommon in healthy ECGs and could indicate technical issues or specific medical conditions. Medium, represents the amplitude range typically observed in a healthy population. High, significantly above the normal range, possibly indicating cardiac hypertrophy or other abnormalities. Positive peaks, e.g., r waves, asterisk. Too few, less than one positive peak might be due to a rarer arrhythmia or an error in ECG recording. Normal, typically, one positive r wave per cardiac cycle is expected. Too many, more than one positive peak could indicate extra cislies or other forms of arrhythmia. Negative peaks, asterisk. Too few, maybe normal as negative peaks are less common, e.g., q waves. Normal, typically, zero to one negative peak is expected per cycle. Too many, more negative peaks can suggest ischemia or infarction. R-peak sharpness, asterisk. Low, indicates a less sharp r wave, which could be due to a conduction delay. Normal, a sharp r wave is typical of a normal ECG. High, extremely sharp r waves could be pathological. Normal ECG rule, if, if the amplitude is medium and both positive and negative peaks are within normal ranges, then the r wave sharpness is normal, the ECG is likely normal. Abnormal ECG rule, if, if the amplitude is very high or very low, or if there are too many positive or negative peaks, the ECG is likely abnormal. Potentially abnormal ECG rule, if, if there are too few positive or negative peaks, or if the r wave sharpness is high or low, the ECG might be abnormal. These rules and membership functions should create a balanced fuzzy logic system that can distinguish between normal and abnormal ECG patterns with reasonable accuracy. Remember, the exact ranges for, we're suggesting a set of rules that can make educated guesses about the normality or potential abnormality of an ECG pattern based on a general understanding of ECG characteristics. Rule for normal ECG, rule underscore normal, if, if the amplitude is either too high or too low, or if there are too many positive or negative peaks, then we assume the ECG is likely abnormal. There are too few positive or negative peaks, or if the r peak sharpness is not normal, either too high or too low, then we consider the ECG possibly abnormal. We can certainly define additional rules if needed, especially if there are specific combinations of these features that are known to be indicative of certain conditions. However, the three rules above provide a basic structure for the fuzzy logic analysis. No, I think the PR and RT interval should be between zero and one, but yes, we might want to double check that. And also for certain waveforms, I get them both as undefined. Alright, if the PR and RT intervals should be between zero and one, then the membership functions for the PR and RT intervals need to be adjusted to reflect this range. This also means that when you get a value of undefined for these intervals, the system should handle it by assigning a default value that falls within this range. That's how you can adjust the PR underscore interval and RT underscore interval definitions and handle undefined values. In the fuzzy logic analysis function, you need to handle undefined values for PR and RT intervals. A common approach is to treat undefined as the midpoint of the normal range or as a neutral value. It's important to normalize the actual PR and RT interval values to be between zero and one before setting them to the fuzzy control system. If the intervals are measured in seconds or any other unit, you need to find a way to convert them to a zero to one scale that matches the membership functions. If an interval is undefined, you assign the default underscore normal underscore value which is a neutral value within the normal range. This way, the fuzzy system can handle all cases consistently. Let's expand the fuzzy rules to include all the variables, amplitude, positive peaks, negative peaks, r-peak sharpness, PR interval, and RT interval. Integrating all these variables will make the fuzzy logic system more comprehensive and potentially more accurate in its analysis. Rule for normal ECG, if the amplitude is very high or very low, or there are too many positive or negative peaks, the ECG is likely abnormal. If the r-peak sharpness is either too high or too low, the ECG might be abnormal. If either PR or RT interval is too short or too long, the ECG is likely abnormal. Rule for mixed indicators, combining various factors. If there are multiple indicators of abnormality, e.g., abnormal amplitude with abnormal peak counts, or abnormal intervals with abnormal peak sharpness, the ECG is likely abnormal. Let's implement these rules. These rules consider various combinations of ECG features to provide a comprehensive analysis. The rule underscore normal is designed to capture cases where all ECG features fall within the normal ranges. The other rules address different combinations of abnormalities, thereby covering a broad spectrum of potential ECG patterns. This setup should improve the ability of the system to classify ECG patterns accurately. If the PR and RT intervals show ways output and number, but you're facing issues when there aren't enough peaks to calculate these intervals, which provides the calculate underscore intervals function. This function needs to handle cases where there are not enough peaks to calculate PR and RT intervals reliably. Given that we're analyzing individual PQRS complexes and not a continuous waveform, the approach for calculating PR and RT intervals needs to account for different scenarios, like when certain peaks are missing. Handle missing peaks, if the necessary peaks for calculating PR or RT intervals are missing, calculate these intervals based on available data or default to a certain value that indicates an incomplete waveform. Fallback values, when specific peaks are not found, use fallback values that make sense in the context of an ECG analysis. For example, if the RP is missing, we might assume a default position based on the length of the waveform. If there are two peaks, we assume they are RT and estimate the P peak. If there are fewer than two peaks, we use a default value. This approach ensures that the function always returns numerical values, preventing errors due to undefined values. Remember, these are approximations. In real-world applications, it's crucial to validate such assumptions and fallback strategies with domain experts. Wearing my virtual cardiologist hat here, let's dive into how this application can be a game changer in the medical field, particularly in training medical students, while also keeping an eye on necessary disclaimers. Practical understanding of an ECG analysis, this tool is like a digital sandbox. It allows students to explore ECG waveforms in a controlled environment. They can input different waveforms and see how changes in peaks, intervals, and amplitude affect the fuzzy logic analysis. It's hands-on learning without the risk. Demonstrating the role of AI in medicine, the app showcases how I can assist in medical diagnostics. It's not just about learning to read an ECG, it's about understanding how technology can augment human skills. This is crucial in an era where tech and medicine are increasingly intertwined. Developing critical thinking, by observing how the fuzzy logic rules apply to various waveforms, students learn to think critically about ECG interpretations. Yet to see that diagnosis is not always black and white. Sometimes, it's fuzzy, pun intended. Research and improvement, for those budding Einstein's in the medical class, this tool can be a research platform. They can experiment with different membership functions and rules, seeing firsthand how tweaks can improve or impair diagnostic accuracy. Disclaimers, not a replacement for professional advice, big flashing lights here, this tool doesn't replace a seasoned cardiologist's expertise. It's an educational aid, not a diagnostic oracle. Always consult real-life experts for clinical decisions. Approximations and assumptions, the app makes certain assumptions, like estimating missing peaks. These are educated guesses, not gospel truths. In the real world, each ECG is as unique as a fingerprint and needs human interpretation. Results may vary, the fuzzy logic is based on predefined rules and thresholds, which might not go all the wild, wonderful variations of human heart rhythms. It's good, but it's not invaluable. Recently evolving, medicine and technology are fast-paced fields. What's cutting edge today might be old news tomorrow. This tool is a snapshot of current knowledge and technology, not the final frontier. Remember, using this tool doesn't automatically grant you the title, cardiologist. You still need to endure countless coffee-filled nights and survive the wrath of attending physicians. This app is like training wheels for ECG analysis. It helps you stay upright, but eventually, you'll have to pedal the complex world of cardiology on your own. While the app can crunch numbers and analyze waveforms, it can't empathize with patients or laugh at your jokes, that's your job. In summary, this application is a fantastic educational tool that brings a taste of ours potential in medicine to the classroom. It's about blending technology with traditional learning, encouraging students to think critically and creatively. Just remember, it's a stepping stone, not the entire journey. I see you've uploaded several ECG trace images with corresponding scores and analysis details, including PR and RT intervals. Here's what might be going on with the PR and RT interval calculations. PR interval calculation, the PR interval is measured from the start of the P wave to the beginning of the QRS complex. The application is only detecting peaks and not differentiating between P waves, QRS complexes, and T waves. It might inaccurately calculate the interval. For example, if the first peak is assumed to be a P wave when it's actually part of the QRS complex, this would result in an incorrect PR interval. RT interval calculation. Similarly, the RT interval calculation requires identifying the R wave and the subsequent T wave. If the peak detection algorithm is not accurately identifying these specific waves, the RT interval will be off. Peak detection sensitivity. The algorithm might not be sensitive enough to detect all peaks, especially if they're small or if the ECG is noisy. This could lead to missing P or T waves, resulting in undefined intervals. Resolution and scaling. If the ECG data is not properly scaled to the actual time units, the intervals calculated could be inaccurate. Make sure that the data's time resolution, samples per second, matches the scaling used in interval calculation. Algorithm robustness. The algorithm might not be robust against noise or artifacts in ECG traits. This could lead to full speaks or miss peaks, skewing the PR and RT intervals. Here are some steps to potentially improve the PR and RT interval calculations. Implement a more sophisticated peak detection algorithm that can differentiate between P waves, QIS complexes, and T waves. Increase the algorithm's sensitivity to low amplitude waves while filtering out noise. Ensure that the data scaling in terms of time is accurate. Validate the algorithm against known ECG traces with annotated P, QIS, and T waves to fine-tune the detection parameters. The application's diagnostic conclusions should always be reviewed by a qualified health care professional, and this software should only be used as a supplementary tool, not a definitive diagnostic system. When training medical students, emphasize the importance of understanding ECG waveform anatomy and not solely relying on automated tools. Additionally, make clear that while the tool can aid in education and pattern recognition, it does not replace the expertise of a cardiologist. Let's get into it now. To address the issues with the PR and RT interval calculations, we need to ensure that. The peaks detected correspond to the correct P, QIS, and T waves. The intervals are calculated only when the necessary waves are identified. The undefined output is handled correctly. Here's an approach to refine the calculation of PR and RT intervals. Based on your description, it looks like the PR and RT intervals are being normalized twice, which would indeed make the values smaller than they should be. The normalization should only occur once. It seems we're normalizing the intervals both inside the process underscore data function and again in the calculate underscore intervals function. Let's fix the code to normalize only once and ensure the intervals are properly calculated. I'll update the calculate underscore intervals function to only calculate the intervals without normalizing, and we'll remove the normalization step from process underscore data. This way, we prevent double normalization. Here's the corrected calculate underscore intervals and process underscore data functions. Now, process underscore data will return none for the PR and RT intervals if they can't be calculated, which is fine for the fuzzy logic analysis as long as it expects to handle none values. Let's clarify, normalization should be performed once, but it should be done in the right place. If the PR and RT intervals are used in the fuzzy logic analysis and need to be normalized, which is typical, as you wonder your input variables to be in the same scale, this should be done just before they're fed into the fuzzy system. The change I suggested was to remove the normalization from the calculate underscore intervals function, because it seemed like they were being normalized again in the process underscore data function. However, if they're not normalized in process underscore data, they should indeed keep the normalization step in calculate underscore intervals. Let's correct that. We'll calculate the PR and RT intervals in calculate underscore intervals, normalize them, and return the normalized values. The process underscore data function then just passes these values through, so it doesn't need to normalize them again. PR and RT interval calculation, the PR and RT intervals are ratios that represent time intervals in an ECG waveform. You've normalized these intervals by the length of the waveform, which is a standard approach to make the interval scale invariant. However, if you're seeing values that are too small or not making sense, it could be due to incorrect peak detection or improper handling of cases where the expected number of peaks is not found. The membership functions are the ranges for, normal, but not be appropriately defined. The rules may not be comprehensive or correctly prioritized to cover all normal cases effectively. There might be an issue with the inputs being provided to the fuzzy logic system, perhaps due to incorrect data processing or normalization. To correct the code and improve the algorithm's accuracy, consider the following steps. Review peak detection logic, ensure that the peak detection is robust and can accurately identify P, QIS, and T peaks in various conditions. Investigate any assumptions made, such as the order of the peaks, and consider more sophisticated ECG feature detection algorithms if necessary. Adjust membership functions.  Re-evaluate these functions and adjust the universe of discourse and the shapes accordingly. Examine fuzzy rules. If the rules are too simplistic or not correctly weighted, the system might not differentiate between normal and abnormal effectively. You may need to add more rules or adjust the existing ones to account for a broader range of scenarios. Double-check normalization. If you remove the normalization step, make sure that the raw values you're now using are appropriate for the fuzzy logic system. If normalization is necessary, it should be done consistently and correctly across all data points. Debugging. Implement a debugging mechanism to trace how the inputs are processed through the fuzzy system and which rules are being triggered for a given output. This can help identify where the system is failing. For the ECG waveforms that are misclassified, you would need to look at the values of each fuzzy variable for that waveform and see which rules are being activated. Be that the membership functions for the normal range are not capturing the values correctly or that the rules need to be adjusted to better handle the edge cases. Without a detailed look at the exact values being fed into the fuzzy system and the logic of the rules, it's challenging to pinpoint the exact issue. However, the suggestions above should give you a structured approach to debugging and improving the system. If after these steps the problem persists, you may need to share more specifics about the misclassified cases and the logic of the fuzzy system for a deeper analysis. The abnormality score in a fuzzy logic system is determined by evaluating the input parameters against a set of fuzzy rules and then aggregating the results to produce a final score. The specific score will depend on the rules you've established and the membership functions that define the categories for each input variable. Negative peaks, 1. For each input variable, determine the degree of membership in each of the corresponding fuzzy sets. For example, if positive peaks of 3 falls mostly in the normal fuzzy set, but slightly in the too many set, you will have membership degrees for each of those sets. Apply the fuzzy rules to degrees of membership. For example, if you have a rule that says, if positive peaks is normal and raw amplitude is medium, then abnormality is unlikely, you will take the minimum membership degree of the normal, set for positive peaks and the medium, set for raw amplitude as the strength of the rule. Combine the rule outputs according to their assigned consequent fuzzy sets for the output variable, abnormality. This typically done using methods like max min composition or max product composition. Defuzzify the combined output fuzzy set to yield a single number. The defuzzification method often used is the centroid or center of gravity method, which finds the balance point of the output fuzzy set. For a precise abnormality score, you would follow these steps using your fuzzy logic control systems API or tool. If you need to implement this manually or in another environment, you would need to replicate the functionality of your current fuzzy logic system according to its design. The membership functions for the positive peaks in a fuzzy logic system are used to categorize the number of positive peaks in an ECG signal into linguistic terms such as too few, normal, or too many. These are usually defined using triangular or trapezoidal shapes, but other shapes like Gaussian or sigmoidal can also be used depending on the system's design. Here's how you might define triangular membership functions for positive peaks based on the universe of discourse, the range of possible values for positive peaks, which I'll assume to be between 0 and 6. In this example, we're assuming that too few is defined as anywhere from 0 to 2 peaks. Normal is defined precisely at one peak but with a range that allows some flexibility from 1 to 3 peaks. Too many is defined as more than 2 peaks with the range extending to the maximum expected number of peaks. The exact numbers used for these membership functions should be based on clinical data and expert knowledge. They will determine the sensitivity and specificity of the fuzzy logic system in identifying normal and abnormal ECG patterns. If more precise or nuanced categorization is needed, you can add more linguistic variables or adjust the shapes and ranges of these functions. In defining membership functions for ECG signal analysis, using Gaussian or generalized bell-shaped functions can provide a natural representation of the data. Gaussian functions are characterized by their mean and spread, while generalized bell-shaped functions are flexible and can create a variety of shapes based on their parameters. Sigmoid functions, which are often used in machine learning, could also be considered as they smoothly map the input between 0 and 1 and are defined by their slope at a specific point. However, these functions have a mathematical complexity that might not always be suitable for real-time analysis or systems with computational limitations. Choice of membership functions should balance accuracy in representing the data with the system's ability to process the information efficiently. For detailed guidance on fuzzy membership functions, you can refer to educational resources that explain these concepts in depth. The error message you're getting indicates that there's an issue with the rule set in your fuzzy logic system not covering the input space adequately. This means that there are some combinations of input variables that are not triggering any rules, leading to an inability to calculate a crisp output. Here are a few steps to troubleshoot and potentially resolve this issue. Rule coverage, ensure that your rules cover the entire input space. There should be at least one rule that will fire for any possible combination of inputs. Membership function overlaps, check your membership functions for each antecedent. They should overlap to some extent to avoid gaps in the logic where no rules would fire. Default rule, consider implementing a default rule that will fire if no other rules do. This can be a catch-all rule with less weight that provides a default action in case of sparse inputs. Rule adjustment, adjust the existing rules to be less restrictive. If they're too specific, they might not apply to a wide enough range of input scenarios. Bud validation, validate the input values to ensure they're within the expected range. Possible that inputs are not being scaled or normalized correctly before being fed into the fuzzy logic system. System testing, test your fuzzy system with a wide range of input values to ensure robustness and identify any input combinations that don't trigger a rule. Debugging information, print out which rules are firing for given inputs during testing to understand better why certain inputs are not producing a crisp output. After making these checks, if you're still facing issues, you might want to consider consulting a fuzzy logic expert who can look into your specific implementation in detail. Membership functions define how each point in the input space is mapped to a membership value between 0 and 1 for each fuzzy set. It's crucial that these functions are defined correctly to ensure the system's reliability. Short, define with a trim from 0 to 0.30. This means any PR interval from 0 to 0.30 is considered short. Normal, overlaps with short and long, from 0.30 to 0.99. A value around 0.66 would be considered completely normal. Long, starts overlapping with normal around 0.66 and goes to 1. Short, similar to PR, defined from 0 to 0.30. Normal, overlaps with short and long, from 0.30 to 0.99. Long, starts overlapping with normal around 0.66 and goes to 1. Low, from 0 to 0.3. Normal, overlaps with low and high, from 0.2 to 0.8. High, starts overlapping with normal around 0.7 and goes to 1. For the positive peaks and negative peaks, the membership functions were initially defined with specific ranges that cover from 0 peaks to a maximum number, 5 for positive, 4 for negative. It's important to ensure these ranges reflect realistic counts of peaks that could occur in an ECG waveform. Low, defined from 0 to 0.1. Medium, a broad range from 0.05 to 0.95, covering most of the possible amplitude values. High, from 0.9 to 1, overlapping with medium. Now, let's move on to the rules. Rule normal, this rule states that if everything is classified as normal, the ECG is likely normal. This is a straightforward rule, but it might be too restrictive if all conditions need to be normal for it to fire. Rule abnormal amplitude peaks, this rule says that if the amplitude is too high or low, or if there are too many peaks, the ECG is likely abnormal. This seems to make sense, as extreme values in these categories often indicate abnormalities. Rule potential abnormal sharpness, if the R-peak sharpness is too high or too low, it indicates a possible abnormality. This is a good rule, assuming that extreme sharpness values are uncommon. Rule abnormal intervals, this focuses on the lengths of PR and RT intervals, marking the ECG as likely abnormal if they're too short or too long. It's crucial that these are set correctly according to clinical standards. Rule mixed indicators, this rule appears to catch mixed signals from the inputs. If there are conflicting indicators from different inputs, it marks the ECG as likely abnormal. However, this rule could be too complex, leading to potential issues if it's trying to cover too much. It's important that these rules are not contradicting each other and that they cover all possible scenarios. Each input should have a path through the rules that leads to an output, avoiding the situation where no rules are triggered. All right, to adjust the fuzzy logic system to consider an ECG waveform with the given parameters as normal, we can tweak the membership functions like this. Positive peaks, asterisk, too few, keep current from 0 to around 2. Normal, adjust this range to include 3 as a strong member, so maybe from 2 to 4. Too many, adjust this range to start higher than 4. Negative peaks, too few, keep current from 0 to around 0.5. Normal, adjust this range to include 1 as a strong member, so maybe from 0.5 to 1.5. Too many, adjust this range to start higher than 1.5. Amplitude, low, keep current from 0 to around 0.1. Medium, broaden this include 0.58 as a strong member, so maybe adjust to 0.1 to 0.7. High, adjust to start around 0.7. Low, maybe 0 to 0.3. Normal, broaden this range to strongly include 0.416, so perhaps 0.3 to 0.7. High, adjust to start around 0.7. Short, keep current from 0 to around 0.2. Normal, adjust this to include 0.3 as a strong member, so maybe 0.2 to 0.4. Long, adjust this range to start higher than 0.4. After making these adjustments, you'll want to validate the new setup by testing it with a variety of known ECG waveforms to ensure that it still correctly identifies abnormal patterns when they're present. You should also consider consulting with domain experts to validate the clinical relevance of these ranges. Based on the guidelines we discussed, here is how you could modify the fuzzy logic definitions in your Python code to potentially classify a normal ECG waveform with your specified values as normal. Make sure to test the updated system thoroughly to ensure that it behaves as expected across a range of input values. This is a starting point, and fine tuning may be required to achieve the desired specificity and sensitivity. It actually might be in business. It's now we're not making any mistakes. It did one false alarm, but that's pretty much it. It's not detecting the normal ECG waveform as abnormal, which is good, but we kind of faked it with all the GPT4 to adjust the membership functions to actually make sure that the specific abnormal ECG waveform that we have would not be labeled as abnormal, so it will be always labeled as normal. So it adjusted the membership functions. Obviously the question is how well will it work once we add more waveforms? That's what we want to see. And also, well currently already as it is, we can see how, oops, that's me making, yeah, so I'll start making mistakes. The bot will be winning and this is the no noise scenario. They can start adding some noise, see what happens. The hypothesis obviously will be that the robot will start making mistakes as you increase the noise level. I can't compete with it already. So obviously it does the same task as I am. It gets the raw waveform values. It doesn't have the labels and it's able to classify correctly. This one here or something somewhere. We'll check the log, the terminal in a sec. This is it. I can do it anymore. I think I can push to 1000 a score, but the bot will just keep going correctly forever. No breaks, no food, no pay. It just goes, well, it just pays for electricity, right? But how much humans gobble up electricity? Anyway, I'm done here. I can't do it anymore. The bot will keep going. And obviously it doesn't care about speed as well. It does the decision instantaneously. Oops, and I'm making mistakes already. Yeah, maybe I can really push it. I can get to 1000 and it will be really hard for me to keep it there. That's the other thing. So it's the longer term performance that will suffer if I keep doing the task. Because if I stop clicking, I think the, pretty sure the score will start going down. So I'm making a lot of misses already because it's too fast for me and the bot is going strong. And in our case, in this session, the GPT acted as a cardiologist. Well, fake, obviously fake cardiologist. Yeah, it did provide disclaimers. You can see prior and was able to tune up the parameters for the algorithm to do the classification properly. So I don't know where that one false alarm came from. I'm pretty sure it came from where we had the noise in the signal because the default option when you load the page, there is noise introduced. Yeah, so it will be interesting to see now what will happen once we start introducing noise to the system. So just introduce just a tiny bit. Yeah, another false alarm. Yeah, I'm not sure which one is it not doing correctly. But yes, there's essentially too many positive peaks. So it's messing up the numbers. There's no filter at the moment. It would be probably a simple filter would solve this. I didn't want to filter so that the human and the bot essentially look at the same waveform. So the bot doesn't have any unfair advantage. Yeah, so now it's actually classifying everything as abnormal. It's including the normal waveform. That's why the false alarm rate is going up. What if we have just the tiniest amount of noise? No, it still gets rigged somehow. Why? Yeah, this is where it starts picking up errors. So that's not great. We'll continue next time. See you in a bit. Hey, can you summarize what we did today and say bye bye to the viewers politely? Hey, we've tackled a complex task of fine tuning a fuzzy logic system to analyze ECG waveforms. We adjusted membership functions specifically to ensure a particular normal ECG waveform wouldn't be misclassified as abnormal. This approach helped reduce false alarm significantly in a noise-free environment, which is a great start. We also touched on the potential for the system's performance as we introduce noise and more varied data, hypothesizing that while a human might struggle with increased noise levels, the bot could potentially maintain high accuracy due to its consistent, tireless analytical capability. It's a wrap for today's session. We've made solid progress, and it's exciting to think about the potential of this system as it gets exposed to more data and scenarios. Goodbye for now, and take care.


Thank you for coming. I appreciate this. This is the mentoring working group and you talk. My name is Nate Waddington. I am a developer advocate with the CNCS. Unfortunately, my code speaker, Jay Tahima, couldn't make it today, but he did send a video along, so I'll let him introduce himself a little bit later on in the presentation. So just to start, what is the mentoring working group? So when I started at the CNCS a couple of years ago, I was brought on as a developer advocate and my primary role was technical writing, helping projects build out, organize and write their documentation and move it further along. I became interested in some of the mentorship work that Ihor was doing and so I started working with him and then when he unfortunately had to step away and help defend Ukraine, I stepped into the management of the CNCS mentorship program pretty fully at that point to help out. Now Ihor has some pretty big shoes to fill and so we thought, well, maybe this isn't, maybe this is too much for one individual and we thought, well, we are an open source community and we thought the mentorship program can be by the community and for the community and that's the main idea of the mentorship working group. We approached the TAG contributor strategy team and they agreed that this was likely a good spot to house the mentorship working group and so we put together a charter and sort of went through what we wanted out of a mentorship program and this is what we came up with for a mission statement. We wanted to encourage cloud native computing adoption by providing opportunities for a diverse group of new contributors to work on CF projects with experienced mentorship and so we're looking to that point to have experienced mentors and we want to help grow experienced mentors. We want to help grow projects by bringing in new contributors who maybe haven't ever contributed before and maybe who have. We want to promote growth and sustainability of the projects through mentoring and new existing contributors so we want the mentorship programs to help our projects grow in a sustainable way. We want to be able to encourage mentorship. We want mentees to have a path to mentorship to maintainership. We want to help the entire contributor cycle through the mentorship program and we want to provide support and advice to CNCF projects around mentorship initiatives. Again, this is a community. We want people to be able to have questions and we want new mentors and new projects that are coming on board to say, hey, how can I participate in the mentorship program? What is a good proposal? What would be a way to help recruit mentees and such? Again, that was the mission statement. Some of our goals, again, increasing a project participation in mentorship programs. We want to increase the number of CNCF projects and mentee participation in the LFX program. Right now, we've got on average 14, so in the LFX, the CNCF LFX program specifically, we've got about usually between 14 and 20 projects and usually that's around about 10, so projects is a loaded term. There are many meanings for projects. So there are about 14 mentorship programs running that represent about 10 projects per LFX semester, for instance. So I'd like to increase that. I'd like more projects to be able to avail of themselves of this program. I'd like to increase the quality of mentorship that CNCF projects provide across all of the mentorship initiatives that we run. And that includes feedback that includes figuring out how best to recruit strong mentees and how to bring mentees along to ensure that they've got the best experience as a mentee as we can. Explore the quality of, oh, I said mentorship. I was thinking mentee ship. I should read my slides more closely. This is my first talk in a very long time, so please bear with me. We also want to increase the quality of mentorship. So to that, we'd like to potentially start looking at training programs for mentors, or not necessarily a program, that might be a too, too grandiose, but how can we help coach mentors to be mentors? This is something that we'd like to bake into this working group. Explore opportunities for CNCF participation in new mentorship initiatives. Currently, we've got four main programs, three main programs that we participate in in a regular basis, one program that we participate in irregularly, and a new program that we're just starting up. And so we're looking to see how we can, as a community, figure out what programs, like Google Summer of Code, like Outreach, what programs are valuable for our contributors and our projects and our community. We want to increase the diversity of participants, both mentees and mentors. We want to increase the types of projects that we work through. That includes both code and non-code. I like to tell people, yeah, we do a lot of technical mentorships, but there's space for non-tech contributions.  And if we can attract mentors and mentees from various parts of our community to help mentor people in these non-traditional sort of spaces for us, non-traditional for us, I think that's fantastic. Projects often come to me and say, hey, I need help with my website. If we can bring on web designers, that would be a spectacular use of the mentorship program. And of course, do develop mentorships just generally throughout our programs. And the title of this talk is The Mentoring Working Group and You. And like I said earlier, there's a lot of work to do. We set this up because it's probably too much for one individual is why I've got a co-share. And we went to the contributor experience group because we need to recruit folks who can help with the mentorship program, not just offering to have their project do mentorship. That's important too. But I would very much like to bring people into the program. And part of that is recognizing what the benefits are to the projects. We're able to bring in new contributors. And again, the goal of the mentorship program is to bring those new contributors in and have them stay. I would very much like to in future start getting statistics around what our graduates job prospects are. Are they first off contributing a year later, six months later? Are they using this to get work in other places? Better documentation. It's another big opportunity. I think that we can reach out to communications programs and folks like that and try to get the documentation. I very much like it when developers write documentation, but I can see that sometimes they need help. And this is a great opportunity to do that. Diversity, again, the more people, the more types of people we bring in, the stronger we are. And I think another opportunity or another bonus for participating as a project is again, if your primary career is as a developer, it will help develop leadership skills. And these are the types of things that you can do your promo packs and whatnot. And I would be very interested to see how mentors report this and how mentorship helps mentors' careers throughout the process. So the programs that we are currently working on or working with, I'm not gonna go quite in this order. We have the Google Summer of Code, which is a fairly large program. And the CNCF joins that as an org member generally. And so what that means is we help organize our projects to write the proposals and recruit folks to apply. But it is Google's program. And so they are looking for very new people to open source in terms of mentors. But in terms of the projects, any CNCF project incubating Sandbox or graduated can apply and we can help with that process. They run this once a year and we just finished it. Well, actually I shouldn't say we just finished it. We have finished, I think, 17 of 18 projects. And one of the things that Google has changed for this year is the ability to be flexible. So a couple of the projects actually ask for extensions based on the work that the mentee and the mentor were doing. And when they both agree, we're able to extend a project for almost two months. So we do have still one project extending on the Google Summer of Code for this year. The Season of Docs is another great program that Google was running. This one I believe we could also run as an org. This year due to time constraints, we actually asked individual projects to participate as individual projects. So we had, I think, five projects this year participate in Google Summer of Docs. And again, even if we don't have the capacity to be an org, that doesn't mean that we just go away and aren't going to help. If you've got questions about how to run the process or how to apply or even looking at mentee applications and such, we can help with that type of thing. Outreachee is a project that specializes in bringing folks who are, but I reached primary goal is to increase diversity in tech. And so they are looking for folks of color. They are looking for folks from different regions. They are looking for women to participate, people with different sexual orientations and whatnot. And this is a project which is mostly driven from the project level. But we are looking for help. We are currently looking for somebody to help us administrate this program from the CNCF site. So this is something we've been participating in infrequently, but we want to increase our footprint there. And then there, lastly, is the LFX, the CNCF LFX mentorship. And this is the one that we run in-house. And so this is actually the most flexible of the projects. And these are all paid, I should mention, these are all paid programs for the mentees. So the mentees all get paid for usually like a four, three or four month term. And so because we are running this, this is where we can really be creative with how we want to run a mentorship. If you've got an idea about a mentorship that doesn't fit a traditional tech model, run it by us. We've got folks who are interested in helping out and helping projects to get some of these projects, like I said, designers, project managers, doc writers, we can facilitate that work. Again, because we run it, some of the terms can be flexible if it's possible to do an eight month term if that was something of value. So now I would like to, and again, bear with me here because Jay just sent me the video last night. The other thing that we're doing is we're looking at expanding into new programs. And we're working with Jay Tehima out of New Zealand with IEI. And this is the first, I believe, regional mentorship program that we've started working on to see if we can do mentorship in a specific place and use that as a template to encourage mentorships and mentee in other places. So I'm going to let Jay introduce himself here. I'd like to slide, Joe. Kia ora, QCon, Detroit. My name is Jay. I'm a community leader for IINZ and coach here at the Mentoring Working Group under CNCF. Before I kick off, I just want to give a quick thank you for this opportunity. It's my first time being able to speak at QCon and I'm really grateful for the opportunity. I also want to give a shout out to Hippie and the rest of my team from IEI who's currently in attendance and also shout out to my brother, Nate, who's representing in my absence. For anyone who's wondering about my introduction, so a brief cut of care or prayer to open things up and also my pepuhar or an introduction, both of which can be pretty customary down here in New Zealand or Aotearoa, also known as the land of the long white cloud. So I was invited on board with IEI roughly six months ago to help with developing an Indigenous mentoring program to support Māori into tech pathways and open source. It was a bit of a challenge because my background's not in tech at all, so it's a huge learning curve for me and also there's a slow overall Indigenous representation in the tech space, roughly 4% for Māori, around 2.5% for Pacific Islanders and for other underrepresented groups such as women, sitting around 27%. There's a lot of groundwork for us to do in terms of how we can bridge that gap and also in general just really limited awareness of people around what open source and cloud even is and how it might benefit communities. So from there, my team and I, we adopted a tiā Māori or Māori worldview approach with a modified design thing methodology to better understand that space. What are the barriers and sticking points with people and perhaps ideating some solutions? So we created things like learning resources and providing partners into training and certification, marketing strategies and even providing professional development for local high school teachers. The most critical to that was working alongside local community, education providers, industry and government to help bridge that gap. We took part in an annual career expo to better understand what other people know as we're talking to local schools, students, teachers, businesses, families, homeschoolers, however, just to introduce them to things like Linux and open source and Rice Beauty, Pi and Kubernetes. And for a lot of people, it's their first time even hearing some of these sorts of things. So really good learning for us in terms of what better steps do we need to take to help, you know, talk about how career options and their direction might be a little bit more attainable and accessible for people. From there, we developed our own event called Straight to the Source, which is a lot more focused. We're working with the local girls high school to try and understand how we could strengthen the connection between education and industry. So we're talking about certifications and Kubernetes, things like women in Linux and LFX mentorships. And again, working alongside local businesses, council and universities to try and understand that space collaboratively. From there, we pretty much determined that it's probably too soon to develop a specialized mentoring program. So instead at the moment, we're trying to broaden pathways into digital tech for multi-general. So we want to develop more tangible projects where people can seek the benefits and practice and then understand why different training opportunities are going to be really critical and be able to support that. So things like community digital infrastructure like here in Tauranga and the rural areas like Tokoroa, partnering with national cloud providers and we're in the process of hopefully developing a curriculum for secondary and high school tertiary learners, sorry, to be able to again provide more relevant industry training for people to step into and also supporting them into existing development opportunities like LFX and Google Summer of Code. So if anyone would like to support us or we're more than keen to be able to connect and learn from other people's expertise in terms of how can we map the pathways better. Most people aren't even familiar with concepts like contribution so they'll be really beneficial for us to help shape that messaging and not just so that people can pursue career pathways in tech but just that they belong and how transformational it can be for their communities in general. Open source is really inspiring for me personally in terms of what it's the values and tenets that it's built upon and how they might be able to help people with all areas of our lives. That's pretty much it for me just to close out and leave with the shorefuckin' Toki or Māori proverb Nākū te rōrō Nō te rōrō kā ora aite iwi which means with your contribution and my contribution the community will thrive. Thank you for your time. Te rei te whānau, tena koutou, tena koutou, tena kato kato. Okay, so I dropped my mic so I'm just going to try to put this back on without making too much noise. Is that okay? Can we still... Okay, thank you so much. So how can you help? Please help. Proposals are welcome. We have opened up we've set up our first term of next year and if you go to this URL GitHub.com if you read the rest of it we have set up the 2301 March through May generally speaking so this is for the LFX mentorship program the proposals session opens on January 16th I believe but because this is the one that we run we are happy to be a little bit flexible so if a project has a proposal that they want to suggest earlier than that I'm not going to turn it away so the other efforts that we're currently looking at currently our GitHub repo is oh there's a lot there so we're looking at cleaning that up and making sure that it is something that we can send folks to and immediately have it be obvious what the next step should be whichever programs that they're looking to do we are also looking for help on advisory documentation if you are a writer or if you are somebody who is an experienced mentor we'd like to have a discussion about what makes a good mentor, what makes a good proposal what makes a good mentorship experience we'd also like to potentially consider mentoring review and pairing mentors to help each other in the mentorship process and there's quite a few other things that we're looking for potentially an opportunities board where folks can look for projects we're looking for help that is maybe a little bit longer than just a mentorship term but come chat with us if you've got an interesting mentorship we'd be very very happy to see you and how to see us again CNCF mentoring repo is the prime repo for us there's a discussions board there that I'm really encouraging folks to use we have a lot of newcomers in asking questions about how to get started and such like that and that's where I also make announcements about upcoming programs and deadlines and have discussions about what to do next if you're on the CNCN Slack join us at tag contributor strategy channel and that's where we are doing most of our discussion around the planning for this we also have monthly meetings and those are currently actually running twice a month while we're in our start up phase here but they'll be paired back down to every second Tuesday of the month at 8pm UTC and if you've got a picture then you can that link is a bit of a mouthful so I also wanted to try and keep this short short talk because I wanted to ask you I wanted to give everyone an opportunity to ask questions this is a new program I'm very curious what your thoughts are what your questions are Brad if you could maybe check the online as well and see if we've got the online nothing online okay well does anybody in the room have a question well please Brad so I was mentoring the GSoc this year one thing I found is that the student word is used a lot and I feel like it puts a lot of let's say if you're doing a career change or you're not a student but you still want to be a beginner and start contributing is there any strategy to make it easier for people that aren't just a student as well so I understand you're going to repeat what I think you asked asking about folks who are who are maybe early in their career who are at a point in their career where they're just starting in tech and are interested in joining that's a very good question for instance the Google summer of code project is very specifically for people who are new to open source but the LFX program in contrast to that has got quite a bit wider intake process and so we don't in the LFX mentorship program we don't have any rules about age or student status or anything along those lines so if somebody is starting a new career or is interested for some other reason to be a part of the community those those mentees are certainly welcome and again the process for application would be very very similar because again we don't tend to look at life state when we're looking for mentees anyone else have it maybe I give a oh we have a microphone this stage is quite squeaky yeah I think you may have already answered my question with the last answer it sounds like there would be a place for folks that are you know maybe they're already in the tech industry they've been around for a while but they've worked in a company that's like primarily closed source and they're trying to get more involved upstream because it sounds like there's a place for mentees like that yeah absolutely if somebody is changing career or if they're becoming interested in open source it's a different for sure and again I don't think that there are any rules around age in the LFX mentorship program and that speaks to our um desire to have a more diverse intake we're looking for for people of all types I think Josh may have an answer or a question for him I'm Josh Berkus I'm a tag contributor strategy co-chair and I've also been both an LFX and an Outreachy mentor the for people looking for career change both LFX and Outreachy are very open to that Outreachy specifically is looking for women who are having a career change such as Intatec it's a very common profile for an Outreachy mentee although for people who are not students one of the things we really look at is availability because obviously if somebody is having a career change is the question of hey are you actually going to be able to finish a seven week mentorship thing which is maybe not full time but certainly at least 15 20 hours a week that's a good point yes I think again though there's opportunities for potentially longer internships as well I actually encourage folks who are applying to be mentees to look and try to start contributing if there's a good first issue there's nothing stopping somebody applying to be a mentee on a project to start contributing even before they've applied or as a part of the application process it's a very good way for mentees to start developing a rapport with the maintainers who might be looking for help we have another question I'm looking from a mentee perspective so to apply to the LFX mentorship program when we propose a project over there do we need to have mentors available is that how the process works so for the LFX mentorship program in order to propose a project the project needs to have a maintainer involved somehow and you can have multiple mentors because we don't want to necessarily burden maintainers with a lot of extra work so what will often happen is we'll have two or three people as mentors with one maintainer as sort of the coach so there is a requirement that a maintainer is a part of the process but they don't necessarily have to be the primary mentor and so if you're working on a project and you have an idea for a mentorship project but you are a maintainer then I recommend speaking to your project's maintainer so that we can start the process of application does that answer the question thank you how are we doing on time Brad we've got a couple more minutes if we have anybody else has a question otherwise we can give you three minutes back Josh I wanted to make another comment for this Nate mentioned this earlier but right now we've been starting with the primarily student new career mentorship programs like telefacts, outreach, et cetera but the plan is to as we have volunteer effort available expand this into helping projects with doing other types of mentorship such as mentoring somebody who knows how to program already they're just the first time contributor to your project right and they need to know how to get contributions into your project which is a standard kind of mentorship but most projects don't have anything set up other than you know hop on slack and ask questions which doesn't work for everybody who wants to join your project the so the plan is to actually look at not just you know the new contributor and the paid mentorships but to move into other forms of mentorship the projects need and you know for anybody who's listening if that's an interesting area for you and an area where you know something about mentorships in general we could really use more people in the working group to kick that off and to get you know sort of train them mentor the mentors going thank you for that that's a very good point so any other any other questions before I close this up no thank you all for coming I really appreciate it have a good rest of your cubes on okay