Hello everyone, this is the CircuitPython Weekly Meeting for December 11th, 2023. My name is Tim and I'm sponsored by Adafruit to work on CircuitPython. CircuitPython is a version of Python that's designed to run on tiny computers called microcontrollers. The CircuitPython development is primarily sponsored by Adafruit, so if you want to support Adafruit and the CircuitPython project, consider purchasing hardware from Adafruit.com. This meeting gets hosted on the Adafruit Discord server, which you can join at any time by going to adafru.it. We hold the meeting in the CircuitPython dev text channel as well as the CircuitPython voice channel. This meeting typically occurs on Mondays at 2 p.m. Eastern U.S. time and 11 a.m. Pacific time, except when that coincides with the U.S. holiday, in which case we will either bump the meeting typically to a Tuesday or just skip the week, which I think we have one upcoming towards the end of the year, but I need to look into the calendar for that. Let's see here. The notes document that accompanies the meeting is in the pinned message. That's a Google notes doc that's shared with everyone. You can contribute to the document before the meeting begins. The final notes document, including time stamps to go along with the video, excuse me, the final notes document does include time stamps so that it can go along with the video. The meeting tends to run from 30 to 60 minutes depending on how many folks we have. After each meeting, we post a link to the next meeting's notes document in the CircuitPython dev channel on the Adafruit Discord. You can check the pinned messages there throughout the week to find the latest notes doc, and you can always add your notes, high reports, and status updates to that doc throughout the week. You don't have to wait for Monday if you happen to think of it before. As usual, the meeting is going to be held in five parts. The first part will be community news. That's going to be a look at everything CircuitPython and Python on hardware in the community. That's a chosen set of items from the Python on microcontrollers newsletter, which goes out on Mondays. The second part of the meeting will be the state of CircuitPython, the libraries in Blinka. That one is a quantitative overview of the entire project. We'll give us a chance to look at the project by the numbers separate from our status updates. The third part and the first of our two round robins is the hug reports section. Hug reports is an opportunity to highlight the good things folks are doing. It can take a moment to recognize the awesome folks in our community. The fourth part and the second of our two round robins is the status updates section. Status updates is an opportunity to report on what we've been up to, so you can take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be up to over the next week until we meet up next time. The fifth and final part of the meeting is in the weeds. That's an opportunity for some more long form discussions. Those can either come out of status updates or be identified ahead of time as something that's going to be too long or in depth for status updates. So that covers how the meeting will go. With that, I will take our first time stamp and get us into community news. This week in the newsletter, CircuitPython 829 was released, so CircuitPython version 8.2.9 is the latest bug fix revision of CircuitPython and is the new stable release. There is a link here in the dock to the Adafruit blog as well as the GitHub release notes. I threw in the bulleted list of the notable changes since 828. Those include a PIO-PIO-DMA fix for the RP2040, new and removed boards as well as individual board fixes are in that 829 release. Next up, we have Raspberry Pi releases the HAT plus standard and more on PCIe. Two months after the announcement of the Raspberry Pi 5, additional details have been released on the hardware. Specifications on the PCIe connector and required cabling will help hardware developers adhere to hardware specifications. In addition, the new HAT plus specification updates the 2014 HAT standard for signaling between peripherals and computer. There are links here to the Raspberry Pi news as well as a couple of those other more specific documentation links on that protocol. Next up, we have the first Raspberry Pi OS update since the Pi 5 has added some new features. Raspberry Pi OS has now been updated to fix bugs since the launch of the initial Bookworm version. The update also includes improved support for encrypted connections in WayVNC. The latest version of THANI, Mathematica and Scratch3 are now all working on the Raspberry Pi 5 and a bunch of other small bug fixes and tweaks are included as well. Finally, an often requested feature Dark Mode, which is definitely one that caught my eye. I'm a Dark Mode user for sure. So there are links here to the Raspberry Pi news as well as the register if you want to check out more about that new Raspberry Pi OS that was released. Next up in the final newsletter item for the week was the Project of the Week. This was a CircuitPython-powered typewriter. Max Lupo writes about a CircuitPython-powered typewriter project. The project uses an Adafruit KB2040 board to send parallel data to the vintage electronic typewriter via its Centronics Parallel port. There are links here to GitHub if you want to check into the code or try to recreate this for yourself. There's also a link to Massadon where Max posted about this project. That was looking really cool, I thought. So I'm definitely going to take a closer look into that one later on. So all of these items and more are from the Python on Microcontrollers Weekly newsletter, which is a CircuitPython community-run newsletter that's emailed every Monday. The complete archives are available on AdafruitDaily.com. It highlights the latest in Python on hardware-related news from around the web, including CircuitPython, Python, and MicroPython developments. To contribute your own news or project, you can edit the next week's draft on GitHub. Open up a pull request there with your edits to the draft file. You can also send an email over to cpnews at Adafruit.com or tag a post with hashtag CircuitPython on Massadon Blue Sky or Twitter. Next up, let me take the next timestamp for the new section, which will be the State of CircuitPython, the libraries, and Blinka. The State of CircuitPython, the libraries, and Blinka. This one is the quantitative overview of the entire project. That's going to give us a chance to look at the health of the project separate from our status updates. First, we'll talk about the project overall, and then we'll dive into the core, the libraries, and Blinka individually or separately, I should say. I'll give you the overall stats for the week. We had, across the whole project, 43 pull requests merged by 14 authors. There was actually quite a few names in here that were newer, at least to me, or less recognized by me at least. So these folks might be newer or less frequent contributors, or it may just be the case that I didn't happen to recognize their name. Their contributions are appreciated in any case. Those users this week were Hex That, Deep Circuit, How to Flow, May Wolf Sky, King Faroo, and Knockman. So thank you to those folks as well as all of our other authors for the week. For those 43 pull requests, we had seven reviewers to take a look at them. Thank you to our team of reviewers, which does look like the usual folks. So I won't list, but we do definitely, as always, very much appreciate them doing the reviews for us. There were nine closed issues by eight people, and 18 new issues opened up by 13 people. And with that, I will pass it over to Scott for the core, although it occurs to me I didn't ask Scott if you were available for that. If not, I can take on the core, no problem. Yeah, I'm happy to do it. Let me just find my spa. Okay, numbers for the core. Ten pull requests merged from eight different authors. Deep Circuit looks new. May Wolf Sky and Knockman are rare authors as well, so thanks to those folks. We had four reviewers that props to Melissa for reviewing as well. We have 15 open pull requests, which is pretty low for us, which is great. We have four closed issues by three people, six open by four people. So we're now up to a total of 666 open issues. We use milestones to track prioritization for eight or four funded folks. The most urgent is the A2X, which is stable, and we only have one open issue there. We have 42 open issues on 9.0. These are the ones that we want to get resolved before we do a 9.0 stable release. And then we have two open issues on 10.0, which will be the next major stable release for us. We have four issues not assigned to milestone as of these stats. So we'll have a few things to triage, but otherwise be good. That's it for the core. All right, thanks, Scott. Next up is the libraries. I will send it over to Jeff this week to tell us about the libraries. Hello. So libraries-wise, we had a pretty high number of pull requests merged 30. The number of authors was pretty small. I think that Tim, you did the bulk of these for some library infrastructure update type stuff. So thank you very much for doing that. Thank you also to Blabcock Bee for your work. So pull requests-wise, that leaves us with 63 open pull requests, which range in age from one to 480 days old. And if you have one of those open pull requests and would like to move that forward and you're waiting on somebody else, please give a ping on that. Issues-wise, we saw two closed issues by two people and 11 open by eight people. 698 open issues in total and 19 of those are labeled good first issue. We have a page at circuitpython.org slash contributing that will give you an overview of issues, open pull requests, and so forth. And yeah, I know there's some other text that I should throw in at this point, but basically we want to enable you to become a contributor to CircuitPython libraries either as a coder or as a reviewer to code, pick out an issue such as a good first issue from that contributing page, and just give it a try. Maybe you've got the hardware, maybe it's a problem that you say, I would love it if this was fixed for me as well, and dive in and see what you can do. We are around on the CircuitPython dev channel to answer your questions and there are also guides on our Adafruit Learn system for the basics of libraries, for the basics of Git and GitHub, and all that stuff. When it comes to reviewing, you can check out open pull requests and give feedback. You can read, and even for things as simple as spelling and grammar in documentation or more complex things, or you can download the code and try it when you have the related hardware, we want to help you learn how to contribute to CircuitPython as well. So just ask us how you can pitch in. And yeah, so that's the spiel for contributing to CircuitPython and now I'll move on to some other statistics. We track our downloads from PyPI and over the last week, there were 175,000 give or take PyPI downloads of our 232 of our 323 libraries, pardon me. In the document, you can find a list of the top 10 Adafruit Bus Devices number one as it usually is. And then we have our list of library updates over the last seven days. There were two new libraries. One is the PyCram Camera Library, which works with the new Memento board from Adafruit. It's got an app in there that turns it into a point-and-shoot camera that saves JPEGs to an SD card, a mode to record a short animated GIF and some other cool stuff. And we also added to the community bundle a library called the CircuitPython Segment Display, which I have not looked at, but I assume that's about segmented LED displays, such as the seven segment displays. And that's always cool to see. There were also a number of updated libraries, a number which will probably be a lot bigger next week when all these updates from Tim go in. And that is the state of the libraries. Thank you, Jeff. Appreciate it. Next up, I will send it over to Maker Melissa to tell us about Blinka. Hello. So Blinka is our CircuitPython compatibility layer for MicroPython, ReservoirPy, and other single board computers. This week we had three pull requests merged by two authors and one reviewer, which is myself. There were seven open pull requests amongst other repositories. There were three closed issues by three people and one open by one person. And that leaves a net of 80 open issues. There were 19,629 PyPI downloads last week, 8,690 PyWheels downloads last month, and we are at 126 boards. And that's it. All right. Thanks, Melissa. Next up is going to be the first of our two round robins, the Hug Reports section. As a reminder, Hug Reports has a chance to highlight folks in the CircuitPython community and beyond for doing awesome things. I'll start and then we'll go down the list as they appear in the document, give everyone a chance to participate. If you're text only or missing the meeting, then I'll read the notes for you once we get to you in the list. So I will get us started here once I take the first timestamp. My hug reports for this week. Thanks to Scott for reviewing the PRs that came as manual follow-ups to the patch on the libraries. Appreciate that. Thanks to Jeff for making a repo settings fix and documenting that fix in FAQ on Learn. Thanks to both Dan and Jeff for some discussion and advice this morning on Discord dealing with a number of different library infrastructure issues while I was working through those. Appreciate help from both of you. And with that, I will turn it over to Dan. All right. Thanks to Jeff for doing JPEG support, which is going to be in the next 9-0-0 alpha. And thanks to Scott for working on Wi-Fi workflow, well, improving the Wi-Fi workflow in various ways and working on a PR to allow access to more drives than just the CircuitPy drive to access to XD cards while you're using the Wi-Fi workflow, which will be very handy for people. Okay. All right. Thanks, Dan. Next up is David Glauda. I will read as well as the next one, DJ Devin. I'll read and then Jeff, you're up after that. I always appreciate the on-deck notice, but I always forget to do it. So this time we got it from David Glauda reports this week for hug reports to Ann for cleaning the root of the Learn Systems Guides repo. So basically, this is moving all the Learn Guide projects into subfolders so that the root of the repo has fewer things in it. Therefore, they can start being listed on the GitHub web pages. So David says thanks to Ann for that. David also says thanks to Scott for the deep dive and working on wireless SD card access that will help the release of the My Little Hacker board. And David says thanks to me, FOMIGuy, as I frequently see library activity during the weekend, reminding me that a stream took place. Thanks to David. And it looks like maybe DJ Devin is around after all. DJ Devin? Yep. Last minute, just got back. I'd like to send a hug to DeShippu for advice on display.4wire syntax changes and 9.0 to bus display. And if 9.0 is going to have breaking changes that might break everything, then that's a great time to do it. A hug to Justin, Elpa Kennan, and AnikData for being helpful in the Help of Circuit Python Discord channel. On many occasions they've all provided advice to me to point me in the right direction. And Scott for a nice deep dive on Friday and my best wishes to you and your family. A hug to Todd Bot for an excellent tips and tricks repo that continues to give. I constantly find myself referring back to it in order to solve problems. And the more he grows it, the more helpful of a resource that becomes. A hug to LCMCNINCH on GitHub for fixing an Adafruit sprite button example that was showing, slowing down my GUI menu system, which is now running smoothly. That's it. All right, thank you, DJ Devin. And next up is Jeff. Hello again. So my first hub report is a big one for Ann. You've really leveled up in your Git and you're now ready to do command line tasks to help others out. That's really awesome. To Dan, thanks for releasing our city improvements to 8.2.x. Outside of Circuit Python, I have a hug for the author of some open source software, UV tools, and Perusa Slicer. Those are open source tools for, in this case, making prints on resin printers. I'll say a little more about that down in my status update. And finally, of course, the group hug, because y'all are awesome. All right, thank you, Jeff. Next up is Kmatch, who's text only, so I'll read. Kmatch has a hug for Lady Aida and likely Jeff for the Momento camera board, bringing a new way to remember without the need for so many tattoos, which is referenced to a movie of the same name. Kmatch also says group hug to all. So thanks to Kmatch for those. Next up is Liz. Hello. A hug report to Melissa for reviewing the FT5336 library I was working on. To Jeff for hosting this meeting for me last week when I was under the weather, and group hug. All right. Thanks, Liz. Next up is Meg or Melissa. Let's see. I have a hug for Jeff for fixing an issue with the 3.7-inch bar display and circuit python and group hug to everyone else. All right. Thank you, Melissa. Next up is Mark Gambler, who's text only. Mark has a hug report for John Park for the logo, excuse me, the Lego lighting tutorial. I'd been looking for a good solution to doing that for a year. I'll have to check into that one, too. Mark also has a group hug for everyone. Miss being around as much. So thanks to Mark Gambler for leaving those. And next up and rounding out the hug reports is Scott. Thanks, Tim. Just a quick hug, too, for being so helpful and filling in for me on Deep Dive. Absolutely. My pleasure. Yep. Thank you.  So I'll take a time stamp and tell you about that. Status updates is our time to tell folks what we're up to individually. I'll start and then we'll go through the list alphabetically. When I call on you, you can take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be up to in the next week until the next meeting. It's also an opportunity for folks to provide tips and tricks relevant to what people are working on. If a discussion becomes too long for status updates, we can always bump it down to in the weeds to continue it.  My status updates for the past week, I ran a library patch with Adibot to fix the docs build specifically inside Read the Docs when it builds in their infrastructure. And I worked through the ones that didn't take automatically, followed up with a couple manual PRs and a couple other fixes of various things. I also did the release sweep afterwards in order to go and release each library that has now gotten that new fix from the commit. That one had a much smaller list of things that didn't work automatically. So I've been working back through those today. And then I've got the lists down in the weeds of all the ones that I think are outside of my ability to handle. So we've got those at least caught up though with the patch and the release on everything, I think, at this point. The other stuff I worked on or intend to work on, I should say, moving into the next week is the Circuit Web Workflow. I started this a little bit back. I set it down when I started doing the patch so I didn't do much last week on this, but I'm hoping to wrap it up this week now that the patch is out of the way. I want to try out the new SD card support in Web Workflow. I've belated Hug Report to Scott for that. That looks super cool. And then outside of Circuit Python, I have been still keeping up with the advent of code and TriHackMe's admin of cyber. I've had lots of fun with both of those and I've learned a lot from completing the daily challenge, so that's been very cool. And with that, I will pass it over to Dan. All right. So we're getting ready for a 9.00 alpha-6 release. Could be within the next day or two. I blogged this problem that we've been seeing with macOS Sonoma where you get delayed writes and it really messes with using CircuitPy. I created a blog and then reposted that little explanation on Mastodon as myself and as CircuitPython. And that got some traction. I got like a dozen boosts and stuff like that. And also people subscribed. People added CircuitPython to themselves, to their follow lists also. So maybe some more people will report this bug, which is we can additionally try to get Apple more interested in it. I wrote up, I did some testing, which USB serial chips are supported on macOS in which versions of macOS? Was native support added to those? Because it's very confusing when that might have happened. And I was able to roll back two old Macs to some really old versions and then roll them forward and test FTDDI and CP2104 and CH9102F chips. And so I wrote that up as a playground note and it will eventually be incorporated into the appropriate learn guides. So that's what's going on right now. And I'm fixing working on DinoO also. Thank you, Dan. Next up is David Galata, who's text only, so I'll read. David says CircuitPython a couple of weeks ago tested the BT Home protocol with code from in CircuitPython, I think tested in CircuitPython using underscore BLEIO code from the, let's see, from Cohen verboseum. See in the weeds for more on that. So we'll discuss that a little later, it looks like. For CircuitPython this week, David says investigating why my doorbell music started at least twice in a week without anybody pressing the button. Only the CircuitPython board triggered and investigating the debouncing option to see if we could reduce false positive triggers. Non CircuitPython over in Arduino Land. David reports this week spending six hours helping a student prepare for an exam and to find a project to build. The project is a school traffic light that stops car traffic at the press of a button. It includes beeps for additional accessibility. Reviewed one more time, pull up, pull down, and internal pull up in order to explain the various ways to do a button. I always have to review those myself as well when I sit down to work on a different one. Tested the code and made some nice schematics in the simulator at wakui.com, which is a super cool simulator for folks that haven't seen it that's able to emulate or simulate CircuitPython devices. Really neat stuff. Alright, next up is DJ Devin. Okay. Thank you. This week a GUI touch version of the Feather Weather is coming along nicely. At one point it was 1,700 lines using only FL statements. After a week of frustration I got every page working and refactored down functions to just about under 1,000 lines. CircuitPython touch GUIs are more complex than I imagined. Ran into a problem not being able to display the Wi-Fi radio RSSI on a TFT easily. There are a lot of examples for printing it in REPL, but I couldn't find a single example of doing it on a TFT. So with the help of OpenAI and an hour of teaching it syntax, it finally led me to something that I could output to a TFT. It doesn't quite work perfectly. It has display IO group appending issues that I'm still sorting out, but everything works pretty okay. This morning I was able to increase the GUI menu responsiveness, so it's really quick to respond now. And that is in particular in thanks to user LCMNCNich, who spotted a way to improve the Adafruit button example code, and there's an issue on that. And then right before the meeting, someone popped into CircuitPython chat and found a new last-minute bug engineering where an ESP32S3 reverse TFT will not display due to an attribute error. Neither display.show or root group work. And I will file a bug shortly. Nice. Thank you, DJ Devin. Next up, we will hear from Jeff. Hello again. So last week, like the most exciting thing was I ran into a rig problem with just one of my many OV50640 camera modules. There were artifacts that you would see in the JPEG output. And since you've all seen the memento camera, Adafruit is prepared to put out a lot of this product. And this is something that the in-house testing process wouldn't see. So Lamar had me write a test for this kind of defect, and they may end up adding it to the in-factory testing procedure before those boards go out. I haven't heard the latest on that, but basically, and if you have a module between all of us, we've maybe tested 20 or 50 of the camera modules and so we don't necessarily know all the kinds of interesting defects that show up. But basically, there would be artifacts that repeat vertically in the image every 16 pixels, and they're about the same no matter what you're actually taking a picture of. And it's only when you're in JPEG mode you don't see it if you're just displaying an RGB image to the built-in display, for instance. So that was fun. Other news, the JPEG IO module is now merged to the main branch, so the next nine pre-release is going to have that on a lot of boards. This module lets you decode JPEGs as long as they fit into the circuit Python available RAM. And that's pretty cool. And next up, the expressive.clock frame buffer. Melissa mentioned this had a hidden requirement that the frame buffer had to be a multiple of 16 pixels across. That's because like a fundamental, I think, cache unit of expressive boards is 32 bytes. We had a display that actually needed 360 pixels. So internally, the size is now rounded up, and a non-displaying part is added at the right side of this display if necessary. So internally, this display becomes 360 pixels wide, and that works. So next up, I am going to adapt an existing guide that uses display IO and Adafruit IO to display a JPEG image on a circuit Python board. And I'm going to redo that using Qualia and using JPEG IO, so it doesn't require Adafruit IO to display a JPEG image. Like, there's one that I think fetches space-based images that are free on the internet, and of course that's always pretty cool. And then I have to check back tomorrow to see if the bundle makes a correct release with binary files. This is something that we wanted for the OB-5640 camera, the Qualia board, all that stuff. I had merged in a needed change to circuit Python build tools, but because I did not make a release, the bundle hasn't been using that to actually build. So I tagged the release this morning, and as soon as there's a new bundle release, I will go back and check that the camera's autofocus firmware is part of the bundle. So, after that I have a daydream that's related to this facility to build bundles that have binary files. It would be really neat to have a font bundle. Naradoc did this thing, Belated Hug Report Naradoc, which is a bundle of many, many different keyboard layouts. And they're not like individually written libraries, they're generated libraries, and then you can install, like, for instance, the keyboard layout for a Windows computer in France, or a Mac computer in Germany, and then send USB HID, like, typing out words that still work despite the different keyboard layouts. Anyway, this shows that we could, for instance, generate a lot of libraries within one bundle, and each library would contain one font, such as Adafruit Font MonoBold 24. It would be pretty cool if we could have this, and then we wouldn't have to copy a TTF file or generate a BDF file from a TTF file and copy it into each of our projects. I'm not going to do that right now, but if somebody wants to take this idea and run with it, you would be an awesome person. Anyway, then a couple of other project ideas. I mentioned earlier the software UV tools, and together with PrusaSlicer you can use these as open source alternatives to the proprietary software that's bundled with the printer. I'm always happier when I can use open source software to do my stuff. And my, like, one week review of resin printing, the results are really cool. They are so much more organic looking than something you get from a 3D printer, or so much smoother just because the layers are so fine. They're like 0.05 millimeters instead of 0.2 millimeters. However, everyone will warn you that the resin is uncomfortable to be around and dealing with the cleanup and just not harming yourself by getting the resin on your body. It is a really huge pain, and my basement is not super well ventilated unless I can open up the outside. So the wintertime is not really a good time to do this, and I'm going to have to put it away basically until the weather improves. So just be aware of that when you think about getting a resin printer. It's just so many times worse than a filament printer in my experience. And then in other other news I wrote a two-factor authentication app that runs in the terminal and released it on GitHub. So if you use the Google Authenticator app this is an alternative to that that you can run on your computer. And I'm like user zero I don't think there's a user one yet, but you know it's open source on the internet. And this library textual has really made it fun to develop terminal-based applications again. I like it a lot if that's something that you think you would want to do I recommend picking up this library. It works with Python, not with CircuitPython, but just with standard Python and you can do a lot and it's like got a modern vibe, but also like that pre-windows vibe of everything was just made out of text and so I like it a lot. Anyway going on for a long time, but that's what I've been up to. All right, yeah, thank you Jeff. Next up is Mika Melissa. Hello, so I finished up my Qualia library guide and I did a huge true factor on circuitpython.org that required editing every board file so that multiple URLs can be associated with them. I added missing boards to circuitpython.org and fixed the board's API so that that valid JSON is now produced. I added the bar displays to the Qualia library and also the guide I forgot to write that down and I tested some bug fixes in circuitpython that Jeff had mentioned and stuff. I reviewed and merged some more Blinka PRs I added the 2.8 inch round display to the Qualia guide as well and I needed to still add the new displays to the Arduino section of the guide and I need to work on updating some of the Raspberry Pi installers scripts and that's where I'm at. Alright, thank you Melissa and next up is Scott. Hello Okay, so my parents are at my house and will likely be until my mom goes into the hospice so I'm off and on still. I'm catching up on email last week the deep dive was my last of the year. Thanks again to Tim for deep diving this week and then neither of us will deep dive the two following weeks. So that will take us into the new year. That reminds me, speaking of the new year and David, thank you for the reminder that we will be doing circuitpython 2024 which is our call for folks to say what they like about circuitpython and what they want to do in the coming year kind of like the big items that we want to work on as a community and what projects and things so we will be doing that and I'll do a quick post on New Year's Day to kick it off and then now we should start thinking about our own and do those and we already have the email set up so if you do one early you can email circuitpython 2024 at www.atorford.com and should get to me and fill to run. Circuitpython wise I made a PR for SD card support in the web workflow but all the NRFs with BLE workflow broke so I made it a draft again because I decided to do a bit more refactoring to allow one to share code between BLE and web workflows but also to switch us to per file system locking so now we're managing multiple file systems both like the SD card and the normal internal route and by refactoring it I'm going to add SD card support to the BLE workflow as well and then what will happen is the USB workflow will lock the file systems pretty aggressively because it's block level support but between BLE and web workflow it should be able to do the locking on a per transaction basis instead of like USB where we don't know where transactions are and until it's ejected so I worked on that and that should be pool prep work for when we get back to BLE IO on estressive in the coming year and they're able to do BLE workflow and web workflow from the same chip that's my update alright thank you Scott and that is it for status updates so that will bring us into the fifth and final section for the meeting in the weeds reminder in the weeds is an opportunity for some more long form discussions those can either have come out of status updates or been identified ahead of time if you do have an in the weeds topic and you have not already had it to the doc please go ahead and do that right now we have a couple here so you've got a moment while we work through those but as always just list those in the weed topics down at the bottom of the document so first in the weeds document was mine and I left a text file in there that was just a list of all of the remaining issues that came out of the library patch and release sweep I believe everything in this document will require either access to the repo settings or something else inside GitHub like that that I don't have access to and I just dropped it here because I didn't want to get lost in the shuffle in GitHub so I don't know if there's too much to discuss unless if anybody has got questions or comments on it but I just wanted to put it here to make sure it was somewhere that didn't just scroll past us like on the discord one question I have for you Tim is do you know what like the standard settings should be I do not I made some changes which I thought were correct and they weren't so I'm going to take a look at this okay I mean they started reminding us that there weren't branch protection rules and I so I added branch protection rules not realizing that I would break some automated stuff okay I will undo that okay okay even better we need to exempt the itabot account from the branch protection rule yeah but it was hard to do that and the patches work a little bit differently the patches as far as I understand it when you run that patch manually so not like the actions and stuff that itabot runs with cron inside github but when you do like a manual patch like I did those commits come from whichever github token you use which is the user's token okay okay so we can exempt you from it yeah or yeah whoever is running if there's a way to do lists like that I mean the protection rules we almost never have people violate the explicit rules anyway so it's not clear that we're enforcing them yeah that's fine and then the other one the only other ones that were different were like my best guess was it just either didn't have the token or the token was expired or different for some reason than the other libraries there was only I think one or two like that than the rest or the branch protection thing okay and it sounds like Dan will look at all of those for you yeah so I have a token stashed away and I can put it added to those cool appreciate it thank you didn't we intend to use an organization wide token as the the default or am I thinking of a pipi thing that might be correct and so maybe there's an incorrect token yeah or maybe that that one repo is not set up the same in the organization perhaps or something like that where because I was thinking the same where it was like somehow shared between all the libraries it's not that they all had to have it set independently so I was thrown off by that error when it did pop up there is a ghrepo token Adafruit organization level secret and I would have guessed that that would be the one that it should use and then that a repository level one should not be used but if it's there it would be used you know it would overwrite it maybe that repo does not belong to the org the same way or something like that link that ties those two together is somehow broken or different could be the case on that one okay alrighty yep thank you to everyone next up is David Glauda who is text only so I'll read David puts here that we can read the the TLDR version which is that a Belgian book author yeah a Belgian book author about bluetooth on microcontrollers used underscore BLE in circuit python underscore BLEIO in circuit python because he had trouble with the BLE documentation maybe someone can check if it's possible to do it without underscore BLEIO or contact the author to see what can be improved from the documentation standpoint and then I'm guessing that this github link is the book or no maybe like the the books companion code so to speak he didn't he is a book author but he did not put this code in a book I see okay so it's correct that there is not there is not general documentation about the eight of room BLE library there should be a guide a general guide but there is not we always refer people to the examples so that's a deficiency that should be a long-term documentation issue or something okay for the general BLE guy like we know the path forward then there I don't know if there's a issue in github or anywhere but maybe it's appropriate to make that somewhere just so it doesn't get lost in the shuffle or something cool alright and then last item in the weeds is for you Dan I'll pass it over to you just I think that everything that I would want in alpha dot six is done the only the only there's scouts draft SD card workflow thing but I think we could push that to later if we want yeah I wouldn't hold it up for it I think because I don't think the workflow and fixes I've already done have been released yet so it'd be nice to get an alpha out yeah so I will just I just merged a a translations update and I may or may not update the I could update the frozen modules to probably and then I could do a release yeah not tomorrow or something frozen uh frozen modules I do think would be good I've seen a couple of issues pop up in libraries where it's stemming I think from out of date stuff in the frozen one so I'm definitely in favor of that I will do that then yeah and I think I think that'll have a new IDF update too right that's right it'll have the 512 update yeah that's good too yeah yeah I think it's good to do and right there was something about the reverse TFT isn't working or something maybe that was an 829 but I'll check that briefly also yeah I'm inputting the bug report for that right now okay I think it should still be an alpha because I am in my draft I'll change the behavior of storage.mount so that'll be that's a breaking API change okay because yeah with this with this draft PR you'll be able to you'll be required to make a directory to mount to instead of the current way that it works in 8 is that it bears if the directory exists but forcing you to have made it already means that it gets listed in the parent which is what you know Linux does already okay alright and that is our last in the weeds topic so with that I will get us into the wrap up let's see so this has been the circuit python weekly meeting for December 11th, 2023 thank you to everyone who participated as a reminder again if you want to support Adafruit and circuit python and those of us that work on circuit python consider purchasing from the Adafruit shop at Adafruit.com the video of this meeting will be released on YouTube at youtube.com slash Adafruit and the podcast will be available on the major podcast services it will also get featured in the python for microcontrollers newsletter which you can visit adafruitdaily.com to subscribe to that if you like the next meeting I believe is Monday however I did not actually into that so let me try to pull that up real fast here unless if anybody happens to know I think we're on Monday next week the next meeting is Monday December 18th at the usual time but note that that is our last meeting of the year the meeting after that will be on Tuesday, January 2nd, 2024 awesome yes thank you very much Jeff with that we will say that's the next meeting yep on the Adafruit discord as always you can join at adafruit.it slash discord you do need the circuit pythonistas role if you want to speak and another perk of that role is you'll get notified of changes in the scheduled meetings such as the ones that will be skipping coming up a couple of weeks so with that thank you everyone again and we'll see you all next week


