From around the globe, it's theCUBE with digital coverage of AWS Public Sector Online. Brought to you by Amazon Web Services. Everyone, welcome back to theCUBE's virtual coverage of AWS Public Sector Summit Online. I'm John Furrier, your host of theCUBE. Normally we're in-person out on Asia Pacific and all the different events for AWS Public Sector, but this year, we have to do it remote and we're going to do the remote virtual CUBE with it as virtual Public Sector Online Summit. And we have two great guests here talking about Digital Earth Africa Project, Clive Charlton, Head of Solutions Architecture, Sub-Saharan Africa with AWS. Clive, thanks for coming on and Aditya Agarwal, founder of D4D Insights and also an advisor to the Digital Earth Africa Project with AWS. So gentlemen, thank you for coming on. Appreciate you coming on remotely. Thanks for having us. Thank you for having us, John. So Clive, take us through real quickly. Just take a minute to describe what is the Digital Earth Africa Project? What are the problems that you're aiming to solve? Well, we're really aiming to provide actionable data to governments and organizations around Africa by providing a satellite imagery in an easy to use format. And doing that on the cloud that serves countries throughout Africa. And just from a cloud perspective, give us a quick taste of what's going on just with the tech. It's on Amazon, you got a little satellite action. Is there a ground station involved? Give us a little bit more color around, what's the scope of the project? Yep. So historically speaking, you'd have to process satellite imagery, don link it and then do some heavy lifting around the processing of the data. Digital Earth Africa was built from the experiences from Digital Earth Australia, originally developed by Geosciences Australia. And they use container services for Kubernetes called Elastic Kubernetes Service to spin up virtual machines, which are required to process the raw satellite imagery into a format called Cloud Optimized GeoTIF. This format is used to store very large volumes of data in a format that's really easy to query. So organizations can just use an HTTP get range request, just to query a part of the file that they're interested in, which means the results are served much, much quicker from much better overall experience. Under the hood, the data is stored in the Amazon Simple Storage Service, which is S3 and a metadata index in a relational database service that runs the open data cube library, which is allows Digital Earth Africa to store this data in both space and time. It's interesting, I just did some interviews last week on symposium on space and cybersecurity. And we were talking about the impact of satellites and GPS and just the overall infrastructure shift. And it's just another part of the edge of the network. Disha, I want to get your thoughts on this and your reaction to the Digital Earth Project.  Let's zoom out. What's the impact of people's lives? Give us a quick overview of how you see it playing out because explain to someone who doesn't know anything about the project. Like, okay, what's it about? And how does it actually impact people? Sure. So, you know, as Clive mentioned, I mean, there's definitely a digital infrastructure behind Digital Earth Africa in a way that it's going to be able to serve free and open satellite data. And often the issue around satellite data, especially within the context of Africa and other parts of the world, is that there's a level of capacity that's required in order to be able to use that data. But there's also all kinds of access issues because traditionally satellite data is heavy. There's the old model of being able to download the data and then being able to do something with it. And then often about 80% of the time that you spend on satellite data is spent just pre-processing the data before you can actually do any of the fun analysis around it that really sort of impacts the kinds of decisions and actions that you're looking for. And so that's why Digital Earth Africa and that's why this partnership with Amazon is a fantastic partnership because it really allows us to be able to scale the approach across the entire continent, make it easy for that data to be accessed and make it easier for people to be able to use that data. The way that Digital Earth Africa is being operationalized is that we're not just looking at it from the perspective of, let's put another infrastructure into Africa. We want this program and it is a program that we want institutionalized within Africa itself. One that leverages expertise across the continent and one that brings in organizations across the continent to really sort of take the leadership and ownership of this program as it moves forward. The idea of it is that once you're able to have this information, being able to address issues like food security, climate change, coastal resilience, land degradation, where the legal mining is, where is the water? We wanna be able to do that in a way that it's really looking at what are the national development priorities within the countries themselves and how does it also then support regional and global frameworks like Africa's Agenda 2063 and the Sustainable Development Goals? No doubt in my mind, Astley, is the huge benefits to these kinds of technologies. I wanna also just ask you as a follow-up, there's a huge space race going on right now, explosion of availability, satellite data. And again, more satellites are going up, there's more congestion, more contention. Again, we had a big event on that cybersecurity and the congestion issue, but satellite data was powering everyone here in the United States. You want an Uber, you want Google Maps, you're everywhere with GPS, without it we'd be kind of like wondering what's going on, how do we even vote these days? So certainly an impact, but there's a huge surge of availability of the use of satellite data. How do you explain this and what are some of the challenges from the data side that's coming from the Digital Earth Africa project that you guys hope to resolve? Sure, I mean, that's a great question. I mean, I think at one level when you're looking at the space race right now, satellites are becoming cheaper, they're becoming more efficient, there's increased technology now, the types of sensors that you can deploy, there's companies like Planet that are really revolutionizing how even small countries are able to deploy their own satellites and the constellation that they're putting forward in terms of the frequency by which you're able to get data for any given part of the Earth on a daily basis. Coupled with that, and this is really sort of in Clive's purview, but the cloud computing capabilities and overall computing power that you have today than what you had 10 years, 15 years ago is so vastly different. What used to take weeks to do before for any kind of analysis on satellite data, which is heavy data, now takes minutes or hours to do. So when you put all that together, again, I think it really speaks to the power of this partnership with Amazon and really what that means for how this data is gonna be delivered to Africa because it really allows for the scalability for anything that happens through Digital Earth Africa. And so for example, one of the approaches that we're taking as we identify what the priorities and needs are at the country level, let's say that it's land degradation, there's often common issues across countries. And so when we can take one particular issue tested with additional countries and then we can scale it across the whole continent because the infrastructure is there for the whole continent. Yeah, that's a great point. There's so many storylines here we'll get to Clive in a second on sustainability. And I wanna talk about the open data platform, obviously open data, having data is one thing, but now trained data and having more trusted data becomes a huge issue. Again, I wanna dig into that for a second, but Clive, I wanna ask you first, what region are we in? I mean, is this, you guys actually have a great, first of all, we've been covering the region expansion from Bahrain all the way as it moves around the world, probably soon in space, there'll be a region, Amazon Space Station region, probably someday in the future. But what region are you running the project out of? Can you, and why is it important? Can you share the update on the regional piece? Well, we're very pleased that Digital Earth Africa is using the new Africa region in Cape Town in South Africa, which was launched in April of this year. It's one of 24 regions around the world, and we have another three new regions announced. What this means for users of Digital Earth Africa is that they're able to use the region closest to them, which gives them the best user experience. It's the quickest connection for them, but more importantly, we also wanted to use an African solution for African people and using Africa region in Cape Town, really aligned with that thinking. So localization on the data, latency, all that stuff is kind of within the region, within country here, for as long. That's right, yeah. And why is that important? Is there any other benefits? Why should someone care? Obviously there's failover options I mean other countries to go to, but why is having something in that region important for this project? Well, it comes down to latency for the users. So being as close to the data as possible is really important for the user experience, especially when you're looking at large datasets and big queries, you don't want to be waiting a long lag time for that query to go backwards and forwards between the user and the region. So having the data in the Africa region in Cape Town is important. So talk about the region. I love when these new regions roll out from Amazon because obviously it's huge build up, CapEx and the new data center servers and everything. Sustainability is a huge part of the story. How does the sustainability piece fit into the data initiative supported in Africa? Can you share some updates on that? This project is also closely aligned with the Amazon Sustainability Data Initiative, which looks to accelerate sustainability research and innovation really by minimizing the cost and the time required to acquire and analyze large sustainability datasets. So the initiative supports innovators and researchers with the data and tools and technical experience that they need to move sustainability to the next level. These are public datasets and publicly available to anyone. In addition to that, the initiative provides cloud grants to those who are interested in exploring the use of AWS technology and scalable infrastructure to serve sustainability challenges of this nation. Aditya, I want to get your thoughts on this, a comment that Clive made around latency and certainly having a region there is great benefits. No need to harp on that. Everyone knows I'm a big fan of the regional model, but it brings up the issue of what's going on in the country from an infrastructure standpoint, a lot of mobility, a lot of edge computing. I can almost imagine that. So how do you see that evolving from a business standpoint, from a project standpoint, data standpoint? Can you comment and react to that edge angle? Yeah, I mean, I think that the value of an open data infrastructure is that you want to use that infrastructure to create a whole data ecosystem type of an approach. And so from the perspective of being able to make this data readily accessible, making it efficiently accessible and really being able to bring industry into that ecosystem because what we really want as the program matures is for this program to then also instigate the development of new businesses, entrepreneurship, really get the young people across Africa which has the largest proportion of young people anywhere in the world to be engaged around what you can do with satellite data and the types of businesses that can be developed around it. And so by having all of our data reside in Cape Town on the continent, there's obviously technical benefits to that in terms of being able to apply the data and creating businesses. There's also a perception in the fact that the data that Digital Earth Africa is serving is in Africa and residing in Africa which does go a long way. Yeah, and that's a huge value. And I could just imagine the creativity, if you can comment on this open data platform idea because some of the commentary that we've been having on theCUBE here and all around the world is data is great. We all know we're living with a lot of data. You're starting to see that the commoditization and horizontal scalability of data is one thing but to put it into software-defined environments whether it's an entrepreneur coding up an app or doing something to share some transparency around some initiatives going on within the region or in the continent, it's about trusted data. It's about sharing algorithms. AI is also a consumer of data, machines consume data. So it's not just a technology data is part of this new normal. What's this open data platform and how does that translate into value in your opinion? Yeah, and when data is shared on AWS anyone can analyze it and build services on top of it using a broad range of compute and data analytics products. Things like Amazon EC2 or Lambda which is our serverless compute to things like Amazon Elastic MapReduce for complex extract and transformation processes but sharing data in the cloud lets users spend more time on the data analysis rather than the data acquisition and researchers can analyze data shared on AWS without needing to pay to store their own copy which is what the open data platform provides. You only have to pay for the compute that you use and you don't need to purchase storage to start a new project. So the registry of the open data on AWS makes it easy to find those data sets by making them publicly available through AWS services. And when you share your data on AWS you make it available to a large and growing community of developers and startups and enterprises all around the world. And we've been talking particularly around Africa So it's an open source model basically it's free you don't, it doesn't cost you anything probably just start maybe down the road if it gets heavy maybe too charging but the most part easy for scientists to use and then you're leveraging it into the open contributing back, is that right? Yep, that's right, getting researchers and startups and organizations going quickly without having to worry about the data acquisition they can just get going and start building. All right, well I want to get back to Dichon the skill gap issue because he brought up something that I thought was really cool. People are going to start building apps and going to start to see more innovation. What are the needs out there? Because we're seeing a huge onboarding of new talent young talent, people reskilling from existing jobs certainly COVID's accelerated people looking for more different kinds of work. I'm sure there's a lot of demand to some innovative things. The question I always get and want to get your reaction is what are the skills needed to get involved to one contribute but also benefit from it? Whether it's the data satellite data or just how to get involved skill-wise. Sure, sure. Yeah, so most recently we've created a six week training course that's really kind of taken users from understanding the basics of Earth observation data to how to work with Python to how to create their own Jupyter notebooks and their own use cases. And so there's a wide sort of range of skill sets that are required depending on who you are. Because effectively what we want to be able to do is get everyone from kind of the technical user that might have some remote sensing background to the developer, to the policy maker and decision maker to understand the value of this infrastructure. Whether you're the one who's actually analyzing the data if you're the one who's developing new applications or you're taking that information from a managerial or policy level discussion to actually deliver the action and sort of impact that you're looking for. And so in that regard, we're working with ITC in the Netherlands and again with institutions across Africa that already have a mandate and expertise in this particular area to create a holistic capacity development program that will address all of those different factors. So I guess the follow-up question I want to have is how do you ensure the priorities of Africa are addressed as part of this program? Yeah, so we've created a governance model that really is both top down and bottom up. At the bottom up level, we have a technical advisory committee that has over 15 institutions, many of which are based across Africa that really have a good understanding of the needs, the priorities and the mandate for how to work with countries. And at the top down level, we're developing a governing board that will be inclusive of the key continental level institutions that really provide the political buy-in, the sustainability of the program and really provide overall guidance. And within that, we're also creating an operational model such that these institutions that do have the capacity to support the program, they're actually the ones who are also going to be supporting the implementation of the program itself. And there's been some United Nations sustained development projects, all kinds of government involvement around making sure certain things happen within the country. Can you just share some of the highlights of some of the key initiatives that are going on that you're supporting to make it a better world? Yeah, so this program is very closely aligned to sustainable development agenda. And so looking after the developing methods that really addresses sustainable development goals is one facet. In Africa, there's another program looking overall national development priorities and sustainability called Agenda 2063. And really like, I think what it really comes down to, this wouldn't be happening without the country level involvement themselves. So this started with five countries originally, Senegal, Ghana, Kenya, Tanzania. And the government of Kenya itself has really been a kind of a founding partner for how Digital Earth Africa and its predecessor of the Africa Regional Data Cube came to be. And so without high-level support and political buy-in within those governments, I mean, it's really because of that, that's why we're where we are. Aditya, thank you for coming on and sharing that insight. Clive, I'll give you the final word for the folks watching Digital Earth Africa processes of petabytes of data. I mean, the satellite data is well huge. You mentioned it's a new region. You're running Kubernetes, Elastic Kubernetes service, making containers easy to use, pays you go. So you got cutting edge. Take the one minute to share why this region's cutting edge. Does it have the scale of other regions? What should they know about AWS in Cape Town for Africa's new region? Take a minute to put a plug in. Yeah, thank you for that, John. So our regions are built in the same way all around the world. So they're built for redundancy and reliability. They typically have a minimum of three, what we call availability zones, and each one contains a cluster of data centers and all interconnected with fast fiber.  And the Cape Town region is built in exactly the same way. We have most of the services available in the Cape Town region, like most other regions. So as a user of AWS, you can have the confidence that you can deploy your services and workloads into AWS and run it in the same way with the same kind of speed and the same kind of support and infrastructure that's backing any region anywhere else in the world. Well, great, thanks for that plug. Disha, thank you for your insight. And again, innovation follows cloud computing, whether you're building on top of it as a startup, a government or enterprise, or to make society better, in this case, the Digital Earth Africa project. Great story, thank you for sharing, appreciate it. Thank you for having us. Thank you for having us, John. I'm John Furrier with theCUBE Virtual Remote, not in person this year. Hope to see you next time in person. Thanks for watching.


