Welcome back. Our next speaker is Chance Hudson and he'll be talking about how to build an identity ecosystem on Unirep and Unirep itself is an anonymous reputation system. So, Chance. Thank you. All right, so thank you all for being here. I'm excited to talk to you guys today about a protocol I work on called Unirep. So, before we get into it, this is a quick roadmap of how this presentation is going to go. First, I'm going to give a semi-technical overview of what Unirep the protocol is. Then I'll talk a little bit about improving the user experience of ZK and blockchain applications in general. And then I'll talk a little bit about how we can scale ZK on the blockchain and sort of where we're at with the capacity right now. Right, so let's dive into it. Unirep is short for universal reputation and you can think of it as two different things. First, it's an identity system that gives you anonymity. And it does this by creating public keys that change over time. The second component is this attestation system. Within the system, we have a testers, which you can also think of as applications or just smart contracts. And these attesters give reputation to users. And you can think of it as a tester to reputation like ERC contracts to tokens. They create the system to find how the reputation is distributed and spent and destroyed and everything like that. And so we define reputation as two different integers, positive and negative reputation. And we do this so we can represent negative reputation like net negative reputation in ZK proofs and in smart contracts without having to deal with signed integers or wrapping around unsigned integers or anything like that. So that's one component of the user state. The other is this graffiti value, which the attestor can use for anything they want to do within the application. And this is just 32 bytes. And yeah, the attestor can use it as they like. And so one example use case of this is an attestor can allow users to register a username. And so the user requests a username and then the attestor attests giving the hash of the username as graffiti to the user. Now, when the user takes an action or makes a proof, they can prove the preimage of the graffiti and move from anonymity to pseudonymity. So that's one example use case that's relatively simple. A more complex example would be storing the state root of a merkle tree inside of this graffiti. And then the attestor can extend the ZK proof system to prove things about the contents of that tree that's in the graffiti. So for example, they could use an incremental merkle tree to give achievements to the user or to track actions the user has taken, anything like that. So very extensible system. So the two main properties of UNREP are anonymity and non-confidentiality. That means we can see everything that's happening inside of the system, how much reputation is being transferred and whatnot, but we don't know who's doing what. So let's talk a little bit about the UNREP identity system. We build on top of a system called semaphore, which is also developed by the privacy and scalability team. And with semaphore, we have this public private key system. That's the most simple explanation. It has two secrets, a trap door and an alifier. And we define a public key as the hash of the hash of those two secrets. We also call this an identity commitment in semaphore talk. And we use the Poseidon hash function to calculate these values, which makes it a ZK-friendly protocol. And that means that you can extend it to do arbitrary things. So in this example, we have just a public private key system, which isn't particularly useful. But using a ZK proof, you could extend it to do signatures, for example, by writing a proof that proves the secret values, as well as the hash of some data that you want to assign. Yes, you can extend ZK proofs in arbitrary ways like this. Another way you can extend it is by building something like UNREP. So we have these public keys that change over time. And we call these epoch keys because they're valid for the length of one epoch. And this is some amount of time that is set by the attester in question. And so the epoch key is the hash of the nullifier, attester ID, epoch and nonce. And so as you can see, because the epoch is part of the hash, it changes every epoch. We also have this nonce value, which is a value between one and zero and two by default. And it allows us to give the user multiple epoch keys for a single epoch. So if a user wants to commit an action and then wants to commit another action but doesn't want to link their identity between the two keys, they can use different epoch keys and still be able to prove the same amount of reputation and whatnot. And just like some of this system is ZK friendly and therefore extensible, so if you wanted to make a signature system using these epoch keys, you would use the exact same approach where you prove control of the nullifier and the public signals, and then you pass in whatever you want to hash and it all gets output. Yeah, so now I want to talk a little bit about data structures that we use in Unrep. So we have this identity system, but how do we assign reputation and graffiti to users in the system and then continue to prove it? So we really have two structures. We have this state tree first, which controls or measures whether or not a user is a member of the current epoch. And as you can see, it's an incremental mercury that we store completely on chain. And that the leaves themselves are the hash of this private identity nullifier, the tester in the epoch, and then the reputation the user has at the start of the epoch. So this tree controls or this tree has leaves that a user inserts into when they join the current epoch. So for example, when a user signs up, we insert a leaf or the user makes a ZK proof and then creates a leaf with zero positive and negative reputation because they're just joining the system. So they start with zero. The other structure we have is what we call an epoch tree. So the state tree tracks the starting balance for the epoch and the epoch tree tracks the amount of reputation that was received during the epoch. And as you can see, it's a sparse mercury tree. And we store only the root of this tree on chain. And we use ZK proofs off chain to insert and update leaves in this tree. And then we just post the new root along with the ZK proof to the chain. And you can see that the leaf values in this tree are the hash of the total reputation owned by this epoch key. And so we determined the index of the user's leaf in the tree using the epoch key. So in the previous slide, you saw that the epoch key is just some hash of some arbitrary data. And we're able to apply or we're able to determine a leaf in the tree by taking the modulus of that hash across the number of leaves in the tree. So if we use this exact tree, we would take the hash modulus two to the third because it's only three levels deep. But of course, we did that, we would have lots of collisions. So when we operate this tree in production, we use a depth of 128. So we take the hash modulus two to the 128th. And now everyone gets a unique epoch key. And we have 128 bits of collision resistance. So the whole idea behind UNREP is users have these identities that are valid for an epoch. And then at the end of that epoch, they pack up their reputation. And they move to a new identity in the next epoch by inserting a leaf into the new state tree. I didn't say this before, but we have a copy of these trees every epoch that we use. Right, so let's change gears a little bit and talk about the user experience for zero knowledge applications. So we have these proofs with UNREP, and we want the user to be able to make these proofs inside of like their browser, for example, on a computer. So here we have a graph of the proving time for proofs of various sizes on a few different devices. And yeah, you can read it pretty well. So you can see that there's a sweet spot below 30,000 constraints, where any proof you make is going to take less than five seconds on most modern devices. That purple line at the top is an iPhone from like 2016. So like older mobile devices can still do that in less than 10 seconds, which is pretty acceptable performance. So where's UNREP? Where are our proofs on this graph? The first proof we have is a signup proof. It's very small. It's 700 constraints. And all it does is output a hash value. So less than one second. A little bit bigger, we have an epoch key proof. This proves control of an epoch key and also proves a leaf in the state tree. So it's a little bit bigger, 3000 constraints, still less than one second on most devices. And way over here, we have this user state transition proof. And in this proof, we add up the value in the state tree leaf, as well as the values in all of the epoch tree leaves, and output a new state tree leaf with the sum of the reputation of the user owns. So we have to do multiple inclusion proofs over trees that are quite large, but we still end up with about 29,000 constraints, so less than five seconds on modern devices. And we can also execute this proof in the background so the user doesn't have to know about it and doesn't have to wait. So I think a good goal for ZK applications and for blockchain in general is users not being aware that they're using the blockchain while they're using the blockchain. So a lot of you probably use websites or applications like Spotify, or Twitter, or Reddit, or Stack Overflow. Just raise your hand if you know what kind of database those applications are using. Right, no one raised their hand. Okay, one person raised their hand. We have at least one nerd in the crowd. But for the most part, users don't really care about the data structures that are backing the applications they're using. And blockchains are really the same. They're just databases with different properties. And so the user shouldn't have to be aware that they're using the blockchain. So this is the architecture of a traditional DAB. And as an engineer, I really like this architecture because it's simple, and it's sort of unprecedented before blockchain. But for the reasons that I like it, I think that users kind of hate it because they have to learn about the blockchain and then they have to learn about wallets like MetaMask and transactions and gas and gas prices and Quay and Ether and they have to get Ether. And it's a whole thing and it's a lot for them to learn just to use a single DAB. So luckily, if we use ZK identities instead of wallets, we can build this more traditional three-tier architecture where we introduce a relay that bundles the transaction and sends it. So the flow would be, the web app generates a ZK proof, gives it to the relay. The relay creates a transaction and then posts it to the blockchain. And the economics of why the relay would do this are sort of, there are a lot of different schemes you could build like subscription models or just like free trial models, all sorts of different things you could do. And so one note about like this architecture, the relay is not a trusted entity. The relay can sensor transactions that can go offline. It doesn't matter the web app can or the user can always send their ZK proof with a different relay or broadcast it to the blockchain themselves. The relay also can't compromise the ZK proof itself because if they change anything about it, the proof itself will be invalid and the proof determines what the user wants to do on chain. So I think a good goal for this would be from a user experience perspective, a user clicks a button and then in less than five seconds we show a loading animation and we generate a ZK proof, give it to the relayer. The relayer then packages it into a transaction and gives it to an L2 node who then returns an instant finality guarantee. And at that point we can stop the loading animation on the front end and say, okay, your action is complete. And even if we get a weak economic guarantee from this L2 node, we can still do this on the front end and then have an alternate code path where if the sequencer doesn't include the transaction, we show a notification saying, oh, this action failed or do you want to try again or not. And hopefully that code path is relatively cold and sequencers include transactions as they say they're going to. So how can we build an ecosystem using ZK proofs in this sort of abstracted architecture? One approach I think is sort of detailed in this diagram. You can see there are three different attestor applications and a user's browser. And each attestor application is managing a unique identity for the user inside of the browser local storage. And the advantage to this is we can treat these identities more like Web2 authentication tokens and less like Bitcoin or Ethereum private keys. So instead of prompting the user for permission to do a signature or make a transaction, we just in the background make these ZK proofs and give them to the relayers. And at the same time when we use different identities for each of these websites, if one of the identities is compromised because the website injects some malicious JavaScript or does something like this, the damage is contained to that single attestor. But at the same time, we want attestors to be interoperable. So if, for example, this review attestor wanted to get a proof from the cyber resistance attestor, how could we do that? And the answer is basically a lot for ZK. So in this example flow, I'm trying to sign up for this review attestor. And the review attestor wants a proof that I am a human being in the form of a reputation proof from this cyber resistance attestor. And so in this flow, I create the sign up proof from the review attestor and then I get redirected to the cyber resistance attestor and I get prompted to make a proof from this identity. And in this case, we shouldn't operate silently. We should definitely request that the user make this proof because we're going to hand it to a different third party. And so if the user says yes, then we prove that we have like the reputation and we sign the hash of the sign up proof to prove that we're the same person. And then we get redirected back to the original application and we can continue sign up. So using this flow, we can get ZK proofs from different applications into different sort of origins. Okay, so this is part three of the presentation. How can we scale ZK? So first I want to talk about where we're at right now and the limitations of our current infrastructure. So when we talk about scaling ZK, there's two limitations. One is the call data itself and two is actually executing the verification on chain. So let's talk about call data first. So for graph 16, we have about 130 bytes per proof. And for Planck, we have about half a kilobyte per proof. So assume that we're talking about EIP, like a post EIP for a world. And we have two megabytes per block that we can use for blob data. So at that point, we're able to do 1300 cross 16 proofs per second and 330 Planck proofs per second. That's not terrible. So let's open door number two and look at the verification costs. So graph 16 and Planck both cost about 250,000 gas to verify. This isn't totally true. Graph 16 is a little bit cheaper and they both scale up with the number of public signals in the proof. But for this example, we're just going to say they both cost 250,000. So the Ethereum mainnet is doing two and a half million gas per second right now. They're doing 30 million gas every 12 seconds, which comes down to this. So we get to verify 10 proofs per second on a Ethereum mainnet. So on Arbitrum and L2, for example, they're doing 7 million gas per second. So that number is bumping to 24 proofs per second. So we see an obvious bottleneck here. It's the verification cost on chain. And these numbers are also extreme upper bounds. This assumes that we're filling entire blob blocks with two megabytes of ZK proofs and we're filling entire blocks with verification of ZK proofs and not even factoring call data. So how can we scale UNRUP and how can we scale ZK proofs in general, given those bottlenecks? So this is a proof from the UNRUP system where we're generating a user state transition. And as you can see, there's I think seven public signals. And for every user that wants to join a new epoch, we make one of these and put it on the blockchain and verify it. So how can we make this a little bit more efficient? We can do recursive proofs. So we have the user to make a proof and it gets sent to an aggregator and then the aggregator proves that four proofs are valid and outputs one proof. And so we're able to reduce it by, in this case, a factor of four. There are other things we can do like to reduce the public signals as well, like cue the ZK proofs on chain and then form a hash chain of the public signals and the proof stuff to reduce it so that we don't have to output all these public signals at once, which will also reduce the verification cost. And so recursive proving is really important because it changes the approach from scaling the throughput of decentralized network to instead scaling off-chain computational power, which we're much more able to do, like Intel and AMD do this every year. We can also build ASICs to make proofs very quickly. And then we're able to see the sort of improvements that we want to see. Like if we're able to bundle 10 proofs at a time, we get a 10x improvement, 100, 100x, etc. And this does introduce a little bit of complexity because we have to deal with a proof aggregator and now the user potentially has to wait on that or potentially optimistically evaluate the aggregator. But this is a decent approach to scaling. Right, so now that's most of the presentation. I'm just going to talk about some attestor ideas that I think are kind of cool that we can build with Unwrap or the other Unwrap protocol. So the first is just like ZK DAOs. We can keep the balance hidden or the balance controlled by a user hidden within the DAO. We can also do things like vote for proposals anonymously. A lot of interesting ideas or a lot of interesting things that can be done with this. The next is anti-seidel reputation. I use this as an example in one of the previous slides. But what you could do is basically take like proofs that you have a Web 2 identity and give your reputation for that or potentially use like BrightID or prove that you have like Po-Apps for example and just get reputation and then use that to sign up for other attestors. The third is like really simple and generic, which is a recommendation system as a Web app. Everyone has things that they use that they would want to recommend to other people. Having like reputation for good recommendations seems like a good use of the system. And then the final one is one that I thought of when I was given the DevCon Po-App. I really hate claiming Po-Apps on chain because I'm just giving people a history of like the places I've been in the real world, which I think is kind of weird. So we can use Unwrap to like claim Po-Apps anonymously and then we could make a proof that you have like a Po-App in a set. Like for example, I could prove that I have two Po-Apps from the set of all DevCon Po-Apps. Something like that. And then just so nice to have things for sort of the ecosystem like infrastructure wise. The first is like a ZK directory. This just a directory of the hashes of proofs and human readable descriptions of what the proofs do. And this would be really important if we're going to owe off between different applications and request ZK proofs because they're potentially requesting just random proofs that are specific to their application. And so applications should have a place where they can request information about a proof and then return it to the user. The next thing is plonk. We already have this but I just want to talk about it a little bit more. The most important part of plonk to me at least is we don't have this phase 2 trusted setup that is circuit specific. So with Unwrap we want people to extend the proofs that we've written and write their own to build their own functionality. And with ROS16 that's very difficult to do because they have to run a trusted setup ceremony for the circuits that they build. And this is a huge amount of coordination and effort. You can't really expect most developers to reasonably do.  And the last thing is easier browser proofs. So we have proofs in the browser using Snark.js but you have to like configure Webpack really specifically and it also uses like Zkey and Web assembly file and second Web assembly file for a curve. And it would be much easier if we had a tool that just sort of bundles all of that into a single Web assembly that we can run in the browser. Just pass in the signals and get the proof back. This would give us like free asynchronous operation as well. Yeah, it would just be a nice thing to have. Yeah, that's pretty much the end of the talk. We have a few events happening related to Unwrap. So first we have a Unwrap workshop on Friday at 10.30 a.m. That's going to be on the first floor at the ZK Community Hub. We also have a demo at Thursday at 3 o'clock in the same place. Big thank you to Zero X Park for putting on those events and inviting us to participate. And then if you want more information about Unwrap you can go to githumb.com slash Unwrap where you can scan this QR and it'll take you to our organization homepage where you can find documentation links links to our Discord and a link to a demo application that we have running on this protocol. Yeah, that's it. Any questions? First of all, cool presentation. Thank you for the information. I was wondering from a product standpoint or maybe from the user perspective, how do you explain the need to sequentially create new identities in order to remain anonymous and also if there's a way to abstract that, maybe save it in the session in the browser, you know, abstract the user away from such an involved mechanism of creating like a pseudo anonymous name every epoch. Sure. Yeah, so the reason we do this is because they need to have they need to be able to prove a leaf in the epoch tree to claim reputation. But I would say it's not as involved as it might seem. We can do this silently in the background in the browser. So like the user enters the web page and then the web page checks if they need to generate a new identity. And if they do, they generate a ZK proof in the background and submit it to a relayer and it's done. Yeah, there's not a way to make that less manual without changing the architecture of the system like pretty substantially, though. Hello. So how often do you see the state transition happen? Is it going to be per epoch or maybe they can be some trickery there to maybe avoid this heavy load in computation? Yes, the state transition happens any time you want to move to a new epoch. So if you are participating consistently, then yeah, it's every epoch. We can adjust or testers can set the epoch length themselves, though. So this could be like pretty short, maybe one hour or it could be like a week or it could be a month or anything like that. And we're also planning to make it so a testers can set the max and odds value to change like the number of keys the user has per epoch. So that would sort of make it so that the epoch proof is longer. But you also have like longer epochs. So there's sort of a lot of tuning we can do with that. Any thoughts about using DADs and VCs standards in this implementation? Any thoughts about using what? Decentralized identifiers and verifiable credentials from the W3C. No. No, I have to look into that. I'm not aware of actually that. But thank you. Thank you for that. Quick question. You talked about grad 16 verification after EIP for it for four. I would be curious to understand if you have like more detailed thoughts in particular two questions. I was thinking of like one if you don't have your, I guess, proof in call data and it said it's in the blob. You would have to verify there's some batch proof, right? Opening your God table in Omeol inside the snark and then doing recursive proofs or I guess what is the exact set up you're thinking of? Do you mean grad 16 or do you mean clonk? Either one, I guess. Right. So sorry, that might be a little bit hard to hear, but it's just like a question about how do we aggregate these proofs or how do we sequence them for aggregation? In a post EIP for four world. Right. Yeah. Yeah. So I sort of touched on it a little bit, but I didn't talk about it much. But one approach is users can send the public signals of the proof and then the hash of the proof onto the blockchain and then we form a hash chain on chain and then the aggregator is able to make a recursive proof using that data and only put a hash chain on chain. But this still involves like the aggregator receiving the full proof and then like calculating the hash. We honestly, we haven't gotten. We're not really close to doing that yet. Like we're proving, especially for like solidity provers are a little bit far out. But yeah, it's probably going to be some sort of optimistic system. So the user experience is pretty good. Thank you. Thank you all.