Welcome to Data Doctors' Video, Suggestion 853, GEDCOM Junk. This suggestion is triggered by headings and corresponding data that should be deleted, but delete only those headings and data. GEDCOM Junk is generated from GEDCOM downloads that included sections that shouldn't be on Wiggy Tree. To make the profile easier to read and understand, these sections need to be deleted. Because one and a half million profiles have at least one GEDCOM Junk heading, the suggestion isn't created unless there are three or more of these headings on one profile. Even at this limit, there are over 100,000 affected profiles. This limit will be reduced over time. You can find and correct any instance of GEDCOM Junk on your managed profiles from the Wiggy Tree Plus site. To get there, hover over the Help link and click on the Help Index. Next, click on the W to jump to the Wiggy Tree Plus link. That takes you to this page where you click on the logo. You are now on the Wiggy Tree Plus site. Close the Suggestions heading and click on Search. In the text box, type in GEDCOM Junk. You can use any search criteria in combination with GEDCOM Junk. For this example, next to it, type in your Wiggy Tree ID. Click Get Profiles. You will get a report similar to this. Here is a list of GEDCOM Junk headings and sections for Suggestion 853. Our first profile shows two data-changed headings. These headings and text give no information about the profile person, but are simply a part of the GEDCOM file identifier. Delete them. Next, we see User ID. This also comes from GEDCOM and has nothing to do with Wiggy Tree. Delete this as well. The next profile has Latter-day Saints or LDS Baptism and Endowment dates that can be readily found on Family Search, which is managed by LDS. For that reason, they are not necessary on Wiggy Tree. Delete both of them. Following that, we see a record file number heading and text. That file number is part of the GEDCOM download and has no meaning here. Delete that section. Submitter is another GEDCOM identifier and needs to be deleted. The third profile shows the heading Object with text. The object information links to our personal computer and cannot be used by anyone other than that person. Delete it. You should also delete the Submitter and Data Changed sections. The fourth profile shows the last heading mentioned in this suggestion, Color. It has no meaning for the profile or its appearance. Delete that as well as the User ID and Data Changed sections as we did before. Here is the Suggestions Report for Perry Harding. It shows only one suggestion, 853. The Info column lists three imported headings, Data Changed, User ID, and Data Changed again. Here is the public view of Perry's profile. You can see in the contents index all the headings listed, including the three on the Suggestions Report. They are seen in the biography here, here, and here. Note that there are only two sources listed, one from a family history and the other from personal information, including address and phone number. Click on Edit. Scroll down to the Biography section and delete the first Data Changed section. Next, delete the User ID section and the second Data Changed section. In the Marriage section, delete the User ID as it is not applicable to Wikitree or to a source. Delete the extra heading under each section as they are redundant. The personal information of address and phone number listed with one source needs to be deleted. The words information from can be added. As a last step, remove the second colon beside Birth Date, Death Date and Place and Burial. Leaving them will create an extra unnecessary indentation. Click on Preview to check your work. Make sure that the inline citations are properly showing in the Biography and Sources sections. Go to the middle of the Profile page and explain your changes. This is strongly recommended for all Wikitree users and is required for data doctors. For me, I identify myself as a data doctor. Copy the suggested number and name and explain what I changed. Save your work. Return to the Suggestions report and on the far right, click on Status. On the Suggestions Status page, make sure your Wikitree ID is showing. Of the five status options, choose one. In this case, correct it. Normally, you would choose a comment from the comment hints, but this suggestion is so new, there are none. Nevertheless, leave a comment of your own. Click the Update Status button. The last screen shows the status history has recorded your changes and you're done. You are invited to like this video and even leave a comment if you wish. Also, keep up to date with new videos by subscribing to our Wikitree YouTube channel. On behalf of the Data Doctors Project, thank you for watching.


