All right, welcome back to 353. So today we get to talk about how to implement threads because there are multiple options. One could be in the kernel. The other, well, could be full user space. Oops, that one. All right. So there's a few multi-threading models we can do. We can either do something called user threads or kernel threads. So user threads are completely in user space. So they're a part of your process. They're running in user mode. The kernel doesn't really know anything about them. And in this world, the kernel just assumes that, hey, your process just has a single thread. And then whatever you choose to do with that thread, that's up to each process. So kernel threads are implemented in kernel space. And the kernel manages everything for you. And it can treat threads specially so that, hey, if you have multiple threads in a process, maybe I can run them in parallel because I know about them. If they're just purely in user space, well, the kernel doesn't really know anything about them. It just thinks that there's only one thing executing at a time, so nothing would be running in parallel. That would be the major drawback between them. So no matter what implementation you need, like before with processes where we had a process table or process controlled table or process controlled block, whatever you want to call it, thread support requires some type of thread table. So this could be in user space or kernel space depending on whatever implementation we want. So if we had user threads, we would also need like a runtime system to determine scheduling because while the kernel doesn't know about the threads, so the threading library itself, since it runs all in user mode, would also have to implement its own scheduling. So the kernel would be controlling when to schedule that process to run and then that process would then be controlling what thread to run by itself. So it would need to implement its own scheduling algorithm. So both models, process can contain multiple threads. The only difference is whether or not the kernel actually knows about that and the major difference for you is that, well, whether or not it can run in parallel or not. So why would we want to do this? Well, for user threads, the idea behind it is simply for speed, especially back in the day when we didn't have multiple processors in our machine, we only had one core in it anyways. So if we can avoid system calls, which are slow, well, then just avoid them, they're slow. So we can just avoid system calls or just let a thread block everything. So for pure user level threads with no kernel support, they're gonna be very fast to create and destroy. Like I said, no system call, no explicit context switches, but the drawback is if one thread blocks, well then the entire process blocks because the kernel can't distinguish. So even if you have two threads, one's waiting on IO, so it's like doing a read system call or something like that. And it's a blocking system call, so it's not gonna return until the kernel has some information for it. And technically another thread could run because, well, it's not waiting, it's not blocked on anything. Since the kernel doesn't know about your other user thread, it's not gonna bother to schedule it, it's just gonna assume, hey, that process is blocked, too bad, so sad, even though that you could make progress doing something else. So if we have kernel level threads, well they're gonna be slower to create, we have to do a system call, but the nice thing about this is even with a single CPU core, if one thread blocks, well then the kernel can just schedule another one. So if we like just had a web browser and there was some blocking call that was waiting for a request, and we were just waiting for a request, we could go ahead and schedule another thread that can actually do something. So that is another big benefit of even if you have a single core, why you probably want kernel threads. But no matter what you have, there's gonna be, your threading library is going to run in user mode. So like the pthread library, that is just a normal library and it kind of abstracts this for you. And then that threading library is going to decide how to map its threads to kernel threads and there's a few different, and that's what handles that abstraction. So your threading library has three main options. So many to one, so that means many threads in the library get mapped to one kernel thread. So essentially just means the kernel just sees a process, doesn't really have the concept of threads. So all my user threads just get mapped to one kernel thread or just one process if you wanna think of it that way. The other one is one to one. So each thread in my library corresponds to a kernel thread. So the kernel will handle the scheduling for you, everything like that, it's pretty much just gets an identifier. So pthread library is an example of one to one, it uses kernel threads. And basically all that pthread library does is handle the actual system call for you. And if you dive into that, process like that pthread type, you'll find out it's just an integer. So it's also kind of just like a process ID. Yeah. Yeah. So you mentioned that these all run in user mode, but they all map the kernel. Yeah, so you're gonna use some type of library. So this is like using that pthread library or something like that. So it's still then, but like for example, in the one to one situation that's essentially creating a new kernel thread for every thread you create. Yeah, yeah. So one to one, if I do a pthread create, that creates a kernel thread. But someone could implement a threading library cough cough you, that is when you create a thread, it creates a user thread and the kernel has no knowledge about it. So this is just depending on, this is kind of what the threading library does. We're assuming we're using a threading library because using just going at it with system calls, probably a bad idea. Probably want like thread create, thread join, things like that. There's also a different like kind of hybrid approach that's many to many. So many user level threads can map to many kernel level threads. Typically you try and do this to get the best of both worlds. So if creating kernel threads is expensive, well, maybe I create as many kernel threads as I need to that like matches the number of CPU cores I have. And then after that, I'll just create user threads on top of that and try and switch between those kernel threads if I create a thousand threads, maybe I only have eight kernel threads and then I map like was that like some threads per each kernel thread. So different ways to go about it. So many to one, that's the pure user space implementation. So it's gonna be fast as outlined before and it's portable because it doesn't depend on the system. It's just a library. The kernel, you don't have to do any system calls or anything like that. So if you write it, you can use it on Windows, Mac, Linux, doesn't really matter because it's all running in user space. Again, you don't have to tell the kernel anything about your concept of threads. Big drawback is that same thing we had before. So if one thread blocks because the kernel doesn't know it could actually execute something else even if we have multiple threads, that whole process gets blocked and it can't make progress anymore. Also, because the kernel only knows about that process with its one main thread, well, can't execute anything in parallel. So kind of is a non-starter in today's world where even like my watch has two CPU cores. So yeah, so not good for today's world. And that is again because the kernel only schedules the process to run. No concept. The kernel can't tell that you've created however many threads you did. So one-to-one that just uses the kernel thread implementation. So basically this is what pthread does. It's just like a thin wrapper around the system calls to make it easier to use.  So like it's a clone and you tell it not to create a copy of the page tables and all that stuff.  And that way I can get the full parallels in my machine because, and I don't have to like implement anything weird, the kernel just handles the scheduling for me. It knows about the thread so it can schedule a thread if one thread gets blocked. Well, only that thread gets blocked. I can resume other ones. Yeah. So do they schedule processes or do they schedule entirely a threads? So the question is yeah, what does the kernel do? Does it just process or schedule processes through threads? Technically it just pretty much schedules threads. So threads are like the execution unit. So it will schedule that to run on a CPU. Does that mean that if you have doubled the threads you get essentially double the execution time on the CPU because of the way that the priority works? Yeah, if you have double the threads well, then you can run for twice. Like you have two, you essentially have two processes running, right? So if you have two things running, it needs to balance that. So as many things as many threads as you give it. So the question is, is there a limit to the number of threads a computer can have? So same answer as to, is there a limit to the number of processes a computer can run? So there's going to be a limit to the processes. Some number eventually, even if you have an unlimited process identifier, you'll run out of memory at some point for page tables. So for threads, you can create a lot more because they don't need page tables or anything. But like everything, it'll have a limit because it'll take some memory. But you can even run htop and look at how many threads are currently running. Some programs like, I forget some really bad ones that create like a thousand threads because they don't really know what they're doing. But just depends on the program. So with this, again, it does system calls each time I like to a pthread create and you lose some control. So maybe you wanted to schedule your own threads. Maybe you wanted to do something above and beyond what the Linux scheduler does or something like that. You wanted to have more control. So this is the implementation for pthreads. We assume this for Linux. The other one, many to many. So the idea here is that we have more user level threads than kernel level threads. Again, like I said, maybe if they don't block that often, then you just have as many kernel threads as you have cores on your machine. So you can get all that parallelism, but you don't have to do slow system calls every time. So idea again, just try and get the full parallelism with having as few system calls as you can. But this leads to a very, very, very complicated threading library. So for some God forsaken reason, Java has decided to launch this great new feature called Java virtual threads where they say it's way faster than pthreads and it uses this technique. But it's typically a bad idea. So people have tried this before. This isn't the first time. Typically the library gets really, really complicated and depending on your luck, you may see very bad performance. So the rules still apply. So like if you have, say you have, I don't know, like four threads that are like super or yeah, four threads, all mapped to the same kernel thread and three of them just like really, really want to use the CPU and can always run and never block. And one of those threads does a blocking system call. Well, guess what? That one thread that blocks since the kernel doesn't know it could run any of the other three, it blocks every single thread that got mapped to that kernel thread. And guess what?   And that would be one of those things where it just depends on the luck of your mapping.  And then sometimes you run it and it's fine. And then you try to spend a year of your life figuring out why that is. And then the answer is you got unlucky because you use Java virtual threads because, I don't know, people tend to do this like every 20 years where they think it's a good idea. So if you have to use Java and Java virtual threads, it uses this so beware. Yeah, you can tell I don't really like Java, which is true, yeah. So the threads, they do complicate the kernel a little bit, especially with, so a process can have multiple threads in it. So it kind of has to interact with things we have seen before. So for example, if we have a process with eight threads in it and it forks, what the hell should happen? Do we get a new process that also has eight threads or does something else happen? Do, like what state are they in? Just like we call fork, we pause the process and then whatever state all those threads are in at the time of the fork, the new thread gets them in that state and then how the hell are you gonna control what they're doing? You have no idea what state they're in. That could get out of hand really quickly. Also, it could make your fork bomb very effective if it also copied all the threads. So the rule is on Linux, if you fork, you will create a new process with only a single thread in it and that single thread will be a copy of whatever the thread is that called fork. So because of this, your new process again only has a single thread and if you did a fork in that thread function like in your thread run function, well, eventually when it exits it will just hit P thread exit because that's what happens implicitly and since it's the only thread it would just exit the process and the default thing is it just exits with status zero to signify everything's all good. So if you want to control what happens to other threads when you fork there's this really complicated thing. So there's some P thread at fork not covered in this course but if you had some weird other threads that modified memory while you were forking in a different thread and you needed to make sure they like reach some consistent state you can use P thread at fork to like register some functions to happen whenever you call fork so that hopefully you can get some consistent view of memory so that when you fork something is at least consistent but in this course not gonna bother with that because we're not gonna do anything terribly complicated. All right, other fun thing is if I have a process with like six threads in it or eight threads in it and that process gets sent a signal, what happens? So another fun thing. So if that happens should each thread receive the signal should just the main thread receive the signal? Well, the main thread can't receive the signal because the main thread isn't guaranteed to exist. So the solution in Linux is if a process gets sent a signal it will pick a random active thread and then that will receive the signal. So this makes concurrency hard because you can't control which thread actually gets interrupted and will run the signal handler. It's just anyone at random, so good luck. So also, so if you thought signals kind of sucked for was it lab two? Yeah, try using signals with multiple threads. Yeah. So control C is interrupt.  Yeah, so the question is what's going to happen if you do like control C and send it a sig in it? If you had a signal handler. So if you were using the default signal handlers and just one, like I had a process with eight threads I send it a control C or send it an interrupt signal. One of those threads is going to handle the signal and run the signal handler. And if I run the default signal handler, the default signal handler will just exit the process. So process is dead, nothing else exists anymore. And if I choose to ignore it, then nothing's going to happen. But that's what will happen. So one thread, so like any thread could just call exit two at any time, right? So if one thread just exits the process, boom, process is done, can't really do anything about it. All right, any other questions? Wow, we're steaming through. Okay, oh yeah. Yeah, so if the signal handler changes some memory then because all threads are in the same address space it'll change it for everyone. So like any thread can be interrupted at any time to do the signal handler, right? So you have no idea you have to handle like you have to be prepared that at any time any thread can just switch to the signal handler. So especially if you're sharing memory between threads or something like that and then the signal handler also shared memory then like really weird things can happen. And the solution for most people is using multiple threads, they just don't use signals because they're terrible. So there's a way to use signals through like file descriptors without having to use like an interrupt handler and you can actually like just do a read on it, like you can read anything else. So typically that's what people do because yeah if you ask anyone that does system programming signals we're like a mistake and everyone hates them. And for lab two you didn't have to use signals. Yeah, if you have, for user threads, so if you have user threads all of the user threads are mapped to a single kernel thread. So if you do one to one, yeah, then it's one thread is mapped to one kernel thread. Yeah, so in that case the kernel could schedule them concurrently, they can switch back and forth between threads or it could do it in parallel. Yeah, even in this case. Yeah. All right.  Instead of main to many what some people will do which is a more explicit thing to do is to create something called a thread pool. So again, remember the goal of many to many is to like just avoid the creation costs and kind of share the threads and reuse them. So what most sane people do is create a thread pool. So create a certain number of threads and then a queue of tasks. So maybe as many threads as CPUs in the system, maybe more if they block a lot. And then as a request comes in you just like wake up a thread, give them work to do from the queue of task. And then whenever they're done that queue then they get put back to sleep. Or yeah, you can sleep them or something like that. There's no work, just put them to sleep. And then whenever they have something else to do you can wake them up, reuse them over and over again. Yeah. So this would be the user. So either you implement this or it's like part of a library. And the queue of tasks is like just kind of a queue of functions to run. Yeah. Yeah, so the idea here is instead of having like a bunch of user threads that pretty much you just want to do a task. You just like define the task in like a function or something like that. And then you have like a work queue and you say, okay, I want to do this function. Please run it for me. And then it would run it for you using, it would just pick one of the threads in that thread pool and use that. And whenever it's done it goes back to the pool and we reuse it over and over again. So you just create the threads once and then they just keep on working while there's some work to do. Yep. Yeah, question is how slow is the create thread system call? And the answer is it's not that slow. But if this is like, so this is usually done if your tasks are really small and you have like millions of them.  Like not microservices, but it's, I don't know.  Yeah, that thing. Basically this, EC2 is just virtual machines. So as a preview for what we have to look forward to in lab four after a midterm and after a reading week and all that fun stuff is, yeah, like I've been alluding to, you get to implement many to one. So you get to implement user threads. So I gave them a cool name. So we have a cool prefix. So it's called what, why did I name them? I named them wacky user threads. I don't know, I just wanted to start with what cause I have, it doesn't take much to amuse me. So in this, you'll be essentially, instead of pthread create, you'll be doing what create. So you're going to implement user level threads. So they're going to kind of follow this same chart. So you create them with what create and then you'll have a queue of threads that are waiting or able to run. And your scheduler, which will just be simple round Robin, will just pick one to run when it's running. They're going to be cooperative user threads. So they're going to have to give up their CPU. And in order to give up the CPU, that's where that yield will come in. So if they call yield, they will essentially get put back onto that queue and the next thread in line will run. And then it will run until it either yields or it calls what exit, which should do the same thing as pthread exit and terminate the thread. And there's only one state we have where it can get blocked. So we'll have like a pthread join. So we can join on another thread, which means we'll wait for that thread to terminate. In which case, since we're waiting for a thread to terminate, we'll be blocked. We can't execute anymore because again, we're waiting for another thread to terminate. And then whenever that thread that we're waiting for actually terminates, we can go ahead and go right back into the ready queue. We're ready to run again. So we get to implement this. And like I said, scheduler, just going to be simple round Robin. You'll create a queue. I will show you a nice queue implementation so you don't have to implement your own link list. Although you guys probably want to implement your own link list. So yeah. So don't have to use mine if you don't want, but I suggest it, but how it will work. You just run the thread in the front of the queue. When it yields, it gets thrown to the back. And when you do a context switch, so you'll have to save the registers and all that. I will show you a nice way to do that. So you don't have to manually, you know, save register. Well, it'll also depend what CPU you have.  I'll show you a way to do that through some library function. So you, but what it will do under the hood is save all the registers for you. And they're going to be cooperative threads. So they have to be nice. You could extend this and do preemptive threads. So to do preemptive threads, you could just say, hey, Colonel, interrupt me every so often, like every like, I don't know, a few milliseconds or something like that. And then you can just call yield for the thread and force it to yield. But it doesn't really make it much more complicated. Speaking of complicated, all right, any other questions from today? Cause wow, I've gotten through this fast. I don't know if I'm just talking fast or what. All right, so our next complication is going to be more fun. So let's just have a little example and we can go through it for the rest of the lecture cause it will, why is that there? All right, whatever. All right, so here is our fun program using threads. So we're going to have a main. So we're going to create an array of threads up to num threads, which in this case is going to be eight. And then here, why I'm just reusing I. So I don't know why I'm doing that because I wanna be micro super efficient. So for loop that goes for zero all the way up to num threads. So we just create the threads. And then after I create all threads, there's eight active threads. I don't know in what order they're going to run or if this is going to run. But I'm going to just in the main thread, I'm going to join on all of them. So this whole loop will not complete until all of the threads have done executing and they're going to execute this run function. I don't give it any arguments. So let's see what this run function does. So I have a static encounter. All right, so let's see, did I go over this before? Who knows what static means there? Did I go, did I rant about this and like someone? So any guesses to what static means yet? Yeah, so it's a global variable. And static here means I can only access that global variable in the C file. This kind of protects me a little bit. And the compiler is also smart enough that if I don't use it anymore and it's like a static global variable, it'll tell me unused variable. Otherwise, if it was just int counter, it would just assume I might use it somewhere else. And it wouldn't warn me and all that fun stuff. All right, so I essentially create a global variable called int set it equal to zero. And then in the run, I will have a for loop that goes 10,000 times and just increments that global variable. So let's think for a second. So I create eight threads and I tell all my eight threads to go through and for 10,000 times I'm going to increment this counter. And then I wait for them all to finish. And then in the main thread, I print off the value of this counter. So, what should the final value of counter be for this program? 80,000, right? Yeah, 80,000? It's undefined because I plus plus is not atomic. Yeah, we got undefined. We got 80,000. We got, what's your guess? All right, it's in any ways. Yeah. So, if I run this, let's see 61, wait, that's weird. No, 63, 59, 63, 65, oh, 74, all right. Let's see, if I run this enough times, oh, there, 80,000. See? No bugs. No bugs. Totally works. So, that is our next one complication. So any guesses as to why that happened? And so, yeah. Well, one has read the counter and it's trying to increment it before it writes back. Maybe another thread has already read the counter. So maybe the true writes, because these two increments are kind of intermeet, they infect the only increments at once in the end. Yeah, yeah. So basically, so remember all threads share memory, right? So they're all in the same address space. So they'll have their own individual stack. So each thread will have its own copy of i or something like that. Well, not something like that. Each thread will have its own copy of i. So they'll all only run the loop 10,000 times. But the problem comes into effect when we have int counter. So that's a global variable, right? Which will be somewhere in memory and each thread is going to use that memory. So if I use the global variable counter, well, plus plus counter actually does a few things. So it looks like it just increments a value, but if we have to talk about what happens on the CPU, what it would have to do is, well, counter is somewhere in memory, okay? So it has to load that value from memory, see what the value currently is. And then, okay, it could increment the value and do that like in a register, which would be independent for each thread. And then after it's incremented that, well, then it's going to have to update that memory, the value at that memory address, right? So I essentially have eight threads here, all fighting to increment that counter. So they'll be reading, updating it independently, and then writing it back out. So there could be situations where like, hey, one thread reads the value. Let's say even for two threads, maybe one thread reads the value zero, okay? Then we switch to another thread, it reads the value zero. And then, okay, they both independently update it to one, and then they both write out one. So I would expect a two, but both of them update it to one, yeah. If that's the case, how did we end up with 80,000? That seems unlikely. True. So it turns out that computers are really, really fast, and we kind of just got lucky. So it took, it either completed all of them sequentially, it probably, yeah, it probably created all of them sequentially. So what likely happened in that case is, like I created one, and before I did the system call to make another thread in the main thread, the other one was already done, and then another one got created. It was done before I made the next one. That, that, that does likely what happened, yeah. If it, if, all right, so let's, let's see. So if we change it to 10, it's 80 more consistent. 80, 80, 80, 80, 80, 80, 80, 80. So yeah, it's more consistent, but still underlying problem, but you look at this, right, and you're like, I am God's gift to programming. I've, I've, I've fixed it. Nothing's, nothing's a matter, right? Which is why this is like a concurrency bug, because I'm using memory that's shared between two threads. I don't know they're ordering. These kind of bugs have lived in software, especially like the kernel for, I think longest, well, longest one I've seen that I remember is like seven years. It took someone to fix it. So these are like the hardest things in programming that you will ever have to do, and I get to introduce you them to you, so fun. And it gets worse the more complicated you have it, right? So like in this, I only had it go up to 10. I got 80 every time. Very unlikely. Very unlikely I see anything other than 80, right? Run it over and over again. I write this, I don't think it's a problem. Later, I don't know, I go viral, something like that.  Then it's kind of consistent. It's kind of not, it kind of gets close. And like, yeah, that'd be maybe okay for some things, but if I'm calculating your grades, you probably don't want me to do that. Yeah. So I'm assuming you just did the, you call yourself, you still have the same problem. Read an increment is in a system called, like you mean the instructions? The instructions. So is the only way to fix this essentially just have your own local counter and then update it once every thousand in which case you could still have that problem if you have a large number. It gets all we left, is there any way to fix this? So there's a few ways to fix this. Can we think of a way to fix this to make it consistent 80,000 all the time such that each thread actually increments something 10,000 times? Yeah. So like I create a local counter and then what's that equal to zero and then do that. And I update counter at the end. Yeah, so like that, that's the same problem, right? But all right, so same underlying problem, but I can almost guarantee if we run this it will probably be okay. So like, yeah, 80,000 all the time. And also this is why it makes it hard because this has the exact same problem as before. It's now just unlikely. Great, I love depending on unlikely things. So this is why we take this course because eventually I'll get old sooner than you and if I have a pacemaker or anything and you're programming it, then I don't wanna die. No, so in this case, whatever I change this number to not really gonna matter because I only do one update per thread to the shared variable at the end. So it doesn't matter what anything local does. Yeah. All right, so yeah, so other one global array then everyone updates their own individual one and then, yeah, so we could like static ant for like numb friends. So like, we're not equal equal. So like something like that, and then here, I have to find my ID and all that stuff. Okay, well, we saw how to like pass function calls to threads before, how do we do it? We do like malloc and all that stuff, right? So what about a solution that takes advantage of we can return a pointer? Yeah, yeah, so I could have my local, here I'll just get rid of this because it's ugly. So just have my local and then whenever I'm done updating it, let's just say I'll just malloc, I don't know, something called return malloc size of int. Oops, and then I'll just write the value of local counter there and then just return that pointer, something like that. Okay, so now I'm just returning a pointer to whatever that last value was and I have to include standard limb. So now here to get that pointer back, oh, I can actually use the return. So I could just say here, what got returned to me? It's an int pointer and let's just call it ret. I'll initialize it to null for some reason. And then remember, I need to give it the address of the pointer to update. So I have to give it the address of ret. It will give me some warning because it wants a void star star, not an int star star, but I can tell it, see, I know what I'm doing. So sure, here's a void star star to make you happy. And then after that, I can get its return value and then I could update counter plus equals something like that. We agree with that. So looks okay. Have I scared you enough? Is this actually okay? So my problem before was like, I had a bunch of threads all updating that same global variable that was shared in memory between all threads. Do I have that anymore? Well, we can argue about it. So here, the main thread creates eight threads and then waits for them all to complete. In each thread, it just updates its local counter, so it's its own local variable. So no problems with that. It's not actually shared. And then at the end, it just mallocs some memory. So I just get some memory and then I just return a pointer to that. So that should be fine. Then in the main, I'll be able to get that pointer value back by writing it to the address of return because that's C, that's how we have to do it. And I go ahead and only my main thread is incrementing this or is adding to this counter. So I have no problems with two threads trying to do access the same memory at once in this case. So each of them updates it and I have no problem whatsoever. So this will never fail. This is foolproof. And essentially what we implemented was has anyone ever heard of MapReduce? So it's like some big distributed thing that Google came up with and like was it 2008 to just massively run a bunch of workloads without having to deal with any of that problem with memory and all that. So essentially this is what we have implemented. So the map is like some independent thing that each essentially thread or in their case, computer can do. And then at the end, we just tally all the results and then we just add them all together at the end. So map, I just do some function and then I combine them all at the end. So if you came up with this in like 2008 or something and applied it to computers instead of threads, you would be probably not rich because Google would probably... Google would be richer, not you. All right. Any last thing I did that I should probably fix in this program I didn't free. Exactly. Where should I free? Huh? Yeah, after I add. So here I should free. All right. That would be our complete program, which is good. It always works. Yeah. Nope. So we aren't allowed to argue that C freeze force... We were only allowed to argue that C freeze force because that memory may be used in the future you can't predict it. In this case, I know after I read the value I know I don't have to use it anymore. So, yeah. You can't argue away that one. So if you use the libc argument you have to be creating a library. So when you implement your thread library you can make that argument. For this, writing a program can't make that argument. And yeah, also on the Java rant garbage collectors don't also free for you. So just saying you have a garbage collector also doesn't free you from that responsibility. All right. Any other questions before we end the day? All right. We're almost at reading week. So next lecture we'll just be review. So nothing new. And then, yeah, it'll be reading week and then you'll have an exam. Yay. All right. I have to write it too. All right. Just for a point for you. We're all in this together.


