Yes, okay, great, thank you. So I heard people in the audience complaining on WeChat about the mic being too quiet, so I'm gonna try to keep it closer to my mouth this time around. We'll see if it works. Great, so this is one of the sort of standard presentations I give when people want just like a quick overview of the entire Ethereum protocol. So chances are you'll listen through this, you'll catch some things, you won't catch other things, but at the very least you'll kind of understand what the broad structure is and if there's any particular piece that you don't fully understand, we have quite a few materials online that tell you about the rest. So we have our GitHub wiki, the website. If you are a developer, you can even read things like the yellow paper and the Ethereum source code. If you want to get like that deep an understanding as of sort of how the Ethereum protocol works, I highly recommend doing those things. If you have specific questions, I also highly recommend even going into some of our public channels. So if you go to like Gitter.im, G-I-T-T-E-R.im slash Ethereum, for example, you can actually like literally just talk to our developers and they're like right there and you can ask questions. We're generally a fairly friendly community, I hope. So anyway, Ethereum in 25 minutes. So first of all, how did the project start? So project started back in 2013. At the time, people were very interested in blockchains. People were looking at Bitcoin, people were excited about Bitcoin, but people were also realizing that blockchains are useful for things other than just money. So back in 2011, there was a project called Namecoin, which was trying to make a blockchain-based domain name system. In 2013, there were projects called Covered Coins, which were trying to like digitize arbitrary digital assets or arbitrary assets and put them on the blockchain. There were protocols called Mastercoin that were trying to integrate all sorts of fairly complex features. So there was a consensus that you can do lots of different really cool things with Bitcoin or with other blockchains, asset issuance, crowdfunding, title registration, lots and lots of stuff. Problem is most blockchain protocols were designed like this. Pocket Calculator, single-purpose device works reasonably well for all you care about adding and multiplying numbers, but it does nothing else. Ensure someone with an advanced computer science degree with a good calculator can kind of hack it to play a video game inside of it, but do you really want to do that? So after this, in 2013, there were people who were making protocols that looked like this. So Swiss Army Knife. Basically, you come up with a list of 10 or 20 features he wants to have, make a little tiny thing for each one of them, stick them together into a knife, and there you go, that's your product. Or in this case, that's your blockchain. So back at the end of 2013, there were lots of projects that looked like this. They just said, okay, we want blockchains to be usable for asset issuance, crowdfunding, bets, prediction markets, identity registration, title registration, pick a list of 20 different things, have a list of 20 different transaction types, and have a little piece of the protocol that supports each one. So this is all well and good. Problem is, what if you come up with your list of 20 applications, publish a protocol, then the next day some guy says, oh look, I discovered a 21st blockchain application. How am I gonna fit it in? And in 2013, this is exactly what started to happen. So this is the Ethereum way. So why do we love smartphones so much? Basically because a smartphone is nice and generic. You buy it once, and it immediately comes with 50 or 100 applications. If someone comes up with a new application, they write the code, they upload it to the Google Play Store. And if you want it to be accessible in China, you can upload it to the Huawei Store as well. And then if anyone wants to use your application, they don't need to buy a new phone, they don't need to buy a new hardware dongle, you just download the app and they can start immediately running it. Very simple. And the cost of actually developing an application, all you have to do is write code.  Just write a piece of code, upload it, and let people download it, and you're done. So this is the kind of abstraction and simplicity that I wanted to bring to the blockchain world with Ethereum. So Ethereum is a blockchain. I'm sure if people here are familiar with blocks, I'm sure people here are familiar with transactions. And these are all one good, but Bitcoin has them too. Namecoin has them too, Litecoin has them too, Dogecoin has them. I'm not sure if Paycoin has blocks though. I don't know, Paycoin might even roll out a server, I haven't even checked. Proof of server, the best kind of POS. But we have a few tiny additions. So the main thing that makes Ethereum tick is this built-in programming language. So basic concept is if you have some new kind of application, what you would do is you would write the rules of your application in a piece of code, take this piece of code, you would call this a contract, upload it to the blockchain, and so now you have a special type of account and this type of account sits on the blockchain and anyone can send a transaction to this account in order to interact with this account. So two types of account.  And the other type of account is a contract which is controlled by a piece of code. If you send one unit of Ether to an account that is controlled by code, then no person controls it anymore. The only thing that can actually move that Ether is the execution of that contract's code itself. So it basically is an automaton sitting on the blockchain that's executing exactly as the code on the blockchain says it's going to execute. So this is all well and good. Let's try an example. So the hello world of Ethereum is sort of basic, a minimal sort of DNS system. So the idea here is you wanna store a mapping of basically domains. So you have something like, I don't know, Vitalik.Eath, George.Eath, Ethereum.Eath. Ask me about my cool Ethereum hacking services.Eath. So you have a bunch of domains that people might wanna register and for each one you wanna store the IP address that it points to and you wanna store who owns that domain at that particular time. So we have two functions. One of them is for registering a domain and the logic is pretty obvious. If the domain has not yet been registered then you set the owner to yourself and another function that says set the IP address. If you own the domain then you can set the IP address. And this is basically the minimal thing that's like all you need in order to have like a maximally simple domain name system. Now as I understand, Nick Johnson is gonna be presenting about a kind of much more complete and better one at some point over the next three days but this is sort of the kernel, this is what you start with. So you have this piece of code then what you would do is you would compile it, you would get some byte code then include the code in a transaction, push the transaction up onto the blockchain. Now what you have created is a contract and a contract has an address.  If you want to register a domain what you would do is you would send a transaction and you would specify this transaction is going to be talking to this contract. Now what can the transaction do? Well it can do, it can try to register or it can try to set the IP address. So let's say you want to register a domain. What you would do is you in the transaction you would encode some information that says I want to call the register function and I want to call the register function with like some particular piece of data like I don't know, George.Ether whatever. Take this transaction, include this data, publish the transaction, when the transaction gets included the code runs and you notice it says self.domains address.owner equals MSG.Center. So what that line of code basically does is it says whoever, whatever address sent that transaction record that address in the contract storage as the owner of that particular domain. So you notice at the top of the contract here it says like data domain so it basically stores some mapping going from a domain to the owner and the IP address of each domain. So the code and the storage like both of these things are what we call sort of part of the Ethereum state. So what we mean by the state is sort of current information associated with the Ethereum protocol. So stuff that you have to care about right now. This includes account balances, how much Ether you have, nonces. It includes contract code and it includes contract storage. So for example, right now this piece of code is nowhere in the state. If I send a transaction, publish a transaction which creates the contract, the contract's code is now in the state. Now if I send another transaction which then talks to this contract and registers a domain, then the process of executing that transaction is going to change the state. And the new state is going to contain some storage keys that basically say this particular domain has some particular owner and some particular IP address. So that's kind of what the state means. So it's stuff that you have to kind of care about now. So in Bitcoin, for example, the state is pretty simple. It's just like how much money everyone has at some particular point in time. The second thing is history. So history is things that happened. So transactions are part of the history. Receipts are part of the history. Don't have time to go into them but feel free to research them more. So this is kind of important because a lot of people ask things like, who stores the transactions or if a contract executes and who executes the contract so where are the results stored? And the answer at this point basically is that if you are a full node, then as a full node, what you do is, number one, you download all the blocks, you download all the transactions. When you receive a block, what you would do is you would see what the state was before the block, then you would execute all the transactions in turn and you would update your own state. So all full nodes basically execute all transactions, they would execute all contracts and full nodes, some of them store the history, some of them don't store the history. So there are clients that are increasingly coming out that let you sort of not store large portions of the history and this is good because it saves you hard drive space. So the state in Ethereum consists of basically a key value mapping. So basically the state in Ethereum is like a bunch of account objects and account objects, once again, two types of accounts, one of them is just an account controlled by a person or some external user controlled by a fridge, controlled by a dog. The other kind of account is a piece of account controlled by code. So these accounts have four pieces of data. One of them is the nonce and that's basically just a kind of highly technical thing that's used to prevent the transaction replay attacks. Second thing is a balance, so how much ether the account has. Third thing is the code. And the fourth thing is storage tree root which basically points to kind of the storage of that particular contract. So every contract has its own kind of sub database that it can kind of read and write to as it wishes. Now contracts cannot write to other contract storage databases. So a contract storage kind of is its own property. The contract only the contract can actually like read and write to storage that belongs to itself. So also important. So code execution, every transaction specifies a two address. Now if the two address is just some regular account that doesn't have code, then all you're doing is moving ether around. If the two address actually has code, then the code runs and the code can do things. So the code can send ether from that contracts to other contracts. The code can read the contract storage. The code can write to the contract storage and contracts can even talk to other contracts. So once again, every full node processes every transaction. Every full node stores the entire state. And this is actually fairly similar to how Bitcoin works. It's bold because it's important. As Vlad likes to say in the previous DevCon. So, gas. This is another one of those sort of important misconception points. So basically one of the problems with a kind of extremely free entering complete scripting engine is the halting problem. And the halting problem basically says given a particular program, if you start running it, there is absolutely no sort of guaranteed way to tell in advance whether or not the program is ever even going to stop. So you might have like program A, which just like does a few things and then stops. Program B, which is an infinite loop. Program C, which is like some kind of highly disguised infinite loop. And you can basically come up with programs where there is no sort of automated mechanism that can tell which programs are infinite loops and which of them are just gonna halt after like a billion steps. So what we do in Ethereum is we have this concept of gas. And the idea basically is that when code executes, we count the number of computational steps that the code takes. And every transaction assigns itself a budget. So what transactions might say, this transaction is allowed to consume a maximum of one million gas. So what does that mean? So let's say that this transaction goes to some contract, the code starts running, and one of two things can happen. One of them is before the million steps run out, execution stops. In that case, everything is fine. Second case is it gets to a million computational steps, then you get what's called an out of gas error. Oh look, this transaction budgeted a million steps, but it already took up a million steps and it looks like it's gonna execute some more. It might even run forever, I have no idea. So what I'm gonna do instead is we're just gonna halt execution right there and just revert the whole thing and the transaction's essentially failed. Now, for some technical reasons, even if your transaction kind of fails for this reason, you still have to pay the transaction fee for it. But the point of this mechanism is basically that no matter what kind of weird code you have in the transaction, it's guaranteed that nodes will be able to process it deterministically within some fixed amount of time. Now, there are other blockchain projects that try to solve the problem with timeouts. So they say try executing the code for one second and if after one second it's still running, then you halt. The problem with this approach is that it's not deterministic. So like one computer might take 0.9992 seconds to run a particular piece of code. Another computer might take 1.008 seconds to run a piece of code. And then the two disagree with each other and then your blockchain has a fork. Gas, completely deterministic, resource management, a computational resource control. So another important thing is that for every transaction you have to pay a transaction fee for each unit of gas that you consume. So heavier computations cost more. But one important point is that these two things are separate. So there is like the notion of gas. And the notion of gas is basically just a deterministic method of metering computational resources. And then separately from that there is protocol economics. And the rules of protocol economics say that if you want your transaction to be included you have to pay for it. And so if you want to send a transaction to the Ethereum public chain you have to pay for each unit of gas. If you are doing some kind of like Ethereum based private network you do not need to have ether. So just one important thing that lots of people get wrong that would be kind of good for people to remember. So gas limit. So the equivalent of the block size limit in Bitcoin is kind of the gas limit in Ethereum. 4.7 million gas per block. Now gas isn't just about counter computational steps. You also get charged gas for writing to the state, reading from the state, bytes in your transaction, bytes that you add into receipts, bloom filter topics. So you get charged gas for kind of almost every resource that you can consume inside of Ethereum. And out of all of those things together there's this limit that you can't consume more than 4.7 million. So the gas limit actually does kind of adjust automatically and miners can vote on it. So if Ethereum blocks start getting full then basically miners are going to be able to kind of just vote the gas limit up and like no one needs to download any new software. Transactions, seven parameters, nonce. So basically prevents replay attacks. So for example if I send you 10 units of ether then what stops you from taking my transaction and just including it in a block 10 times to try and drain 10 ether from my account over and over again? The answer is every transaction has to include a unique number. And once a transaction with a particular nonce is processed the nonce in the state goes up and if it tries to verify the second transaction well the nonce mismatches now and so the second time around you can't include it anymore. Gas price, so the amount of ether you pay for every gas. Start gas is like the amount of gas that you budget yourself. Destination address, the amount of ether that you send. Data, so if you're just sending ether you don't need to care about data. If you're talking to a contract then data is readable by contract code. So data is how you specify what function of a contract you're calling, what parameters you're calling it with, anything sort of more complex with that. And VRS, elliptic curve digital signatures. Feel free to research them yourself. I think elliptic curve math is cool. Receipts, not gonna bother with those. So Ethereum virtual machine, we have a stack, we have a concept of memory, storage, environment variables. So contracts have access to things like the timestamp and this is great because you can have contracts that say if the time is greater than, you know, something like January 1st, 2018 then do something. And there's lots of wonderful use cases for this. Logs, calling contracts, calling other contracts.  You're gonna be writing in higher level languages. So Solidity is the most well supported one right now. You can also write code in Serpent. There's also something called LLL. So there are kind of other languages that you can write your code in. And then the idea is you would write your code in these languages and it can plow us down to Ethereum code. So the code that you write is like nice and readable. The code that is Ethereum code is like extremely compact, fast to execute, blockchain friendly. So ABI. So this is basically that if, you know, I actually want to call some contracts and if I want to register a domain name, then how am I gonna do that? Well, over in the Serpent example, you might notice that I might want to do something like call the setIP function with some particular address and with some particular IP address. So the way that you actually do a call is by sending a transaction. The way that you specify what you're calling is in transaction data and there exists this nice standardized algorithm called the ABI by which you can encode the data. So the first four bytes represent the function ID, then 32 bytes for the first argument, then 32 bytes for the second argument. If you have variable sized arguments, it gets more complex but feel free to research this. So we have a new mining algorithm and this mining algorithm strives to be kind of memory hard and GPU friendly. So the goal is to sort of prevent ASICs or prevent specialized hardware from like being the dominant force in mining because that would make mining too centralized but at the same time, CPU mining has other issues. So we have this sort of GPU mining that's a nice middle ground. It's a fairly pretty algorithm once again. It's called eth hash. So fast block times, mergle trees. So this is also a kind of very important key some of the Ethereum protocol. So the reason why I have this picture here is because about a year ago, there was this cover in the New York Times that basically you have life masters that's saying it's all about the blockchain. And personally, I think it's not just about the blockchain, it's about the mergle tree and I think mergle trees are like awesome and really important. So we should have Ralph Merkle saying it's all about the mergle tree and you should have some doges because doges are cool. I hope it's not a violation of security as well to say that Dogecoin is awesome and if you wanna buy it, you can. Cool. So, mergle trees, the point basically is, so this is how the Ethereum light client works. So the problem is, okay, if you have the entire database, if you have the entire state, if you have all the transactions, then you can know, let's say, what your account balance is, what some particular contract's code is, what some particular contract storage is, what some particular lock says.  What if you're on a phone? What if you're on an IoT device and you don't have a phone? IoT device and you don't have enough resources to process the entire blockchain. So the blockchain itself right now, the blockchain is three bytes, the sort of state size of something around between like five and 20 bytes, depending on which client options you use. So it gets pretty big for a phone. So if let's say you have a tiny device that has like 50 megabytes in very low processing power, then what do you do? So this wonderful fellow came up with this algorithm where basically what you do is you store this kind of really clever hash tree where you store the pieces of data at the bottom, then you like have hashes of those and you have hashes of hashes and hashes of hashes. And the end result is, if let's say, all that I care about is getting key for, let's say some like this particular key of this particular account 175, then you don't actually have to download the entire blockchain yourself. Instead, all you do is you download what we call kind of this Burkle branch. You verify that the hashes inside of the branch are consistent. And as long as you have the block headers, you just kind of verify the Burkle branch against the block headers. And what you're doing is you're essentially allowing the miners to kind of help you verify that this particular piece of the state actually is what the node says it is. So if a node gives you a sort of Merkle proof that says this particular key and this particular account is 45, if you can verify the proof of work and you can verify the hashes, then basically you can verify that unless like all the miners are at that particular time to inspiring to screw you over, this actually is what the state of the blockchain is in this particular place at that time. So the light client, there was like a test of an alpha version that was released a couple of weeks ago. I've tried it, it works great. So block headers contains three trees. So Bitcoin uses Merkle trees just for transactions. We use Merkle trees for transactions for the state. So this includes account balances, contract code contract storage, receipts. So we have Patricia trees which allow you to kind of update the tree very efficiently. And so those are kind of the basic building blocks of the Ethereum protocol right now. There's also a very fun stuff that we're working on in the future.  So basically with privacy, you don't have to actually build things into the base protocol. Because the Ethereum protocol was during complete, you can basically like implement any kind of advanced cryptography on top of it. Now for like VM efficiency reasons, there are still sort of protocol tweaks that we have to make, but even still, it's something where like the vast majority of the work actually does sort of happen on the higher levels. Virtual machine upgrades, sort of more flexible use of storage and scalability and these things are great. And just to set a good example, I'm going to stop now because the clock tells me to stop now. So thank you.