Yeah, I still haven't washed my hair. It has been baby Who give my cute little neighbor from Paris, Texas? It has been like three weeks I'm gonna put on some lipstick cuz I feel like that'll complete my outfit. Yeah, I have on this cute I've on this cute. I should show y'all but this is this is a The story time I've on this cute outfit. Anyway, let's get into the story time girl I kind of have an idea of how I want part Is this six or seven y'all? 6.5 to go and this is gonna be 18 plus because something's going to pop hold on Yeah, I probably think she drinks a lot. Actually, I don't I probably drink first of all I never feel this all the way girl, please which is actually good for your heart And it's good to calm my common nerves girl calm my nerves. So We have ended the previous Um story with love month with Byron Confronting or asking Kendra as she will be willing to visit some nursery home nursery homes For his aunt Nora aunt Nora Alzheimer's has gotten worse. She is also falling down a lot, which is a sign of of When the Alzheimer's and dementia actually gets worse falling down Confusion is work is even worse A lot of the times she doesn't it doesn't even know who Lamont is So there are not a lot of nursing homes in this small town, you guys There's only about three of them and so Kendra does go with Lamont while another family friend Watches aunt Nora at home and she's watching Young and the Restless Girls they are watching her stories and so fast forward to the day of when aunt Nora actually is moving into the nursing home and Byron has asked if Kendra would be there for support and she's like absolutely now y'all Kendra is 7.5 months pregnant y'all that Billy is is poking out and so she's no issue. She's not having any issues and Lamont Try for an ass was able to make the the previous now. He missed the one and Byron came he was upset about that one So then he came to this one So anyway, this is the day that like I said on Nora is moving into what what could be the name of the nursing home Great as a matter. She's moving into the nursing home and Byron. It's so nervous you guys again miss Nora aunt Nora has raised Lamont Byron aunt Nora has raised Byron as her own child even though that's technically his his Aunt and she is that's her nephew. So Byron is really quiet as him and Kendra and aunt Nora is in the back they have packed a few of her belongings for this assisted living and She is getting ready to Basically be walked in so Byron is quiet and Kendra's like it's okay Byron trust me you she will be fine here You you're making the best decision for her and he's like I know I just is she I just feel like I I Wish I could have done more and she's like this is you doing more and one of the nurses come out and greets Aunt Nora and Kendra and Byron and Byron reaches down because I'm Nora's short y'all I'm Nora's barely five feet tall He leans down and hugs her and kiss her and that's when I'm Nora looks up up and an enemy said why are you crying, baby? And y'all this is so sad to me Byron. It's like I just I'm so sorry And I know I said don't be sorry, baby. I'll see you tonight She's not realizing that she won't see Byron tonight Maybe in a few more days, but not tonight on Nora and Nora's like, yeah So make sure you get the nice TV dinner that I like and he's like all right on Nora And so he hugs her and the nurse smells at them and she walks her out to the Front of the she walks her to her room and Byron turns around that's when he starts doing that hurtful Silent crying like tears are just coming down, but he's not making any noise. Oh god And that's the worst type of crying Kendra goes up to him and she grabs his hand And she leans in and she hugs him and they're they're hugging for a while and so they walk outside and The clouds are starting to come in and it's gray skies because it's getting ready to storm And so Byron's like, let me go ahead and get you home before The storm comes so he's getting there and it's slowly raining by the time they do get home because the nursing home is about 15 To 20 minutes away from Kendra's house.   This is Kendra. Are you okay Byron? He's like, yeah, I am he said. I'm sorry. I just It's just been a bit much, you know He said but you know the only thing that good that's happened to me this year is Working for you guys and that's when Kendra's smile She's like, I'm pretty sure there's other things that has happened. He's like, no, you don't understand I feel like, you know, things haven't been right lately and then having, you know, my aunt Her all summer which is getting worse, but I really have enjoyed working here. And so Kendra looks at him And she's like, well, maybe I can talk to Lamont about it and we can see if there's you know, any way that we can keep you on any longer And that's when Byron looks at her. He's like I would like that and without even thinking about it, you guys Byron leans over And plants a kiss right on Kendra. She doesn't stop him.  They're basically making out that's when Kendra Here's a sound that says hello. Hello, and she looks down She looks down at her lap child her billing on accidentally sweet doll Tiffany Is that you she's like, oh my god, Tiffany. I'm so sorry. I accidentally called you. You know what? I'll I'll give you a call later on. She's like, okay, Kendra. Are you okay? Byron was like, I'm so sorry I'm so sorry. I didn't mean that I shouldn't have done that. She's like, no, no, no If I didn't want to I would have stopped you He's like, do you want me to continue and she's like, no, I think I'm good. And so that's when Byron was like, let me look back here and see if I got a jacket or something So he reaches in the back and he finds a jacket He gives it to Kendra and she uses it to go inside and so Byron's going home. Y'all he's driving. He's like, what am I doing? I think I like this woman. She's married. She's way out of my league. She's pregnant I don't know what I'm doing So Kendra, what makes her way? She goes up She knocks on the door to Lamont's office. He doesn't answer. So she lets herself in She sees that he has dozed off at the desk and his laptop is still up.   So she checks it and it shows that he has been bidding again You guys he has been online gambling and her heart starts to race and she's like So she doesn't touch it. She clicks out of it. She doesn't touch it She leaves it up and she leaves Lamont in there, right? Kendra goes up And she sits down and she's like, I can't believe this But then she started thinking about the kiss from The next day Kendra is in um She's in a living room just going through looking at stuff for the nursery because they're gonna get ready to Decorate and paint the nursery and they're getting ready to really decorate the nursery Lamont comes down damn near 11 o'clock in the morning because He was drunk last night and passed up and he's He's out of it. So He's like, hey, baby. So, um What's that? What do you you make breakfast? She's like, yeah, I made some french toast and eggs and go ahead and have you some He's like, all right then so he goes to fix himself a plate And so Kendra's thinking should she bring it up? No, so She's thinking, you know what?  I don't have time for this You know, I got I got too much stuff going on. So she goes upstairs as she's going upstairs She gets a call and it's tiffany. So, um tiffany's like, hey girl, um, what did you and your belly want the other night? What did you and your belly want the other night? She's like girl. I was in the car with Byron and my phone accidentally tiffany said, whoa, whoa, whoa, wait a minute You were in the car with who? She's like, I was in the car with Byron. He was dropping me off and my phone accidentally, you know It bumped into you and and she's like, huh? She's like, y'all sure have been spending a lot of time with each other I got something to say. Please. I'm I'm gonna ask you right now tiff. Please.  I'm ready girl. Well, what what is it?  I'm ready now. What is it? And so Kendra goes on to explain how one night she had asked You know Byron to stay over and while they were asleep, you know, somehow the pillow fell over and Byron was aroused and his little peter his Good size peter roped up again. It's our bag and that was that's basically what what woke her up Here's Tiffany. Oh girl. Did you get a look at it? What did it look like? And so the kid was like Tiffany. No, I did not see it.  You think if you can feel it through the through the sweatpants, you know something vicious So Kendra was like, no, let me finish just and so she's going on to explain how You know Byron has been confiding to her about things that are going on with his aunt And that he dropped her when he dropped her off that he leaned in and kissed her And she didn't stop him and so Kendra Is waiting And she's like, hello because still usually Tiffany. She's like, hello. She's like girl I think I'm gonna need a cold shower after this story. Kendra's like Tiffany. I'm serious. I don't know what to do You know I'm seven months pregnant and I just kissed another man and I'm telling you the way he was looking at me I can tell that he's possibly he was possibly starting to develop feelings and That's when Tiffany cut her off. She said Kendra.   I would not feel guilty at all about kissing that little fine thing. That's the difference between me and you I do feel a little guilty and it is wrong. Oh Tiffany said well, all I'm trying to say Kendra is that it was a little kiss I wouldn't take you any further than that. You know, you can't turn back time. You can't say you didn't have it Hell, I wish you would have happened to me truth be told But you just can't you know, you can't erase the past and she said well I would do is be careful with how much time I'd be spending with old boy because girl you don't want to slip up and follow something So Kendra's like that's not happening, you know even though Lamont and I really haven't been doing anything that much lately It's been like two or three weeks since we've had sex. I mean, I know I put on a little weight but um, yeah, he seems like he's really not even interested That's when that's when Tiffany was like say what? I have now since you get a free pass stand with y'all and so y'all they hang up And while Kendra was on the phone with Tiffany Byron had sent her a text message that said Thank you again for today And if I ever make you feel uncomfortable, I do apologize Kendra looked at the text message She thought about what Tiffany said And she sent him a message back and was basically like look, I know we talked about boundaries But Lamont's gonna be gone tomorrow Um, and I was wondering if you would be okay with coming over here for dinner Byron responded like this baby. He's like, yeah, just let me know what time Ciao, that is it for part 6.57 y'all