Hey there, folks. Rob here. Welcome back to the show. So today, I wanted to talk a little bit about screen readers. Screen readers are super important for many of our users out there, but I know a lot of developers are not familiar with these pieces of technology. And that's kind of a bummer because screen readers are actually pretty easy to pick up. And if you're using a computer like a Mac, you've already got a screen reader built in for free. So what I wanted to do today was focus on the screen reader that comes with the Macintosh computer. And then in next episode, we'll look at some free screen reader options for Windows users. So on the Mac, the screen reader that we've got built in is called voiceover. And if you follow me over here to my laptop, I'm going to go to my system preferences. We're going to go to the accessibility setting right here. And then there's a tab. I can zoom in a little bit so you can see it. So there's this little tab over here for voiceover. And click on that. And there's a few options that we have to actually activate voiceover. We could go and just check this checkbox and our laptop would start talking. And we would be like, whoa, I don't know what's going on. Or we could go down here to voiceover training. Now, I highly recommend everyone take maybe about 20 minutes to go through this. I'm going to kind of give you an abbreviated version. So I'll turn the sound on my laptop. See, we'll zoom back out a little bit. We're going to open up voiceover training. And this is just going to guide us through some of the fundamentals of using the screen reader. Welcome back. Welcome back to the voiceover quick start. OK, so I'm just going to talk over this dude a little bit. Here, you know what, I'm going to mute you for a second. So when we open this up, it's going to be really, really big text. And that's because screen readers are often used by folks who might not be completely blind, but they might have low vision. So we want to make sure the text is large enough for them to read. And it's just going to present some instructions. It's about 22 little slides that you can click through. So it doesn't take long at all. And it's basically just going to walk you through some of the basic control keys for voiceover. Now I'm going to give you the cheat sheet version. When you turn voiceover on your Mac, really there's only a handful of keys that most developers are going to need to know. The first thing is this idea of the voiceover or the VO modifier key, which on the Macintosh is Control Alt. So not Command Alt, but Control Alt. So all throughout the instructions, you'll see it referencing things where it says, like, press VO dash right arrow. So that always means just press Control Alt right arrow. To navigate the page very easily, you can use Control Alt right arrow. That will just kind of move you around the screen. If you want to move by something like headings, which I'll demonstrate a bit later, you can use Control Alt Command H. And I'll just jump through the major headings in your document. And you can also use Control Alt spacebar to click on things. And really those three keys are going to get you pretty far. If you're just sort of testing and auditing your website to make sure it has some decent functionality, you can just use that handful of commands to get most of what you need. So let me show you an example of actually using this. We're going to go ahead to this little section here, which has a few controls down at the bottom. It's a little small. I can't really zoom in that easily on this, but bear with me here. And what I'm going to do is click the Start Practice button. And as soon as I do that, it's going to turn voiceover on my laptop. So I'm going to stop talking. And we'll just sort of follow what's going on on the screen. So turn volume on. Voiceover on voiceover, quick start. Move around the screen. Window, show all comments. Selected radio button. One of two has keyboard focus. OK, so it started saying a bunch of things. I'm actually going to hit the Control key. And any time you hit the Control key, that basically tells voiceover, just stop talking. Sometimes what it likes to do, if it's sort of sitting idling on the screen, it'll just sort of start talking again and remind you of where you are, which can be kind of annoying. So right now, what it's saying is that we are focused on this one radio button control. And we're going to use the VO keys, Control Alt, and the right arrow to move to the next control. Hide all comments, radio button, two or two. And we can keep hitting Control Alt, right arrow to move down to this section of settings. Settings, announce alert messages. Settings, uncheck speak selected text settings, uncheck checkbox. I'm just going to hit Control to tell it to be quiet. And now if I want to click on this checkbox, I can use the VO and space bar. Check speak selected text settings, checkbox. And when you do that, it's basically like a simulated mouse click. So if you have a click handler, for instance, it would get triggered by that Control Alt space key. You might have noticed that my screen reader was reading a little fast. If you want to change the rate that voiceover speaks at, you can hit Control Alt command up. Pitch 55%, 60%, 65% or down. 60%, 55%, 50%. You can also hit Control Alt left and right to sort of move through various other options. So volume intonation, 50% intonation. Voice Alex. You can change the speaker, right? So you can have Bruce or Fred. Cathy. Cathy. Vicky, Victoria. Okay. I usually stick with Alex. Alex, he's my man. So I think we've covered all the sort of the fun and middles of just sort of moving around. Why don't we try this on an actual website now? So I'm going to hit, ah, here you go. Good shortcut. Command F5 to turn voiceover off. Command F5 is also how you turn it on. Move around to the screen.  Command F5. Voiceover on system preferences. Access voiceover off. There we go.  Command F5 is a very, very useful command. It's also one of those things which if you've ever hung out at the Apple Genius bar, people accidentally hit that all the time and bring their laptops to the Genius bar to be like, I don't know what's happening. They could stop. So Command F5, in case one of your relatives sits on their laptop or something and has a freak out at Christmas, Command F5. Okay, so let's go and actually look at an actual website. So I'm going to go to Wikipedia. Wikipedia has really, really nice accessibility. We're just going to look up Google itself, the company. And now there's a lot of information on this page and one way that you could imagine someone using a screen reader is they just turn it on and they just start moving laterally through everything. So let's try that and see what that's like. Voiceover on Google. Wikipedia. The free encyclopedia. HTML content. I'm going to hit control. There's a lot to stop talking. Oftentimes when you open a website, you need to hit control, alt, shift, down. Google. Wikipedia. The free encyclopedia. Voiceover, I would like to interact with this page right now. Otherwise, it's going to try and move you through the rest of the Mac UI, which you don't want. You want to actually interact with what's in Chrome. And now we're going to hit control, alt, right arrow, the VO, right arrow keys, to just move through all the content. Internal, link, image, pie, link. Slash, six, zero, PX, Wiki, underline, link. Wiki loves monuments. The world, link, image. Page, semi-protected, heading, level one, Google. Okay, so that was slow. I have not even gotten into the main meat of the article yet and I'm already kind of tired of clicking on this thing. And so what we found was through a recent survey conducted by Hayden Works or Hayden Pickering, I think it's his last name. Really cool developer who does a lot of cool accessibility work. He sent out a survey to ask screen reader users, how do you typically navigate the page? And the overwhelming response is most people initially when they first land on a page navigate by headings. So remember to do that, we hit control, alt, command, H. So let's see if this makes our experience a bit more efficient. Heading, level two, contents. Heading, level two, history. Heading, level three, financing. One, nine, heading, level three, growth. Okay, cool. So I feel like that was sort of just a more productive way to move through the document. One thing you might notice is sometimes as we're moving through a webpage, voiceover will not scroll the screen for us all the time if we're just like jumping around by heading. And so if you just hit control, alt, right arrow. March, one, nine, link. It'll start to kind of jump down to the text content itself. It actually, if you're using a screen reader, it kind of doesn't matter if it's not scrolling. But if you are a sighted user and you're trying to debug something, sometimes you have to fiddle with it a little bit to make it actually scroll and move how you want it to. Another really interesting thing that we can do here, and this is sort of like the Uber shortcut, is we can hit control, alt, U. And that's gonna open what's known as the rotor.  So I'll hit control, alt, U. And I'll hit the right arrow and we can just flip through a bunch of different options for the page. All the tables, all the landmarks. So HTML5 landmark elements, things like main, article, aside. The reason why those elements are important is for things like this. It actually lets someone just jump directly to your navigation. All the links, all the headings, et cetera. So this is a really, really useful tool, the rotor, just to jump around kind of like a power user. Now the last thing that I wanna show off related to the screen reader is when the screen reader kind of misbehaves a little bit. Let's say I'm just writing some code. Maybe I'm writing some body copy. And I've got the word Udacity here. So I'll bump this up a little bit so it's easier to read. So I'm just gonna p-tag here with the word Udacity in it, okay? Let me preview this now in my browser and let's see what the screen reader actually announces. So we got the word Udacity there. We will flip on voiceover. Let's hear what it says. Voiceover on Chrome, HTTPS, interact with HTML content. Udacity, group, voiceover off. So you see, instead of saying Udacity, it said Udacity or some other weird amalgamation of that word. You'll oftentimes see this with a screen reader with sort of like complex words. It just tries its best, but it probably doesn't pronounce it as you would like it to. It's tempting to go in and try and correct the screen reader or work around this behavior. So maybe I might go in and replace the word Udacity or Udacity. I might use something like an ARIA label. ARIA label basically tells the screen reader what to say. And I might give it like some phonetic text, like Udacity. So let's see, let's see what that pronounces. Voiceover on Chrome, HTTPS, interact with HTML content. Udacity, group, voiceover off. Okay, so it was like a bit closer, but by the way, did you notice the on-screen text there inside the- Voiceover on Chrome, HTTPS, interact with HTML content. Udacity, group, voiceover off. Right, it actually like printed the words Udacity or whatever, that weird phonetic spelling. It's important to note that if you're working around screen reader pronunciation by adding phonetics and things like that, that might seem cool for someone using a screen reader, but if you have a user who's using a Braille reader, now the word Udacity for them is gonna be Udacity or whatever. It's gonna just be some gibberish. So in general, when the screen reader is acting up, you don't want to try and work around its behavior. Don't try and correct it. What we found from folks who rely on screen readers is that overwhelmingly, they prefer that you just like leave the quirks in place. They're used to the way that the tool works already. And so when you try and correct it, you can actually make the experience worse for other users of different kinds of assistive technology. Okay, so we covered a lot today. That about covers the basics of getting rolling with voiceover. In the next episode, I wanna talk about some free screen readers for Windows. And then I actually wanna move on to talking about mobile screen readers because accessibility on mobile is super, super, super important. And it's one of those areas that I definitely feel like it's underexplored. But if you have any questions on what we talked about today, please leave them for me down below in the comments or as always, you can hit me up on a social network of your choosing. That's it and thanks for watching.