Let's do this, the most epic fight of Mirage. Yeah, I don't think you're gonna get Shadow any time soon. He's just got way too much Shadow damage. Oh no. My Shadow chance is only bad when I'm with you, uh-huh.  Like, if you're fighting this man, he has a high Shadow rating, so you're not gonna be getting Shad's too much. Yeah, they are. They're hella annoying. Especially with their Leviathans and Sirens and stuff. They're not as annoying as they used to be, because their, um, Sirens used to also remove Blades as well, but they don't anymore, which is good.  Absolute worst. Oh, it does remove Blades. What? Wow, okay. That's rude. And this is why I say again, Kings Isle, if you're gonna make bosses have spells, at least make the spells consistent, okay? If you're gonna change the spells, change them for bosses too, not just us, okay? Otherwise people are gonna get confused at what, why all of a sudden their Blades are gone. It's not fear. It's not fear at all. We do not appreciate it. Watch him bugs. Told ya! He loves bugs. What can I say? He just loves it. He gets the Shad and he's like, oh yeah, yummy, bugs, we're dead. He was gonna do it anyway, okay? It's not my fault. He was gonna do it either way. It's not my fault. He was literally gonna do it either way. Either way, the Cookie Crumbles, he was gonna bugs. Um, hit. Hail Mary, hit. Hail Mary. Um, yeah, I think we're, um, not gonna be able to do this.  So, yeah. At least he fizzled. That was 100% of bugs that he fizzled, so I'm glad of that. Really glad that he fizzled that one, to be honest. Unless this kills, we're dead. So, it's all up to you, Rose. Can you kill? It's got two blades in that. Faint, okay? Surely you can kill, right? Anacrit. I believe, I believe in this. I believe in the system of killing. Just kidding, just kidding. Oh, can he fizzle this? Oh my gosh, imagine. Nope, okay, that's sad. Imagine if he fizzled that. Well, I guess that's where we're ending today.