Live from San Francisco, extracting the signal from the noise, it's theCUBE, covering Oracle Open World 2015. Brought to you by Oracle. Now your hosts, John Furrier and Brian Grace Lee. Hello back, welcome back everyone. We are here live on theCUBE, exclusive pre-game coverage of the afternoon keynote with Larry Ellison and Vishal Saka. The theCUBE is our flagship program. We go out to the events and extract the signal from the noise, I'm John Furrier, the founder of SiliconANGEL, John McCose, Brian Grace Lee from the SiliconANGEL Media Research Team at wikibond.com, Brian, keynote's coming up. I'm expecting a deeper dive by Larry Ellison. Certainly he had the day zero or day one for us on Sunday when he did the keynote there and saw him really lay out right out of the gate. Here's the new competition, here's how we're doing things. We've got cloud across the board. So I'm expecting a little bit deeper dive from Larry Ellison, what are you expecting? Yeah, well this morning's keynote, we saw a little bit on the new IaaS, infrastructure as a service offerings. I think today, especially with the partner, with Infosys being the partner, he's going to deep dive into how do I expand SaaS applications? I'm really hoping he shows us how do you migrate applications to the cloud? That to me is a big deal. Let customers understand how complicated or simple that is. And Vishal Saka, the CEO of Infosys, former SAP, really a pioneer in the web services space. I remember talking to Vishal back in 2001 timeframe and then going through the early part of the decade, web services and APIs was a foreign concept. And he was really a believer in the API economy. So was Amazon at that time. So obviously Amazon is what they become, Amazon web services. So I want to hear the story around developers. I want to hear about the new normal, the new API economy. I want to hear about how big data and applications are being built. And I want to hear it, not just for Oracle, I want to hear it beyond Oracle. I want to hear about the developers. What's happening for developers? If I want to build an HR app that's a very unique use case, can I do that with HCM? We heard Chris tell us that they could. So I want to hear some real high powered game today from Larry Ellison. Yeah, no, I agree. This is what I would call a suit and ties show. We're a lot of cases, we're going to the hoodie shows, the t-shirt shows. How are they going to attract those folks? Those folks are open source. Those folks, they want to work on multiple clouds, whatever pace they want. It's going to be interesting. Can they attract them or more importantly, can I attract enterprise customers to want to change their business? Let's talk about that dynamic because the hoodie crowd versus the suit crowd, Oracle wants to go and win cloud. They got to win the developers on the enterprise and in mainstream. How do you win development? In my take on this is that developers care about, leave me alone, let me pick the tools that I want to use, get me distribution and help me make some money or be successful with my app. At the end of the day, all dogma aside, that's the core. Right, absolutely. So yeah, no, they want to make money, they want to be in business for themselves. There were some things in the announcement this morning, though, that concerned me a little bit. I mean, they were talking about doing billing monthly, they're doing DevOps, but pushing once a month. You tell that to most hoodie developers and they would go, that was great. Thank you, thank you, grandpa, for telling me about 2008. So I think they've got to step up their game and their capabilities. Right now it's a nice cloud offering for slower moving enterprise applications, but the ones that need to iterate fast, I'm not sure, we'll see how that evolves. After the main message here at Oracle, open world is the cloud, integrated cloud, applications and platform services. Brian, I want to get your take on this. This is something that we've been talking about before this show and all the shows, but specifically around Oracle is that the DevOps movement really has built the ethos of what the cloud is. And the primary term we use is infrastructure as code. Basically what that means is, hey, I'm a developer, give me what I need and get out of my way. I want to provision stuff back on my application. Oracle seems to be positioned super well for infrastructure as code. They got the M7s, they got the superclusters, they got under the hood engineering systems. Now they got integration in the cloud. Do you think that will be a game changer for them? Do you think they have infrastructure as code and if not, what do they need to do to get there? Well, the question to me, and again, we've been really impressed with all the M7 stuff, the Spark stuff and everything, is do developers have to now think about hardware? Because we've gone through this age of things are getting abstracted, I don't have to think about hardware, I don't want to think about hardware. Do I have to start thinking about that? Do I have to be knowledgeable about it? That'll be an interesting dynamic to watch. And then like you said, infrastructure as code is all about moving fast, it's all about things being in software. It's going to be interesting to watch that dynamic as to how fast can they help customers go. So we heard this morning that throughout the day, multi-tenants big in the cloud, in-memory databases, integration, and database intelligence. Is the data going to be a big part of this new normal for Oracle? Obviously identity, federation, these are terms that have been kicked around. Your thoughts on the data as a service and the notion of their multi-tenancy. Right, well, so Wikibon's David Floyd, our CTO talks all the time. Data's heavy, right? The challenge of moving applications to the cloud is how do you move the data? What's going to be really interesting? And we've heard them talk about data services. How many data services is Oracle going to originate? How much can I get weather data, census data, ongoing streaming data? Because if I can get that out of the cloud natively, I'm more driven to want to put my applications natively in the cloud, use those native cloud data services. What do you think about app builders, app builders, the tools that they have? What do you think about some of the technology they have around making it easier for the developer? Do you think that they have a good UX strategy? What are some of the thoughts there? Obviously, they're talking about user experience. Larry mentioned that on Sunday. What do you think about their overall positioning for these new app developers? Well, let's put it in perspective. If we look at Amazon's cloud, you know, the patterns that we've seen from them over the last year and a half is start with raw technology, get feedback on it, and make it simpler, because people don't want to have to think about all the complexities. If Oracle's starting from that position, they're starting with make it simple, make it easy, make it easy to integrate between those things, that's a huge advantage for them, and that's a key to them being successful. You know, one of the themes that we've been hearing for the folks out there, here on theCUBE, at this event is within all the messaging and all that stuff with Oracle Zoom, from the customers and from all the hallway conversation is I hear two themes, I want to get your thoughts on it. I want more and go faster. Now that's different from an event when you hear things like, can you explain that to me? What does that mean for me? Much more questioning, more challenging. You have a commit mindset from customers here that generally that Larry is right, the wave is here, client server is over, the new era is upon us, integrated cloud, and Oracle has product. So more and go faster. Your thoughts on those two key words. Well, I think the key thing that I've gotten out of all the Oracle announces this week is, Oracle as a vendor is committed to the cloud, and for a lot of companies, they're not 100% committed, vendors aren't committed, and that's going to drive how comfortable your customers feel. When your customers feel like, hey, they're going to let me get there, they're going to help me get there, that's going to be a big impetus, because change is hard, if they feel like the people supporting them are doing it, that's a huge, huge piece. So the apps on top of the platforms, we were saying in the cube earlier that there will be a tsunami of ISVs, a tsunami of an application market that's going to emerge. In the client server era, there was. You saw companies be built. Now it's still a different, it's more horizontal platform for Oracle, and these new apps, although Oracle has ERPCRM and HCM in the cloud, there's a lot of other opportunities for ISVs, and potentially for smaller startups to get a good beachhead in white space. Your thoughts on that? Well, like we've seen, VCs don't invest in hardware anymore. They invest in companies that are going to build in the cloud. I think we're going to start to see more and more of these customers, more and more little kids coming out of college going, look, I need a job, I'm going to work around a place that's going to drive revenue. That's a space they've got to go after. The big SIs will have their business, we'll see if they can go fast. I think we're going to see a huge number of ISVs, smaller ISVs want to start to play in this space, especially around IoT, and we talk about changing behaviors, millennial behaviors, those types of things. Our Oracle has to be considered in the top three, no doubt in my mind on cloud. That's my clear walk away from the show, and I kind of considered them already, but looking at the data, anyone who doesn't put them in the top three is really not doing their homework. Larry Ellison's going to get up on stage, obviously with Michelle Sica, who's a guru technologist, I expect to hear more APIs, but I think it's the meat of the bone. I mean, Larry lays out the early stuff on Sunday, kind of sets the stage for the mood, right? And then checks off the boxes, gets stuff out there for the announcements. But front end, he clearly saw the new competitors, kind of talked about IBM SAP as the old competitors. I think today we're going to see more meat on the bone. What's your thoughts and relative to that whole keynote? No, I hope so. I mean, given the build-up, there's an opportunity for killer demos. Show me how to migrate applications, show me how to extend an application, show me how I'm going to build an application that's open. We've been talking about open all week, we're talking about secure all week. Show me how that happens. Huge opportunity for them to sort of nail that down. And I think one of the things I want to see in the demos that I expect to see is speed, agile, rapid provisioning. I'm expecting to see Larry push a few buttons and saying, oh, look it, I just pushed HCM to the cloud. Versus month supporting. Yeah, I don't want my cloud to be a two-year integration project. Don't show me that, yeah. Show it to me in two minutes. All right, we have two minutes left. This is SiliconANGLE's theCUBE. We're breaking it down. theCUBE is powered by SiliconANGLE Media, which is the Wikibon research team at wikibon.com. SiliconANGLE.tv, where we have our CUBE show, our flagship event. SiliconANGLE.com, our publishing. And of course, our CrowdChat engagement application. Check out crowdchat.net slash oow15. And all the content from our three and a half days of coverage and all the trending conversations from the crowd that we're monitoring and capturing will be seen on crowdpages.co slash oow15. And go to wikibon.com. Stu Miniman has had a research piece. We have a couple seconds left here on the end of storage as we know it. Turns out he wrote that post and then all of a sudden on the keynote with the cloud, it is kind of end of the storage. But exadata is still under the hood. What's your thoughts? Well, we get tremendous access to vendors. I think we have a pretty good perspective on what's going on at the market. Yeah, it's happening fast. The cost of storage is coming down. When the cost comes down, people want to use more of it. They got to use it in the cloud. It scales better there. EMC is acquired by Dell, basically going private. I call it a reverse merger, but still that's gonna take nine months to complete. Michael Dell's got his hands full, $67 billion. That's a watershed moment for the industry. And I think highlights the fact that Oracle's pumping on all cylinders while everybody else is basically trying to retool. Thoughts real quick. HP's struggling. EMC's got to figure out who they're going to be. Cisco's got a new leader. Lots of opportunity for Oracle to go really take a lot of market share. Is Amazon Web Services punching up to Oracle? I think they're punching in their own direction, but they're punching real hard. They're punching real hard. Okay, we're going to go to the keynote now live for Larry Ellison. If you shall stick with us. This is theCUBE pre-game coverage, as we call it. Pre-commentary of the keynotes. Thanks for watching. And again, go to silkenangle.com. You can also go to silkenangle.tv. Go to wikibon.com, crowdchat.net, slash O-O-W-15. That's our engagement container. And go to crowdpages.co, slash O-O-W-15. That's our new social media, social cloud page. All of our conference going on that page. And we'll be right back with more from Howard Street now. Back to the keynote. This is theCUBE.


