Hello, everyone. This is the Circuit Python Weekly for August 9th, 2021. This is the time of the week where we get together to talk about all things Circuit Python. I'm Scott, and I'm sponsored by Adafruit to work on Circuit Python. Circuit Python is a version of Python designed to run on tiny computers called microcontrollers. Circuit Python development is primarily sponsored by Adafruit, so if you want to support them in Circuit Python, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join any time by going to the URL adafru.it-discord. We hold the meeting in the Circuit Python Dev Text Channel and the Circuit Python Voice Channel. This meeting typically happens on Mondays at 2 p.m. Eastern Time, 11 a.m. Pacific, except when it coincides with the U.S. holiday. If the meeting time has changed, we'll notify you via Discord. If you wish to be notified about changes to the meeting, we can add you to the at-CircuitPythonNesis Discord role. That's the one that Will mentioned. And there is also a calendar available that we try to keep updated if you'd like to subscribe to that. This meeting is recorded. We record the audio of the voice channel, the video of the text channel. If you would rather not have your voice recorded, you are still welcome to participate. The video of this meeting will be posted on the Adafruit YouTube channel at youtube.com. And the audio is released as a podcast. If you find this podcast is not available in your favorite podcast service, let us know. There is a notes doc to accompany the meeting and recording. If you wish to participate but can't make it to the meeting, you can leave hug reports and status updates for us in the document. We'll read them off during the meeting. The notes document also contains timestamps to go along with the video so you can use the doc to view only the parts of the video that interest you most. The meeting tends to run 60 to 90 minutes, so this gives you the option to skip around. A link to the notes document is posted in the hashtag circuitpythondev channel on the Adafruit Discord every week. Check the pinned messages to find the latest notes doc. This meeting is held in five parts. The first is community news. This is a look at all things circuitpython and python on hardware in the community. It's a preview of the python on microcontrollers newsletter. The second part is the state of circuitpython libraries in Blinka. This is a statistical overview of the entire project. And it's a chance to look at the project by the numbers separate from what we're all up to. The third part is hug reports. Hug reports is the opportunity to highlight the good things folks are doing, taking the time to recognize the awesome folks in our community. This is a counter to bug reports. The fourth part is status updates. Status updates is an opportunity to sync up with what we've been up to. Take a couple of minutes and talk about what you've been doing in the last week since the last meeting and what you'll be up to over the next week until the next meeting. The fifth part and final part is in the weeds. In the weeds is an opportunity for more long form discussions. These discussions can come out of status updates or be something you've identified ahead of time is too long for status updates. And that covers how the meeting will go. And with that, I will switch over to the note stock and start with community news. So community news is a preview of the python for microcontrollers newsletter. And first up, we have an article about the Raspberry Pi rolls out new documentation online until recently documentation for the non Pico Raspberry Pi boards was on GitHub and get in GitHub Markdown language. As of Monday today, a new documentation site Raspberry Pi org slash documentation has been built and deployed directly from the repository, which is github.com slash Raspberry Pi slash documentation using GitHub actions. When someone pushes to the master branch, however, people will will mostly be working out of the develop branch in the repository, which is the default branch when you take a fresh checkout. And also the branch you should target for your poll requests. And there's more information on the Raspberry Pi blog. Next up, there's now a new notable women business owners 2021 with its list of notable women business owners cranes recognizes those who have forged their career paths and then turned power New York City's economy. Women owned companies represent more than 40% of all registered businesses in the city and generate more than 70 billion in revenue annually. More freed founder and engineer at Adafruit Industries was selected among 63 recognized women among 66 or our site, 600,000 women of businesses in New York and the link there to cranes New York business. Next up is a circuit python day 2021 recap circuit python day 2021 was held Friday, August 6th with events leading up to the big day. Thanks to all the who contributed to make this year a rousing success. Here's a list of events you can watch on YouTube covering the discussions. First is show and tell from Wednesday. Next is Tim, aka foamy guys circuit python day broadcast. And then a Jeff Dan and Catney discuss circuit python. Lady aided did a circuit python board tour. And I did a circuit python deep dive. That's the roundup and missing on that is the Reddit AMA as well. We should get that on there. And we'll add that later. Next up the chip shortage challenges maker manufacturers. Two resources discuss the effects of the chip shortage. First chip shortage challenges maker manufacturers ate a fruit spark fund and other wellsprings of amateur innovation face a new normal. This is from IEEE spectrum. And then there's also a YouTube video called why there are now so many shortage in parentheses. It's not COVID. And thanks to foamy guy for dropping the notes in there. And thank you to Jeff for the link to the AMA as well. Next up. Python and visual studio code. The August 2021 release. The August 2021 release of the Python extension. For a visual studio code is now available. This includes a revamped Jupyter notebooks experience brought by the Jupyter extension now out of preview and it an improved way of sorting Python interpreters in the selection list. There's a link to the Microsoft Python dev blog. Next up is the state of Python in 2021. It's a review of many things happening in Python this year. It includes several sections. And this is from D programic program. Matica. I think that's what it is. And the sections are the ecosystem, machine learning and scientific computing, getting Python, learning Python, Guido van Rossum and more. Next up. We have the real Python podcast with Nina Zacharenko. The real Python podcast hosts Python East and Nina Zacharenko. The topic is start using a debugger with your Python code. And there's a link there. And that is it for the community news for this week. If you would like to know more or get subscribed to it, the circuit Python weekly newsletter is a circuit Python community run newsletter emailed every Tuesday. The complete archives are available at www.aiderfruitdaily.com. It highlights the latest Python on hardware related news from around the web, including circuit Python and Twitter. To contribute your own news or project, edit next week's draft on GitHub, go to github.com. Check out the drafts page there. And submit a poll request with the changes. You may also tag a tweet with hashtag circuit Python on Twitter or email cpnews.aiderfruit.com. And, yeah, I butchered the name of that website. Okay. Let's move on to the second section of the day, which is the state of circuit Python libraries in Blinka. This is a statistical overview of the health of the project meant to ground us in the numbers before we talk about how we feel about how things are going. First up, the overall numbers. Overall, we had 23 poll requests merged from 14 different authors. So thank you to all of our authors. Some new folks that I don't recognize is our Pavlik, our Dorsanod. So thank you to those new authors. We had seven reviewers. So thank you to our reviewers. As always, we couldn't have as many authors as we have without other reviewers. So thank you, everyone. Issues-wise, we had 24 closed issues by nine people opened by 13 people. So we are down nine, which is great. And as we can see by the number of people involved, we are growing. We're starting to hit the double digits, which is exciting. All right. Now for the core. We had 15 poll requests merged from 11 different authors. So thank you to all of our authors on the core. We had four reviewers. We have 13 open poll requests, but the oldest open is now 16 days. The one that was previously open over 100 days was a bored one, and we've since had, and I think merged a newer version of that, but we had to close the old one. So thanks to folks for doing that. And it's super exciting to see our oldest poll request at only 16 days old. That's really awesome. Issues-wise, in the core, we have 16 closed issues by five people and six opened by five people. So we are net down 10, which is awesome for a total of 433 open issues. The way that we track and keep track of our issues to make sure that we're at least triaging them is by using milestones. We have two issues currently not assigned to milestone. These are the ones that we need to triage. And then we have 29 open issues for the 700 milestone, which is our goal to fix things for the stable release. So that is kind of the where all a lot of the action is happening right now is on the 700 milestone. And with that overall, expect to see another pre-release this week. And it may be an alpha or a beta depending on whether we've kind of wrapped up all of the API changes. But please keep testing it. And if you find things that you think are urgent enough or important enough to do for 7.0, please mark them as 7.0 or suggest that we do that. Otherwise, we'll keep pushing to get 7.0 out the door. It's got a lot of really good stuff, so it's time. And with that, let me kick it over to Katnney for the libraries. Thanks, Scott. So this applies to all of the Adafruit circuit Python libraries, which is everything that begins with Adafruit underscore circuit Python underscore, as well as the community bundle, the Adafruit circuit Python bundle, and our cookie cutter. So few extra fun ones in there as well. So across all of that, we had eight pull requests merged this week by five different authors and six different reviewers. We had, that loses with 45 open pull requests. We had eight issues closed by six people and eight opened by seven people, so we are not even with 332 open issues. If you're interested in contributing to circuit Python on the Python side of things, check out circuitpython.org slash contributing. You'll find all of this information and more all of the open pull requests, all of the open issues and some library infrastructure issues. You can search the issues by label. So if we need to get better with curating our good first issues, but you can check out bug or enhancement if you're looking for something a little more complicated. But find something that interests you and leave a comment on it and let us know what you'd like to work on it. In terms of reviewing, take a look at the PRs. If you have the hardware, test it. If you don't, you can check it for syntax or spelling or style type things and make suggestions, leave a comment. And once you're comfortable with that, we can talk about leveling you up and there is a guide on contributing to circuit Python using Git and GitHub. So don't let that intimidate you and we're always available to answer questions. We want you to be able to contribute in the way that works for you. So in terms of library updates in the last seven days, we've had one new library. It's the IS31FL3741. Can't believe I made it through that.  Overall, we're continuing to see work to both the Adafruit and community bundles. And I want to say early, thank you to everyone who's been handling the breaking changes fixes, especially FOMI guy and Lysanmar appropriate. That's what I've got. Awesome. Thank you, Katnie. And next up, let's go to Melissa for a Blinka update. Hello. So Blinka is our circuit Python compatibility layer for MicroPython and Raspberry Pi and other single board computers. And this week, we didn't have much activity. We had zero pull requests merged. There are currently two open pull requests and there were zero closed issues by zero people and one open by one person. There are currently 60 open issues. There were 9,844 PiWheels downloads in the last month and we are still currently supporting 75 boards. And that's it. Awesome. Thank you, Melissa. All right. And that's it for the Stadia Circuit Python libraries in Blinka. Next up, we have Hug Reports. Hug Reports is a chance for us to say thank you to the folks in our community who are doing awesome things. This is done as a round robin, so I will start and then go down the list of folks in the note stock. If you're just listening in and not participating, then just don't list yourself in the note stock. But if you do want to participate, feel free to drop your notes in the note stock. If you're not able to make the meeting, if you're listening to this after the fact and would like to participate in Hug Reports, you can go to the Circuit Python dev channel, check the pin messages, and add your notes to the note stock and I'll read them off for you. So let's get started. First up from me is a Hug Reports DCD for taking time codes through my stream. Thanks to Keith the EE for hosting our Reddit AMA. Last week it was really fun. Hug Report to Katnie, Dan, and Jeff for the Circuit Python Day stream. I watched it and enjoyed listening to you all answer questions and show off your projects. Very cool. And then lastly, Hug Reports Dave P for testing my CMD-21 ticks change. Timekeeping on the 21 is really hard and so Dave's done some really good work and I was happy to have Dave's eyes on the changes that I made. I'll have to keep looking at that. And with that, let me circle around and read off Ann's notes. So Ann says, Hug Reports, or thanks to all who made Circuit Python Day and Circuit Python Week so wonderful, especially FOMI guy, Katnie, Dan, Jeffler, and myself. Next up from, do we want to go to Charles? Is that reading it off? Charles isn't jumping in so I'll say Charles has a group hug. And next up we'll go to Dan. Hello. Thank you, Jeff and Katnie. We did a stream together on Circuit Python Day. That was a lot of fun demonstrating things and just answering questions. Worked out very well. Very nice experience. Thanks to Keith, the EE who set up a really excellent Ask Me Anything for Circuit Python and Migrapython on Reddit on the Python subreddit. There were some extremely thoughtful answers, especially by Jimmo, about aspects of MicroPython and Circuit Python and the differences and various features and stuff. It's a very worth reading. And thanks to Nathan by 3G who, for their first PR, was to add board.led to Grand Central, which was something that I had meant to do in this massive cleanup of board.led and still missed. Okay, thank you. Thanks, Dan. Next up I have notes from Dave P. Dave says, Hug reports Dan H for putting me in touch with a cousin who contacted him for macropad help. I had not had contact with him for many years. And next up is Foamy Guy. All right, thanks, Scott. First up, hug report for Niradoc for starting up a repository to hold alternative keyboard layouts. So that's been a project that's been in the works for a bit. Niradoc got the ball rolling pretty well on that. To Ann and anybody else that was involved in organizing the festivities for Circuit Python Day to all the folks that streamed with me, Jeff, Dan, Lady Aida, and you, Scott, appreciated all of those streams, to Warrior of Wire for helping me out quite a bit on some core code, pointing me to some examples that turned out to be super helpful, and likewise to Jeff and Dan who helped me out as well and pointed me to some great concepts that I need to study up on. And lastly to community member Gary Z who made a really neat arc gauge widget for display IO. So that's been really neat to play with. And that's it for me. Thank you. Thanks, Fovey Guy. All right, next up is Jepler. Hello, I need to dig my notes out because I was reading Niradoc's keyboard layout repo and I'm happy to see that arrive. So hug report to them. Also to Ketney and Dan for the YouTube live broadcast on Friday, it's not quite the same as hanging out with friends, but it's a lot like hanging out with friends. So that was nice. Made it a lot more fun too. And thanks to everyone else who participated in Circuit Python Day, whether that was as a broadcaster or just as a listener. Another thanks to Niradoc and then Fovey Guy for quick feedback on something I implemented on the weekend. Circuit install dash dash auto, which I'll mention down in my status update. Awesome. Thanks, Jeff. All right. Next up is Jerry. Hi. Yeah, thanks to Jeff for the OB2640 webcam guide. Had a lot of fun with that. And the QR code reader module also fun to play with. And yeah, hugged everybody involved in the Circuit Python Day streams. Thanks. Thanks, Jerry. All right. Next up is Ketney. So let's see. I have a lot of important hug reports. So I will not say first and foremost today. So first up anyway, Mr. Certainly for tracking the questions and the various chats outside of discord on our Friday live stream so that we could focus on streaming and only have to track discord to answer questions. This was unbelievably helpful and greatly appreciated. Thank you to Keith, the E for organizing the Circuit Python Day circuit Python, micro Python red at AMA. That was excellent. Thanks to Jeff and Dan for an excellent stream on Circuit Python Day. And thanks to everyone who participated in Circuit Python Day to echo Jeff, who said everybody who was streamed and everybody who didn't. Our stream ended up going for a solid two hours and over an hour of that was just answering questions from folks who were asking questions all over the web. So that was great. Hug reports to warrior of wire and phony guy for working on fixing vector IO issues to Jeff for helping me automate renaming some files and get even though we went through a broken version and a couple of iterations before getting it right, it's still better than how I was going to do it.  A new example for the macro is what they submitted and they stuck through getting through CI failures, getting things set up locally to handle the failures and persisted through getting it passing. So I wanted to give them a nice hard report for that and look forward to seeing more of their contributions in the future. And that's what I've got. Awesome. Thank you, Katny. All right. Next up is Keith E. Hi. I wanted to say first hug to you, Scott for helping organize the Ask Me Anything thread that we had on Reddit. Thanks to you that I was able to get in touch with everyone and bring in MicroPython alongside Circuit Python for the AMA. And that made it really special to me. Thanks to Katny, Phillip, Jeff and Phomy Guy for helping with announcements throughout the week and throughout their streams on Friday. Dan, because as soon as he saw a question way before the scheduled AMA was ready to start, he jumped in and helped someone and answered their question. Scott and Jim from MicroPython because their answers were super thorough and they built off each other's answers. So I got a really neat perspective of the MicroPython approach and Neridoc they jumped in on a question they had a fantastic answer to and to the community as a whole and everyone involved in Circuit Python Day for making it a really cool experience. Thank you. Thanks, Keith. All right. Next up is Melissa. Hello. I wanted to start off with giving a hug to Dan for the great guide on customizing Circuit Python. Everyone who participated in Circuit Python Day and group had different else. Awesome. Thanks, Melissa. Next up, we have notes from Neridoc who says hug report to Jeffleer Jeffleer and Micronev for the traceback module hug report to Jeffleer for the CircuitPy...Circup install dash dash auto Jeff says he answers to Jeffleer. I'll go over to Jimmo myself, Dan, and everyone else who participated in the Reddit AMA and a group hug for the community and all those I forgot since I don't do that very often. Thanks, Neridoc. All right. Next up is Status Updates. Status Updates is done just in a similar way as around Robin. But this time we're talking about a little bit about what we've been working on in the past week and what we're doing in the coming week. It's a way for people to stay in sync and give tips or tricks to other people if they're working on stuff that we may have worked on in the past. So I will start and we'll go around just like we just did. So first for me I've been working on more fixes. I finally got my GDB Happy again thanks to help from Dan and the problem was actually the linker, so the linker got fixed and that's been making things happier which has been nice to be able to be in my GDB Happy Place again. So I'm working on the fix for the reload while doing Pulse In. I talked about that earlier working with Dave so I'm going to take a look at the DHT this week and see if I can't figure out why we're losing accuracy still. And then I'm going to look at more issues to fix to get 7-0 out the door so we still have 29 at least so and Dan pointed me to a similar one with the Sandy thing so I'll take a look at that as well. So yeah lots of bug fixes this week for me I did PR last week the Adafruit Beely UUIDs to the Nordic Numbers Database which I believe powers the NRF Connect app in terms of like having friendlier names for the UUIDs that it sees so that should be helpful in the longer run. And then some other folks are still working on the really workflow apps and I will be checking with them and making sure that we're making progress and if they find any bugs on the device side I'll make sure and tackle those as well but I am not a strong client side person so I will have to kind of rely on those folks to push those forward so that's where I'm at doing a lot of odds and ends. Next up we have Notes from Warrior of Wire who says tons of fixes simplifications ergonomic features and performance improvements in Vector I.O and no more vector shape so trying to get some API changes in for 7 as well and circling around we have Notes from Ann who says please keep sending news, projects and tips to cpnews.atafruit.com The summer we've noticed with these meetings being a lot quicker tend to be a lot less busy because folks are busy and taking vacation and stuff so that applies to that applies to the newsletter as well so if you know of cool projects that people are doing with Python, MicroPython, CircuitPython please email cpnews.atafruit.com and we'll get those out at the door in the newsletter and highlight the cool things that people are doing and with that let's go to Dan for his status update. Okay mostly I've been working on audio debugging which is I've spent several weeks on but I keep getting narrowing it down and finding more clues the latest thing I've found is that for some reason the sample rate of the audio that I'm trying to play makes a big difference even though it shouldn't because it's not sample rate only affects a few calculations so I have to look at that in more detail what I'm trying to fix is crackling and sometimes the play stops completely on something like the macro pad where other things are happening with memory access especially with DMA like the display or other things happening at the same time that are significant background tasks it's not necessarily that the other thing is DMA just that it's happening but it seems to be more common when the other thing is DMA and I've done a bunch of instrumentation like flipping pins when certain things happened and I can look at that output on a CLA and then look at the timing of things because I'm looking at things that are pretty timing critical and if I put in print statements but only I tend to put them in when the play is complete I might put them in the middle but it tends to affect the outcome of what I'm trying to debug just to make sure that you know our both channels busy at the same time why is that happening that shouldn't happen okay that's it for now thanks for this thing on that Dan alright next up is foaming game alright last week I worked on we wrapped up the remaining max size and on disk bitmap updates and the learn guides with a bunch of help from LaysamuraiPourPay so thank you I worked on some enhancements for the grid layout one to look up the contents by their XY cell position instead of having to know the index that they were added like the order they were added in and another one to add divider lines between the cells and I worked on helping to make the gauge widget that Gary Z created so that it can redraw itself when a new progress gets set instead of making a new one and adding it to the group again for this week I'm going to start looking into the PWM out and the other few remaining breaking change fixes so things that will need to get changed for your circuit python 7 I'm going to work on adapting an older dial widget to use the new vectorio API I think that's the only place where vectorio is in use so far so we're going to update that to work with the new API I'm going to hopefully finish up the divider line functionality in grid layout and get a PR submitted for it I'm going to try to clean up some code in the core that I've been working on and get a PR submitted for that it's to make a boundary fill function that will kind of do like a paint bucket style fill that's going to help speed up drawing some different things and then lastly I'm going to try out some other ideas I have to try to make that gauge draw a little bit faster and also get a repo set up for it with cookie cutter so that's what I got going on this week, thank you thanks foamy guy alright next up is jet player gotta find that unmute button so last week the main thing was a new guide on the learn system about uploading camera images to ate a fruit IO so check that out and always happy to have feedback from Jerry which I didn't mention in hug reports about that I implemented a new feature in circup you can now say well once it's released and merged you'll be able to say circup install dash dash auto and it will do the same thing that bundle fly does which is open up your code.py send it to find import which will list out the libraries you need so kind of a one-step hopefully to get the files you need onto your device I implemented a module called qrio for scanning qr codes and it was really easy thanks to a C library that I could use called quirk and I pull requested some random bug fixes into circup python midi I saw some activity there over the weekend a person's see I was failing but not due to their bug due to some other stuff and I thought well I can do a little tidying up here so anyway this week the focus is to create a guide on scanning qr codes and one will do it just simple well at least two examples one will do it simple just into the repel and the other will upload the qr code to Adafruit IO since we're doing Adafruit IO right now and it seems like based on memory problems that Jerry is going to mention probably you'll need to stick with the psp32 modules with psram for doing qr codes so that's kind of a bummer anyway and then plenty of miscellaneous you can stalk me on github and look at my github activity if you want to know more about what I've been up to which is exactly how I make these lists anyway thank you thanks Jeff next up is Jerry yeah so yes I played around with the qr code reader stuff that was a lot of fun and it worked really well on the kaluga and so I got the brilliant idea I'll just port this over to apico and it ran out of RAM pretty severely forgotten about the fact that the rover module has that big psram so I guess we'll not stick with that and then I thought what I'd like to do though and I don't think there's any reason why this shouldn't work is to convert the webcam demo over to the seola rover because it'd be a nice smaller package than the big kaluga since you don't need to necessarily have a display for that so I'll try and get that done this way you can see it works and then for fun I finally took the big step and got myself a 3D printer and got my first test print underway and so all of my spare time for the next six months is committed awesome looks cool jay yeah thanks next up is catney at least jerry understands the loss of time that comes with a 3D printer alright so I scrambled this together at the last minute and actually it ended up being huge so last week I updated the pcf 8235 and the deus 3231 guides to include the stem acute versions normally we replace products with the stem acute versions but in this case the originals are super still used by folks so they're new products and the guides are written to include both not to have one be a replacement so that's what's going on there we will eventually suggest folks start using the stem acute version but that'll be a slow change those are both real-time clocks by the way so there are now stem acute real-time clocks which are super convenient for example adding to your micro pad so I did some significant template cleanup involving moving code around to be bundle flag compatible also so it generates the dynamic circuit pipe content screenshot images updated some of the templates to use the dynamic images updated all the related links to the moved code updated examples to use rainbow so it's a single example in the template instead of a separate example for every guy using the template then I finalized the code side of my macro pad shortcuts example but I'm still thinking about what I want the shortcuts to be specifically I am open to suggestions it is a github text expander setup where it's common phrases used on github such as the LG M key sends looks good to me and the TFYC key sends thanks for your contribution what common phrases do you send in github issues and PRs let me know if you have any that are common to you or things that you see a lot that you think would be useful I created a PR to the learning system guides repository renaming all instances of main.py to code.py to prepare for updating the associated guides the PR is not yet merged as it will break over 30 guides and I'm waiting until I have Dylan's help to update the guides once we merge the PR and I hosted a chat on Friday we went through the full two hours because of all the amazing participation by the community asking questions and so on and thanks again to Bruce for the assistance with tracking the various chat avenues this week I ordered up the MCP 9601 so I can do the guide for that it's very similar to the old version but not similar enough to be included in the existing guide so it will get a new guide depending on Dylan's availability possibly do that main.py to code.py rename and learn otherwise it's not a rush the PR is in it's fine whenever we're ready to do it continue to think about what I want my macropad project shortcuts to be and eventually the plan is to do a guide on that one I'm going to potentially do a Neo key trinky guide specifically for sending time stamps from OBS into a document for keeping time stamps in notes during live streams or recordings and then various miscellaneous this is where it's sort of petered out because the meeting started and I needed to get back to earlier in the notes and then more template stuff once I get through all of that and or run out of other things to do and that's where I'm at. Awesome thank you Katni Alright next up is maker Melissa Hello so last week I was out sick much of the week fortunately I wasn't COVID but I still felt awful I worked on the macropad guide and finished up some code and started actually I finished up my coding on that and started writing up the guide so we can finish up my guide and possibly start another one and other stuff is I'm moving all my stuff into a new office to make room in my home and not having to constantly reconfigure everything and that's it. That's exciting I think that's something I'm going to do at some point too Yeah it's like you realize it's like it's kind of cramped in here and if you're trying to do multiple things and you're here you have to reconfigure everything Yup that's cool though Alright thanks Melissa and if you have cycles please let me know because I'd love your help with the code.circuitbython.work Okay yeah Actually I might have cycles after this guy's finished up Okay yeah just let me know I'd love to see some more work done on that but you have the skills that I do not have Thanks And that's it for status updates. Lastly we have In the Weeds In the weeds is a section where we just talk kind of whatever is on our minds Typically we have folks drop notes in the In the weeds section and we do have one topic here so hopefully Warrior of Wire is ready to talk in the weeds here Yeah so Katny requested in the chat kind of a status update on vector IO so there are breaking changes with the API in vector IO that I'm hoping to get in for 7.0 the 7.0 release of CircuitPython They are simplifications so now you can just like add rectangles and circles and polygons directly to your display groups instead of having to like proxy them through a vector shape that doesn't exist anymore you can just declare a rectangle of whatever color and just like throw it into your display group There are a just litany of issues that are fixed in the pull request that's out in vector IO It should be a lot more user friendly and actually work like the rest of display IO with these changes so I would recommend that any integration with vector IO be done against the pull request version because it like correctly handles things like display rotation if you install the screen you know rotated 90 degrees like a lot of my projects are Yeah but as far as the PR goes like it passes all the CI tests and everything just awaiting final sign off and getting ship I think FOMI guy tested it as well so there's confirmation from at least two people that it works on circuit python devices Okay so Go ahead I mean if you want me to test it as well I can otherwise it seems like it might be ready to go Sounds good to me Okay I'll handle that then and yeah the rotation is how I found it I was absolutely convinced that vector IO didn't work like I thought it should and it was the rotation problem it was not vector IO did work exactly like I managed to figure out it's just that the rotation didn't work and this project has the macro pad rotated 90 degrees Well warrior wire thank you for jumping back into this Yeah it's the way it should have been all along so thank you for your patience Absolutely so I will handle getting that merged then and then that we in the next circuit python 7 release Awesome thank you Thank you so much for the update this is much clearer it was hard to follow the whole conversation obviously Yeah so this was excellent thank you very much for taking the time to explain and we'll get that taken care of Cool thanks that's all I have Awesome and that's it for in the weeds so now I will wrap us up this has been the circuit python weekly meeting for August 9th 2021 I'm going to scroll down to the bottom of this dock that tells me what to say Thank you to everyone who participated if you want to support Adafruit circuit python those of us that work on circuit python consider purchasing from the Adafruit shop at Adafruit.com the video this meeting will be released on youtube at youtube.com slash Adafruit and the podcast will be available on major podcast services it will also be featured in the python for microcontrollers newsletter which you can sign up by going to AdafruitDaily.com and check the python for microcontrollers newsletter box there it is a separate site because it is a separate list from the Adafruit.com stuff so it's just for the newsletters that's all you'll get by signing up here and the next meeting will be pull up my calendar next Monday the 16th at our normal time which is 2pm pacific 11am wait 2pm eastern 11am pacific that's what I get for talking and switching browser tabs at the same time this meeting is held on the Adafruit discord server which everyone can join by going to the URL adafru.it slash discord to be notified about the meeting and speak in the meeting you can ask to be added to the at circuit python role on discord and with that we hope to see you all next week thanks to everybody for taking the time hope you have a great week and we'll see you on the discord thanks everyone