I think so, you know, maybe just part of that feeling out period, you know, I try to avoid that, try to get in the groove as quick as I can, but sometimes that does happen, yeah. You've gotten some tough situations. What is it about your makeup that allows you to kind of appear unfazed regardless of the situation? I try to rely on experience and try to stay positive out there, at least in my head and, you know, tell myself I'm a pitch away at times and, you know, one pitch at a time type of thing. That stuff has helped, yeah. A level of frustration with that pass ball in the third inning?  I know we're out there competing and, you know, stuff like that happens. So you move on from it, try to best you can and keep going competing. Luckily, we're able to minimize the damage in that inning and that would end up being huge for us. What do you think of the ball? Pretty cool on you. I flinched a little bit. Yeah. Thank you, my knee. I feel like watching the bats able to break through against their bullpen. That was great. You know, Walk had a huge hit and we had a couple big at bats to get on base before that. You know, Gary had a real nice AB2 to get on and, you know, Walk worked the count and got a pitch he could handle and took care of it. So that's, that was huge. That's a big hit for us. We needed it. Your face judge before, did he kind of look like the same guy from you're watching today? Yeah. He looked good.  So, you know, it's impressive for just getting back. It's getting out. And then we got a couple chances to get to and we made it happen. So that's what matters. One of the reasons they went out and got you was your success that you've had against Washington. How satisfying is it to have this kind of a performance against that team and what they've been able to do this year? Yeah. I mean, I try not to get caught up in opponents, but it feels good just in general. I mean, I know, obviously we got a couple big series with them before the season's over and every game is important for us, probably more so than them at this point, but, you know, it was good to get that one tonight. How much did it change your pregame routine that the game got pushed back to seven o'clock today? Not too much. You know, I got a call. I was still at home. So that was nice and got to kind of relax, treat it as a night game and kind of just go from there. So it wasn't a big deal.


