Alright. Well, hi, everyone. My name is Rebecca Ramesh. I'm a first year path resident at the University of Pennsylvania, and I'm excited to talk to you today about our method here of blood culture contamination rate tracking and reporting. Okay, so we'll start with some background. First, we'll address these three questions. What are blood cultures and why do we collect them? What is blood culture contamination? And why is it a problem? Why should two sets of blood cultures be drawn? And then next, we'll discuss how we calculate the blood culture contamination rate based on our data. And lastly, I'll show you what our blood culture contamination report looks like. A blood culture is used to help determine if a patient has a bloodstream infection. These infections can be life threatening. Blood is naturally sterile, so bacteria should not be present in the bloodstream. So because blood is normally sterile, positive blood cultures with a known pathogen have an overall high positive predictive value for infection. However, blood culture contamination is a significant problem. In the era of modern blood culturing techniques, virtually all blood culture contamination occurs during collection. The source of contaminants is usually the patient's skin or the hub or cannula of an indwelling cavitar. Frequent causes include poor collection technique and insufficient skin disinfection. So for this reason, the bacteria that grow when a blood culture has been contaminated tend to be skin commensals, which just means the organisms that can actually be found on our skin. So the consequences of blood culture contamination are significant. They include unnecessary antibiotic exposure and prolonged hospitalization because the clinical team is not certain if the isolated organism is a result of contamination or represents a real bloodstream infection that needs to be treated. So here's a list of common skin commensals, just kind of so you're familiar with some of these names. One thing to note is that while these organisms can be found on the skin as part of normal skin flora, they can also cause bloodstream infections, which is what makes identifying contamination difficult. So one set of blood cultures consists of two bottles, one is an aerobic bottle and one's an anaerobic bottle. The best practice is to draw two sets of blood cultures within 24 hours of one another. And this is for two reasons. First, we want to increase the sensitivity for detecting a true pathogen by submitting a large volume of blood for testing. But second, having two sets helps us rule out potential contaminations. So if a skin commensal grows in only one of the two sets, it's more likely to be a contaminant, whereas if it grows in both that we might consider a real infection. So the blood culture contamination rate is calculated by taking the number of blood culture sets with growth of a skin commensal without the same organism growing in the other set, then dividing that by the number of blood culture sets collected during that same period. A few things to note include that if a skin commensal grows in both blood culture sets, then we consider it a pathogen and it's not a contaminant. And if a true pathogen grows in only one of the two sets, it's still considered a pathogen, not a contaminant, because we would never want to see that organism. And then just so you're aware the laboratory standards suggest a goal of less than 3% for the blood culture contamination rate. I just want to take a brief minute to talk about single set blood cultures. So if only one set of blood cultures is drawn, which is different than the recommended practice of drawing two sets, then there's no set for comparison and we cannot consider contaminated, even if it grows a skin commensal. So for this reason single set blood cultures are bad practice, they increase clinical uncertainty, and therefore they lead to increased antibiotic use and prolonged hospitalization, and they also falsely lower the blood culture contamination rate. Next, I'm going to give you a sense of what our data looks like and go through a few different scenarios just so we can review what we just talked about. So in this example, if a skin commensal like staff epidermis grows in one of two sets, that set is considered contaminated. In this next example, both sets grow something called candidate parapsilosis, which is a true pathogen, but one of the sets also grows stuff epidermis. So this set is considered contaminated even though it also identified a true pathogen. If a skin commensal grows in both sets, then we're going to consider it a true pathogen and it's not their set is contaminated. If a true pathogen grows in one of two sets, neither is contaminated. And if a skin commensal grows in a single set, and only that one set is drawn, it's not considered contaminated just because we don't have any set for comparison to rule out contamination. So just, so this is kind of what our data looks like. And in the past, we had one of our lab directors manually go through an Excel file with a list of all the blood culture sets for the quarter and decide if each set was contaminated. So as you can imagine, at a big hospital, all the data from a quarter is like thousands of rows, so he would do this manually and it would take a long time. And then he'd send this back to a colleague who would add everything up and create another Excel file with the aggregate contamination rates for each of the hospitals and the system. And because this process was so labor intensive, it would take multiple people coordinating and multiple months after quarter and to produce the blood culture contamination report. So this project that I'm speaking about involved automating this process so that we could save hours and manual work and provide more immediate feedback to the hospitals and departments other blood culture collection practices. And I'll just briefly talk through our methodology. So we started out by making a table containing all of the potential isolates and whether or not they should be considered potential contaminants. So here's just an example, but we had hundreds of rows in this table. Next we converted the data from wide to long format just so that each blood culture set slash isolate had combination would have its own row so rather than having multiple isolates on a row we just wanted one isolate per row. And then we joined these two tables as seen below. And then lastly we count contamination events by looking at the number of patient date combinations where the number of times an isolate appeared was only one. But the number of sets drawn for that patient on that date was greater than one and isolate that grew is considered a potential contaminant. And then we divide this number by the total number of unique blood culture sets for the relevant time period. So here's a screenshot of one of our quarterly reports that we also generate monthly and yearly reports as well. We include blood culture contamination rate aggregates and trends over time floor specific contamination rates, a table of common contaminants, the single set blood culture rate, which we said is important. And we also provide reports for various departments that list the individual contamination events. So here's an example with an aggregate plot. And this is an example of trends over time so for example for the quarterly report we show the individual months and for the yearly report we show the individual quarters. Here we show the most. Oh sorry. This is a table that just provides a floor level data so basically for each floor or department it's telling them what their contamination rate was. And then here, we show the most common contaminants across the hospital system. And then lastly we show the rate of single set blood culture draws just so each department can keep track and as you can see this is actually a pretty significant problem at least at our institution between 30 and 40% of blood cultures that are drawn or single sets. So there's no set for comparison so we're probably over using antibiotics and causing a lot of prolonged hospitalization with this. And so what are the outcomes of this project. So we've been able to identify floors departments and individuals that need additional training and sterile technique. And also identify floors departments and individuals that are consistently drawing single sets. We can track common contaminants across the hospital system which you know might change over time might, might be able to even detect some sort of, you know, outbreak or trends. We significantly reduce the time and effort required when compared to the previous manual process involving multiple people. We provide real time feedback to floors and departments, and then we fulfill the cap regulatory requirement for tracking our blood culture contamination rate, and we're able to ensure that we're compliant with laboratory standards of having a blood culture contamination rate of less than 3%. So here are the our packages we use we created the template in our markdown and then we knit to PDF to make the report. We use knitter cable extra de plier. We'll use reshape to to go between wide and long formats for my data and gg plot to and then we just use the latex table format. I just want to thank Kyle Rodino and Catherine McCulley for their help with this project and related to the last session I was listening to it sounds like we maybe should have started this out within our package, but we're going to try to turn this into an R package so other institutions can use this template that we created. Thank you so much for joining us. Thank you, Rebecca.