Welcome to Mali Pavilion in Expo 2020, the biggest event in the world with 122 countries coming here for connecting minds and build to the future. We are here in the Mali Pavilion and the Mali Pavilion welcomes you with women and with beautiful sunrise made by our photographer Amjad Traoré and this other photographer Kumi.  Welcome to Mali, welcome home, please enter. So how many smiles do you have in Mali, how many people? You have 20 million people with smiles, 20 million people welcoming you with smiles. So like for example tourists are welcome? Tourists are family, we are in the pavilion of hospitality. So in Mali we consider people like family, visitors are never tourists are never tourists are never visitors, they are always family. That is why it's a pavilion of hospitality a meeting place. What do you show here? Here we start the story of Mali with the river of gold and this is the river of gold with these fishes, these fishes are the copy of the puppets made by Bozo. So who's a Bozo?  But we have a wall of the masters of water but before coming in this wall we start the story by the story of Mansa Musa because Mali pavilion is about connection and we wanted to start this connection with the Middle East and we wanted to start with the connection of this man the story of this man well known the biggest the richest man in the world but Mansa Musa is well known for his generosity. When is Mansa Musa? That was a long time ago. It was a long time ago it was the 10th emperor of the Mali empire and had a reputation that preceded him all the way to Europe and Middle East. So this is the map? This is the map of the river of gold and in Mali when you are talking about history about culture we always talking about opportunities. So between the story of Mansa Musa and the story of the empire of Mali we have the trade of gold because Mali is the third producer of gold and gold is very important in Mali. The whole world runs on gold right? Mali needs gold in every country so there's customers everywhere. Well in this pavilion you will find another gold. A lot of gold. You will find another gold. The river is in gold it's Sambo. The trade of gold it's about opportunities but you will find another gold. Gold is not only about mining. Gold is also about behavior, about values. That's what you are going to discover in this country, in this pavilion. So this is the map of the river of gold with famous cities, Segu, Bamako, Mopti, Nafunke, Markala, Jene. And you are going to discover all these cities along the journey. First of all we start by Gau. Gau is along the river. The gold river, the river of gold is the Niger river. We have two rivers in Mali, the Niger river and the river of Senegal. And along the Niger river we have the city of Gau, the famous city of Gau and this young man Ibrahim Mayga is welcoming you, welcome to Gau, the city of Asya, the emperor of Songhai. And he introduces you on the wall of the masters of the water with mystical tradition, the culture of Niger river. We have here the Moptikan's race and here we have intangible heritage. We wanted to showcase also the connection in Africa. This is the original master of water named Bafaro. But in Bene, for example, and in other countries in Africa, they name her Mamiwata. So we are always talking about connection with the Middle East, with Africa here and also with Africa here. And as I said, when we talk about culture, we always talk about opportunities in hydro energy and aquaculture. So how much is going on with the hydro energy in Mali? Along this river, the hydro energy is very important because we use for to feed and it provides electricity. So a lot of electricity. A lot of electricity come from hydro energy in Mali. There's also a lot of sun, right? So you could be cultivating that. How much solar power do you have going on? Well, I can tell how much, but I can tell you that by now they are working on providing many energy, many electricity with solar and we'll discover that on the new projects and the wall of Bamako. But here I wanted also to showcase series discovered by Duggan. And this is the corner of children with the story of the legend of Mali Sajo and the myth of Tapamajenepo. So we continue the journey along the river of gold and we arrive in Seigu. We come to Seigu, the land of Shebertur and 4,444 Balazan trees, of which even the locals do not know the signifiant and the potteries, yes, very important in the city of Seigu, and made. And the idea of and made in the pavilion is very important. Artists, artistry, artisana, right? Artisana, artist, all the picture you see here, all the photograph you see, all the photo you see is here, have been made by Malian photographer. All the photo have been made by Malian photographer. This is for example, a photo from the artist Kis, the Bafaro, the original master of water by the photograph Jawara, Mofti by the photograph Jawara, and this also. So all the photographer of Mali helped to build this pavilion. And now we come on the wall of the people of office Tunisier because we have 1,200,000 kilometers of land and as country's large producer, this Mali provide all the West African countries in Uxden. So it's a very big opportunity there and as I said, when I talk about opportunities in Mali, always talk about culture. And this culture is the festival known as Yeraldegal, a fulani festival that meaning the crossing of the Uxden. It takes place in Jaffarabe and celebrates the crossing of thousands of cattle and the nomadic people of Mali with contents of poetry, music and dances. Another festival along the river festival sur le Niger, the Chihwara, well known in the famous museums, has a sample of braver and you will see always this sample in all the pavilions. It's the emblem of Mali pavilions, it's the belt of braver and we arrive here in the agriculture area because it's a land of agriculture and we are the third producer of cotton. And this is a big opportunity in Mali but it's not only about to be the third producer of cotton. We wanted to explain the deep meaning of cotton in Mali. This wall explains three things. This wall about knowledge, the science and symbol made by Foudemousa Sidibe, made by Foudemousa Sidibe and it's a sample of Mali culture, cultural identity. For Golanfini is an handmade cotton, traditional dyed with fermented mood and this sign are like alphabet. Going back to the source, the naval of the world, the human person, the path of life is never straight, union, the path of uncultivated knowledge, the belt of the braver and power and strength. And it's to initiate young people and the cotton, we have the waving here. The meaning of the waving in Mali means to wave the universe, the sound of the waving is the sound of universe. So we have knowledge in the cotton and we were knowledge. In many countries, in many areas, knowledge and alphabet and science are in paper. But in Mali and in this area, we were knowledge. We were knowledge and we were also knowledge for our health because dyed fermented mood is very important for knowledge, for health. So you can see what you can do with cotton. We can see the future of cotton. And here, this man whose name is Chris Seydoux, a famous designer in Mali, bring the tradition to design. And his model, Maria Bocoum, continues this work and we have now this piece of design and it's very important in cultural industry, all what we can make with cotton and this industry. And we arrived in Bamako, welcome to Bamako, it's the city, the capital of Mali with these young ladies. And you will see there all the new projects, Robo-Mali, Impact Hub in Mali, Proje Yelenkura. But it's just some project. So what's going on with the robots and is the students doing all this kind of projects? It's startup, Impact Hub for example supports entrepreneurs, especially young and women, Frug Specialized Training, Incubation and Acceleration Program, that's Impact Hub. Robo-Mali is on a mission to teach robotics and artificial intelligence in all of Mali school and college and this project, Yelenkura, has been created by Robo-Mali in collaboration with the Union of Blind. So what do you do in terms of using technology to bring the Mali forward, a lot of things? A lot of things, but the most important things is to preserve knowledge coming from the past. For example, we enter here in the heart, the soul and the spirit of Mali Parvelian. And we have here the manuscript, the digitized manuscript of Tambak Tu. Technology helps us to preserve this manuscript. It's about science, medicine, poetry, astronomy, astrology. So we try to bring here and it's a word, it's of technology. Technology helps us to preserve this knowledge and this knowledge helps young people to create new projects. What are these? You digitized them? All these are, you saw that we have many ideograms, symbols and signs and in Mali we have also the Tifinac alphabet and in Mali in this area we also write in Arabic. So it was just to showcase all the, how can I say, all the signs in Mali, all the alphabets in Mali, to showcase this diversity. So this is the great mosque? Yes, the great mosque of Cheney. And what other things can you talk about in terms of technology use? Do you show some more? Yes, we have here the Linali project, I don't know if it's work. We have the Linali project. It's a massive boost to social inclusivity and the Linali app, it's the world's first voice-based social media network. It allows those without formal education to access a digital landscape and connects Mali's entrepreneurs with a wider consumer base. And in here we are trying to showcase all the signs, ideograms in a technology way. Everybody in Mali has a good internet connection or are there some places that need to get better satellite link-ups in the future and stuff like that? Of course, because it's a very big country so some area need that, of course. Maybe you know this Starlink Elon Musk project could cover the whole area and bring some dishes and everybody can get fast internet. Because right now there's cables going in and 4G, 5G, something like that, in the cities, right? Yes, but we have to figure out about that. What is Mali people use internet in all the area? You know with what? With smartphones. Also with smartphones, even in some areas when they don't have landline phones, they have smartphones. And they can do many things with that. Like a currency also, payments, currency of the smartphones. Exactly, we do many things with smartphones. More than in Europe for example, they use it in many ways. Let's continue the tour. Yes, and here we have our traditional string music instrument. A gift from genius to humans to galvanize, educate and inspire them. The instrument we hear playing there? Exactly, because when you enter in Mali pavillion you can hear this instrument. So you wanted to show the real instrument here. And this instrument is like, sorry, is like Stradivarius. It costs like 150 million dollars then. I'm joking. It's not about cost, but I understand what you're meaning. It's not about cost, it's about the meaning and it's about beauty. And it's about how it's very hard to learn to play this instrument. It can take 15 years, so it's very, very hard to play it. And here we have the art and beats of Mali Streets, the designer. And this seat has been designed by Shek Djalo, our famous designer, Sièche Banane. An art gallery, the Biennale de la Photographie in Mali each two years. To showcase that also in Mali by night we have an interesting life, artistic life. And photography is very important in our country. Our Meite, Al Fadi. And here we arrived at the end of the exhibition, at the end of the journey. This is an artwork made by Abdelay Konate. And it summarizes the pavilion, the soul, the heart and the spirit of the pavilion with Monsamosa. Monsamosa you saw with his vision. The white gold, the gold, the black gold, diversity in culture and architecture and blue like the river. And all these colors are very important in Mali. So this piece of art is here to summarize the pavilion. And the vision of Monsamosa, you go with the vision of Monsamosa. We arrived here, the treasure of Mali. And the treasure is for sale? It's for sale, it's the shop and they have been made by the association Timidwa, 250% and Craft Unique. And in the corner here, bag? Yes. Two bags and this one is for the camel. They use it for long rides. All right. Cool, so thanks a lot, that's great. So how is it going, the Expo 2020? A lot of people walking by? Yesterday we received in the Mali pavilion more than 5,000 visitors. That was incredible. All right. So we hope that it will be better. Yeah, everybody is welcome, it's open in the next four months. Yes. So how is it going to Dubai from Mali, direct flights? Well, Malian live everywhere. So we have not a direct flight to Dubai, but we have many Malian people who come to Dubai because it's like a hub for them. So they live everywhere and all Malian people come to Dubai with this exhibition. Direct flights from Europe to Mali? Yes, from France, for example. But some direct flights also from Africa, from Ethiopia, for example, from Senegal, I think. So we have some direct flights. Yeah, there's a lot of connection with the Ethiopian Airlines. Yes. People can come from everywhere. Turkish Airlines, no? Turkish Airlines and Emirates. Emirates also. Emirates. So direct Dubai? With France? Yes, through Paris. Yes, through Paris. Cool.