Welcome traders to this week's live market and trade analysis session with me, Patrick Munley on the new schedule and we're doing these sessions on Tuesdays now and we'll be looking at specific trade setups for the immediate trading week ahead. So before we get going today, as always, we want to adhere to the risk disclaimer most pertinent for today's presentation, the fact that the views and opinions expressed by me are solely mine, they're not indicative or representative, those held by Tick Mill UK or Tick Mill Europe Limited. Those of you who are here for the first time, a brief introduction to myself after I graduated from university. I left with some colleagues and went on to successfully co-found an exit consulting startup focused on C-suite executive search for technology businesses. Having a front row seat to the dot-com bubble, witnessing people make and lose a fortune in the markets, sometimes quite literally overnight, I decided to explore my curiosity for markets, some capital to play with and some time on my hands. I started day trading the S&P 500 or more appropriately day gambling at that stage, but after some early beginner's luck, I've managed to rack up some pretty solid gains. However, as is often the case, my beginner's luck ran out and as the market phase changed, I began to average down into what would become losing positions. Essentially, I took a six-figure hit to my personal capital and say this was a gut-wrenching and sobering experience is an understatement. So I really had to stand back and figure out if it's feasible for me to make a living from the market. So I decided to get serious about trading and sought out a mentor with an excellent trading track record. Working with my mentor for a period of 18 months was a time during which I had not just my technical game in terms of researching, developing, extensively back and forward testing strategies that crucially suited my personality and all of which were underpinned by a rigorous risk management approach. Most importantly, during this period of mentorship, I significantly developed my mental game.  So what does that actually mean? Well, it means I had to stop focusing on what I could make from the markets and start focusing on managing my mindset to allow me to consistently execute my trading strategy oftentimes in the face of negative feedback from the markets in the form of losing trades. But once you become process-orientated and you have a professional trading mindset and understand the true nature of trading, simply being a numbers game in which you're playing the probabilities, you lose that emotional investment and that hellish emotional rollercoaster ride of living and dying by the outcomes of individual trades. So I'm no longer concerned with the outcome of an individual trade or even a small string of trades. My focus on the next 100 trades, because I know if I focus on excellence in execution, my edge will demonstrate itself over an extended series of outcomes. My multi-strategy approach has delivered profitable annual returns since 2008. Since 2013, I've also been managing investor capital through managed account service again delivering annual positive returns. Since 2010, I've also mentored hundreds of private traders of all experienced levels from complete novices to former CME floor traders in developing the technical and mental skills to read consistent returns from the markets. In addition to my fund management and mentoring, I'm a resident market expert exclusively providing market and trading analysis to Tickmill clients. I provide an in-depth daily market outlook, breaking down the fundamental and technical drivers for the trading day ahead. I also provide daily technical trades setup videos for about two or three markets that I'm actually tracking and I share those through the Tickmill Trading View accounts and I'll post a link at the end of today's session for you to follow along with those for those of you who are interested. I also run Tickmill's E-mini strategy group. This is shared through a Facebook group that you can request access to. I post a daily trade plan outlining my pre-market thoughts for the trading day ahead, giving my bias for the trading day and specific action areas where I'm looking to engage the markets. These pre-market plans have delivered over seven and a half thousand points of profit since we launched the group in 2021. Second Tickmill strategy group I run is for traders who really want to take their trading to the next level. The Tickmill futures telegram group is a real-time environment. On a daily basis, I share in-depth insights, analysis and real-time trades. I also provide live commentary during the opening hour of the New York cash session, but traders can essentially see in real time how I dissect the markets and identify asymmetric trading opportunities. These sessions essentially act as a platform helping traders to develop a consistent approach to navigating the markets and those mental mind games that have to be mastered to make it as a profitable market operator. Okay, so that gives you a flavor of where I'm coming from. Let's jump into today's charts. And before we get going here, if you have any questions, feel free to drop those into the chat. Equally, if there's an instrument you'd like me to take a look at that I don't cover in my presentation here. You can also drop that into the chat and I'll give you a view on the chart at the end of the presentation. So let's start with the S&P 500, the e-mini futures contract I'm using. And we are still moving higher. We are making higher highs, higher lows. This is the hourly time frame obviously. What I'm looking for as we head into the day session are two areas of interest. One is going to be any test into the 3990 area. And there I watch the bullish reversal patterns to engage on the long side. I'm looking for a break through this trend line resistance. So I only move back through 4025. Next stop is going to be a test of the 4040 level. And if we can get through there, I'm actually looking for a trade up into these prior cycle highs at 4070. It's been a tricky trade of late as there's been quite a lot of consolidation in the markets generally. But we are starting to see a pattern emerge here now. This move from those lows where we tested on Friday has impulsive qualities. And we're looking at corrective move here now, 3990 all back through 4025. And I wouldn't be engaged on the long side. Looking for 4070s, watching how price responds at 4040s. And then if we can get through there, we have monthly projected range resistance up to 4100. At this stage, it's going to take a loss, a closing loss of 3930 to suggest that we are done on the upside for now. And then we'll be looking at lower targets down towards the 3900 level again. Moving to the NASDAQ. NASDAQ has a similar setup. Looking for a test here of 12626, which is the equality objective versus this current corrective structure, thus is this impulsive advance here. And we also have the 38.2% retracement coming just below 12600. So this is the area where I'll be looking for bullish reversal patterns to engage on the long side, looking for a test back up into the bull flag, trend channel resistance 12900. And I'd be expecting that to break. And for us to be looking to test up above 13,000. At this stage, in terms of negating the bullish structure, we'd be looking for a close back through 12500 to open up a new down to 12,380 as the next downside objective. Moving to the Dow Jones. YM. So last time out, we were looking for a test of this trend line resistance. I haven't quite traded there. So today, any corrective moves up into that area, I'm still looking for another leg to the downside in terms of the Dow Jones. I'm looking for us to test this trend line resistance in this broader triangle pattern. So we are anticipating resistance into the 32,770 area. And from there, we are looking for a move down to test support into 32,200. From there, watch for bullish reversal patterns and we'll be looking for a move then to extend to the upside. At the DAX. Last time out, we were looking for this move away from the high volume load to the downside that played out into the back end of last week, obviously. Now what we are anticipating is that we get a test into this trend line resistance again, and I'm looking for another leg to the downside into test support.  So what we're looking for is an equality objective. So 14,913 is the downside target against the resistance here at 15,420. Once you get into this area, we'll be watching for bullish reversal patterns again to re-engage on the long side, looking for the next leg to the upside to re-challenge that 15,700. At this stage, any close back through 15,450 will be an immediate bullish development. And we'll be looking to engage on the long side, say an upside objective back into test monthly projected range resistance at 15,700 on the upside. Moving to the UK and the FTSE. FTSE continues its corrective move here. So whilst we hold the swing low at the 73 to 99 area, I'd look for any pullbacks into this trend channel support now coming in with daily projected range support at the 7405 level for the high volume area as well here. Most of it against the 30 day volume profile look back. So any move into the 74 handle. Again, watch for bullish reversal patterns. We want to engage on the long side and I'm looking for a test of this equality objective which comes in at 7715. Now from there, we could roll over again to retest the price cycle lows, but that's going to be our immediate area of interest. So pullbacks into the 7400 level bullish reversal patterns engage on the long side tilting 7740s. At this stage, we'd have to lose 7338 to suggest the correction is actually already over. And then we'll be looking for a retest of the cycle lows down to 7203. Moving to the Nifty. Last week, we were looking for a test and equality test versus the swing low that we had in place last Thursday here at the 17,070 level. Didn't get that we rolled over. So we're now in a bare flag scenario to my mind. So any moves now into the 17,100 watch for bearish reversal patterns. I think we should see a breakdown through the support here now. 16,900 target to the downside is 16,000. Let's say 16,650 there before we look for another corrective leg to develop in the Nifty. Moving to the Hang Seng. So Hang Seng has an impulsive decline off the lows from the 20th of March. So you can see it subdivides nicely. It's taken out a few key swing highs here. So this move looks impulsive. Now what we were looking at last week was the potential for a correction to complete using the swing structure here, 19,390. Did get that. We've actually taken it out. So this is the first clue to me that the correction could actually be complete here. So what I'd be watching for as we as we head into this week is any pullbacks now into test the support at 19,760 watch for bullish reversal patterns there to engage on the long side. And we have an upside objective now and a quality objective at 20,496. So pullbacks into this trend channel support should find buyers. And as they do, then we're looking for an upside extension to target the 20,496 level. At this stage, only a close back through 19,500 would suggest the correction is complete. And then we'd be looking on the downside, targeting move to retest price cycle lows at the 18,849 area. TRT, Bond ETF chart is a little bit of a mess at the moment. But in terms of the structure as defined as it stands, we will be looking for a test of the 102 level, 102,66 versus this current swing structure. So I'd be expecting it to develop in something like this scenario. And then from there, we watched that 102, we've got a gap just below us at 10210. So any move into this area, we watch the bullish reversal patterns again to engage on the long side. And then the first port of call is always going to be that corrective trend channel resistance as it stands. So that would have us trading back into this area here at the 105,70s. Dollar index. So Dollar, we were looking for a test of the symmetry swing resistance last week. And we came, let me just close, just shy of getting a full test. So yeah, we can shy of getting the test. So what I'm anticipating now is the potential that we're in a more pronounced corrective phase, which we'll actually see us test lower and then set up another leg, which would complete into symmetry swing resistance. From there, I'd be watching for bearish reversal patterns to engage on the short side, looking for new lows to be made here. Now, the first clue for me in terms of the way I assess whether or not the correction is already complete would be any break of the 78.6 percent retracement of the current move. So any loss of 101,80s to the downside would be a bearish development. And I'd be looking at short positions, looking for that break back through 101,50s and looking immediately for a test of the monthly projected range support down to 101,20s. But if we can hold above this 78.6 percent retracement, you can see what I'd be mapping here would be another leg to the upside, which would take us into that symmetry swing resistance that we previously referenced. And oftentimes, once you've had one pullback that matches the scope and scale of the initial measured move that you're using, the second one tends to occur in more of a distributive fashion and over a longer period of time. So that wouldn't surprise me to see us consolidate, push up into this area and then get the next leg to the downside. But we already have a technical marker in place in terms of that 101,80. If we take that out to the downside, then we're immediately going to be looking for new short opportunities. Dollar C&H has a nice setup developing here. So from the lows that we got into the 6.8099 level, a nice five wave sequence to the upside took out just by a touch there, a prior swing high, which adds to the impulsive nature of the move. So I'm looking at three wave corrected move into test the equality objective versus the current swing high 6.8908. We are looking for 6.8651. As we test into this area, we watch for bullish reversal patterns here to engage on the long side. First target is going to move up into the range resistance and the weekly R1, 6.9131 is going to be the technical target initially for that move. So that's one that I'm immediately watching in the coming sessions has a nice structure and setup developing for a trading opportunity there. Moving to the Eurodollar. Eurodollar continues to hold the trend channel support. And while it does, I have an upside objective for the move here. Just thought of some for you. So we're looking at this equality objective, which has an upside target of 111.20s. First port of call for me is going to be a test of monthly projected range resistance. And so I'm looking at now any pullbacks into the pivot here 107.80s want to see bullish reversal patterns from there to engage on the long side, retest the prior cycle highs, then move up into that 110 monthly projected range resistance. And then we look for another leg to push up then into our target zone of 111.20s. At this stage, it would take a close back through 107.10 to suggest that the upside's done for now. And we'd be looking at a downside equality objective as the next downside target for now focus is on the upside sterling getting close to our target. We have an equality objective at 124.11s. So for me at this stage sterling either any pullbacks into the trend channel support or any close back through these prior cycle highs, 123.40s, we want to engage on the long side, looking for that test into 124.13. What we've then been looking for or what I would be looking at would be any pullbacks then. Let me just change this with. So if we get an immediate extension up into our target zone, any three wave corrected pullback back into these prior highs would also be an entry point because what we're actually looking for is move then up into 125.127s as the next upside targets for sterling, certainly while we maintain this trend channel support in place. We are just looking at long positions in sterling for now. We also on the weekly timeframe have a 127 trend channel resistance to work to also keep in mind dollar yen. Looking for another breakdown here. If we get a close through channel support, so any move back through 130.40. Once again, want to be involved on the short side initial target back into that 129.60. But what we're looking for then is a test of monthly projected range support 129.12 and then onto weekly projected range support at 128.60. So that's the target zone for this move if we lose support through 130.40s. Singapore dollar. Again, I was looking for another leg to try and get into this trend channel resistance, but in line with broader dollar weakness here, it looks like we're rolling over target for me. It's going to be a move down into weekly projected range support from there. I watch for bullish reversal, sorry, bullish momentum divergence, i.e., we're making new lows in price, but we're not getting new lows in the momentum study. And then that should set up a corrected move before once again, looking to the next leg to the downside in terms of the Singapore dollar. We have monthly projected range support as low now as 130.90. So there are some amounts of juicier downside targets in the same dollar. The Aussie and the Kiwi are kind of in no man's land still, very much sideways chart. So I don't have a specific trade as such. I'll wait for further data before I'm looking at any fresh patterns in those. Gold, I'm looking at a quality objective. Let me draw it in for you guys. So we have this structure here. So I'm looking for Gold to test 1928 to the downside. Central will do a three-wave move here and then get that extension into that 1928. From there, I'm certainly paying attention, watching for bullish reversal patterns to engage on the long side as this essentially would complete a correction versus this impulse. And then we can start the next leg to the upside in Gold. Firstly, obviously looking at the corrected trend channel resistance. And then on through that $2,000 level is what I'm watching for in Gold. Crude oil. Good setup. Nice setup developing here in crude. So we had this leg to the downside, which is certainly impulsive, as you can see, subdivided nicely. And we now have a pretty clear ABC pattern developing. So I'm looking for any move in crude into 74, 13, 61.8% retracement of the last leg to the downside, 64, 60. So we watch for bearish reversal patterns in this area. First target is going to be trend channel support down into the 69 handle. But I would ultimately think we retest the pivot here and potentially break it, as we still have a target on the downside of $60 in crude oil. So this could be a fantastic entry into this possible trade setup. So pay close attention to how we trade into 74, 10, 74, 60, especially if we make a pop higher here in price, but we don't get a new high in momentum study. That will give us divergence, adding to the weight on the trade there. And then we've got this bearish setup in place to take advantage of. So pay close attention. That's one that's going to be on my radar heading into today and tomorrow. Let's wrap things up here. Bitcoin looking for, we've got an equality objective, 26,360. And then we still have that 30,000 target on the upside. Equally at this stage, any close back through the pivot here, 28,240 new pullbacks to get into that 30,000 target. At this stage, it would take a closing loss of that 26,300 to open 25,800 and then 25,229 as the next downside targets in Bitcoin. But for now, the structure looks corrective versus this last impulse to the upside. So I'm looking for, looking for responsive buying here into this 26,300 zone for a 30,000 target in Bitcoin. Let's take a look at Apple. Any pullbacks in Apple, we are getting a little bit of pre-market weakness here, which is good. So trading 157s, I'm looking for any pullbacks into the 153 to 152 area. I'm looking for bullish reversal patterns there to engage on the long side. My target is that 170 weekly trend line resistance in Apple. So very important there that if we hold this 152, 153, then we look for that 170 level as the upside objective in Apple. And Tesla, last but not least, Tesla potential for a corrective move to the downside to unfold. If we take out this trend channel support and get a close through the 187 handle, I want to be on the short side for Tesla against the $200 level, has a 146 downside objective, and before we then could set a base for the next leg to the upside in Tesla. So those are the charts that I'm watching as we head into this week, certainly paying very close attention to that crude oil chart, the gold chart, and these equity markets, obviously the E-mini S&P, I've given you very specific levels there to pay attention to. I also really like that dollar C&H trade. So that's one that I'm paying close attention to as well. So are there any questions? Richard, what are the settings of the oscillators? I will show you exactly what they are. So those are the settings. This session is recorded, Richard. So the recording will be posted and you'll be able to come back to these settings via the recording. So one of them is the 14343 and then the longer term one. So basically what you've got on here to one degree or another is the fast oscillators are representing the H1 sine wave, I guess, whereas the slower one is representing between a four and a six hour oscillation. So that makes sense, Richard. So you can revert back to the video once it's posted on the Tick Mill YouTube channels and you can get those exact settings for your reference. Any other questions, guys? Okay, if there aren't, I'm going to wrap this session up here. I will just post into the chat those that are interested in accessing the daily trade plan for the S&P 500 or the E-mini S&P 500. We've got that. I'll also give you the trading view link for those who want to follow along with the daily. Yeah, Richard, volumes do come off into Easter or any holiday session. The other thing you want to pay attention to as well, which is quite a common phenomenon in markets that not many, well, I guess people with less experience aren't aware of where you have a strong trending market. So in markets that have been trending strongly in that week in the run up to a major holiday, Easter, Christmas, etc., in that week, you will often see counter trend moves develop as people book profits ahead of the holidays. And then when we come back from the holidays and the volumes return, you'll see those trends likely re-emerge. So that's just a market phenomenon that's worth being aware of. Okay, any other questions? Can't see any coming through. So if there aren't any other questions, I'm going to wrap this session up here if you've found it useful and we will reconvene same time next Tuesday. As always, traders, plan the trade, trade the plan, and most importantly, manage your risk. Until next week, thanks very much.