Sorry to tell you the questions. So I try to read quickly because I want to leave some time for demo, although I'm not sure whether it's working or not. So today's topic is about clap detection, the clapping sound detection using an Arduino and a new network. Usually, we are talking about a new network. It's usually for big machines and a big high processing power, but I'm trying to do this in Arduino and show that it's actually doable. So the motivation is I need a remote control light simply because I forget to allocate a light switch at my room. So I want to do some remedy of this mistake, so I'm trying to do some remote control of the light. And there are several of the options for me. One is the PIS sensor. This is very obvious. Some kind of passive infrared detection when you work nearby, then it starts to activate. But for this time, it's not really applicable to my application because the sensor has to be mounted on a wall against the person who is still working. And the sensor actually has an angle of detection, so that if I work behind it, it doesn't activate at all. So PIS sensor ruled out. And there's a new type of sensor called micro radar. It's a very fancy name. I bought several of these sensors. And it's supposed to have a 360 degree detection. But what I found is actually, because inside the wall, there are some metal structures. It's actually not the signal, so it's not working as well. So the only option for me is sound. And actually, there is something like a production sound detector with switch built-in. And it's a nice panel that you can just replace your honorary switch. But I feel like it could be quite simple. What I cannot do is my own. So I have so many Arduino lines around, so I just make this one particular simple schematic. Just one microphone with some amplifier free into a analog input and do some detection. I think that's quite simple. Then maybe I go to Google and search for some of the existing projects that people are publishing. So there's a ton of those things. So what we actually see, what they did is they just, in the loop function, what they just read the analog thing. And if the analog value is above certain threshold, they just split the switch. That's majority of the projects which are doing. I think, does it work? Yeah, it can work. But how does it know it's a clap sound or somebody speaking nearby, or it's some music, or it's a shut-band door, all kinds of things. How does it differentiate? I think from the code, it doesn't, right? So I think further, there's a very nice YouTube video by this guy called Great Scott. He did a better version of this one. He demanded two clap sounds to active something. So that kind of minimized false positives a lot because you have to clap twice. And I still don't feel it's a very nice solution because I have to clap twice. It sounds a bit weird. Then even more, there's really some academic paper, although it's published by some students, and they introduced several algorithms based on the same principle that they do, they capture all the sound samples like this and then they do a long-term and short-term averaging for the sound sample and detect this energy level. And then they kind of calculate the ratio between the short-term energy versus the long-term energy and they give this graph and they determine some of the threshold and say above certain level, this is a clap sound because it is kind of a bursting sound over a quieter background. So I think, yeah, this might work, this sounds reasonable. So I try to implement this one, but the first question is how do I decide this threshold? Do I need to collect a lot of samples and do my own testing?  So, and meanwhile, actually I'm taking a deep learning course. So this may be the second month I'm into the course. So what they teach a lot in the deep learning course is that what you can do for a classifier, you just pump all the data in and let the neural network to decide by itself whether it is a clap or not. So I think, yeah, this is a good choice. So, and obviously I can capture the sound samples and feeding neural network, let it train. Maybe I can train our PC instead of our microcontroller. But soon I found it is not really doable on microcontroller like Arduino because for collecting sound, I need to capture data for 200 microseconds. Within these 200 microseconds, I can actually have a 7.6 kilo of samples. And Arduino definitely doesn't have memory to store these samples, as well as send these samples to a PC. Within 200 microseconds, it's almost not possible. And even if it is possible, taking the 7.6 samples and do calculation, do a forward calculation, or the floating point, mess, Arduino also not possible. So I give up this idea, maybe I can use, actually I can use Cortex-M4F, maybe it is possible, but I still want to stick to Arduino. So the second idea is I need to extract some features to represent the clapping sound. Then I can take the features I train on PC, then after train, I get all the network details into Arduino code and do the prediction and the forward calculation. That should be doable. So now the question is, where are the features? Do I look some more? So these are the features I chose. The first one is so-called a cross zero rate. On the top screen is actually a clapping sound and the button and something drop onto the table. So what we can see is for the clapping sound, given the same period of time, then there's a lot of vibrations. Where by other sounds like voices, music, you have very little. Usually this is in the, most of the people giving this term called cross zero instead of actually it looks like frequency, but actually because this is not a fixed frequency, so most of people using the name called cross zero rate. So what I choose is the feature is I calculate the time used for the first 50 cross zero detected. So the less time, that means the more cross zero you have encountered. So this is one of the features. However, giving this feature only is not enough because if somebody play a high pitched sound, then it will be detected as a clap as well. So the second I do some more captures. So on the top row I actually the clapping sound, different kind of clap and on the bottom row as a speech something drop or the same singing sound. The blue color line actually is the capture window. This is 200 milliseconds. What we can actually see is there's always a decay. For the clapping sound, whereas for other things they may not have a decay. Although for this object job there's a decay observed, but just by the cross zero rate as previously, actually we are able to differentiate it. So how do I take this decay shape and write this into a feature? So what I did is actually I get the 200 milliseconds of time I split them into 10 different segments and I calculate the energy for each segment. And I hope all these features together I feel into a neural network. It can actually give me a try to figure out it is decay or it is flat or something like that. So giving all these features actually I have 12 features. One is cross zero and the 10 being the energy level for the 20 milliseconds each. And another one is the pre-trigger, which means what is the background sound before I encounter the first high samples. So I feed into this in neural network and just do the other trainings. So some of details is the feature collection on Arduino and actually ADC setting is a 38.5 kilo sample per second, which is not the Arduino default sample rate. So I need to do some of the write some of the registers to overwrite all these things. And I tried different configurations of network and found just a small two layer actually doing quite well. The accuracy is actually quite high, 96%. Although I have very limited samples. And the training code actually is from this course. I'm not sure whether I can publish this, but because it is a training code, it is everything written by hand. So if I'm doing by now, I would be using like TensorFlow to do this. Because I just take this course last week. This was done one week ago, two weeks ago. So okay, and some of the details about this, to do this calculation on Arduino, it takes 20 milliseconds. So 200 milliseconds of sampling plus 20 milliseconds to do decision. The actual response is like 220 milliseconds later, but actually the response is quite okay for a human to feel. So some conclusion, future work. First one, Nurine was definitely the best friend for laser engineers. Otherwise, maybe I need to do, I will fall into the peak of do FFT on the signal, getting out the frequency components and fit the exponential decay, all this kind of thing. But with the neural network, everything is just done by mathematics. I don't need to do any real hard work on that. And I'm just an absolute beginner, it's two months only. So yeah, this is by no means a complete project. I need a lot more samples. I need a lot of features. Maybe this feature is not enough. Maybe I need more. And yeah, there's a lot of false positives, especially when I play the amp power from the speaker to the microphone, it gives a lot of false positives because these people like to, they will keep silent for a while and then suddenly speak to ha, whatever, then it triggers. Yeah, so a little bit demo. I'm not sure, because the environment is a little bit different. Hey, what? Uh, I, how do I, how do I show this? Okay. Yeah, it's three on my hand, so everybody's collecting is a little bit different. Okay, so these are the data. It's keep collecting. The first one being the cross zero. So doing here is okay. But definitely I talk to it, it's very hard to activate. So, okay, that's the, that's the finish. So you have a, what's it turns on? Does it refuse anything for a certain amount of time afterwards? Yeah, yeah, yeah, it kind of, it be cared for like 20 milliseconds or more, several seconds, it's just a silent time. Otherwise it kind of, you keep clapping it, you keep turning. With the ESP32, it should be able to actually get much more. Yeah. It definitely is, it's a much, much faster processor. For a 8 bit to do. Which is true.  It is actually from the training. So I have these samples, these are the samples. This is, this is test sample. Are these are testing samples which are collected? So I can do a training here. It's a passion code. It start to do some training. What? Today is so slow. Okay, yeah. Yes. So this is the last function after several iterators, iterations, then these are the parameters again. Okay. So I just taking this output and the copy, pasting to that, you know, code, it just works. I've got two remarks. There's someone in Finland for Vita, but I want to watch the immobile hand clap. Because they synthesize the crowds, the frozen things. So that's definitely something you can do. And Google has a lot of more database with some, maybe probably that you have. Oh, God. Generally, he is the one number one. He's also the, I don't know. He's actually the one number one. TV, we will be, we'll be here. Yeah, yeah. Most of them and that, actually, yeah. Yeah, yeah, yeah, yeah. Sorry, which one? So you can, you can be a hand clap, right? If you look for E, P, O, P, N, you can probably find a, it's probably from the steps of some others. You can push through some, some, you might want to, you know, some actual, you know, they can help you treat, if you take that.  The, the idea is I don't want our water in the pocket. And I erroneously set my switch just below the light where I need to turn on the switch five meters away. That is all the motivation of doing this.