If you watch Common Ground online, consider becoming a member or making a donation at lptv.org. Lakeland PBS presents Common Ground, brought to you by the Minnesota Arts and Cultural Heritage Fund and the citizens of Minnesota. Today we're going to give a tour on some of my items in my antique building. We just like collecting old stuff, and we started small and just kept buying and buying, and all of a sudden we had a lot of stuff. I think the first thing I start with is this needle camera that was used from the old West days. It's the one that you hold up that flash, and it goes whoof, and you see a lot of them in the old Western movies still. And we have the full-size Elvis, which we got in Chicago. Carol and I go to Chicago every November to a huge antique show, and we bought Elvis there, and we bought a few other items there. We bought that silent movie projector from 1906 in Chicago. Lots of posters from different Elvis movies. And then we got a popcorn machine that we got just 20-some miles west of us in Perm. It didn't work when I received it, but I had a gentleman repair it, and we have made a couple of batches of popcorn with it. And then this projector here came from... We got it in Brainerd, and it came from Minneapolis. Back in the 40s, 50s, and 60s was huge for these wallboxes. You'd go into a restaurant, you sit down in your booth, and there was a wallbox, and you could put your nickel or diamond there and play your favorite songs on the jukebox that was over in the corner. You're not going to see very many mixers around with three beaters. Of course, everything is standard with two beaters.  This is our first stove we bought, and this is made in 1929. And then we have a bread-making machine here from 1904. And it just purchased this a week ago, and all the parts are inside for making bread. But probably the coolest thing on this wall is that vacuum cleaner.  But I think we all realize it would have been a lot quicker to use a broom and a dustpan, but this was the start of the vacuum cleaner business. And this is a neat, round old stove from 1899. It's bigger than most wood stoves. You see most of them are 12 or 14 inches, and this is a 20 inch. So this was made for a bigger building. And this is definitely all usable. There's no cracks or holes or anything in there. You can just use it by just putting the stove pipe on there. And of course we have some nice old pitchers. A few of them, like Little Richard and Bobby Lee and them, Carol and I went and saw them, and they were lucky enough to get them autographed, and really easy to visit with and that. And we got a couple old sinks. There's a lot of clawful bathtubs around, but very few of them are in a four foot. Most of them are five and a half or six. This is a four foot. And then we have this toilet that's on the wall, which is easy flushers because they got them high up. And that came from Great Falls, Montana. I've seen it advertised and I bought it over the phone and I have a friend that has a store up in Great Falls, so the man delivered it there. And then later I picked up the product when I met that gentleman from the store. This is a couple of neat TVs by Filco. They came out with these in the 50s thinking this was going to be the big thing. And it actually ended up bankruptcy. Filco, they went bankrupt over these TVs. They went over so poorly and the quality of the TV wasn't that good. And I have a little article that I picked up, I put on here from off the internet showing what happened. But they filed bankrupts and what have you. Anyway, and then this is a neat little phonograph here, which got the cylinder. And it's in pretty darn nice shape for a hundred years old. And we've played it a few times, but mainly just here for looks. And then my wife, Carol, when she was in high school, she kept all her high school buttons and little odds and ends, little jewelry and all that stuff. So we have it all on display. When I was a senior in high school, we went on a bus trip to Minneapolis to the University of Minnesota. A school trip.  Today they'd have a heart attack if they passed out of cigarettes to anybody. This is a cream separator that is one of my favorite items in the whole building. It's a cream separator with a square tub. I grew up on a farm and I've seen a lot of cream separators, but I've never seen one with a square tub. They're all always a ron. And this thing is made before electricity on the farms. They have a treadmill. You can either run it with a dog or a goat or a sheep. All it does is stand there and run, and it turns the separator and it separates the cream from the milk. And then I actually have another treadmill right behind it that runs a washing machine from 1888. It's not in quite as nice a shape, but this is a butter churn that actually makes 17 gallons of butter. This actually was made to run on a treadmill also. You could either stand here and rock it to make your butter or you could have a treadmill like this for $16. You could buy the treadmill. This was made in 1877. And then right behind that is an apple press. And that's from 1860s. And this is made for making wine or apple juice or you just put your apples in there, turn the crank, smash the apples.   And this is kind of a neat singer from 1896. And back here is just some washing machines. The cool one is this one right here. This has electric motor on it. And this was made in 1918. And there was not a lot of electricity in 1918, so I would assume it was a fairly well-to-do family that owned this washing machine. I got a nice organ we bought in Wisconsin about five, six years ago and it was actually made in 1879. And I'm not an organ player, but we've had a few people here that have played it and it plays very well. I can show you the noise it makes. And that's, I don't play. But for a 140-year-old machine, I think it's pretty awesome. You see a few radios around like this. It's before AM, actually. It's a very old radio. It has no volume control. If it's too loud, you just turn it off to station a little bit. And you see a few of these radios around, very few stands. The stand is your speaker. This is a trunk that we bought quite a few years ago and it's a humpback and it's full with old ladies clothes and of course we got the moth balls just like they had in the old days. And Carolina, we just found out one thing about trunks that have the dome on. They was normally owned by the rich people. They came out with the idea if they have a dome top, their trunk always got put on top of the pile and all the trunks with the flat tops was on the bottom. So these people decided, oh, we'll make a dome, our trunk will be on the top. It won't get damaged. And then of course we have our 50 soda fountain area, which I'm quite proud of this. We keep thinking we're done with it. We've got everything we can have and I'll be darned I'll find something else. I've got to squeak in or put in but it's getting to the point. It's full. It's full of business probably back in the 50s or 60s but we ended up with a few posters and I want to make sure we keep that around for people to remember about Marnock. This is the back of a 1956 Chevy. Just took the trunk off and built a seat in there and got the lights hooked up and kind of fits in with the soda fountain. This jukebox was purchased in 1998. It was the very first item that we purchased in this building and we played somewhere between 5,000 records on this jukebox. I'll come out here at night and I'll just come over and punch buttons. I don't even care what song comes up and it plays awesome. This is a 1954 model and it's got awesome sound for 63 years old. That bicycle up there is probably one of the coolest items too in the building. It was made in 1898. It has wooden rims, wooden chain guard and a wooden chain back fender. Then we have our pop machines that we have a Pepsi that we just purchased about a month ago. It's a very rare one you don't see. That's the only one I've ever seen like that and then we have two other coke machines. This is somewhat common and this is a smaller model and you don't see a lot of that one so that's probably got more value than all the rest put together. And then we have all our signs. We've got SNH green stamps. This is another neat item. Before they had the cork cans of oil this is what they had in the service stations.  Then you just put this in your car and you don't have the cork can to throw away. And then we go into my gas pumps and this particular pump came from a small town by Bluegrass just northeast of Wydena and it came from the central store and this had a 34-volt motor in there that ran off a windmill charger. Then we have this rag line that came from the 50's Carnival. They had your jack knives or silver dollars or all that laying out there and you put your quarter in there and you turn your crank and I haven't got them set up to work right now but they do work. This is an ice cream cart that we bought from Vancouver in Canada about two and a half years ago. So you have dry ice in here and you have all your treats in here and in the front it has a door to put all your little papers and what have you for that. And you're going down the road and let them know you're coming. The next thing we're going to look at is our jail and these are original jail bars from Wydena and inside the jail we have a 1800's jail that we went down to Ohio. It's two cells. They have a fold on and then the doors it has a little slot for putting their food through when you feed them.  So on this table it has cranks on it so if the feds was coming you could take this apart and hide it within two or three minutes. Pretty cool. And then that's an old bathtub from the old Cowboys and you can realize back in them days everybody was a little smaller than they are today to fit in that. The oldest thing in our building is that fork right back there and I have no idea how old it is but it's got wooden times on it. It's wrapped with leather and it's a six time fork and it's got to be 150-200 years old. Well if anybody is interested in coming and booking or looking at our collection just email us and we'll see if the time works for you and I and like I say there's no charge and we enjoy showing it if we have the time to do it. I love coming out here in the evenings and putzing around just sometimes I just come here turn your jukebox on and sit in a chair and listen you know look around it's I enjoy that.