Okay, hello everybody. This is the CircuitPython Weekly Meeting for July the 5th. This is the time of the week where we get together to talk about all things CircuitPython. My name is Tim, and I am sponsored by Adafruit to work on CircuitPython. CircuitPython is a version of Python that's 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 any time by going to adafruit.com. We hold a meeting in the CircuitPython Dev text channel, as well as the CircuitPython voice channel. The meeting typically happens on Mondays at 2 p.m. Eastern, 11 a.m. Pacific, except when it coincides with a U.S. holiday such as this week. We're having the meeting on Tuesdays, generally if there is a U.S. holiday on a Monday, then we will bounce it over to the Tuesday, but keep the same time of 2 p.m. Eastern, 11 a.m. Pacific. There's a notes document that accompanies the meeting and recording. The notes document contains time stamps to go along with the video. So you can use the dock to view only the parts that you are most interested in. The meeting tends to run 60 to 90 minutes, depending on how many folks are around. So you can skip around to the parts that you are most interested in using the time stamps in the notes dock. After each meeting, we'll post a link to the next meeting's notes document inside that CircuitPython Dev channel on Discord. Click the pinned messages there to find the latest notes dock throughout the week. And you can always add status updates, hard reports, and in the weeds topics throughout the week, if you think of them. So the meeting will be held in five parts. The first part is community news. This is going to be a look at the CircuitPython and Python on hardware in the community. It's a review of the Python on microcontrollers newsletter, or typically it's a preview of the Python on microcontrollers newsletter. This week it has of course come out because we're doing the meeting on a Tuesday, so we'll be looking at some of the goodies from that newsletter this morning. The second part is the state of CircuitPython, the libraries in Blinka. This is a statistical overview of the entire project, a chance to look at the project by the numbers separate from what we're all working on. The third part and the first of our round robins is the hug report section. This is an opportunity to highlight good things that folks in the community are doing. Take time to recognize awesome folks in our community and beyond. The next part is status updates. This is the second of our two round robins. Status updates is an opportunity to sync up on what you've been working on. Take a couple of minutes to tell us about what you worked on in the last week and what you intend to work on until the next meeting next week. And then the fifth and final part is in the weeds section. In the weeds is an opportunity for more long form discussions. These discussions can come out of status updates or they can be identified ahead of time and listed down in that in the weeds section in the notes document. All right with that we will get going with community news. Let me get the first timestamp here. Here we are. So first up in news this week is the Raspberry Pi Pico W. On June the 30th Raspberry Pi launched three new members of the Pico family. The Raspberry Pi Pico W is priced at six dollars and brings 802.11n wireless networking to the Pico platform while retaining complete pin compatibility and adding an Infineon CYW43439 wireless chip onto that Raspberry Pi Pico. So check out the Raspberry Pi blog. I believe there was an Adafruit blog post as well about the Raspberry Pi Pico. Next up is a project that was shared in the newsletter this week that caught my eye. This is a RGB hexagonal keyboard powered by CircuitPython. Let me get a timestamp in there. This is a beautiful custom keyboard with colored hexagonal keys. The key switches are Kale Chocks. The key caps are Custom Resin. And it's powered by a solder party RP2040 stamp with a custom CircuitPython build. And there are links here to Twitter as well as the firmware that runs that keyboard. Next up is this week on the Tom's Hardware piecast. We'll feature CircuitPythonista Deborah Ansel. So Tom's Hardware piecast video cast week has a special guest, Deborah Ansel, at GeekMom projects to talk about her fantastic range of LED infused projects from bags, wearables, robots, blogs, and more. Chances are GeekMom projects has found clever ways to add RGB LEDs to it all. So check out links there to Twitter and YouTube. So that is it for the review this week. And just a reminder, these items came from the CircuitPython Weekly newsletter. This is a community run newsletter that is emailed every Tuesday. The complete archives are available on AdafruitDaily.com. It highlights the latest Python on hardware related news from around the web, including CircuitPython, Python, and MicroPython developments. You can contribute your own news or projects. There's a couple of ways to do it. Probably the best is to go ahead and go to GitHub and submit a pull request if you're familiar with that process. If you aren't, that's fine as well. You can also tag Ann on Twitter or with, excuse me, using the hashtag CircuitPython on Twitter. And then if you're not using Twitter, you can also just email to cpnewsatadafruit.com to send those news items in for inclusion in the newsletter. Okay. So next up is the state of CircuitPython, the libraries, and Blinka. So I will read the overall section. This week we had 22 pull requests merged across the whole project from 14 authors. Let's see. I did not go through and highlight ahead of time, but a couple of names just skimming through here that don't look familiar to me are Lisa Apple, let's see, Julian Ortiel, Klox, RTYLA, XUHOW, XUHOW, and TC Franks. Those are folks that are perhaps newer or maybe less frequent contributors. So thank you to all of those folks as well as all of our standard contributors ongoing. We had eight reviewers this week. Looks like the usual suspects there. So thank you again to all of our reviewers. This week we had 18 closed issues by eight people with 27 opened issues by 21 people. Again, that's overall. So next up, we will hear about the core. Scott, are you available to tell us about the core this week? Sure. Happy to you. Thanks for hosting, Tim. So for the numbers for the core, we have 14 pull requests merged from eight different authors, Lisa Apple and XUHOW are new. So thank you to them. We had five reviewers. So thank you to all of our reviewers as well. You make it possible to support eight authors and more. We have 16 open pull requests. Four of those are 100 days or older. So please take a look and try. If you're involved in any of those pull requests, please take a look. There's a number that are for specific boards. So maybe if you want to start contributing to circuit Python, take a look at those boards and see if you can do any testing to get those in. Issues wise, we had six closed issues by two people, 11 open by 10. So we're up five for a total of 536 open issues. As we get issues in, what we do is we kind of triage them into milestones. And that gives kind of prioritization for eight fruit funded folks within circuit Python, the circuit by the community. We have two open issues for 73X. Those are kind of urgent stable fixes. We have 50 open issues for 8.0, which is pretty large and we need to go through them. At some point when we're close to releasing 8.0, what we'll do is we'll go through that list and then fix the ones that we decide to leave there. We also have 459 long-term issues. Those are things that are not a priority, but would be nice to have at some point. We also have two issues not assigned to milestones. So we'll take a look at those. And that's it for the core. Awesome. Thank you, Scott. No problem. Next up, we will send it over to Katnay to tell us about the libraries. Hello. All right. So this section applies to all of the eight fruit circuit Python libraries, which is everything that starts with eight fruit underscore, circuit Python underscore, as well as a couple extras. Across all of those repositories, we had eight pull requests merged from six authors. I missed actually which ones Tim wrote off, but there are four names in here I don't recognize, so that's great to see new contributors and six reviewers. The oldest pull request merge was 19 days old, so it's good to see we're still keeping up with older ones and the rest were more recent. That leaves us with 31 open pull requests, which is up from last week, but that's good to see that people are still contributing and I think at least six of those are waiting for me. We had 11 issues closed by seven people and 16 opened by 11 people, leaving us with 645 open issues. 175 of those are good first issues. If you're interested in contributing to circuit Python on the Python side of things, check out circuitpython.org slash contributing. It'll have all this information and more. If you're new to everything and you want to contribute code or documentation, check out the good first issues. And don't worry about learning Git and GitHub. We have a guide and also we're always available on Discord to help out. We want to make sure you can contribute in a way that works for you. If you're looking to get started reviewing, there is a list of open pull requests. You can check those out, leave a comment, test it if you have the hardware. Let us know if you find any issues or if it looks good to you. This is always helpful and we will, once you're comfortable with that, we can talk about leveling you up to our review team. In terms of library updates in the last seven days, there were no new libraries, a short list of updated libraries in the notes that I will not read off, but those are available there if you're interested. And that's what I've got. Awesome. Thanks, Kenny. Next up, we will hear from maker Melissa about the state of Blinka. Hello. So Blinka is our circuit Python compatibility layer for micro Python, Raspberry Pi and other single board computers. And this week we had zero pull request merged. There are currently four open pull requests amongst other repositories. And there was one closed issue by one person in zero open by zero people leaving a net of 76 open issues. There were 8,000 and 63 Pi wheels downloads in the last month and we are currently supporting 89 boards. And that's it. Thanks, Melissa. Right. So that gets us through the state of circuit Python, the libraries in Blinka's. So the next up will be the hug reports section. And again, hug reports is a chance to highlight folks in the circuit Python community and beyond for doing awesome things. As mentioned, this section is held as a round robin where I will start and then we'll go down the list alphabetically. If you haven't already, please do go ahead and add your notes to the document. And if you have your notes in there but can't speak or would prefer not to speak, just put a note that says text only and then I will read yours when we get to you in the list. So I'll start it out this week. Let me take a time stamp. Hug reports this week to Scott. Thank you for working on the web workflow. I'm super excited about the possibilities that this brings and also helping me get it up and running on my end the other day on the deep dive. Next up, thank you to Neridoc and Tectric who both put in some fixes for CERCUP in the past day or so. So thank you to both of those folks. And next up, I will send it over to Dan. Okay. Thanks. Repeating. Thanks to Neridoc for the quick fix to CERCUP. Thanks to TAC who's working on multiple LUNs so that for instance, if you plug in a Pi portal, you can see both the SD card and circuit Pi. I tested it. It works okay on Linux and macOS. On Windows, it doesn't work that well and I'm considering what to do, what we might do about that. But that would be very nice if you could see more than one file system when you plug in a board. You have to mount the files. And thanks to Scott for working on the web workflow. I tried it out and approved it and it's under debugging right now. Okay. Awesome. Thanks, Dan. Lots of exciting stuff in the works. Sounds like. Next up, we will send it over to Jeff. Hello. I'm still not really back in the swing of things yet. So all I'll have is a group hug. Thank you. All right. Thanks, Jeff. Next up is Katny. Hello. So first up a hug for Tectric for working through the process to move from setup.pi to pyproject.toml. To Todd Bot for explaining a Python concept in a way that I was able to understand and for Neridoc for helping explain the same concept. To you, Tim, for writing and continuing to help with the GitHub Action status late code. To Rose for designing a 3D printed stand for the tricolor USB tower light. To Tectric again for putting in quick fixes for bugs. To my dad for agreeing to take the lead on building a room in my basement for stopping by to measure everything. Get an idea what we're looking for and putting together a parts list for the project. To Rose again for putting so much effort into the mailbox project receiver code and persevering in the face of multiple obstacles. To Jeff for a lovely chat and a great hug. All right. Thank you, Katny. Next up we will send it over to Kmatch. Thanks, Tim. I've got one hug this week to BablockB, a user on GitHub, for a pull request performance update to the Display Shape Sparkline library which improves how it redraws the performance of that and it's more flexible. Thanks a lot. Nice. Thanks, Kmatch. I'll have to look into that when I saw that go by, but I haven't had a chance to see it yet, but that's great to see. Next up is Liz, BlitzCityDIY. I'll hug her for this week for Melissa for adding multiple display support for the HT16K33 LED matrix driver. Currently using two of them as a GUI for a project and it's working really well. And a group hug. Awesome. Thanks, Liz. Next up is Maker Melissa. Hi. A group hug to everyone who kept things going while it's out for the last few weeks. And that's it. Thanks, Melissa, and welcome back. Next up is Mark, who is missing the meeting today. So I'll read Mark's. Mark has hug report for Toddbot and Paint Your Dragon for examples and tutorials that were used to make the Google EIs project work. I haven't seen that one yet, but that certainly sounds like a lot of fun. And then next up, a group hug. Mark says he's sure that he's missed thinking some people over the last couple of weeks. And so then next up is Neridoc, who's also text-only. Neridoc has a group hug for all the group hugs I didn't give in the past, to FOMIGUYME for interactive streams, to TechTrick for the PRs and reviews on CIRCUP and other things, to DanH for all the discussion and responsiveness on CP issues and PRs, Qcatny, Scott, and PT, et cetera, for the opportunities to work with Adafruit. Excellent. Thank you, Neridoc, for your hug reports. And then next up is Tammy Makes Things, who's also text-only today. Tammy has hug report for DanH for a speedy response to async.io import error that Tammy ran into last week and a group hug for everybody else. And then next up is Scott. Hello. For me, a hug report to Neridoc, DanH, RetiredWizard, and FOMIGUYME for testing the web workflow. Awesome. Thank you, Scott. And then rounding out hug reports this week is TechTrick, who's text-only. TechTrick has a hug report for the team behind Dependabot for neat code that was used for parsing arguments to setup function inside setuppy files so that TechTrick can automate building the new pyproject.toml files and then a group hug as well. All right. So thank you to TechTrick, as well as everybody else who participated in hug reports. Getting into our next section here, status updates. Let's take a timestamp for that one. Status updates is our time to sync up with what we're doing. The section is also held as a round robin where I will start and we'll go through the list alphabetically. Everyone will have a chance to participate. When I call on you, take a couple of minutes to talk about what you've been doing since the last meeting and what you'll be up to until the next meeting. This is also an opportunity to provide tips and tricks relevant to what people are working on. And if a discussion does start to become too long, we can always move it down to in the weeds section at the end. So I will get us started here on status updates. Last week I tried out the newest version of the web workflow and I got the edit page that I began working on much earlier in development back up in Functional again. So playing with that was a lot of fun. I still have a couple of tweaks I want to make before I get a PR in with the edit page. The other basically main thing that I spent time on this week is the octopus game and watch game that I'm building for PyGamer. So at this point the all the core objects inside the code that control the more complex aspects of the game are completed. I have those classes functional and the most basic game mode is implemented. The stuff that I'll be continuing on to this week is actually rounding out the second game mode. All of these game and watch games had two modes in addition to the watch as well. So I'll be working on the second game mode and just fleshing out all of the specific behaviors and interactions with the different ways that those modes work. And then also I need to get the first draft of the learn guide out of my head and down onto the pages. So that's what I've got in the works this week. And next up I will pass it over to Dan. Okay thank you. So this week I tested and reviewed the web workflow from Scott and I've been working on ESP importing sort of Python to play in ESP32 chips. Those suffix and specifically targeting the ESP32 v2 feather. And so I have the REPL working. I'm debugging because there's no native USB on this. You have we have to use something like THANI or other utility programs to upload files to this board. And when I try to do that I have all kinds of problems. So I'm debugging that right now. It probably reflects some other problem with the port and I haven't narrowed it down yet. But I'm doing all kinds of things like logging to an alternate UR port and things like that. So I hope to get that working at some point enough so that we can do a pull request and then have people try this out. Okay that's it. Thanks Dan. Exciting news in the world of ESP32 for sure. Next up we will hear from Jeff. All right. So last week I was still getting over being sick so I wasn't particularly productive. I did a couple of small pull requests, one of which was merged. It changes the way we install the compiler tool chain for the ARM targets. It doesn't make a real difference. It just simplifies the GitHub workflow as a tiny bit. And then I did a small amount of work on the RGB matrix for the ESP32 S3. And because I was under the weather I wouldn't read too much into anything exactly that I discovered. But it looks like right now the support appears to be built into Serger Python but it just crashes. Paint Your Dragon made a new driver that uses the LCD peripheral of the ESP32 S3 to drive an RGB matrix. And I tried to convert that code into Serger Python and I got weird results. So this week I will be continuing to look into that and under the heading of Not Serger Python I've been looking at the recently landed RP2040 support in QMK which makes it easier to make keyboards out of RP2040 boards like the KB2040. Looks really cool. No Serger Python inside so not exactly relevant unless you like keyboards. Anyway that's what I got. Awesome thank you Jeff. Next up we will hear from Katny. So last week began working on the GitHub Action Status Light Guide completed most of the text content. Assembled the tower light and stand. The tower light used in this in the status light guide has a USB cable coming out of the bottom but the base has no clearance for the cable so as is it sits on an angle and it's wobbly. Rose designed a bolt-on stand with a track for the USB cable and now it sits super solidly on a flat surface. This week I need to finish this guide. It needs a few more screenshots and images. There are five PRs outstanding for the first five libraries that we want to move to the pyproject.toml for testing. I need to go through and approve those. There's a new feature in learn I need to test. I'm going to be setting up discord auto mod this week and then also go there's a few PRs that are open that I'm tagged on that are waiting for me that I need to do some things to move them forward. This past weekend reduced the mailbox project Laura receiver py code down to only making the LED blink and showing you got mail and the bonnet OLED and traded SD cards with my dad so now he has a simple working version of the mailbox notifier. He's very excited and will sort out sending him phone notifications when we have time. There were a ton of obstacles that was some of them were very obscure things that we had to figure out and so we've had to change up how we were going to do that multiple times now. Hopefully we can sort something out soon and begin emptying the majority of the basement into the garage or into other parts of the basement to prep for partitioning off a section into a room and that's what I've got. All right. Thank you, Kenny. Next up is K match. Good. Thanks, Tim. Continue work on touch screens and considering what is required and actually what makes sense to add into the circuit circuit Python core for touch screen or reading touch screen events with the particular objective of how to reduce latency between touch and how you can respond to it. I reviewed the event queue that's used in the keypad module so that looks like a good framework to use and so the next steps towards understanding whether this makes sense is to see whether adding an event queue using a touch screen interrupt pin and then a subsequent I2C call to get the touch data makes sense and then in typing this it reminded me of some discussion related to the request for interrupt or async operation was a generic question whether a generic capability of including or defining an interrupt pin to trigger grabbing some I2C data into an event queue makes sense as I think Dan proposed quite some time ago related. I may raise an issue just to get feedback on that generic capability and get feedback of whether this makes sense. So that's the first item. The second one is somewhat related but towards assessing whether this latency can be improved by adding an interrupt is also related to the display performance and a generic question feel free to add feedback in the discord if you have an answer but I can't see a way to measure the display IO refresh rate so if anybody has any hints on how best to do that and sort of Python I'm all ears. Those are my two items. Thanks. All right thanks Kimmich. Next up we will hear from maker Melissa. Hello. Last few weeks I updated the HT16K33 library to accommodate spanning text and graphics across multiple displays by only passing in multiple I2C addresses and a list of tuple and recovering from foot surgery. This week I am back and I'm going to finish I'm finishing up on catching up on emails and then I'm figuring exactly what I'm going to work on but likely will be on the web work flow and code.circuitpython.org enhancements and that's it. Awesome thank you maker Melissa. Next up is Neridoc whose text only so I'll read. Last week Neridoc made a library manager think Circa but for the web workflow maybe next on show and tell. Also last week worked on a fix for Circa crashing on unidentifiable MPY files. Moving into this week add a property to .mf to change the BLE default name for the BLE workflow. User code can set it itself so this would allow like a configuration to set it from a file it sounds like. Next item this week a PR fixes to the web workflow cross origin cross origin restriction preflight implementation and then adopt a cat. It's been almost two years without a cat in the house so that's definitely going to be a lot of fun. I imagine cats are a lot of fun to have around for sure so that sounds cool. Thank you Neridoc. Next up is Tammy makes things who's also text only. Tammy says last week she started working on a project to display CI and CD status for work and that's continuous integration and continuous deployment systems. On a matrix portal in for the code currently is not functional because of a problem I ran into with a sync IO on that hardware but most of the code is written preparing to give a circuit python demo at the desert pie meetup on Saturday July 9th. This week still hoping to get back to a regular streaming cadence work and other considerations permitting and then the circuit python demo at that desert pie python meetup. So thank you Tammy and then next up we'll send it over to Scott. Hello okay so not a lot of details but the web workflow is checked in. If you want to try it an s2 or an s3 with the auto wi-fi credential set plus the circuit pi web API key will get you going with that. It's not perfect for sure so if you find issues please either fix them like Neridoc sounds like they're doing or file issues. I know for a fact that I have some like task socket management stuff that I still need to work on and thank you to retired wizard for talking or filing some issues about that. But mainly what I'm working on is adding serial access by allowing web sockets. So web sockets are the way of doing serial over it starts as an HTTP request and then switches to web socket. So I've got all of that handshake stuff working and now like I've just got a manage like holding on to the socket and like writing stuff to it and reading from it that sort of stuff. So yeah mainly working on the serial via web sockets. Nice exciting stuff for sure thanks Scott. Next up is Tektrick who is text only so I'll read them. So last week Tektrick fixed documentation issue in the DPS 310 library that had wrong units fixed an issue with circup where the latest version of setup tools was incompatible with a version of append dependency working on moving the libraries from setup.py over to use pyproject.toml instead created pyproject.toml files for a few libraries to begin testing their use make sure that users aren't affected when they use pip to install those libraries parsed consolidated and cleaned the requirements for each library built prototype pyproject.toml files or pyproject.toml.disabled files for each library to prepare and test automating the transition for the libraries when it comes time to do the conversion on them next week this week for Tektrick is going to be deploying the pyproject.toml test libraries accounting for possible optional dependencies for libraries if we choose to use them inside the pyproject toml's finalizing the PR to make touchpads iterable inside of the circuit play ground library late hug yeah late hug report group hug to dan for making those pins hashable for making pins hashable generally speaking and hopefully some more circuit python core documentation additions this week as well for Tektrick all right so that rounds out the status updates so the fifth and final section of the meetings meeting is the in the weeds section this is an opportunity for more long-form discussions that either come out of status updates or have been identified ahead of time if you have any in the weeds topics and you have not already added them down at the bottom please do so well we have one in here now so we'll discuss that one but if anybody knows of another please go ahead and throw it in so it looks like our first in the weeds topic is from catney catney do you want to tell us what you got yeah so i wanted to talk about circuit python day it is august 19th this year it will be a virtual event if you're interested in joining in hosting something or being involved in any way please reach out to me by sending an email to circuit python day at adafruit.com we have had other people host a show and tell in a different language for example you can send in short videos of you know projects you've worked on or we may actually host a show and tell on that day as well this is still early days in planning so we don't know yet you know what exactly is going to be going on but we want to hear from other folks as to what they might like to see or what they might like to do or how they might like to contribute so i wanted to put that out there i will probably be bringing it up every every meeting until it happens just as a reminder and for folks who maybe miss individual meetings so that they also know so yeah if you if you have any ideas or or ways you want to contribute and we can try and figure out a way to make it work like i said send an email to circuit python day at adafruit.com and that's pretty much what i've got awesome thanks catney it's cool to see it come up on the calendar and definitely looking forward to it i'm sure i will stream at some point but i'll have to work out the details later on yes you will you're already on my list okay it looks like we have no other topics that popped up for in the weeds so we will go ahead and move on to the wrap up uh so let's see this has been the circuit python weekly meeting for july the fifth 2022 thank you to everyone who participated if you want to support adafruit and circuit python and those of us that are paid to work on circuit python please consider purchasing from the adafruit shop at adafruit.com the video of this uh meeting will be made available on youtube at youtube.com slash adafruit and the podcast will be available on major podcast services it'll also be featured in the python for microcontrollers newsletter uh go to head over to adafruitdaily.com to subscribe to that um the next meeting will be held on monday as usual at 2 p.m eastern 11 a.m pacific and that is on the 12th uh no that is on the 11th excuse me the 11th of july um the meeting is held on the adafruit discord which you can join by going to adafruit.it slash discord to be notified of meetings and any changes to the day or time you can also ask to be added to the circuit python easter's roll on discord and you'll get a ping uh any time that those meetings do change um so that's it for today thanks again to everybody and we hope to see you all next week thanks everyone


