this thing is clear, right? You can hear me fine, okay? Thank you. All right, this afternoon, I hope you're all well. So, I am Hosein Abbas. That's me. I currently work as a director for Drupal practice at Accelerant. Basically, my job is to define best practices and oversee the entire, you know, whatever we do with Drupal at Accelerant. That's, that's my job. I'm also a contributor to the whole Drupal ecosystem since sometime now. I think about five years for Co.   So, we are going to talk about designing a CI CD systems, system for decoupled Drupal systems. And I'm going to, like, be as generic as possible, but, you know, specifically, I'll take examples from a system we built sometime back at Accelerant. I'll describe more about that. It was a decoupled system, Drupal 8 in the back end and Angular front end. And it was a multi-site, multi-cloud, multi-neuron. We'll get to that. So, let's start from the beginning.  So, before, before there was cloud, before there was cloud, you know, we had software being shipped on floppies and CDs and stuff like that, right?  And software could be shipped real time, but since there was this culture of shipping things on floppies and CDs, you know, with a specific time frame, that habit lingered.  Basically, it's a huge dramatic event. And it doesn't have to be that way, you know. I'm sure it's not a new thing, you know. People, people are very familiar with systems where deployments happen even 10 times a day, more than that even. So, let's talk about that. And let's start by talking about something which is very critical to every deployment, human beings. Well, this is not really surprising. It could be shocking, I know that, but it's not surprising. We are not consistent, you know, and that makes us unreliable. Why?  We get bored easily. Okay, we forget to follow instructions. And even if we have instructions and even if you remember to follow them, we can easily misinterpret what the instruction is trying to tell us. But also people, they're creative, you know, they can understand intent. There is, you know, if you don't have to, you know, people don't do exactly what they're told, but they can understand intent and do what is necessary, not what is told. They can solve complex problems that are creatively and people are awesome. Right?  But we need people to be able to solve things creatively. So, how do we, how do we make sure that people do the best job while recognizing that, you know, people get bored easily?  It's happened. So, how do we make sure those problems don't happen while allowing people to solve complex problems? And of course, you know, that's where we get to automation. So, how do we bridge these two aspects? You know, how do we automate those parts that are boring, that are repetitive and let people do the creative work? So, that's, you know, that's the promise of the DevOps era right now. And when I say DevOps, the whole revolution, you know, we in fact heard a lot today morning about this, you know, something to this effect. You know, what is DevOps? Is it a tool chain or is it a culture? Right? And we heard a lot about, you know, how DevOps is a culture today morning. And I happen to agree, you know, by the way, whatever we heard in keynote today morning, something we do practice, we live those practices at Accelerate. I like to think of DevOps as these three C's and I don't know if I read this somewhere, but you know, it's just something that I identify with. First thing is culture. DevOps primarily is about people all coming together and agreeing to follow one specific protocol, maybe. But it's that understanding, excuse me, it's that understanding that everybody is going, everybody understands all the steps of an entire software life cycle, that's development and deployment, the operations part, you know, of DevOps. Then it's collaboration. Like I said, you know, people need to talk to each other, people need to understand each other, everybody needs to be in the same team, same page, so to speak. When we are talking about how are we going to roll out a software artifact to the servers or wherever they need, that needs to be there. And continuous improvement. And we'll be talking about continuous again and again. This thing, I think this word appears almost everywhere whenever we talk about DevOps. So we'll talk about continuous integration. I think, you know, whatever we said about earlier and of course the topic of this session as well is about building a continuous integration pipeline. And these are the three main things I identify when I say continuous integration. These are the three main things. Of course, you can split it up, but basically you prepare the environment where you're going to do whatever. You're going to build your software and you're going to test it, that it works as expected. This is, I think, like the most basic nuts and bolts of continuous integration. And then we get to deployment. And that adds a step, sync deploy. Now, to make this work, to make this deployment work, you know, again, our objective here is to make deployments boring, that you don't have to think about it. So to make this work, you need to make sure that your tests have reasonable coverage. If, because it does not have coverage, if you're testing the wrong thing, you don't know the thing that you're building and automatically deploying if that thing is going to work. You don't know that. So if you want to put deployment in your, as a part of your CI pipeline, you need to make sure tests have reasonable coverage. And I don't mean test everything. I think we'll talk about what tests look like in the latest slide, but test the right thing. Those things that are important for your business, are they working? Realistically, we have, we discussed those three things earlier, but realistically, we do have a more elaborate pipeline in the CI chains. Nowadays, we don't really have an explicit repair stage. This is more from, you know, the Jenkins time of world, you know, very explicitly had to check out the repository. But nowadays, it's like most CI pipelines are CI tools. They would just, they would have, you would be starting with the repository already.  By the way, is there anyone here who does not understand static code checks just so that I understand? Okay, that's great. So static code checks, then you build the thing, test, deploy and acceptance tests. So before we get into tools, I would like this, take this opportunity if anyone has questions. So we spoke about the culture, the, you know, theories, so to speak, so far. And now we'll talk more about tools and the specific example that I mentioned earlier, the case for the decouple website. But before that, if there are any questions, I'd like to take them now. I mean, of course, at the end as well. All right. So I think any DevOps presentation worth its salt has a mention of Docker. It doesn't have to be Docker, any container, any containerization technology does, but Drupal is kind of ubiquitous.   Actually, I think the number today is around 3.2 million. This is a little slightly old slide. So there are 3.2 million images on Docker, Docker Hub. And that's just Docker Hub. You know, there are many other Docker registries out there. Like I said, many more elsewhere. And of course, you can create your own images that was, that's pretty basic. One of the Docker images that I use specifically with Drupal is this. That's me. Of course, I wrote it, so I would be using it. This is, this Docker image contains, you know, some of the code snips from the Coder module. You know, the, you might have used this PHP CS with Drupal standard or Drupal practice standard. It includes that. It includes Drupal secure snips, but it doesn't really work with the latest versions of PHP CS. So it's there, but it's not enabled by default. There is peer review.sh. Anyone here who wants a walkthrough of peer review, like familiar with peer review, anyone? Anyone not come across peer review before? I'm sorry. Have you come across or have you not come across? Okay. So peer review is kind of like a shell script, which basically runs PHP CS with those standards. So the idea is that, you know, whenever you write a module, a custom module or a concrete module, you would, you can, you can use this peer review script on that module and it will give you a list of all the issues that, you know, that it found with your module, mostly to do with the Drupal coding standard. But, you know, things were like Drupal practice and Drupal secure. They also highlight things that could be potential bugs or potential security vulnerabilities. It's, it's kind of a static code, static code analysis, you know, not, not PHP standard. It's like a more on a, on a more basic level. I'm happy to talk about this later. If you only can, you can catch up with me or you can just do a search for any of these peer review or PHP CS. Then there is Drupal check. Drupal check is an, is an wrapper around PHP standard. I'm forgetting the name. I'm sorry. The person who wrote it, Matt. Matt Glenn, he wrote this, NMD Matt. I remember the Twitter handle. I think that's how we recognize people in the online community by the Twitter handles and by D dot own names. But I think it's NMD Matt. I'm forgetting the name. I'm sorry. But yeah, it's a wrapper on PHP standard. And PHP standard is a more comprehensive static analysis tool. And I recommend you check that out even without Drupal check. You can use it with your regular PHP projects if you're using that. And this image is actually based on another image called, I'm not really sure how to pronounce that, jksda slash PHP QA. So it contains all the tools that that has, it combines it. And this image is by the way, it's, you know, it supports PHP 7.1 to 7.4. 7.1 is not supported. It's just there for like, you know, archival reasons. So this is about the image. So this image contains a lot of tools that you might want to run during your testing phase or static code phase. And like I said, you know, I maintain this image. So if you have any questions, please feel free to reach out to me later. And then there are CA tools themselves. These are four which I have used personally. Am I forgetting something from this list? Maybe, but like these are the four I have used most. Today, we are going to talk mainly about Jenkins, even though I think I've pretty much used all the other three more than Jenkins. But this project, we implemented the CI system with Jenkins. So we'll talk about that. But yeah, I think the most I've used is GitLab CI. Anyone has any preferences over here? The techniques that I mentioned are equivalent, you know, they work with any CI tool, there's nothing special, but we'll be talking about Jenkins today.  The first thing that you should aim for is developer ease. And the reason is simple that if it is not easy to run, people won't run it, people will stop looking at it. And I've seen that happen in my teams. If the CI, for example, if it runs in some corner and, you know, nobody even looks at it, nobody bothers with it. You know, things move on and like this very valuable tool is there, it's just there unused. It should be fast. If the developers are expected to wait like about 10 minutes, 20 minutes for each build, people get bored, you know, people, again, stop paying attention to that. And when they see later that okay, there was an error, there is a, they've already moved on to other things, you know, there's a context shift and people find it difficult to come back to this task. So it has to be fast. It should test the right thing. I mentioned this earlier. It does not have to, each CI run does not have to test each and everything. Okay, test the right thing. Because one of our concerns is the speed of the run as well. So you might want to, you might, you might decide that, okay, for every push on a feature branch, you would just be looking at like, you know, very basic tests like static code check tests and maybe just unit tests. But once you push to a staging branch or, you know, like before you're about to merge, you might want to run all the functional tests as well, which typically take more time. And you might even decide that there might be some testing like commonly called smoke testing and all that, which are, which take a lot of time. You might want to run that on a likely basis. It doesn't stop merging everything, but you still get daily feedback about what's happening. So again, there is no, there's no standard practice here. It's what works for your project, size of your project, the needs of your project, the size of the team and everything. And notifications. And this might seem like an odd thing, you know, odd thing over here, but it's actually very relevant because if, if there are more notifications, it's very, very easy to overlook that there is a CA test running somewhere. Tests and all this deployment and everything that it's actually running somewhere. So we use Slack internally, it was, it was very obvious that we just put in a Slack plugin and whatever happens in the build, it gets sent to Slack where the team is actually working and they see if they're near us, they see it immediately. So I'll talk about a bit about our experience with Jenkins. The developer experience is not that great and I'm sure Jenkins is changing that now with its, again, forgot the name of the revamped they are working on right now. Yeah, yeah, yeah. Blue Ocean. That's right. Blue Ocean. So we didn't use that. We used the mainstream version of Jenkins and the developer experience is not that great as in for someone who wants to configure the pipeline. Like I said, I have experience with the other CA tools and I like everything, the entire CA configuration to live within the repository itself, like GitLab, CI.yaml, or Circle, CI.yaml file, something like that. So we did something like that. Jenkins, of course, it does support pipeline input using some plugins and the cool thing about that is that the pipeline can be written using Groovy, the Groovy language and that actually makes it more powerful than the other CA tools I've used because the other CA pipelines are just declarative and their Jenkins file can be declarative as well, but you can actually write it as a script. Third-party support, Jenkins has been around for a long time, so third-party support is pretty good. Integration with our workflow, again, because we had plugins for everything that we needed, the integration also worked out. It is customizable and it is secure. Security comes in, I mean, of course, security comes in at the level of locking down your builds, but also at the level of how you pass things like secrets to your application, to your build process. So in this case, we needed to pass in AWS keys and Aliyun keys. Aliyun is like an AWS equivalent for Alibaba Cloud, so we need to pass those keys and many other things, like basically the secret management and Jenkins has its own secret management layer, which is, I mean, that can be called, that can be extensible, but again, the one that comes with Jenkins is pretty good too. Now that is Jenkins. Our case was with Decapal Drupal. So when we needed, when we went about planning our pipeline, we had to consider these that this was, like I said, this was a multi-site architecture. We had five, I think later on we had one more six Angular websites, only one backend. So there were multiple websites, but it was also on a single backend, typical multi-site architecture. Then we had, because we have all these repositories, we wanted to reuse code. So we had some more repositories for storing infrastructure-related code. So after this session at 4pm, I'm going to talk about Terraform as well. Again, the same project, but how we handle the infrastructure side of things. So we had repositories which defined the entire infrastructure as a Terraform module and ability to share all of this configuration. We needed that. So the other CI tools that we commonly use, it's not very simple to mix and match different repositories, but since Jenkins has kind of programmatic in nature, it was straightforward, how do we pull in common pieces of code, libraries, so to speak. And again, I'll come to some examples. This is, I don't know if it's a little blurred, but I think it's visible. So this was our CI workflow and every time there is a push, a developer pushes some code, we used GitLab.  And we configured it to run in all branches, but deployment only happened on certain branches. So a few things. The back end lived on Acquia servers. Are you familiar with Acquia Site Factory, by any chance? It's an Acquia product, allows you to build a spin up additional multi-sites, you know, using the UI. So we had to deploy to Acquia Site Factory for the back end. And for the front end, we deployed front end application, well, not through Terraform, precisely. We deployed it using AWS and Allusion's own tools, but we created the infrastructure using Terraform. And in the initial stages that happened for each CI push. And the reason for that was, like I said, there were five different websites in the beginning. And each website, some of them could go to multiple clouds on both AWS and Allusion. And for each website, you would have four different environments, a production environment, staging and developer and testing environment.  And that changed. Initially, we created a lot, you know, we identified what work, what didn't work and we changed. So we just put Terraform in our pipeline, so that whenever we deploy a particular environment, Terraform would run and it would update the environment. And like, you know, we'll talk about Terraform in the next session at 4pm. Eventually, the implementation matured and we didn't have to write Terraform, so we just removed that part. We just left the deployment part and that actual pushing of files from, you know, the build artifact to AWS or Allusion. Like the deployment was basically moved to S3, AWS S3 or Allusion OSS. It's the equivalent of S3. And yeah, all the steps used to happen using Docker. The Docker server actually lived on another machine, so that's not a very big deal. It's Docker is a server client architecture anyway. So all the tasks themselves have executed in Docker containers. We also had additional code quality checks through SonaCube server and then any notifications that needed to be sent, we would send that to Slack. And yeah, that was essentially our whole workflow. So this is what our pipeline looked like for Drupal backend. And it's very, you know, simple. We just check out which is similar to prepare. Very, very basic linting code quality checks. Code quality checks are just those PHP CS checks I mentioned earlier. Build is Composer install, pretty much, you know, that's the only thing that you need for Drupal. And then static analysis and that was PHP stand. So this happens after build because PHP stand needs the whole, all the dependencies installed. It cannot just work on the code you want to check. It actually builds an entire tree of all your code including dependencies. So it needs to run after build and then finally deploy. And this is yellow because that's a different story. We needed a lot of time to figure this out, figure this whole pipeline out, you know, and the team was already moving. And by the time this pipeline was effective, sorry, implemented, the team had already made some less than optimal decisions. And of course, we didn't want to break builds for that. So we, nothing serious, but you know, things like mostly like warnings that like, for example, cyclomatic complexity was 11 instead of our threshold, which was 10. So we let that go. We took all of those as technical debt issues for the latest print. And we just marked this builds as yellow. And, you know, Jenkins has like Jenkins is pretty solid. It gives you logs for all of these different stages. Linting was, it'll just check, you know, syntax errors in different PHP files, very, very basic. And then code quality checks go a little bit deeper once actual PHP CS tests. And then you have build, which is essentially composite, composite install, like I said. And that's about the backend. For front end, the pipeline is a little bit more elaborate. And one of the reasons is, like I said, we actually deployed to multiple clouds. So you see that, you know, we are actually, and multiple environments as well. So in cases like these, you know, we have actually first building the dev environment and deploying it, and then building the dev environment for AliU. And we need to do this twice because the architecture for application was completely server generated. So it got its data from a Drupal backend, right? And that URL needs to, that URL needed to be hard coded inside these files because these files are served from an S3. You know, there is no opportunity for modifying these files during runtime. It's just these HTML files which are directly cached on, even at a CDN level. So we had to generate these HTML files with the appropriate API endpoints hard coded. So we have to repeat our builds for, like, you know, we have to first build for AWS and then also build for AliU. And yeah, these are, like, you know, what an Angular build looks like, ng-build, the output for that. And yeah, we would, whatever output we got, we would sync it to the S3 bucket or whatever. So you can see the command AWS S3 sync. Very simple. We just copy the thing. And that was the CI, that's what the CI pipeline looks like. Are there any questions at this point? And I'm going to just, you know, look at certain sections of the code, Jenkins file code. But if you have any questions before then, yeah? Okay. So in this, I should say that, in this particular project, we didn't really aim for that, considering the timelines and everything. We didn't really aim for that complete end-to-end test pipeline. We attempted that, but timelines didn't allow us. But yeah, the way we were going to approach this was to, first of all, agreeing on a contract, front-end and back-end, and actually stubbing those contracts as files, sorry, as like specific JSON files, which we would use as pictures on both levels. So on both layers. So back in, on the back-end side, we would test the API and check if the API output is similar to what we're expecting from the fixture. And the front-end side, it will just use the fixture as it is and render the component. We wanted to achieve a reasonable coverage using this method. Unfortunately, we didn't manage to. Does that answer the question? Yeah, yeah, yeah. Okay. So it's a, I've done it before. Thank you. On the front-end, do you check accounts with multiple browsers? Multiple? Multiple browsers. I think that was not automated. I could be completely wrong about that, you know. It's been a while. But yeah, that test was not automated as much as you can remember. The browser tests. Any other questions? Okay. So this, now, this is Groovy code and just walk over some of the relevant sections over here. So the first thing that we do is check out. And like I said, in Jenkins, you specifically need to check out the repository that you want to use. So this line checks out the target repository. This check out a cm. But like I said, we were sharing some common infrastructure code. And this second block of code that you see the checkout and this whole, all this five, six lines that let us check out another repository. We just had additional Groovy files. So we split up our Groovy files and put all the common code in this repository. So we don't have to update each and every repository that way. We then, of course, like, you know, you can see over here in the last lines that we load the Slack.groovy. That we load for every script because Slack notifications are always there. And yeah, just do a little bit more configuration, you know, like setting up the Slack notifier and things like that. Yeah, we also said that, you know, in many cases, we didn't want to automatically deploy for some of the websites. So we just marked it as not like, you know, should deploy is false. This is how we use Docker. And again, so it works off a plugin, but in your Groovy file, this is how you would use it. You know, you would write some syntax like this, specify the image name. So we're actually building, you know, directly using an image. We're building an image, building a Docker file and going to tag it as Drupal build, build ID so that it doesn't get cached. And yeah, I mean, like, you know, when we directly want to use an image, we can just use the syntax, Docker.image. Like I said earlier, I mean, we are using this image Drupal QA PHP 7.1 because it was PHP 7.1 at that time. Site Factory Site Factory now support 7.2 I believe so we can upgrade but still 7.2. And, you know, similar other comments like PHP CS and everything. I mentioned that, you know, like we didn't really escalate certain things as errors. I think PHP MD was something that we chose that will keep tracking it, but not stop the bills for that. You know, because PHP MD reported things like like I gave an example earlier, cyclomatic complexity being like 11 or 12. And that was okay, you know, we could live with that for a while. So we just marked the bills as unstable. We would not stop the bill. Normally this would stop the bill, but you know, we have this try catch like structure very similar to what we have in PHP. So if this PHP MD command returns a non-zero exit code, the pipeline would stop. But because of try catch, it will still continue, but it will just mark the bill as yellow. Then I already kind of covered this same thing. This is how we handle failures using this try catch structure. And conditional deployment, you know, we didn't always deploy. We only deploy if we should be deploying like configured and only on certain branches, not all the branches. Again, this was carried over because of our infrastructure decision. Site factory only supports a limited number of environments, actually a cloud in general. So I think by default it's three. We got it extended to four for our needs. But only those four, so we had a branch mapping. This branch goes to this particular environment and only those branches should be deployed. And we just passed that to BLT. BLT does the deployment for the back end, for Drupal. So I'd like to leave you with this. DevOps is culture first and tools next. Again, I don't need to spend a lot of time talking about this because Kevin did it this morning. So if you have any questions, I'm happy to answer them. And you can always reach out to me on Twitter. Twitter is where I'm most active. And I'm pretty much, you can just search for Hussien Web. Okay, I think, you know, if you have any questions later, please feel free to reach out to me on Twitter. Thank you, everyone.