How many of you know how important it is to have a ministry that intercedes for intercedes for our pastors and the vision of the church?  Come on. Let's put our hands together for this man of God that God has placed this amazing Necessary vision into his heart and I just want to ask you something Alex How did it happen and what can you tell about this ministry and how can you encourage people to participate in that an important self it? how it happened was I was going through a really really tough spiritual like darkness and I Was seeking God and seeking God and then I talked to Vladimir one day in his office, and he says You know he mentioned the Ministry of Intercession And I went home and he says pray about it and just one day. I just got angry at all the darkness I just got fed up and Just commanded it to go. I got sick and tired of it. I've always been you know like fighting Just things that are overpowering me, you know just thoughts bad just bad feelings bad days You know, and I just got so angry and I said in the name I just started commanding to leave and I felt so light and I felt so happy and I just like was born again literally and I texted Vladimir and I realized what that was that was spiritual warfare That was me getting fed up and beginning to use the authority that's been in here for all these years And the same authority that's already come on. Let's put our hands together louder for Jesus And so at that moment God begins to place that burden upon your heart, right? Yes, and so I texted Vladimir right away I want to do it and I just From that moment on I never felt that darkness again because it doesn't have a chance to come back because every day I'm interceding for others every day. I'm taking authority over the darkness. I'm breaking it You know just breaking because anyway, I don't want to go into the details take forever But literally my life from that moment has changed in the you know a better way And I don't feel the darkness anymore.  There's no anointing there There's no power there that thing that you crave and you wish that one day God will touch you It's not gonna happen. Just when you think about yourself Alex, would you please tell? What are the things you guys pray at those meetings and when do you meet? We meet as much as we can almost every day. We try like 4 p.m. 3 6 p.m. It depends we we make a note on slack so announcements. So anybody you get a snack. It's a slack It's our church app where we communicate 4 p.m. 4 35 30 we come and we just literally we pray to remove Ever the Bible says there's arrows the Bible says there's plans tactics The Bible says that the devil does not sleep and so we're praying for hunger generation for the leaders for the pastors For the vision just kind of like we did today on a stage for the buildings And we just literally remove that darkness. We remove it with the their spirits There's principalities. Maybe we're not all familiar with that But the devil's not asleep, but we have authority So we just get together three people ten people and we just unite and we say in the name of Jesus We don't come in our strength and you know, there's really a lot of people fear like a retaliation There is a retaliation when you don't fight but that that's what I had I had this darkness depression You might be this experience some kind of you know darkness bad dreams.   He's already doing it. He's already making your day go bad So there's nothing to fear you come in the name of Jesus not in your name So don't fear. I just want to challenge you just do it's safe. It's a hundred percent safe Jesus says go make this up a cast of demons. He didn't say but be careful It didn't say that it says you will handle snakes. You will you will crush snakes and he says this Nothing will hurt you by any means But people they say well, you know be careful. No, Jesus gave you authority Jesus died on the cross Jesus paid with his own blood and there is no careful there. There is there's no Retrieve there. He says be bold attack take over and I just want to encourage you if your family is in darkness If your children are sliding back, you just got to fight and this is the perfect place We pray for our pastors the vision the leaders. We just pray and you know, we we just see blessings in our my life Literally, I was born again that day and I have never went back to that darkness again I mean come on. Let's put our hands together for Jesus Christ. You know what Alex We just want to thank you so much for answering God's call upon your life and taking that ministry and running with it And we believe that there's gonna be many many people joining that ministry because it's crucial to the vision and to the plans that God has for hunger generation and the church of God in general and then and then thank you so much. Thank you