Welcome. I'm Diane Meyerhoff, host for Tau Meeting TV's presentation of the Winooski Budget and Ballot Items, part of our ongoing Tau Meeting 2021 coverage.  We welcome your comments and questions. If you're watching this program live, please join the conversation at 862-3966. I'm joined by Jesse Baker, the city manager, and Christine Lott, the mayor. Thank you both so much for joining us tonight. Thanks for having us, Diane. It's a pleasure. So tell us, what two Winooski voters need to know for Tau Meeting Day? Well, we don't have too much. We have our fiscal year 2022 budget that we're going to dig into tonight, and then a couple of ballot items at the end of this presentation. So our city manager, Jesse Baker, is sharing her screen with this presentation. And we wanted to start by sharing our values, Winooski's community values, which sort of drive all of the decision-making and how we choose to spend our money. So we are founding our work in a community vision that was driven through a lot of outreach process over the years, that we're a small and connected city, that we welcome newcomers, and that we're a place where everyone can participate in the success of their own families and the community at whole. So this values statement actually drives a strategic vision, which we use for sort of all of our city planning. So we are an affordable, livable, and diverse community. And the values that residents want to focus on and really invest resources in surround economic vitality, our municipal infrastructure housing, and having safe, healthy, and connected residents in our community. So from that, that work of getting to that values statement and that strategic vision, we then over the last several years have done a lot of planning, also with community outreach involved. So we have our master plan, which has overarching goals for what we want to be as a city. And some more detailed plans that inform that. So a housing needs assessment and a transportation plan. And these these sort of plans that say these are our priorities, these are the streets we want to fix next. These are the housing goals that we want to meet. That led to over the last couple of years, some bond votes for big projects that we're going to undertake that will lead us to that vision. So the pool rehabilitation, mainstream revitalization, a new garage in our downtown. So having made those commitments already, we have been focused more recently and are focusing in this budget and into the future on carrying out those existing projects and commitments and really shifting any new effort into focusing on affordability and equity in our city. So well, all of our big projects have experienced some amount of delay due to the pandemic. We still achieved a lot of progress in the past year. So I wanted to pass it to Jesse to share some of the the good work highlights of good work that has taken place in that our our city staff have carried out with our community. Thank you, Mayor lot and thank you Diane for hosting this event tonight. So I think we would be remiss if we did not start our report out this year without talking about COVID-19 and the impacts of COVID-19 on our community. So as you can imagine, in most years, we really try and stay very close to our strategic vision and our work plans that are adopted by the council and leadership team. And this year we really had to focus on our COVID-19 response. So while so in doing so, we were able to ensure the public safety through the governor's stay home, stay safe order, ensure that we continue to maintain our essential infrastructure. We sent out hundreds of communications to our residents to ensure that all had the information they needed to keep themselves and their families safe. We did experience 21 of our staff did experience furlough both to protect the city's finances and also out of respect for our neighbors who were furloughed or laid off themselves and not being paid for not working. We stood up bi-weekly leadership briefings with leaders from across the city to ensure that all work was coordinated and we were sharing services as effectively as possible in order to meet the needs of our residents. And of course, we dealt over the summer with our Winniesky-Berlington COVID outbreak and in partnership with the Vermont Department of Health, ALV, USCRI and many other partners were able to contain that first community spread outbreak in Vermont very quickly. So while we were doing all of that COVID response, we were also able to continue work towards our strategic vision and I believe we are poised now to come out of the pandemic stronger than ever. So we continued work on our investments, our major projects that the mayor mentioned earlier, the redevelopment of 17 Abanaki Way, our Hickok Street reconstruction project our Main Street Revitalization Project and of course we finished construction on the Myers Memorial Pool which we are thrilled to be opening this summer. Pool passes are now officially on sale if you are interested in buying your pool pass for this summer. We continue to see private investment in redevelopment of our community. We brought back all of our staff from furlough in early August. We hired 15 new exceptional new staff including a shout out to our new recreation manager and our new library director who are both just bringing so many opportunities to connect to the community even in these times of virtual events. And then of course we tried to leverage as much COVID grant funding as we could strengthen our connections with our community partners that will last well beyond the pandemic and hopefully build trust with our neighbors. Shall I turn it back over to you, Mayor, for the budget reduction? So when we got to spending for the FY22 budget, we really wanted to recognize the impacts that COVID-19 has had on our community. And so council asked staff to create a budget that retained essential services for community members but also keep any increase in the tax rate below cost of living and inflation, recognizing both the need for services but also the financial impacts that people have been experiencing. So we talked about retaining services like meals and childcare, shifting some of our capital improvement focus to sidewalks as folks are spending more time outdoors and in the city and keeping that tax rate increase under two percent which staff were able to do for us. So on the next slide we will see the numbers. What we are looking at for this budget is going to be a 1.83 percent increase from this year which should amount to about $47 on the average the average tax bill for a Winooski resident. So this is you can see here the number laid out how much more how much the budget has grown versus taxes raised. I wanted to call out here that we are also seeing more non-tax revenue so voters a couple of years ago approved a local options tax and that's helping to sort of shift some of the cost burden away from tax bills and into this other revenue stream. So what is in this budget? You know we're retaining the existing level of services that the city is providing. So the same amount of staff, same community services programming, street upkeep that sort of thing with the exception that we received a substantial grant to fund a new equity director role that will support our focus on building more equity in Winooski. So that is a change in staffing but it doesn't have an impact on this budget that we're voting on that grant funds us for three years. We also call out in here that we're retaining funding for the school resource officer position. There have been discussions in the school community about shifting that role and and you know that could change so we will respond to that as decisions are made but for now we're carrying that through. So why if we're retaining the same services why the increase at all? And that is because the cost of goods and services increases the cost of health care increases. We provide cost of living increases to our staff and so you know supporting the same services to our community is always going to cost a little bit more each year. We have a lot of staff doing a lot of this work. We also have an annual five percent increase for funding capital improvements because those you know the cost of goods continues to increase and that's a value that folks have said they want to see us continue to improve infrastructure. We have also made some modest increases to funding regional programs that support our community like town meeting TV. The Winooski Valley Parks District and we are increasing our contribution to the Winooski School District newsletter. You know Winooski doesn't have a local paper or a formal way for people to keep track of what's going on so we're trying to build that resource out that makes it to every every home every mailbox in Winooski so that people can keep up with us. So now we have the hard numbers. These charts show how our expenses and revenues breakdown across the general fund budget. So when I say general fund that doesn't include like water and wastewater which are separate through utility bills. Those are a separate fund. So what you can see here is sort of where we're getting money from. Most of that being taxes but a good chunk of it coming from other revenues as we try to diversify our revenue streams in Winooski as well as how our expenses breakdown you know where is that revenue going. So I just mentioned general fund versus other funds. Here are the other funds. You can see our water wastewater rental registry etc. This is sort of all of the money that is being managed with city services in this picture here. I do want to while we're at the slide call out you'll see something on there called TIF. If you're not familiar TIF stands for Tax Increment Financing District. This is the funding mechanism that was used to redevelop the downtown several years ago. We are still paying that debt off and so you'll see that 23% of this pie is going to those debt payments. We should be paying that off in I think 2024 and at which time the revenue from that development will come back to the city and the education fund. So I just wanted to mention that as a preview as we're going to be having community conversations about how do we address that what do we do with that new revenue. And this is another way to look at things. Service areas breakdown kind of a more of a values look at where our money is going. So you know roughly 30% is going to public works and upkeeping our city and infrastructure about 20% to public safety 10% to community programs etc. So this is just sort of another way to look at the how the spending goes. Wanted to call out you know in addition to the municipal tax increase of roughly $47. We are also doing rate increases to water and wastewater. We started this I think two years ago. The rates have been stagnant for quite some time and we're no longer keeping up with maintaining the infrastructure that supports our water and wastewater facility. So we have been doing incremental rate increases until we can get and I think maybe it's another two years until we're at a sustainable level where we're collecting enough from rate payers to actually keep up the facility. So the total there is probably about $39 a year in increased water bill for the average home in Manuski. So we wanted to share this tax rate history something I often hear in Manuski is how high our taxes are. So this slide in the next we'll have some useful data. We've got seven years of our municipal tax rate history here and so what you're seeing is that in previous years leadership kept that rate increase very low in anticipation of some big asks which you see happened in FY19, FY20. That's the mainstream revitalization funding, the pool rehabilitation. So those things happened that work is underway and now we are trending back towards keeping a sustainable tax rate increase you know these last two years we've been under the cost of living so that our spending isn't exceeding the growth of people's paychecks essentially. And so here is a comparison of Manuski to our surrounding communities. Basically the takeaway here is that we're a small city with a small tax base providing the same services as other larger communities so there are less of us contributing to the pot. A one penny raise on our tax bill nets about $50,000 you know that gets us maybe one employee. The same one penny increase in our neighboring communities gets four or five times as much revenue for the city. So anything that we add on anything we do just the regular increasing cost of goods and services is going to be more expensive for us than for Burlington or Colchester or somewhere like that. But what you can see on here is a place like Berry that is more comparable in size. Our rates actually lower than theirs. Wait are we lower? Yes yes yes just you're right. So that's sort of I think that helps contextualize that for Chittenden County we have a high rate because we are so small and we're doing more with less. But when you look at when you compare us to more communities that are more similar it's it's just different. We have a different landscape that we're working with financially. Um and also in a previous slide we showed we're we're we've seen about 0.7 percent growth in our tax base because of development in the city which also brings in about $50,000. So even the development and the growth that you see that folks feel like is happening so rapidly it's not as much as it looks like it's not contributing as much to the pot as you might expect. You know all of our development is happening on our gateways on Main Street and East Allen Street. It's very visible and noticeable but in you know in the majority of the city that sort of growth isn't happening so it's not as much increases as you might expect. So moving away from finances just wanted to share some you know what can you look forward to in the coming year. Obviously we will be continuing to respond to changing needs from the pandemic. That's not ending anytime soon unfortunately and so we will continue to adapt. I mentioned earlier the grant for the new equity director. We received an additional grant to do an audit a policy audit to look for inequities in our local policies and look forward to establishing another advisory commission to help us. Staff are also engaging in a citywide traffic calming policy and a parking study. So the pressure of growth and development has you know made things like this more apparent to people. There are concerns about too much traffic not enough parking etc. So we're going to get some professional support to help us address those concerns and as I mentioned earlier we are also focusing on more sidewalk improvements. We have a historic preservation study underway and we are going to be looking at a citywide reappraisal starting maybe this year maybe next year. We have been ordered by the state to do so as home value homes sales have continued to get further and further away from my current appraised values. As Jesse mentioned we look forward to opening the pool finally this year and also beginning that main street construction and then lastly just want to because this isn't something we are doing but because it's important to the community the noise mitigation program from Burlington and the airport will begin its pilot later this year and so we'll be participating in those discussions and making sure that our residents are up to date and we'll be able to access that program when it is available. So that's enough budget two bell items will be on there two questions for residents. The first one is in response to the state's creation of a legal commercial cannabis market. So this question is asking would you like to see retail cannabis businesses here in Manuski. Voters have to opt in to allow that kind of business that the state has allowed and would be licensing in fall of 2022. So we will spend if should voters move this forward council and staff will spend time doing any updates to ordinance or regulations locally to make sure that that those businesses could operate safely. The second question comes from residents who wanted to see this on the ballot. So this is a non-binding advisory question asking if we as a city should urge the state to halt F-35 flights. Regardless of how the vote goes the state will not be bound to respond in any specific way but a lot of folks wanted a chance to voice their opinion on this topic again now that the jets are actually here. So those are the two items that will be on there in addition to budget and council and school trustee seats. Christine can I ask you a question about the cannabis. Certainly. So will every town regulate cannabis retailers separately is every town can do its own or regulations but everyone has to vote in order to allow it to happen in the town. Is that my close halfway. So the state will be regulating health and safety and the things that you we could decide on locally are where should these businesses be allowed. Do we need to have specific nuisance controls for them? That's sort of I don't know Jesse if you want to add anything. No that's absolutely right land use planning since at the municipal level the health and safety setup with the cannabis commission at the state level. Gotcha. Okay. Okay. Thank you. Um with that if Jesse if you would like to let residents know all the ways that they can vote this year. Sure we have many ways you can vote and if you live in Winooski you should be receiving in the next couple of days a postcard with this information on it as well. We will not be mailing ballots out to every home but there are many ways you can vote on or before town meaning day. So you can vote at home you can go on to the state's website that's listed here mvp.vermont.gov and request an absentee ballot. We will then mail you a ballot you can vote at home and return it to us either before town meeting day or on town meeting day which is March 2nd. The deadline to request about absentee ballots is February 26th just to make sure you get it by the by town meeting day. You can also vote in person early or on town meeting day. So starting on February 10th which is next Wednesday a week from today you can come into city hall anytime between nine a.m. and three p.m. and vote at vote in person at city hall then and your ballot will you'll receive your ballot then you can return your ballot then and be done or you can vote in person on town meeting day and that process will be the same as it's been in past years. The polling place is located at the Winooski senior center which is at 123 Barlow street and is open from 7 a.m. to 7 p.m. Of course on town meeting day we will have some COVID restrictions we will be required to wear a mask you also are required to wear mask in city hall we ask that you socially distance and respect the guidelines. I also do want to clarify because there was the ballot item on the November ballot in Winooski to to approve the charter change to allow all residents to vote in municipal elections in Winooski that did pass in November. However it is still before the legislature who must approve it before it's passed into law so currently in Winooski only U.S. citizens can vote on town meeting day so that those are all your options again request an absentee ballot vote in person at city hall vote in person on town meeting day. Sounds like you're well covered in terms of folks coming out to vote. I hope so that's our goal make it as easy as possible for as many people as possible. That's fantastic I totally respect that. Now tell me also will you all also be doing an additional presentation on the budget to the community prior to town meeting as well? Yes so we will be so obviously there's this broadcast this this evening which I understand will also be available for folks to watch in the future of course at their leisure. On February 17th at 6 p.m. we will be holding a joint city and school community presentation traditionally this is our annual community dinner and of course we can't do that this year we look forward to doing it next year but we will still be holding that information session and then of course as required by state law the night before town meeting day the evening of March 1st the mayor and I will be doing a virtual budget presentation again as will the school. Okay so many opportunities to to hear more about more dig in deeper ask some more questions etc about the budget as folks get a chance to look at it and see what what what they're voting on. Yes fantastic yep go ahead Diane if I can just plug one more thing if you are watching this and are interested in additional information or want to see this presentation on the ballot item if you go to our website whenuskivt.gov backslash town meeting all of this information is posted there so again that's whenuskivt.gov backslash town meeting thank you. Fantastic great and so I mean my takeaway and I didn't have much time to to prepare or anything but sort of the takeaway at the end modest increase in in taxes it sounds like right maintaining any of the services you've worked really hard to put in place and a couple of ballot items I think the cannabis one people have heard a lot about I suspect I don't know and then the F-35 certainly has been on people's radar quote unquote as well so so no no big surprises is that safe to say that is right no big surprises no big new asks we are continuing to move forward with the the established vision that residents have asked for. Fantastic well that that's probably a fantastic line to end on right there is there anything else we forgot or anything else you want to let folks know about before we wrap up. I'll just say early voting starts next week so town day is coming soon. Oh it certainly is yeah next week gosh okay so you remember all those options for places you can vote and how you can vote um nicely we have our phone number here and email addresses for both of our guests with us today um the mayor and the city manager in Winooski so hopefully you have much information for you all to to the folks out there who are listening watching to vote on on or before town meeting so thank you both so much for coming out we really appreciate it it's a great presentation thank you Diane and thank you to town meeting tv great thank you thanks for joining