When I challenged him, he refused to be arrested. He ran. Teek took hold of him. He fought him through Teek off. He ran across about four lanes of traffic at Commercial and Broadway in the city of Vancouver. Teek never stopped pursuing him. He contacted him once in the middle of traffic. This suspect threw Teek off into the window of Starbucks. Teek continued to pursue, contacted him again. Once again, he was thrown off him. I was following behind him, of course, a ways back because Teek's a lot faster than I am. The suspect attempted to scale a 10-foot wall behind a 7-11 store.  While Teek was attached to him, the suspect ran at me. I had my firearm drawn, which didn't deter the suspect at all. I just managed to holster my firearm as the suspect ran into me and then the fight was on. Teek bit me numerous times. The pile fell on top of Teek. He came off of me and reattached back onto the suspect. And ultimately, his tenacity was the difference in the arrest. He deserves more recognition than I do, 100 times, very much so. They do it without question. They do it for the level working for us and the level working.


Physicality is always a limitation, isn't it? You can stretch it, but there is a limitation for physical body. Physical means limit, isn't it? Because the basis of physicality is a limited boundary, isn't it so? Only because there is a limited boundary, you can call this physical. If you take away a defined boundary that a physical form has, there is no such thing as physicality. That which is boundless is not physical, isn't it? So is there a boundary? Definitely there is. Nature has set up substantial limitations upon you, but what I am talking about is you are inventing new limitations. This is not necessary. As it is, nature has set up enough limitations upon you. You don't have to invent new limitations and make yourself much smaller than what you are. A human being is… densely, there is so much talk about God and heaven and nonsense, mainly because human beings have not realized the immensity of what it means to be human. That is the main problem. If you are experiencing the immensity of what it means to be human, you wouldn't be talking so much about other things. This is a grand thing by itself. It makes efficient your human being over the afternoon. Is it not a grand thing? But he is doing it unconsciously. If you can consciously convert efficient your human being, it is a phenomena, isn't it? Isn't it so? It is an impossible phenomena which all of you are performing but unconsciously.  It's a question. If you look at it, actually not even one percent of who you are has entered into your consciousness right now. If a few more percentage points enter, suddenly everything that you do looks like superhuman. Now people around me everyday witness things which they can't believe.   I keep reminding them this is not about being superhuman. This is about realizing being human is super. Now, let me tell you a story. A certain man got spiritual thirst. In those days when they got a spiritual thirst, they went into the forest. So he went into the jungle, found a nice rock for him to sit and meditate. He sat down, then he noticed a little away from him, there was a fox. Both its forelegs were severed, crippled fox. Probably in some trap, hunter's trap, both its legs gone. Nature is not kind to any kind of incapability. This taking care of incapable people is essentially a human... you know, it's a human society trait. In nature, if you are not capable of earning your own food, you're done. So here, there is a fox without both its forelegs, but looking healthy and well fed. He noticed this and he thought, how is this fox managing without legs? Then he sat down, he has to do his meditation. Om, he started. Om, Om, Om went on for some time. As the evening came, he heard the growl of a lion. The moment he heard, oh, Om went away and he ran up a tree and sat down. He forgot about the meditation.  And the fox ate this meat and the lion went away. This man thought, oh, this is a divine message. God is trying to say something to me. A crippled fox being fed by a ferocious lion. This is a miracle of miracles. God is sending a message to me. What's the message? What's the message? What's the message? He completely forgot about his meditation and started thinking, what is the message? Then he arrived at his own message. He said, oh, God is trying to tell me, in this miraculous forest, even a crippled fox is being fed by a ferocious lion. When this is so, you fool, you on the spiritual path, what are you thinking about food? Just sit there. It will anyway come to you.  Six seventh day, he's groaning for life, not able to move. Totally weakened, he was groaning. Death tors. A yogi was passing this way. He heard these noises. He came up to him and asked, what happened to you? Why are you like this? He said, oh, great yogi, please tell me, I got a divine message. I went by it and I became like this. Yogi asked, what happened? He said, here, look at that fox. Look at him. He is well fed. Every day this lion comes with a piece of meat and it feeds him. Don't you think this is a divine message? Please tell me, is this a divine message? The yogi said, for sure this is a divine message. But why did you choose to imitate a crippled fox rather than a generous lion? So this is a choice you have. If you're imitating a crippled fox, a generous lion looks like a miracle. It's not a miracle. It is doable. Yes, it is doable. Nothing miraculous about it. But there are two ways to look at it. One way is, everything is a miracle. Tell me, you put filth into the ground and mangoes come out of the tree, sweetness. The filth and the sweetness of the mangoes are they same? They are same. Isn't it so? Aren't they same? The food that you eat and what you do in your toilet the next day, they are same. Isn't it so? Yes or no? If you put that same filth into the field tomorrow, once again it becomes your food. Isn't it so? It is the same. But can you treat both of them the same way? No, you need discretion as to how to treat it. But they are same, isn't it? Everything filth into mangoes. Is this not a miracle? Making fish into a human being. Is this not a miracle? Yes or no? Everything is a miracle. That's one way of looking at life. Another way of looking at life is, nothing is a miracle. Everything is happening between cause and effect. If you are short-sighted enough not to be able to see the cause, you are only seeing the effect, then it is like this. If you are able to see both the cause and the effect, everything is explainable. Everything is repeatable. Everything is possible to make it happen. Now I am talking about a technology to make you into a miracle. But this is not a miracle. All technologies look like miracle, isn't it? Suppose you know nothing about electricity and the hall is dark right now and I tell you, you just watch it now. I will just touch this part of the wall and the hall will be flooded with light. And if I do it, you will bow down to me. Yes or no? Anything that you do not understand is a miracle for you, isn't it? Yes? Anything that you are unable to grasp is a miracle for you. Now I am going to pull out something from my pocket just a combination of plastic and metal. I am going to do this and talk to somebody in India or America or where you want. Is this a miracle or not? The problem is all of you have it. This is the problem. Only if I had it, you know, if I had a cell phone thousand years ago, I would have become God himself. The damn thing came to me too late. If I had a light bulb a thousand years ago, I could have become a God.  Technology has never come in time, you know. Anything that you do not understand is a miracle for you. And at the same time, is there any one thing that you truly understand? I want you to look at this. Do you understand this flower? Fully, do you? You may have studied botany for ten thousand years, but do you understand this flower fully? Do you understand a single atom in this existence? Do you? No? So everything is a miracle. If you look deep enough, everything is miraculous. On one level, everything is explainable. On another level, everything is miraculous. That's the beauty of life.  That's the beauty of existence, isn't it? Or you can be a fool who will draw conclusions about this flower and believe you know it. That's the difference. Everything about your life is like this, isn't it so? Yes? Everything about your life is like this. So it's miraculous and mundane at the same time. It is within reason and beyond reason at the same time. It is human and divine at the same time. You can play between the two. It's very beautiful. You can also become an animal, you know? Very easily human beings can behave like animals, isn't it? Because what is human is not established. You can freely seamlessly move from animal nature to human nature to divine nature and back again if you wish. It's very beautiful. Don't mess it up.