Hello everyone and welcome to the CircuitPython Weekly for November 22nd, 2021, yes, that is accurate. This is the time of the week where we get together to talk about all things CircuitPython. I'm Katny and I'm sponsored by Adafruit to work on CircuitPython. CircuitPython is a version of Python designed to run on tiny computers called microcontrollers. CircuitPython development is primarily sponsored by Adafruit, so if you want to support them and CircuitPython, consider purchasing hardware from Adafruit.com. This meeting is hosted on the Adafruit Discord server. You can join there anytime by going to adafru.it-discord. We hold the meeting in the CircuitPython dev text channel and the CircuitPython voice channel. This meeting typically happens on Mondays at 2pm Eastern, 11am Pacific, except when it coincides with a US holiday. If the meeting time has changed, we'll notify you via Discord. If you wish to be notified about changes to the meeting, we can add you to the CircuitPython East as Discord role. There is also a calendar available that we try to keep updated if you'd like to subscribe to that. This meeting is recorded. We record audio from the voice channel and video of the text channel. If you'd rather not have your voice recorded, you're still welcome to participate. A video of this meeting will be posted to YouTube and the audio is released as a podcast. If you find this podcast is not available on your favorite podcast service, please let us know. There is a notes doc to accompany the meeting and recording. If you wish to participate but you can't make it to the meeting, you can leave hug reports and status updates for us in the document, and we'll read them off during the meeting. The notes document also contains timestamps to go along with the video, so you can use the doc to view only the parts of the video that interest you most. This meeting tends to run around 60-90 minutes, though lately it's been about an hour, and this gives you the option to skip around. A link to the notes document is posted to the CircuitPython.gov channel in the Adafruit Discord every week. Check the pin messages to find the latest notes doc. This meeting is held in five parts. The first part is community news, which is a look at all things CircuitPython and Python on hardware in the community. It's a preview of our Python for Microcontrollers newsletter. The second part is the state of CircuitPython libraries and Blinka. This is a statistical overview of the entire project, which is a chance to look at the project by the numbers separate from what we're all up to. The third part is hug reports. Hug reports is an opportunity to highlight the good things folks are doing and taking the time to recognize the awesome folks in our community. The fourth part is status updates. Status updates is an opportunity to sync up on what we've been up to. Take a couple minutes to talk about what you've been doing in the last week since the last meeting and what you'll be up to over the next week until the next meeting. And the fifth part is in the weeds. In the weeds is an opportunity for more long-form discussions. These discussions sometimes come out of status updates, but can be something you've identified ahead of time is too long for status updates. And that is how the meeting will go. And with that, I will get started with community news. First up, MicroPython adds official SAMD 21 and SAMD 51 microcontroller support. They've added mainline support from the microchip, SAMD 21 and SAMD 51 microcontrollers. The rebel can now be used via USB VSP or U.S. ART. Using board-specified U.S. ART pins initialized on startup. Flash usage is flexible. The internal flash block device, SAMD dot flash, is initialized within little FS1 in frozen module boot dot py. 64K for SAMD 21 and 128K for SAMD 51. Spy bus usage is still a work in process. More information can be found on the MicroPython GitHub repo. Next up, CircuitPython online IDEs. The idea is simple. Have a web-based development environment for CircuitPython. This eliminates the need for installing software and provides a unified interface. It is definitely possible with newer web technologies built into modern builds of the Chrome web browser. GitHub user Mr. Coxwell started this trend two years ago. The idea was picked up by user SenseBox eight months ago. Most recently, user URFDVW has made progress with a rather nice web-based editor fittingly called CircuitPython online IDE. Available in English and Chinese, the project is well documented and has many features. There are serial console and plot output capabilities. And there are a significant number of links here, both YouTube, GitHub, and link to the actual IDE. The ESP32-S3 mini modules make for an easy S3 feather. Adafruit picked up some ESP32-S3 mini modules from DigiHeat and Surprise. They are pin compatible with the S2 mini modules. That means we were able to upgrade the ESP32-S2 feather to the newest dual-core BLE chip set. All pins have been tested, Neopixel works, and so does I2C. They're fabricating some of these, and we'll have some in the Adafruit shop as soon as we can get a reel from Espressif. And there are posts on the Adafruit blog and YouTube. Next up, wirelessly code your Bluetooth device with CircuitPython. Did you know you can transfer files over BLE? This is the basis for being able to edit CircuitPython files directly on your device. Adafruit has been working on a new web-based code editor for CircuitPython. This allows you to edit files directly on your Bluetooth devices using just the Chrome web browser without installing any additional software. The great thing about this code editor is that it's written completely in JavaScript, so it runs only on your computer and none of your data is ever uploaded to a server. And there are links to AlarmGuide and also to code.CircuitPython.org. And then finally, meet the maker, Ann Barela. Adafruit engineer Ann Barela was interviewed for the latest issue of Hackspace Magazine, issue 49. If you've ever programmed anything in CircuitPython and understood the instructions the first time, you probably have Ann Barela to thank. She's a consulting engineer at Adafruit where she puts her vast array of experience into helping people make cool stuff that just works. She had her work go into space on the shuttle, and she helped to make sure the world's computers didn't melt when the clocks reset to zero in year 2000, and she's been a big fan of open source. We got a bit flustered when we spoke to her, to be honest. Where do you start with a career that's included Caltech, Hewlett Packard, NASA, Boeing, and the U.S. diplomatic service? So we started with something we can all understand, CircuitPython. You can read about Ann, her varied professions, her making trajectory, and what she's doing now in the latest Hackspace Magazine. So this has been a preview of the CircuitPython Weekly Newsletter, which is a CircuitPython community-run newsletter emailed every Tuesday. The complete archives are available on AdafruitDaily.com slash Category slash CircuitPython. It highlights the latest Python on hardware-related news for around the web, including CircuitPython, Python, and MicroPython developments. To contribute your own projects or news, edit next week's draft on GitHub and submit a pull request. That's github.com slash Adafruit slash CircuitPython-weekly-newsletter and submit a PR with the changes. You can also tag a tweet on CircuitPython or hashtag CircuitPython on Twitter or email cpnews at adafruit.com. And that is community news. Next up is the state of CircuitPython, Libraries, and Blinka. This is a chance to look at the entire CircuitPython project and the numbers to see how things are going, get an idea of the health of the project. We will talk about the project overall, then we will specifically talk about the core, the libraries, and Blinka separately from each other. So first up, overall, we had 33 pull requests merged from 21 authors, including a few names I don't recognize, U-R-F-D-V-W, Pixel Clay, List Apple, Symantec, and Bill Tubbs. And 12 different reviewers. We have 13 issues closed by six people and 19 opened by 14 people. So we're up a bit, but there are a very large number of folks that were involved in those issues, so that's really good to see. And with that, I will turn it over to Scott to talk about the core. Awesome. Thank you, Katnie. Okay, so the numbers for the core, this is just the C core for CircuitPython on microcontrollers. We have 14 pull requests merged from 12 different authors, so thank you to those authors. We had six reviewers, so we're always looking for more reviewers to support our authors. We have 12 open pull requests. The oldest is 79 days old. I think a lot of these are also marked as drafts, so if you are the author of a draft PR and there's no work being done on it, it's kind of stalled out and it's just not going to get in, please do close it. Instead, my preference is to have issues linked to those branches. I'd like to keep pull requests for things that are actively being iterated on. So take a look at those if you're an author of any of those PRs. Issues-wise, we had four closed issues by three people, seven opened by six people, so we are net up three for a total of 455 open issues. Now, we track our issues via milestones, and milestones are used to kind of gauge how urgently the different issues are. We have negative two issues not assigned to milestones, which I'm not sure how we get negative, but that's our bucket for issues that we haven't looked at yet to understand what they should be categorized as. We have zero open issues for 7.1 and we have 23 open issues for 7XX. I suppose that there may be issues in the 7XX category that we do actually want to fix before we call 7.1 stable. If you have any ideas for that, please chime in on those issues and we'll get them remyelstoned for 7.1. And that's it for the core. Thanks, Scott. All right, next up is the libraries. So this applies to all of the Adafruit Circuit Python libraries, which is everything that starts with Adafruit underscore CircuitPython underscore on GitHub, as well as a few extras like our cookie cutter and the Adafruit Community Bundle, rather. CircuitPython Community Bundle. I'll get there. So across all these repos, we had 18 pull requests merged from 10 different authors and 10 different reviewers, leaving us with 63 open pull requests. We had eight issues closed by four people and 12 opened by nine people, leaving us with 636 open issues. If you're interested in contributing to CircuitPython on the Python side of things, check out circuitpython.org slash contributing. You'll find all of these open PRs and open issues available listed out. You can search the issues by label for folks that are new to everything. Good first issue is a great place to start. We currently have 258 good first issues. And if you're looking for something more complicated, bug or enhancement is also an excellent thing to search for. And if you find anything that interests you, comment on the issue and let us know you're working on it. If you need help with it, please let us know. We're available both on GitHub and on Discord to assist with any of that. We also have a guide on contributing to CircuitPython using Git and GitHub available for you to use if you are new to both of those. So don't let that intimidate you. We want to make sure that you're able to contribute in a way that works best for you. If you're interested in helping out with reviewing, take a look at the open pull requests. And if you have the hardware, test it. If you are just commenting on the code, let us know. Anything that you want to let us know about what you've taken a look at is super helpful. And once you're more comfortable with that, we can look at leveling you up to the review team. In terms of library updates in the last seven days, there's one new library, Adafruit CircuitPython async.io, and a huge list of updated libraries. There is a link to the full CircuitPython library report. It was many, many pages. So we just finished a library update sweep, which is why there were too many updated libraries to list in the notes document. We're continuing to see excellent contributions and updates to the libraries. Thank you to everyone who's been submitting updates over the last week and beyond. And as well, thank you to the review team. You all make it possible for us to continue moving forward at such a pace. We could not do it without you. Most of the time, by the time I get to a PR in my email, it's already been reviewed, which is greatly appreciated. And that is what I have for the library. So next up, I will turn it over to Melissa to talk about Blinka. Hello. Blinka is our CircuitPython and MicroPython compatibility layer for Raspberry Pi and other single board computers. And this week we had one pull request merged by one author and two reviewers. There are still three open pull requests. There was one closed issue by one person and zero open by zero people leaving a net of 64 open issues amongst all the repos. In the last month, we had 14,087 PiWheels downloads and they're currently 77 board supported. And that's it. Thanks very much. Next up is Huggerports. Huggerports is an opportunity for us to highlight the fun things that folks are doing in the community, all the positive feedback and that sort of thing that we can give. There's not enough of it, so we try to do it every week. And this is held as a round robin where I will start and then I'll go down the list alphabetically and loop back to the top to give everybody who wants to a chance to participate. So first up, I have a Huggerport to Jerry for testing the BME280 on the Feather ESP32-S2 for accuracy and providing me with the testing examples so I have something to start with. It turns out we're going to include an Adafruit IO example in the guide and I have personally never worked with Adafruit IO so this example is going to be incredibly useful because it is giving me the entire starting point I need and all I need to do is tweak a couple of timing things. Next up, to Keith the EE for learning the release part of the library PR review process. It's an important part of PR reviews and not everyone is aware of how to do that and so it's excellent to see another person pop up so we're not putting that all on one person. To Dylan for finishing up the library update sweep. To Foamy Guy for catching an issue with Read the Docs on some of the libraries and for looking into the fix. And to Jeff for keeping me up on his trip with some lovely pictures. Next I have some notes for Keith the EE to me, Katni, for helping out with a project that the Python Discord is developing to Foamy Guy for guiding me through the library release process and to everyone for being an awesome community. And next up is Maker Melissa. Hello, I wanted to give a heavy report to Katni for helping me out with the ESP32S2 feather bootloader and group hug to everyone else. Excellent. Next up I have some notes for Mark Gambler who has a hug report for Tanute for the discussion on the IS-31 and review and a group hug. And next up is Scott. Hello, first a hug to TAC for tweaking Tan USB for the Raspberry Pi 02W support. Next a hug to 560 for testing the Broadcom build process and reporting back about it. And last up a hug to MicroDev for continuing to work on the ESP32S3 and C3 and ESPIDF44 stuff. So I'm excited for that. And that's it for me. Excellent. Next up I have some notes from Anecdata who said, a hug report to DanH and FoamyGuy for help troubleshooting a bitmap font library issue. And next up is Carter. Are you actually here today? Or are you lurking? I'm going to vote lurking. Ah, okay. Excellent, lurking. So I have notes from Carter who has a hug report for Tanute for some quick help finding info on the EPD feature, border color. Next I have some notes from Cgrover who is text only today who has a hug report for FoamyGuy and Dux or Starboard for testing and reviewing the scalable retro widgets project. I appreciate the comments and suggestions as well as the opportunity to try new to me coding techniques. Excellent. Next up I have notes from Charles Burniford who has a group hug and a happy Thanksgiving. Next up is Dan. Thank you. Okay, I'd like to thank Pixel Clay who started a Russian translation and did a whole bunch of it already. It's like 20 or 25% complete already. So it's really nice to have a brand new translation. And thanks to URF-TVW who's a native speaker of Mandarin and is editing and improving the Pinyon translation. And then thanks to MicroDev who gave me a five-minute fix for a problem I was having with Tracebacks today. I reported it and it was fixed almost immediately. Thank you very much. Okay. Excellent. Next up I have notes from David Glaude who says group hug. And then next up is FoamyGuy. FoamyGuy is up. Are you text only today? I'm gonna read it off. But now, can you hear me now? Yes. Okay. Let me reread the first one here. I got two instances going for the recording so it seems like I need to unmute both. First hug this week for C. Grover who published some really cool display IO widgets. Anybody who's interested in display IO stuff definitely recommend you take a look at those. There's some really neat stuff in there. To Joey Castillo as well as there were many other folks that gave talks over the weekend at Hackaday Remoteicon. I found Joey's really interesting but there were also lots of other really neat stuff going on over the weekend. So thank you to all the folks who gave talks and participated in Remoteicon. To AnticData who found an issue with the Bitmap font library and reported it over the weekend or this past week. I don't remember exactly when that was but I appreciate him finding that and letting us know about it. Lastly to Keith the EE for learning the release process. Definitely echo what Katnien mentioned. It's really nice to have more folks coming on board to do the releases. So thanks. Excellent, thank you. Next I have some more notes to read from G3 Holiday who has a hug report to Tanute for bare metal CP support on 02 and everyone involved in the 7.1 beta. And last but not least is Jerry. Hi. So let's see a group hug and happy Thanksgiving to all those who celebrated. Excellent. And that ends hug reports. Yes, so next up is status updates. Status updates is an opportunity for us to sync up on what we've been up to since the last meeting what we're going to be up to until the next meeting. So take a couple minutes read off read off your notes what you've been up to. If you are text only please make sure that you have written text only in there. There's a couple of people that I see who were text only for hug reports and perhaps they are not for status updates but if they are please make sure that gets updated. I'm going to update one of them right now who's not in the meeting I think it looks like. Alright. So this is around Robin as well where I will start and go down the list alphabetically and loop back around just like I just did. So first up is me. So last week published the guide for the 1.12 inch monochrome OLED that's a fun little display. There's a new example for it is 128 by 128 which is what is newest about it more pixels in the 90 format. It's actually much smaller than I thought it was once I got it physically. Anyway, there's a brand new example for that both in Arduino and CircuitPython that uses the whole display because the previous version was 64 by 128. So that's been updated. I published seven new Pi Leap guides. Pi Leap is a fun new thing where you go to an app on your iPhone and you can view guide code and send it directly to a Bluetooth enabled device. In this case, all of these examples were written for Circuit Playground Blue Fruit rather. I don't know that they are in the app yet so I don't know that they're Pi Leap enabled yet but they will get there and then eventually there will be lots more for you to do with your Bluetooth and your iOS device. I started the guide for the Feather ESP32-S2 it is mostly done except for filling in the Essentials templates. I got Dylan spun up on PrettyPins, the PrettyPins diagrams that we're trying to do for all boards. I was pretty much the only person doing them and so we brought somebody else into the fold and that one which is excellent. And then various miscellaneous whatnot. This week, finishing up the Feather ESP32-S2 guide. I have to finish filling in the Essentials templates which actually I need to duplicate one of the templates and then change some wording in it because the ESP32-S2 as well as apparently the S3 and also the NRF52840 boards all have a different AREF than the SAMD21 and the SAMD51. So when you are checking voltage on an analog pin using analog in it doesn't show up as 3.3 volts. It's all documented if there's reasons but the long short version of that story is that I need to make a template that works with these boards because the current analog in template assumes 3.3 volts and that is incorrect. And then the last two things to do is upload the PCB files to GitHub and do the PrettyPins diagram and then any miscellaneous that comes up and the next guide that I'm doing is the KB2040 which is a new board that we are going to be releasing very soon. And next up I will turn it over to maker Melissa. Hello So last week I finished up the CircuitPython code editor learn guide. I updated the Raspberry Pi blinker learn guide with Python extended bus library page. I updated the BrainCraft and VoiceBona audio page with Python usage information. I added a bunch of missing boards to circuitpython.org the website and for this week it will be a short week for me because Thanksgiving and also volunteering at the local food bank and then I'm working on the days that I am working I'm working on a new guide involving using Python to control a laser and that's it. Excellent. Next up I have notes to read from Mark Gambler who submitted the IS31PR and took it out of draft and looking for ways to incorporate the ring lights in a Python helper library and that would be on the LED glasses. Next up is Scott. Hello I'm similar to Melissa. This is a short week for me due to Thanksgiving. I will be making an Apple Pi. Last week I got the Broadcom builds going in the CI and optimized the sub module check out along the way. So that was good. There's an outstanding issue on the Pi Zero 2W but I it's really hard to track down so I'm curious to see if folks have success with it and whether somebody can fix it for me too. So I'm still going to get the PR out this week and more folks trying it and we'll hopefully get more eyes on it and find some more bugs. We can always iterate on it after it's checked in the main and it's been a long time coming so I just want to get it done. I'll start this week the one thing I have to do before I do that is I need to go over the commits no debug prints or anything in the unrelated files just so that I don't mess up the history for things and no deep dive this week I'm definitely gone Thursday and Friday completely but Tuesday and Wednesday I'll be off and on as we prep for Thanksgiving dinner. So that's what's up with me. Thanks Scott. Next up I have notes for C Grover this week added new widgets to the scalable retro widgets project thoroughly enjoyed for me guys review during his stream will have some improvements coming based on his indexer starboard suggestions submitted a PR for display shapes dot line class to allow line color change post instantiation needed this for the HP 35 display module widget and there's a picture in the notes next add three new widget prototypes to the library will continue to look for ways to improve UI and subsequently expand my Python skill set if I can successfully rearrange a few stubborn synapses refocus on creating a displayed underscore shapes dot arc graphics primitive review display shapes outlining method to see why circles morph into squares when the stroke value increases and revised last year's animated matrix portal snowman decoration will either add a blizzard mode or something related to global warming next up is Dan okay thanks wrapping around so I've been working was exclusively on the async I learned guide there's a lot of text in it explaining about tasks and cooperative multitasking and things like that so it's sort of more of a textbooky kind of thing than a project at all you can see the work in progress there's a preview link that I've put in the notes feel free to look at that and give me feedback if you like it's still very much work in progress the things in the guide are tested you need circuit python seven oh beta one and the async I owe library which is in the bundle in the course of writing up some of this like I'm starting to write up some pages about task cancellation and exception handling and I found some problems when I was working on the examples so I have to take a bit of a break and fix those problems before I can continue with those guide pages but we'll probably may publish the guide and kind of it a half finished form to get wider exposure but please take a look if you want alright thank you yeah we definitely would like any feedback on this guide and the code in it really is the most important thing we want to know especially how people are going to be using it so next up I have some notes from David Glauda who says testing circuit python on pi zero two w and pi three a after each deep dive stream turning an mcp twenty two twenty one into a console cable for the pie you are testing and creating a simple test for the nes mini controller with the we check library and trying to boot a pie b stick rp twenty forty into circuit python failure but it works with the pico micro python firmware next up is foamy guy alright thank you catney back to this window okay this week a couple of things I worked on I finally got around to making a macro pad configuration using the main project from the guide I've done several things with the macro pad at this point but I never did actually make a configuration for that sort of main macro project that I think JP or somebody else I'm not entirely sure who put that together but that was really cool and I set mine up to help me score the trivia that took place during the hackaday remote icon some other stuff I was doing was playing around with those widgets that sea grover has created and the main thing I did is try out a couple of them and built an example that runs on the clue that makes a little sound reactive bar graph that's kind of needed bounces up and down with whatever sound that it can hear coming from the microphone on the clue I made a small fix inside a cookie cutter that was resulting in some missing new lines showing up in some of the python files for this upcoming week I will try out some different configurations for read the docs we found an issue in some of the libraries that are causing them not to build correctly so I'm going to test out some of the different versions that it uses as well as put in PRs on the ones we know of that have trouble I got my 80 box this past week I was put my order in kind of like really late so I was not amongst the first shipment but mine did come in so I'm excited to play with the hardware that's inside there which I haven't had a chance to play with yet so I'm looking forward to that and then the other thing that I have going on this week is looking into refactoring bitmap font to use the with context processors from python we had made that change but it turns out that there are some more substantial changes that need to go along with it to make that library work using that newer with context sort of methodology so I'll be taking a look at that this week thanks excellent next up I have notes from 23 holiday this is kind of trying to work on a circuit python scrolling text method for the eye light glasses and debugging python with ESP 32 S2 and NRF 52 840 issues with not running code after changes are made and finally last up is Jerry thanks so yeah spent a bunch of time playing with the the new ESP 32 S2 feather with the BME 280 on board and when I first ran it I was all disappointed because the BME 280 got really hot I was reading about 15 degrees high and just running in normal use so I decided to do some testing so put a SI 7021 temperature sensor on the stem and connector and then ran some tests that put data out at AIO so I can see what's going on so but I finally under normal use if you just turn the board on and start reading the temperature you're going to get values up by at least 15 degrees Fahrenheit due to heating because of the chip getting hot but when you use deep sleep and I was using it with a 5 minute cycle so it would go to sleep for 5 minutes wake up take a reading and if you do it under battery power it works great the temperature of 2 sensors converges right back down and got within a degree of each other and stayed that way for days but then it turns out the battery finally ran out so I had to charge the battery up when I plugged in the wall charger no data this time just just battery charging all of a sudden the board started heating up again and the BME 280 went up by 10 almost 15 degrees again so that was kind of a surprise I guess not really surprising because the charging circuit generates a fair amount of heat apparently but then also notice that if you let the battery fully charge as the charge rate drops near the end of the cycle the things start cooling off again so it clearly is charge rate dependent and when it finally does reach full charge it goes right back to being normal so just some heads up to people who are playing with it bottom line is it works great if you let it go to sleep and wake it up and make a measurement then there were some issues that got reported on the forum thing about the RFM69 most of them I opened a couple of issues based on it most of it will be satisfied by fixing up the documentation and then just got to think about whether there are some sort of feature enhancements that should be put in to take care of the rest I'll look at that in the next couple of weeks that's it great all of that information about the battery stuff and heating up and so on is going to go in the guide so that'll be good that was fun to do alright and that is status updates which brings us to in the weeds which there are no topics for in the weeds is our time to have long form discussions that don't make sense for status updates or are unrelated to somebody's status updates but a discussion that somebody wants to have so I will go ahead and wrap us up then this has been the circuit python weekly for November 22nd 2021 scrolling scrolling let's see thank you to everyone who participated if you want to support Adafruit and circuit python and those of us that work in circuit python consider purchasing from the Adafruit shop at adafruit.com the video of this meeting will be released on youtube at youtube.com and the podcast will be available on major podcast services it will also be featured in the python for microcontrollers newsletter visit adafruitdaily.com to subscribe the next meeting will be held as usual next Monday at 2pm eastern 11am pacific this meeting is held on the adafruit discord which you can join by going to adafru.it slash discord to be notified about the meeting and any changes to the time or day you can ask to be added at the circuit python easter's roll on discord we hope to see you all next week thanks everyone thanks cadney