Hard in the pun, but 2021 was a boom of a year for wrestling music, especially in AEW, where much of the credit belongs to hit the music favorite Mikey Ruckus for contributing some amazing anthems at an alarming rate for young and also existing talent. However, there are some songs and the wrestlers who use them that have yet to get that big push to finally break out. But this might be their year, because I'm Kevin Callis, and here are Kevin's 7 AEW Entrance Themes Poised for Greatness in 2022.  With a little more in-ring training and mic work, AEW has their fifth pillar of the future. And the buzz that Hook's debut created on the December 10th edition of Rampage was all the hip and cool adjectives that the kids used these days. It was lit, dope, sick, smooth, and definitely not mid. The 22 year old son of ECW original Taz, Hook was sent and he walked down the ramp for his first ever match having American rapper Action Bronson single The Chairman's Intent as his entrance music. If you're not familiar with Bronson's work, most every verse he raps about is devoted to one of three things, food, the opposite sex, and professional wrestling. And most of them contain all three. This song made all the hookers out there pop huge as what you're gonna do when Hocomania runs wild on you, brother. Pardon our French, but hey, Seuss Christo, what a physical specimen Jade Cargill is.  Now despite her limited experience inside the squared circle, the jacked Jade has screamed star. Since she first stepped foot out onto the AEW stage and performed incredibly in her debut match with none other than Shaq Diesel from her ex-men's storm inspired entrance to her unmatchable strength and agility, Jade definitely has that it factor along with a charisma that should make her a future AEW women's champion. And at the time of you watching this, she might even be the inaugural TBS champion. But let's take a closer look and listen at her impressive theme song. It's truly epic with a mesmerizing guitar reminiscent of something you'd hear from old school WCW, a storm is certainly brewing and her name is Jade Cargill. AEW's resident blowhard Maxwell Jacob Friedman is without question the heel of all heels today.  And that's a shoot marks. MJF is not a gimmick. MJF is MJF 24-7-365, and you have to respect his commitment to being a true heel in an era when Kayfabe is all but dead, his despicable acts get a rise out of everyone, and yet when you think about it, his better-than-you theme song by these wolves featuring AK-40 Devon, it's kind of generic and douchey. However, in reality, that's quite fitting for the salt of the earth. Truth is, this theme has a sick beat and is a complete bop that will put you in a New York state of mind as we all watch MJF continue to talk the talk and walk the walk and be must-see TV now and for the foreseeable future. Speaking of MJF, what we have here is a headbanger extraordinaire that signals the arrival of Mr. Mayhem, boasting incredible power and athleticism. Wardlow is a beast that's proven himself to be one of the rising stars of AEW.  Now, according to Ruckus, this is war is a spin on disturbed meeting slipknot, two heavy metal bands whose shredding riffs will melt your face and make your ears bleed. Not that we recommend cranking up the volume to dangerous decibel levels where that can occur, so kids, please don't try this at home. This theme is a banger that tells you all you need to know about AEW's first hard-hitting P-P-P-Powerhouse. It goes without saying that AEW's talent pool is second to none right now, boasting a roster packed with established legends of the business, certified indie darlings and talents rising from the ground up. The all-elite EVPs aren't exactly stuck like the WWE is when it comes to hand-picking their next top guy or top girl. There is no shortage of rising talent just waiting to break out, and we for one would put Powerhouse Hobbs close to the top of that list. Prior to joining Team Taz, Will Hobbs was a babyface with a theme entitled, hashtag willpower. However, when he became a full-fledged, bad-ass assassin for the Orange and Black attack, he was rechristened to Powerhouse, and thus his song became P-P-P-P-Powerhouse. This is the sound of a man on a mission, no, yeah, okay, and a force of nature looking to dominate in 2022 as one of the few big men in AEW. Now some of you might think that this theme has already reached a goat level, but hear us out. Who doesn't love Hangman Adam Page these days? Men all have man crushes on him and his cowboy-ee-ish. Women all wish he could crush them with his cowboy...and wrestling fans have embraced the anxious millennial cowboy as the de facto babyface AEW world champion. After having spent a little while riding many a mile, Hangman has gotten to where he is today thanks to amazing character development that has featured an incredible personality arc. But it's his unique wayward Western theme song Ghost Town Triumph by Vincent Padula that truly captures all of who Wangman is and what he stands for. The lone solo guitar intro blossoms into sounding like a classic Clint Eastwood movie theme, casting a certain aura over the arena every time it plays. Page has been an underrated workhorse his entire career, but now is the time to carry the company on his horse back. Everything about FTR screams 1980s wrestling. These two tar heels from North Kaka'laki are from the heart of Crockett Country, so it's no surprise as to why they so strongly embraced the throwback style of NWA tag team wrestling. And when beautiful Bobby Eaton passed away during the summer of 2021 at the age of 62, wrestling fans young and old mourn the loss of one of the greatest tag team wrestlers to have ever laced up a pair of wrestling boots, wanting to pay homage to one of their fallen heroes Dax Harwood and Cash Wheeler initially repped the classic striped Midnight Express themed trunks. But these living legends took it to another level with a little help from Ruckus and came up with a juicy, new, synth wave inspired remix of the Midnight's original theme song. 2022 will be the year that FTR will be remembered as the tag team who stepped up and honored a bygone era, giving it all the respect it deserves in a new and radically different frontier of the business. Top guys, out. So what do you think? Did we get this list right or wrong? Leave a comment down below with your thoughts and don't forget to give this video a massive thumbs up if you enjoyed it and go on and share the video with one of your friends who you think might also like it because it really helps our channel grow and reach new people. Also, if you haven't already, please consider subscribing for weekly wrestling theme song content and don't forget to follow us on social media and we'll see you next time. Now, hit the music.