Welcome to the Town of Arlington Redevelopment Board meeting, tonight is July 10th, 2023, and I will call this meeting to order. My name is Rachel Sanbury, I am the Chair of the Redevelopment Board, and I would love for the other members of the Redevelopment Board to please introduce yourselves. Steve Rovellach, good evening. Eugene Benson. Hello. We have Claire Ricker, the Director of the Department of Planning and Community Development, also joining us this evening. So we will go ahead and start our meeting this evening with the first agenda item, which is the public hearing for docket number 3756-1309-1323, Massachusetts Avenue, and I will turn it over to Claire for an overview of the hearing this evening. Great, thank you so much. I wanted to make one other edit that was just pointed out by Mr. Rovellach. We are talking about docket 3756 this evening, which is a sign package that has been put together for 1309-1323, Massachusetts Avenue. Now, usually when these signs come into the office, if they meet the terms of the zoning, I approve them administratively. There was one sign in this package that did meet the zoning, and I approved it administratively. But when I started to look at the remainder of the signs, because there are quite a few of them, six total, five that we'll see tonight, I thought it was a good idea for the Board to take a look at this application. Every sign has a little bit of relief needed. Every sign is operating a little differently. I just thought the Board should take a look at this in total. It really will sort of redefine the look of the heights, and so that is where we are. Sounds good. Thank you very much. So as a next step, what we'd love to do is invite the applicant. Do we have the applicant for this evening? Grace, if you could take a seat in the front row. What we'd love for you to do, please, is to introduce yourself. And you can have up to 10 minutes for any type of introduction or any context that you'd like to give us, just so that I can explain the process. What will then happen is the Board will discuss. If we have any questions, we'll ask them of you. We'll also give our initial thoughts for some discussion. We'll then open this up for public comment. Anyone who's here this evening who wishes to address the Board with any thoughts on the application will be welcome to do so. We'll close public comment, and then the Board will deliver it. The process. So you could introduce yourself and give us some context. That would be great. Thank you. Thank you, members of the Board. My name is Phil McFadden. I am representing Barlow Science. On behalf of the property owner and tenants of 1309, 1323 Mass Ave. Barlow Science respectfully requests consideration or special permit approval for replacement signs. Our proposal is part of a concerted effort to beautify and improve the storefronts of the following tenants. Classic cafe, classic kitchen, Heights Barber, Verizon Salon, which a permit has been issued for that. RB Ace Disposal and RB Farina Roofing. Recent paint and billing improvements with the beginning of our clients moved to update this property. And the completion of these efforts will be the installation of a unified signage plan across the tenant storefronts. Much thought has been put into the overall design of each of the signs to convey a seamless, attractive look across the six tenant stores. If you have the picture of the overall structure. In our review of the town of Arlington's requirements, that special permit criteria be met. The use slash leave requested is required by special permit for the Arlington zoning ordinance. The requested use is essential to identifying each tenant to the way finding the public. It is an obvious desirable update to the public's safety and welfare. Quick identification on the busy NASAP benefits the public, especially with the proximity being close to park out. To scale clean, clear signage aids in traffic and pedestrian safety. The proposal will have no effect on public utilities. We are seeking only slight modifications to the bylaw. The intent of the bylaw remains fulfilled. The request will be an improvement to the property and add to the character of the district and is not detrimental in any way. The character of the neighborhood is improved when property owners and businesses see and complete updates to their storefronts. That's really all I have. If you had any questions as far as manufacturing, they are not illuminated signs. They have dimensional lettering on them. What we did along with our client is we tried to keep all the color schemes standardized. That's also going to aid as well. If the tenant leaves and they have a new tenant come in, we can kind of keep it standardized across the board with this property. Louise, that's all I have. Okay, great. Thank you so much. Before I turn it over to my colleagues, I just want to say that I'm very happy to see the investment that the landlord is putting into the building in terms of the receipts. The painting and this type of a consolidated sign package. So thank you. Ken, I'll turn it over to you first. Any questions or comments? Yeah, you're putting a consolidated view up along the signage ban. I appreciate that a lot. I think that looks nice and it helps. But what about the windows and the graphics on the windows or anything else that goes along? That is part of signage too. Yes. So are they going to take those things down? If that is a concern, we can certainly address it. I don't believe there's going to be any issues with that if this board chooses to take that approach. Well, I'm taking that personally saying the signage overall is something we want to look at, not just a sign ban up top. We want to also look at the windows and how everything else looks because it goes with the overall appearance of the whole street. I think that's very important. I think that's what you're trying to say too. When you say you look at it, it's going to be subjective to at least my approval of the signage, that all that signage on the windows are taken down or let's talk about it, say what stays up and say what the signage is. I'm not going to, but I consider that part of the signage. And then I know your desire to make the signage as big as possible. But right now when I look at the signs along the street there, they look like they're ready to bust out of that signage ban. It doesn't seem like it's fitting in there very comfortably. When I look at it, is there a way of maybe slimmering it down a little bit or something? It looks like it's all squeezed in there. You've got a suit size that's one size too small right now. Can I ask a couple questions for clarification? They are currently asking for relief in the spacing from the top to the bottom. I believe it's seven inches is required in terms of the two inches. Are you talking about vertically top-bottom or left-right? I would say both. And they are asking for relief on both, so that's great to clarify. I would be okay to give me relief on the side-to-side because I don't think that's as much of a squeeze. But I think the most important squeeze is the fact that it's going to top the bottom. And the fact that these signs are very similar, but they're right now up down all over the place. I'm assuming that the two on the right will keep the same height or some of that. And then the three or four on the left will maintain a similar height. So we have sort of a data, you know, something established. Because there is a strong cornice here right now above it that really emphasizes that. That's all I have to say for now. Perfect. Thank you, Ken. Jean. I agree that the signs would look much better than the current signs. So the standard that you have to meet to get exceptions is the architecture of the building, the location of the building relative to the street, or the nature of the use of the building is such that we should allow you to alter the current sign requirements. So what is it about the architecture of the building, the location relative to the street, or the nature made of the building that would say to us it's okay to allow something that otherwise would not be about size, placement. Well, the issue is it's size. If you're familiar with this building, you do have a lot of traffic, there are trees there. The copy, what we call the copy, the text, if you will, it is not busting out.  If you look at some of the copy here, like, for example, Classic Kitchen and Bath, there you're stacking that copy.  This here right now, Classic Kitchen and Bath. Kitchen and Bath is only five inches tall, you know, Classic obviously is standing out at 11 inches. For renat, roofing is eight and a half inches tall. And when you're driving down the street like that, you don't want it so small that people are going to start squinting their eyes and kind of doing that. You want it to pop, but you don't want it to go, you don't want to go crazy on it. So we found it was a fairly decent compromise that it's not sticking out like a sore thumb, it has an elegant to it, but it's also a safety feature where people are not going to be doing this to squint, to see what's there. So it was kind of a compromise the way we designed it. So if I understand you, the issue is there are too many letters in some of the names of some of the buildings. Yeah, if you see like Heights Barbershop, for example, that's three layer, Heights Barbershop, and then they serve the walk-in services, the tagline underneath. RV East Disposal, it's good readability. Furring a roofing, good readability because it's one line. When you get into the one line, you have to, that's where you, with the two lines or the three lines, that's where you have to kind of compromise and try to standardize something that looks appealing across the entire store. So let me just see if I understand Claire.  So what I have is that each of these signs exceeds, so when you do the map, they're allowed a six-foot sign, but they're going for 10 feet to cover the storefront, which the board will have to decide if that makes a difference. For the classic kitchen and bath, they would be seeking relief for the two window signs and also relief for the total signage area in excess of the allowable. ACE Disposal, 10-foot sign in excess of the allowable. Six further more, 12 inches of required at the left and right edges of the sign. The applicant seeks relief to install the sign with zero distance to the right and left, and that would be far in the B, and then the rest as you go down. Now I did not notice that there's also relief needed at the top and the bottom of the sign, so they would need relief on that as well, and I would have to update the memo. So none of the signs themselves are too big, it's just the placement of the signs. Some of them are too big. Not total square foot, but length. Like length. Some of them are too long. Correct. Some of them, the placement is off. None of them square footage is too big. Correct. Total square footage is too big on classic kitchen and bath because of the two window signs, and I believe that there's another, the two window signs, classic cat house. Classic cat house. Classic two window signs. But if they take those off, it would be fine. Yeah. With the total square footage. Correct. Or you just have one window sign. Correct. Correct. Fine. With the total square footage. Okay. Thanks for the clarification. Sure. I have no other questions. Great. Thank you. Steve. Yeah, I was, I guess one of the, overall I think this is an improvement. They, I do feel like, or Ken or my colleague, Mr. Lov, that they were a little too tall. They were a little too wide. To me, they take maybe too much of the sign band. I could, I think eight foot would, I'd be happy with eight foot. But yeah, I think they, I think it does fill up the band a little too much. Convince, Steve. Oh, that's it. Okay. I have several. I appreciate the, the black and white for its high contrast and relief. My concern is that this is a white building and with the white background, it completely washes out. And so my question is whether or not you explored with the landlord at all inverting and having a black background and white or gold or some other signage color because for me right now, this really detracts from the overall aesthetic of the building. There was conversation with the client in the early stages and they were, they do like this color scheme with, there's some other ideas out there. They were not a fan of a black background, kind of like Wonder Yoga.  Okay. I am certainly not, not in favor of that. So I just want to explain that and we can certainly have a discussion at the, at the board. I think again, if we are going to approve a sign package, I would like to see something that better enhances and overall improves the aesthetic of the, of the, of the building itself. So that's one question I had. And this, the second item as well with regards to the Heights bar, barbershop sign, I think overall the legibility of that sign to your point about driving on the street and wanting to be able to see the sign that's big enough would be significantly improved if you remove the third line with walking only so that you could actually see the business name. We typically discourage hours. And in fact, I believe I have to double check the gene perhaps you could double check. I think in the signage bylaw, we specifically prohibit hours being included on the signage ban, walking only line line. I mean, services, et cetera, but services can't be, can't be shown. So I prefer to see that as a two line sign. I think to Steve's point, I could certainly make a case. I know in other cases such as the, the Heights pub, we allowed the sign to take up more of the, we granted that relief for the vertical distance that was required. I agree with Steve. I feel that for some of these smaller storefronts, the sign feels too wide. And so I think that the two that are, that are, you know, significantly that are taking up the full width are the middle sign. So the roofing company as well as the disposal company. And so that perhaps stacking the name of the business that would be then consistent with the stacking of the others. And then perhaps pulling the sides of the sign in might provide some more of that relief that we're, that we're looking for. So that's one suggestion that I think I'd love to just speak about with my fellow board members to see if they're in agreement. And the only other thing I wanted to confirm was that Classic Cafe, that's a new black bonning, correct? The awning has been removed. There was an old awning there. But there's no new awning. There's no new awning. Okay. That was the question I had. And then again, with regard to the wall and window signage for the bylaw, two signs are permitted. So the two window signs plus the additional sign, you know, if we allow some relief in some of the other dimensions, and again, we'll need to discuss and decide whether or not their height is something that we would very relief on. To Kim's point, I think I'd like to see the window signs reduced down to one for consistency. And quite frankly, so that people could see it, I mean, that's part of the reason why we required that that signages is decreased on some of the windows so that people really have an opportunity to see into the spaces and appreciate as they're walking by the businesses themselves. That is all that I have. So Kim, did you have any thoughts on height, width, coloration? Yeah, I would go along with the rest of my board members as far as the width. How do you plan to light these things? Or are they lit at all? These are, we're producing not eliminated signs. So you don't have any like... Barlow doesn't, no. We're just putting up an aluminum sign with dimensional copy and no elimination. That's you. But what does the owner's intent? Are they going to hang over lights that shine on them? If it would be like more... I would LED gooseneck lighting that would come over and shine down on it. Would they have to have a hearing on that for that, Claire, or that's something that used to do a separate permit? They could probably get that approved administratively because that's permitted. However, in my view it should be part of the signage package if that's what's intended. So if it's not intended, that's fine. Definitely no intent. It never came to us as an opinion. I think we should assume it is not intended. I think it would be a nice overall approach, seeing the whole thing, lights and signage. And I'm very supportive of fixing this place up. It's my neighborhood. I eat the diet in there. My son gets his hair cut there. I mean, there's things that... Signage are definitely an improvement from what's there now. Yes. So I would say if we may not be down to two lines, I think it's a very good idea and maybe less words. And so you actually see it a little better. That might be worth it right there. I think that's a phenomenon. I'm okay with the light signs with the black letters. I don't see any reason to approve these variations from the dialogue. I don't think it meets any of the requirements. I think if you remove some of the words from the signs, which I think would make them just as good. And you could meet the sizing of the signs. So unless I'm convinced otherwise, I'm inclined to look for this. I don't think it meets any of the requirements to allow us to vary the required sizes and locations of the signs. And as my board members know, I tend to be pretty strict about this when it comes to sign. That's where I am on it. Steve? Going back to color schemes, I was going to... One of the questions I had written down to ask was if they were all going to be black or black on white if you had considered different color schemes or different variations. But I see that you're trying to get a consistent look, so that's fine. I do appreciate Ms. Zendery's suggestion for kind of removing the one line from the Heights Bar of the Shop, the walking services line, and possibly breaking up the two RV signs so that it was two lines and then could come in, could be narrowed. Okay. So Jean, the only thing that I'll just say in terms of a dialogue about the potential relief is I think that one of the challenges here definitely is the depth of the sign band. And if we do want them... Number one, I think other than the walk-in, the words are the company names. So I don't think that there's a lot of ability to just remove words. However, I think that in my point of view, by giving them a relief vertically and asking them to come in on the horizontal distance to what is required, that requiring them to stack the lettering still allows us to be legible and more appropriately fits the width of the storefronts that are there. To me that's one of the three storefronts that are to the right of the Classic Kitchen and Bath. There, I'm sorry, would you mind just going to the... It's okay, the one that's all three knocked up or all four of them all. Please. Perfect, thank you. Those are the ones that really feel like they're proud of each other to me. The ones on the left. The three to the right of Classic Kitchen, between the two classics, between Classic Cafe and Classic Kitchen and Bath. And so in my point of view, we give them relief on the vertical and they bring them in and all three of them to the required horizontal square footage or horizontal linear footage. And then ask, you know, they can certainly do so by stacking the two to the either side of the barber shop. That to me that works with the architecture and it allows some consistency. But that's my point of view. I wanted to talk through architecturally how I'm looking at this. So what do we do with Classic Cafe? So that meets the requirements in terms of the length of the sign because it is a longer storefront and therefore it's set in the appropriate dimension. Where they're over is by having two wall signs. That's where their square footage is over. So by reducing it to one, that brings in a compliance. The only thing that they need relief for is the vertical. So the set back from the top and the bottom. But again, if we are looking for consistency here, that's when really I personally would be okay with allowing for consistency, you know, knowing that given the width of those storefronts on the right, it's really challenging to have a meaningful sign in that space if we're asking them to decrease the overall length so that it's not literally lease like a lease sign. How about the Classic Kitchen? I would allow that one as shown because to me that fits the size of that particular storefront. I would allow that for consistency if we're going to allow, if we're going to allow the relief on the other three signs, I would allow the relief on that sign as well. So there's this singular data across. Why would we not allow the relief on top and bottom and then they would all be consistent across without having a great relief? I think that it will be too small if we ask them to pull in from the sides, the length that they need to, and ask them to press vertically. In my opinion. So what you're saying is have them reduce the length of the three center signs? Correct. Take out the extraneous storefront windows? Correct. What would you want? I would do both. I'd do both. On the Classic Cafe there's lettering on both windows. So would you want? I'd take both of them up. Give them the relief of the height. No, they can still put on the window the hours. It's not counted toward the windows. When you look at the whole streetscape and you walk in along there, that kind of blurs at me, having it up on the windows. If it's all open and you look inside and you walk along, that's the kind of image I see is. So here's the thing, especially with the Classic Cafe sign, if you walk in along, you'd have to look up like this. That's why I would allow one. I would allow one, because it's going to be eye level to have at least one sign in each one of the windows. I would go with the flow of the group, but I just think as you walk by, you're not going to confuse a cafe with a hairstylist or a salon.   I'm not going to need to know that by having a restaurant there. I'd say, oh, it's a restaurant. It's going to be what's known. Which restaurant is it? Well, there is one. It's across the street, isn't it? Nothing else. No more questions. What I'd like to do, I think at this time, is open this up for public comment. Any other questions before we do so? We're going to try it. Are we okay with just trying to set some constraints and then not have them come back and just have a moving with Claire? I'd like to get to that this evening, so that they can, again, we feel that we would need to see that again. I want to just say, working with owners here, trying to get things done. And I want to say I appreciate the fact that you're doing six. It's a big thing to the whole neighborhood just now. So I want to give a little credit for the effort of doing that. Thank you, I appreciate it. I did have one other question, actually. I just saw in my notes, is that centered on the door or on the building? That should be centered over the door. Not on the building. Because in the detail, it looks like it's centered over the door and not over the width of that section of the building. And I would prefer if that whole space is there for it to be centered within the lease. So centered on the lease line. Exactly. Personally. And we can discuss that. But it feels off. So at this time, I'd like to open this hearing up for public comment. So if there's anyone who'd like to speak on with regard to the signs, you could raise your hand.  Seeing none, we will close public comment. All right. So I will turn this back to the board to see if we can come to a consensus. It sounded like, aside from Jean, who I know is still considering, that there is some consensus that perhaps allowing relief for the top and bottom setback from the top and the bottom of the sign band was something that we're approaching a consensus on. And that we have a proposal on the table to ask them to come into compliance with the linear footage to respect those setbacks from the lease line and to alter the text so that they can take advantage of stacked texts for the businesses to maximize the size of the lettering if that does in fact maximize the text size and that we would like to go down to one window sign maximum for the only two that have in this package requested window signage, which are a classic cafe and classic kitchen and bath. Please. I'm really close with you. What the window sign says is Irish breakfast opens seven days and home cooking all day breakfast. I mean, that's the signage that we're talking about on the windows. It's not. You just don't want those signs. No. I could get behind that for classic cafe. I do think again, I have no issue with business sign being one small, you know, business sign being on the glazing as is proposed for classic kitchen and bath to go down to one as opposed to two. Which is existing. So for them to keep one of the two existing window signs. I'm okay with that. I'm okay with that. I could get behind that. No window signs for classic cafe because they are not a business sign. They're an advertisement. And one allow one of the existing window signs for classic kitchen and bath. Correct. Unless they want to come back with a proposal to you that is not what they serve, but is their need. Okay. Okay, you're very convincing. So if they shrink the length of the three signs we talked about okay with granting relief on the others because it has to do with the architecture of the building. So if we can say that in the findings. In the findings I think that would be appropriate. Where do we land on the centering of the signs? Is it going to be centered on the doorway or on the lease? I think they should be centered on the lease. I'm not saying one way. That's my personal opinion. Yep. Steve, do you have one last question. With regard to the the three immediately to the left of the closet kitchen. So we're looking at a six foot width. Correct. Just want to do. All of this sounds fine to me. I think the other thing that we want to do is say something about lighting which is that any lighting has to be administratively approved by planning or come back here. Okay. One more question. The landlord of this block. Are they also the landlord of the building to the left? The pizza shop. I do believe they own it but that's they never got involved or they never had us deal with any pizza signage or anything. So out of compliance I'd be least happy with those signs of any sign in the heights. So if you would like to pass that information on to the landlord that those need to come in front of us they were installed without coming through this process that is required. That would be much appreciated. Thank you very much. Okay. So if we are aligned, are there a motion to grant relief to the vertical setbacks from the top and bottom of the sign that as requested with the caveat that the signs need to be brought into compliance with the horizontal setbacks from either from the lease line and that the windows that no window signs are approved other than a single window sign as proposed for a classic kitchen and bath. And that any lighting that may be added in a later date would need to be administratively approved by the Department of Planning and Community Development. There are motions. I'll second. We'll take a vote starting with Steve. Yes. Ken. Thank you very much. I really appreciate it. Thank you. All right. That closes docket number 3756 for 1309 to 1323 will now move to agenda item number 2 which is to review the meeting minutes. There were two sets of meeting minutes that were submitted. The first is for the meeting from May 15th 2023. There were already comments submitted by Gene and Steve which were incorporated excuse me in the documents that were posted with the agenda. I have no further comments. Ken did you have any additional comments? Yes. I'm sorry. It's okay. Can we take them one by one and start with May 15th? That's what I'm starting with. That's okay. The 15th one right? Correct. First page like middle of the page where I kind of made a statement. Yes. Is the second to be long-term changes and some of which would take time which is fine but increased bus service like result over time I thought I said that not increased bus service would just to demand or something like that would not increase or just shift as population shifts that we always follow with population as well. I just proposed that it changed to and bus service will adapt will likely adapt over time. Next page down. It's allowed to express the interest in seeing a mock-up of three family housing and six family looks. Just massing. Do you have to word massing somewhere in there? Interest in seeing a mock-up massing of three family housing okay massing no, mock-up of a massing. That's all I had. Great. Gene, any additional comments? No. I don't have any either. Is there a motion to approve the meeting minutes from May 15th as amended? Take a vote starting with Yes. Yes. We'll now move to the meeting minutes for a few seconds from June 5th, 2023. Again, comments have already been received from Gene and Steve and incorporated. I have no further comments. No. Gene, any additional? No. Is there a motion to approve as amended and post it? Second. Starting with Steve. Yes. Gene. Yes. And I'm AS as well. Those meeting minutes from June 5th have been approved. Thank you very much. Thank you for your own steps to date. Great. Let us move to our next agenda item which is open for it. For anyone who has joined us this evening if you would like to address the board I ask that you please raise your hand after being called on. You will be given up to three minutes to address the board. Please note that we typically do not answer questions if there are themes. At the end of public comment we may make a statement or two to address any of those items and when you are called on please introduce yourself by your first last name and address and please yes, if you could come to the front that would be fantastic. I have a handout for you about this. We typically need to have something submitted in advance so that we can post it so if that's something that you wanted to you could certainly hand it out now but we would need you to submit it so that it can be posted for the records. Yes, thank you very much. Thank you. For the record we are receiving a document titled MBTA C zoning adding climate resilience and natural spaces and again we have requested that this be submitted so that it can be posted with the team from the meeting. Thank you. Am I being recorded? If you could actually sit here they will pick you up in these microphones right here. What I've listened in the past it's very lightly picked up you really can't understand you couldn't understand what I was saying. Again we've been assured by Sean that these microphones are sat here for that reason. Okay, so thank you. Where do you want me to sit? So this I'm sorry could you introduce yourself first last and address? My name is Susan Stamps. I am a town meeting member, a member of the tree committee and a member of the our environmental planners gas leaks task force and I have come before the board before to express my concerns about including planning for trees open space and such in the MBTA zoning planning I've been attending the several of the working group meetings and a member of equitable Arlington definitely a housing advocate I used to be a housing authority in Carlisle where I used to live the but a group of members got together in the past because we were all concerned had the same concerns time was getting short public comment is supposed to be closing this month and we feel that the environmental elements are they're not even being discussed so as we some and the members of this group are four out of the five or town meeting members Mary Ellen Arano who is also co-chair of the tree committee Elizabeth Carr Jones who's also co-chair open space Alan Jones who is also on the finance committee and long-range planning and myself who's on the tree committee and then the last person is Brian McBride who's very involved in the Hills Hill working on a compromise project for CPA funding so we're all very active in the community we're town meeting members we want to help this zoning package pass in the fall so you can join the tent town gaspan in January so that is our purpose it's not to scuttle the zoning plan get in the way cause problems it's to help we really think that it needs a lot of green zoning language in the in what goes before town meeting in order for town meeting to vote for it we are looking to include provisions for climate change mitigation and enrichment of Arlington's natural streetscapes preserving and increasing the tree canopy and accessible open spaces this will we all know that we just had two of the two hottest days in the recorded history of the planet this month and it's only going to get hotter we have got to make sure that we're not just building housing that we're also planting a whole bunch more trees they're relieving areas for pedestrian refuges for rain gardens for benches for people to get in the shade to make it a walkable community that is one of the goals of the action plan to make it walkable well it's not going to be walkable unless you've got trees and all the climate related amenities there the town is produced I appreciate it this is consistent with many plans the town has published thank you very much and again if you wouldn't mind submitting this to the player that would be appreciated appreciate it thank you so much please good evening I am chair of the historic district commission here at Arlington I'm also a member of the historic cultural resources working group under the master implementation committee master plan I've been attending some of the meetings of the working group for the MBTA communities and I appreciate the scope of the work they're doing and the thoughtfulness they're bringing into the exercise one thing that I think might be getting lost a little bit in the shuffle I attended a separate seminar sponsored by MAPC about the integration of community preservation goals in consideration of MBTA communities as well and they strongly suggested that's a positive thing to do to get buy-in from stakeholders and to come up with a better product overall I noticed that in the Brookline and Ipswich as well as in Belmont there's actually someone with a background in preservation on the working group committee to articulate that I've been attending the working group meetings and I've tried to provide that information in some context but it's very difficult in the working group because they won't allow participation but there's a busy gate, a lot of stuff to do and I think there's a little bit of frustration with the different maps that come out that have impacted historic districts and I understand there's recognition of that and consideration of that but there's been no reason for the community to inform them what's going on and how this might impact something that they're concerned about so I'm here to say a little bit about which would be great and I would love for you to encourage the working group to schedule a working session where we can get 10 minutes to articulate some of the issues of the historic preservation for their consideration and hopefully we can provide a conduit and information that someone suggests so let's look at this as it happened at a working group meeting recently that happened to be right on top of the Broadway historic district but I could at least have provided information that wasn't available to the community in real time the working group in real time so I would just ask that you encourage the working group to reach out through the preservation community and schedule something on the agenda thank you very much I appreciate it thank you so much yes think it by day is a point of interest on July 25th there will be a working group session where we will allow as much public comment as we can handle thank you Chuck Kearney to Kimmel Road Tom Meading member of PCC 11 thank you also to the UDP working group you guys have done a lot of work and thank you for publishing the map early June and the second map June 22nd after the first map was published it raised a whole bunch of questions people didn't understand a lot what was behind the map in terms of building hide in terms of zoning bylaws setbacks and so forth and then the second map was published and it did start to look at the parameters of the model particularly the setbacks zero front 10 sides 20 rear which is good information I think that will form the basis of good debate whether that's what Tom Meading wants or not but my request is to publish more about the model what's contained in the model that Utile is developing they mentioned backscore stories about other building heights is there any assumption about usable open space is there any assumption about green space in the model we don't know and so we want to find out more about what's behind the assumptions or other outstanding questions understanding the design the concept but the more information I think you can provide now it's going to tamp down a lot of what could be potentially objections later on so that's my request, I know there's public forums we'll ask again but this is also an opportunity to make that request thank you very much and if I may the model was not developed by Utile the model that they're using was developed by the Department of Housing and Community Development anyone else who wants to speak this evening okay so I appreciate all the comments this evening I think that Claire addressed two of them so the questions around being able to provide some feedback on climate resilience and also the historic from the preservation community feedback on the historic districts July 21st will be a good opportunity for those types of discussions with the working group and then with regard to the last comment I certainly under your feedback one thing that we've been asking people to keep in mind is that this is an iterative process and those details are just being developed at this time so I know that it's frustrating but that's part of this process as you start here and then you work into the details so much appreciated and much more to come on those fine details as we go forward anyone else for public comment so at this time we'll close open forum and we'll move to agenda item number four we typically try not to get into a back and forth if you have one for comment that would be fine so I appreciate your coming here although obviously the MBTA working group is the place where you need to be first we're going to get some product from them at some point in the future I will say that I have said at some of the meetings that I think they have to take into consideration not only the historic districts the town and historic districts but also the ones that are in the national register which last time I looked they hadn't identified those on the map so I think we are sensitive to that on the green space and other environments too I don't think that requiring setbacks is the only way to go about doing it and so I think there needs to be important discussions about what are the alternatives because some of the locks on massive and broadways are shallow that if you're crying in green space nothing is going to get built mostly requires setbacks so I think there's going to have to be some discussion about what are the various ways to do it and how essential are setbacks to that Thank you, Jean Very just what we've got and going through this one of the constraints that we're operating under is that we can't impose requirements on multi-family housing and BME data districts that aren't also requirements for other by right development so base business thank you respect the rules of the business okay so with that we will close open forum and we will move to new business and I will turn it over to Claire to see if any items to share Great, thank you I don't have much new business I can say that I've been speaking with the chair of the working group on the 24th here and we'll do a joint meeting the ARB and the working group on the 25th in their space we're actually going to have it at town hall that's the 24th of July the 25th of July okay yes because they have a a lot of work to do so we're going to do a joint meeting and we're going to do a joint meeting and we're going to do a joint meeting okay yes because they have a working group meeting immediately after the ARB meeting the working group meeting the 25th we will have lots of room for public comment we're going to use that meeting it's time for people to really respond to the work that we've been doing I think one of the challenges has been because this work is iterative because the working group has been so passionate and lively about the work that we've done you know it's map after map after map on the website as we've been doing this work and none of those maps are likely going to be the final map I think that on the evening of the 24th and 25th we will have a final map we can do some tricky we are getting interestingly I think I've gotten the letter from at least one property owner that would like to be included in the district and I'm a little surprised I thought I would get a few more but I do think that's something we need to talk about you know if someone wants their property in the district is that something that this board would be willing to entertain so anyway that's the latest update I have on MBTA communities at least in terms of scheduling and timing as well as the opportunity for public participation I'm imagining too at the ARB meeting that we will have some public comment time as well absolutely yes yes yes so just so that I'm clear we will have our scheduled meeting on the 24th prior and that will be a working group and then we will need to post if it is to be a working group the next night we'll need to post that as an official redevelopment for working or meeting if you would like a solid attendance correct okay and what is the timing for that we just need to rework some travel so the redevelopment board meeting will be at 7.30 right it's the 25th on the 25th we usually start at 7.30 and we've been going until 9.00 we will likely go later than that okay on the 25th and will we have a distinct agenda developed for each of those two meetings that is correct I am working with the board chair now on the agenda as well as with Theresa Marzelli who is our community outreach coordinator okay great and if you need me to help at all absolutely yes great any questions about the two working sessions so I said this before I think some time before the proposal gets to us the working group has to notify every owner whose property is potentially in the overlay and have an opportunity for those folks to learn about what this is about and there's not a lot of time so this is a really interesting and thank you for bringing it up this idea that we notify a butters I think right now tonight we don't know exactly not a butters but the actual property owners whose property is in the zone so as of tonight we don't know which properties will be in the zone but when we do I think I did send out an email to town meeting members and identified the precincts that are most likely to be impacted I do hope those folks will show up to the meeting and make some comments obviously when we have finalized a zone and a map people inside the zone and those adjacent to the zone will be notified for the ARB public hearings as they relate to bringing this more in order to town meeting so I will know Jean if we're meeting on the 24th and the 25th or two nights of a working session to get to a map that would leave four weeks before our hearing on the 28th but you know a month so I think that's certainly a goal to get to is it probably would be better to over to let people know that it will be their property or potentially so that we over communicate following that meeting that sounds fine one other thing I'd like to offer is new business and that is that as we're moving sort of from we're still collecting a lot of community input but obviously there will be a time where we can't continue to accept comment we need to move into project advocacy I think to that end we will be meeting David is looking to set up a meeting with open space and the open space committee and the tree folks and I've asked to reset up a meeting with the historic and those who are involved in historic to do some focus groups for people who have you know some special interest so we can talk a little more closely about your interests and as they relate to NBTA communities so David will be working with the open space folks and as I said Theresa will be working with historic we have it forgotten thank you let's see one question I know Jean you and you were talking about working with Doug Hyme and Claire to look at the inclusionary zoning and when that kicks in through special permit and what impact or not that would have do you have any updates there or should we put them on to talking I wonder if that's something we might be able to talk about them on the 24th any other no further business thank you Jean nothing so at this time the redevelopment board intends to move into an executive session to discuss strategy with respect to bargaining or litigation whereas an open meeting may have a detrimental effect on the bargaining or litigating position of the public body the board will not reconvene an open meeting after this executive session so what we will need to do is see if there is a motion from the member of the board for the ARB to close tonight's open meeting and go into executive session in importance with mass general law chapter 49 section 23B so motion second starting with Steve yes thank you all for joining us this evening thank you