Good afternoon and welcome to the Green Mountain care board meeting. My name is Kevin Mullin the chair of the board and I'll call this meeting to order. The first item on the agenda is the executive director's report Susan Barrett.  We will be removing the agenda item of the 2021 update to the 2018 to 2022 health information exchange strategic plan and 2022 connectivity criteria with the Green Mountain care board staff recommendations and a potential vote. So we're taking that off of the agenda and that will be put on the agenda later this month. Any questions on that or we're good. We're good. Okay the next item is I wanted to announce to the board and to the public that the the Green Mountain care board has received an extension for the Act 159 section for sustainability reporting hospital sustainability reporting. As everyone knows the hospitals are are under immense pressure from COVID from workforce issues from deferred care issues. So we talked with the legislature the chairs of the health health care committee as well as the Senate health and welfare committee and they've extended an extension to us until February 1st of 2022 for that reporting. Are there any questions regarding that announcement. Just a quick question in light of all that's happening obviously with COVID and the incredible strain on our system and with this additional time does it make sense then to move our December 15th discussion of sustainability planning into January. It does. We can make that happen. I think that makes sense. Absolutely. I agree. I think it's given everything that's going on. It does make sense to push it to me as well. Okay we will update the monthly agenda to reflect that information. Thank you all. I do just want to announce that we have two ongoing special public comment periods. The one care Vermont FY 22 budget and certification. We have staff recommendations will be presented next week. So we're asking that public comment be submitted by today to be considered ahead of that presentation or by December 17th to be considered ahead of the potential Green Mountain Cure vote on the budget which is tentatively scheduled for December 22nd 2021. And then as I've mentioned several other times we have an ongoing public comment period regarding a subsequent all-payer model agreement. And that is information that we can share with our partners on on this agreement. Ian Backus who's here with us today at AHS as well as the governor's office as they're taking the lead on a potential subsequent agreement. And that is all I have to share today. I will turn it back to you chairmellon. Thank you Susan. The next item on the agenda are the minutes of Monday November 22nd. Is there a motion. So moved. It's been moved and seconded to approve the minutes of Monday November 22nd without any additions deletions or corrections. Is there any discussion. Hearing none. All those in favor of the motion please signify by saying aye. Aye. Any opposed signify by saying nay. Let the record show that the minutes were approved unanimously. And as everyone heard from Susan the agenda for today has changed and we will not be taking up the HIE strategic planning connectivity. So at this point I'm going to turn the meeting over to Sarah Kinsler who will tee up the discussion for the all-payer model discussions. Thank you Mr. Chair for the record this is Sarah Kinsler GMCB Director of Health Systems Policy and I'm joined by Ina Backus. And Ina actually is going to introduce us but I will I will get the materials projected on the screen while she does that. Good afternoon everyone and thank you for having us for this discussion this afternoon. As the board is aware Vermont is required by the all-payer accountable care organization model agreement to submit a proposal for a subsequent agreement by the end of performance year 4 which is the end of 2021. We're here today to recommend that Vermont propose a one-year extension of the current agreement with some key modifications that reflect the implementation improvement plan that was published last year. These modifications would include the inclusion of fixed perspective payments made by Medicare in the all-payer model agreement. Just like our Medicaid program makes fixed perspective payments we would like to propose that Medicare in a one-year extension make fixed perspective payments and provide specific guidance to critical access hospitals about how to participate in such a payment model in the prospective payment model. As a part of the extension proposal we would also like a key modification to include decoupling the Medicare investment in the blueprint for health and support and services at home program from the ACO benchmark. Instead of running the investment through the ACO where it interacts with risk corridors these dollars would run directly to the state of Vermont to allocate to these important population health improvement programs. A one-year extension will maintain the current performance framework for the all-payer model agreement. However the modifications I just mentioned are quite significant. Our implementation improvement plan was clear that more provider payments should be converting to fixed perspective payments instead of remaining fee for service and I know that that's been a focus of this board's discussions as well. This one-year extension will allow the state to more fully engage with providers, payers, advocates and Vermonters in developing a proposal for a longer term agreement renewal which would likely have a more typical time span of five years or six years as our current agreement includes. The opportunity for this type of engagement has been limited by COVID-19. As we pursue a longer term agreement beyond the one-year extension we want to think creatively about how to maximize Medicare's participation in value-based payment and in fixed perspective payment models and while our work with the Innovation Center does focus on how Medicare specifically can participate in state-based models we're also very focused on how to improve commercial payer participation in a longer term renewal. We're proposing the one-year extension to run through the end of 2023. We won't be proposing one-year extensions on an annual basis. This is not a proposal where we'll just look to make another one-year extension proposal. Again, we would be working towards a longer term renewal proposal for a more typical span of time. And today with this proposal we're looking for the board's endorsement to move forward in proposing a longer, excuse me, a one-year extension to CMMI. With this proposal we know that there will be an ensuing negotiation and that we will have to work with CMMI to arrive at what would be a potential final agreement for a longer term, excuse me, for a one-year extension. Now I'm going to turn it over to Sarah to walk through the proposal cover letter. Thank you so much. I'll join you at key points. Thank you, Ina. Thank you very much. So just to reiterate what Ina's kind of last point, this proposal that we are not before the board today to request approval of a one-year extension that we have negotiated, we are asking the board to endorse starting this process. So to put it in the simplest terms, the board and the public will both have another riot at the Apple in the event that we do propose, we do request a one-year extension and we do have those negotiations with CMMI. This will not be the last time that we are before you talking about this issue. We would be back with negotiated language which we would expect the board and the public to provide feedback on and eventually to request a board vote on that. So now I will walk us through the cover letter that staff have drafted, staff from the agency as well as board staff which we are proposing to send to CMMI to request this. So the first section of the letter really reiterates the points that Ina has already made about why we would seek a one-year extension rather than proposing a longer term subsequent agreement at this point. I will not read this out loud to you, nor will I go into depth on these, but we want to build on the things that we have learned and the things that we have learned based on the national experience as well to date. We want to ensure that we can thoroughly engage all stakeholders including payers, providers, advocates or monitors in developing a subsequent agreement proposal and COVID-19 has made that particularly challenging, especially for providers. And in addition, we have not been able to fully test the current model in 2020 and 2021 due to the COVID-19 public health emergency. So we believe that an additional year would allow us to more completely finish that test, noting that of course COVID-19 has not gone away or ended and will continue to impact the model and the way that we measure and evaluate the model. So in the materials which I believe are either posted or are about to be posted on our website and my apologies to the board and the public that you may not have these at your fingertips at the moment, we have included both this draft kind of proposed cover letter as well as a red line of the actual all-pair model agreement so that the board and the public and CMMI frankly can more easily see the specific changes we are proposing and the language that we are proposing with the red line that we have posted is in kind of the abridged legislative format. So it really focuses only on the areas in which we are proposing changes. And unless the board has any questions about kind of the introductory section, I will move on to describing the changes. All right, hearing none. Okay, thank you. Hearing none, the we have split the revisions into or the kind of proposal into three sections. The first are technical revisions. Those are updates to reflect the proposed extension year. So changing dates and performance years throughout as well as updates to targets. And the approach that we have taken is extending all of the performance year five targets out to a performance year six. So rather than kind of creating new targets or negotiating new targets, we're just recommending to extend and that goes for total cost of care, scale and quality and population health. Next, we have proposed technical revisions to reflect the amendment that had been negotiated between CMMI and the state of Vermont in 2019 to update quality measure specifications to reflect updates to national measure sets and to adjust some reporting deadlines to allow for more complete data and kind of reflect the reality of when we are able to produce reports based on data availability. These amendments went so far as to be approved by the board but they were never executed because this happened directly before the COVID-19 public health emergency. So these were amendments that were fully ready to go that we were never able to get signed because obviously our collective priorities shifted. Third, we have included some updates to language around Medicare payment programs to reflect that new Medicare payment models have become available in the time since the agreement was negotiated and signed. And also to note that CMMI is kind of phasing out the next generation ACL model as they continue to evolve their payment models. So we didn't want to have the agreement language tied to a program that was no longer active. The next generation ACL model was kind of the new the new big path that CMMI was taking at the time that the agreement was negotiated. But at this point, you know, we have collectively evolved. So those are the technical revisions that we have proposed unless there are questions related to the technical revisions. I won't move on to reporting hearing none. So there are three changes that we are proposing here. First, we are proposing to eliminate future payer differential reports. And this is because there have been changes to the process for developing the annual Medicare ACL total cost of care benchmark because of COVID-19. And the fact that we have used retrospective benchmarks for some years and that the benchmark process has changed just makes these reports significantly less useful. And so we have proposed to discontinue those. Secondly, we've proposed to reduce the number of remaining total cost of care reports to semiannual rather than producing them quarterly because the quarterly reports have had limited utility. And finally, we've proposed to eliminate the report related to Medicaid behavioral health and long-term services and supports and integrating that into total cost of care. And I'll let you speak a little bit more about that. In past discussions, including a town hall public forum meeting, we shared that it does not make sense to consider the inclusion of these Medicaid services for a limited extension of the current agreement rather it would make sense to consider these in alignment with any development of a proposal for a subsequent agreement and that these things be taken together particularly because a proposal for a subsequent agreement would likely feature different targets than we have today or potentially different targets than we have today. And so it makes sense to think about those two things together. Thank you, Ina. Any questions about the reporting changes that are proposed? All right, and finally, we've got a bucket which we are calling other changes but some of these are some of them the bigger ticket items actually, I think. So firstly, as Ina mentioned, there's a strong desire in the provider community for an unreconciled FPP payment model within the Vermont Medicare ACO initiative and the goals of the proposed changes are to indicate a collective commitment among Vermont and the federal signatories to design and offer an unreconciled FPP payment option in year six. The second bullet relates to the blueprint and SASH funding which Ina had also mentioned in her introduction. This proposes to move funding from an advanced shared savings model to likely a single source funding opportunity for the agency of human services. This is also how blueprint funds were moved from the federal government to the state in 2017, the first year of the model. And the goal here is really to preserve the current and historical federal investment in the blueprint and SASH with a reasonable annual growth rate while simplifying the flow of funds and kind of moving that out of the very complicated Medicare ACO initiative benchmark and shared savings and losses calculations. The third bullet is related to guidance for critical access hospitals, which Ina also touched on. We continue to seek further clarification and guidance related to participation by critical access hospitals in fixed prospective payment models including unreconciled fixed prospective payment models and how that could potentially impact their cost reports and Medicare reimbursement model. So that is also something that we have included in our red line. And then lastly, finally we propose to extend the waiver of scale target enforcement through the extension year that we received in a letter I believe in November or October. And we've done this by proposing to remove failure to achieve scale targets as a triggering event in sections six and 21 of the agreement. The state does not propose to change any of the reporting requirements included in the agreement and we would continue to report on scale as it is defined in the agreement as well as reporting alternative measures of scale that Green Mountain care board staff have developed and would be reported in performance year three which we think provides some more valuable information or additional valuable information I should say about the statewide scope of the model. That said, we just don't think that it makes sense to alter the targets at this point in the agreement or feel that that's productive. So rather than proposing to change the targets to something that we and the federal government agree are achievable, we would just like to continue to report and seek to make progress in that area. And those are the those are the proposed changes. And finally we've included a suggested timeline for the extension below which kind of compares the the current agreement to the suggested extension timeline. And that is all. Kevin I believe you're muted. Great questions for Sarah or Ina. This is Robin. I don't have a question but I do have a couple of thoughts that I'd like to share but I can hold it if you'd rather take questions first. No go ahead Robin. Okay great. I just wanted to say I I don't I personally don't see an alternative to requesting an extension just given the bandwidth necessary to focus on COVID-19 and AHS's necessary need to be really laser focused on all of the issues related to COVID-19. I think I personally would rather see something very simple as described here in an extension and really then allow our collective resources to be focused on what does the next agreement look like. I think trying to do too much while we're still in the middle of a pandemic will just not be productive or move us forward. I also like the approach of just living with the targets. We all know there are some major challenges with the scale targets but I can't emphasize enough having been through this before that renegotiating those targets is not quick or easy and and I don't quite frankly think it's worth the effort at this stage. We should just live with it knowing that there are problems with them and then we can focus our energies on what makes sense in terms of targets in the next agreement. I also think that you know certainly I think that we have heard in the past some public comment that appears to link the idea that if we were to pull out of the all-pair model that ACOs in Vermont would go away. I don't believe that that is the case. I think that's a misperception. I think the all-pair model allows Vermont to have the ability to work with Medicare to ensure that there's alignment between Medicare and our other healthcare reform initiatives in the state. Absent an agreement like we Maryland and Pennsylvania have with the feds we would certainly see I think additional Medicare only ACOs that are either region regional or national in scope coming into the state and certainly those there's no way for the state to prohibit that since Medicare is a national program. So I just wanted to make those comments about the extension. I think it's a good way to move forward and I'd like the approach of focusing on a couple of key things that we collectively recognize are important like the Medicare participation in unrecognized fixed payments and ensuring that the the blueprint and SASH dollars continue to support or continue to be supported from Medicare. So those were my comments. And thank you everyone for your work. Thank you Robin. Are there other board comments or questions. Yeah I have I think one quick one. I'm just in any situation like this there's two sides of the table where people we're presenting our ideas and things that we want to get done. And I'm just wondering if Eno or Sarah or any of the folks engaged here have any sense of any headwinds that we might hit at CMMI on any of these technical reporting or other issues that we're going to be presenting them. I don't I don't know of anything where we think we will get significant pushback CMMI at a staff level obviously has indicated to us at a staff level that this is something that they are very open to and that they think in particular given given the demands of COVID-19 on all parties is likely a I think a good path forward obviously none of that is committing any of the signatories to anything but that's kind of been the staff level consideration. I don't believe that any of the any of the areas that we've listed here will get significant pushback. Eno do you disagree. I don't disagree regarding pushback. I do think that it is important for us certainly in regards to the payment change to understand that the payment change is a significant undertaking for Medicare and that it does have technical aspects that are beyond the direct control of CMMI. And so they're in that regard again I don't expect pushback but I do think it's important that we are realistic that that is a very significant ask one that I think CMMI would like to explore with us but it has not been done before so I think we need to be realistic that we're trailblazing here. That's absolutely right. And I you know our experience with the prior negotiation and kind of implementation of our our current agreement suggested that the timeline for operationalizing major Medicare payment changes can be about 18 months. So so we know that this is challenging and while we are hopeful that this will will not take that long and that we'll be able to make significant progress there there are real barriers to you know to to to to changing changing the course of this this very big shift. So we will be working you know closely across the two agencies and with our federal partners to assess where where there may be issues. We are in a much better position to request this kind of a change because we do operate and have an agreement for the Vermont Medicare ACO initiative which you're very familiar with and that does advantage us significantly in making a request like this. One reason I ask that question is that I think during the hearing with the ACO the question was asked if CMMI were to approve unrecognized unrecognized payments today it would take about five months just to implement the mechanics of it. And so that kind of pushes us you know down the road where we don't even have that approval yet. And I asked the question to make certain that people's expectations aren't that all of this is going to happen in this intramur because it from just from a mechanical point of view and I think Sarah was making this point it can happen. The approval might happen but getting it up and running not so easy. Okay other board comments or questions. Yeah I just have a thank you for the hard work here and my question I guess revolves around a little bit of the timeline understanding that timeline a little bit more. The timeline for negotiation of this proposal how long does that take and then assuming that this proposal or some version of this proposal is accepted by CMMI and we do have the one year extension when given how long it takes to plan, engage stakeholders and negotiate a subsequent agreement when does that next planning start and what does that look like if you have thought about that at all. Just trying to understand the timelines here. And Sarah please jump in if you see otherwise I think we would like to see an expedited exchange with CMMI regarding the proposal for the one year extension so that we would negotiate on that proposal as in the very near term once it is submitted and hopefully bring that to conclusion with an agreed upon one year extension as soon as possible prior to the end of the current agreement term. I would like to see that happen significantly before the agreement term ends at the end of 22. With regard to the longer term a longer term proposal I think that we would like to be engaging on that soon with the board as well as with the public and my expectation is for that to be occurring in early 22 upon the new year. Okay great thank you. And this is something that I regretfully fully support and the reason why I regretfully fully support this proposal is that if I was able to not support it it would mean that we would not be overrun in our hospitals with COVID cases and ICU capacity problems and things like that but this is the reality where we had all hoped when the pandemic started that it would not have lasted as long as it has. And now I think we all know that we're gonna be living with this for a very long period of time and we have made great progress and that's due to our healthcare professionals who have done an amazing job and I think we have to be respectful and realize that they can't be at the table right now they have to be taking care of remoners. And so with that I fully support asking for an extension of the existing agreement. Sarah were you gonna present anything else or should I open it up for public comment? We were not planning to present anything else. The changes summarized in this cover letter really are fully reflective of all of the changes that we have included in the red line which by the way is now posted on our website and thank you to Kara who posted it and again Apologies that was not posted in advance but this really is comprehensive. So we do not have any other planned presentation. So anyone can go to the website and look at the red line agreement probably easier to follow it in the cover letter but the red line agreement will show the changes from the existing agreement. And so anyone who wishes to look at that and provide us with comment may do so but at this point I'm gonna open it up for public comment and see a hand raised from Susan Eranoff. Susan. Hi everyone, good afternoon. First of all, Ian and Sarah thank you so much for such a clear presentation and for posting the materials. I look forward to looking at them and of course I was really glad to see the Medicaid funded long-term services and supports issue addressed because that's just been hanging out there and so unresolved is to cause a lot of uncertainty in the long-term services world. My question has to do with Medicare Advantage plans and if and how that's gonna figure into the one-year extension and so request and so I haven't looked at the specific red lining. My understanding and please correct me if I'm wrong is that Ramoners with Medicare Advantage plans are not countable in the denominator are not attributable currently for the Medicare shared savings ACO. Can you correct me and then talk about I sure you guys heard Vicki loners testimony that somehow Medicare Advantage plan people are gonna be considered in value-based plans for purposes of scale. Could you talk about that and if that's addressed at all in the one-year extension? Thank you. Thank you for your comment. I was looking quickly to see if Sarah Lindberg was on but I'm not sure if she is. Are you prepared to answer that? I do think I can answer that or at least I can partially answer and also kick the can a little bit to next week's ACO budget staff presentation. I can see she's on so if you need to phone a friend, Sarah Lindberg is there. I always love to phone a friend when that friend is Sarah Lindberg. So Sarah please jump in if you think I'm getting it wrong and I believe Michelle DeGree is also on the line and I know that she will correct me if I am wrong in any way about scale. So thank you Sue for your comment and for your question. On the first issue of you know how and whether Medicare Advantage members are attributable Medicare advanced folks with Medicare Advantage plans are considered part of the commercial population rather than the Medicare population for the purposes of all-payer model scale. So rather than counting toward Medicare scale if they were attributed they would count toward all-payer scale. They're not included in the denominator for Medicare scale. They're included in the denominator for all-payer scale. That said, they're currently not attributed because no Medicare Advantage plan has a payer contract with one care. So were a Medicare Advantage plan to contract with one care they would potentially be attributed you know based on whatever the attribution methodology was for that program as defined in you know that hypothetical contract. So there's some there are some steps that I think would likely need to happen in advance. I in terms of whether Medicare Advantage is a value-based contract I think we'll talk a little bit about more about Medicare Advantage and the potential role of Medicare Advantage and scale at next week's ACO you know one care Vermont FY22 ACO budget and certification staff presentation. So I think I will I'll take the can a little bit if that's all right. And Susan Aronoff I'm really glad you brought up that because I think all Vermonters are tired of seeing ad after ad for different Medicare Advantage plans disguised as ads for providing people more and more. And I think most of us on the board have some concerns about Medicare Advantage and all those ads are just one more example of money that isn't going to direct care of a patient but there seems to be plenty of money to be made in the Medicare Advantage market. And so that's why we're seeing all those dollars being spent. And I know that many people are very high on Medicare Advantage plans and I think they do have a useful purpose for a number of seniors. But I also have grave concerns. So. Yeah I share your concerns Mr. Chair. I think one thing that's happening in the field is a lot of confusion for consumers as to what their choices are and what the implications of those choices are. And so you know it's a pretty vulnerable population people don't always like that word but I see it as a pretty vulnerable population. So anyway I think any clarification as to where those plans are fitting in our whole healthcare landscape in Vermont would be helpful going forward. Because I think the uptake has been far greater than what people had anticipated at the beginning of the whole process. And I remember specifically asking about it at different times and getting the response including from Sarah Lindbergh that we didn't expect the uptake of Medicare Advantage to be great in Vermont. But wow the number of options just keeps the mush for me. So. I can say that as a son of parents that are seniors it's next to impossible to figure it all out. It's very very frustrating. So next I'll call on Jeff Teeman. Thank you Mr. Chairman. I appreciate it. I'm Jeff Teeman with the Hospital Association. First I want to start Kevin by thanking the Green Mountain Care Board for the beginning of this conversation in deciding to postpone the next sustainability discussion until January. I think as you've readily acknowledged today in a helpful way hospitals are once again very much in the thick of it. So focusing on the most urgent priorities is helpful for everyone and it's good for Vermonters. So thank you for that. I do want to make a comment to connect the reform work with the kind of long term outlook for our health care system and also more immediately to the situation and challenges you described a little bit and that we're facing on the ground as we speak. I also want to echo your thanks to Sarah and Ina and everyone who is involved including hospital CFOs in developing the bridge agreement proposal and that at the Hospital Association we very much agree with the process that's been outlined here. So you know whether it's for a short period of time or for a long term kind of agreement extension I think any future iteration of the model has to ensure that the provider community can deliver the high quality care that patients expect and and also continue to be a resource to communities which have grown in their expectations of hospitals quite a bit in the past 22 months. So I think as the model evolves and it moves into the next iterations it should recognize and I think you've alluded to this that things have changed dramatically since we started this work. So who knew that we would get hit with a two year global pandemic that continues to throw us curveballs even right now or that we would face skyrocketing and unsustainable labor costs with no end in sight. Who could have foreseen that our workforce shortage would become so bad so severe that staffing our most critical beds would be a daily challenge. Who thought that our hospitals would be so full some days that transferring to another facility would take hours and hours and dozens of dozens of phone calls to hospitals as far away as Connecticut. And finally who would have guessed in forming the first all pair model that hospitals would be in the inoculation and the testing business and the public health arena and that they'd have to manage COVID outbreaks and vaccine mandates and supply chain shortages all while trying to pay enough to keep their staff and meet growing patient need. So I think to pivot where we are today as you said Kevin we have a record number of COVID hospitalizations at 85. We have a small number of open ICU beds at any given time. Right now eight hospitals are reporting critical staffing shortages including the Brattleboro Retreat. And to manage all of this hospitals are taking a lot of steps. There's a press conference going on right now where UVMMC is describing its effort to add ICU capacity similar efforts are underway at Northwestern Southwestern and CVMC. Other hospitals are adding or staffing up step down capacity so we can improve throughput through the system. And you also know that hospitals some are suspending or postponing elective procedures which does jeopardize access but is a daily consideration that hospitals have to make at this point. And finally they're working hard to discharge patients to the right level of care whether that's a skilled nursing facility or a psychiatric care facility or their home. And in all of those efforts I just really need to say that we appreciate so much the support of AHS and Secretary Smith and his team for all of these efforts the partnership between hospitals and the state continues to be invaluable on that front. So to conclude going forward I think to manage all of these variables and continue to invest in value based reform and care the model needs to ensure that hospitals have the financial strength and staying power they need to do that and to be there for the long haul. So appreciate GMCB's awareness of everything that's going on and the connection to our long term reform path and that we properly resource the system going forward. Thanks so much as always. Thank you Jeff. Next I'm going to call on Walter Carpenter. Walter. Thanks Kevin. I just Susan asked kind of the question I was thinking of so I just wanted to reiterate that say thanks and also thanks to Kevin for his comments on the Medicare Advantage plans. I think you could simply call them welfare for insurance companies corporate welfare. And but anyway you're dead on right about those advertisements and I hear that all the time too. And all the confusion and the plans and that that they they don't even when you get sick that's when you find out what's going on with those plans. The direct contracting agencies as well we should look at get rid of them. But the thanks for that I still I want to ask an overall question that was summed up in a sentence in the public comments about when we submit for the extension or whatever is exactly what kind of value have Vermonters gut out of one care so far. I'm paraphrasing that sentence. It was by a guy named a doctor named Dick Dundas. But I think that's a question we should ask in whether it's a one year extension or whatever. That's all I got Kevin. Thank you so much Walter. We're on the same page with the Advantage plans. You and me and share a lot of others. I think a lot of others. Okay is there other public comment. Is there any other public comment. So Sarah do you need an official vote that's just an endorsement or the fact that people seem to be supportive is that sufficient enough to move forward to the finalization of negotiations. That is a great question. I believe it's probably a question for Michael Barber. We do have votes noticed for you know potential votes noticed for both the 15th and the 22nd. Hearing that you know it sounds like the board is doesn't have major concerns. It seems like if we do need to have a vote it may make sense to do that on the 15th and and and have a public comment period probably open until the 13th so that whatever comment we received by that point can be summarized and presented at that time. If that's useful. All right. So I want to thank you and I want to especially thank Ina I know that you're going through some challenging times. Your plate is very very full and certainly this uptick in in hospitalizations isn't helping anybody at AHS to clear their plates to get other things accomplished. So thank you for that and with that I'll ask if there is any old business to come before the board. Is there any new business to come before the board. Is there a motion to adjourn. So moved. Second. It's been moved and seconded to adjourn. All those in favor of adjourning please signify by saying aye. Aye. Aye. Any opposed signify by saying nay. Thank you everyone and have a great rest of the day.