Hey y'all, welcome to what Chelsea eats. Thank you so much for joining me today. I am coming to you because I have a free resource available for you and it is a PDF that you can download that can help you if you are struggling with iron deficiency anemia. The link to download this PDF is down in the description box below. Download it. There's some tips on there and there's also a video where you need to watch it from beginning to end so that you can get all the information that it takes in order for you to start getting on your journey to reversing iron deficiency anemia. A lot of you emailed me saying you had low energy, low iron. You've been trying to get your iron up, but you can't do it. You're feeling depressed. You're feeling like some people were just feeling like they were ready to end it. Nobody said that, thank God, but your life is so miserable because of how you are feeling because of the low iron anemic condition. I understand this first hand because I've been through it myself and it is wonderful to be on the other side of that. So download this free resource as soon as you possibly can. Run, don't walk, read all the information and watch the video from beginning to end. So hopefully this will help you if no one told you that they love you today. Chelsea in North Carolina loves you very much and I'll talk to you all soon. Take care.


Gunman kills five co-workers and himself in Milwaukee. Ordinance limiting smoking and vaping passes in Plymouth. An Ostoff resort named one of the most beautiful in the world. These and other local stories are coming up on this edition of Community News Review. This is Community News Review. Service WSES TV, news content provided by WHBL. I'm Maddie Fister and this is Community News Review for Thursday, February 27, 2020. A gunman opened fire at the Molson Coors Beverage Company, brewing complex in Milwaukee on Wednesday, killing five co-workers before he was found dead from an apparent self-inflicted gunshot wound. The city's police chief said. No one else was injured in the violence at the sprawling campus of more than 20 buildings, where some 1,400 workers and employed by the beer company in Wisconsin's largest city, Milwaukee police chief Alfonso Morales said. The entire Molson Coors property was placed under a security lockdown for several hours following the gunfire as police swept each building to rule out any further threats or victims. We can now say that the scene is secure and all employees who were on the scene have been allowed to go home, Morales told reporters at a late night news conference several hours after the afternoon shooting. Morales said the bloodshed was confined to the Molson Coors complex west of downtown, a facility known to locals as an old Miller brewery, and that no members of the general public were involved. Miller Beer is one of the company's leading brands and Mayor Tom Barrett said the plant has been part of the city for 165 years. Morales said the body of the dead gunman who was believed to have acted alone was found in the same building as his five victims. The suspect was described by police as a 51-year-old Milwaukee resident and employee of Molson Coors. Details about the circumstances of the shooting included that what may have participated the carnage but were not provided by authorities. We are a family here at Molson Coors in Milwaukee and this is an unthinkable tragedy for us company president and chief executive officer Gavin Hattersley told reporters. President Donald Trump acknowledging the shooting hours earlier as he opened a White House news conference about the coronavirus outbreak referred to the gunman as a wicked murderer and called the gun violence a terrible thing. Our hearts go out to the people in Wisconsin and to the families he said. At a news conference earlier in the evening the Mayor branded the shooting an unspeakable tragedy. There were five individuals who went to work today just like everyone else goes to work. They thought they were going to go to work and return to their families. They didn't and tragically they never will. In an immediate aftermath of the bloodshed the company advised employees in an email that the gunman had been located in or near a second floor stairwell near a packaging facility the Milwaukee Journal-Senate reported. Hours later at Spitfires on state a tavern a few blocks from the shooting scene patrons made solemn toast to Miller an iconic Milwaukee brand. A small group of employees still wearing their protective gear from their shift earlier in the day at the brewery huddled together inside the bar. Prayers and condolences one female employee said as she left the bar after hugging two co-workers. The Milwaukee shooting seemed likely to resonate a contentious debate about gun control in the midst of the U.S. presidential election. The campaign of Democratic candidate Michael Bloomberg the former New York City Mayor was set to host a roundtable discussion about gun violence at an event in Los Angeles on Thursday. A campaign spokeswoman said the event which Bloomberg was not planning to attend was previously scheduled but added recent events will likely be discussed. Last year saw 417 mass shootings in the United States according to the Gun Violence Archive and the highest annual number since the non-profit research group started keeping a tally in 2013. GVA defines a mass shooting as any in which at least four people excluding the perpetrator are shot. The Plymouth Common Council passes a smoking ordinance on a unanimous vote on Tuesday night but chances are you won't notice much difference. Plymouth City Administrator Brian Urges explained that smoking had been prohibited indoors even before the statewide ban went into effect in 2009 that prompted the first of several adjustments to the policy in the city. In 2013 the ordinance was amended to prohibit smoking with a 12 feet of a city-owned building mostly due to activity at an outside book drop at the Plymouth Public Library. The latest modification dealt with vaping. Urges said that there were some differing opinions in the community as to whether vaping and smoking were the same thing so the ordinance was written to make it clear that they are treated the same in the policy. Plymouth modeled the latest language that passed by the City of Little Shoot. The biggest impact will be on vaping. Five persons already with the Sheboygan Police Department have applied to serve as interim chief of police while the search continues for a permanent replacement. Current Chief Christopher Domigolski will step down early next month to take a position with the Milwaukee Police Department. Last Friday the board of police and fire commissioners discussed the applications and resumes of the candidates for interim chief in closed session. No news announcements came out of that session and the commission will meet Thursday to further discuss those candidates. Then on Friday interviews are expected to take place in closed session with possible action related to a single applicant noted for the open session before adjournment. State health officials are waiting for a return on tests to see if another person has contracted the coronavirus. The only known case in Wisconsin involves a woman who tested positive after returning from China. Department of Health Service Chief Medical Officer Ryan Westergaard says that if you've got any respiratory illness right now do not risk it and take care of yourself. Staying at home when you are sick having people who are close to you wash hands, clean surfaces and all of those are really standard. Staff says that one of the best things you can do for yourself right now is getting your flu shot to help prevent the spread of the flu which is still very active at this time. A stretch of the main street in Fond du Lac is known as the Miracle Mile. Stores along that stretch have sold 50 winning lottery tickets some worth over a hundred million dollars since gambling's official debut in Wisconsin. But the latest win has Julie Hansen wondering if luck is shifting. Her Hansen's BP on Johnson Street sold a one million dollar winning ticket drawn Saturday that matched everything but the powerball number. Hansen's now has sold five big win tickets totaling over one point six million dollars. Wisconsin lottery retailers get two percent of award totals meaning Saturday's drawing has worth twenty thousand dollars for Hansen's matching all five numbers plus the powerball in tonight's drawing will be worth seventy million dollars in annuities or over fifty million dollars in cash and Julie Hansen won't be surprised to see the brisk business before tonight's 9 p.m. deadline to purchase a ticket. And finally the Osthoff resort makes readers digest list of most beautiful lakeside resorts in the world. The Elkhart Lake resort was tutored for its location the amenities it offers and the entertainment options along with its proximity to road America. The resort is one of twelve listed in a recent travel article lightning different vacation destinations. And that is our report for today. Join me again on Tuesday for more local news and information on Community News Review.