Just you write down next point I will draw the structure you will understand this write down next line nucleosides are Nucleosides are n glycosides of pure of purine nucleosides are and Glycosides sites of purine or Pyrimidine bases with pentose sugar So this is the definition of nucleoside Pentose sugar What are nucleosides? We have a pentose sugar and that is linked with purine or pyrimidine base with n glycosidic linkage Okay, so what do you mean by this n glycosidic linkage? Suppose if I draw the structure of sugar here, which is this This is a structure of sugar. I won't draw the entire thing here Right, so we have all these bonds present OH etch you can put it on here CH2 OH like this we have here and this carbon this C1 actually it is attached with the base Like this nitrogen and then the ring we have like this Okay write down here base and base so this link is what this link is the n glycosidic bond and glycosidic bond So these are nucleosides actually so when you take adenine as a base the nucleoside is adenoside So with base what is the name of nucleoside? We have I'll write down here base one side and The name of nucleoside This side so if the base is adenine Nucleoside is adenoside if the base is guanine nucleoside is Guano sign Cytosine It's citidine thymine thymidine Uracil it is uredine So the point is this reference compound is pentose only this is not going to change But base can be changed If the base is this Corresponding nucleoside is this the name I have written similarly Nucleotides are what the last thing here we discuss Is nucleotides Okay, a structure of DNA is a double helix structure that you can go through Okay structure of DNA others then skip out the word. Okay Okay, so this is nucleosides you should know Next we'll discuss is all of you have written this Yeah, okay similarly nucleosides like I discussed it is it is the you know The combination of purine or pyrimidine base with pentose sugar and this base and sugar is connected with and glycosidic linkage nucleosides is this similarly nucleotides also we can define Okay, so what is nucleotide? write down nucleotide is a phosphate ester of nucleosides a nucleotide is a phosphate ester of nucleoside Which contains a purine or pyrimidine base? which contains a Purine or pyrimidine base with five Like this purine and pyrimidine base with a sugar With a sugar contains five carbon atom. Okay, one thing I'll repeat here In the last page That this structure is This structure is a base. It is not the actual structure I have just drawn this to make you understand what is n glycosidic bond Suppose adenine base you are taking so here we have the structure of adenine Gouonide then the structure of Gouonide. So this is just a base Where this n bond is joined with this carbon. So it is not any you know Correct structure is this it is not a correct structure because we have two nitrogen present in that in all these if you see That's what the meaning of this. Anyways, so next thing is what this? nucleotides like I said it has one base right, purine or pyrimidine base plus five-membered sugar plus phosphate phosphate and then It forms nucleotide Okay, if I draw the structure here of a nucleotide The structure will be like this Okay See one carbon We have hydrogen here and This contains one Like I said one base. So this is the base. I am using here double bond O Here we have double bond here. We have double bond and here we have NH2 So this is one base we have connected with C1 OH H. This is the sugar we have pentose So OH H and here we have H CH2 OH we have in general, but it is connected with a phosphate. Okay, so this point It is linked with a phosphate ion, which is P double bond O O minus single bond O minus so phosphate Sugar five-membered ring and a base this thing is nucleotides Okay, so base is there. This one is sugar and this one is phosphate They won't ask you the structure. You should know the definitions of nucleotides. However, this is also not that much important Okay, one note you write down nucleotides are linked together Nucleotides are linked together by phosphodiester linkage phosphodiester linkage between Fifth and third carbon atom of pentose sugar. Okay, this is the last thing you have to keep in mind a structure also you can draw To fast foot group you have to attach at fifth and third carbon Okay on pentose sugar like you see here. We have this group attached here Okay, one more if you attach this side Okay, this gives you phosphodiester linkage here the same this group present at this carbon third carbon This is third and this is fifth carbon. So this is the no Way the nucleotides are linked together. This is one nucleotide molecule At this point the another nucleotides are linked Okay, so like that you get a very You know big complex structure and CRT. I don't know whether it is given or not this structure But all these things you don't have to draw You should know the key points that I've given you that nucleotides are linked together by fast for diester linkage This term is important phosphodiester linkage between third and fifth carbon. Okay, so this is it after this We have function of DNA and RNA, which is not required, but I'll suggest you to go through once Through NCRT that is more than enough. Okay Yes Nothing is there. Okay So What we do next we have half an hour more. Tell me Any doubt you have no doubt one question you solve them One last question we will finish it early today Not from this some other things you see Did you write the test yesterday? There's cave pages. Yes or no Yeah, one question was there let me give you that question, which so there was this one question as to Friedelcraft's alkylation what it means What? It said there was this question in that test said Friedelcraft's alkylation is and then four options What are aromatic nucleus and Do you have that question now You have your phone with you right now all of you. Okay, let it be I'll Write down the question here. See the question is 2.52 gram 2.52 gram hydrated oxalic acid hydrated oxalic acid is oxalic acid which with two H2O hydrated oxalic acid Was dissolved in dissolved in 100 ml of water 100 ml of H2O 10 ml of this solution 10 ml of this solution Was diluted to diluted to 500 ml find normality of the final solution normality And the amount of oxalic acid oxalic acid Present in the final solution Do this What is the answer you got Shreya? Uh that 0.08 thing Did you get the uh option right? Yeah Oh Do it now Shreya the question is The question is there dehydrated. Okay, but with dehydrated it means the uh molecular mass should be what? 63 Should be 19 right Dehydrated means what I have given your hydrated oxalic acid Okay, I did not check this because uh the solution was given over there, no The solution the molecular mass they have taken as 126 correct? Yeah 126 But in the question they have given dehydrated So when it's dehydrated it means the mass molecular mass should be what 90? Oh, I switched both sir by mistake. That's how I was getting the answer Yeah, so when you get this dehydrated oxalic acid if you take Okay, then the answer will be something else it is not there in the option Okay Answer is something else which is not given in the option So you try this Hydrated means molecular mass is this Number of equivalents Will be what? mass divided by equivalent mass 2.52 divided by equivalent mass e So equivalent mass of oxalic acid is what? If it is hydrated I am going through the option so through the solution which is given Okay Taking this as hydrated 2.52 divided by 126 divided by 2 n factor is 2 for oxalic acid Okay This you will get this by 63 that will be 0.04 Yes or no 0.08 only So number of equivalents will be what 0.04 divided by divided by 100 ml into 1000 That will be 0.4 This is 0.4 Now we use n1v1 is equals to n2v2 So n1v1 is 0.4 into volume is what? Or 10 ml of this solution is evaluated no so into 10 n2 into volume is 500 So when you solve this n2 you will get 0.008 Which is not there in the option Okay Yeah, but I thought it would be the closest like this 0.108 so that's why I marked that Fine, no issue So this is a normality you will get and this normality when you try to find out the mass is equals to equivalent By volume of solution is 500 into 1000 So number of equivalents you'll get here Is around 0.004 Which is mass by equivalent mass of oxalic acid 63 And this is coming to be around 0.252 gram Which is not there in the option Okay, so this we get this we get when you are taking molecular mass is 26 And for this the Questions should be hydrated oxalic acid. This is one thing Correct if it is dehydrated Then molecular mass is what 90 Okay, so this will get here what for dehydrated if you try to do Then the number of equivalents is what? number of equivalents is 2.52 given mass divided by the equivalent mass And that will be 2.52 divided by 90 divided by 2. What is this value tell me 0.056 0.056 you are getting Okay, so normality is what 0.056 divided by Volume is 100 into 1000 This will be 0.56 normal correct Now 0.56 into 10 is equals to 500 into n 2 n2 is what 0.56 into 10 divided by 500. What is this value? 0.011 0.011 which is again not there in the option right I don't think 0.011 is there in the option Is it? No So that's why the answer was wrong Okay I think the When you look at the data It should be hydrated oxalic acid Then you see this equivalent weight is getting cancelled and we are getting proper 0.04 equivalent here 63 252 by 63 They're getting points. So it should be hydrated oxalic acid. Tell me anything else Anything else? No, sir So then we'll wind up, okay