hello everybody of course you know me I'm Elizabeth Jones and I needed to get on here and admit that I was wrong and sometimes that's a really hard thing to do especially when you've done something that has went so far the one of the super the supervisor at the neon water company came to my house and I had to admit he was very very kind and it was a very awkward initial meeting but he opened up the meter outside my house and he took a little white styrofoam cup and he sprayed the water that is in the neon lines into that cup that water was crystal clear it was as clear as any water that you buy at the store that he said is what the city water looks like for some reason the water that goes from that meter into my house doesn't and it never looks like that so there's a problem in but there wasn't a leak they looked on the meter and they couldn't find there was no leak either so it's not like they were that there's a leak from that meter to my house so but but what it means is that there's a problem in my house and it got me to thinking about how many of our houses are old and how many people are like me and are single women and don't have husbands we don't have sons you know that know how to do all this stuff and you know any more if you hire somebody they just taste your house out and come back and rob you so how many of us are accusing the neon city water department and it's not really the city water it's something that's going on inside of inside of our house and I know this is strange you don't usually see people get on here and admit to doing something but I posted those pictures of my bathtub and I'm of course that that happened that's the kind of water that I've lived with for a very long time but my point is it's not the neon city water department spot and standing out there talking to him for as long as what I did I was humbled I was humbled a great deal and because I felt like I had caused because of my picture I had caused a great deal of heartache and trouble for that water department and if I would have just called him and let them come out to my house and check all this stuff this wouldn't have happened and I think that that's a lesson that the Lord has shown me is how many of us and hopefully by by me being willing to eat this crow and put this egg on my face by me willing be being willing to video this and share it hopefully we can we can all learn a lesson from this and one thing that he talked to me about was how he just how much he has actually done for this water department and I told him I told him that because of such negative history because there wasn't such great ethical work before that reputation has followed the water company and even though he has made great strides and these workers have done a really good job even though they have people like me allowed our bias and our prejudice against the old way of doing things we've allowed that to to take front stage and that was wrong of me and so the Lord really the Lord really showed me a lot from that meeting just now and because that I had actually spoken to my neighbor not too long ago and I and I said something about the water and and she said she drank it all the time and I said what you would drink that water and she said why yeah hers was crystal clear her water her waters been clear it's a problem in my house that's not and so anyway it made me think about how we need a more community we need a better we need better communication poor communication caused every bit of this situation poor communication and jump into conclusions and not you know not doing my due diligence in calling them and so you know this has just really been a great lesson I've learned many lessons from this and but I wanted to share that and share this with you all because you know that's one thing that that I'm trying to do I'm trying to establish these community programs that will help the people and if we have a whole lot of people like me who are having trouble out of their water you know if we're having a whole lot of people who whether it's in their hot water heater or whether it's in the the I don't know a leak in the ground or whether it's the filter regardless of what it is we need to find out what it is and maybe if we can work all work together instead of working against one another we can get more done and it would be more for God's glory he took what the devil meant for evil in this situation and he turned it around and he made it good he made good come out of it and even if it was showing me personally where I was wrong and he showed me also where I need to do better and that means you know when I have a problem I need to go to the source of the problem not just you know blab about it and so I'm hoping that this helps in some way shape or form God bless