Hello, and welcome to this presentation of the STM32F7 analog-to-digital converter block. It will cover the main features of this block, which is used to convert the external analog voltage-like sensor outputs to digital values for further processing in the digital domain. The analog-to-digital converters inside STM32 products allow the microcontroller to accept an analog signal, like a sensor output, and convert the signal into the digital domain. There are 16 to 24 analog inputs available across the three ADCs. The ADC module itself is a 12-bit successive approximation converter. The sampling speed is two mega-samples per second. Each ADC module integrates an analog watchdog. The data can be made available either through DMA movement or interrupts. There are a number of triggering mechanisms and the data management can be configured to minimize the CPU workload. Three analog-to-digital converters are integrated inside STM32F7 products. The input channel is connected to up to 24 GPIO channels capable of converting signals in either single end or differential mode. The ADCs can convert signals in excess of five mega-samples per second. There are several functional modes, which will be explained later. There are also several different triggering methods. In order to offload the CPU, the ADC has an analog watchdog for monitoring thresholds. This slide shows the general block diagram for the three analog-to-digital converters embedded in the STM32F7. The ADC supports up to 2.4 mega-samples per second of conversion. By using triple interleaved mode, it can be extended to 7.2 mega-samples per second. The sequencer allows the user to convert up to 16 channels in any desired order. Also, each channel can have a different sampling period. The ADC offers an auto-calibration mechanism. It is recommended to run the calibration on the application if the reference voltage changes more than 10%, so this would include emerging from reset or from a low power state where the analog voltage supply has been removed and re-established. The ADC needs a minimum of 3 clock cycles for the sampling and 12 clock cycles for the conversion. With a 36 MHz ADC clock, it can achieve 2.4 mega-samples per second. For higher speed sampling, it is possible to reduce the resolution down to 6 bits, then the sampling speed can go up to 4 mega-samples per second. The sampling time can be programmed individually for each input channel of the analog to digital converters. The sampling times listed in this slide in ADC clock cycles are available. Longer sample times ensure that signals having a higher impedance are correctly converted. The ADC has 2 clock domains, one for the interface and another for the analog core. The analog clock input has a pre-scaler to select the clock speed. The ADC supports several conversion modes, single mode, which converts only one channel in single shot or continuous mode. Scan mode, which converts a complete set of predefined programmed input channels in single shot or continuous mode. And discontinuous mode converts only a single channel at each trigger signal from the list of predefined programmed channel inputs. Each ADC has an integrated analog watchdog with high and low threshold settings. The ADC conversion value is compared to this threshold window. If the result exceeds the threshold, an interrupt or external signal can be generated or a timer can be immediately stopped without CPU intervention. In normal scan conversion mode, the conversion is repeated for all channels one by one. If an injected conversion is started, the ADC stops converting the normal conversion channels and proceeds to convert the injected configured channel. At the end of all injected channel conversions, the ADC resumes the conversion from the channel where the normal conversion was stopped. When the trigger occurs, the regular conversion needs to be finished before the ADC proceeds to the injected conversion. The ADC conversion result is stored in a 16-bit data register. The system can use CPU polling, interrupts or DMA to make use of the converted data. An overrun flag can be generated if data is not read before the next converted data is ready. For injected channel conversions, four dedicated data registers are available. An injected conversion is used to interrupt the regular conversion, then insert up to four channel conversions. Once an injected conversion is finished, the regular conversion sequence can be resumed. The injected conversion result is stored in dedicated data registers. Flags and interrupts are available for the end of conversion or end of sequence. The choices for an injected channel can be reprogrammed on the fly. Even if a regular or injected conversion is in progress, you can add a different channel to the queue so that the next injected channel can be different from the previous one. Each ADC can generate four different interrupts. End of conversion, end of injected conversion, analog watchdog and data overrun. DMA requests can be generated at each end of the conversion when the ADC output data is ready. The ADCs are active in run and sleep modes. In stop mode, the ADCs are not available, but the contents of their registers are kept. In standby mode, the ADCs are powered down and must be reinitialized when returning to a higher power state. There is a deep power down mode in each ADC itself which reduces leakage by turning off an on-chip power switch. This is the recommended mode whenever an ADC is not used. The following table shows performance parameters for the ADC. The STM32F7 embeds three ADCs. ADC1, ADC2 and ADC3 can be configured to work together in dual or triple mode so that each analog to digital conversion can be synchronized between the two or three modules. These peripherals may need to be specifically configured for correct use with the ADCs. Please refer to the corresponding peripheral training modules for more information. Several application notes dedicated to analog to digital converters are available. To learn more about ADCs, you can visit a wide range of web pages discussing successive approximation analog to digital converters.