Hi and welcome. Today we look at the practicality of course completion, availability, restrictions and activity completion. Now these are all new functionality in Moodle too and they really work well together to provide the type of features which were previously unavailable in Moodle without customisation. Now some of you will remember the conditional activities patch that you could apply. Now although that was very good when it worked, this function has used now core and it delivers some seriously cool options. In the corporate sector there's often been a requirement for this kind of feature providing that set learning path based on resources and quizzes and completion of tasks especially with a view to self-certification. With this feature you can unbundle the content in quizzes so you can bring much more Moodle features and activities into the scope of learning and still deliver that structured controlled approach that's required in regulatory environments and that's scorn the livers now. So enough talking and let's see something. So here is an example of a new employee just joining the company. Part of his induction is served through a Moodle course so let's have a look. So here we have his induction course. We can see some content and some guidance. So let's go through the links that we have here. Please read this first. On this overview page it outlines the purpose of this course and provides a link back to the course in the webpage here. This is something I like in courses that helps direct the user. Now we can have a look at some of the background info. Here is the website. Of course this is just an example and now let's look at the background resource. Okay. And again a link back to the course. So one of the first things I want you to do is to see that here we now have three ticks of completion. And as you see we now have been opened up to some new content. Here we have a description and some guidance and we have access to a quiz. So let's go and have a look at this quiz. So let's just complete this quickly. That's true. Back out to the course. So now once the quiz is done we're congratulated with our progression and more content appears down here in the second section in how health and safety. So looking through this now I understand the importance of health and safety and let's look at the document. Okay. And here it's asking me to set this activity as complete to verify I've read the health and safety guides. Now this will be usually done signing a form but here it's just asking me to tick complete. So now after completing that again I am now released into doing the quiz for this section. Okay so that's my second quiz done. And I got three out of three which is good since I wrote the questions. Let's go back out to the course again. So here we are now congratulated. I've completed the second topic and here it instructs me to please schedule a HR meeting. So that's it from the user point of view. Here we have documents and items which we have done which are also completed based on actions. Here we have a quiz which is also completed based on the grade. And a steady release of content and activities for me to do including one where I have to self complete. And then eventually when I complete the quiz I now have completed the course.