Yeah, everyone I think Vinay said he should be on to facilitate. If not, I will. I can do that. Is it me or is Google Docs down again? Not just you. It's having some trouble. I feel like it's just like whenever we have a meeting, it goes down for five minutes. They know it's us. It's on purpose. Hello everyone. Good morning. Moderators lead to the party. Sorry about that. No worries. Google Docs is waiting for you. So as is customary, we'll just give it another minute and we'll get started here. Got a very interesting presentation on tap. So while we're waiting, I'd love to maybe ask for some contributors to be scribes for today. I can be described. Awesome. Thanks. No worries. I'm happy to do it as well. Thanks Alex. All right, let's get started with with our housekeeping items. I'm going to go through and first thing is I see a lot of members on the call today, but if you haven't already added your names, please do so. And if you'd like to bring up any items that you'd like to talk about, please make sure to include that next to your name so we can make sure we discuss that. So as I go through, I don't see any updates from the group at this time. With that, I'll just also quickly make sure is Doug, Doug's on the call. Hello. Maybe and then get started. I don't see any updates from the group today. So in that case, without further ado, let's get started. I'm very pleased to introduce Doug Davis from IBM. He's also been, you know, leading the charge on all things serverless with the CNCF. He leads the serverless working group and has been, you know, working very, very hard. And I was privy to a lot of the early discussions with the, the cloud events work that's being done. I don't want to take Doug's thunder but Doug very happy to have you here present to us about the status of the serverless working group. And, you know, as we start off today I just thought maybe I'll just give provide one particular input. There's been a lot of debate on what exactly serverless is and what constitutes serverless. So it would be great if you could also, you know, sound out on that and give your perspective as to what exactly is serverless. I have my thoughts. With that, please take it away Doug and thank you for being here today. Thanks for having me. So when Sarah approached me to talk to you guys. She gave me some guidance in terms of what you wanted me to talk about but not a whole lot so I wasn't sure what to put together in terms of preparation for this so please do not hesitate to stop me and ask me to some questions or to go in a different direction because I was guessing what to put together in this presentation. Okay, so just don't hesitate to to spend us on a different track if that's the way you guys want to go. Okay, so one of the things she's mentioned is something you were just asking about you know what is serverless. And I think from the serverless working group's perspective the best way to think of it is to first start out with what is a function.  They're typically event driven. Each request is typically short duration typically stateless. And with the goal of hopefully being lower cost because you're breaking up the monolith into either even smaller pieces than just what microservices right these are supposed to be tiny little bits of thing to get your job done.  And when you think of it in that way, obviously then a function is something relatively small like this little sample here. And what's interesting is, for most people a function doesn't even deal with the HTTP or transport aspects of things right. So if you look at this little, this little sample right here. Everything talks about, you know how to take in parameters how to process the parameters and then return something. It doesn't deal with the HTTP or transport aspect of things that's supposed to be sort of managed by the infrastructure that's hosting your function. Now, that's the way most people tend to look at it. However, there are some environments take, for example, Knative, where the user is responsible for managing the HTTP aspect of things right so they had to inject an HP server into their little JavaScript code here. Just to get things up and running or let the JavaScript framework do a form but either way, they have to sort of set that up themselves. Now that's not true for everything like Lambda will do it for you. I just want to make it clear that there are some environments where you have to do that yourself manually, but that doesn't change what a function is from this perspective of it being a small little utility class to get one particular task done and that's about it. Okay. So obviously when you look at this from an event driven process thing right you have your function executing someplace. You can have an event producer or event source generating events that gets sent over to your function to do some work. And as I said, typically these functions are meant to be stateless. So they have to talk to some back end service often to store the persistence or to get access to a database or something like that. But what that allows is for these functions to not only just be stateless but then to be also scalable right that way they can come and go as they need to, based upon the workload, but all the real data stored back here in the back end. So that allows them to be stateless. Okay, any questions so far. Okay, hopefully none of this is actually new. So what is serverless then relative to functions well the way I tend to look at it is serverless takes function to service one step further. Okay, because function by itself. As I said if it's just a small little unit of work. Notice what I didn't talk about something that is very popular with serverless environments things like auto scaling of the function based on the man, even down to zero right. So to me the difference between functions and serverless is that serverless adds a bit more of the orchestration and management layer around it right functions just small little micro micro service. Serverless says okay now let's do auto scaling based upon load or CPU or some other metric, including scale down to zero because one of the popular aspects of serverless well it's not that's true for all of them it is very popular. So that when it's not being used it scales down to zero, so that if you're an environment where there's a cost associated with it, it's going to be zero cost when it's not being executed. Okay, so overall you can think of serverless as not need to worry about the managing the infrastructure, but then service is meant to actually invoke functions under the covers. I'm just going to point out though that there are a lot of people who use the term serverless outside of functions in the sense that they don't think of what they're hosting as a function so for example, if you look at something like cloud foundry. No one's going to say that the functions of service environment. Those are typically web apps, maybe micro services, but they also could be rather large things. Now one thing that that cloud foundry is missing is the scale down to zero part but it will do auto scaling up from one right. So if you could add the scale to zero to me. Cloud Foundry could be a serverless environment from that definition of it's just there to manage the infrastructure for you you give it the source code you give it your deployment artifact whatever it is. And it manages the rest for you. Okay, that's to me what serverless is all about it's just the most popular use of it is for functions. So, with all that as a background, let's talk about the serverless working group. So the serverless working group in the CNCF was started I think around June 2017, mainly because the TOC wanted to understand what to do with serverless if anything at all. At that point in time serverless was still relatively new thing from a community perspective, obviously things like landed had been out there for a while. But it really hadn't taken off in terms of a broad open source community kind of a thing. And so they want to know okay what do we do with it, and in order to make that kind of recommendation or analysis, we first had to do what I would call sort of background work right figure out what is serverless. And kind of, you know what I just, what I just talked about in the first four slides right, what is serverless what's the state of the technology state of the ecosystem and stuff like that you know what is out there today, both from an open source perspective, as well as a proprietary perspective. And so we basically did that we came up with a white paper, explaining all this in wonderful gory details, along with the set of recommendations in terms of what to do next and I'll get to that in a second. But the other thing we created was a landscape and I, if you go to the serverless working group pages or get a repo, you will find a link to I think it's a Google spreadsheet that tries to list out all the popular serverless frameworks out there, what each one does the languages they support what kind of backend services they have stuff like that it's not necessarily the completely up to date, but at least it gives you an idea of sort of the general shape of what the community has out there today. Okay, now, in terms of recommendations. We did come up with some interesting things and I remember correctly a lot of them were things like look for other or look for serverless frameworks in the open source community that we can encourage to join the staff to start building up an ecosystem within the CNCF around serverless, also trying to look for education opportunities and explain what is serverless why it's so great and stuff like that. But one of the biggest things is we want to look at where we could help out the community relative to adoption or interoperability. Because, while there were some, or, while there were and still are a whole bunch of different serverless frameworks out there. There really wasn't much of interoperability between them. So for example, there are some that run on Kubernetes and that's great. They all run Kubernetes, but the way you interact with them, or was completely different right they each have their own set of API is and stuff like that. So was there some sort of interoperability project we can come up with just to make life easier within the serverless domain. Now, one of the things we realized though is because we had lots of different ideas of things we'd like to be able to do because we're all developers and we love interoperability and standards and all that other stuff. But we realized it's going to get really, really political, right because there are existing things out there and asking anybody to change their, their implementations or their API is is just asking for trouble. So what we did is we identified something that's sort of off to the side, and we realized when you think about functions and serverless. As I said, a lot of them are then driven. So we said okay well is there something we can do in the event space. And we realized that one of the pain points that people experience with events is not so much processing the events but routing of the events, meaning, how does an event get from the producer to the consumer. And today, the way that usually works is, especially if it's going through a piece of middleware is that middleware has to understand the event coming through it in some way. Even at a meta level just understand how to send it to the next destination it has to know what the destination is so maybe it has to read some issue better or something like that, or whatever. Even at that level it has to look the message in some way. However, most of those intermediaries need to do more than just simplistic proxying type stuff. A lot of them actually want to do routing based upon the event itself. So for example, maybe it wants to do routing based upon where the event is coming from. Maybe it wants to do routing based upon the type of the event right maybe creates go to one destination while it wants to go to a different destination that kind of stuff. Okay. Well, in order to make that kind of determination that middleware has to now understand the event flowing through it. And I don't mean necessarily has to understand all the business logic, but at least has to understand things like how to parse it to know what field to look at to do that routing. So we decided well what if we try to help in this space and that's how we came up with cloud events. Okay, what cloud events is meant to do is to help in the routing from from the source to the destination by defining common metadata attributes. And I'll give you an example in a minute. Well actually let me go ahead and jump there right now it's easier to talk about that. Okay, so let me look at me show you this example right here. You see this, this HTTP post, and you ignore these four attributes, the rest of it is just what you might see from an event flowing through or flowing over HTTP, right, you have the, in essence, so basically the URL is being sent to. The host name, the type of data, and then the data itself. Okay now in order for some sort of piece of middleware to route this message appropriately based upon the fact that it knows it's a new item type of action or event. You have to understand that this is Jason, how to parse this to look for a field called action and then take some, some behavior based upon that value. Okay. So what cloud events does it says well wait a minute, what if you just add a couple of extra HTTP headers to this message. Ignore this for a minute because that just tells you what cloud and specification spec version we're talking about. And this is just a unique ID for the event every event has a unique ID. But these two bits of information tell you where the event came from, and the type of the event. So this is a new item. Okay. So what this allows a piece of middleware to do is to without understanding them the event whatsoever. It can look at this metadata and make some very basic determination in terms of what it wants to do with it relative to routing. Okay, this is a rocket science you may even look at that and say oh my gosh what what the heck can you do with that it's so simplistic and to some extent that is true. It's not sexy it's not glamorous, but believe it or not, this actually solves a significant pain point for many people, right this little bit of extra metadata being outside of the event itself. Whoops, actually has been a real lifesaver to a whole bunch of people I had many customers come up to me and say thank you for creating this because we did exactly what I just mentioned. We had to create middleware, and every single time there was a new event with a new schema, all the middleware had to change to understand how to parse it and know what to do with it. This makes the life so much easier. Okay, and to be honest if there are other properties that people don't, or don't see today that they want to add to it, they can extend this themselves but the point is, much like HP headers in this example, we're providing a well defined location for where these extra bit of metadata supposed to live, so that you can use it for whatever purpose you want, much the same way in a server itself doesn't understand what's in the body, most of the time, it routes it to the proper web app based upon an HP header. Okay, same concept. Now, that's what we call the binary format, the structure is the exact same thing, except people come came to us and said you know this is all great but what if I don't even have an event that's currently being sent, we're not creating something brand new. Can you guys give us an event wrapper that we can just use. And we, and so we did, and that's what we call the structure side of things right so basically just said okay let's create an adjacent. And you can see the exact same data, except instead of HTTP headers, it's in since out of the body, and the data is the exact same. So this serves two purposes one, give somebody a well defined wrapper if they don't already have one because we do not want to have another common event format that was not our purpose, but if they don't have one and they want one recommended will give it to them. But then there are also other cases where people say you know this is great, but I don't want the data CP headers. I want it in the body because I want to just to be able to take this entire chunk of Jason, stick it into a database, and then let the next step in the process deal and if it's in if that information is as a CP headers that I need to extract HP headers and create some sort of global wrapper myself to have all the information there. So, it serves multiple purposes have the structure side of things, and that's what we did. Okay, so anyway, that's what the service working group decided to work on first was to attack that particular problem. Now, while we're working on that, we did think about other possible things in terms of next steps to work on. And one of the things that came up was serverless workflow, and I'm not going to talk a whole lot about that but you can kind of imagine what it is right it's orchestration of functions right so events coming into the system, you react to those events you do some processing, and maybe it's a multi step process, and each step can only process or can only get kicked off. After a previous step is already done, who's going to manage that orchestration and who's going to realize or to manage that one event needs to get sent to five different processes, and then they come back together at the end kind of a fan and fan that kind of thing. That's what serverless workflow is supposed to do for you, and that's itself as a sandbox project in the CNCF today. Okay, I should have pointed out that the cloud events is now an incubator project I came or when that happened I think it was about a year or so ago. So that that's in the CNCF as well. So summarize the status of cloud events. We did ship 1.0 the spec in 2019. We have at one point in time, we've had pretty much, I think, every major vendor out there in the cloud in the cloud native world show up at our meeting at one point or even AWS, which I think is a big win for us because AWS while they do do a little bit of open source stuff they don't do a whole lot right so they were there for a while. You know honesty though they've they've they've sort of backed away, not I think because of anything's changing AWS other than the person who was there left AWS and so we need to go back and ping them and see if they want to rejoin with a different person, but they are supportive of the idea of cloud events. I just don't think they've adopted it yet because they they have their own way of doing things as of right now, but they did admit that if we came up with the cloud events. Several years earlier they probably would have adopted that instead of doing their own thing. So anyway, we have several different SDKs and several different languages to help you with the creation and processing of cloud events from the center and to the center side. But the most, the most interesting thing from the latest status perspective is, if you think about cloud events, it's great for helping you get the event from point A to point B. But there's lots of other things involved with just managing the event the life cycle itself. In particular, how do you discover who sets who sends a particular type of events, or what type of events they actually do send. So you know what does you want to subscribe to. Okay, we decided we're going to start looking at a discovery API spec so that a consumer can go to one or multiple discovery endpoints and find out who generates what. Okay, obviously, once you figure out who generates the thing you're interested in, you may want to then subscribe to it. So we're going to create a subscription API spec that will try to standardize, at least for the protocols that don't already have a standardized way. Like for example, ACP. How do you actually do a subscription, right? How do you tell it what events you want, what filters you want, where to send the event stuff like that. Now, there are many eventing protocols that already have this defined and it is not our goal to reinvent the wheel. For those go use what's already defined. But for things like ACP for web hooks and stuff like that. Every producer has their own way of doing it. So we're trying to see if we can get some interoperability around that. And finally, we're also looking at a schema registry. This was created because one of the properties inside cloud events is a pointer to the schema of the event itself. It's an optional attribute people can include if they really want to. So what's missing is the definition of how to talk to schema registries, right? Because normally when you're given the URL to a schema, your natural connections and say, okay, how do I do it, you know, I'm going to do an ACP get to that URL and you'll get the information back in some format. But there really isn't a standard way of actually talking or managing schema in a schema registry itself so you can get some interoperability, not just on the reading side but on the creation or update side. And that's what the schema registry is looking to do. Okay. In terms of priorities, I would say probably discovery and subscription are coming first and schema registry last just because I think more interest lies in these two as of today. And that's pretty much all I had I would say have some links here if you guys are interested and follow those information. But let me go ahead and stop there and see if you have any questions or different areas you want me to sort of zoom in on. I want to give you a compliment and give the cloud events. Like, by the way, it's a great presentation. Something with Falco, for instance with cloud events, the group that the one of the contributors Scott Nichols came in and really explained it and the way that it could be used it's super super useful for useful for eventing and like you can trigger things like he built a cloud events integration for Falco sidekick that will trigger like based on a rules violation to multi multi cloud I mean it's it's it's really really cool definitely you all should check it out. It's a very good common place to you know for the event thing and scheduling but like server list itself in terms of Knative and the working group is doing such a fantastic job so kudos to you and the team. Yeah, well I'm glad Scott was able to talk to you guys he's a good guy. So I'm glad that that worked out cool. Any other questions. I have a question. So you talked about, you know, you made the distinction between functions and then serverless right and maybe once again I fall in prey to that distinction, if there is one there. But you know, what are the examples of fuzz. Without the context of serverless right because you know when you talk about AWS lambda or Azure functions or, I don't know cloud run, you know, they you what are the application I mean it seems like you can't have one without the other for any kind of a realistic application. Is that a fair assessment or incorrect. That's hard to. Okay, let me have to ramble a little here because I think it depends on your perspective right to some people functions and serverless are the exact same thing. There's there's no difference between them whatsoever and a lot of people use the terms interchangeably. I think if you try to step back and look at it from a purely abstract or puristic perspective. I think that's what I tried to lay out here on this chart, which is technically a function. I think to a lot of people, if you if you actually try to draw a separation, a function is just a smaller microservice. Right. It's really all it is.  Well, that could be something that never scales, but it's still a function. I mean, it's only when you add in, at least to me, some of the management around it, the auto scaling the scale to zero zero cost when it's not running. That to me is what's make it serverless because it's about not managing the infrastructure or anything else that goes around it because so so go back for a minute to the function side right. I can have a function, but still be forced to manage the entire bit of infrastructure myself. So I can do functions on Kubernetes today, and that works just fine and I could, I could and all in all honesty and all purity say yes, that is a function, but I still managing all the infrastructure myself and Kubernetes is not easy to use for a novice right. So no one in the right mind would say Kubernetes is serverless, but does it support functions. Sure, it's just an application is just a pod. Actually, that might also be helpful for this group, I think is, and maybe it's a good to have for to talk about the serverless work is, but when you talk about a function in the context of Kubernetes, but you still have something that it needs to run in and the context as a container. You are how do you say abstracting away the delivery transport. Is that fair. Is that the word to use, because you still have a function I mean function is always a function but it has to run in some context, and in the context of Kubernetes. It's a container, but in the context of lambdas, it is whatever lambdas I mean how they actually facilitate it maybe containers in the back end. Is that the right way of looking at it. So you are not you don't think about the, the running environment, but when you talk about functions. For me personally, the reason I'm struggling is because I think the answer depends on your perspective. I think I think some people would agree with you that even in a function environment, you should probably you should not have to think about the hosting side of it. Right. For me personally. I, I'm not sure I would agree. Right. I would still say it is perfectly legal for someone to claim that they are a fazz, but still require you to understand the infrastructure in some way. I could be wrong. Right. It's just my perspective but I think I think it depends on how you're looking at it because I think if you're going to claim that a function is going to hide the infrastructure from you, then I think you're probably in the mindset that says functions and serverless are almost one in the same. And I think it's a valid way to approach it. I just have been beat over the head so much with the abstract and and puristic model that I tend to separate the two, even though I'm perfectly comfortable also interchanging the words depending on my audience, right. So, I think it depends on that. Yeah, I mean, I'm going to say purity versus practical maybe. Thank you. Yeah. Just from that, extending that point, would it be fair to say that the server less or sorry, the functions are somewhat more of a stateless but the server less is more of a stateful. Is it meaning. No, I think I think most people would agree that serverless is meant to be stateless as well. You could do some stateful things inside your serverless stuff but the minute you start talking about things auto scaling, especially scaling down to zero. You almost have to assume that they're stateless at the end of the day. Now that doesn't mean they couldn't persist something because you're going to reuse the container so therefore you don't have to reload the cache every time and stuff like that. But I think in the most puristic form, I think serverless is supposed to be stateless as well. Right, without the users context, I agree with that. But I think once you inject the user and are taking the serverless as the substitute for servers. Wouldn't you say that you have to preserve some states in that context of that function that you were going through. I mean, when you say opposed to just the functions itself, because functions itself you probably don't need to have any. Well, so there's two different ways of that. Well there's two different ways. I kind of perceived your question. One is, you're, you're making distinction between functions and serverless relative to the code itself inside the application. You should make a, you draw a distinction there. Right. So if something's going to be stateless in functions, that same bit of code is probably going to be stateless and serverless and vice versa. Right, so I don't think the difference between fast versus serverless changes the deployment artifact itself. Okay. Now, relative to state though, I, I, my mind is still stuck in this mode of. Yes, you may need to persist things between invocation of either your function or your serverless function, but that's not typically saved inside the, the, the running artifact itself. Those are typically saved in some remote system some sort of database or even just a disk that's on a shared file or something like that right, because you want to be able to scale down and still persist that information. Importantly, you also want to be able to scale up so that multiple instances can share that data. Right. So I really think that that the fast versus serverless aspect, I don't think plays into the stateful versus stateless thing. I think that's a separate side discussion. Okay, I see your point I think you're saying for the scaling purpose you have to separate the states from the. Yeah, and like I said though that doesn't mean. Yeah, and like I said, I don't think that doesn't mean you can't do optimizations right so for example there are some environments where they scale or the function when it's not being used scales down within milliseconds. Persistent and that you know that that that's valid. But some sort of persistence store there inside the container doesn't make a whole lot of sense. But if your runtime environment or your, your container lives on for maybe a minute before it gets scaled down. Then maybe it makes sense to have a little bit of persistence store between invocations or between incoming events, because that way as I said, you don't want to necessarily repopulate your cash or maybe you can do some optimizations and, and you know, let's go back to the database every time because maybe that's expensive. Right, you can do some optimizations there but that's strictly or that that's usually just for optimization purposes it's not going to break your flow if you don't do it. Good. Okay. So so I had a kind of question about the cloud events stuff that you don't mind moving to the slide so kind of I have to kind of security perspective questions one is related to cloud events the other ones related to kind of generically the programming model but it seems like even now that you're you kind of when I see this reminds me a bit of like, you know, all what's top 10 in the series of things that right it seems like there are certain considerations that also need to kind of have best best practices off with regards to you know the metadata they're putting over here is that is that something that you think needs exploration. For example, over here is there any restrictions in the sauce ID ID is confidential piece of information and things like that do you think it's an area that needs to be exploited a little bit more. So, the, the, the cloud events working group very purposely avoided anything having to do with security. Two reasons. One is, it's a very, very complicated topic. There are many different ways to get it done. There are many existing standards out there that tell you how do you, you can secure messages already, and we didn't want to reinvent the wheel and nor did we want to necessarily pick a winner.  The other really, really big reason we decided not to touch it is because we realized that the minute we touched it we'd never ship a spec. It would, we would get bogged down in trying to make those those answer those questions that that we would be there for years trying to settle it. To avoid some of this, some of the pitfalls that that someone was ran into in the past with like WS security and stuff like that right so we decided at least initially make 1.0 go out with no security whatsoever. People can layer it on themselves later and we can always look at it again later and in fact, just recently somebody in our working group proposed a extension mechanism to sign the cloud events. And so we are going to be, you know, it's a valid it's a valid proposal so we're going to be looking at it, we may very well adopt it, or we may reject it and say nope sorry we're still not going to touch security we don't know. But it is definitely something that people will want us to explore. I just don't know where it's going to land, but we decided to go out with 1.0 with with just the bare bone minimum of how to get the metadata across. Yeah, yeah that makes sense. I asked the thing you mentioned that this was going into incubation was that. Yeah we're already in incubator status so there's you know there's sandbox incubator and then put it what's the final one. Graduation graduated thank you graduate yeah. Yeah. Yeah so we're an incubator stage and I got us with you I haven't gone back in a while to check and see what graduated status means. I don't know what the criteria is. Maybe we should be going for graduated status I just I came with the criteria is yet. But to be honest, the status doesn't mean a whole lot to us I know that maybe more marketing s or anything else. But we should probably look at that but I don't think it changes what we do because we're pretty happy with the current state of things and no one's complained about it or found major bugs yet so I think we're good. I'm just wondering because that probably means that we have to provide some recommendation for security as well so we may have to take a look at this one. We may have a bit more work to do. So what you're saying is if we want to if we want to throw more work on your plate we need to go for graduated status is that what you're saying. We just farm it over that we just farm it out on trace. There you go. Yeah. Sorry. Sorry, good friend. So so the other thought that I had was like moving towards service. A lot of the traditional security controls can be done in the way that people are used to. So the kind of is that being asked for certain, you know, exposing certain inner workings of it or creating different abstractions so that people can control, you know, where the data that's coming from with excessive data with this reuse of the same compute nodes for different functions and things like that. Just make sure I understand the question this is more generic question for serverless and not about cloud events in particular right. Okay, yeah. Okay. So, I think in general, there probably is a desire for some level of inner ability in the serverless runtime itself, whether it's the security aspects that you're talking about or whether it's something as simple as, Hey, can we at least standardize on what your function signatures look like, right there's always good people that want that. And we've had lots of conversations about getting into those types of topics. But we've kind of shied away from that for the same reason that we landed on cloud events. The minute you do that it's going to get very very political, because people have existing things and asking them to change it is going to be a real nightmare. And the best way to answer your question is, we may eventually get there, but I think it's going to take some time. And in particular, I think we need to wait until the serverless working group and the CNCF has had more success stories put it that way to show that we're not just creating things out of the blue. We are not just trying to take one, one vendor solution around everybody's throat, but we actually have a success path or success story. Of producing things that actually are interoperable and provide benefit to the community in a very neutral way. And I think once we've done that with some of the things like cloud events, the subscription API discovery type stuff. I think once we have those under our belts, then we'll be able to tackle the things that are slightly more political, because people will see that we're not in this for any nefarious reason other than to actually help out our customers. So I think the short answer is yes, but not yet. But yeah, thanks. Yep. Question on detection. Are there any standards that you're working on in terms of what all should be logged for availability failure scenarios and etc, etc, in terms of data and metadata. The short answer is no, I haven't heard that topic come up as a possible work out of me yet. If you could actually, if you think that's an area of interest, if you can send me a note or something, just giving a little more descriptions of what that area is I can definitely stick it into the backlog of potential things to look at in the future. I know we're always looking for new ideas. Yes, both both in the builds and run phase, and I think there, there are visibility and controls that are needed, especially in regulatory environments. Imagine you're updating stock prices or something using functions. There is auditability requirements that financial organizations have to meet. So just wondering from that perspective. Yes, we can work around and we can build all that as a separate function to capture from other functions but still it's very complex and having a standard in terms of how what attributes what data and what metadata we need to capture to get a complete visibility of a function that'll be free. Yeah, that might like I said if you can send me a note with that information to be really cool because otherwise I'll forget. Just one word of sort of warning about that. I'm going to phrase this right. There may be some nervousness of getting into defining what payloads look like.  And we've had a gazillion of those. Right. And so the idea of trying to force one particular schema on everybody even if it's in one domain is a challenge right let that domain. Let those domain experts be the ones to do that right so if it's all if it's about one particular type of government compliance or regulation kind of thing. And folks who are experts in that go off and do that if they want. From the, from our perspective as of today anyway we've, we tend to focus more on the, the abstract solutions you know just how do you get that specific payload, whether it's standardized or not from point A to point B, right. Well I'm not saying it's not possible for us to one day say hey look this is just a big problem we need to help the standardization in this one particular area around the schema format, I'm not saying we wouldn't do it for sure. It's just, just a warning it may be a little, you may be nervous by getting into that. Just, just to worry. I will send you an email. Thank you. I'm kind of staying on the same topic I think it's not so much that we want to impose the semantics but we're looking for a mechanism where an existing framework could be leveraged so when I was trying to understand what you've been by metadata. We're in the security world so we're thinking about something like the ontology from mitre attack, or some other, you know variation smaller variation of that. So, you know, whether that's a plugin thing or a traceability thing which was just alluded to as an audit function that's kind of what we mean. I don't think you have to pick a winner but the whole. The thing that gets me excited about this is that there's a mechanism where in some abstract amount of metadata then can be what decompose to this to the level of a function mesh and that's that's really the winner I think. Yeah, so if I understand what you're saying there correctly. What I think you're describing is more like some sort of hook mechanism, whether it's an inbound or outbound thingy on a particular implementation of a serverless framework, or whatever framework you're using to host your application. And I can definitely see value in that. The only reason I'm hesitating is because up until now, the serverless working group has for the most part been focused on writing specs, not implementations right. So, we obviously have SDKs but those are SDKs around the specs themselves and they help to prove the spec out and stuff like that. But so far the working group has not necessarily say we're going to go off and create a new project whose sole purpose in life is to write code. Right. And that's why I'm a little hesitant to say yeah hey that sounds like something we should get into because we haven't gotten into that and we and, and we'd rather, at least as of now, focus on writing standards around apis and stuff like that, and let multiple implementations go off and adhere to those apis. But it's definitely an interesting topic I can understand that perspective. It's the same issue with API building right though the old API first design. Was that maybe three years old now, I was beg the question will you stick the metadata in the API or do it some other way. Yeah. Yeah, I agree. Great topic so thanks this is really relevant for us for this community to look at. Yeah, sure. And thanks for all the questions are good questions. Any other questions, yeah. Yeah, I have one question there. Are there any concerns related to open source libraries being used by those like serverless functions. None that have been brought up as part of the working group itself no because as I said for the most part, we kind of stay out of the implementation of these things. Okay. And if there were issues as part of the SDK development, I'm personally not aware of them but I to be honest, I, I'm not too heavily involved in the SDK side of the house. Okay, sounds good. Thank you. Yeah. Yeah, I'm not sure if maybe I lost an extended extension of that question to Magnus is, I think, where I look at a security implication is of course it's still code you have a lot of open source packages that you're building on top of. And, and obviously there is a need to have visibility into the vulnerability posture and then those go back into compliance kind of regulations and having visibility to make sure those are being addressed as well. I mean I think that threat dimension is extended across all of those applications tax right with his VMs containers and serverless. Anyway, so just a comment there. Any other questions from the group for Doug. Great. Well, Doug, thank you so much. This was a fabulous presentation. I think, you know, it really clarified some of the nuances for us as we think about. I know that, and just for the broader team, you know, as leading an effort to talk about, you know, the security in the context of serverless so this is incredibly helpful. And hopefully we can lean on you for your expertise as we progress through that project as well. And thanks for having me I really appreciate it. Thank you so much really appreciate it. Thank you very much everyone. See you all next week. Thank you so much. Thank you.