What's up guys? Welcome to SPM Buzz. My name is Miss Kithingi. In case you have not subscribed, please make sure you do because you know we are heading to 100K subscribers and if you click that subscribe button, you're getting us to 100K subscribers. Speaking to a global icon, this lady has been able to achieve so much. She's a beauty queen. She's a mentor. She's a TED Talks speaker. She's even a global citizen award winner. And just the other day, she added another award to her many accolades. And this is the Global Nursing Award. This is a beautiful Anna Kavale Duba. Yeah? How are you my dear? I'm fine. How are you? Very good. I'm really tired. Now we're gonna just get into it and let me I want to know how are you feeling right now and what does this award mean to you? The first-ever award that I won because of my profession and not just winning award, it is a global award. Global Nursing Award. And for sure it's a great thing. It's a good gesture that Astagardian has recognized the voice of nurses and I'm happy to be the first-ever edition's winner. Yeah. You know that's really good. Guys in case you don't know, Kavale has beat over 24,000 nominees of this particular award and I mean that's really good. Now let's talk about your childhood because I know at 12 years old you went through FGM. You were able to escape marriage but I'm just here wondering at 14 years how are you able to do this? Where is the confident at 14 years old? That's yes. It's true. You know I come from Northern Kenya where harmful cultural practices such as FGM and early marriages still exist and people believe that since it's culture someone should not talk about it. I underwent FGM at 12 years old. I was not forced for the FGM because it's a culture that we even ask for it anyway. But for my marriage I was engaged without my knowledge and I was to be married off but my late brother yesterday if you could have seen I dedicated this award to my late brother. He's the one who saved me and decided that I should finish my primary education, go to secondary and then university. So I didn't fight for myself that time but yes in one way or the other I fought because I work really hard for me to be the top of my class throughout my primary level so that I can be able to go to the secondary school. And then after now becoming an us and graduating with a degree I decided to champion against this and for cultural practices and bridge the gap through education programs in the Northern Kenya. Yeah and indeed you beat all odds for sure to be here today. Now you know I checked where you work at the Maristabit Hospital and I could see that you are reporting for the COVID-19 you know situation and the patients that are coming in during the pandemic and not to mention that you were actually expecting a child during that time. How was it? Yeah it was tough. I am finalizing my master's in field epidemiology that's why I've been attached to emergency operation center for Maristabit County and actually EOC came into place during the COVID-19. It was tough for us actually I was a high risk being pregnant being diabetic all that but but we managed and I'm happy that today the world has recognized the work that I do. Yeah. Oh wow now Kabale I would also like to know you know during your speech you mentioned your husband and you said my husband you're simply the best. Where is he the best? Yeah from where I come from women like me are seen to be not wife material because they think that the place for a woman is just in the kitchen. Yeah I don't talk much about it but yeah my husband is simply the best. I was engaged before him for like almost six years but my engagement was broken when I became Miss Tourism because the person thought that we are not of the same class and I am not a wife material but on another hand my husband loved me on that day because I became famous and now we are we are becoming global citizen with him. When I won the global citizen award I was with him in New York, New York 2019 when I received the award. Same for today he's simply the best because he's supporting me yeah we have a young family I have two babies one and a half and the one and a half year old whenever I travel for my work he takes his time to take care of our babies as well.  I think when I was a child I didn't know I'm undergoing any challenge because you know as a child the environment is the same for everyone but growing up I discovered that we face a lot of challenges as kids when we came to primary school especially lack of sanitary pads you know sometimes we lack these basic necessities and girls end up missing classes or even dropping out of school that's why I decided to be to break even the silence about menstrual hygiene and one of one of my programs and the Kabale Duba Foundation is called PAPA project PAPA means pads and panties the girls in that side of the world some do not even have panties so how can you give someone a pad and they have no panties so we decided that program those are the kind of the challenges that we faced as as kids and yeah pastoral skills are facing the same challenges still yeah even access to education is a major problem access to quality health is a major problem yeah and you know those are some of the things we don't know when we're here in Nairobi we don't know people are going through the such things thank you for you know just recognizing those things now Kabale you see you're a champion for women rights but I want to want to know what is then gender equality mean to you agenda equality means to me where men and women are given equal opportunities even at workplace as in like it's a right for every child to get an education but when it comes to the pastoralist communities when that decision is to be made definitely the boy child should be given upper hand so I want boys and girls to be given equal opportunities in everything yeah you run a very unique school. Ebu tell us about that because most people I'm sure they don't know about it yeah my school I think came to limelight when Nimrod Tabu traveled all the way to my village to cover and do a documentary about my school yeah anyway after I was a Miss Tourism Marsabit County 2013 and also Miss Peace Kenya and Investment 2013-2014 after winning the titles of that Miss Tourism I never went abroad or go on modeling I decided to go back home and empower the women and girls so generally whatever I was doing is just around education I'm doing mentorship which is in education we are doing career talks in education championing I'm going to stay home for cultural practices to keep girls in school so I thought of it that I need to come up with something sustainable something that that progress from one to another that's how I decided to come up with a school the school name is Turbi Pioneer I call it Pioneer because I'm the first graduate girl from my village so the school is a unique one because the children come to school in the morning the parents especially the mothers come to the same school for adult learning center I decided to use this model because with the CBC system in Kenya parents are expected to help their kids with their homework but now the illiterate mother how do you expect her to explain to the baby so it's very funny we are giving assignments that assignment that's given to a pp1 child is given to the mother so when they go home it's that pp1 or pp2 or pp3 I mean grade one child that is helping the mother how to hold a pen and write her name so this makes these women value education and they take more of their kids to school yeah beautiful beautiful now as we wind up Kabale someone who's been you know who's been in in a very challenging growing up sort of lifestyle please talk to them inspire them and just let them know they can I would like to say that uh as Lupita Nyong'o said no matter where we come from our dreams are valid and uh as for me I'm a dreamer I dream they are nice to be someone in this world and I have no limit I try my level best even applying to these awards I I am on social media so much and I'm on social media looking for opportunities and sharing what I do with the world so that whenever I am nominated for something and voting comes up I'm there on Facebook please people vote for me and I can get like 600 1000 likes you know because people have seen what I'm doing I'm not saying people social media but generally do passionately whatever you decide to do yeah yeah what is going to change now after this beautiful award what is going to change these are huge award it's huge it's really huge for me not only for me even for the entire county and for the entire people that I am working for since I'm already running a project of the school I'm planning to expand the school and have a boarding section so that we can be able to accommodate more deserving pastoralist children into the school all right yeah thank you for having me my name is George George Yosewe I represent an organization by the name Herra spelt out health education research and foundation for Africa it's basically in charge of strategic and policy strategic policies for health care and especially health care for humanity and that is our food that is our game and that is our thought now in respect to our beautiful lady here and sometimes you know they say when you're beauty you don't have brains thank god she has everything and this is makes it easier for us but more importantly you know from marsupit county a county that's known for conflicts and all this and then they produce somebody amazing like her winning the astra guardian in dubai well we know there were 24 000 nominees and honestly I think she's born a winner now I just came to know of a history in terms of winning and winning and winning until this point in time well we'll make a win more but most of the humanitarian needs most of them actually and I just spoke to a lady from marsupit as well she's won a lot of awards actually I'd like to just write it down her name is Dahaba Red Cross award 2015 Yali USA 2016 as a matter of fact she traveled and met Obama herself we have Ambrif health Africa on 2018 beyond zero 2021 international women day 2020-21 nurse midwife 2021 and she just told us an interesting story that she won an award in 2012 and she couldn't reach Belgium because she didn't have proper network but now her award is actually being shipped on now but they managed to celebrate her so this is the bridge this is what we need to bridge in respect to our nurses our healthcare workers and I love what Anna said in respect to nursing you say it's just not a nurse it's a nurse that caption alone speaks a lot yes so what message do you have for cabale cabale keep flying we always say that uh uh sky is a limit but i put the moon is a limit aim for the moon fall on the sky but more importantly we say success is not a finality and failure is not federal it's the urge to continue that counts please continue all right all right cabale any more to add to this i'm just humbled it's good when someone out there recognizes your work um yeah i'm happy about the hubbo we were together for the yearly 2016 we met obama the unique story that i didn't tell you is that when we went for mandela washington fellowship in america i was placed at syracuse university the first trip to new york i was shocked being just directly from village and that was my first time to be out of this country really so i went back to university and decided to text obama but i didn't know how so i i went to white house website and in every website there is something leave a message i left a message just saying that thank you president obama apparently he read and he wrote me a letter from white house posted to me directly to kenya yeah so that's really beautiful okay okay you have anything to add well what i'll say as a matter of fact that uh cabale and i told a much more early in the speech don't be snatched we need people like in kenya to improve our healthcare maternal care uh give a value addition to the profession itself and i just talked to a few nurses who you know we have an infant mortality uh very high uh and people like you we can use and actually serve your country now whoever wants you let them come here and establish something for you not get our brains in terms of brain drain and get you out there so i know you're patriotic enough and this is what we're going to use to inspire also our little girls and anywhere from any county and especially from marsupit that speaks volumes so congratulations i'm very proud of you and honestly you know you're like a daughter to me my daughter is 2021 so i see you in that and that's why my passion and this organization we have for strategic policies so that we can help our mothers our children our sisters even our fathers again thank you thank you so much for getting a minute i know you're very tired man i can see that i can see that i wish we could stay longer because you know cabale has an very inspiring story that we could learn a lot from i wish we could stay longer but we can't because we need to let her go and rest but thank you thank you so much all right guys that was okay and and you know was right here on spm bars bars with stars thank you so much for watching my name is miss kithingy until next time it's goodbye