Char is a byproduct of biomass gasification and pyrolysis, which can be used for various purposes, including soil amendment and the production of activated carbon and carbon-based catalysts. Depending on the biomass feedstock, gasifier design and operating conditions, char properties may vary significantly. In this study, the effects of biomass type, switchgrass, sorghum straw and red cedar, and equivalence ratio, 0.20, 0.25 and 0.28, on the physical and chemical properties of char produced from gasification were investigated. The results showed that the Brunar-Emmett Teller, BET, surface area of most of the char was 1-10M2 slash G and increased as the equivalence ratio increased. Char moisture and fixed carbon content decreased while ash content increased as equivalence ratio increased. Corresponding Fourier transform infrared spectra revealed that the surface functional groups of char differed between biomass types, but remained consistent with changes in equivalence ratio.


The challenge of the Yukon. The King on New Millennium! The Wonder Dog King, swiftest and strongest of Eskimo lead dogs, blazes the trail through storm and snow for Sergeant Preston as he meets the challenge of the Yukon. Sergeant Preston was typical of the small band of Northwest-knotted police who preserved law and order in the new Northwest country with a greed for wealth and power led to frequent violence and bloodshed. But in spite of the odds against them, Sergeant Preston and his Wonder Dog King met that challenge and justice ruled triumphant. The bank in Lawrenceville was nearly empty when the tall broad-shouldered man entered it, closing the door behind him. Well, Charlie, let's see. Let me show you how much you've got in here. 50,000 and gold is mine in that safe of yours, young fella. All right. Here's your balance. Don't bother putting that gold away. What? Don't bother putting that away. I'm taking it with me when I leave and more of a sign. A gun! That's right, old friend, but this is a stick up. You can't get away with this! I don't show you! No, you don't! You see what happened to him. You get busy turning the combination on that safe or you'll hit the floor next. Yes, sir. Come on, quit, darling. I ain't got all day. He's turning it as fast as I can. Hey, what the? Drop that gun, mister. I'll put your hands up. Constable Riley, you came in just in time. Yeah. I heard the shot as I was coming down mainstream. He shot Charlie McDonnell. He meant to kill him.  Well, he ain't gonna do any more killing. Put those bracelets on him, Ted. He'll hang for attempted murder. Two days later, Sergeant Preston haunted his dogs before the jail in Lawrenceville with a faithful king at his heels, walked into Constable Tom Riley's sparsely furnished office.  Oh, aye, anyway. Fine term, and you? Oh, well, I can't complain. Sit down. I heard a couple of days ago that you were heading this way. Couldn't figure out for it first. And then I nabbed this Jackson's fellow from the robbery. I kind of thought maybe you knew what was coming off. I was talking to Ted Hammond as I came into town. He told me about your prisoner. Yeah. Ted will remember Jackson for a long time, I guess. He's kind of a quiet sort, and having a gun pointed at him ain't exactly his idea of a good time. I suppose not. Jackson's going to hang, eh? He sure is. He made a big mistake when he turned his back to the door in the bank. I took him by surprise. Now, most of them killers are too smart to take a chance like that. Yes, most of them are. Well, I'd like to talk to him if you don't mind. To Jackson? That's right. Well, I ain't got anything against the idea, but what intonation you got to talk about with him? We caught him red handed, right? Nevertheless, I'd like to talk to him. Eh, that's alright with me. I'm inclined to think that you've got something up your sleeve, Sergeant. Maybe that's just your suspicious nature, Sam. Well, here's Jackson. Uh, Sergeant Preston wants to talk to you, Jackson. Well, I don't want to talk to him. You ain't got much choice, no matter. Alright, Sergeant. Can you go in with him? Yes.  I'll call when I'm through, Sam. Yeah, sure, Sergeant. I'll be right in the office.  Might be I'm unlucky. Do you think luck has anything to do with it? I sure. But had good luck, wouldn't be slated to hang in 24 hours. There was a bank robbery in Curtis City seven years ago. The thief murdered a man making his getaway. Was that luck? He got away, he was lucky. He got away, alright. At the same time that a man named Dan Connolly disappeared. What happened seven years ago don't mean a thing to me, Monty. A lot of people in Curtis City believe Connolly robbed the bank. Ever been to Curtis City, Jackson? Why? You might know Connolly. His wife and son still live there and his son's a fine young man now. Yeah, yeah. He and his mother have had a bad time of it. But even so, he won't sell any of his father's possessions. He still has his father's watch and gun. What do you mean, bad time of it? The mind they'd invested in gave up. Gave up? Well, a man ought to look out for his family. This means nothing to me, Monty. You're about as tall as Connolly. Maybe not so heavy and of course you've got a beard, but... I'll see you here. Why are you talking about Connolly? Curious thing about that robbery. The stolen gold was part of a new wish you and the rest of the issue has never been released. Oh, whatever. I ain't... The thief spent one of those gold pieces a few months ago. I have that gold piece. Hold on to it. It might bring you luck. Jackson, the bank in Curtis City is mighty anxious to recover that gold. It's a big reward for its return. Get to the point, Monty. I got one of Connolly's old hats and King here caught the scent of it. He recognized that scent and he walked into this building. You win, Preston. I thought my trail was cold. But when you took over, I knew it was just a matter of time. You purposely bungled a robbery here and shot him. I hope the constable would shoot me. But instead he captured me. And I will hang. But it's better for Joe Jackson to hang. That won't disgrace my kid. Like it would if I was taken back to Curtis City to hang as Dan Connolly. You... You've seen my son? Yes, I have. You say he's having a tough time? He's a little young to show us the much responsibility. Oh. There's a reward standing for the return of the gold, huh? That's right. Well, up to now you've been calling the card and you've been writing every turn. You know who I am, but you don't know where the gold is. No. I don't know where it is. I do know. And I'll make a deal with you. No, no, no. It ain't what you think.  You're no better than that, Connolly. Sure. You can take me back to Curtis City if you want to and pin that job on me. But that ain't gonna put the gold back in the bank. Not unless we find it. No, you won't. Sergeant, I'm gonna hang anyhow. Where I hang, don't make much difference, as I say it. The man that's slated to die usually gets one request. Yes, that's good. I want 24 hours of freedom.   But I got a reason for asking that. Just 24 hours is all I want.  You'll get the gold and I'll swing for taking it. No, you ain't got any reason for handing me a favor. You want to leave, Tom? Yeah. I want to go back to Curtis City. And I want to go back on my own. What's the answer, Molly? Late that night, after Sergeant Puston had talked to him, Constable Tom Riley stood in his office with his keys in his hand, then putting them back in his pocket to walk to Joe Jackson's cell. Yeah, I just want to make sure everything's all right back here, Jackson. Yeah, everything's all right, Constable. Yeah, yeah, so I see. What was that? What was what? Well, I thought I heard something out in the office. Well, you didn't see anyone out there? No, no, I don't. Well, I guess I'll take a turn outside. Good night, Jackson. Good night, Tom. Then I'll put on my mac and arm. That'll be good to get some fresh air.  Dogs all in harness and everything. Oh, I just have a hunch that I might have to follow a man. Well, it's nice and clear out. Got a move, too. Wouldn't be hard to keep a set of tracks inside on a night like this. What? Someone's leaving the back of the jail. Yeah. Well, my keys are gone. When I turn my back on Jackson, he must... Come on, let's go and take a look. Why don't we find open, Sergeant? There he goes, Tim. Michael is ready to travel. Come on. Get the dogs up, King. I'm aboard, Tim. All set? Yeah. Sure, Sergeant. All right, fella. All in King. All on you, Mellow Mule. Early the next morning, young Peter Conley was busy sweeping the floor of a bank in Curtis City. At the far end of the room, the guard lounges comfortably in his chair. We're not open yet. We're open the door and telling Pete. He don't seem to hear you. Yeah, sure, Mr. Marlin. I'm sorry, Mr., but we're not open yet. If you'll stop by in 15 or 20 minutes. Oh. How come you're in there, then? You work here? I come in early every morning to sweep the place out. Well, look, kid, I'd like to talk to you. You step outside a minute? Well, all right. You ought to have a coat on. No, if you'll just be a minute.  You're pretty young to be working, ain't you? I'm nearly 14. Uh, you... Don't you have any folks? Sure. What about your father? He's been gone for quite a while, so there's just Mom and me. What happened to him? I don't know. Mom never said she knew exactly. But he went off on a hunting trip one day and never came back. Well, that's tough, kid. Oh, it's not so bad. A lot of people in town think he robbed his bank, but Mom and me, we know he didn't. He just had an accident while he was... Oh, sure, sure, kid. Someday everybody'll know like we do that he didn't steal that money. Well, you can forget it, kid, because I robbed that bank. You what? I pulled the job. That's why I want to talk to you. I got the gold. It's holed up in the floor of a cabin about 15 miles north of town. The only cabin this side of Blackstone Creek. Oh, God! But I'm stuck with it. It was part of a new issue. I didn't release the rest of it after the robbery, and that means the minute I part with one of them coins, the law will be on my neck. Then you're the thief. Yeah. Now I want you to fix it so I can swap what I took for dust of the same value. I'll make it worth it while, kid. And I'll take it if you can use some cash. Why, uh, just a minute. Hey, where you going? Ah, I have to go inside. Mr. Marlin, Mr. Marlin. Hey, hey, hey. What's he here for? You're all excited.  What? Quick, before he gets away. Before who gets away? The man who robbed this bank seven years ago. He told me where the gold's hidden. Oh, kid, but he is... Hey, what this boy told me is true. You better reach, Mr. Marlin. Oh, so you went back in for him, huh? No, you're not going to fire that gun, and you know it. Hey, Mr. Marlin, he's getting away. I'm sorry. If I was more sure you got this great.  Get away! Help me! No! Good work, Shane. Call the cars off, Manny. Come on, sonner. Here's our man, Tim. Hey, this time he won't get away. He's got some teeth. Talk to the president. Hello, Peter. This man made a break from the jail in Lawrenceville, and we saw him. He was running away from you in the garden. That's right, sir. He told me he robbed this bank seven years ago, and that he had some gold hidden in the floor of a cabin just this side of Blackstone Creek. He robbed the bank here? Well, we'll go out to that cabin right now. Well, that means that Jackson has one more robbery and murder on his record. Well, he's going to hang this afternoon. Now, son, I don't know whether you know it or not, but there's a big reward for the return of that stolen gold. That's right. Come on, Jackson. The two of us are going to the jail, and it'll be a one-way trip for you. Fine. I'll go inside the bank for the boy. Gee, I forgot all about that reward. Wait until Mrs. Snyder hears about this. He's the president of the bank. I sure am glad you finally caught the trust. Yes, he's a fine boy. I knew you were there, Sergeant. I saw you watching me. Tell me, did it look real? I'm sure he'll never suspect the truth. Well, uh, hang as Joe Jackson. That's right. And the boy will get the reward. Yes. Thanks. Justice has been more than fair to me. Yes, fella. Thanks to your help, the case is closed. These copyrighted dramas originate in the studios of WXYZ Detroit, and all characters, names, places, and incidents used are fictitious. They are sent to you each week at the same time and reach you from our transcription studios.