Back in 2011, consumers in the United States were disposing 80% of their garments directly into their garbage can. And at that time, it was about 12 million tons per year in the United States. Today, that behavior over time has not changed. Consumers are still throwing away 80% of their clothing, but the number is closer to 17 to 18 million metric tons. So the volume is going up. The behavior is not changing. What we're going after is a reduction in that behavior over time. By 2050, we should see that number drop to about 20% instead of 80% where we started in 2010. But to get there is going to take a lot of time. But the post-consumer waste is the real equation here because we're in a reality where we've got a lot of stuff that exists that may not be efficiently recyclable today. And we're also working with designers to design today with the intent to recycle in the future.


Mi je Stefano Babić. Imam autor in manteljnik for the SW Update project in over the update agent. In my talk is about data incremental update and how which open-associate projects are available to do this. And of course, focus is about SW Update. So which way we have in the SW Update to have an incremental update, what we have in the past, but mainly the focus is on the new delta handler that was introduced with last SW Update release. So, first of all, so an overview about SW Update, SW Update is an update agent. It's integrated into your software. So part of your distribution have a different way to update a system. So as an integrated web server you can update from a cloud. You have a connection to a fleet management server or a local update. There are security features, so software is signed, can be encrypted, and so on. SW Update is not fixed to a strategy to update the system. One common strategy for the schematic or sometimes AB or dual copy and really focus for incremental update is this strategy. So what I will show you is then adapted or just working with an ADB approach. So, reason for an incremental update is we have increased science. Our project becoming much more complex is common to have software 100, 115 megabytes where you can reach also a gigabyte of software. Even if our internet connection is very quick sometimes or at least at home maybe with fiberglass there are some devices that work in low bandwidth network like GSM so 96 kilobit. Even if you have a good connection you have to put your software somewhere on the cloud or maybe on some service and when all your devices are starting to update the system they are generating a lot of traffic. So that means at the end you have to pay as manufacturer a lot of money to the cloud provider. So reason for updates is usually is to save money rules. Different ways in SFDT what we have in the past for example we can split between OS and application. So if we provide a different update package just for the application we can have some sort of additional incremental update. This is because if I update there is no project where all features are implemented in the first release so the application is much more frequently as the OS. Big issue is the consistency because you have as release manager to check that your application, your new application is still compatible with the libraries provided by OS. In SFDT there are hooks to provide some consistency but this is something you have to write to your own, so is something project specific. The second one is a I would say something more regarding splitting the party into application and OS update is quite straightforward. In SFDT there is a file called SFDT it is a meta description of release you can put here just the application, describe how to install the just the application and of course this is really project specific. What about if we wanted to update the whole file system there are some kind of data so this was done with LibAsync handler this creates a data file from a specific version. This is the weak part of this handler because you have to know which is the version running on the device. If you have many devices you have to provide many data files. The usage is also quite straightforward in the study description you add a type for this handler is RDF and you have to put which is the source, so where on the base of which on the running software the data is applied. There are some drawbacks on this approach. So first of all we have RDF tool to create the data but we need a specific version and what about if and the customer has put a device into closer for 3 years and then is back to the network should be updated as well. The other big issue is the size of the data because using the LibAsync the size of the data is increasing of course with a number of changes but there is also a free shoulder and after this free shoulder the data is even bigger as the size of the original file to be installed. So the best usage for this handler is if we have frequently updates we have some kind of rolling release so we know that all devices are quite with the same version and we maintain the size of changes smaller. So we have a small data but this is also a reason to try and to find a better approach. So starting from this and I want to search or to look for a way to find a delta that is independent from the type of sources because we don't update just software, we update also manual, videos everything on the devices. So it should be independent we have embedded device so that means we cannot use a lot of resources we cannot use a lot of memory just to apply a delta. And what was important for me were the sources of the running software on the device after applying the delta so I have the new software on the device which be identical to what I have built on my system so in build system. So if I run the hash on the device itself I should have the same result if I run the result of big bake. Starting from this I started to imagine what is the actor involved in this. I can say well I have to get something from a server what is the role of the deployment server. A simple way could be I have the device the device sender just the version to a server, the server have all possible version available compute the delta based on version of some meta sender the device sender this delta and the device applies. This has a lot of drawbacks so first of all the server should have knowledge of a lot of version and maybe should also know the internals of this version. Second I have to change something on the server so if I have a different server so if I use a hopefully server or use another server I have a different implementation so that's very very bad. And starting from this I will start to find a different approach. So what about if this delta is not computed by an external server but it's computed by the device itself because the device knows everything knows everything from the running software can compute what is missing so not really a delta fiber computer what is missing what just this part just comparing the two approaches if I go to a server version well I need a lot of files on the server this can be difficult in some application because for example there's a consortium there's a vendor there's a consortium for multiple vendors and it's not allowed to have a lot of files for each vendors we have to generate files if we generate something we have to provide security so maybe we have to sign these delta files and this is also bad because in the approach in the server server is untrusted so if there is something the server is compromised the server detects this and rejects any update what is as advantages is of course the device should do less and that means the update at the end should be faster as in second approach if we run on the device well we have independence from the version each device will compute maybe a different delta we have ten device with different version we have ten different delta but at the end they will go to get the same that version we can have an update from any version to any version this is very good we are also running on the device itself so we have not to send a lot of information because this generates also traffic so we have not to send a lot of information we can compute any kind of hash so whatever on the device itself of course the device has to something more so more load on the CPU let's say we have a lot of tools in Linux to mitigate this like cgroup, nice or whatever but of course the update will be slower that's sure there are some open source project for delta I skip first one because all of them are required to have to start from a fixed version I go directly to the ca sync approach because this is more or less in the direction we want to have but I will say what is good in ca sync and why I cannot use it so ca sync this is taken from ca sync website good from ca sync the block device is then from my block device it generates a serialized stream this is very good everything is stream allows me to avoid any temporary copy very good then ca sync is working with a rolling hash that means the source is analyzed splitting chunks chunks are dynamical so dynamical sites a chunk is closed when a pattern is found or when the maximum site of a chunk is reached so I can split in multiple chunks that means for example if I add something on the etc directory well that means that some chunk will be different but all of the rest will be the same that's very good what is doing then ca sync is creating what is called a ca index so with a whole hash of chunks this is also good because I need then a cryptographic comparison to be sure that the pattern install is correct the last part I say creates the most of problems because ca sync creates is called ca store where each chunk is stored on a separate file and this should be somewhere on the network on the cloud I started testing this and the thing is when I get each chunk is in a separate file I need a HTTP get request for each of them sometimes the connection cannot be reused so for each HTTP get request there should be also a new SSL connection just checking the number of transfer bytes so the payload is what is reporting but checking on the internet statistic you can get the whole transfer the overload is very high so this is very bad it's not what I want to reach not at all ca sync is a complex and we will see a monolithic project so it's thought to be used as it is there is no library was thought to have a library there is no authentication ca sync is forking itself to download the data from the network this breaks the security in established there is a privileged separation security so that means that when something should be get from the network a process with lower priority is started and this cannot be reached with ca sync looking at the door backs this is a project is developed by Jonathan Dieter he is living here in Ireland is used on Fedora project is used to download the packages in Fedora and very interesting it's using the same approach as ca sync so it's using chunks it's using a rolling hash to define chunks of dynamic sites but it defines a new format self-contained so there is a header with all made information and there is the chunks this is much better and fits my use case more or less interesting is also Jonathan finds exactly the same and I can read from his blog he also started with ca sync and we both found that ca sync is close to what we have to reach to do because ca sync was fought for another use case anyway I don't need to start from sketch but I have to change something in the chunk make absolutely sense first to make changes and to push everything to many lines because nobody wants to work with some fork or something else so I started to working to the chunk and see what I have to change so first should be a better friendly there is a lot of assertion in the chunk where a stabiodate cannot be exit should report runtime errors and this runtime error should be evaluated and handled by a stabiodate the most important thing is uncompression hashing because the chunk just hash we compress chunk but on the device well I have the root fs so I can evaluate the root fs of course it's not compressed and I can get the chunks and ashes from not compressed data so I added also made information for not compressed data so in the chunk format both are covered and of course I have to send the API to make the library let's say, callable from a stabiodate after this in some of course assertion Jonathan was very kind, merge everything and is in this chunk mainline next step so this is just to say so with this chunk format is just a header and then a list of chunks there are some other main information most important for this application is the index number of chunks for each chunk we have hash for both, for the compressed chunk and for the uncompressed chunk then I have to put this part into a stabiodate so I have to transfer to the device starting from build I have let's say a root fs I transform the root fs in this chunk format I put the header because we have seen the header is just at the beginning of the file I put the header into the stabiodate stabiodate is the update package for stabiodate that means it is signed then I transfer to one of the server will be on the fleet management server what I also need because I need to download the missing parts the root fs in the chunk format will be also put somewhere on the cloud, can be on the same server can be also on another server the only thing should be available to the device via a URL connection to stabiodate so everything so a specific image in stabiodate is managed with a handle so I have to implement a new handle is a delta handle information for the handle is where I have to install so the device the source, so is now the running software where I get this g chunk format with the chunk file, so a URL then each handle is afford to install everything but if I do this had the problem because if I install on the MMC is different if I install on the UBFS if I install on the no flash and so on and so on in stabiodate there is a handle for each of these specific format so if I do directly here we do a lot of things so the solution here is if this delta handle does not install but create a stream and everything in stabiodate stream I can then forward this stream to another handle so I can have a chain the handle and this stream is then passed to a handle we have already in stabiodate because we have a handle also we can take this stream and send to another device running stabiodate because we have a handle for this so starting from this what is happening so this header is coming on the device the device is calling via the chunk library and creates a header for the running software I have for the running software header with chunks the hash I can then make a comparison so I have a downloaded header and a source header I can just iterate for all chunks for the destination and check ok, can I find a chunk on the source with these sites and with hash if I can find it this is exactly the same chunk we have a further structure this structure will continue also other information like the offset in each of the two files but I can know well I can simply copy or I have to download it very good so that means at this point I have a way to find a delta on the device itself I have just to find how to download the missing path to do this the way was via byte range request at the end is what we currently do when we see a video on YouTube, we remove the cursor when we want to skip something is exactly the same a good thing is and what is sorry, on my use case is that I can put multiple chunks so multiple bytes request in a single HTTP get so I can override the problems ahead in csync in idle word I will say I have just one HTTP get request and this contains all chunks I want to download in the real word so it is not possible because to avoid denial service all web servers or Apache and GX or whatever have a maximum number of bytes request to be sent so that means in my handle I have to split this to create multiple HTTP get request so one for when I reach the maximum to create a new one and I have to include all all of these requests for the server the server what I need from the server is really the chunks so bytes at the end the server really answer in this way so sends a partial content and the answering partial content as content type is a multi part byte range so the last building block I need is really parser here so I need to parser all of this stuff and to extract just the chunks but let's say this complete the number of building blocks I need and can put all together so the final step is I have this header from the Putin VSW is the new header I can run the Z chunk library on my source I have found which chunks are different I need another actor because the delta handle is starting to install something so to maintain a privileged separation I need another parser so there is a downloader is a server at the end so it just gets bytes request from the delta handle and returns the answer from the server or an error if it cannot be downloaded the delta end of course should synchronize the two stuff the two stream and should recreate the new stream when it's doing this we have at this point all ashes so we ashes for the sources and we ashes for the downloaded stuff so all chunks is then verified that the ash is correct in this way we exactly know that what we have created at this point so the created stream is exactly what we have built on our build server putting the ash on the build server will produce the same ash we have on the device the stream, the created stream will been forwarded to the chain handler and as I said when it's generic can use any supported handler in establish data can even use a custom handler if someone has a custom handler in Lua this is also possible because there is a stream and the whole handers are using stream that means I can use any supported handler so I mainly used on a couple of project with AMLC I know from many list someone I used with UBFS because I send patches but you can also use and send to another embedded Linux running via the SW for wilder handler so really you can use all handers we have in this little update just to check to see what's running on the device of course we run in verbose mode and we enable what establish data this handler is doing establish data will report for each chunk if the chunk will be downloaded or will be simply copied from the device and will be reported which is the site from the other sites which is the downloaded site so you have a feeling about how many bytes were downloaded the same could be done also at build time but of course you need a starting point so you need to know which is the starting release you can use the chunk tool there are some extension you have added to support uncompress hash and to use the sh256 hash because the chunk before to use an hash you create with the chunk format there is a tool that I have developed is not officially in the suit for the chunk is in the test directory of the chunk you can use it this is doing exactly the same stuff as the update is doing so it's calling the library reporting back how many chunk were downloaded or were copied and the total bytes if running on the device will be loaded what is still open so as I said this is part was already part of pre I think in 2021 11 but it's part of last release so 2022 5 mainly was commissioned and was used for Debian so what is missing is the support to generate the chunk file to build the header inside the SW so it's not a lot of stuff but it's still open and let's say in this way is already working I am supposing that in future there will be some optimization for example in this happening on the device the creation of the header from the source takes of course a lot of time because the whole software is ready is analyzed to get the chunk size and to get the edge this takes a lot of time of course can be a problem when an update is triggered so another way can be for example when the SW update is started and then maintained until an update is triggered and this can save sometimes bonus of this kind of update is also let's say that in some way on your device something was changed maybe file system is starting to be corrupted or some changes due to some bugs in software that just means that the generation of delta on this device is different as on a device that has not this problem but at the end we will get exactly for both devices both will get exactly the same software so quite at the end I won't just to say so with this let's say delta hander, the chunk hander is more suitable for dual copy approach good thing is there is no changes on the server side I have talked previously with output developers and they told me yes really we are developing a server for all kind of devices for bad linux or microcontroller or whatever so we cannot implement something that is specific for example for a bad linux or something that is specific to have a stable update on board so they say this should be done outside the server so this was also an argument against to make something on the server side what you need is to take this additional file so for each artifact you want to update with delta mechanism you need to store also an additional artifact but as I say you can put on the server on the flip management server if you have or anyway on the cloud the only thing the device should get access to this file and of course at built time you can know how many bytes should be downloaded ok so this is my last slide so I am ready now for some questions if you have yes whichever yes I did I was maybe too fast in the skip but I did I checked for example xdelta I checked yes thief I checked also in google it's done for commune so problem is starting with google so they do an excellent work but it's really for a elf file so they know the program so we download the program and then we can skip the old part related to elf file because we know is an elf file and then the delta is even lower so smaller in my case does not work because I have program I have configuration file I have videos I have something else so this approach is not working with xdelta my problem is xdelta as it is is generating or applying the delta in memory so that means I need a huge amount of memory just to apply the delta this is not compatible with in a bad device so the reason I change in the chunk how the chunk works instead of applying memory now is not applying just writing into failure writing to the destination so there is not so much resources the main point is really you see when you run this that it takes a lot of time to calculate the delta because the software the software you run should be read completely to calculate with chunks yes sorry so you are not restricted to a read-only file system I am not restricted no you need an AB and of course I am not restricted but the problem is if you have a read-write and when you change the file system is a problem so it could be read-write but we need also at least when I compute and then I apply the delta should be the same but it is not restricted as I said if a file system gets corrupted it works because it will cause it to think that there is more to be updated so you mean the chunk sites the way is working is with this bad hash or rolling hash is a mathematical approach is also used in a lot of backup programs really to find just the part of change think about also on a file system there is a lot of zeros in Easter 4 for example and what this algorithm is searching is really for pattern when you found there is a pattern when it says the chunk is closed so it can be a very small chunk or a chunk here the default so maximum chunk site is set to 128 kilobyte is also can be changed but the thing is you have to change in G chunk you have to change in stability data as well so it should be exactly the same but if you add just a file you will find that some chunks are changed and the rest is identical yes using which parsing there is something if it is a local update you don't need to save bandwidth so it is quite ok ah ok 20 megabyte file it is possible where URL is a URL so it can be also URL on a local file so it can be also used you can send the delta plus a small sw and the delta or the file not really because because everything in your way is you are defined the delta on the build system at the end and in that case maybe is a good thing to use the leba thing exactly and that's already also it's already so both are available so both are available you are the integrator so you decide yourself if you want to do a major upgrade or you want to do with zechank one thing is with difference with leba think leba think you reach a point where the size of the delta is bigger as this is bad very bad with zechank the bad case so the worst case is all chunks are different and all chunks are compressed with zst so also the file i deliver can also be delivered with zst at the end i have just the sum of chunks and it's quite the same as the whole chunk so the difference is not so big time difference of course yes compared to just update yes which processor do you have so i cannot i make 6 so i have tested where i make 6 but it depends when from your delta no the download depends on the delta so it depends on the size of the root file system i cannot say the only thing you have to imagine the whole file system should be read this is the difference takes time you can just make a dd on your device and see reading of the whole file system you already know when there is a running of a rolling hash takes sometimes i have no idea now which part but the major part is reading back all your software let's say no calculated for a specific project should be tested depends if there is an issue in most cases it's not an issue because it's with a b approach so it's running in background and if it takes more minutes even more it doesn't matter so i don't know if a various project require really better it's going fast this is top i think but it was the last one


