How do I do that? Um, yep, I believe it's reporting to the cloud now. There we go.  Hi there. Hi there. Hilda's a guest. Hilda's a guest. Let me check my, my email. I emailed the contractor again, uh, yesterday and. Um, He's a really eager beaver. Yeah. I do not see anything. Hi, Jennifer. Oh hi, Rita. Where are you? I'm in Edmunds, Washington. Over there. That's right. We went this weekend. Yeah. And you can see the water down there. Oh God. I'm jealous. Cause my mom doesn't have a wife.  And it's someplace different. Oh my God. I'm a little tired of the wall four walls of my house. Right, right. Okay. Oh yes. Okay. So that's our agenda. That's just the agenda. Yeah. Yeah. So I officially call to order. Is everybody here? Uh, It seems that we have a quorum here. I'm going to stop. I'm going to just, I'm going to step out in a minute. I just emailed the, um, The contractor for 19 the fall in. Okay. And I even, he hasn't responded, but he said he was going to be here. Um, last week he emailed me and said he'd be here. I told him that. I told them that if they weren't going to show that we were just denied the application, I mean, Rob more said as much, you know, there's not much the commission can do. So. Right. So lingering questions. Good. Well, we had questions. Yeah. Always. This is. Full professors used to get 10 minutes and assistant professors would get 20 minutes. How long do no show contractors get. 20 minutes. We only gave our professors five and 10. Oh my God. They sure have changed. Yeah. Alrighty. Well, do we go to the public portion of the meeting and then come back if he's late? You could. Uh, yeah. Okay. That's very generous. Yeah. Well, I will officially call the meeting to order. Um, I believe that, um, Nate has another engagement. So he will be handing the meeting over to Ben. Yep. Yeah. I'm going to step away now. I'll, um, leave my computer on. Okay. Thanks everyone. Okay. Thanks, Nate. Hi, Ben. Hi there.  I've been working in the office since June 1st now. So. Oh, wow. Do you have it all to yourself? Uh, no, there's, there's some other people here. It's, uh, it's probably at like three quarters staffing right now. And do you wear a mask when you're in a public space? It's pretty weird. No, I'm not. I put on a mask. Yeah. It's pretty second nature at this point. And even, we don't really have face-to-face meetings either. I'm still like, I'll zoom if I'm talking to Chris or Rob like right next door. That's amazing. Yeah, it works. But it's kind of weird. You can often hear their voice and then the delay. Yeah. Yeah. Well, it's sometimes good to be able to, uh, Go to an office and work. There's fewer distractions. Yeah, exactly. So I guess we'll do that. We'll assume that, um, That the public part of the hearing is not going to happen. Um, but we can go back to it if the contractor does come. So, uh, so this shouldn't, the meeting shouldn't take too long. The portion, um, I don't have any announcements. Okay. You know, I don't know if Bruce had any more questions about, uh, I don't know. Amherst media. This way. Um, Bruce on, I saw Bruce. See Bruce.  I did that now. I'm good. Okay. Do you have any other questions about Amherst media? Well, uh, not really, although, uh, I forgot to ask about the pedantic, uh, the pedantry associated with that that, uh, with this Kendrick property thing that we're looking at. Is there a, is there a, um, a time, a clock that's been set in motion that causes us to have to act. Um, I mean, is there any, there's no cleverness that this guy is performing. Is it that he just, by not showing up, but vice by starting the. Are we in a position where we have to deny this meeting or do we inadvertently cause something to happen? That's the question that arises from that. Oh, no. Maybe something, if he hasn't shown up at the meetings, he's put in an application, we can deny the certificate, which is different, kind of the opposite with what they were talking about with Amherst Media. We haven't continued this meeting for two hearings or anything because it was on the agenda two or three meetings ago, have we? No, because we convened to act upon it and he wasn't here. Yeah, but we kind of opened the public, but we didn't, we didn't continue it as well, I guess. Did we actually continue it or did we just let it flow from one date to another? I believe we continued because we didn't advertise, re-advertise the public hearing and do the mailings again. I think it was a continued... Well, we're... I guess what I'm thinking we do is continue with the public portion of the meeting and if when we finish that, I'm giving him the opportunity to come late, if he has not come by the end, then we will officially vote to deny the certificate and close the application. And we will deny, I mean, we'll talk about it when we get there, but I would vote to deny because questions that we've raised that Nate has conveyed to him have not been answered. Correct. And I would just think the fact that somebody doesn't show, you know, the town has incurred the cost of advertising. Yeah, but I think that Bruce, having possibly been slightly unnerved by the abutter's letters, is thinking very legally. Yeah, no, no, no. We have to deny it, but I think we can deny it on the basis that we have questions that are all resolved. I think we can also deny it just because he hasn't shown. Yes. Yeah. But so we will officially deny it and close it out of the application. Okay.  And in terms of Amherst media, there's really, it's, it doesn't concern the commission at the moment. Yeah. And I think it won't. I think it won't either. I think it's an old chain of events. Right. That we are not involved in. Exactly. Except to learn from the, the experience. God, I don't know what I would like to say. We don't trust people. Yeah. But it does. It does turn out that in. There's a hidden in the bylaw of this, the state bylaw for local historic district commissions. It's something that the town has never done ever before. But I would say going forward. The town attorney said. That any time. An application is continued to another meeting and the decision won't be made within 60 days. We will have the applicant sign a form. Yeah. Yeah. So that. Yeah. Okay. So I guess. Ben, I would turn it. Over to you. To take the public items. Yeah, certainly. So. We had discussed. Our previous meeting. Adding a legal ad fee. For future applications. And there are some emails bounced around the planning department about how exactly to institute that. So I think.  Well, we had settled on $50. I will say, I think. To like actually institute this as well as the exclusions, it would need to be. Like an advertised public hearing that people vote on. So I don't think we can actually vote on. Anything now, but we can certainly discuss. Anything that's advertised with these agenda items. In future date, but. So. So the legal ad fee. Can is something we can do. And I guess we had discussed whether it needs to be in the rules and regulations or the bylaw.  And Rob Mora indicated it. It doesn't necessarily even have to show up in the rules and regulations. It can just be, you know, a checklist item on the application. And that's something that we do internally, like the inspection, the permit. People who process permits here, we'll just, you know, need that check to move it forward. And, but if we do want to have it written in the rules and regulations, Nate provided some example language here. The commission establishes a legal ad fee paid by an applicant to help cover the cost of publishing the legal notice. And the daily Hampshire gives that the fee of $50 shall be collected at the time of application. And it's going to require for an application to be considered complete and reviewed by the commission. So. I think also we had a discussed.  Or. Yes. So if there's other language we want to put in there, we can do that as well. Yeah. I would agree. I would definitely want to see a hardship. I feel like if. I don't know somebody. Yeah. I would say that. I would say that. You know, I would say that it's a minor repair that I would hate for them to have to spend $50. Yeah. In fact, I would break that out. I mean, I think there are two kinds of exemptions I want to say. One is a genuine hardship. Exemption.  And the other is, you know, I think I would say something like. I wouldn't know how to quite say this. Yeah. I would say it's a minor change. Let's say it's something that will is estimated across. Under 100. Or 150. You know, something that small. They have to pay 50 bucks. Right. It's going to really annoy our neighbors. Exactly. It would. However, I wonder if you should also put just a little when you say. Yeah. Yeah. That's an excellent. Yes. Yeah. I agree. I think this is not a profit center for the town. Exactly. Yeah. Yeah. So this is the incredible costs. To the town for. Yeah. But they, it says that. Oh, okay. Cover the cost of publishing. Yeah. You could decide. It's a considerable cost to the town. I think that's what. Or maybe if you said help defray, because it may not cover the whole cost. Well, that's what it helps for. Yeah. Yeah. Exactly. You could say help cover or defray, but I think they're equivalent. You're right. Yeah. Yeah. A question though. On these. First of all, so far as. Well, any, any hardship. Thing we'd have to say, well, who's going to determine that hardship. And clearly the answer is. The town, not the us. Because. It doesn't get to us. Until the application has been made. And this is pre-applicant. This is part of the application process. So if we're talking about. The determination of hardship, it's going to be done by the building commissioner. Yeah. And the building commissioner has already exhibited. A certain understandable. Reluctance to get too far into the weeds on this. Now we've given. What's follows the exclusions. So we've already done that. I think the concern raised about. Matters that costs less than a hundred or a hundred. You know, don't cost much because we've, we've handled that by. Right. Excluding them. So I think if. I. It becomes difficult. I don't know how you would make the hardship thing work. I mean. I mean, I, I, I. It becomes difficult. I didn't know how you would make the hardship thing work. Anybody got any ideas as to how it would work? Oops.  Or would there be a different amount of a different fee, depending upon circumstances? I'm. It's such a, but it's, it's so indeterminate right now. I'm not sure what you're looking at. It's 50 bucks. I mean, I, I think that if we start trying to. Cut and slice this, it'll, it'll just become impossible. I would think so too. Yeah. I'm trying to think it would be, you know, we'd have to verify income somehow possibly. That's a. Can be a complicated process. Assuming that if anybody had work under $250, they wouldn't probably be coming. They wouldn't need to know that we have the complete list yet. I mean, we just have, we just have a list of minor items that have come before us. So I don't, even if somebody's getting a new tap or something on their chimney, it's, I don't. Yeah. My sense is that we'll pick this up progressively because if somebody comes along and has to pay a hundred. A fee and, and, and the complaint is raised at town hall or. Say one of you folks on the commission who live locally and run into people much more, for example, than Jim and I might, because we're outliers geographically on this.  And so the, the feedback will happen through those processes. And then we'll find out, oh, there is a couple more things that we might add to this exclusion list. So I think that it's a, it's a, you know, it's an evolving process. We should think of it in those terms, right? And try to imagine that we can solve the whole problem. Anticipate them. Right now. I think we'll just trip over ourselves trying. But I don't think it's, it's fair to just have it open ended that when you bump into someone and, and talk and chat about it, that a fee gets determined out of an informal process like that. Well, it's not determined by that. It's, it's feedback. It's part of the feedback mechanism, whether they talk to you or whether they talk to the town. However, it's handled. There's a feedback process that the commission might have inched and might decide, well, yes, that's true. There's a couple of instances here that really are unnecessarily hard and we'll, and then we, we take steps to add them to the exclusion list. But what would then happen is we would hear about it from Rob Moore's office. Most likely. Yes. It wouldn't come to us until the next month. Right. We then have to get the language. That would be another month. I wonder, I wonder if you could solve this simply by just saying, if the cost is less than so, $250 or. No, you can't do it that way. That's true. It's an aesthetic thing to you. That's true. Sorry. I mean, I guess we. For now we leave it, you know, we've tried to make it as. Unburden some as possible. The town. You know, Revenue is down taxes are down with everything that's going on and that we really felt we needed to. You know, help to unburden the town as much as we could without overly burdening the applicant. So we did ask to put a bit more. I can't, the font is small. So I can't say. Okay. Here I can zoom in. You know, a bit more explanatory language. What? Initially it was recommended that they pay, I think 75 to 100. So we did lower it. We did lower it. We did lower it. We did lower it. We did lower it. We did lower it. We did lower it. We did lower it. I know the pushback. That we had with the. The fee, the rental permit fee.  Right. They don't get much about it. We really heard a lot about that. So I'm just imagining. You know, the give and take that we get. Yeah. Okay. So I'm just going to say. The legal ad fee. Yeah. The legal ad fee. The language about why we're doing this. Is that. The legal ad fee. Yeah. Go. Yes. Okay. The commission establishes a legal ad fee paid by an applicant to help cover the cost of publishing the legal notice. I would say the considerable costs to the town. Okay. I really would because.  Otherwise people aren't, aren't going to. Imagine that. Yeah. Yeah. It's not just the legal ad fee. It's the mailing as well.  So it's to help cover the car. The considerable cost to the town. Instead of costs of publishing the legal notice in the Hampshire. That's right. And then the rest there. Of publishing the legal notice. Okay. That's a good way. Okay. I guess there's a problem. Yeah. Yeah. Yeah. Yeah. Yeah. Everything's going up.  It's not a revenue. Generating. Yeah. And on that, on that note, would it be better just to call it an application fee, as opposed to explicitly like a legal ad? Do we have an application thing? Uh, currently no. I think you're, I think you're right, Ben. I think it would. It would be better to call it an application fee, not a legal ad fee. Okay. So then it becomes a considerable cost to the town. Yeah. Yeah, exactly. But what Ben's saying, Marianne, is that the commission establishes a, an application fee as opposed to a legal ad fee. But what he's suggesting is that in consistent with your wording, the adjective that describes the fee beforehand also changes. And I think he's right. Yes. Yes. That's right. But then it means that it's not just publishing the legal notice in the, in the daily Hampshire. Considerable. Administration of handling. The. Proposal. Right. Letters have to be sent to a butters. The handling the proposal. And of publishing the legal notice. Yeah, we don't, we don't have to say that. I don't think. I do. I think so. I think all of this is public relations. I really do. I agree. I was actually very shocked that it was as expensive. To the town. And that was very helpful. And I think people are just not in the loop. And so that wording is necessary. Yeah. Yeah. I agree. I had no idea cost the town before this. So, so I mean, I think, I think those of you who are in the town hall. You know what it costs. And so.  To do something. That we're asking them to do. Right. And they say, I didn't know that I voted for this. And what we're looking at is not an editable version of the wording. Correct. I think it's easily editable. Yes. Well, if it's a PDF. It's not. Change it right here on the screen. Yeah. I want to change it right here on the screen. Yeah. I want to change it right here on the screen. Yeah. I want to change it right here on the screen. Yeah. That's a good idea. Let's see. Do I have this saved somewhere? Oh yeah, I do. Okay. Let's see. I'll reshare my screen. So new share. And then LHD. Cool. Okay. So this is. Oops. What did I just do? Hi.  We lost the. There. Okay. Yep. So this is the same exact thing, but in a Word document. So very good. So let's do Mary Ann's. Mary Ann's first. I have to mute for just a minute. Keep talking. Yeah. Application fee. The commission establishes an application. Yeah. Yeah. I'm going to put that before the word fees as well. Yeah. Yep. And that possibly should be capitalized. Don't you think? Yeah. Yeah. So cover the considerable. Considerable. Costs to the town. I would take out the word considerable. Yeah. That's that's subjective. What's considerable. Okay. To cover the cost of the town. Yeah. To cover the cost of administering. The application. Right. And then we have the language publishing, whatever it is about the. In the daily Hampshire because that. Those, those are the two major things. Yeah. I'm saying publish. Publishing the, what do you publish? The hearing notice. Notice. Yeah. The notice. Yeah. Okay. Okay. Yeah. I, I, I, Peggy, I think that considerable. Is kind of important because it was when I heard the sum. That I was impressed that this should be if it's just the cost, it could be very petty and it's not going to be the public relations thing. That we're hoping. To clarify here. So in some ways, it should be somehow emphasize that this is a lot of money. It's costing the town. Yeah. It's, it's a lot by any, it's not really subjective. It's a lot of, it wasn't it. How much was it been. It's like $500. I agree, Karen. Yeah. Yeah. If somebody came back, you know, like on fearing street, 100 fearing street came back three times and they had to post three times. So it was like $1,500 for that one. Yeah. I wonder if, like, defray, I know the help is in there, but defray might indicate that we're not, it's not nearly covered. It's not nearly covering it. I don't know if there's another. That's a good. I like defray better than. Stronger. That's clear. It's much clearer. Okay. Okay. I hope to frame the costs. So those of you that. Advocates of considerable is helped to fray. Okay. Or is considerable. No, I think that that does it the fray mean. I don't know. I would feel all right getting this if I had to. Before the word fees above that paragraph, you want to put application fee. Yep. Yeah, exactly. Okay. Okay. But it says application fee. Yeah, no, it's okay. Okay.  Well, the, the, the, the first application fee at the top is really for the purpose of the conch, the discussion that we're having. And the second application fee is the wording that might or might not go into the rules and regulations. Then I'd be wanted in the rules and regulations. I think it probably should be given the amount of effort that you all have put into crafting it from my point of view. I don't care because I'm much more. Lucy goosey about this, I think so. So I'm not the one to drive this bus. I think it should be in the rules and regulations. I do too. And again, you're right, Bruce. It's because we're going to hear from our neighbors. So, right. Yeah. And so we're going to say it's in the rules and regulations. Right. Just look it up or, you know, if you, because they might have other things that they're looking at the rules and regulations will probably not, but if they do, they'll find it. If they object, they will find a reason to object. Yeah. And we can, this is, this is a little more than just basically what this does, Ben, is that it puts the, the application fee at the doorstep of the commission. And not at the doorstep of the building commissioner.  And push us to accordingly. Gotcha. That's what I would do if I were you. Yeah. Gotcha. Okay. Okay. Sounds good. And again, you're saying we don't vote on this because it will be a public meeting and then it'll be on the agenda. Yeah. I believe so. Yep. Okay. So, yeah, and we can move on to talking about our exclusions. Let me see if any, if the gentleman, if anyone's here from. No, it doesn't look like no one is here yet. Okay. You guys are amazing. Yeah. That's what I was laid back. Yeah. Yeah. They changed their mind, you know. Yeah, exactly. Maybe. Yeah. Tell us. So then the other topic for today was about, um, additional exclusions. To add to, um, Things that should be exempt from review. Okay. And I know that. You know, I'm not sure if it's, uh, Repairing stairwells or anything you might do. With, uh, Support for a deck or are there any. In a small things. That we could exclude or do we really want. Look at every step that they, well, we may, I think we may want to look at every step. I think unless it can be clearly, uh, It can be, it can be a little or a lot. Yeah. I think by the way, flu has an E on the end of it. Oh yeah. This would be like influenza. Okay. There we go. It's a, it's a cap. You're aware when you're sick. Again, in the, in the, in the, uh, Yeah. All righty. So then we can add to this later. This is what, this is similar to the one that came up a few weeks ago or months ago. I think there's a flu. Yes. Okay. Is this going to be public?  That applicants get. Yep. Um, well, this will be added to the rules and regulations. No, it just means, I guess, when you come in and you're applying for that. Uh, Commission. Yes. I think, I think this is on Rob Mars desk. And that's probably all. The only place it needs to be. Then he says, sorry, it's not all of this. Yeah. Okay. Or like, or like Nate and I also sometimes get calls from potential applicants or people who are. And so like I, I've consulted the, you know, exemption list before and stuff like that. So. Um, So yeah, I think it would, it would be it. I would live there. Okay. So that. Oops. Sorry. Sorry. Sorry. Sorry. Sorry. Sorry. Sorry. Sorry. Sorry. So that. Oops. Hilda just raised her hand. Let's see if. Hilda, I kind of allow you to talk. If you want to go ahead. Oh, she's muted. Um, it sounds. It's not clear to the person who's listening. Whether exclusion applies to the B or whether exclusion. Means you don't have to file. Okay. It's not clear. It doesn't have to be reviewed by the board. That's what's not clear. Good question. It's both. It's both. So we need, we need to say that. You need to make that clear. That's a good question. Thank you. Oh, it would be made clear by defining what exclusions mean, which means that there is, but I think in the, in the context of the rules and regulations. You will not, when you come. You will not be directed to the local historic district commission. So we would say exclusions. From local historic district consideration. Right review. You don't need a certificate of appropriateness to do these things. So could you add that. As well. But these are, these are going to be, these going to be in the rules and regulations as well. These exclusions. No, that was my understanding. I'm obviously new to the commission. So I don't know exactly how to operate. But there is a list of exclusions in the rules and. Right now. And so this would be added to it. Which probably means that the wording that we've just discussed precedes that is already in the rules and regulations. And we're just adding to the list. Below it. Okay. Sorry, this is a, I've been listening. I was going to cut in. Yeah. I don't, yeah. These would be exclusions in the rules and rags, not exemptions in the bylaw. So. The rules and regulations allows the commission to. You know, to come up with local. Local. You know, local rules. That aren't necessarily inconsistent. You know, the planning board does it and the zoning board of appeals does it. So. The other year approved. Putting exclusions in the rules and rags right now. It says, you know, like replacement of windows. With similar. Material or appearance from the street. So that, that way, someone who's just replacing windows. It's excluded. It wasn't an exemption in the bylaw. But it's spelled out in the rules and rules. And so, so the. Language in the email is, you know, could be just the same language that you see in the rules and rags. And Bruce is right. There's already a, you know, a pro log and introduction about it. Good. I'm, I'm signing off now. Thanks. Thanks. Really? I'll still be listening. We can play. We can play. We can play. We can play. We can play. We can play. We can play. Yeah. Yeah. And so if you want to actually have that up right now, like the rules and regulations section. I am very happy to leave it to you. Okay. Incorporate. Existing document. Gotcha. Well said. That sounds good. So yeah, Nate had come up with a few kind of parameters for the.  We can take time now to kind of just go over that. If you all, if you guys want. I would. No again, then is this something we can just act on at this meeting? Or does this have to be at a public meeting? That, that I would defer to Nate. I'm not sure. Well, we can take it. I don't know. Well, yeah, so I'll, the recommendation usually is that rules and regulations be changed after a public hearing. And so I'm not sure if that's actually stated in the bylaw, but for the other regulatory boards, that's how it works. So I think today you could discuss the language, if you wanted to tweak any of the language in terms of what exactly is excluded. And then for the September meeting, it could be a public hearing that was advertised two weeks in advance, and then it would be, the commission could then adopt it, and it would become effective then. Okay, thank you, we're just discussing today. Mm-hmm. Thanks, Nate. I'm good with number two. Okay. So there's a mini-split electrical box. Mm-hmm. Okay. Number three? Number three looks at, you know, the exterior compressor for, usually for a mini-split installation. And so an application would be exempt from review if it's only two or fewer compressors per building. It's highest point, so the top is less than five feet off the ground, so they're pretty, you know, low to the ground. Yeah. Sufficiently, sufficiently screened from view. What does sufficiently mean? I would take out. Yeah, that's, yeah. Yeah. It has to be screened. Yeah. I agree. Yeah, I would say I agree with that. Yeah. And this last one I'm interested in, I don't know, I question that, not proposing to strike it, but just why? Why do we care? Yeah, my sense is maybe just because, like, you know, doorways are often important architectural features and wanting the entrance to the homes to be nice. I mean, one option is also just saying is not on the front of the house. Yeah, I think that's what Nate was concerned that it not be in the front of the house. I think that's a good one. That's a better way of saying it. Yeah. I agree. I have a problem with the clarity of the first one is are we saying that if there are two or fewer per structure, they don't have to apply?  It's not, that's not really clear. Well, it can't be big because of the second. What I don't understand is then, are you saying if all of the following apply, the exterior compressor, if all of the following, because that's not clear right now. I would put that because you're right. You're right. That was my understanding, but you're right. No, it is. No, that was a good suggestion. Yes. Good, Karin. Yeah. And so, yeah, great suggestion. I'm wondering, for like corner lots, should it be like, you know, on the street facing side of that? No, I'd say it's sad, but true for a corner lot. It's twice as hard to locate them. Yeah. Okay. And then if we find out that we can relax that in some way, then we can move to it based on experience, but to the moment, going in, I would keep it the way we've got it. So I'm on the corner lot and we put ours behind a fence. So can't we say it cannot be seen from the public way, the language we use elsewhere? I mean, and it could be two public ways. And it could be, I mean, you know, we've been dealing with three public ways. Right. The public way is the public way. Could you say not in front of the house or seen by the public way? So it's both. Mm-hmm. Sure. The question is, again, well, then they wouldn't have to come. Yeah, exactly. If it's, if it's not visible from the public way, you're right, right. Of course. Yes. So, and it's, yeah, I mean, we already have the screen from view. Okay. I think if we put is not in front of the house, we'll leave then we're leaving it to the building commissioner. And if they'll, if, if, if they, if the building, if Rob wants to, then he, if it's on the side of the house, but there's a side street, he might decide that it needs to come. Yes, because it could be seen from the public way. Yeah. The public way is really determinative. Mm-hmm. Yeah. So, yeah, that's great. I think I would, I would leave it the way it is for now and see how, see how it flies. Okay. And I, we can, I can talk to Rob about this too before our next meeting, just to go over it with him. Sorry. I didn't mean to interrupt, but there's a house on, it's on Lincoln, where the front of the house is not in the, it does not face the street.  Oh, you have some of that right. The side is what's on the street. The side of the house is facing the street. Right. So in that situation, you might be better off with your compressor passed the door on the, on the facing the driveway, which would be the front of the house. You wouldn't see that from, that would be much less visible from the street. So I think it's not on the front of the house. Maybe there's to add something that indicates that this would be dependent upon the facing of the house. Right. The house is facing the street. Yeah, or maybe, yeah, it is not on the facade of the house facing the street. Remember that the default, the default here is that the, that it comes, that it comes to us. So we don't, we don't have to, again, I don't think we have to beat us off up too much over this and try too hard. I think we get, we get most, whoops, my dog is tied up in my ear buds. Oh, no. So we don't have to, so if we just say, if we just say not in front of the house, that's going to cover 99, 95% of the, of the, of the structures we, in our, in the district, right? What could be visible from the, but there would be some house where it would be perfectly okay. And that would be facing, facing a driveway and facing another house. I think it's a greenhouse on Lincoln or sunset. No sunset. There's a, there's a beautiful gray house on sunset. Right. The front of the house is on the side of the lot. Would it be offensive. They have the compressor there. It would be. Oh, it would be. Offensive to have it. Well, they probably wouldn't choose to have it in the front, but we certainly wouldn't want it on the side. That's the street. Okay. So that's. So if they have a nice front that faces a lot of, they have two other sides to figure out. Right. And if they're a corner lot and that happens, then they have one side to figure out. So do I understand that we're talking about situations where we imagine the front of the house is not the frontage. Yes. It's not on the public. Maybe we just want to just take that last piece out. It's not. Well, it's. That. I was thinking that. I was thinking that Peggy. I was thinking that we might. Then you might be willing to give a question to Nate about what he had in mind. Okay. Yeah. Because simply tell him we've been struggling with it. Yeah. I mean, I guess. Yeah. And I agree with Peggy. I think the whole thing should go. I think it is screened from view period.  And then puts it, puts a giant fence around it. To screen or like maybe lots, lots of vegetation around it to screen it from view. And then. Would that. Be detrimental to the architecture of the house? I guess I'm just thinking of like, it can be pretty ugly, but. Right. If they want to put a fence up, they'd have to come. Yeah. I just realized that. But yeah. Now the thing is if they put bushes, which is fine, it's just that. If the bushes came down. I guess subsequent owner took down the bushes. Then what? Instead of. It remains screened from. Remains right. Screened from view. And not, not further. And then. A lot of discussion. That's a good idea. I think. We agreed a long time ago. We're not Nantucket. And so. I think there's a limit. Yeah. Yeah. But I think we could say remains. Yes. Yeah. Okay. Take that. I mean, we did that. We could go back to the. To the knot within 15 feet of the, or fight. Not within. 10 feet of the door where you could go back to that. Uh-huh. Well, I'd rather ask Nate what he had in mind. Okay. I would provisionally take that away because I don't think it matters. And I, I guess I confess that I've got one right next to my. Doorway, but it's. But you see the thing is very often at the entry, you have a porch and the porch sticks out a little. And if you put this thing on the side of the porch, which therefore is perpendicular to the street, it's really rather unobtrusive. So, um, this, uh, this, this thing, uh, uh, of course to, to, to take my own arguments and put them back at me, all that would happen is that it has to come. To the commission and maybe that's the way it should be. And we just leave it there. Recognizing that if it is. Close to the door, then it comes to us and we might say, sure, it's fine. Sure. So I'll chime in again quickly. I mean, I guess my thought is I've seen. Two installations. One is on, you know, a gas house. So a nice old, um, Cape where they put it right smack dab right next to the front door, two feet off the ground facing the street. And then another one where. I can't remember. And then there's another one I've seen in town where they put it. Outside the front porch. So I get it, Bruce. It's not perpendicular to the street, but it's, you know, right next to the stairs facing the street. And so it's really hard to have those, um, particulars in, in, in the, in the exclusion.  We don't need. I'm with you. It comes to us. If it's within 10 feet of the door. What about. Given how particular it is each house and it's, and it's facing. It's a little more vague. That on each application, the, the location of the, uh, of the, uh, the air conditioner needs to be. The compressor needs to be approved by the, by the historic commission. But that would be something we would get a look at that would be part of the application. We were trying to come up with how many things we could exclude. Yeah. I guess what we were hoping was slow and for people being trouble. Yeah. No, I think, yeah. Sorry. I didn't mean to cut in. I was listening to that. I think the difficulty again is, I mean, we'd have to ask an applicant then to provide. You know, a plan we do anyways and show the location of the compressor units and. You know, and then that carries through to the electrical permit.  So, you know, for zoning, we have a front setback and a side setback. Uh, for this, it could be something different. So you could be pretty clear about what I mean, the front of the house or not. I, you know, and then my only question too is. Sorry. We don't, we don't define screening. So I said screen from view. Yeah. So I guess one thing is, you know, Is it vegetation or is it someone putting up a fence? So, you know, um, on August 31st, you know, 32 Cosby. Ab is putting up a mini split. And then I think they want to put it up for a second. Yeah. So I guess one thing is, you know, I'm not sure if it's, you know, I'm not sure if it's a good idea or not. Um, on August 31st, you know, 32 Cosby Ab is putting up a mini split. And then I think they want to put a fence. A little bit away from it to shield the compressor unit, but the fence has to come then for review. But would that fence be considered part of this installation as the screening? And so I think those are things to consider about, you know, what does screening mean? Um, Is it a structure independent of the unit? Or is it vegetation?  Yeah, that's a good point. So to actually screen it from, from view might require a fence, but mate, you would explain that to them or you or Ben would explain to an applicant when they were there. Um, that's, um, Uh, it says remains screen from view, which is our intent here. And so, and then so if, if they say, Oh, well, I'll build a fence. Then you would say, well, that would actually require you to go to the commission. Um, if it's screened with vegetation, then perhaps not. Right. Um, so I guess it, I guess it does have to say vegetative screen. Doesn't. Can I just ask a question? I'm not trying to muck things up, but. So let's say somebody doesn't have to come to us to put it in. And they put it in and they don't. Do the screening. Somebody can cite them. Yes. Yeah. If this goes through, yes. Yeah. We have a, there's a, there's a lever. Yeah. Screen with vegetation. Yes. I get that's, that's good. I like that. And, uh, and I'm, I'm, I'm resolved to. Yeah. The last one I'm thinking, yes, let's keep that. Um, I'm thinking about, um, Is not within 10 feet of a door or entry. Uh, and now I'm just thinking about door or entry and whether we should, um, Uh, just have it, uh, 10 feet of, uh, an entry. Because there, it might be a, you know, a cell or halfway or something that could be a door. And so if we just say an entry. I wouldn't say any entry. I'd just say an entry. It seems a little more forgiving. Oops. Uh, 10 feet of entry. But what would it be a problem to be closer than 10 feet to a cell or entry if that's the back of the house? Yeah. Well, I saw, I thought that by taking out door, it would, uh, Uh, it would be a little more, um, forgiving in the sense that there might be some doors and I used a cell or hatch way as an example of a door, not of an entry. Uh, because I thought, I thought entry is a little more difficult, a little less likely to be construed as a cell or access way as little less likely to be construed as an entry. But, um, but maybe a door. Are we talking about the main entry? Yes. Well, mostly. Yeah, I think so. Okay. That doesn't make sense. No, main entry. We use the side entry. Right. We use the side entry in our home and the Victorian home in the district. Yeah. And also the building commission. They're not going to know which one is the main entry. Right. Anyway, that doesn't make sense to me. Why didn't you just take it out? Yeah. Can we say front door entry? Well, Peggy and I both have the same problem that we have front doors and side doors. No, but if your side door isn't really visible from the public way, does it? Oh, I see what you mean. It is. It is. My side door is visible from the public way. My side door is our main entry that's visible from the street and it's not visible from the public way. It's not visible from the public way. And nobody can see because that lot has. His door. In chopped off. So it's problematic. This language. I'm not sure we need to get into this door part of it. My sense is that the intent of 10 feet from the entry door was, was a conspicuous entry. And that yes, the side door is visible from the street, but it's not as visible or as conspicuous as, but it's not as visible from the street. So I guess. I guess. I guess they were thinking of the houses he's seen, which we don't want to allow those incidents to happen. So I guess we're just trying to find a way to avoid that. And I think, you know, the, the, the thing being that if the. I think we have to keep our eye on the ball in so far as we recognize that this is really a framework for the building commissioners use. And so the default here is that it comes to us. So we, we don't have to try and cover every, every inch of territory here. We're just trying to make the building commissioners. Or the applicants lives a little easier. And so if, so if something is within 10 feet of an entry, whatever the entry is, it'll probably come to us. But mostly this will filter out. Right. Exactly. Yeah, that makes sense. Great. And it will cost us a cost 50 dollars. It's still complicated to me. I've got entries on three sides of my house.   Okay. Probably the ones that we're less concerned about. Yeah. And you know, yeah, exactly. And I guess with the application fee, people have an incentive to just like make, make this a simple installation, follow these rules. And not have to come before the commission. Exactly. Yeah. I mean, I think it's important to figure out if there's a way to make it so that my house, which is a historic house in this store, not problematic. What do we gain by that? What we're coming up with. We make a problematic. I mean, I'm not about to be doing it. So it's not, it's not a big issue for me. It's hypothetical. But I could see very easily, readily that the next tenant in this house, the next owner of this house, we want to get air conditioning in it. I mean, it's not a big issue for me. I mean, it's not a big issue for me. I mean, it's not a big issue for me. I mean, I'm doing what could make it very problematic. Well, no, not. It's the same as it is now. You just come to us. Well, let me say one other thing. I'm mainly concerned about the public way. And from my point of view, what is not seen from the public way. Is not. Unless it's egregious. Right. I agree. It's not our jurisdiction. Right. So, uh, I don't feel. Yeah, but I think what, but Peggy's also saying is your house is on a lot. That a lot of it. I mean, you have a lot of shrubbery. So, but base, without the shrubbery, it could be visible from a public way. So you're right. Peggy, I think, uh, you know, I don't know what you're talking about. Yeah. These are just the times that are clear that you don't have to get permission. If you have a complicated house, like you have an, I have, and you want to put an air conditioning, then you have to work hard to find, uh, something visibly that's going to pass muster, but you're going to try to do that anyway, because you're concerned about the historic house. I think that's for this way. I can't imagine any commission. I don't know. I don't know what you're talking about. I don't know what you're talking about. They might say put it here instead of here, but I don't think anyone's going to deny someone having air conditioning. Okay. Just one point here. I do have. The compressor on the other side of the side deck. It's certainly within 10 feet. It's just the butts. It's, uh, there's shrubbery around it. You can't see it from. It has to be there because of the nature of mini splits. The mini split comes down into the compressor. Right. And so in my case, it comes from the kitchen and from a bedroom into the same compressor, but has to be there. So the 10 feet off. My side doorway. I couldn't do it. Well, so then you come to us. Well, that's a. An annoyance. No, you're going to have. Yes. Because you're going to let me have air conditioning. So why did I spend? No, but then maybe, I mean, maybe if it was. Unsightly from a public way, we might say put a little fence around it or. But it's not visible from a public way. This thing is for things not visible. Visible from a public way. No, it's not. No, it's not because nothing we do. Nothing that's not visible from the public way applies to us. So it's doesn't even, doesn't even enter the phrase. Doesn't even enter the conversation. Yeah. Yeah, exactly. So Peggy's got a problem and I don't. Okay. Well, it's only it's any that we're treating my senses. We're treating this as though it's an adjudication of what would be worthy or a receipt of the certificate of appropriateness. But it's not that it's just what Rob, what Rob Mara can make a determination on without us being involved. Yeah. Yes. It's, it's not. We shouldn't confuse the two. Okay. So then I would say that then it would, it would, we would require a special meeting here and whatever. We'd have to come directly before the board, which is fine. Which is the way it currently is. Yeah. I'm going to throw out another loop that I just, another thing that I just thought of. And it really. What about generators? Well, we don't. You mean, do you mean having a whole separate exclusion for generators? Well, something you want to treat. Do people that have to put in generators? Does that? Yeah. I mean, I'm glad I put mine in before this was a historical commission because I don't think it would have passed muster. Actually. Fine screen. Well, it's, it's, it's not, this is not muster. This is simply a filter to determine what comes before us and what doesn't compress. Generators. Generators tend to be bigger. A lot bigger. Oh yes. So that's why we're probably not going to put generators in here as an, as an item for exclusion. And that's typically where they are because they, you can, and typically you put them as far away as you can and the, and the penalty for doing so is not terribly great because the electrical losses and so forth are not as great as the, and the costs and so forth and not as great as the connection by line sets to these things. So it's a different, it's, it's, it's a completely different animal really. So we don't need to talk about it at all. No, I think we're fine. Okay. Exhaust. Okay. Okay. With that language. Okay. Do we read it one more time and exterior compressor condenser, if all of the following apply, there are two or fewer per structure. It's highest point is less than five feet off the ground. It remains screened from view with vegetation and it is not within 10 feet of an entry. Yeah. Well, could it be screened with it with some sort of decorative fencing rather than vegetation? Why does it need to be vegetation? Well, because if it's a fence, it has to come to us by another word. You'd have to come before us for the fence. Okay. Yeah, exactly. Okay. I don't want to really believe in this, but what if you already have a fence that shielding it? Right. Or if it's not visible, if we leave it like this, it means we have to put vegetation. Doesn't don't, doesn't it? Oh, but you're right. If it's already behind a fence, then it's not visible from a public way, right? Okay. But if I were to want to tuck mine onto the side of my house, I would need to, I would need to say, continue it from a porch deck and tuck it into the corner where the deck meets the house. I would probably want to screen that in from, from the driveway coming into the house, which has become a de facto main entrance for us. That would be fine. So I would just have to come before the commission for an exemption. Okay. Okay. Yeah. Unless we couldn't sit. Exhaust fan. Are we ready for exhaust fan? Yes. I'm ready. I'm ready for dinner. Okay. Yeah. So this is exhaust vent installation or replacement of a single exhaust vent for a dryer. That's good. That's good. That's fine. It's clear. Um, plumbing vent stack. Yeah. Well, I would change stack to, uh, and I'd put a type of bent through roof and then put, uh, a parenthesis after it and put in capitals. VTR closed parenthesis. VTR. Yeah. That's, that's what you see on drawings. And so, uh, the, the stack is the whole thing that, uh, inside the building, but it's the VTR that we're concerned about. That's what you see. And they, and they, and I was thinking about this earlier in the afternoon and I, I, I, I can't, I don't think in, I've ever heard of or seen a vent that, a plumbing vent that doesn't come through a roof. Right. Exactly. Okay. So we want to engage it in that. Yeah. Installation and to give it to the stack and put through. That's just a, it just, it'll just make it clear for people in the trade. That's all. Yep. Okay. Then vent hood. Is that okay? Installation or a placement of standard direct vent hood. For an interior unit such as combustible heater or boiler. Yep. I think so. Sounds good to me. Okay. Okay. And then actually. Yeah. We should be combustion heater. A combustible heater would be interesting to observe. That's all good. Watch the explosion. I do see Hilda has her hand raised. Yeah. I want to get to the exhaust vent. On a ton of, um, I have. In my house, an exhaust fan in my kitchen off the stove vent and I have exhaust fan in my bathroom. For the shower. Oh, yeah. So I think that you may want to. Think about more than one. It's not just a dryer, but I've got, they're on the back of my house. You don't see it from the street, but. Okay. Yeah. I think that would be okay.  That would be for you. I think that would be okay. Yeah. I think that would be okay. I mean, the, the, um, They're on the side of it. If you don't see. It's not our concern. Well, yeah, I mean, then don't make it for the dryer cause it could be for the bathroom or kitchen fan. It could be anything. Well, hold on. These are all exclusion. see from the public way. Right, but there may be a bathroom on the front of the house or a kitchen vent on the front, you know. Hilda's right, but we have to recognize that the size of a dry event is almost universally similar, you know, in terms of being at six inches by square or simple with a four inch pipe coming through it. Last year, I installed a range hood in my son-in-law's house, daughter-in-son-in-law's house, which is three feet by two feet. It's a huge thing because he likes to cook and he's got a very big commercial hood over it and that is a range hood vent. So we could put range hood vent in there and many of them are actually bigger. They would be, you know, 10 inches or so versus six, but the trouble is there's quite a range of size for a range hood vents, whereas that's not quite so, that's not true for dryers, I don't think. Bathroom? Bathroom? Bathroom vents can be, they are bigger. Do we, do we? Mine are rather same. Yeah, but they're bigger than the dry event is what I'm saying. I mean, mine are 50 years old, but so nowadays things are different. I'm wondering, could we put like SIs of the of the vent that is excluded or something? Yes, why don't we say fed by, attached to no greater than the four inch diameter duct. Okay. We're saying that I have to mute myself for a minute. I don't think any range hood would form into that category, but a number of, or we could make it six inches if we liked. The thing is that we should know what we're going to be seeing. And so do we all familiar with what a six inch vent? I was thinking I could go and take a picture of the one out front in post right now, but that would, I'm not clever enough to do that. But the thing is that the six inch range hood or bathroom vent has about a 10 inch by 10 inch vent that is, it discharges into a thing that's about that size. So it's, it's, you know, we're talking about a thing which is eight to 10 inches square, and which is bigger than the dry vent. Are we still comfortable? And because in that case, we could increase that, we could increase that four inch diameter duct to a six inch diameter duct. So then do we say dryer bathroom or kitchen? Yes, we could do that, I suppose. Okay. I think that's what we're talking about. Yeah. Installation or replacement of single exhaust vent for a dryer bathroom or kitchen attached to no greater than a six inch diameter duct. Okay. And is that a standard, standard size? No, it's just a size that creates a manifestation on the exterior house, which is small enough for us to consider unnecessary to come before us. But you can get ducts that are bigger than that, bigger house. We'd want to see it. But you see, this would cover 95 or more percents of the situations. So again, we're not trying, I don't think we're trying to cover 100%. We're just trying to take the load off these small additions or changes that people are making. So I think that, that should, that should work. Okay. Let's push on. Okay. Well, we had circled back to exhaust vent. So we went through these two and that's, that's it for the exclusions. And this was the list that we kind of rattled off a few meetings ago. Yeah. Yeah. Well, I think we've, we've given this a pretty sour going over. Okay. Great. I think we've done well. So I'm going to go back to the agenda. Well, it's the time. So 15. Okay. Now I've got a few more minutes. So we talked about exclusions. There's time, any public comment. And then we just need to circle back to make a decision about 19 McClellan because they have not received an email. Nope. So who is that? Who is it that's not responding? Kendrick. Kendrick property management. Yeah, they're down on the corner of my street. They never replied to any phone calls. I made about 10 years ago when I needed some information from them. So not much has changed apparently. All right. So Jennifer is muted right now. Maybe she stepped away. But I do think we would need to probably close out the application. Yeah. Do we have to, I guess the public meeting is already opened and we've continued. Oh, there's Jennifer. I'm sorry. I have to apologize. Our house is being painted now. And they're doing the front door and they were changing the color. So I'm sorry. Nice color too, by the way. Thank you. But this is like the last day. Okay. So I'm. So we're ready to close out the public meeting. And again, we're not making any formal decisions because this will be posted for a public meeting when we will vote on, we will ask for public comment and then vote on what we just discussed today. Perfect. Okay. So do I, okay. So I will formally. So do I have to get a motion to close out the public meeting and go to the public hearing where we'll. Well, it seems like this has been continued that you wouldn't be looking for a motion to close the public hearing. And if that's the case, so move public meeting and a public hearing meeting right now. Right. We're doing no, no, no, I'm talking about the public hearing on 19 McClellan. Yeah, we haven't finished. We haven't gotten there yet. I'm just asking Dan, do I have to, do we have to close out the public meeting to go to the public hearing? Um, I believe so, yeah. Okay, so move. All in favor. Aye. Okay. Now they've been telling us that when we're zooming, we have to do a voice. Okay. So let's start all in favor of closing the public meeting. Marianne. Yes. Uh, Greta. Yes. Um, Peggy. Yes.  Bruce. Yes. Jim. Yes. Karen. Yes. And Jennifer. Yes. Okay. Okay. And now we will go to the public hearing. And since the applicant for the third meeting in a row was a no show, we have been advised that we should issue, we should deny the certificate of appropriateness because both they haven't been able to present their application and because we did have comments and requests that aren't, without, haven't been able to be responded to. Okay. So is there a motion? Yeah. All in favor. Well, so moved. Second. Yes. Second. Okay. So we will proceed to a voice vote starting with Marianne. Yes. Uh, Bruce. Yes. Greta. Yes. Karen. Yes. Jim. Yes. And Jennifer. Yes. Okay. Okay. So, so, uh, then you've got the wording of that satisfactorily, do you? Yeah. Basically, um, denied the application due to a lack of, you know, information on answered questions. Yeah. They have not presented. And that we upon review of the application and their absence had questions, which, uh, Nate has conveyed to them and which they have not addressed. Exactly. Yeah. Okay. It sounds good. They, they said they would be at the, they have kept saying they'll be at the next meeting to respond to the questions and have not been. Okay. So we already have a date set for our next meeting of August 31st. Yep. On August 31st. Yeah. So with that, um, is there a motion? Do we need that meeting or we don't yet know if we need that meeting? Yep. That meeting, uh, is needed. It's been advertised and I just did the mailings today. So it's a two applications. We do an application. Yep. 32 Cosby street, um, for the mini splits and fence. And then, uh, G, what was the other one? 154 Lincoln or something. Yeah. So the mini splits might be exempt with the fence, wouldn't? Um, well, those exemptions haven't been. Yeah. But we can kind of use it as like a case study for how we might approach it. Uh, and I think 32 Cosby is another example of where they may have already installed the mini splits, I believe. So, um, just for your, so you know, and then I frig, I can look up what 154 Lincoln, that might be a deck, I believe. I think it's the back porch. Yep. 16 by 20 deck with stairs, railings and other features. Okay. So was there a motion to close the meeting? It moved. Okay. We don't need to do a voice vote for closing it, do we? All in favor? Yes. Yes. Okay. Thank you very much. Thank you, everybody. Here's your trip, Rita. Thank you. I'm sorry. I'll miss the next meeting. It is safe to meet Rita. Yeah. Thank you, Ben. Yep. Absolutely. Bye-bye. Bye, everyone. Bye, everybody. Bye. Bye. Bye.