What is open-source technology and why is it an important aspect of the tech ecosystem today? Okay, so definition. Open-source software is code that can be used, copied or modified by anybody. So this is part of an open culture. So the idea that says that anything you produce can be better if more people are able to collaborate on it. And open culture covers a whole range of things, including software as an open source, but also data hardware, and there are some other areas I've completely forgotten what they are. But it doesn't have to be a small thing. Open-source software, we have Linux, Android, Python, Ruby, Apache, they're all open-source. But at the heart of every single open project is this idea of community, idea of groups of people who care about your code and to help to make it better. So open-source doesn't mean free, doesn't mean everybody can do what they want with it. There are some limits to it. For instance, you can't sell open-source code. And if you distribute open-source code from somebody else that you've modified, you have to distribute it using exactly the same licenses as original code. So that's a rough idea of what open-source is. But this today is about disaster projects, so if you're looking for open-source disaster projects, the good place to start on that is HFOS, Humanitarian Free and Open-source Software.


This lecture is part of an online course on mathematical group theory and will mostly be about Lagrange's theorem. What I'm going to do over the next few lectures is to go over small finite groups in order, introducing various mathematical theorems whenever we need them to classify the groups. You can find a list of such groups in this book by Coxter and Moser Generators and Relations for Discrete Groups. So if you go to table 1.12, let me just magnify it a bit so you can actually see what it says, here's a table of non-Abelian groups of order less than 32. So what we're going to be doing is just going through this table and explaining everything in it. So let's start with groups of order 1. Order 1 is kind of completely trivial to classify. Let me magnify down again. We just get the trivial group with just one element. Order 2 is also not very exciting. The group has two elements, one of which is the identity and one of which isn't, from which it's easy to reduce that the only possibility is a cyclic group of order 2. Order 3, you can give an elementary argument to show that anything is z over 3z, but the argument is starting to get a little bit tiresome. So what we're going to do is to use a theorem called Lagrange's theorem which says that the order of a subgroup h of a group g divides the order of g. The order of a group is its number of elements and is normally denoted by putting a couple of vertical lines on it. So we just say that the order of h divides the order of g. And how does this help with classifying the elements of order 3? Well, a consequence of Lagrange's theorem or a corollary says that the order of an element of g divides the order of big g. Well, what's the order of an element? The order of an element g is the smallest n greater than or equal to 0 such that g to the n is equal to 1. So the order of the identity element is 1 and so on. And the point is if you've got an element of order n, then the elements 1, 2, opt to g, sorry g squared, opt to g to the n minus 1 form a subgroup h of g of order n. So the order of the subgroup generated by g is the same as the order of the element g. And so it must divide g by Lagrange's theorem. Well, how does this help classify the elements of order 3? Well, it can do better than that. We can classify all elements of all groups of order p for p prime. It's quite common to use p as a prime. And the point is the order of an element, so suppose g has ordered p, the order of an element g and g divides p, so is 1 or p. And if it's 1, if and only if g is the identity element, so the group must have elements of order p. So if it has an element of g of order p, then we can just write the group g is equal to all powers of little g. So is cyclic. So we say group is cyclic if it is generated by one element, meaning that it just consists of powers of this element. Now there's an obvious isomorphism of g with z over pz because you met nought to 1, 1 to g, 2 to g squared and so on. So g is isomorphic to the integers modulo p. So we've done the classification of all groups of prime order. In general, the difficulty of classifying groups of some order doesn't depend on the size of the order, but it depends more on the number of prime factors dividing the order. So we see if there's only one prime factor dividing the order, more precisely if the order is just one prime, then it's easy to classify all those groups. Okay, well now we've got to prove Lagrange's theorem. So to motivate this, suppose g acts on set s, then we pick some element s in the set s and look at h, which is the set of elements g with g of s equal s. So it's the elements of the group g that fix the element s. And these obviously form a subgroup. So you can very easily check the product of two elements fixing s fixes s and the inverse of anything fixing s also fixes s. So if we've got any element, any group acting on a set s, we can generate lots of subgroups of g just by looking at elements of the set s and looking at the fixed points. For example, suppose we take an icosahedron and look at the group of its symmetries, we can find a subgroup fixing this vertex and this subgroup will have order five. So if we fix this vertex, then there are five different ways of doing that. So you can see there are quite a few subgroups who order five corresponding to different vertices. Notice that sometimes vertices correspond to the same subgroup of order five. So for instance, these two opposite vertices are the same subgroup, which just consists of the five rotations. Similarly, we get a subgroup of order three by fixing a triangle and looking at the elements which just map this triangle to itself. And you can see there are three of those. And we could fix an edge and that would give us a subgroup of order two because we can, there's a subgroup of order two fixing each edge. When I say fixing the edge, I mean it maps the edge to itself. It might map points of the edge to other points of the edge. Anyway, so this is one way to think about subgroups. They just consist of, they just correspond to points of a set acted on by G. We want to ask converse. Suppose H is a subgroup of G. Can we find a set S and a point S, little s in S, so that H is the fixed subgroup of little s. In other words, the things fixing S. And the answer to this is yes. And we're going to do it by using things called cosets of H. So let's first of all think about what a group actually on a set looks like. So let's pick a set to be say a triangle. And we're just going to group S3 of the six symmetries of a triangle. And if you look at the points of a triangle, you can see you can divide them into various subsets. For instance, if I take this blue point, you can map it to these other blue points under the group G. If I take a red point here, then I can map it into six other red points by acting on the triangle with G. If I take the point in the middle of the triangle, then that's only mapped to itself. And I could also take a point here and that would give me three different points. And each of these things is called an orbit. So these three blue points are called an orbit of G on S, on the set S, where the set S is now going to be all points in this triangle. And you can see that any set acted on by G splits up into orbits. That's not very difficult to see. You just say two points are equivalent if there's an element of G mapping one to the other. And you can easily see that this is actually the equivalence relation using the group axioms. And so the set splits up into equivalence classes, which are the orbits. And set S acted on by the action of G on S is called transitive if there is only one orbit. So the action of G on these three blue points is a transitive action on the blue points. And the action of G on the six red points is a transitive action on the six red points. Since you can split up any action of a group on into orbits in which this transitive, you may as well for most purposes just consider actions of G on transitive sets. So suppose G acts transitively on S. And let H be the fixed group of the group fixing a little point S. And what we want to do is how can we reconstruct S from just from H and G? So I suppose we're given a group G in the subgroup H fixing a point and we somehow forgot what S is. Can we reconstruct S just from H? And that's quite easy because any element S in S is, sorry, we pick some point S such that H is the things fixing it. And now any other point T is of the form G times S for some G. But different values of G might give the same point T. So suppose T is equal to G1S and T is equal to G2S. Well, that means G2, G1, G2 to the minus G1S equals S. So G2 to the minus one G1 is in H. So G1 is in G2H where this means all elements that are the products of G2 by something at H. This is called a left coset of H. It's where you take all elements of H and multiply by them the same element of G. And you can see this is the same as saying that G1H is equal to G2H. So this means you can actually identify the elements S with left cosets of H. These correspond to left cosets of H and the correspondence is given as follows. If we've got an element T of S, this corresponds to the left coset of all elements G. So we take the set of all G such that G of S equals T. And as we've more or less seen above, this set is a left coset. On the other hand, if we've got a left coset of the form GH, we can map this to the element G of S. And this doesn't depend on which element of this coset we take. If we take a different element of the coset and apply it to S, then we get the same element of S. So this gives the geometric interpretation of cosets. The left cosets can be thought of as just the elements of a set acted on by G. By the way, we're talking about left cosets, which suggests what is a right coset. Well, a right coset is much the same except you multiply all elements of H on the right by G. What do they correspond to? Well, left cosets you get when G is acting on the left on a set. And right cosets you get when G is acting on the right on a set. And this is incredibly confusing when you start talking about left actions of a G on a set and right actions of G on a set. So we just stick with left actions and left cosets and forget about right actions and right cosets. So this suggests how to reconstruct S from G. So given H and G, reconstruct a set S acted on by G as S is equal to set of left cosets of H. And what we want to do is to just check that this gives us a nice set on which G acts. And this is not very difficult. And we just have to do a lot of rather small checks. First of all, any two cosets G1H, G2H are the same or disjoint. And that's easy to check. If they're not disjoint, they've got an element in common. So suppose they've got the same element in common, that means that G1H1 is equal to G2H2 for some G1 and G2. This is assuming G1 of H equals G2 of H. Well, that means that G1 is equal to G2 times H3, where H3 is H2 times the inverse of H. And this means that G1 of H is just equal to G2H3 of H. And H3 of H is just H. So this is equal to G2 of H. So if two cosets have a single element in common, then they're actually the same. So G is a disjoint union of the cosets GH. And now G acts on the cosets by saying G of G1H is just the cosets G1 of H. So this is just a left coset of H by the element G1. And you can check this as a group action and checking it's a group action is kind of trivial and not very interesting to watch, so I won't bother doing it. You've just got to check the rules for a group action, which is one line calculation. So we've shown that if we've got an action of G on a set, then we get subgroups from it. And conversely, we've shown that if we got any subgroup of a group, then it comes from the action of that group on a set of cosets. So how do we use this for Lagrange's theorem? Well, we also notice that any two cosets have the same size. So all we have to do is to show that a coset GH has the same size as H, which is the coset 1H, because then any two cosets were the same size as this. And that's very easy because if we've got a set GH and a set H, we can map any element T of this to G to the minus 1T, which will be an H. And conversely, if we've got an element H here, we can just map it to G of H. And you can check that these are inverse maps from this coset to H. Notice that this uses inverses of the group. If we had omitted the existence of inverses in the axioms for a group, we'd get something called a semi-group, a typical example of a semi-group might be the positive integers. And for semi-groups, you can still define cosets, but they don't necessarily have the same size. Well, now we get Lagrange's theorem. G is a disjoint union of the cosets of H. Secondly, all cosets are the same size. And from these two facts, this implies the order of G, which you remember we write like that, is equal to the order of H times the number of cosets. So the order of H divides the order of G. You sometimes denote that a number divides another number by putting a vertical line, but that's not terribly good notation because then we would write H divides the order of G, which would be horribly ambiguous. So let's not do that. So if that gives the proof of Lagrange's theorem, it has a very useful corollary. You remember that the order of G is the order of H times the number of cosets. And this is a very useful way for calculating the order of G. For instance, we can do this for an icosahedron. In fact, we did it for an icosahedron earlier, but I'll just remind you again. Suppose we want the order of an icosahedron. We fix the group of symmetries of an icosahedron. We fix a point. We might fix a vertex, say. And we consider the subgroup H fixing that vertex. Well, that's going to have order five. So the order of G is the order of that subgroup, which is five times the number of cosets. And the number of cosets is just the number of other vertices because you remember cosets correspond to things acted on by G. So the order of symmetries of the icosahedron is five, the number of rotations fixing a point, times the number of vertices, which is 60. Alternatively, we could use the group, the subgroup fixing a triangle, meaning mapping the triangle itself. And this is order three. And there are 20 cosets corresponding to the 20 triangles of the icosahedron. So we get the order is three times 20, which is 60. And we can do the same thing with edges, where the subgroup fixing an edge has ordered two and there are 30 edges. So the order of the group is two times 30, which is 60. So in general, if you've got an unknown group and you want to know its order, you try and find the subgroup whose order you know and count the number of cosets by trying to identify the cosets of H with some geometric thing acted on by G. There are two applications of Lagrange's theorem that I will mention to finish off this lecture. The first is Fermat's theorem, not to be confused with Fermat's last theorem. This is the theorem that says that x to the p is congruent to x mod p, meaning x to the p minus x is divisible by p, where the p is, of course, prime. And how do we get this from Lagrange's theorem? Well, Lagrange's theorem says that the order implies that the order of an element G of a group G divides the order of G. And the reason is that the order of G is the order of a subgroup, and the order of a subgroup divides the order of G. So this implies that little G to the order of G is equal to 1 because this is a multiple of the order of G and G to the power of the order of G is 1. And we will now show this implies Fermat's theorem. What we do is we take the group G to be Z over PZ star. This means the non-zero elements of Z modulo PZ. And by number theory, if something is not the zero element of this set, then it has an inverse, because if it's non-zero, it's co-prime to P. So if the element a in here is non-zero, it's co-prime to P. So we can solve ax plus bp equals 1 using Euler's theorem. And this means that x is the inverse of a modulo P. So we've got a group of order P minus 1. So if x is not zero in Z modulo PZ, then x to the P minus 1 is common to 1 mod P by this theorem here. We're just taking x to the power of the order of the group. And now that applies to all non-zero elements x. And if you multiply both sides by x, you're now getting an equation that's also true for x equals zero. So this holds for all x. So for example, 2 to the 10 minus 2 is divisible by 11. And you can write down all sorts of congruences like that that aren't immediately obvious. There's an extension of this due to Euler. So Fermat's theorem applies to primes. Euler's theorem says that if x is co-prime to some number m greater than zero, then x to the phi of m is common to 1 mod m. Well, what's phi of m? Well, I'll explain in a moment. What we do here is we look at the group Z over mz star. This is all integers mod m that are co-prime to m. And this forms a group by exactly the same argument we had for when m was a prime. That if something is co-prime to m, then we can find an inverse. So if this group is called g, then it means x to the g is common to 1 mod m if x is in g. In other words, if x is co-prime to m. Well, what is the order of g? Well, the order of g is equal to phi of m because phi of m is defined to be the order of g. So this is Euler's phi function. So let's just see an example of this. Let's take m equals 12. Then z over 12z star has four elements, 1, 5, 7, and 11 because these are the four numbers modulo 12 that are co-prime to 12. So phi of 12 is equal to 4. So this says 1 to the 4 is common to 1 mod 12 and 5 to the 4 is common to 1 and 7 to the 4 is common to 1 and 11 to the 4 is common to 1. Actually, this is a pretty bad result because, in fact, 5 squared is common to 1, 7 squared is common to 1, and 11 squared is common to 1. So Euler's theorem is a bit sloppy because it just says that any element to the power of 4 is 1 mod 12 but, in fact, any element squared is 1 mod 12. And, in fact, Euler's theorem for most non-prime moduli is not the best possible. Okay, next lecture we will move on to groups of order 4 and discuss things like products of groups.


I'm not going to get it. Just connect it to the first one. If it's not for the legs. Okay. Block it on! You're not going to make it. I don't want to. I don't want to. I don't want to. You're not going to go. One-way, one-way. One-way, one-way. You got this. Good. One-way. Slip, slip, slip. One-way, one-way. One-way, one-way. Middle turn.