Good morning, John. Squeezing strangers' bikes in Amsterdam. Yeah, yeah, look at that tire. That one's pretty squishy. Is it okay to touch random people's bikes? You wanna hear a funny story? I love my computer on an airplane. So I'm having other people edit this vlog for me. Here's the plan. I put this footage on the internet, people on the internet then take that footage. Everybody makes their own video with it and then we vote on which one goes on the vlog of this channel. We do this all within like 24 hours. So Amsterdam things I need to find. I need to see like a row house. Bicyclers, which shouldn't be hard. A canal. I found bicyclers. Sometimes the world looks perfect. Nothing to rearrange.  This is a questionable strategy I've made which is just to start walking and see if I find something good. I am immediately lost. This city does not own a grid. And also my phone doesn't 100% work. Like I can call and text, but it cannot use maps. There's no data. So if we get real lost, I'm gonna have to work it out the old fashioned way which I have completely forgotten how to do. I mean, even the littering is neat. It is left of there right side up. What is a chocolate now? It smells like chocolate. Is it like you who? Well, I was gonna read the label, but it's all in Dutch. Sometimes you see things on the ground. You don't know what they are. I have to find out. Oh, it's like a little light. The tiniest, cheapest bike light you could possibly imagine. You know, I'm keeping it. I mean, presented without comment. Hey, pigeon, there's a whole tortilla all like on a window sill right over there. A whole tortilla. You could feed your entire family for a month. A whole tortilla. Stop walking away from me. I'm trying to help. Found row houses with the little hooks that they use to get stuff up because they can't carry them up because they're too skinny. Now all that's left is a canal. I have to find a canal. I just saw a fourth Amsterdam thing. Two people just smoke a pot on the street, which of course is normal here. I think this is a wedding cake man out of diapers. That's what I eat, yep. I definitely am going the wrong direction. Wait, but just ahead of the highway, just in front of it, I think, what is it? It's a canal. It's a big one. Ooh, a moorhen. Can you see it? Oh, it just disappeared. My moorhen. Come back. I'm making a video. It was like, I don't, we don't like to be on video, there it is, hey. John, the Dutch people think that I'm weird, but that's okay. I think the Dutch people are weird. You know, this might not be a canal. This might be a river. It might be the river Amstel. I feel like maybe, maybe not. I don't know. I have come to the definitive conclusion that I'm not in the canal-y part of Amsterdam. Okay, John, I'm 90% sure this is the same canal I was up before, but I am now 100% sure that it is in fact a canal, which means I found all the things that I was looking for. So now I have to try and find my way back to where I was. I don't even know what my hotel looks like. This is the street where they keep all the cars in Amsterdam. Every single Amsterdam car is here right now. The pigeon didn't listen to me. I see these bikes and I just, I think many of them must have just been here for centuries. I feel like they're intentionally leaving old bikes just so it looks like there are a lot of bikers. They got it via a lot of these bikes, not in use. Like this, this one, this is just still here, right? Like somebody has left it there. Or dude? Yeah, yeah, look at that, look at that, that's just. I'm very glad to finally be in this city, which I've wanted to go to for a long time, and to be here for VidCon Europe, which is gonna be of all. I would like to thank this person for editing this video. There's a lot of other versions, hopefully, of this video edited by other people. I encourage you, John, and also anyone else to go look at those videos. Thanks to all the people who helped me with this. Thanks, John, and I'll see you on Tuesday. Bye. Bye.