Hey, what's up everybody John Hammond here coming back at you with level 22 of the Python challenge So we just finished up level 21 here We are at the new link up based off of copper that was kind of a passphrase to get to this level So now we're greeted with this image of what looks like a joystick kind of like a game controller Nothing else on the web page. So let's view the source. I control you here Regular HTML nothing interesting There's just the image here level 2.jpg and an HTML comment that says or maybe white dot gif would be more bright Huh, okay. I don't know what that means, but I'm assuming that it's referring to this image here Maybe we can just you view a different image view that white dot gif So I paste that into my browser here and it just looks like a black box Not a white gif. I'm gonna control us to save this I'm pulling pie challenge folder created a new folder called level 22 and then Let's get a terminal open so we can Actually start to work with this stuff. So moving to level 22. Do we have the white gif? Okay, we actually have a white gif image cool. This definitely is a gif image.  It's a gif image got the right version image width and height is 200 200 Animation iterations is infinite. Okay, so if I try to view this thing I Guess this is an animation, but I don't see anything. It just looks like a black box to me. Okay Maybe we can use Python to Find something valuable out of that Let's try that right now. I guess let's see if we can get all the frames out of this thing So let's open up a new script I'll close everything that I've got right now And we can get started again user bin environment Python And now I have to actually like save this thing so I thought 22 8.py And let's do this in sublime text 3 because I don't want sublime text 2 to freak out about the The bill view stuff. Okay. Good sweet now. I have regular build. Okay. I I'm gonna be working with the pill or the Python image library. I'm gonna do that From pill important image so I can go ahead and image dot open White dot gif So I'll store it in an object. I'll just call IMG so if you wanted to we can do IMG dot show and Displays it for us 200 200, but I want to see how many frames are in this thing so IMG and frames and And a hundred thirty three. Okay, so for frame in Image dot and frames we want to range here because we're gonna loop through them so We can do image dot seek frame number and now the current image is going to be I'm pretty sure a Stale a stale image. Let's find out And then we can do image dot save to Let's call this like frame D dollar sign or percent D so we can just format specifier And format specify it with the frame number and let's convert this to a string So actually I don't need to do that because I can just use the format string without having to have to create anything crazy so Now if I run this do we have a bunch of more images in here we do okay? So we can look at all of these frames dot PNG like frame zero dot PNG Oh had a little too many extensions there and we can keep iterating through them in doesn't look like there's anything different but let's take a look at how this looks in It's Like it's color values right now. So let's just make this as a function Extract frames cool, so let's put that away for now, but let's create a Image kind of let's see this for frame zero Frame zero dot PNG. Okay. Let's create a pixel access object or like access the data of every image in just a data variable right here and let's call the Let's actually get the contents out of it So we're going to need the size and like the width and height like of the dimensions of the image to begin with So that should be image dot size So now we can do a for x in range width and Do the same thing for y in range of height So we can print out the data that we're working with at that position x and y and Let's just do this in the console. I haven't marked a executable yet. So let's do that and We get a lot of zeros as expected a lot of black So let's sort these and put them to unique taxi So we have a ton of zeros, but only one eight So that must be hiding because it looks very very much like a black pixel But we know that it's different from all the others So let's just set that equal to like two five five and then if Okay, we get a test for one thing if that Pixel that we're currently looking at is the eight if it is the outlier then we'll set that But if not, we'll just ignore it. So then we can do image dot show and Now it displays it You may not be able to see it that clearly But there is just a pixel a small small pixel in the very very center of the screen So a white pixel just right there now if we do that with all of the other frames. I wonder what will happen Let's make this go away. I'm just kind of going to do this With all the files since we have them right now Kind of be a little bit of a gross hack But I guess let's just see what they're all saved as and we can create another J 53 really wanted to see what happens with this Because it's just like one pixel right now So I want to see if it tries to spill anything out or tries to write anything or do anything crazy So let's keep track of the frames that we have here the frame number was like one three three right so Frames so for I in range Total frames now we can go ahead and use per dollar sign D or oh my goodness I keep doing that percent sign D and then I will be our iterator So we get the image original and then let's create a new image Let's call that image dot new New frame dollar sign D dot PNG with our percent specifier and Actually, that's not the file name that goes in there. It's the type So RGB and then it needs the size so in which case we'll use the size from the old image So we can say new data equals image Our new dot load. Okay, so we're getting in copied image here So if the current pixel in the original image is the odd lot like Outlier we can say our new data will set it to a 255 and we don't need to show this anymore but at the very end of the iteration we can say New dot save With the frame the new frame file in that we've got here. So if I run this hopefully it won't break Cool now if we a less we should have a ton of new frames. So I can EOG new frame and Hold that down and you can see I've got a red pixel there, but because it's RGB I want it to be 255 255 For white and then let's run that Just to clean those up a little bit now. I have a white pixel in the very very center of the screen So it looks like it's moving here and there I'm just gonna convert all these new frames into a final dot gif kind of a hack with image magic I know I'm not using real Python there. So I'm sorry But hopefully we can now just look at final dot gif and get an idea as to what this is doing because it looks like It's just a white pixel moving up and down And that's really it. It's not really spelling anything for us or doing anything crazy. So okay, um, I Suppose we can Go back to the drawing board We've got all these frame files, but I don't know if they'll actually help us because they're all just Just boxes with a white pixel in the center, but oh Hey, it looks like they're just kind of moving. I guess like a joystick would right? Yeah So maybe the joystick is trying to spell something out To begin with That must be it. How do we keep track of? I guess we got to try and figure out how we can keep track of the coordinates that it's doing here for us let's um Let's kind of remove these for now And let's just start over here. Let's say the original image equals image dot open White dot jiff. So we'll work with the jiff here and we'll handle all of the frames as we come across them so image dot n frames so for frame number in image dot n frames we want to arrange that here and Let's seek to it image dot seek frame number Sorry, that's a function. Okay, so now We are out the current frame and we can find out the coordinates of that Outlier pixel the one that has eight as its color value not zero So not real black, but just hiding kind of gray black. We can do that by What is the function? What is that function called pill image? bounding box Pill box get B box get B box calculates the bounding box of the non-zero regions in the image. Okay, so it'll return a for tuple defining the left upper right and Lower pixel coordinates so we could get x and y and I guess x2 y2 if we use Image dot get B box cool so for each of those frames What is x? and why Let's see how that looks Okay, so they're moving Right 100 100 is a center. So that's the start and It moves to it moves down down down on down I think and then to the right a little bit because the x and y is moving Okay, so just like a joystick. So we just have to follow We just have to draw the same thing it's drawing So hmm Let's create a cursor for us like cursor x cursor y. It'll start at the center so 100 100 yeah and We actually need a new image for one thing so new equals image dot new RGB and What's the size do you want it's gonna try it I? Feel like if it's trying to like spell something out like if it's trying to write something We're gonna do a little bit more space. So I feel like we're gonna have to Go like 500 or something Like a little more 400 is probably fine But just bigger than the original image like 200 by 200. I think I don't know Okay, so cursor x cursor y is gonna take the 100 100 and then we want to know the difference, right? So x difference equals Cursor x minus x Right. Yeah, and cursor y y difference. So as it moves we can make these changes to the cursor I think that should be right because As it's moving x difference is gonna be like Zero zero it's got to be the center. Oh We probably need a center there you though. Yeah, we need okay We just need center cursor cursor. We want to keep moving but center x and center y Will be I mean it'll be the same as cursor to the start with so I guess we can and I'm doing that so We'll be able to tell the difference in How a joystick is moving according to the image and then once we know the Difference we will add that to our cursor and cursor will change by difference so Now I guess we can just set a new So instead of pixel at our new image and display it out We so we got to get a pixel access object for our new so data equals new load and New Or I guess data cursor x cursor y Can equal a tuple of white 255 255 So at the very end of this we can go new show and Let's see if we moved along with it We drew a line Okay I don't know if that did exactly what I wanted it to do I Think think I did have this back. Oh for one thing. I had y here. So that's pretty bad and it should be The with the way we're gonna tell the difference is whether or not That white pixel they're offset from the center So we have to do the other way around it should be x minus center x and y minus center y I think Okay, cool. Now it's drawn stuff. I think but It's not really all that visible so It like would stop drawing something when it got back to the center, right? So we can just text we can just test like if If the cursor is Or like if the difference we want to know if the difference is zero So if it haven't if it hasn't moved from the center, so if x difference is equal to zero and y difference is equal to zero Then we will update the cursor position to like shift to the right So cursor x like plus equal 50 or something So that way looks like we're moving Oh, hey, okay, it spells out bonus Uh, okay, what's is that it? Is that just all we need? back to copper.html we can try bonus.html.  Hope you guys had fun with that one I thought that was pretty awesome I don't have a lot of code little little experimental code that we were working with kind of at the end Or at least through the beginning and then what we tinkered with at the end to Kind of write out what it was trying to draw with that joystick. So hey, that was cool I thought that was really neat. I Am glad I thought back to that get b-box function because that honestly saved a lot I don't know how we would have really been able to have detected Well, I mean, I know we could have detected you like okay While we do our loop if we're determined like okay It's this if this is the outlier pixel X you want to know what coordinates out You can see the X and Y values in your loop, but then you'd have to handle them and break out and that's nonsense So this image dot get b-box is pretty handy and anything really within the Python image library is super handy I'm it's that's an awesome weapon and arsenal to have in your bag. So Hey, man, thank you guys for watching. Hope you enjoyed this if you did like the video Hey, please do like click the like button physically do it that would be awesome I'm super grateful and if you're willing to subscribe if you haven't already if you really thanks for watching guys I'll see you in the next video when we jump into Python challenge level 23 We're just cruising through this stuff. So thanks again guys. See you later