Welcome back everyone. Today I'm in the new Sorugi Linux distribution. It's a Linux distribution. It just has some preconfigured utilities for digital forensic investigations. So if you haven't checked it out, it is pretty interesting and it's free. So it's worth looking at. Today we are going to look at how the Sorugi Linux has set up some directories for us to help us work with disk images, specifically mounting disk images. And then we will mount an EZ-R1 disk image with EWF mount. So pretty much everything is done by the command line. You can go to applications and Sorugi and mount.  So we today are going to be using EWF mount. If I click on that, then I'm just going to get the command line version of the tool that pops up and then I can type in my commands. If you're not familiar with the commands, you can go to applications and play around with everything that's listed here. But for now I'm going to show you the entire process, how to get started essentially doing the mounts from the command line. If you don't have a command prompt open, go ahead and click on the this red window icon here and you'll get a new command prompt. And whenever you open your command prompt, you'll have, you should have something that looks like your username, the username that you're currently logged in as, the computer's name. Next is the directory that you're in, a tilde or that squiggly line means that you're in that user's home directory. If we type LS, this is going to list all of the folders in that directory. And we have two folders that are not standard for Linux that is the 01 screenshots and 02 computer vision. This is specifically created by the Sorugi Linux team. When we run screenshot analysis tools or computer vision tools, the outputs can be dumped into those locations for easy access. But today what we're talking about is dealing with disk images. I want to mount a disk image that way I can get access to the data inside without doing carving, start to analyze some of the files inside. So there's several different reasons you would do this, especially in Linux, since a lot of tools won't support working with disk images directly, you need to mount the image read only first, and then you can work with the data that's inside of it. So the first thing we'll do is go to CD slash MNT that's change directory to the mount directory. And if we type LS, then I can see all of these different thought folders that have been created in the mount directory. And this is also created by the Sorugi Linux team, because it's very convenient to have these folders pre created for you, all the same commands will work on other versions of Linux, but the team has already created all of these different folders, and I'll show you what they're for. You might already be able to guess we have AFF1, we have EWF1, CDE, GH. So for example, our EWF1 folder, today I'm going to be mounting an expert witness format file, which would be an easy row one file or EWF. If we go into these folders, there's nothing in them right now. But basically what this folder has been created for is so I have an easy access to mount points that already exist in the system. The file that I have right now is an easy row one image, it's SDA underscore image, easy row one, that's the file name. And if we use the file command on it, we can see that it is an EWF expert witness in case image file format. This is the file that I want to mount and get access to. Okay, but this is a physical disk image, you can see that in the file name, we have PC physical disk image. So we can't mount the physical disk image directly. So what we need to do is, because I have an expert witness format physical disk image, I'm going to use this EWF1 folder, since I don't have any mount points already. And I'm going to type sudo EWF mount, and then the location of my disk image that I want to mount. So sudo EWF mount, the location of my image, it was a very long path. And then where I want to mount the data to what folder I'll use to access the data. And that would be slash MNT EWF1, or specifically this folder here. So I'm attaching this disk image to this folder. So whenever I access that folder, I should be able to see some of the data inside. So if we click enter, I enter the password. And since we didn't have an error, it looks like it's okay if we type mount, you can see dev fuse on MNT EWF1. So that looks good. We actually have a mount point activated. So next, I'm going to see if I can see inside. So LS slash mint MNT EWF1 permission denied. I wonder if I can do sudo. Okay, so inside is just a single file, essentially called EWF. And what this is is a physical disk image object. So we can treat it kind of like an attached physical disk. Since we can treat it like an attached physical disk, I can use MMLS on it. So from the sleuth kit, I can run MMLS to find out how the disk is partitioned out. So I'm going to do sudo MMLS slash MNT slash EWF1 slash EWF1. Now remember MNT EWF1 is the folder amount point that I mounted the disk image to EWF1 is this, what kind of looks like a file, but it's actually a disk or raw data in there. So if I hit enter, we should see the overall partition table. So now that we have the partition table, I need to get the starting block offset of the partition that I'm interested in. I want to look at this basic data partition because I think that that's the biggest and it probably has my most interesting information. You can see that the starting offset is 567296. So I'm going to copy that. And then we also have units are in 512 byte sectors. Okay, that's going to be important later. The next thing I need to do is figure out if the partition starts at this offset, and it's 512 byte sectors. So our starting sectors here, we have 512 byte sectors, what's the byte offset that we are looking for. So I'm going to use the expr, the expression, kind of like a calculator built into command line. And I'm going to paste the sector offset, and then do slash star, which is times, and then 512. And what that will give us is the byte offset of that particular partition. So I'm going to copy that. So now we have the location of the partition that I want to mount. We have where it starts. So the next thing I need to do is type sudo mount dash o loop offset equals, and then it's the byte offset. And that's why we had to calculate the byte offset is because mount only takes a byte offset, not the sector. And then the data that I'm mounting from. So MNT, EWF one, EWF one. And where am I going to mount this to? Well, on the suspects disc that I have here, this basic data partition was probably the C drive. Well, in our mount folder, conveniently, we have, for example, a folder called C. So since this is the only disk image that I'm working with right now, I'm going to mount this partition to MNT C, I press enter, trying read only. Okay, if we type mount, then we should have mount EWF one, EWF one on MNT C. So it did mount properly, but it had to mount in read only mode, which is good for us anyway, because we don't want to have any rights. So if I type LS, if I move into C and type LS, now I can see all of the files that were in the suspect system, just like on their particular hard drive. Okay, this is no file carving, I'm not recovering any deleted data or anything like that. But now I have direct access to be able to browse through things. So for example, I could use fine, which is a built-in Linux command with grep, and then just look for, I don't know, JPEG, anything with JPG in the, in the name. Okay, and then we can find all of the JPEG images and start pulling them out and analyzing them. Right. So, so Rookie Linux already has a lot of folders set up for you, and you might be wondering what they're for. Well, basically, they're for working in this case for the mount directories for working with mount points that are very common. So either EWF, you're mounting a disk image or CDE, it could be a partition from Windows, for example. So I hope that helps explain what these folders are for. And I hope that that helped you a little bit understand how to work with and mount disk images with EWF Acquire. That's it for today. Thank you very much.


