I'll paste this into the chat, and I'll paste it again. So I just pasted the short link to these slides in the chat for folks joining after the fact. It is pos.it-posit-rstudio-copilot, and that will get you to a copy of these slides that will be up in the future. So yeah, thank you so much for having me. Excited to be here and talk about new things in our studio and integration such as getting a co-pilot. I joke that this could really be a one-page presentation. In terms of get a co-pilot is in our studio now, it's finally here. Kind of mic drop, walk away, that's the end of it. But of course, like any tool, you need to learn a little bit about how to use it best and be productive with it as opposed to just use the tool and kind of not know how to use it the best way. So this is a talk that officially closes one of our most highly requested features ever, get a co-pilot integration with RStudio, which is issue number 10148. It had over 500 upvotes and was again, the most popular feature request we've ever had for the RStudio IDE. So really excited that we're able to deliver this in the most recent release as a preview feature in RStudio 2023.09, which just came out about a week and a half ago. But before we kind of get into co-pilot and just saying it's available, you know, that's great, but we need to kind of figure out what is co-pilot and what does it mean in a broader sense of generative AI or large language models and what does it all mean together. So let's first talk about what's generative AI. Generative AI is a set of category of models and tools designed to create new content such as text, and that's what we'll be using for co-pilot. But it could also be things like images, code. And generative AI is ultimately using a variety of techniques to identify patterns and then generate novel or new outcomes based on them. While I was preparing for this talk, I used a different AI tool called MidJourney, which is used for creating images or graphics. So my dog, my old boss, interior Howard, is my little co-pilot. It's always with me as I'm coding or doing development or managing products here at Posit. And so I use this prompt or this kind of set of text, sent it over to MidJourney and said, hey, give me back an image that is described by this. And if we look at it, what we're really asking for is a seated robotic Android boss interior wearing pilot goggles. So this is my little co-pilot buddy. And so in the span of 10 or 12 words or so, I can get a remarkably complex output out of that. And this is kind of the promise of generative AI is taking something small and all this context that it was trained on and creating something new for you to use. Now, well, images are really cool and I love this image. I can use it in the future. What we're here to talk about though is more about generating text or, in this case, generating code as a specific type of text. So generative AI for text, what it wants to do here is really just predict the next word or the token or a string. So you might have, say, like an iPhone and you're typing out and you see at the top of your keyboard that it's inputting like, oh, it's predicting the next word. You can kind of at a basic level think of generative AI for text as a super powered version of that. So I might go to ask something like chat GPT, hey, complete the sentence every good. And so it's like, okay, well, what does every good mean? And it comes together and says, well, the next word after every good is thing. And then it's must come to an end. So as it builds up this context, it starts with just complete the sentence and it's very good. And it has kind of a lot of variation about what the next word might be. But then as it gets more context about what it's predicted, it gets to these high, high probabilities of it is predicting something down this very specific path. So this general idea of take something small, keep adding to it and predicting this next token or this next word or this next snippet of code. And then building upon the context of what's come before it is largely how some of these tools can work. And co-pilot uses a similar approach to generate code and not just text. As far as what co-pilot is, if we ask the co-pilot developers in their documentation, GitHub co-pilot is an AI pair programmer that offers auto complete style suggestions as ghost text. And this is based upon the context of the surrounding code that is in your script or that it's been trained on. Now I want to differentiate a little bit because if you think about our studio, it's had auto complete for forever.  Ghost text is a new type of context or a new type of way to create these predictions. So we think about just auto complete, it's parsing the code and the environment. It'll take that code of where you're typing exactly where you are and supply a list of possible completions, right? Like they have to be possible based upon the characters you've typed so far. And this is a static set of completions that has a little pop up. And it's provided from your IDs, literally provided from the computer you're working on or on disk. If we compare and contrast that to co-pilot, co-pilot will still parse the code and the environment. But it has billions of examples of training data and billions of examples of code that has been trained on that can be incorporated into the prediction, that next token or that next script that's trying to spit out. And importantly, it's supplying a list of likely completions, right? They don't even have to be possible. It could be something completely outside of your script, but it could be helpful for your problem. And it's not a static set of completions, but rather a dynamic set that's kind of non-deterministic and is prepared and delivered via ghost text as opposed to a pop up. And ultimately, co-pilot is calling out to API endpoints. And it's a generative AI tool provided via that API endpoint. Now, talking about co-pilot, sure, that's very helpful. And it says, okay, this is what the difference is. But ultimately, it helps to show you what it looks like. So if we think about autocomplete versus co-pilot, autocomplete might look something like this. I have an R script that's in RStudio. I start typing mean, and so I type MEA to take the mean of this value. And it will do this autocomplete pop up showing me what's possible. If I compare this to co-pilot, it'll not only complete what's possible, but also the context within the script. So we look here on line one, I have a comment. Take the mean of the MPG column in the empty cars data set. So here, with only typing one letter, M, it automatically not only completes the function I'm trying to call, but also the data that I've indicated I want to use. So this is a possible or kind of a example solution it might give. And it's doing more than just autocompleting the text that's available. And if you look at it, this is ghost text. That's a little light gray differentiation here. If we look at this, the first letter is one I've typed. And then the remainder of this word is the ghost text that pops up. So this ghost text, if we look at a bit longer example, might look something like this, where in the same script, I've said, well, I don't want to just use mean and a dollar sign to get my column. I want to group by another column and use dplyr to do that. So in this case, I'm providing the context of a comment about what I'm trying to accomplish. I've also written a one line of code, which is just loading the dplyr package. And then co-pilot will generate ghost text trying to solve the problem that I've prompted it with, or this context that I provided. So from line five on, this is all autocompleted from ghost text via co-pilot all at once, so a multi-line output that it's providing. So it's not just limited to small, short snippets, but can do a little bit more complex. And importantly, this ghost text doesn't actually exist in the document until you accept it. So if you don't like the output that it predicted, you can back out and start typing something else and get another prediction out. And you can keep working or write your own script and ignore what co-pilot is giving you. Now, ultimately, again, while this is cool, we've got a little more context. I do want to at least show you one example. So here's a live one. In this example, I've got a little bit longer script. And I'm, again, giving a little bit of a prompt here. And then it creates the function for me, and I can immediately call it. Again, it's multiple lines it's predicting out, and then I call the function as it comes out. So I provide a scoped and specific prompt here on line six, which is that comment. And then the additional lines of code from one to five. And then I receive ghost text autocompletion for the lines below that. So line nine on is the mode function I've asked it to create. And this is a lot of different things. It's functional code that actually works. And inside our studio, we also have the status of the request in terms of co-pilot is thinking or it's sent back a response that we can then work with. So altogether, this ghost text is something new. And I wanted to explain a little bit about how it works. And we'll use this concept throughout co-pilot. It's just how it's built into the IDE. As far as this kind of scope to specific prompt, we're trying to say, what is the information that we're trying to bring in or what is the problem we're trying to solve? In this case, a prompt is really just context. And we'll talk a little bit more about what that means later on. So ultimately, I want you to get started and kind of try out co-pilot. So if you want to try out co-pilot and we'll go into some more deeper examples throughout this, you can get a subscription to get up co-pilot personal or for business. Importantly, co-pilot is a paid third party service. So you do have to have a subscription to use it. And once you acquire that subscription, you can activate it within our studio by going to tools, global options in the co-pilot tab. And it will walk you through downloading, installing the co-pilot agent, and then signing in with your co-pilot account or your GitHub account. So go in there, you'll click on sign in here in the co-pilot tab. And then it'll take you through an off flow where you drop in a verification code, you authorize co-pilot to access your account. And then it will sign you in as your username. I'm J. Thomas Mock on GitHub, and I'm now logged in as myself to work with us. So at this point, I'm ready to use co-pilot and we can get into a little bit more of a deeper example of how co-pilot might be useful or how we can solve problems with this in addition to writing our own code. Now with any new tool, I think it's important to play around, but play around with a purpose. So this is like, I'm not trying to use it for every single thing possible, but I'm trying to solve a specific problem, play around with this new tool to see like, how can I break it? How can I use it well and kind of do it in this kind of fun environment where I'm not afraid to mess up and I'm not breaking anything? So for me, I wanted to play around for this talk by solving a game called Keyword. Keyword is a word game. It's popularized at least within my family by The Washington Post. And it's kind of like a mini crossword, but you don't have any context about what the words are, right?  Now, to solve this, you might eventually end up with solving it with typing out felony to get your flimsy, stare, kale, unto, seen, sway. Like those are the words vertically and then it spells horizontal across felony. And we can solve this a couple of different ways, you know, just trying to guess and saying, oh, it's wrong or it's right. Or we could, you know, try and write out all the possible letters and eliminate them before guessing. But ultimately, because we're trying to use Copilot, we're going to solve this puzzle with our studio and Copilot. That's what we're going to use for today. So I'll use this kind of open-ended task that's a little bit fun to talk about how you can be productive with Copilot and make use of it in your daily life. Ultimately, to be successful with something like get a Copilot, we have to get the most out of this generative loop. What I mean by that is that, you know, the Copilot or other generative AI tools require a little bit of guidance to be successful. So Copilot is another generative AI tool and it can predict output text, or in this case, more specifically code. But importantly, generative AI doesn't understand anything. It's just a prediction engine. It's just trying to get to that next word and continue finishing out a sentence or a script. So in this case, to get the most out of the generative loop, we can think about it in three different ways. We have the context, which is what prompts or what code or what comments have been provided. Basically, what all is inside the script that it can use. The intent, which is what I actually think in my head of what I want to do, but I have to codify that or write it into my scripts to get the most out of it. And then I have the output, which is actually what Copilot will return in this example. So these three components in my mind are the generative loop. I have the intent initially about what I'm trying to do, the context about what prompts I then provide to Copilot, and the output of, again, what is actually returning. So to get the most out of this, I can try and supply better context, which means it gets closer to my intent of what I want to do, and leads to a better output or a better prediction to help solve my problem. So this is really what I meant by scoping the problem and a prompt. The prompt is really anything in your script, like code snippets, names of files, names of data frames, little comments throughout, and other things that have been loaded in the environment. To simplify this even further, I have my little buzzword for the day, which is S2C, or making your problems simple, specific, and use comments throughout your document. Using this approach, you can generally be productive with tools like Copilot, and allow it to be closer to what you're actually intending to do and get better outputs. So in this case, again, our toy task that we're trying to solve today is how can we solve the keyword game with R, RStudio, and Copilot? So we'll take this complex task and break it down into simple and specific problems. So I might provide a high level description of the project goal at the top level, and then build off that with more specific tasks. For example, I know how to play keyword, and I know you can solve similar word games with R. I've seen other people solve games like Wordle with R. So I might write out a long set of comments like this. And this is my first prompt or my first context that I'm providing to Copilot. And it's also useful for me. It's telling me, hey, this is what I'm trying to do. So I'm creating ultimately a function to solve the keyword game. This is a six letter horizontal word, and it's got the intersection of those other vertical words. And we're trying to find each of the missing letters from those vertical words to spell the horizontal word. And then I say how to play guess six letters across, and the letters must spell real words up and down. So this context, this is still a pretty open-ended problem, but this is just me setting the initial stakes of what I want to do with my overall script. So we'll go a little bit further, but I think it is very useful to supply a lot of detail up front. And then you can again break down more of your problems. Now the simplest way to solve this problem is to be clever. In this case, we'll cheat really briefly and then get away from it.  So I can get the URL for a specific date, grab the JSON data from behind the scenes, and then print that out. And then I can get the answer. So the answer for this day was staple, and then I solved it immediately. But that's cheating. I don't want to be that simple or that clever. I actually want to solve the problem with R. So while the answer is available in that JSON data that's available from the website, I can also find something that's more useful for actually solving the problem, which is the words with the missing letters. So here we have a underscore indicating the missing letter and then the rest of the words spelled out. So if I use staple, it would be C, chant, bear, spur, really scale. So those are the words I'm trying to solve. And if I have two or three or four of the letters, I can probably try and guess the rest of them with R and try and figure out which words are possible. So this is my first kind of break down the larger problem into simple steps, which is solve each of the individual words. So in this case, simpler is not cheating, but just get the hint words. So let's break it down into the component parts and work with the hit words. So here I have a long kind of set of comments. So in this case, six lines of comments. I'm telling myself and co-pilot, hey, this is what we're trying to do. I'm creating a function called JSON URL that takes a date and then responds back with a structured match to this URL to get the JSON data. And as I start typing out JSON underscore URL, co-pilot will provide this prediction of saying, hey, here's the function we think you're trying to write. And it provides a useful function by providing all of this context and what we would call like a prompt or kind of the context we're supplying to co-pilot. I get a very useful output out of pasting the date into this URL so I can really solve it for any day, not just one specific day. So we've solved step one, which is getting the URL and then we can use that to get some of the additional words out of this. So we just wanna get those hint words. So I can do this manually, I can start typing out, get the JSON, get the hints from this, extract the words, vector from the JSON blob and print it out, great. But I need to actually work with them. So we'll ask co-pilot another question or ask co-pilot to help us out with another problem. So in this case, we'll be very specific. So we have simple, break it down into a smaller problem and specific. In this case, we're gonna use expressive names and comments alongside variables, functions and other objects to basically use as another type of prompt. So here I have a shorter set of comments given a word like underscore hack. Return a regex that will match the no letters or replace any lowercase letter for the underscore. So as I start typing out regex, it'll give me regex from word. And so if I supply a word, it will replace that underscore with any lowercase letter. And then spit it out as a regex that can be applied to a database of words. I'm using a Mac, and I know that Macs actually have a database of words built into them, so I can supply a whole bunch of words and filter it down into the ones that actually match this problem. So now I not only have the hints, but I have a regex I can use to filter out my words and try and predict. But really, the idea here is that with shorter comments, but more expressive names or more expressive problems, I can get a better response from Copilot. Now, where I can go further is after defining regex from word, I can use it. And here, without using any comments, but typing out matched words, Copilot can then take that and say, well, this is an expressive name. I bet he wants the matched words. And so it uses the string R package to subset, uses another function I've defined called limit words, and then applies the regex against that. We can basically read this as subset the entire database of words to only words that are four characters long and are possible to match underscore act. So you might think of like back, lack, whack, all these different things that match that. And so this gives me my subset of matched words that we can continue working with. But importantly, while we've been writing lots of comments above, we've got more context built up. And again, Copilot's reading the entire script from top to bottom. It's not just relying on what you have here. To use the expressive names a bit more, I can write a little bit of being specific about the comments and what I'm trying to do to get the top 50 most likely words. And then I start typing top underscore words and it gives me a function that applies that matched words that I just defined. It basically rolls that into a function and then does a whole bunch of different steps to basically apply the splitting of these characters, scoring them around which ones are most common in the English language, sending a name, sorting them, finding unique words, and then returning the head or the top 50, which is the default value for this function it's created. So again, these are simpler problems, but they're not trivial in the sense of like this is a good amount of code that has been predicted out. And without using any comments, I might do something like, oh, I want to get the letters from blank and to start defining that as a function. And it gives me, hey, for all the possible words that are there, just return the letters that would be in the place of the blank empty letter. And then I can use that to say, okay, what are the horizontal words that we're predicting? And at this point, I've really solved most of the problem. And I've used co-pilot along with comments and a very small amount of my own code to solve this big problem. So overall, I'll wrap this into a function called guess keyword and then use it for a specific date, in this case, one month after August 9th, which was the first time I really was playing with keyword. And it says, hey, the keyword is one of the following words, recipe or re-pipe. And as much as I love pipes, I'm a tidyverse fan, I love that base R has its own pipe now. I don't know if re-pipe is a real word, but it's in my database.  And so it took all of these words, guest, the possible letters that were there, and then limited the guesses to ones that actually spelled a horizontal word. So this was kind of a fun problem. I played around, it was low stakes, if I messed up, fine. But I was really just trying to see how far I could get with just trying to prompt and minimal use of my own code. You can kind of think of these comments as setting the intent of what you're trying to do, providing this context, and almost like describing pseudocode that you want to write out. I do have a link out to the full transcript, or you can imagine the full thought process as I went through this in a raw R script. And then I also have a link out to the full guess keyword function, if you want to try it out with other kind of examples with keyword. So welcome to take a look at that. So while keyword is fun and solving problems with co-pilot is fun, ultimately there were times that I got a little bit stuck in terms of the problem was very broad and I needed to kind of like dive into the problem a little bit differently. Again, the best way to solve these problems if you're trying to get enhancements or help from co-pilot is to add a bit more context, do more comments, do more code, do more in your script. So add more context, follow that protocol of simple, specific, and use comments, S2C. Break down the problem into simpler problems, solving a very specific task, and use comments to help describe what you're trying to do or get. Another way to work with this is prompt again in a different way. So you can imagine that if it's the top level, if I'm trying to write a function, typing out the name of a function might be helpful beyond just using a comment, or from trying to add a function into like a deep layer pipeline, I might write an inline comment to help scope the problem or prompt it in a specific way. And these adding of top level, meaning like at the farthest left or inline comments to your other code is a great way of again codifying or writing down what your intent is for your script or for your problem that you're working on. And ultimately you need to build off your own momentum, right? Like you're going to write some of your own code.  It's helping you be a little bit faster or solve problems that you don't necessarily have all the answers to, and it can kind of guide you in a direction. And maybe sometimes you turn off copilot for a bit, right? Like sometimes I'm like, I'm in a flow state. I know exactly what I'm trying to do. I don't want copilot for right now. But then when I get stuck, I can turn copilot back on. So in our studio there's a command palette or what's called command shift P or control shift P on Windows that allows you to open up this command palette and you can turn copilot on or off really, really quickly. And ultimately, don't forget that the goal of what we're trying to do here is provide better context again with our simple, specific and use comments to get closer to the intent of what we want to do and get a better output. So we're not done yet, but I just wanted to say we solved this problem. We've talked a little bit about getting stuck. And so let's keep going with these ideas. And ultimately what this means is there's more than one way to generate text, right? There's ghost text, which is really cool. You provide like a little comment. You start typing out the name of a function, and it gives you a nice clean function. So calculate the circumference of a circle. And you can say, well, if you supply me the radius, I can give you two times high times the radius, and here's your function for calculating circumference. But maybe you want to ask a question. Copilot's really good at generating code. Not great for answering questions because it's not really intended to be used that way. So maybe you want to ask a question of something like chat GPT. Or maybe you want to say, I got stuck with an error. Explain this error to me. So chatter or the chat R package is an R package as an interface to a bunch of chat style APIs or models. So you can think of like chat GPT from open AI is a very common tool for chat bots or chat style, large language models or generative AI tools. But there's many different types of these. What chatter provides is a way to call it from our code and interact with these. Or to actually have a chat style interface in our studio via the viewer pane. So here I might say, how do you calculate the circumference of a circle? And rather than just giving me a two line function, it says, hey, to calculate the circumference of a circle, you can use this formula. And then it shows me how to do this with R code. So you can approach the problem in a couple of different ways and both types of tools are helpful in their own right. With chat GPT, there are different plans. You will have to sign up for an account. But there are, again, open source models. You can run it like your own laptop. And chatter can also help you run those models locally and interface with them. So the chatter R package. Again, I like using it as the chatter chatter app, which allows me to call it and display it in the viewer pane of our studio. And so this allows you to not only can use co-pilot for generating code, but you can ask questions or get answers back to these problems you're trying to solve. And you can use that to, again, help you be a better coder, even if you don't want the predictive text inside our studio. Chatter does something really cool in that it's doing what we call enriched requests. So I don't want to go too deep into all of this, but you can load the library chatter. You can attach some data sets, maybe empty cars or the iris data set. And then you can say, hey, send a request out to chatter. Or in this case, to send it to chat GPT with the GPT 3.5 turbo model. So this is what it actually sends across as a prompt or as an ask to the model.  Use these books, so tidy modeling with R or R for data science. Use some tidyverse packages or the tidy models package. And a couple other things to say limit the response to make it a little bit more efficient to use. And then it would inject your actual question here, but enriched with the rest of this context that is always making your questions better for doing R related tasks. So ultimately, when you send a question through chatter to one of these back end models, yeah, you have the question, which is the actual thing you're trying to solve. But in addition to your question, it's enriched with the path to data files, the data frames you have loaded in the environment, some additional prompts like use these packages or use these books, as well as the chat history, if you're using chat GPT, of what you've asked before. So it has all this context that it can use to submit to the large language model and then give you a nice response back in your IDE to actually solve problems for you. So that's kind of a summary of the couple different models you can use in our studio. You have chat GPT style chat interfaces with chatter. You have GitHub co-pilots available inside our studio for ghost text. And again, if we want to be successful with these tools, we want to follow our simple, specific and use comments or S2C. Importantly, GitHub co-pilot is an optional integration. So if you don't want to use it, you don't have to use it. And it's available as a preview feature, essentially like a public beta in the 2023.09 release of our studio and workbench. So this is available. You can enable it if you want to, and you will need a subscription to activate it. If you have feedback or you've run into bugs using co-pilot, you can open up a GitHub issue on our studio repo. And don't forget about the chatter package if you want to do more of that chat style interface with either remote APIs or even locally hosted models such as Lama. And if you have other backends, you can always open up an issue to ask for, how do you interact with that? So to kind of close out and then we'll get into some live examples, and I'll show you a little bit about how it works inside our studio, you know, I've got a couple of images of different co-pilots you might have.  And these are all generated with an AI tool called mid-journey. So that's the end of the slide. I do have some other slides we can get into if people have questions. But just briefly, I do want to show a couple examples of actually using co-pilot inside our studio. So importantly, I'm going to go in here, I've got co-pilot loaded and I've got our studio loaded here. I'm going to start a background chatter app, which is again that R package for running a large language model interface inside of our studio. So now here in the viewer pane, I have a place to ask questions. For chatter app, it will run as a background job if you have that set. So I have it set to run in the background so I can still use my console to do other things without interrupting the model or the model interrupting my console. So here I have a couple of kind of open-ended tasks that I want to work with and I'm going to use co-pilot to initially solve them and then ask maybe a question or two of chatter. So here I have kind of a base example of how can I repeat common tasks with co-pilot. So maybe I'm subsetting a bunch of data or vectors and I'm trying to grab them one by one. So I have this empty car six-cylinder, which takes the empty cars data frame, subset it to say, oh, only find the rows where cylinder is equal to six. But then maybe I want to go to the next one and say empty cars eight and see what does it give me. And it says, oh, okay. Well, you probably want the same thing but for eight cylinders. And then let's see what else it gives me. I say empty cars four cylinders and it gives me the four cylinder ones. So in this case, this is probably not necessarily best practice, but it's helped me get multiple repeats or kind of speed up my ability to do some of this repeat code. But if you look at this, this is really 99% the same code over and over. Really the only thing that's changing is I'm changing the rows I want to look at in the name of the data frame. So I might say, okay, well, thanks for giving me that, but convert it to a function, right? So let's take that same thing and let's say empty cars cylinder. And now I started typing that and says, okay, function data frame cylinder. So let's see what it does for that. I'll execute it. I'll do empty cars cylinder. We'll do empty cars and in autocompletes, I probably want to use the sixth cylinder. If I do that and execute it, it gives me just the rows that match the sixth cylinder. So every single one of these rows is six cylinder. So you can imagine that, yeah, sure, it can help you rewrite boilerplate code. But more importantly, it can take existing examples and help convert that to a function. Now, the next thing I do whenever I write functions is maybe I want to write some tests. So I might do something like library test that. I'll load the test that library and this will help me write some of these tests. So I'll say, okay, write a test for that function with test that. And it gives me this output of test underscore that empty car cylinders works. This is the function I have. So let's see what it gives me. It's giving me an expect equal. It's saying the number of rows. So let's look at this. Number of rows of empty car cylinder should be seven. And it actually guessed right. Importantly, it's not doing math here. But you can imagine there's probably lots of examples of empty cars in the training data. So it's actually really good at solving those problems. So let's just execute that. And it gave me a passing test pretty much immediately. Well, this is all working really nicely. And I've kind of chosen simple problems. I hope you're seeing some of the possibility here. Again, like, oh, I started with this script or someone handed me off this script. It's like 30 lines of repeat code. Let's roll that into a function. I also want to make sure because I'm following best practices that I can test it. And let's test that. And even if the number was wrong here, I could go in and edit it. And it's given me useful tests or useful structure of a test. So I might want to write a more complex function as opposed to these little empty cars. So here, let's see, create a my summary function that takes a data frame and call them name as arguments, as well as a logical argument for whether to include any values and a summarizing function as an argument and use the embracing operator to pass the summarizing column. Now, Embracer or the embracing operator, these double brackets here are a concept in tidyverse or are laying of referencing bare column names. So I might do something like my summary, let's start typing that out. And it gives me this. Let's see if this works. So my summary, my summary, empty cars, MPG, and then it completes the rest of it. And it says, oh, well, MPG was not found. So it did not give me a working example in this case, right? We ran into our first problem of it, hey, here's a response, but it's not actually a valid response. So let's try that again. We can delete it. It doesn't matter. I can try again. So my summary and function. Let's see what it says. And it's still prompting me with this data frame column. So it's trying to pass forward that column. Now I've got these examples up above where it's got these things that might be dirtying up the environment. So maybe I don't want this bad code up above. Maybe I want to delete this and try once again. So let's do my, let's first off, let's remove my summary because I don't want that function. Now I don't have the my summary defined and let's also remove empty cars cylinder. Now I don't have any functions to find in my environment. And I can say let's try one more time and then we'll keep going if we can't get it. But my summary equals, ah, now this is looking better. So here we're actually using the embracing operator. So we're going to accept this and it says take a data frame, summarize it. We're using a cross, which I don't think I really need, but it does have the embracing operator allowing me to pass a column in this example. So my summary, empty cars, MPG, and the function we're going to use is mean. And ah, it would probably be useful if I loaded the dplyr package. And let's see what it says. The dot dot dot arguments of a cross is deprecated. So let's just drop across and see what it gives us now. So this is the process of where things can go a little bit awry. OK, so now what I've done is deleted part of the response and said, well, most of this is right, but I actually want you to give me this a different way, like I've tried to prompt it or guide it in a different direction by deleting part of the code and saying, well, most of this is right, but give me this rest of it so I can accept that. So now let's see. I need a closing parentheses there. Let's try running that again. And now it's working, right? So now I got a tidy eval column that gives me back the empty cars data set summarized for the mean of miles per gallon.  So ultimately, like this is part of the life process, right? Like it's non deterministic. I can't always get it to give me what I want, but it can help guide me down a path and then I can help guide it down the path I wanted to go. So ultimately, we spent a bit more time on that example because it kind of went a little awry, but let's just for fun see if we can test that. So we've already got tests that loaded, but just in case we'll load library test that and test, let's see if it generates a response. It's thinking and now it gives me tests that my summary works. So here, let's see, first off, we'll just run it and says stop if needed. Names for target but not for current. OK, let's just run one example and see what it gives us. List. OK, so the short of the answer is if I look at this, it gave me a useful output, but it's returning it as data frame versus a vector or as a single value. So again, this test is actually pretty good, but we would need to pull the data out. And now let's try that. Pull and one more pull. So now we're getting a vector back instead of a data frame. And now I actually have a passing test that was created very quickly. Overall, it's again, you can see I'm injecting myself a little bit. I'm accepting what it gives me, looking at the errors it's prompting and saying, where can we go? So copilot's pretty fun. It was nice to kind of go through some examples, but I can also say, you know, what is the embracing operator? So maybe I say, what even is the embracing operator in the tidyverse and see what it says? The embracing operator in the tidyverse is used for nonstandard evaluation. It allows you to pass a variable expression as an argument without evaluating it immediately. And then it gives me an example of how I could use this. And if we look back at my function, this looks really close of it allows me to do this filter column equal to value. Now, importantly, this has multiple uses of the embracing operator as opposed to one. And so it's a little bit different than my example that just repeated column twice. But same kind of idea of it explains it, gives me an example and I can work with it. And maybe this is useful or maybe I could ask it like, what is what do these errors mean? Like it's saying mode list equals numeric, what does it actually mean? I could ask it to explain this error. So explain this error and let's ask it and see what it does with that. It's giving me the two parts of what the error actually is. So it tells me, A, that it's failing and B, what modes list equals numeric. So it's saying that the results are different. So it's actually expecting a numeric value, but it's returning a list. So help you guide and interpret some of these errors you might be seeing. So yeah, so this is kind of the different ways you might use it. And again, this was very quick, just kind of going through some examples. But you could see how co-pile is useful for kind of quickly iterating on your code, but then if you hit a problem, you might need to re-engineer it or re-ask the question or the problem you're trying to solve. And then with something like a chat interface, you can use kind of basic syntax and kind of real questions you're asking and get responses back to them. With that, we're at about the 50 minute mark. So I want to pause and see if there's any questions. I see a couple of questions, I think here from Peter and then one question from Lubbock that I'll answer. And if you do have other questions, you can ask them in the Q&A section here on Zoom or in the chat. So there's a question from earlier about what is a effectively scoped prompt? So if I look back here in my slides, so in this slide, there's this idea of saying, hey, how can I provide a scoped and specific prompt? In this case, that's this S2C, simple, specific, scoped and comments. So scoping it or specific, meaning this is what I'm trying to solve right here. So sure, there's this other context of I have a probabilities vector. I have a vector of numbers that I'm going to eventually use. But what I'm trying to do in line nine is return a function to calculate the mode of a vector or create a function called mode. And so this scoped and specific prompt or basically this very specific task to solve was solved in line nine, even though this additional context is helpful. We're just trying to do this right here. So that's where I really like using comments to help break down the problem. So I don't go in a weird direction. There's another question about is it helpful to think of working with co-pilot as a bit like writing pseudocode? Absolutely. And if you look at some of the prompts I gave or the context I provided, I did provide pseudocode. So I said here in line five, using glue, create a URL that matches this string. And because I provided the string, that's what was used in the actual code. It's sped out. So again, I don't have to put this just into my script. I could put into a comment and then that kind of pseudocode along with this description of the problem can be built out into the function I'm writing. It's also helpful for me, like even if I didn't use co-pilot, just writing down and getting it out of my head. So if I pause, go away and come back to solve the problem, I can actually keep working with it. And then there's a question about if I get stuck, how does co-pilot do as a debugger? I hope you saw a couple of ways of like how I did get stuck and I could change a few things, try and restart the task, or in some cases, I had context up above that was really bad. Like I didn't want to write code like this. So maybe once I've converted it over, I can just delete that section. Right. Like I don't have to keep bad code if I want to use it. And so you can also use a chat style interface to actually ask a question of like, explain this error to me. The question in the chat was what training data or type of training data is co-pilot trained on? So that's kind of up to the co-pilot group. So again, co-pilot is a third party integration to our studio. We're not doing anything to actually train it or fine tune it. It's just kind of whatever you're getting back from co-pilot. But it was trained on billions of example of code and some text. So again, the primary purpose of co-pilot is to generate code, but it will actually generate text or comments or other things. And you can even use it inside something like a Cordo document to generate code or text. So I might say today we are talking about co-pilot, co-pilot is and I wait for a second. I wait for another second. And of course, now I'm stressing it out to say to do something. And let's delete that co-pilot is a tool that uses machine learning to help you write code. So it gave me back a lot of text. So this is all one line, but that's why it is taking a little while. This is generating dozens and dozens of words. So this explains what co-pilot is and kind of how it was trained and what the open AI codex is, but then just as easily, I can say, use ggplot to create a scatterplot. So here run that and then let's see what it gives me. It gives me ggplot empty cars and now I have a graphic, but maybe in the same script, I'm like, well, I'm learning about Python too. So I want to use the plot nine library in Python to create a similar scatterplot. So I do something like from plot nine import ggplot. Plot nine is an implementation of graphics in Python that adheres to ggplot standards so I can execute this inside our studio. It will use reticulate to run Python code from R. And then it gives me this similar syntax you might be used to of ggplot. In this case, it's pulling from above. So let's try deleting this real quick and see what it does. Let's do ggplot waiting for response. So it's still generating our code because it saw it from before and I've loaded the ggplot library. So let's just try deleting this, deleting that and keep going forward. There we go. So in this case, we have code that looks like it did before. But this is I have to read in empty cars equals. But this is Python code. So read import and is this pd empty cars equals. All right. So there is an empty. There we go. There we go. And there. See if this works. Horsepower is not. Let's do empty cars. So we're kind of off the rails at this point just looking at some Python code. So let's do cylinder instead of that. So let's execute that, run it. And it's trying to find that is still in DERS. I've got a data set that's not quite empty cars at this point. And now I have a giant graphic in our studio of a Python library actually printing out some Python code for a graphic. So altogether played around that for a little bit and that's an example of using it inside a quarter document and it can do more than just generate the text, but also generate some of the outputs of inline text as well as code. I wonder if there's any other questions. I don't see any other questions in the chat, but happy to answer them. And we've got about five minutes left for today's session. Go back here. While I'm waiting around, I will just call out that if you go to docs.posit.co, there is a RStudio user guide. I'll drop this into the chat. There's the link to the RStudio user guide or you can just search for RStudio ID user guide. So if you do want to learn more about how to use tools like this, you can go to the tool section and you've guide, click on GitHub Copilot. And it talks about the process of using GitHub Copilot in our studio as well as interfaces like Chatter. And it walks through some examples of how to be productive and how to use it. And a lot of different things about what you can do with Copilot in our studio. Can these tools be used in Posit Cloud? So they can in the future, again, because GitHub Copilot is available in preview, we're expecting that it will be in general availability in December when we do another release. And so at that point, we'll probably enable it in Posit Cloud as well, because it'll be globally enabled for users. They'll still have to install things like the use their GitHub credentials and have a Copilot subscription. But generally, it's not available right now in our studio cloud, Posit Cloud. And I'm speculating here, Thomas, but in some ways I'm imagining Microsoft and OpenAI bought GitHub for the purpose of obtaining all those fabulous repos. So in a way, we may have all contributed to training. Yeah, there's, I believe, a large amount of the corpus of text that was used to train it came from GitHub. OpenAI is a partner to Microsoft, so they're very tightly kind of intertwined in how they work together. And so the GitHub Copilot is actually powered by OpenAI's Codex model and some of the other Azure based large language models from Microsoft are also powered from OpenAI. Well, Thomas, thank you very much. Yeah, this has been awesome. I think we've all learned a ton. And even for the folks who couldn't necessarily make it today, I think we'll learn a lot from the recording. So we will share that. Well, thanks again so much for having me. And go have fun with it. And if you run into any problems, please open up a GitHub issue. We'll do. Thanks a lot. Bye, folks.