reauthorize low income low income weatherization for the weatherization assistance programs and reauthorize its sunsets June 30th like zero when you worked on this when the general assembly restructured the fuel taxes three years ago there was a three year sunset built in the sunsets June 30th 2019 so first and foremost our ask is to reauthorize low income weatherization to protect those thank you those five programs typically reauthorization has sometimes been three years sometimes been five years this has been around long enough we would ask that it be reauthorized permanently that the sunsets simply be removed for the low income component and as you consider an increase hopefully a step increase that you kind of draw a circle around whatever is dedicated to low income weatherization so that it's clear that the existing the existing fuel taxes the existing revenues for low income weatherization are dedicated to the weatherization assistance program and that any incremental increase also clearly be dedicated to them through the home weatherization assistance fund which is a special fund within the state's funds so that's our first and foremost ask the second ask as you heard from Richard Faisy earlier and other witnesses we've worked together to come up with a way to meet the Governor's climate change recommendation to double the number of units it can't just be done by low income weatherization it needs to be done in concert with moderate income weatherization through efficiency Vermont through 3D thermal including also through the programs that neighborhood sequester Vermont runs and our proposal is to increase it the fuel tax two cents per gallon next year and then again two cents per gallon next year and for Vermont gas to go from 0.75% gross receipts tax to 1.5% next year and then 2.25% the year after which would effectively double what is currently dedicated to low income weatherization but would then distribute that somewhat differently in our analysis to get to the 4,000 units per year weatherized we would see 35% of the new funds the new revenues go to low income weatherization 40% to the 60 to 120% of median area median income ban to note the question earlier I can address that briefly in a moment so 40% to more moderate income 5% to the affordable multi-family housing developments assisted through 3G thermal and most of those are the more complex projects that are nonprofit members 10% for existing market rate, thermal conversion measures and 10% for workforce development and expanded marketing especially in rural and hard of just serve areas for the more moderate just briefly address the question where does the 80 to 120% come from anything below 80% is considered by HUD and in the housing world as lower income for a variety of federal programs 80 to 120% is generally considered in the housing community the antipoverty community with more moderate income range and the state context for that is that the governor's housing for all revenue bond that you all passed two years ago that went through VHCB and is being spent producing affordable housing all over the state that the governor and the proposal reserved a certain percentage for the 80 to 120% ban and for VHCB's the home ownership statutory their statutory limit is to serve people up to 120% so that's generally where the 120% standard comes from how has it come to pass that in Vermont the law demands electric zooms to contribute 9% and every dollar they spend on electricity to efficiency and for a heating world the number is less than 1% is the legislature responsible for that? I don't really have a clear answer for you Senator you've been working on this for a long time I certainly haven't does all the credit go to Mr. Koda or what we'll ask him that it goes to Vermont Gas it also goes to there is an electrical charge my question is why is the charge on oil so miserably and out of whack perhaps how much money did we spend out of state to buy oil and we only that's 0.8% to try and deal with Vermont homes it's a trick question in the other it is 11 times as much of a legal requirement to deal with efficiency from the past it started over 20 years ago and part of what funds low-income weatherization is also a 0.5% gross receipts tax on electricity I can't tell you what was behind the infinite wisdom of the General Assembly that created the efficiency efficiency utility working with directing the public utility commission but these are historic numbers that have been around for 20 years and it's I think it's up to the wisdom of the current General Assembly that you want to make changes to that do you have a dog at home? I think that's another rhetorical question what happens when you go home year after year thank you very much any further questions so thank you very much for that wrap up for this morning my guess as to how we have such disparate numbers is one was a regulated fuel it went through a department of people seeing process someone did some cost benefit analysis saw the wisdom of the investment and off we went but that's not the system underlying this program so do we will someone refresh us sometime in this discussion how much money will markers spend cash dollars every year to buy fuel out of state to meet their hopes so regularly I'm sure Mr. Kodak can help us with a lot of data and if we didn't have an amendment just a topic thank you so many as you know for a week we've been passing over as 55 since like a toxic bill seems like a toxic bill are they still passing it over today? yes well potentially not but I'd say I'd say yes because we've seen the amendment that grew out of a conversation so if you could correct me please thank you as folks know I think it's two years ago feels like longer that's one of the three passed the senate passed the house, went to the governor got the intro and through executive order and the agency committee on chemical management got started and meanwhile I think the senators are interested in doing the statutory rather than the executive order so we're moving S-55 to do the same thing and I think that S-103 did before but meanwhile that group was formed with me and so I asked Mr. Agate to work with A&R to look at are there things to and to just harmonize building this in statute that we don't have to reappoint everyone start from scratch we have knowledge that's already been done and go on so at the same time I asked Deputy Secretary Watt not to include the most part new proposals that we haven't worked with and we have a proposal of amendment that's here in front of us and other things so I'm pretty like two of us so if you could take us through them and start reading it honestly my sense is we may not feel well enough but we can at least get a look at what we have so the S-55 amendment that you have in front of you does three major things it conforms to the Inter-Agency Committee on Chemical Management that was proposed in S-103 and S-55 is introduced this year to the membership of the committee and the power of that committee under the executive order under 02-19 in addition it strikes a requirement required report from that Inter-Agency Committee that was S-55 has introduced because the Executive Order Inter-Agency Committee has already addressed that report and submitted their recommendations to the governor and then the third thing it does it gives the Inter-Agency Committee new authority to basically accept nominations for review of chemicals for their prevalence in the state use in the state risk to people in the state and to have the recommendation to the governor and then tangentially review policy and law making changes that would address the management of a particular chemical so those are the three major things it does on page one you'll see the Inter-Agency Committee is created its purposes lines nine through fifteen remain the same they are unchanged the membership is largely the same on page two line four it had previously said the commissioner of information and innovation for whatever the subsequent entity is designated it's now secretary of digital services or doesn't mean in addition I don't believe the governor's he has a secretary of transportation on it and so that would be one additional difference from the executive order the citizens advisory panel that the Inter-Agency Committee is required to convene largely remains the same some of the language is different page two lines eight and nine the agencies wanted to be clear about that the persons on it are available to the committee on an as needed basis to provide the following expertise and they were very clear about that one individual with expertise and that's throughout then they combine some of the membership from S-55 as introduced line 13 and 14 an individual with industrial hygiene or occupational health expertise they were combined an individual with expertise in human health and environmental risk assessment that was combined a new language is on page two line 17 you have had an individual with expertise in manufacturing they have proposed or processes located in Vermont and subject to Vermont record keeping and reporting page two actually going on to page three lines one and two subdivision H that's new one individual associated with the small business located in Vermont and then line six and seven one individual with expertise in public policy they added that phrase with a focus on chemical policy so largely the membership of the citizens advisory panel is the same some technical tweets there then you get to the authority the additional authority the duties of the internet agency committee page three line 17 you see new subdivisions four, five, six and seven and this relates to the new authority that's being added in the new section that's section 16 6634 and it is to review nominated chemicals and make recommendations including proposed legislative or regulatory changes to improve chemical management through changes to chemical record keeping and reporting or other requirements subdivision five is really about the process that they're going to engage in for that nomination they'll have that ability to hold public hearings to take testimony and receive comments et cetera page four line four is how they are going to implement those recommendations that come from the 6634 process they're going to coordinate the appropriate agencies to implement the recommendations and then page four line seven they will also have the authority to develop procedures guidance and other resources necessary to carry out the function of the inter-agency committee I have a good question so there's also a high concern to children right and I forget how to say hey high concern to children program is about 66 chemicals and whether or not they are present in a children's product as you know that there are let's just say a hundred thousand chemicals that could present an environmental or human health risk so this committee will have jurisdiction over any chemical nominated whereas the working group for chemicals with high concern to children has jurisdiction over 66 or any chemicals added to that list by the commissioner about five rule I have a quick question I don't want to stop this but is there any way where we say the same chemical comes up in both bodies both panels so how does that get sorted out well you'll see in the 6634 process that the process involves some process there's a nomination then the interagency committee reviews any recommendations from the technical team then they vote on what those recommendations are and then they make those recommendations to the governor and the legislature and then you just saw and their authority they have to coordinate with appropriate state agencies to implement those recommendations so I think there is opportunity throughout that process for coordination those little high concern working group slash commissioner of health commissioner of health is a member of this so I think there should be ample opportunity for coordination on page four line 16 the date for the report has been changed from January 15th to December 15th 2020 then also the report is to the governor and makes recommendations regarding actions of the committee to the governor and you get a copy of that before the report includes a couple of new provisions line 7 and 8 a summary of identified risk to human health and the environment from reported chemical inventory and there had on page 5 line 12 there is the new reference to human health and the environment so it's largely the same on page 5 at the end line 21 you had had a limit of four meetings per year of the interagency committee that has been struck one thing of note there is no provision here for compensation of anyone that has never been and I just want to note that so so moving on page 6 section 2 this is the new section which sets out the nomination authority and process you'll see page 6 lines 8 through 11 the committee accepts nominations to review a chemical class of chemicals or group of chemicals that nomination may be made by the committee, a member of the citizens advisory panel worth of public the nomination submitted to the chair in a form developed by the committee and shall include at a minimum and to the extent information is available to following information but this is my biggest question so you're a member of the public you're authorized to make a nomination but you now have to submit a form that includes all of this information the use and risk of adverse exposure information about potential hazards or risk information related to releases to environmental media the extent to which the chemical is regulated by the state, the federal government or other jurisdictions and any other information the committee determines is necessary so will a member of the public have all of that information will they have that information what is the expectation from the agency on what would be accepted as a nomination that phrase and to the extent information is available is this I'm not sure how someone would available to whom with what level of efforts we can present I think that's part of that whole question what is the standard that the agency will hold people to in submitting a nomination I mean I think you saw some of that earlier this year in S-49 when people saying the leachate from landfills has PFAS in it that creates a threat to both groundwater and surface water quality is that enough is that enough for a nomination I don't know the answer to that page 7 line 4 the committee shall determine whether nomination warrants further technical review they may require additional information and they may prioritize review of nominations which makes sense if they get 50 nominations they're going to have to prioritize what they're going to do we need to schedule for review I have to leave soon as well I do worry that tomorrow we don't have much time on this and I would say it's a priority over weatherization stuff since this is a crossover issue this Friday the last day that this can actually we're fine I mean we fine but for as long as your leadership says that's what I was thinking it's working but it would be to them I think very long this morning so we have I'll work on the schedule and we'll I don't want to rush something that's important I appreciate everyone's concern that you can get it right so I can move fast to the rest of it so if there's the preliminary determination to do the review they set up a technical team to do a technical review if the technical team determines that they make recommendations you'll see on page 11 page 9 that the full committee reviews the findings of the technical team and then the full committee issues its findings they give the citizens advisory panel time to review those findings and then if they determine that they're going to make a recommendation on page 10 they approve or deny the recommendation and then they submit that copy of that recommendation in a report to the governor and the appropriate committees of the general assembly the one thing I want to note I think it's important section 2a you can't tell the governor that he can't have his executive order anymore I'm sorry to set that up in the first place but I'm not going to get into that you just say it is the intent of the general assembly that the interagency committee established by the governor's executive order shall fulfill the powers and duties of this statutory committee and that the persons appointed as members of the citizens advisory committee of that governor's interagency committee shall continue as members of the citizens advisory committee that's your intent you can't tell the governor that the executive order doesn't exist anymore when there's conflict between statute and executive order the statute controls but you just basically conform the statute to the executive order there's an argument that they can exist at the same time but you just want an expression of intent that they will not and the goal was whatever an orderly transition from one to the other seems like the discussions suggest that a way amicable transition that raises the question of when do you want this to go into a guide currently in passage on passage so that transition would theoretically be made possible so I'm just thinking about that a little bit it almost seems that there should be a little time post signing the law so alright so thank you everyone thanks for staying over we will schedule more time and I would like to make some interesting partings because none of us have gone through that nomination I appreciate everyone staying over thank you