So my name is Michael, Michael Ulbricht. Michael Ulbricht, if you wanted to do it in German, but Michael is okay too. So I'll be talking a bit about updating embedded systems. Let's start about me. I've been working on embedded Linux for quite some time, working for KengoTronics the whole time, and this is mostly support kind of tasks. Getting more hardware to start running Linux, helping with things with our bugs, basically to allow our customers to do their own applications, right? So we do the base Linux operating system, and they kind of focus on their own applications, the actual stuff that they want to do with their hardware.  This is something that's supposed to work. So I've seen that for quite a few projects in over the last few years. It's getting more. In the beginning it was more like updating, do we have to do that? Maybe we don't need to update our software, it's okay. And nowadays, updating comes more and more important. And as I've said, I've worked with a lot of different projects. So my focus is less on how the individual, the updating process itself works. But I want to focus here today on more, what do you have to do to integrate an updating tool and updating software, product, whatever, with your own application, your own product? Because, I mean, we've had a talk yesterday about updating, and if you look at other conferences and look at the talks there, the videos, you'll find several talks about updating software that describes the software itself, and it's important. And it's not easy to get right, but we're getting there. And that's the stuff that can be shared. But there are a lot of parts of the updating process itself on a particular device that is device-specific or in ways where you have to add your own features, your own stuff to make it really work. And that's the parts where I want to focus on. So, a bit about updating first. I'd like mostly to focus on the standard, simple A-B setup kind of updates where you have one running system and then you have a separate partition where you can write the new version of your operating system into it while your system is still running. And then, when all that process is done, then you say, okay, now I'm finished and I can start the other operating system, the new version of my operating system. And if that fails, that's the important part. Maybe there's some bug in there. Maybe the rating the operating system failed in some way and didn't detect while it was flashed. Or maybe in this special use case, there's some outside circumstances that make the startup or whatever fail. So, in that case, we want to go back to the original version, the previous version, that worked, right? And if you look at that, writing the update itself, that's mostly generic, right? I mean, there are a few ways to say I write a file system image to the disk or I format a new file system and extract a toggle into that or these kind of things. But this is not really project specific. That's something you can implement once it can be tested really well. But when it comes to checking, okay, so my system is not starting. What does it mean my new system is not starting? There are a lot of ways that can fail and many of those are project specific. So, that's part of where I want to go, right? We need to detect those failures and then we need to say, okay, something happened here and I want to go back to the old version and then maybe there's some user interaction there. Do I say explicitly? Okay, something's wrong, can we go back? Depends, really, it's really on the devices. Sometimes it's some embedded IoT device then this has no user interaction and it has to be automatic. But often there are devices and then operators in front of it and say, this is not working. I've just applied an update and now it's not working anymore. Can we go back to the last one? These kind of things and that's when you need to integrate the update mechanism with your own system. So, let's start with the failures. I'd like to classify at first what kind of different categories there are. So, and depending on those, how we can react and how difficult they are to work with that. When they start a failure, this is simple ones and that's typically what you see when it slides. I remember from yesterday there was this, okay, we have installed a new and then there was three lines on one slide where we said, okay, we start a new image and then there is our own, we talk to our update server again and then you can hook in something else to check if the new system is okay. That's the start-up. A lot of stuff can be detected on the first start-up if it comes up and it works. But some errors come later either because some user interaction comes afterwards and only with that user interaction things start to fail or there's memory corruption or there are memory leaks that take some time to occur. So, maybe the system starts but it starts to break down afterwards. And then there is a call this update preparation errors that means you want to install a new update and you don't get to the point when you actually write something, right? You can try that again or it still doesn't work and maybe you can go to the old system and then there's this, I call it update errors and if they are permanent, that's a problem because if you say, okay, I have a system that is running but try to write an update and it fails because the update process is broken and I cannot go back anymore to the previous one. So, we have to be really careful there to make sure that that doesn't happen or there's even more fallback. But at the end of the day, at some point, the effort to work around or to handle those issues gets pretty high and the probability that they occur pretty low. So, at some point you need to stop and say, okay, this is enough, these are the things I check for and for everything else, okay, the device is bricked and we have 0.001% boards that fail and then we can replace those and that's okay. So, failure detection on startup. The most important thing there is first, the hardware watchdog. If you're doing these kind of things, it's pretty mandatory that you have a hardware watchdog that can detect problems and booting because at some point it might be the Linux kernel that's basically just not starting or gets stuck somewhere in hardware initialization and the only way to recover from that is when a hardware watchdog triggers and reboots the system and say, okay, here something went wrong. So, we start the hardware watchdog in the bootloader, that's important too, the bootloader is the first step here. Then keep it running, that's many, many drivers in the kernel by default will reset the watchdog hardware when the driver initializes and it will not activate the watchdog until the user space activates the watchdog again. So, there are ways that you can basically tell the driver not to touch the watchdog at the beginning or the state of the watchdog but you need to make sure that that happens actually. And then system D comes up, so that's one part I'm always using actually, system D has really great infrastructure for that, so system D starts, opens the watchdog and starts triggering that, so as long as system D itself is in a useful state, it will continue to trigger the watchdog and as long as that happens we say, okay, system D is okay and system D will handle all the other errors and propagate those correctly. That brings me to the next part, system D. Don't forget to handle all cases because system D will happily trigger the watchdog while it's stuck in a situation where basically nothing works. For example, emergency and rescue targets. System D by default is configured in a way for a desktop user or a server where an administrator can log in and say, hey, what's going on? What went wrong here? And so if the FS check of the root file system fails or at the critical file systems or if you cannot reach your default target system, D will start these rescue targets or emergency targets and then you may get a shell there but for an embedded system the shell will help nothing because there is no one in front of it that can actually do something with it. So you need to put some service there that will actually do something useful like restart your system. And then we come to the actual applications and that where most of the work usually is for the individual devices, for the individual projects is you need to figure out what do I need to check to verify that's still running to make sure, yes, my system started and yes, it's still working and it's doing its job. System D will give you a lot of tools for that. There's a watchdog per application, basically the SD notify hooks where you can say, yes, I've started and then later on you start pinging. Yes, I'm still here, I'm still here, I'm still here. And if you stop, then System D will either restart your application or kill it completely or act on that depending on the option, there's the failure action basically or there's the start limit stuff where you can say, okay, if the service restarted three times in five minutes then maybe it's not going to start again properly so let's do something, maybe reboot the system. Or if you prefer to fail immediately it's the failure action to say, okay, this service failed in some way, let's immediately reboot the system. These kind of things help to propagate errors from the individual applications to System D and from there you can then restart your system and say, okay, now the boot logger is again here at there to make the next decision which system is going to start. And that's pretty tricky actually because what do we actually want, when do we say the current system that's running is not working out for us so let's go to the last one. Basically, from a high level perspective if the error is transient, well, let's try again, right? Maybe it works out afterwards. If it's persistent then we can try again and again at some point we have to say, okay, well, it's still not working so let's go back to the previous system. But that really depends on what your individual requirements are, maybe this one part of the system, well, okay, it fails too bad but let's say running or the other part that's really, really important so we need to reboot into the old version and that really can be some kind of conflicting requirements because if you say, okay, I cannot reach my update server but the actual application is working and I want to have my new service running but I need to go back somewhere to do an update for later on so it's really a decision process where you have to look at all the possible failures and decide this is where I go back and this is where I stay with the current system and how often do I try to reboot and to restart individual services or restart the whole system. And to actually implement that, I'm fusing here Bearbox as a bootloader example that's basically because that's what I'm working with most of the time and it has this boot user. Basically what it does is you have a slot, this is one version of your AB scenario, is one slot, the A is one slot, B is one slot and it says okay, both of them have a priority and the boot counter and then Bearbox comes and I say okay, the priority is for this one is higher so I try this one and look at the boot counter, boot counter is greater than zero, minus one and then start this one and then in the user space you have to reset that boot counter and there are various ways where you can use that to implement different kind of scenarios where you say okay, I try this multiple times or a failure at startup is more important than a failure later on and these kind of things. The important thing is that we can reset those boot counters again because I mean, let's say there's an outside effect that causes failure, say the power is really low and the system starts and as soon as you start powering on additional components, it breaks down and resets the system and then you do that in a loop and say okay, three times, four times, my system failed, okay, let's follow over to the previous version and then you try it here three times, four times and then yeah, both boot counters are zero and what do we do now? We have no system that's seemingly working and then I can either say I guess get stuck here and don't do anything or we can say maybe there was some outside effect so if all systems say boot counter zero can't do anything, we start again from the beginning with reset the boot counters to some value to three or five or whatever you want and then try again and maybe that now the power is better and then it works again and also important atomic updates, this is something where I like it's built in into the barebox boot loader, it's something where a lot of people spend time fixing things because writing multiple values on an embedded system in an atomic way that when any time the power fails, it's still there in a consistent state that's pretty tricky because if you have an ant flash for example then doing okay, I need to erase this block and I need to write here and there and do things in a way that at any time the power can fail, that's pretty hard and so there's just basically a framework there that says okay, set these values and then now sync it to whatever spec and storage we have and then it's always an atomic update. So and now let's look at actually how we use that. Just a few examples of what you can do and this is basically one end of the range of options, you probably want to do something in the middle but this is okay for many cases, actually not what many people actually do right now is this, well it's started, maybe things can fail but afterwards everything errors that come there that just translate and it works afterwards again after we reboot. It's probably true in many cases because it will work for a time if it's an error that some say a memory leak, right? Memory leak that accumulates memory over time so it runs for three days and then runs out of memory we reset the system, it runs again for three days. That's okay under some circumstances because the system is running for three days which means at the very least it's running for three days in which time we can actually continue an update a new system. So we can write a new update in there and that's always the most important thing that you're always in a situation where you can write a new update so you can fix things. In this case we just reset the boot counter when the system has successfully booted, system that will help us with that because we can just pick a target and say okay we have this target and any application, any servers must be, is required by this target so if any of those fail then we never reach this target and then we have one service that waits for this target and says okay when we reach this target we have the next service in the chain and this one will simply just reset the boot counters for the running system. If you're a bit more paranoid you say well any errors may be permanent so we don't actually reset the boot counter after booting. So the system starts, the boot loader counts down the boot counter and then it's okay and then it's running and only if we do an explicit reboot of the system if we trigger a normal reboot for example after an update or for whatever reason else then we reset the boot counter. Say okay it's running for some time and then it's good and everything works and maybe we need to reboot for whatever reason or not then this is kind of like any failure later on it triggers reset, the boot kind of was not reset and so it's counting down. However well if you're developing or something it's often this well let's switch off the device and on again and do work and retry. Doing things it will you'll never actually reset the boot counter happens pretty easily that you run into the case that you accidentally start the old system because you didn't actually never reach the situation where the boot counters were reset. So this is the other extreme so there must be in most cases probably somewhere in between that you say maybe it's running for five days and now it looks good or you have an outside operator actually monitoring your devices and say hey this device was running for 10 days and this looks good so let's reset the boot counter. It's probably working properly now. It's really application specific device specific what kind of choices you make for that but what I like here for the system we have with system D doing the monitoring and barebox with its state and relatively isolated is the state you can modify with any tool here. You can choose when you update these states when you when do you reset the counters and you can modify how it reacts to your requirements. So let's go to a nicer topic and we're always talking about failures. Let's talk a bit of user interaction because update has a lot to do with users as soon as there is actually someone watching. Can be someone local. A lot of devices are starting to get this place more and more devices with this place and where I can display some info and see progress of an update and these kind of things or some remote operator that says okay I installed this update here and I want to see something. And then it helps actually because if you can ask a user to or the user can decide to turn the device completely off and on again you can use that to handle errors as well because well if you can detect it in your software maybe because it's a high level user interaction stuff that you can still trigger a reset of the whole system by turning the power off and on and you can use that okay the power was turned off we didn't reset the boot counter so it's one less and if you try that multiple times then we start the whole system at some point or immediately or we can reset the boot counters after power off and have this all counters for zero and after power doing a power cycle once we start again trying to do things really depends on the situation. And you can also say you have something in your UI to do yeah switch to the old system because this is not working or yeah these kind of things this is faster I think I don't have that much time and what's really important what I think is that they takes time even if it's running more or less in the background because you can still do the actual job if it's a device where a user is standing in front of it puts the USB again so I do run my update and then it says nothing for 10 minutes that's gonna be yeah the update is not working let's power off and try again. So adding information there to update is really important I think. So and also in case of error handling your customer says yeah it's not working and then say well yeah and it says the customer says I don't know why and if you don't have can pull out some information that's integrated with your application where you can pull in your log files that's pretty hard to debug afterwards. So not just the black box and I've put here the route it's one update system I know it because my colleagues are working on it that's just has a debug API and says hey I'm doing this and this and this step. So yeah that's it. Few links there but just questions. Getting pretty late no questions anymore. Okay I think then that's it for today.