Hi everyone, Sean with jaspyscasebreaks.com here doing 2021 Panini Prism Draft Picks football one box break random pack number 26 where we're going to open up the box number all the packs then randomize the list of customers and the numbers on the packs to see who gets which packs list for the customers Travis down to Ryan thank you both for getting in on this and pack numbers here first like they said let's go over here and pop open this box and number of these packs so those are the packs another random pack break of this is in the store now so if anybody wants to get on the next one get your spots and then on the neck cam you can see the packs there so dice rule to randomize both lists and pair them up three and one four times good luck fourth and final time from Travis down to Ryan so it stayed in the same order and four times on the packs fourth and final time two down to four so Travis you're gonna have pack two Ryan you're gonna get the rest so let's print that out for you so Ryan you've got one three four and five Travis you got pack two good luck sir you got Isaiah McDuffie out of 199 linebacker out of Boston College Jalen regor red wave Chris Carson purple ice to 149 and Miles Garrett silver Dazz Newsom and Kedarius Tony so there you go Travis thank you very much and then Ryan one three four and five are all yours let's start with pack one right on top Patrick Mahomes ah one the other BYU guy purple ice auto Dax Milne wide receiver that is out of 99 23 out of 99 Jamar Chase red wave nice and Callum Mond red out of 299 Karence Marshall Jr silver every time I see him I forget that he's in this in product I immediately assume it's going to be Zach Wilson every time who apparently is the the only player for the Jets who hasn't reported not under contract pack three not a big deal though and it's Javon Holland to 199 safety out of Oregon Pat Freyermouth red wave and Antonio Gibson blue to 199 Micah parson silver bless you Chris Evans running back out of Michigan Sam Darnall red wave Callum Mond blue wave out of 249 and Will Fuller silver nice Nanji Harris as well I have to finish it off this is the one right Ryan second year Jordan Love and it's a quarterback it's Peyton Ramsey though orange Pulsar out of Northwestern out of 49 that's nice Justin Fields red wave though non numbered Julio Jones red out of 299 and a Zach Wilson silver there you go so there you go guys that was the break Ryan nice pack to finish it on I wish either that fields or the Wilson were the auto but not too bad to finish it and there you go that was 2021 prism draft picks football one box break random pack number 26 from jaspyscasebreaks.com I'm Sean jaspyscasebreaks.com thanks for hanging out and see you next time


Secretary of Genocide. Anapolis to Genocide. Money for Israel. Watch yourself, watch your hand protesting here. He just told Israel that we would send more money. More money to Israel. The House Armed Services Committee. I was on the outside and I saw him, see my sign and read it. I made eye contact with him. I was telling him to remember Aaron Bushnell because he is the Secretary of Defense. He is supposed to make sure that our service members are taken care of and clearly he is not. And it was so exciting to see him come out of the hearing room because we surrounded him and we surrounded him as he walked out and we were screaming, Secretary of Genocide, which is exactly what he is.  The blood of the people of Gaza is on your hands. And he saw us and he heard us. Don't carry our genocide.