Hi, everyone. Welcome to our session. Let's first do a quick introduction ourselves. My name is Bing Zhu. I'm now a final year PhD candidate at UIOC. I'm actually going to do my defense next week. So good luck with me. So I'm mainly working on enhancing the reliability of modern cloud from automatic raisinings, including verification synthesis, software analysis. I'm now open to work. Hello, everyone. I'm also a second year PhD student from UOVI. My main area is distributed system performance optimization and system for machine learning. I'm also looking for a summer internship for the next summer. OK, so let's get started. So today, we're going to talk to you about how not to lose your sleep by having a verified Kubernetes classes using our two Kiwi. So this is a collaboration with Ryan Beckett and Bretton Guthrie. So as you may know, Kubernetes consists of these dynamic controllers, including scheduler trying to place the pod onto node according to some strategies. HPA trying to automatic scale up and down of the pod according to CPU usage, for example. All those controllers making these closed loop dynamic decisions, they are collecting the metrics from the underlying API servers and then deploy their controls by updating the objects. So how could things go wrong? We studied hundreds of different failure reports collected by the community and also GitHub issues really appreciate those collections. And in general, there are many different categories for failures like DNS issues, Linux kernel, configuration syntax problem, credential issues. However, we identify a failure pattern that hasn't been well discussed sufficiently before, which is caused by the non-trivial interactions between controller configurations or between controller and events. Events here like including environmental events like node failures or operational events like maintenance. This is really because those controller does not have global coordination. Each control component has its own goals. However, they are sharing these dependencies and they possibly controlled by a different team. For example, like the infrastructure team or application develop team, they may not have the same objective. So this picture illustrates how these non-trivial interactions could be like on the left-hand side showing a subset of a controller and they're interacting with each other and also with the events on the right-hand side by manipulating the system seed in the middle. You don't need to have a look into all the detail. This is really showing you how complex this could be. Next, I'm gonna show you like three concrete example about like how failure can happen. The first is caused by a conflicting configuration for a single controller. We modified it from official Kubernetes documentation. So in this example, there are three nodes. Each node includes the two labels, the host name and the zone. Zone here may be your availability zones. And there are three controllers. The deployment controller trying to deploy five pods and the scheduler has two constraints, the topology spread plugin. Who here has used topology spread plugin before? Okay, who has encountered a problem with this? Yeah, not too much, but yeah, we hope to be more, but anyway. So this topology spread plugin is trying to like evenly balance the pod across different node group. So there are two constraints here. Like the first is trying to balance the pod across zones. The second is trying to balance the pod across host names. So there's also HPA trying to look into average CPU usage and with maximum replica equal to six. So things are good for the five replicas. As you can see from the picture, they can be placed in this as this showing the picture and all the constraints are satisfied. However, there may be a CPU invent that every CPU may be increased and may be due to more traffic. The HPA may add one more pod to the system. At this point, you probably already noticed that there are conflict between like these two constraints. So that result in this pod cannot be scheduled onto the host name too. Because now right now it validates the zoom level policies. Right now the max skewer is like four minus two, which is two. It can also not be placed onto host name three because right now the max skewer is three minus one, which is two right now. So that's saying that this pod cannot really be scheduled at all with like this six pod settings. So this intent like is violated and operator really need to modify the conflict of constraints or change the node topologies. By the way, we're gonna show you a demo in about five minutes about how show you how we verify for this example. Next example is caused by interactions between the controllers and we collect this issue from GitHub. So still the same topologies and the deployment is trying to have six pods and still the same configuration for the scheduler and they are configured with one more plugin which is node affinity. They're trying to prefer the zone two over zone one with a higher weight. Still these constraints are conflict and it's even conflict between the plugins like the node affinity is trying to prefer some node while the topology spread is trying to evenly balance the pod. So since my operator may learn the license and they decide to set this at the south constraint. So they can still be successfully scheduled as shown in this picture. And note here that the host name level policy is actually not satisfied. Now the skewer is three minus one which is two. But it's still okay until you configure this scheduler where it's trying to remove in the pods the violating the topology spread constraint. So what will happen is that the pod will be evicted and there will be rescheduled by the scheduler to the same place and it will be evicted again so on and so forth that you will see oscillations that the pod in an ending circle of scheduling and evictions. This is really caused by a disk scheduler bug we found where the disk scheduler is not really looking to the host constraint together but instead it's looking to the one constraint like one by one to make decisions. And also the disk scheduler in this case shouldn't really evict the pod according to software constraints. So the last example that we have is about caused by interactions between controllers and events. So in this case still straight node and the deployment has straight pods and the scheduler is simple just to try to evenly balance the pod across nodes and this can be just scheduled as shown in the picture. There is a maintenance team that trying to take down one node at a time and then update it and put it back. So they think they can do this safely because your intent is more or equal to two right now we have straight pod. That saying it's safe that you can just put down one node. So but the problem really can happen in the following order. So the maintenance will take down the first node and this pod will be evicted will be rescheduled to another node. And then even after the node go back this pod won't be rescheduled because scheduler doesn't do this job. So then when you move down to the next node both of the pod is evicted and this intent is violated. So in this case a disk scheduler is really needed to rebalance the pod after the node come back. So as from the same example we really can see that it's really caused by these non-deterministic interactions and also like there is sometimes caused by the non-deterministic events or like for certain topologies it's really hard for to manually reasoning all those things like also across teams. I also want to briefly mention that even correctly using a single controller is actually hard. This shows a scheduler framework where it contains 12 different pipeline stages 21 default plug-in and even for this one single plug-in it actually contains eight different parameters for each constraint and there are many details however they are not documented well like if multiple constraints are defined the node label need to match with all the constraints to be considered in the skewness calculations and they also interact with other plug-ins like each constraint can choose to honor or not honor this plugin like when calculating the skewness. I actually only understand some of the detail when I look into the actual scheduler code so it's pretty complicated. So there are more issues like we have a paper if you're interested you can check out later. So with this observation we propose our system Kiwi which is the first system for verifying the correctness of controllers and their configurations in Kubernetes and we really focused on this natural interactions. We use the formal verification in particular we use model checking. This is a free open source software and it's a research prototype we release our code on GitHub and our paper on archive. We really appreciate if you can give us any early feedback we will show this slide at the end of the talk as well. So before we really go into any more details about Kiwi design let's first take a look at a demo where a comic will introduce like a simple installation of our system and also show you how we verify for example one where there is a conflict between the two constraints for scheduler. Hello, I'm Kang-Wook. I'm going to show a really cool demo for you. So first we're going to go into our repository for the installation. We prepare install.jl script already. So all you have to do is just run it. You don't need to worry about dependency or whatnot. So while it is installed let's take a look at the input files. You as a user are supposed to prepare three different types of input files. The first is intent.json file. So in this file you specify the property that you want to verify. In this example it is part always schedulable. It means we want every part is schedulable at any time. The second input file is cluster.config.json file. If you know the node group in autoscaler this is similar to that. First node type we have 24 core for CPU six gigabyte of memory labels and minimum and maximum number of node for this node type. There could be multiple different node types. The third input file is common deploy.yaml file. This is something that you use for your clusters. This is deployment here. And you see we want five replicas for this deployment. If you go down here we see two different topologies spread constraint. You can see this is do not schedule which is a hard constraint. We cannot violate these constraints when we make scheduling decisions. This is something we have to satisfy. And you can see there are two. These are the one who are conflicting each other in this example. And you can have other memory files for other controllers like horizontal part of the scaler. All right, so if you go into our bin directory. So you can see two different options here. One is P option. The other is O option. P option you can specify the path to the input files. With O option it's a little special one. We're gonna talk about later in our presentation. I forget about it right now. If you run it, this is output of the key V. It's done pretty quickly because this is a simple example. It has two sections, one is counter example here and the other one is summary section. If you take a look at summary section here it says oh we found one failure which is violating intent part always scheduleable which means there's a part which is not scheduleable. With this count example you can use it to understand how this failure can happen step by step. This is a sequence of events. Let's take a look at it. First, deployment controller here. Create five replicas, successful. Scheduler, place all of them on one of the nodes in a cluster. Sounds good, everything is good so far. If you go to the 17 event, HP horizontal power of scaler say oh we need one more part, one more replica for this deployment. So I'm going to increase number replica from five to six. Okay, good. Deployment say okay I'm going to create one more new replica for this one. However, here scheduler cannot find any visible node to place this new part. So it is not satisfying part always scheduleable. And we provide other parameters here. I'm not going to talk about all of them here because of the time limitation. One thing here is the simulation mode. We offer simulation mode so you can use it without actually running your actual Kubernetes clusters with your configuration files. We can show how it can behave in the simulation. So you may have the question like what is verification? So verification has been widely used in industry including like cloud storage system like Amazon, AWS, S3, chip design, cluster networks. So formal verification can provide this high coverage and formal guarantee of correctness where exhaustly explore a model. So in particular we leverage model checking and we leverage Spain which is a mature tool has existed for over 20 years. We translate system logic into a model and the Spain in place this like DFI search over all possible system states that caused by different actions. So like for example this shows like a system states and then like it will explore all the actions will take it to another states and we're gonna just look into all possible action if there are multiple candidates for each step until we find the violations or until we can prove that everything is good. So why do we need verification? This is really because the controllers we mentioned are pretty dynamic and interacting in a non-deterministic way and also many problem only manifests as certain topologies like we mentioned in example one and two only in that when the node group is not balanced across different zone and also only after non-deterministic events like CPU changes for example. So comparing with testing and simulation or emulation this testing and simulations are insufficient to handle such dynamic interactions in any non-deterministic order and testing simulation do not have this full coverage of all possible scenarios so they are not really exhaustive and in particular testing are mainly deployed for individual controllers rather than for the whole systems. We can also integrate us into the CICD pipeline by sitting alongside with other testing tools like we can be complementary to each other like only if Kiwi and testing like exam everything is good like you can actually do the deployment. If Kiwi find something is wrong like we will return to you a counter example explain to you like what can actually happen like how we could just show you. So how could user use Kiwi? So for any users you can use it to verify Kubernetes clusters like you provide us with like deployment scheduling strategies, HPA configurations and for controller developers you can use our system to understand how your controller interact with other part of the systems. So let me show you talk a little bit more about like Kiwi design. So the operator may ask a question like is there any oscillations or is there any like is the number of powers in my service always be more or equal to 10? So we will take into those intents and also the configuration of your cluster and our parser will pass them into a uniform format and a verify operator will send a profile to model generator which will it will prove like a related model from a predefined model templates and the model will be returned and then sent to the model checkers that will return the verification result. There may be another circle of this verification where the counter example will be sent to the users with a sequence of actions where we will assure you that your configuration is correct. So what do we really verify? What are the intent that the Kiwi can handle? So through those like failure study we summarize like a four main categories Kiwi will focus. The first is like there should not be any oscillation. That is saying that the cluster shouldn't be changed back and forth in the circles like example two actually valid this intent and there should not be any unexpected topologies like the power really need to be placed in a certain pattern. Otherwise it can be like vulnerable to any failures like example three actually valid this intent. There should be no unexpected object numbers that power need to be fell into certain range not being too big that will waste your cluster resources or not to be into less that will affect your capacities. So example three also valid this one. There should not be any unexpected object left circles that's saying that the power need to be stably scheduled like example one and two actually affect like valid this intent. So some brief things about passers. So we parse the configuration into some uniform format. Right now we choose Jason. Maybe you can we can we can improve it to change it to YAML. And here you can this part showing like what are the power templates. This shows no tabs similar as will come show you and those including like controller configurations intents. And now we only implemented some preliminary passers for YAML file but like you can you can implement other passers for help charts like pull requests will be welcome as I like it can be parsing to a uniform format our system can handle it. So next I'm gonna talk about one of the important part which is how we do modeling. There are three main things in the modeling. The workload resources, the controllers and events. In particular we use Prima language provided by Sting which is a system language and it's very easy to understand. Basically we model each object into an array of attribute and we model the controller into this event driven loop and we model event similarly as controller as into this proxy tab whereby the Sting is gonna exhaustly search for all the possible interleavings between the proxy tab. This shows the code example of node and the scheduler. Here you can see that the node has a defining different attributes and we define node as array and then for scheduler there is an array and also the scheduler, the logic is put into this atomic block and we'll do a follow-up over this queue. So we have implemented six mostly commonly used the controller and their features. For each controller we manually exempt the Kubernetes source code and we capture the mostly essential details. We omit any implementation details like error handleings, retries, or API calls and also other kind of fancy data structure where we also optimize them and we only keep the most essential details with the simplest possible logic and this table shows what we implemented like the controllers and also what are the line of code for each controller and from here you can see comparing with actual implementations which contains maybe tens of thousands of lines of code where really much simpler although we didn't finish all of them but we're still much simpler than the actual implementation. This also suggests that the Kiwi can be used as a reference model for Kubernetes for advanced user who want to learn more about how the controller really work they can read our code for more details. If you want to support more controller the modeling language formula is easy to understand like you can implement your own controllers and put it into the pool of model templates. We hope the major logic is one time effort that can benefit the whole communities. Pool requests are welcome for that. So finally I'm gonna talk with you about the verifier operator which addressed the very important scalability challenge for Kubernetes. Where the cluster it can reach 200 thousands of node and many thousands of pod or even more. This kind of brings like non state exploration problem for to verification and also the auto scaling and elasticity is one of the key characteristics of Kubernetes that is saying that user interested in not only one but like a wide range of different topologies topology here including like how many node and how many policy in different node groups. So with this scalability challenge we propose a hypothesis that is if a cluster can validate an intent then very likely they can do so at relatively small scale. By the way this hypothesis we believe can also be using other kind of system like testing you may probably test in a smaller scale for example. This is really because we believe the main complexity of many lines in the cluster controller logic and configuration that does not really grow up with a scale. And also all the topologies are generated from one cluster configuration. So it's subset of the topologies are often representative enough for the whole class of the topologies. Other people also made similar observation as a type of system. So with this observation we propose our algorithm incremental scaling algorithm. By the way it's nothing related to HPA it's really our internal algorithm for dealing with scalabilities. So we start to verify cluster at the smallest possible scale and we increase the scale until we find the violations or we reach to a confidence as we're the confidence as saying that with high confidence we should have already found the violations. We did some empirical study to show that small scale is actually enough by examining a collection of real-world example. Like we already talked about like three of them with you at the beginning. So in particular for each case we're looking we use our system to find like what are the minimum possible violations scale that we find the violations. So from this column like you can see that the maximum violation scale is actually three node and six part. And we also compare our small the minimum violation scale with a reported scale. And in six of seven cases we actually found like we have like even smaller scale than the reported scale. And we like we confirm our findings by reproducing the smaller scales in a real Kubernetes clusters. So to determine the confidence size we can choose it empirically by setting up to two acts of the like a mean maximum violation scale. Here in particular in this case it will be set into six node. And you know this confidence size is not one dimension like you may have multiple node type so to understand how different combination of sizes affect verification result with swapping to a range of combination of node and part and see how the verification result look like. So each dot here representing whether we found the violation on that particular scale or if we found no violations or if it reached to a non-interesting trivial cases which is defined showing here. As from and you can see that the skew is like increasing here. And from the yellow area we can see that the violation we affirm that the violation consistently appear for a sufficient large number of NNP. And also the exact combination of different NNP really matters. So this is just in summarized like our title summarized our conclusion that we really need to check with all combination of sizes for different type up to the confidence size in our system to have high confidence. In summary like we choose the confidence size empirically from the past failures and we start from the smallest possible skews and then we check for all combination of sizes until we find a violation so we reach to a confidence size. So if there's no violation found we will conclude that there is no violation with high confidence. We also did some other model optimization for scalability but due to time limit I will just save these slides here for you to check it offline. So next the comment is gonna show you a demo with like this incremental scaling algorithm and it's gonna show about the example too where there is a confliction between scheduler and this scheduler. All right, so I'm going to show the second demo. For the second demo we're going to run this run command. So previously we used P option. Here instead of P we are using C option. We provide a example which is pretty fine in our repo so you can just use it without preparing your input files to understand how KIVI works. And in this time we're not going to use all option. We used all option but at this time we're not going to use all option. Means we want to activate KIVI's incremental scaling algorithm.  So you see here number of node for node type zero is zero. Node type one has only one node and deployment type zero has only one instance and you see the number is increasing gradually. If you go down here you see different topology is explored at whatever time. So here one, zero, zero, two and so on. And it will take roughly 50 to 60 seconds for this experiment. This is just because we are exploring all the possible different topologies in a more comprehensible way. And for information again we are not running any actual clusters here. And you see two intents we want to verify here. One is no oscillation eviction. The other one is part always schedulable. And you see this is the output of this experiment. It's a little more complicated than previous one. You see the failure was found. Let's see what happens here with the count example. Deployment controller again creates six replicas here. It's fine. Scheduler schedule all of them on one of the node inner clusters. One, two, three and so on. Fine. Perfect. However, this scheduler kicks in and say, hey, you are violating topology spread constraint. So I'm going to evict part one or node one. Okay. However, deployment controller want to maintain six number replica. So now we have five. So we create one more, another one to keep six. Scheduler schedule it one of the node. And this scheduler kicks in again and say you're violating this constraint again. So I'm going to evict this part, the same one, and it will happen again and again and again. Here you see scheduler, this scheduler deployment controller create, scheduler and this scheduler. So if you go down here, it's somewhere you can find there's one failure, which is violating node oscillation eviction, which is there's oscillation. So this is the backup. So just summarize here, like for evaluation result, we already show you like, we use like real failure cases to demonstrate our hypothesis. And we can actually perform for large deployment, which maybe contains hundreds of nodes, like finish them within 100 seconds. And we can closely model the real system by we compare with a real Kubernetes cluster running logs. And we found the matching rate across the events is close to 100%. And we actually found two new issues in a Kubernetes controller, in particular this scheduler, we reported on the GitHub and the one of them has been confirmed. The other is waiting for response. So with this, I want to take a moment to thanks everyone who have helped with our proposal and giving us feedback to our project presentation. And with this, like we will be really welcome if you have any like early feedback, we'll be really appreciate that. You can please chat with us or like, you know, take hours away, which contents about like six different questions. We hope to make it easier for you. And we're really seeking, we are really seeking for this early user to use our tool. It's for free. And like you can provide us your configurations or you can chat with us, you know, we can work with you to help with improving your cluster reliability. So with that, I'm happy to take your question. Yeah, thanks everyone for coming, by the way. Yeah. That was a great talk. I was just curious, is this coupled in any way to the Kubernetes version of these controllers or how do you manage that? Oh, I see. Good puns like, yeah, right now we only implement the model for one particular version, but like, so first of all, we believe like, you know, the major logic for those controllers is one time effort, hopefully. And any update patches will make a smaller change or we could make a no change to the model because we only capture the most high level detail. But we're saying that we definitely recognize there is a maintenance effort for different version. So that's why we are here. Like we want to, you know, hope everyone more people can join. Like, you know, a few people's effort can actually benefit the whole community, you know, as a one time effort in general. So yeah, and also like in the future, we're also looking forward to do some more research on like, you know, just verify for the controller as a black box. So yeah, you won't need to, you know, worry about a version. That'll be the final goal if possible. Yeah, yeah, hope I answered your question. Yeah. Thank you. Okay, any other questions? So if we wanted to test this against like one of our own controllers, how would we point it to like our source code for the controller or something like that? Oh, sorry, can you say the answer? If we wanted to test like your tool against one of our own controllers, how would we point it at like our own source code? Is there a question like saying if you want to add more controllers to the tools or? Yeah, so like if we wrote our own controller. I see. And we want to validate our controller with your tool. I see, makes sense. If you want to validate that, you probably need to use like the primary language to implement your controller and you know, you can insert into our templates model and then you can use the whole system. But still need to first implement your own controllers. Yeah, yeah, using the provided language. Yeah. That's a pretty interesting question. It's like, you're already showing the failures and that cluster is not configured correctly. Do you plan to provide some recommendations? What exactly could be optimized to what we can do as an operator for the cluster to reduce these failures? Sorry, I didn't quite get it. You're saying about... You're showing a demo that it's failed, but it's very hard to understand for cluster operators. Okay. I mean people who manage the clusters. What exactly needs to be done? Oh, I see. To avoid it. I see, got it. So yeah, I see. So this is actually not part of the goal of this project. You know, how to tell you how to fix it. It's more like, sometimes it's actually hard already to reason about what really happened. So this is more like preventively tell you what can happen before you do deployment and hopefully operator can know maybe this is really a problem with particular configuration. They can fix it. We are not really like propose a really solution for you. That would be a whole another project. Yeah, but yeah, good question. That would be a very good goal in the future for sure. Yeah, yeah. Thank you. Yeah. Great talk. No question. Just good luck on your defense next week. Thank you. Yeah.