that Roxbury's not on this list not because we forgot about them their building is in very good shape which we knew going into this merger the roof is good, the heat plant is good so there's not anything in the foreseeable future that we would put on this Capital Plan for Roxbury that doesn't mean we're not spending money we spent a decent amount of money on the kitchen this year we're going to spend a decent amount of money on the general fund for some bathroom renovation work and town hall work for those of you who aren't familiar the town hall is part of the school it's like the auditorium, cafeteria town hall it's the cappagymatorium town hall you will see that Main Street Middle School is on here a lot and that's because the bond took care of a lot of things at Union and at the high school there wasn't anything in the bond for Main Street the 260 that you see in FY20 is what we showed that we were going to do in FY20 last year so it's still there that's what we're going to do and Libby spoke about that a little bit earlier as far as when the bids are going to be going out the future year requirements don't get too excited about FY21 and out we've got time to look at that Andy Andrew's been here for what six months now, seven months so we're going to dig further into this but at least Andrew and the facilities folks have got a good picture of what some of the big requirements are out there and they're tracking them they might shift them around a little bit the cost might change a little bit but at least we have a plan that we can react to and adjust so now what you all have been waiting for the tax rates I wish I could say they're final they kind of are if you live in Roxbury but not for Montpelio this chart shows all the math behind it, you'll see the mathematical equations on the far left Equalized Pupils I've mentioned it several times is the big unknown if that number goes up by seven kids the tax rate in Montpelio drops by a penny so hopefully the Equalized Pupil count is low so we can set up and have better news going forward I said that Roxbury residents their tax rate is pretty much final and that is because and I'll stand up to show you this down here this adjusted residential rate really at some point is going to be one number for both Montpelio and Roxbury but by statute as long as we're getting this incentive Roxbury's rate can only drop by five percent so this times 95 percent is a dollar six five four it can't go any lower than that by statute so no matter I could cut a million dollars out of this budget that number can't change I could add a million dollars and it probably isn't going to be enough to make it go up any higher so Roxbury that's your Equalized Residential Rate this is the common level of appraisal that means Roxbury's tax rate is a dollar seven so it's about one point two cents higher than this current year that's less than a percentage that you can see it's five percent lower as far as what we could do with it but this is killing us this five percent drop in CLA can't do anything about that that's why this ends up being an increase instead of a decrease on the Montpelio side this number will change as other numbers change if this goes up by seven kids this number goes down by a penny so this number will still change the CLA is a known number now so that doesn't change but hopefully this number comes in higher which will drop that number in this number and we'll see as time goes by the Montpelio rate is an increase of six point four cents right now that's four percent that hopefully it'll be less CLA is obviously the big driver you can't really see it on this slide but if CLA was level as mentioned before Roxbury's rate would be nine point seven cents lower Montpelio's would be four point eight cents lower of that the six point four if you know so the tax rate impacts that last slide said four point eight is that by four the new CLA what is the CLA rate by four point eight cents the CLA because the CLA is ninety seven instead of a hundred eighty nine instead of ninety two that if I change this number to ninety two point three one the Montpelio tax rate would drop by four point eight cents so four point eight of the six point four is just because I had to change the CLA oh CLA driving four point eight cents the next slide I guess we shouldn't get too excited about from Montpelio because things are still changing but if you look at what the tax rate impacts if you look at how the tax rate impacts you based on your property value so if you have two hundred thousand dollars worth of property your tax rate would go up by one hundred twenty eight dollars as of right now Roxbury's tax rate is pretty much just on the CLA you can see their impact if they have a two hundred thousand dollar property their tax rate would go up twenty four dollars the last note is very important though this assumes that you're paying purely based on property and we know statewide about two-thirds of the people get income sensitivity adjustment so this is like the worst case scenario that you pay purely based on property value which most people don't and also assumes are equalized people but count doesn't get any better which hopefully it will but that's where we stand right now this chart shares the non-residential tax rates it's a statewide base rate divided by the common level of appraisal for the community so as the note says our budget has nothing to do with non-residential tax rates but we show it to you so let me mention it before when we built this year's budget we were thinking about FY20 now that we're building FY20's budget we're thinking about FY21, 22, 23 because we don't want crazy tax rate swings we want to make tax rates pretty sustainable so we know that the merger incentive is going to drop two cents every year to make up for that we would have to cut the budget by about 250 to 275,000 so that's in the back of our head how are we going to reduce costs or increase revenues or do something to help moderate that we know enrollment and staffing are both going to increase but if they both increase then spending for pupil shouldn't be impacted so that's pretty much level we know some expenditures are going to decrease which will help with that incentive issue one less grandparented group of kids every year means less tuition we know that we can probably cut back some more on facility projects to get back to the level that we were in FY18 we know transportation aid is going to increase so more revenues coming up in the future years and we know we don't have to deal with a $250,000 increase in bond expenses that we dealt with this year so bond expenditures are actually going to drop just a little bit but not much but they're not going to increase so those are some things that we know are coming in the future that we'll keep in mind the budget summary I don't really need to say too much about this there's still that big one unknown for Montpelier which is equalized pupils I mentioned what the increases are in the total budget the education spending as far as residential tax rates are concerned the increase for Montpelier still to be determined Roxbury is increasing a small amount but that's because of the CLA drop we're on the last slide okay so I started out with questions but I do want to jump real quick to changes first these are on here in case anybody has questions or anybody wants to make changes but the one change I want to point out that hasn't been talked about I took another snapshot of employees and their healthcare coverage and this time it was bad news we had people that were going up this time we have people that are going down we have some people that are going from two person to going on to their spouse so two person is zero and we have a couple of folks that are going from family coverage down to parent child coverage so just to let you know without you making me make any changes the next time I come back expenses are probably going to be about $48,000 lower in the healthcare area to get too excited about it $48,000 is about 3 tenths of a cent but that's one thing that I will be changing voluntarily and I'll turn it back over to you Jim to manage questions and talk about any other changes great so we have scheduled public comments so folks want to ask questions make comments 30 minutes 30 minutes right so that's what you said 30 minutes not 30 minutes for you look at the line 30 minutes my name is Nathan Souter I have two kids in the schools my wife teaches here thank you all for your service school board members I'm sure it's 9.30 for you just like it is for me the administrative staff who are here Andrew Grant and Libby who I know have been what I've heard and I can only imagine have been working extremely hard for the last six months and Grant before that so you may not hear that enough but thank you Libby just want to appreciate your humility earlier this evening which I think is important for the character trait that we all hope for in ourselves and then what is that I have no idea what that means and I think I love budgeting in organizations because I see it as an expression of our values and so my internal narrative is different from Grant's maybe or when he says I don't know what we've all been waiting for which is tax rates and I'm like no god damn it the moment I've been waiting for is how are we making our students better and how are we making this community better and I love that this board is organized around or the district is organized around the ends one of the outcomes and so this budget is about what's important to us is the pouring of interest when it came to community connections which is phenomenal I don't know how many other districts would see this kind of turnout for anything and then we just got to see these I'm not hearing any more of these graduates who are succeeding in their lives in tremendous ways of these great institutions having done community based learning and so then the downbeat for me hits and I wonder what's the front row of the graduates who are not at Stanford and where are they and the fourth graders who are in my son's class right now who was at 10 so nine years from now they will be in their first year of college will they be in their first year of who knows the work you do today the work you guys do is you put together this budget and put together your staff has I think a tremendous impact on this community and I see humans, adults in our world who struggle everyday who need tremendous amounts of support and I ask myself what can I be doing and I also ask what can we be doing collectively because that's Christmas future right we can see that what are we doing right now to sort of prevent that those states and so I want to you know I ask to Libby and to the team is how are we meeting the academic needs is one more social emotional learning person at the elementary school of almost 500 kids is that what we need is that anywhere near what we need I'm glad that we didn't just cut the person who's no longer eligible for federal title one funds right okay that's a moment of courage is it enough and I would say it's probably not enough I mean just looking at my daughter's classes and my son's classes and when we do the math on in the fifth grade if we have four teachers equaling 20 almost 25 almost 26 kids per class well if you do the math on that number and you add one more teacher you're still at 20 or 19 or something like that and it's actually not below the bottom of your window and that might equate to excellence as opposed to squeaky pass right um what is happening I watch what's happening in my son's class and how his class and his learning and the learning of his peers is impacted by students around him who need tremendous amounts of social emotional or academic and if we're if we're not and I've seen that in a number of different classes not just that class um so I'm mindful that we're not if we're if we're doing more not just helping the students with great need the students with greatest need theoretically are on IEP center getting more support but again if you're not in that super super low trunch what what support are you getting and if if we are being champions for those kids as a district if we are a district of privilege which is as evidence by the lack of funding that we're getting we no longer qualify for this stuff okay so we've got a lot of dough right we we are you know like where are the people who play flute and how can they help Alex make cc or whatever it becomes even better okay if that's our community like let's let's instead of the money went away we can't serve that those kids anymore no let's step up and serve those kids let's be courageous are not equal as people because they know it's not the same but our enrollment last year this year jumped 65 students according to the numbers in this display right and we're projecting equalized pupils flat for the purpose of this budget and we're saying oh it's only growing up 2% last year went up 8% last year went up 8% and our tax rate had almost no impact because we're gaining kids right like now is the time to be aggressive now is the time to like invest in the capacity to serve those high need kids to serve all of our community and I want to see you do that and I frankly am not you know I hear like well we're still getting our feet on the ground we're figuring out our systems I hear that argument academically I don't hear I don't feel it emotionally I feel like you know show me the action show me the movement like okay we're going to make a livable wage for our food service workers and we're going to stop trimming their hours by an you know an hour a week so they don't get health care good where's that behavior across the board so I just want to challenge the board and challenge the administration to think aggressively about how to make these kids lives amazing are they thriving are we excellent our folks who are behind grade level advancing to grade level our folks who are at grade level advancing you know accelerating beyond that I think that's what this community has the capacity to be doesn't matter whether you are a child of non-college background or if you're a child of two parents with advanced degrees everybody should be accelerating because we should have that capacity I'd like to see us show it that's it oh that's not it that's not it so great I know that you're making a committee to steer the administration as far as how to deal with community connections and I appreciate that that process has sort of slowed down and shifted a little bit my questions are is there I hear some of the urgency for why to jettison CC and try something else for next year I'm also hearing that that sounds pretty complicated and I wonder if the district might take a little bit deeper breath and say hey maybe we keep this little Frankenstein that doesn't work perfectly but works pretty well in some ways and maybe we add something to it that in you know the idea of becoming a hybrid and then moving to the new thing because transition as you guys will experience this year can be challenging and and I think that the RFP I share I think Steve's concern and perhaps others which is at the end of the day this is an administrative decision I think the administration heard about as clearly as they can hear about what the community expects and I didn't hear you actually resolve like direct the administration to do an RFP process so I'm hoping that that committee has the power to look at the options and say to do ministry of team well maybe we don't have to do that process but we can do something well that's it thanks for what you guys so I wanted to come and express my support for busing because I worked hard on that and I know you guys did too and I'm really excited to see it in the budget so thank you for listening to us I echo Suzanne's concern especially with the fifth grade class at mainstream middle school which has a very large class size a lot of social and emotional needs and one of the things I wondered about which is probably not feasible for this year but is the ability to have teachers flex their grades as they as it looks like over the next five years you're going to have a lot of class sizes where some are a lot smaller and others are bigger so is there an ability for a fourth grade teacher to become a first grade teacher or a first grade teacher to become a fifth grade teacher when that capacity arises and I know as a state employee at testifying in that capacity that would be a union issue so something to explore going forward because I know I think that would address some parental concerns that we have had especially with that particular class with maybe allowing some flexibility within the administration don't know if you've explored that one of the things I was wondering about from a budget perspective is around the main street middle school which often feels like a jail when you walk in there and I don't say that nicely but it really does it's not a very pleasant in terms of facilities or in terms of just overall feeling facility facilities yes no the staff that was not like just you walk in its concrete walls small windows just seems like a jails I'm wondering if there's a district plan for long-term capacity I'm looking at that building it isn't built into any of the plans but it should be Jim's praises right now hey look union is an older school but it's pretty I mean I've come here and I go this is gorgeous I go to mainstream middle school and I say what's wrong with our community it's a school that we threw the fifth grade into it I just I just wonder I as a taxpayer would be willing to spend some money to do that or endorse a bond or whatever you need but it would be nice as a community for us to start thinking about that long-term the other thing I wondered is around a staffing assessment and if you've done that having a consultancy firm come in talk more about that so a lot of times consultancy firms can come in and do long-term staffing assessments looking at organizations needs across the board thinking over the next five years what really makes sense from a standpoint you thought the fact that you don't have an HR coordinator astounded me for 200 employees that would be something they would highlight also looking at areas of redundancy or areas for efficiency but also looking at your future needs so we've heard a lot around teachers associate social support those are things that the district needs there's some great consultancy firms out there that do that there's also just the ability to do it on a local level so I just wondered you know are you making the decisions based solely on the class size ratios or are you also thinking and just the teachers needs or are you guys thinking of let's look at the system as a whole what do we want to achieve in five years what do we want our school to look like in five years and then how can we use vacancies or you know the changes in the administration that naturally happen to be able to build into that long-term plan more just an idea just just that that's all I have but I really did want to just stay to say thank you for including busing in the budget because it will make a huge difference to me my family I was here for your participation and staying she participated in some discussions with Libyan others too it's important there are lots of things turning the back of my head about you know it's just one of those unfortunate things you know walk into a school and to have that as the environment and I'm not saying it can be fixed overnight my 18-month-old is in school as a fifth grader or maybe to be a little bit of a different environment I have to say I taught in that school for ten years and it's been improved since then there you go but you know is that school really going to meet our community needs in 25 years and it takes 10 years to go to school right one thing some of us have been talking about is the sort of a larger community discussion and to build a consensus around what to do with our middle school there are these things that come up that are predicaments and we don't necessarily can't just proceed sometimes we can't proceed so we don't have a consensus and with the Washington Central going kind of being faced with the challenges of now kind of forced simplification kind of our approach or our conversation with them has to go unfold in terms of that kind of regional collaboration the building has always been a piece of that larger conversation about the use of buildings throughout Central Vermont and so at some point we need to have a community conversation to create a consensus around what we want to do and we just haven't done anything yet I would be happy to participate in that outside of the legislative it sounds like you already are anything else any board questions is the board happy with the budget is the board happy with the budget is this the way you would direct the administration to do anything different not yet I mean so far from the data that we've been able to see just the open question of the equalized duty that's just hanging out there Jim I think I just need one of the big things on the bill right now the question about whether we put whether we feel like this raise is on the edge and therefore we want to be putting some one time funds into that or not and it seems that that's something at this point being resistant to do because we know we're just kicking the can down the road for the next problem but that is one of the few things we could do in this budget we haven't said you know take busing out or any of those things yet but those kind of hard conversations at some point yeah I just wanted to respond Nathan some of the things you've talked about in terms of you and I have and we've talked about it have incredibly similar goals for Montpelier Roxbury schools in terms of I want to knock this place out of the park right I want to be the best in Vermont and have data to prove it to data to back it up I'm right there with you on that just so the community knows those first six months really in painstakingly with staff as I'm sure Morgan has come home and told you to having conversations of what do we believe for all kids around that's culture so we've been working on our culture and when I say this whole room is packed with teachers we do it once a month it's packed with teachers rather uncomfortably at times and we've truly been working on the idea of do we all believe that children will learn at high levels because of what we do with them every day and there's some debate about that amongst our staff and I'm not saying that as a knock on our staff that's just where we are right now so people might cross out the word will and say can which is a different connotation they can if they choose to right so if they come to school ready if they come to school with parents having read through them if they come to school with a certain socio-economic status or language then they sure they can learn so we're really having hard conversations right now about that piece I agree with you we do not have the staffing that we need in order to truly support all the learning and socio-emotional needs for our kids we absolutely it's glaringly obvious to me as an educator and as an administrator however I didn't ask to put that piece in the budget this year because the system also isn't in place to support we would be adding people to a broken system and so we really need to think I think we need to think about how do we first get our culture online that yeah we can do this we have the collective efficacy to do this we can we will we don't know necessarily how to do that but we're willing to put ourselves out there to do it and once we're there or we have the vast majority there then we can really think about let's ensure that the systems and structures that we have in place are truly working together let's ensure our professional learning communities are looking at the right stuff let's ensure that we have a common curriculum that's vertically aligned K-12 across all our buildings that we're truly knowing exactly what learning targets we're hitting let's ensure that we have all those pieces in place those are the kind of pieces that we're going to be working on this year and next year that don't cost money so we're thinking about how do we use our resources really well and once we have those things in place then we can start talking about let's look at our staffing this isn't addressing class size it's more of additional staffing in terms of interventionist in terms of instructional coaches we're one of the only districts in the state I think who doesn't have an instructional coach for our teachers so how are we looking at those pieces welcome to Montpellier Roxbury teacher new teacher this is what we believe in how we teach as everybody have a common definition of what that means and right now if I ask five different teachers I get five different answers so it's we're working on a lot of things about our narratives and around our systems and around our structures and yes I agree with you we're going to get there I promise we're going to get there we just have to we can't add people to a broken system and can I say that you've heard me say before just throwing money at it doesn't make it better and so I applaud Libby on trying to figure out how it is exactly we need to get better and then we can say this is what we need to spend to get there so thank you for that with respect I don't agree that these things must come be completely resolved before the next step is to and I also think that you just said oh those things aren't about money they're about time when I look at Morgan and her peers and their time spend and their mental presence and recently being asked to participate in I think it was math curriculum development you know half day of profession whatever and capacity may not always be money but if your your choice is to create subplans for a class where you're concerned about it about the management of that class and then learning progress on any given day in order to give yourself to this other multiple goal of professional learning professional learning communities that's about capacity whereas if things are well supported and under control in your classroom or in your grade level you may actually have the capacity to participate in that in this process and if if not every faculty member not every teacher is at the shared values position or shared belief system position shared skills system in terms of multi-tier etc how are we as a district providing them the capacity and support be that time be that professional level whatever that is to gain those skills and accelerate and make those changes perhaps sometimes with the system sometimes willingly but just you know we're in that capacity I'm not suggesting we put money on it Tina I'm suggesting we invest in good people as a new administrator I can imagine it would be tremendously valuable to you to be able to hire people in your own vision you're the one having a conversation as they come in as a teacher in the Rocksbury here's what I think there's a level of autocracy here the ability for you to bring people in in that role is extremely valuable and to convey that down the chain of command and to take participation up the chain of command so I encourage your investment I would reject this current budget and if I were the board I would say you just said out loud you do not have enough you don't have enough interventions of instructional coaches we're going to have 20 more equalized people than we have projected here that's three times seven you said seven was paid that's right we're going to have 20 more equalized people then that's my guess I can't even calculate that right now I'm just betting I'm watching what I'd be surprised if it's that but it's it's a crystal ball I'm asserting I think that we're being consistently being conserved in the way that we project our budgets in the last two years have been surprised as heck it's been different even between when it gets warned and put on a ballot to when it actually the ballot number last year the real tax impact because the number was old not your fault the legislature and the law changed and they changed the dollar yield right let's be aggressive let's be the community that has awesome schools let's do the best we can even though it's an imperfect system we're going to fix it while it's flying in the air that is what it is and I just want you to be more aggressive about it with respect does the district do strategic planning we are engaging that makes sense so at the end of the strategic planning will you publish like your and that would lead to the ask I'm guessing at that point yeah it determines the newest term from the agency of education it's improving planning using like lean or that type of method it changes yearly what they ask us to do when do you guys expect to have the strategic plan public we've been in the process relatively since we started we'll target it more this spring in February and March with leadership teams in each building and have the goal is to have the overall district vision and goal and then where each school comes into that where is each school so that we differentiate by school and thinking about what they really need to target and need so for instance if our goal is to create an effective multi-tiered system of support as a district which I have a good hunch because I'm a superintendent it will be then that one piece has several factors to it whereas Roxbury might need to work on something that the high school might necessarily not but the high school needs to work on something that so where do they see themselves right now we're building a common understanding of what that means administrative level so we're working on that piece right now and that will come out in the spring we have to have that in full place for our federal funding anyway which we can't get unless we have it in place that's great and it presumably is a multi-year strategic yes the dates January 2nd has a question mark because the budget calendar I gave you initially at the beginning of this was scheduled for January 9th meeting it's not a regularly scheduled meeting and I have a question mark there because I'm not sure you want to do it one of the reasons why is because I'm not sure I'm going to have an equalized pupil number by then so I'm not sure how much I'm going to be able to what new information I'm going to be able to give you it does put a little pressure though because January 16th when we go through this again and hopefully have the answers you'll probably need to approve we'll have to look at the calendar and the timelines for warnings but it may be that the 16th is the day that you'll have to approve the budget and approve the articles so we may have to do some real time stuff that night and I can have my budget file so that we can decide like as Steve mentioned at the last minute we see we're at you know 6.1 cents and we really want to get under 6 cents how much would we have to add we can figure that out so my gut feeling was that maybe we wouldn't do the January 9th since I don't think we'll have any more information but we will do the 16th and we'll try to be able to do everything we have to that night to be able to come to a resolution can you just say you think that you'll have to equalize per pupil numbers or equalize pupil numbers rather not per pupil by the 16th I hope so I've already gotten a rough draft and the rough draft was 30 kids less than what I just showed you on that slide which scares the dude but they are missing some key information they're missing a year's worth of ELL data that we're trying to sort through with them and so that swing right now it could be dramatic and right now we're on the low side but I do think that once the data gets in there depending on the statewide equalizing factor which is 94.27365 new 2 or something like that I don't know what they'd equalizing factor is going to be either but I would hope certainly that by January 16th we will get something from the AOE that they call frozen I would hope by then as well as six semester average but that's that's really not a big deal at all it's really that one yes to kind of my question the board yeah given the time frame as third presentation we've had you know my sense is that there's pretty high level of support with the board I think everyone shares Nathan's concern and vision but I also think yeah we've listened hard to Libby that her goal is to have capacity to deal with the equity issues but you know right now she's doing system evaluation she's looking at things and adding adding without knowing where to add to right now is not where we're at but I'd love to give a sense if people one if my read is right I think that would determine whether or not we want to something January 9 because we need to approve the 16th we're not going to have we're not going to be able to and if you've got the equalized people spending number you could generate the updates and send it out to the board before the 16th so we can look at it and that would be good there's nothing new by the night I don't know why we need to meet do we think that we might be interested I agree with not meeting on the 9th but do we think we might want to do if we thought we might make some changes on the 16th and we want to try and have another meeting and succession I don't know that would make sense a couple of days later early the following week do we have to do any Wednesday kind of thing I don't know or just have a look following it that way or a week later I don't know if it's going to be this so the 16th we think would be the absolute last day we'll have to look at what the 30 to 40 day window is I haven't done the math to figure it out yet but it's getting close on the 16th to March 5th or 5th is the 5th is town meetings 4th is information rooms 3 to 40 days from the 5th and that's the window is it has to go to the printer is it going to go in the city yes it'll be in the city in Montpeliers and Roxbury's articles so we'll have to figure out when their dates are typically we have to get it to them before the city council meeting that's the week after our meeting okay yeah so January 24th the window to post budget warning is January 24th to February 23rd so January 23rd is the following so I mean I just yeah we've seen this presentation three times it's a good presentation yeah we yeah it's just as excited everybody I know you have to like hold yourself back and go to this quick left I'm going to take the camera notice the solidifications yeah thank you it sounds like actually that we couldn't wrap it up we could and I don't see any fragility issues in the court needed me earlier because they're obviously there I mean I think ultimately maybe we don't need to have a conversation but is there a threshold at which we're concerned about that's kind of a I guess we can kind of a thing we don't want to get in there too much but that will be the driving I think every single star aligns yeah I mean if there's something scary about this I mean I this honestly is about is kind of I think it's I think it's steady I think it's building out a foundation I think there is some good building pieces in there honest initiatives yeah but yeah if we had a bad surprise with equalized pupils and it shot the tax rate to five percent I think at five percent think about it four percent yeah which yeah we'll cause consternation I think we have to be mindful of that but I also yeah this is not yeah this is this is a transition stabilizing budget where we're in new districts new administration that's looking at things yeah it's that four percent is not representing a really impressive expenditure unfortunately I feel like Libby is the first one to acknowledge this we don't really have the best of data right now to make the type of informed decisions that we want to make to better staff our districts yeah so we're not decisions that we want to make we just get our teacher data in uniform across all the rest schools yeah the reasons for it being the way it is make a lot of sense but I think if this was the budget where we were going for some major growth and major spending based on that analysis and we got a scary tax rate or an iffy tax rate then we had some discussions about how we're spending but yeah I mean we're kind of the point where if we start cutting to get to like a three or two percent it's got to be it's going to be a bare bone yeah at least I don't even if four percent I'm like I'm like what am I really getting at four percent increase like I'm not getting anything good you know really it's kind of like you know what I mean like I'm just saying from like hand grenades like coming in and looking at I'm like and I'm going to say it again but like give me some teachers give me something that touches the students you know what I mean I don't need another parking lot I need like a teacher I need someone like like what do I see in this budget like I don't see anything like of from like our community values truly being met and still increasing four percent I just want more teachers like I've been saying this for quite a long time and I think it has a huge impact and I don't think the cost is a lot like what would a teacher be like seventy five thousand not like including benefits I like the statistics to say where that teacher goes so I know you put where you put that no I think just in general like there's this bubble that comes through I'm watching this bubble come through and they have been ignored since I started complaining about this how many years ago so I mean my thought is I mean we put the teacher there like because it's still growing and people are still coming to our town like we have growth teachers not going to be utilized yeah I think we've gotten a lot the last couple years that we've been able to increase the budget fairly substantially and add some stuff with cloud hitting attacks really decreases the last couple years I think some of the numbers that have been working against the state aren't working for us to play they were previously which is why you're seeing four percent I think we've I think we have a really good opportunity right now with a new administration that is really I think taking a good systematic and structural look at how we're spending our money to make sure we're getting the most out of what we're spending where we need to build and keep spending and where maybe we're overspending we need to do some shifting around so I think that's what we're getting and I think that's exciting and then we are getting some exciting things we've been talking about four language for years and this is the first budget I've ever seen with a meaningful step that could lead to four languages at the elementary school I think that's big and we've been talking about things like busing which I think is a big equity and safety issue also for years and this budget is adding that so there are some key pieces that I've been hearing from the community that are being addressed here facility wise too we're really kind of falling them down and the capital plan is putting some structure in place to keep up with maintenance we did the BOD last year I think we started seeing some of the projects come to fruition so I think we're at a good place at a good building place I wish we could do it with a slightly better tax situation but I think we've got a good story to tell Is there a concern from voters that they're going to shoot down the budget? I guess I just to me as a mom, as a resident and as someone who approves of school budget and who has family who lives in Montpelier who also approves it I just wonder if that concern is realistic especially when it's and maybe I'm naive but we're talking about somewhere between you know 120 and $200 right for the average home in Montpelier per year they did vote no four years ago and I think it goes up the closer it gets to 5% I didn't know I mean I just to me the city budget also the city budget is on balance at the same time and the school budget has increased people look at it as a whole it's something you cannot do yeah and also I mean we have a very smart community it does have an aging community our our student enrollment is increasing but if you look at what student enrollment was in the early 90s when the town was relatively the same population we have a much older community yeah and more community members who are theoretically supportive of school but are as involved in schools when they start to see certain numbers yeah or getting to the point where they're you know they're retiring they're on fixed incomes you know they start to get certain numbers we do get to a point where we certainly can't take classes for granted we're in the oldest state in the country we have one of the oldest cities our population has actually been decline since 1960 by like 16% we just have a nice bump in the graphic who has kids so we've been able to enjoy a bump in kids but to actually have the growth that you were talking about Suzanne and this is something outside of our scope we really need more housing I was about to say we have aging communities and the only reason why we're getting more people here is because my neighbors are passing away and it's sad I wanted to bring chicken soup 75% of the houses on my street turned over and there are millennials with kids and it's true so that's good and there's also do you think that the $10,000 incentive to bring people to work remotely and move into the states could affect us at all hopefully moved mom pillar what is that quick we're pointing to the committee do we want the board to that or do we want the power that's my thought yeah I would say I would say would be or be okay okay okay okay okay okay okay