g that these channels are known for having Very strange hill coefficients And to make a long story short This has to be that In a normal simple system As you increase the concentration You just expect to see more and more and more and more binding Actually I'll come back to that in a second But this will mean that eventually As you're starting adding more and more and more Eventually you will have saturated all these binding sites What will happen when you've saturated all these binding sites? Then it will start to bind there right? Hey this is first class But if first class is full You will have to accept second class Because at least it's negative Black curve for chloroform here Much smaller difference here But it's the same relative sign And for now all I care is about relative sign Here you will probably get something like a quarter About three quarters binding here And maybe one quarter there When we take this mutation We've just mutated a single amino acid They trade places So suddenly with this mutation We're now saying that it would be better to bind Between the subunits than inside each subunit The difference here is not gigantic The difference here is starting to be gigantic So what I'm saying What the simulations are predicting here Is that suddenly it would be better To start binding here between subunits And it's only when this binding site is full That I will start to bind inside each subunit So what we had postulated And what I also I might not have been entirely clear with that My guess and this was a large bold yes We had at the time Could it be because all these channels There was a difference between eukaryotes and prokaryotes That they were either potentiating or inhibitory Right could it really be So that we'd have one of these binding sites This one in particular inhibiting the channel But this one would potentiate it This would really be like having an on button And an off button in the channel Which would be pretty cool And the cool thing is that that is the case So if you take this fluorine on the wild type This fluorine inhibits it And then we take this fluorine on our design protein Just what one amino acid This fluorine now potentiates the channel instead So this is really starting to be some very strong And again I would still say that This is strong circumstantial evidence We haven't really proved it yet That's what we're working on now That the second bindings There are really two different binding sites So sorry by the way This works for an entire series of different compounds Which is important because had it been one compound It could have been a mistake right But it really appears to be the case That we have one binding site between the subunits That potentiates the channel While the binding site inside each channel Inhibits it So what Reband we are trying to do right now Is to systematically mutate this binding site So can I selectively knock out the binding site So that it's a channel that can't be inhibited for instance And there are a bunch of complications here That both we and others are struggling with But I would argue that this actually still holds There are separate potentiating and inhibitory binding sites For these channels This is potentially super cool Because this might enable us to design better anesthetics So a problem with anesthetics And I might have mentioned this before that It's not a problem to sedate you You're young, healthy and everything You're going to be fine But the problem is that the elderly a patient gets And if they are sick maybe overweight High blood pressure and everything It's simply hard to keep them alive And then during a recovery You have all these anesthetics wearing down With different rates So what this might enable us to do To literally have pair of compounds We use one compound here to sedate you deeper While if you then want to bring you up To make you slightly more awake We could give the other compound So in theory this would make it possible To fine tune anesthesia way better Than what we can do today And then you can have fewer of the other drugs To try to compensate for these drugs Which again in theory at least Would make it possible to operate on patients That are more elderly or more ill Ed's dream is to administer an anesthetic He has designed himself at some point Which I'm not sure will happen Hopefully, well if we do succeed I hope that I'm handed designing it The other things that you can do With these channels is that Remember how I said that you have An agonist up here You have the allosteric site down here And all this interacts with Whether the channel is open or not So we've had a number of students in the group Show that you can actually reproduce this in simulations So if this is a glutamate binding channel So that if you do not have glutamate bound You have a very high free energy barrier But then when you add glutamate And in particular if you add glutamate To all subunits and run longer simulations The free energy for the ions to pass It actually goes down and down and down Here we're down to 10 kT Which is still a bit too high I think this should be 3, 4 kT But we can actually show How the allosteric modulation works And if you have these both molecules bind We drop the free energy And we not only do you see the channel Opening geometrically But we can actually see that it opens In the sense that it reduces The free energy for ion passage This is beautiful in a simple simulation setting The only problem is that this is not how it works In reality All we can do in simulations This far in these channels Is that you pick a beautiful simple channel Which is a alpha subunit That's what it's called Gly or a glycine receptor The alpha subunit 1, 2, 3, 4, 5 alpha subunits That's how we see them in the x-ray structures That's how we normally do simulations That channel pretty much doesn't exist in your bodies If we get about the glycine receptor For a second and look at a receptor called GABA Which is possibly Well, I mean one of the most important receptors in your brain There is an alpha subunit of the GABA receptor 2 There is no GABA channel in your body That only consists of alpha receptors There is a beta subunit 2 That looks almost the same There's a few differences in the sequence Very mild So it's a different gene There's an alpha subunit gene And there's a beta subunit gene So now I'm going completely crazy Why am I bothering you with this? Well, this is partly to tie up the course on bioinformatics Do you think this is important? If you knock out the beta subunit You can't sedate rats They're no longer sensitive to anesthetics And we've actually been able to Not we but others have been able to show That the anesthetics bind in the interface Between the beta from the beta to the next alpha subunit We have no idea why It's just that that appears to be We don't even know exactly how it binds there Because this is a channel We would not have the exact X-ray structure That was the beta subunit There is also a gamma subunit of this channel And this is by far the most For the gamma butyric acid receptor This is the most common form you have it of in the body There are other special differences Between these subunits Whether it's sensitive for benzodiazepines These receptors won't even work Without cholesterol in the membrane We have So some way the cholesterol We're going to have to bind to this receptor We have no idea how it does that All we know is that if you put it in a membrane Without cholesterol it doesn't work Which is one of the key differences Between eukaryotes and prokaryotes There is actually a delta receptor too A delta subunit We haven't worked on that It's not as common since that is the most common form So there are four different subunit types And if you think that is difficult That is a horrible lie Because there are at least 17 different subunit types Of this expressed in your brains The difference We're talking about the handful 10 to 20 residues out of 500 That are different So tiny variations So that if you just look at bioinformatics Any of these channels are going to have 90 Any of these subunits are going to have 90% Sequoes that enter into another So they're beautiful If you want to build a homology model Or something right But it's still There has to be some key structural differences here That give them different properties We know almost nothing about this And what people have done And now we're heading out Widely into the speculation territory But nature rarely does something Without having a need for it Right And of course it costs you something To have 17 different genes That we need to control So it's likely that the specific expression Of all these different genes And the subtypes are related Different cells having different properties The cells we have in different parts Of the brain are different The cells I have in the brain Are different from the ones I have in my spine Are different from the peripheral nervous system And everything So these channels exist everywhere But depending on what channels we express They will likely give the cells Slightly different properties Not just that Depending on how much of the channel I have expressed Right You're going to have a cell that responds Better or worse to the particular GABA receptor So this is also something Just as we spoke about the Fetal hemoglobin and everything Gene expression levels will alter biological behavior Now that leads to some very interesting things That unfortunately are not this I'll give you the simple story first If you remember that this is not true So these channels are so related to addiction What do you think happen if you Let's say that you have a normal healthy nervous system And then you start drinking lots of ethanol So ethanol will on average Potentiate most of these channels It will make them easier to open What could you imagine that the body would do Exactly You don't need to express so many channels, right? So what now happens if you stop drinking ethanol So all these withdrawal behaviors And the sad thing is that this is not true It's much more complicated in practice The point I want to measure that What's amazing is that many of these diseases That we've historically thought of as Psychiatric diseases or behavior diseases They are very much biochemical The way all withdrawal symptoms Well, if anybody has had a hangover on a Saturday morning, right? To feel that it's definitely physical It's not just in your mind Sadly, there are people that have done lots of investigations Where they've tried to study expression levels And alcoholics and everything I don't think that people have really found any patterns Nowadays, you can do all these temporal Genomics and spatial genomics You express things that function hundreds of different nerve cells They do that a lot here at SciLife Lab This is very much cutting edge So instead of sequencing one human cell You're not going to try to do full genome sequencing Of say 600 cells close to each other In different parts of the brain or something As we collect more data I bet we're going to start to find some of these patterns But for now, we know almost nothing What the difference between all the subunits are And this is just one of these channels There are hundreds of them in the body And I think I will stop there There are a bunch of people Oh, this is research I'm not behind this It's all the people in the lab in particular And Tachyla and Reba at UTex as Austin But if there is one recommendation I have to you When it comes to research and everything Go into the brain This is, well, first is sexy stuff Second, it's interesting Third, I think this is where the future is Because it's one of those The problem when it comes to choosing research topics It's so easy to pick one of these fields That either I or some other lecture Have spent three lectures talking about, right? And you know all the details But why could I spend three lectures talking about it? Because it's an area we know very well Those are not the best research topics So some of this I can't really spend more than a slide on this Because we, well, we don't really know There have been some papers published But the results weren't really that strong It's unclear We don't know yet Uncertain, doubtful Those are the keywords to look for When you want to choose PhD projects That people haven't done research It's easier to do It's easier to do discoveries That people haven't already discovered I think I'll stop there We have 10 minutes or so, right? No, we don't We have three minutes Do you have any questions for me?