So in this module, we will discuss the data layer. How do we go about looking at the data layer, what are the guidelines, what are the components of the data layer, we will look at them in a certain level of detail. And then we will be also talking about something which is called as the blob. Blob is the binary large object, we will talk about it and what are the issues. So if we look at that layered diagram architecture of a web-based database application, we see at the bottom over here is the data layer. This is the layer I will be talking about in this module. And as you can see in more detail that this data layer consists of three parts also. One is the data access components. These components help in accessing the data, where the data at the data source. And we have these helper utilities. These utilities you don't as a programmer, you don't have to write these utilities. These help in the data transformation, the data transfer and reading the data. And if you have to use any external services to hide the idea of synchronizes in your database application. And those services have are exposed to use this service agents to make use of those services. So this is what we will be looking at and with reference to the data layer. Now what are the guidelines for the data layer, still we talk about the blog. Create an overall design for your data layer. And what it should be covering, identify the data source requirements, determine the data's access approach, where your data is how you're going to get the data and how you are going to map the sources to where you need the data. Remember that data is the new oil of this new economy. And how will you connect to the data source? And how you will handle the data source errors? When will this error occurs when you are reading from the data source? Now try to understand we are looking at data sources which are diverse. In this in this case diverse kind of heterogeneous. Therefore we have these issues because we are moving towards a data layer as an employee of an organization. You are looking at diversity in the data. Design the access commerce in enumerate the data sources where you will be getting the data from what methods methodologies and techniques you will be using to get their data and determine the relevant design patterns also. All has these to be covered in the data layer and more and more. Design your data helper components, use libraries, consider custom helper components. Don't spend a lot of time writing the code which you need to debug and which may crash also. Use the work that has already been done, which is established, which is failsafe and consider logging those helper components so that you can look at the different issues, the performance and fine tuning things. So all of this is going to help you. Design your service agents, which service agents with reference to the services expose to you so as to hide the complexities of the database and the data transformations in and the relevant things which I discussed in the previous slide. So what are the design guidelines? Choose the data access technology. Choose it wisely and handle curd exceptions. Curd is create, read, update, delete. Why? Because when you perform these operations and there are certain errors, how do you handle those exceptions? You don't want to leave your system open. Before the users what has been done and what has not been done that I discussed in the previous module also. So you have to consolidate your data structures also. So it's all about data. Why it's all about the data layer details in the notes.  Because in today's applications, we have large other than data, textual data, we have large images also. And those images need to be stored. Those images need to be processed. So single stream of data, it is unlike text because you have the text coming and the text can be divided into parts logically, but it's not the case for image. So it's single stream of data and structure is unknown to the database. You don't have this text as a number as a real as an integer. There's no such structure to it. And the blobs are not directly stored in the database because there's no structure to it. Okay. And it is usually stored as maybe a pointer also as a pointer pointer to the image data. And so what are the guidelines for working with blob avoid using database for storing the image a blob in a database. Don't parse the blob for search because you cannot do this. This is at the domain of image processing. This is a domain of image processing. Okay. What you need to do is maybe you need to have certain columns in which certain information is stored about the blob and you don't perform the search on the blob column but you perform the search on the associated columns to get your relevant blob and no blob in buffer transmission. It affects the performance. So this is about in this module and we will also have this data layer discussed and corresponding layers discussed further. And thank you for your time.