Howdy Moz fans. This is incredibly exciting to be with you here today for Whiteboard Friday. Most of these help you with really cool strategic and tactical stuff and today we're going to be optimizing something super different. It's your career! It's the most important thing in the world. This talk is going to be especially useful for people in the beginning and middle stages of their career. Perhaps you've just started out in your journey in SEO. Perhaps you've started to take on some more challenging work. Perhaps you're given more areas of responsibility and you're trying to understand how do I get to that next step? You're thinking about how do I go from maybe being a specialist to a manager to a senior manager or maybe even better to a director or a vice president in an organization. For me, this was a really exciting journey. I want to share with you some thoughts that I've gathered along the way in the hopes that you too can have a little bit of the same kinds of outcomes that I've been able to do. The steps are pretty simple. The execution takes time and a lot of dedication and a lot of effort. So if you're a strier, a trier, someone who just really has a lot of energy and drive, you're going to get a ton out of this today. The first thing that I want to say is that if you were just slightly strategic, just slightly strategic, imagine yourself as a shepherd and you're up on top of a mountain and you have all of these sheep and all you know is that you need them to go downhill. It's that level of strategy that's necessary to get to the next place. You don't have to know everything. You don't have to be an expert in all areas of SEO and we'll get into that in a second. What are we really talking about? We're talking about craft and we're talking about people primarily in this process that we're going over. And for me, a lot of this comes from a blog post that I read by a guy named Jason Roberts. He published this in 2010. It'll be a link in the show notes and for him, it was called the surface area of luck. And this blog post blew my mind when I read it because it's all about the doing. It's about the craft. It's about the skills. It's what we learn. It's what we do. And it's about the telling. It's how we communicate to others, the qualities and the skills that we bring to the craft every single day. And so what we're talking about are things like learning how to do great work and how to tell people about it. The better we do and the more skills we learn and the more people who know about it and it's not just all of the people. It's the right people that will accelerate your career through all those steps that I talked about before. Whether it's from specialist to manager, manager to director or director to vice president. So what are we really talking about? We're talking about getting smarter, right? We're talking about when we start an SEO, I think it's crazy important to start in an agency environment. And my theory is that if you're in an agency, you're exposed to all different types of problems and all different types of clients and all different types of verticals. And as you get started, part of learning is learning how to think. It's learning how to make decisions. It's learning how to look at data. It's learning the fundamentals of the web, how to build HTML, maybe some cascading style seats, maybe a little bit of JavaScript, just a little, just to know what it is. Learning a lot about different types of SEO with different types of clients, learning the challenges that happen in a local SEO type challenge, learning about the challenges that come into play when you're learning how to build content, learning how to build stuff around strategy, learning all about e-commerce SEO as well. So getting this wide array of exposure so you can learn all about the different types of problems. And what you're going to find in that process is you're going to start getting excited and passionate about something. And you're going to find yourself talking to people and you're going to find yourself following people on social media that are experts in one specific thing. You're going to watch Whiteboard Fridays about specific topic areas. You might find yourself going super deep into technical SEO. You might find yourself going super deep into e-commerce SEO. You need to listen to that because that's your inner self telling you where your passion is. And this is our Moz shaped superpower. This whole process of learning is really important and it's really important because it helps you unlock your superpower. Going from going wide, almost like what Rand talked about all those years ago with a T-shaped marketer. That's a lot of what we're talking about, getting a really nice wide foundation early in our career so that we can unlock what our superpower is. What is our superpower? It's that thing that keeps you up at night. It's that thing that when you wake up, you think about. It's that thing that you can't find yourself stop talking to your colleagues about or reaching out to other people on social media. Notice when we start talking about reaching out to people on social media, that's where we get into the people portion of this process. So once you find your superpower, you want to get really, really good at it and you're going to find yourself upskilling religiously. You're going to learn all kinds of new technologies. You're going to learn processes and workflows to help you get the most out of that superpower. And this is where we get to the next stage and this is incredibly powerful. As you start to improve and start to go down that path, remember this concept of the sheep. When you start to unlock your superpower, it doesn't mean that you're going to end up walking in a straight line. It's going to be meandering and it's going to be in a direction and you should expect that and be open to change and open to possibilities. Once we know what our superpower is, we can start to think about our board of advisors. These are the people who are six to 24 or 36 months ahead of you. And the reason that we're targeting that very specific range of time and world of experiences is that they're going to be able to have all of the same recent learnings and recent challenges that you're going through in the back of their own mind. And they're going to do everything that they can to help you. And so start to pay attention on social media, places like Twitter, places like LinkedIn and start following the people who are doing the thing that you're really passionate about. Start liking and commenting on their tweets, maybe comment and eventually you're going to find yourself reaching out to them directly and saying something like this via a direct message. I love what you're talking about and the problems that you're working on. Would you be open to a zoom? I'm trying my hardest to build my network and I'd love some time thoughts, question mark, keep it really simple value their time. What you're going to find is that you're caught if you're kind and you're nice people will go above and beyond to help you in your career. So we're building our board of advisors here. What you're going to find is that these people care a ton about your outcomes and they're going to do whatever they can to introduce you to other people who are going to be able to help you as well. Now that we're talking about people, we all know how to be a good person, right? The core of it is being nice. You're going to find, and this is played so well for me in my career, that if you're kind, genuinely caring about your peers and colleagues across our industry, you're going to find that the industry will open up to you like an oyster. More things on people, you're going to find a need to connect with these people who share that same passion and that's when we get into this idea of community. This is critically important. When I started in SEO, I had no idea how I fit into anything. I had a 20 year career doing retail and I also had a lot of experience building websites, but I didn't have direct SEO experience. I knew I liked automation. That was my sheep down the mountain moment, but I didn't really see my community. I would advise that you try and find one on Slack, Discord, or maybe a YouTube channel that you're really passionate about. If you don't see a community, make one. Sounds crazy, right? Then after you join this community, you're going to find that if you're producing content, right, we're telling mode, we're telling the world about what we do. If you're producing content, whether it's a podcast, a YouTube channel, or maybe it's articles because you don't feel comfortable yet being in front of your peers, maybe imposter syndrome is still like totally overwhelming at times. You're going to find that starting to like get in touch with that community is going to open up more and more doors for you. It's this concept of the luck surface area. The more we do and the better we get at it and the more people that know about it, the better our world will become. And what you're going to find is that the next stage, if possible, if you can get yourself to that place is to consider speaking in public. You're going to find that that's incredibly powerful. If it sounds scary, start really, really small. Go bigger, start at a local meetup, speak at a local conference, try and go a little bigger and see what your comfort level is. If you like it, you're going to find that there's no better opportunity for opening doors for you. So that's it. It's the luck surface area. If you embrace this and really dedicate yourself to upskilling, you're going to develop the types of skills and relationships that make you impossible to ignore in our industry. And if you do that in five, six, seven years, you'll be able to move from being a specialist through management into being a director and hopefully a vice president. I hope you guys got a ton out of this today. I'm super grateful to be here and y'all take care. Cheers.