We are going, we have studied different hydrocarbon compounds and that hydrocarbon compounds so different functional group we have studied and that functional group, first text which we are going to study is the homologous series, homologous series is what we are going to study, homologous series where hydrocarbon come out to the carbon compounds they are attached to the same function. But the number of carbon atoms they release or the number of carbon atoms change accordingly and what some people women say in this homologous series. Today we are going to study the homologous series of acid in the first example if we will take that is this is the Methanoic acid. We know that methane which consists of only one carbon atom. Here for, here I understand that I have taken the different elements of the clay models which are having a different clay. So that we can identify the different elements for carbon I have chosen the red color for hydrogen it is yellow and for oxygen it is blue color. So now suppose if we want to study the Methanoic acid. So here you can observe this carbon atom one carbon atom it is attached with the two oxygen and two hydrogen atoms. So this is the one carbon atom where we can study the Methanoic acid the formation of this Methanoic acid. Where the acid functional group where only one single carbon atom is attached to the COH group. Second example I am going to take in the homologous series is the Methanoic acid Ethane. We know that the Methanoic acid is an acid which consists of two carbon atoms. If we will study this example here I have taken the two carbon atoms. Out of these two carbon atoms one carbon atom consists of its functional group that is C, double bond O and this O and H. And here as simple as I can put it as to this one carbon atom. Third example if we will take that is the Methanoic acid. If we will study one by one the number of carbon atoms is increased in each and every structure. So in propane acid there is a presence of three carbon atoms out of these three carbon atoms. One carbon atom is attached with the function group where the C double bond O H and other two functional group. Our other two of carbon atoms they are the alkene group where the two hydrogen atoms are connected to this. So homologous series is a series where the carbon atoms are the function group which is attached to the carbon atoms that will remain same. But just the number of carbon atoms which we are going to add in each series. So this is the best example or with this clay model you can easily understand how we can form the different structures from this clay model. And how we can attach the different carbon atoms and there is a combination of different functional group. Thank you.