Good morning, everyone. My name is Song Liu. I work for Facebook, aka Maita. Today I want to talk about the possibility to debug with BPF, like BPF2, within a container. That is not globally. You don't have global permission. So we all know debugging with BPF is great. We enable great tools. But the key, you need to have CAP BPF, or CAP admin, CAPSYS admin, CAP NAT admin, and more. But the CAP BPF is not secure. It's not really secure or not secure at all, which means we cannot really do that for containers. So the question is, is this possible to find a sweet spot that we can keep? Is it secure? We'll still keep it useful, at least for maybe a large portion of all the use cases. So here are some ideas. I think right now what we really can do is have to pre-define the tools. You use either a set CAP or have some ping program to say, I know this tool is secure. Let's use this BPF. It's unheard the system. But obviously, the problem is it's not flexible enough. And you only have certain tools. Yes, please. Hello. So you said tool writers define secure BPF programs for non-root users. How do they define that? Is it by a hash map? Or is it by certain programs? Which line? The first point you were mentioning here. Or is it just something you've already tried? Or is it just an option that you haven't tried yet? I think that's what currently we do with other tools that you use special capability. You have, for example, a password. You have the capability to do the password for non-root You can change your own password. So we trust the tool itself is well-written and gave capability to that tool. This is like an excellent policy of some sort, I guess. How is this implemented? Define secure BPF programs for non-root users. If it's, say, if it is not. I mean, it's like if the tool writer writes something, you do certain things, very well-defined, pre-defined things with BPF. And you make sure that is secure and you allow non-root users to run exactly that program. Okay, okay, yeah, that's... Sorry, this is probably not clear. So, but there's not a key, hopefully. Okay, I mean, the answer, I guess, is like it's not flexible enough, so let's not bother about implementing it, I guess. Oh, maybe it's still useful in some cases, but that's not the key I want to discuss today. We can take that offline. Yes, thank you. Okay, so the second idea, as the main idea I have for this discussion is like, how we do some mandatory filtering of your BPF program based on the ownership, and we'll go to the ownership later. So if you have a non-root users program, we'll only trigger on the events that you own. For example, like, this is you, the ownership could be your current task. If you are in the process context, you trigger an event on your own task, you can see that. If you trigger an event on some other task, we're gonna, like, the kernel will filter that for you, so you will not see that. And another thing is the perf event, if you, the non-root user can open task based on the perf event. And if you have a FD to a perf event, attach a BPF program to it, so that we can, with some other limitation, we'll see that's relatively safe for the non-root user. And also if you have ownership to a socket, you probably have a socket event, a tracing event on it. And another idea, I think, part of from how it's like, whether we can have some security to enhance the map. For example, it's like a task, local storage, if you have non-root user, you have only access things for your own task. You good question, Brandon? Sorry, the second one, mandatory filtering, filtering based on ownership, that will mostly work. There's asynchronous stuff like IO completions where you don't own the IO completion, but you wanna trace it. I've thought about, I've dealt with this a lot, and I think that we can make it work. So for example, if you can only see events that are in your context that you own, and you can't see, for example, IO completions, you just have to walk up the stack until you own the context. So if you go up to a Cisco level, then you own the completions. And so it wouldn't, it would be annoying for me to deal with that for, say, container users, but I could make it work. It would break a whole heap of tools, right? If you said you can't see all this async stuff that you don't own, but my point is I think there are workarounds in many cases. Yeah, that's, like, I get the same feedback last night on the flight here. So yeah, let me go over that in a bit of detail, so. So I did some homework. No means this is the whole picture of BPF use cases, but this is my homework. I tried to be not biased about this. And I look at 41 tools on the BCC-Leave BPF tools. And 24 tools just filter on current tasks and the process context. So I mean, I think we can easily transfer if we have a current task based filtering that enforce on non-routes created BPF programs. And three of these tools was the start and the model Brandon just mentioned. You start tracing something on your process context and actually the end happens in the IRQ so you cannot use current tasks to find the ownership. So one example is to trace the IO latency. You start the read, you want the exact latency happen in the IRQ context or soft IRQ. And interestingly, there are more tools using contact switch than the start and the model. And then the switch schedule switch is kind of a really useful task and it's probably worth some special attention to make it work. And there are three tools use perf event and I didn't pay much attention. I assume if you only do perf event for your own task it's 90% working. And there are four tools attached with the socket with TCP connect or something. And the last three tools, they're really in the IRQ, soft IRQ context. And that's probably the trickiest we need to handle. So we start with current task and perf event. And basically we filter, we implement, if we implement a filter based on current task that is good for process context. And if the non-root user can create a task of perf event we can use that to get a part of the features done. It means we cover 24 plus three tools here. And the start and the model. This, what Brandon mentioned is one of the easier ways than what I have here, I guess. But the one thing if you really want the contacts in the IRQ context we can have the start program which is filtered based on current tasks. And we add a key with the BIO with SKB to a harsh map. I think we probably want BTF enabled or maybe even referenced map in this case. But that's something I'm not quite sure. So basically we, but the rough idea is to use this harsh map as the filter. We populate the element into this harsh map and the start program. And in the, and before the end program which is in the IRQ, we use this harsh map as the filter. And if this not, if the data coming from the into the end program is not in this map we just skip it. And of course once we use that we need to free up the to free the key from the after we use it in the end program. Yeah, that'll sometimes work. For things like IO you've got IO mergers and all sorts of things can happen before the IO is issued and like determining who is the, all the owners is a mess. I think they'll work for some things like schedule or wake ups because I want to know who woke me up but that's firing in someone else's context and that's pretty clean. So I think that there are some places this will work and then some things like networking and IO which do mergers between different requests from different owners that this gets a bit messy. Yeah, that's very true. I have another question in this context. Would it make sense?  And would it make sense to abstract that to, I don't know, something else like an identifier where you would filter on that or like a bitmap or something like this or? So I'm not quite sure I follow this. So but the idea is here is like, the picture I have here is PPF trace. Basically you run something for a shorter period of time and just like the user started that in the container. So I don't see like multiple owner of a program is a common case here. I'm not sure whether that answers the question. Oh, it's fine, okay. Yes, so I actually, we have other use cases there. We have multiple owner of one program but that's, it's probably gonna, we're probably gonna do resolve that in different ways. Okay, just pretend I solve this. So, can you, yeah, so for this one, start and model. So this is still, so this is you describing how the tool can be written, the program itself to be safe within a container, right? So it's not the, there is nothing automatic here. Like kernel, kernel cannot do this kind of stuff for you, for like arbitrary program to make it safe in a container. I have some idea on that. But not for this case, right? So like just in general, pro-pro-breeding, like tracing tools do pro-breed, right? Pro-breeding in kernel, there's no, like how pro-breed can be filtered. Like you're talking about the whole tool runs in like current test, sure, but then what's next? Like as soon as program starts, it can probably anyway like like arbitrary address. Yeah, I think pro-breed is probably one thing we want to disable for many use cases, or one thing I was thinking, so we have a, for example, we have a task pointer. If we use the core to do the read, that's what we call that's allowed. But if you, or maybe we limit how deep we go, with core, like out of those 24, like so if you go back to the previous, right? Like 24 tools use filtering on current tasks. How many of those use BPF core read? Like some variant of that. I didn't track, but not so many. But probably like every single one, no? Not so many.  You don't know if you're reading like something from the kernel, from your task, like, so. So basically you're saying like we should just disable pro-breed for such tools. Probably if you do pro-breed of random things, or if maybe you can pro-breed certain BPF pointers, or you can do only certain types or something, you somehow clean a little bit ownership. Well, the problem is like if you do like actual BPF core read, right, like the macro. Kernel doesn't know that you're doing core-enabled read. It's just like random value that it's reading from. The only case where Kernel does know that you're reading something that's like BPF defined is like when we do direct memory reads from f-entry. That's the only case where we can technically. Yeah, TB. TBBTF. TBBTF? Yeah, TBBTF. We have, among those 24, I think maybe half of them are TBBTF. Other than tasks, do you support ownership such as for C-groups or group of tasks? Yeah, I think that's definitely a way to do that. Actually, I see there's a talk later, or a discussion later on like C-group, C-group defined K-probe or something. In some cases, I think in the workload, we may have a lot of short-lived tasks that are resizing within one C-group because the tasks are very small and have a very short lifetime. That may kind of increase your overhead of map size or if you store the task in the map. So I guess you want to support not only single tasks, but also support a group of tasks like a C-group or task group in that case. Just one comment. Yeah, that's something we, if we agree this is a way, that's definitely one way to improve it. So yeah, again, pretend I solve this. So in the socket, and the socket is a common use case and I just throw a random idea, if a root maintain the program that will populate the socket to a map, and we use that map to do the filter for the actual user-started BPF program. And that's like how to, this is whether we can use the root to enforce that or as Alexi mentioned, we need to write the tool carefully, meaning we cannot do that's gonna trade off the flexibility of the tools. That's going to be some details that we can discuss once we get sample code. Some. Yeah, that's a different argument. My argument is like we can use some infrastructure to enforce that without writing the tool carefully. The other side of the argument is like, no, you cannot do that, you cannot get that much flexibility, you have to write the tools carefully. And trying to push on the more flexible and offload the security safety check to root on the programs. But we still, the object ownership model and all that stuff, it still doesn't prevent you from writing, like of course you'll have mitigation in place for like side channel attacks and stuff, but like the new things keep coming up, like there was the BHP stuff that came out a few months ago. So there is still a surface for users to craft a BPF program that would be, that has nothing to do with tasks, constructs or sockets and in this case, just plain vanilla BPF code that could be used to like create side channels. So how do you, this doesn't solve that? I have no idea about that case. I need to learn about it. Jason. Could we, oh, that's really good. Could we maybe solve this with signing in a capability model and a policy or something? I mean, we're talking about signing later this afternoon and so I'm just wondering if that might be the solution to this problem. I mean, it's a solution to whatever this solution to. Great. That's what we're here for. So move on. Yeah, more like button. So for the next is the switch. I just have this idea. So we have the switch, it has the previous and the next. So if you have two program, one handle previous, other handle the next, we can use that as the owner check. If I program a handle next, I only trigger on next for my own task. Whether this is my own task or the task and have visibility from the PID namespace. I'm not sure I understand PID namespace very well but I think that's by splitting this into two program and enforce the filtering for each of them, that sounds doable for me. So yeah, more like button, which is pretty good useful rates, but of course that's a lot of work. So how do we do the filtering? I had ideas so we can use a trampoline for that. The route or even the kernel load of entry program and we have some mechanism to load that to every known route. PPF program and if the filter says we should skip this, we'll just skip that. Maybe I'll mention the use case that we had. I think it might be similar. Is we attached to lots of K probes? But we scope them at the very first couple of lines by, well, we would like to scope them every first couple of lines by the pod, which would be if in Kubernetes speak, which would be like the container C group. So it was basically a C group filter for K probes or F entry that would be run before you jump into the PPF program. Is that what you're proposing? This is actually what you described and what Stan is doing. So it's a group-based LSM hooks. It should be generalizable to like not only LSM, like LSM in this case, just an example. I want to say this here I try to say, how do you like let the root to enforce that? So no matter what the non-root user load program, this is a enforced check. It's not part of the generated, it's not the code generated by PPF trace non-root. It feels close though. No. It feels like to me that you're in the same space and could probably use that work for this if you generalize it to K probes and trace point. And then what is also interesting is then I have another use case on top of that has nothing to do with the non-privileged debugging. It's actually a use case where we have a lot of K probes and all of our programs right now would just have a switch at the very front of them whether we could then delete, right? So that instead of calling, like imagine wanting to run like a full S trace type of thing but only for your most paranoid users, right? Like you don't want to run that on everything in the system. So it's very, I think that the main thing here is that the filtering pit is useful, right? Like this is why this is happening for the LSM stuff but the non-root part is the most questionable aspect of this, right? Like can we get, should we do it for non-root? Are there any security concerns? The filtering is just, we need it. Like there's no questions about that. Yeah, always. Yeah, to continue that thought, there's a point where, like if it's for observability tools there's a point where I just need to go do host tracing anyway. So you give me a filtered view of disk IO events or whatever and to fully understand it I need to see the neighbors and how much I'm queuing on them and so I'm just gonna go to the host, the container host and then instrument it anyway. It'll be nice to have some improvements to do some things within containers or non-root but ultimately to get the big picture I'm gonna have to go do root stuff anyway. Yeah, that is true. And actually if we have a lot of users doing this itself can slow down the system itself. So it's pretty, I agree. There's a lot of problem we need to solve down the road but my point is, wants to make it like, it is super useful. We want to just give it a try to enable some use cases for people without the root permission. Yeah, I mean I talk to developers all the time who are in containers and they've got no way of beginning playing with BPF trace and things like that. Even giving them a limited subset of CIS calls and these trace points and a few others will give them a way to get started and write their first one liners and programs and then understand the value of getting full access. A different question you might have it on a future slide is apart from filtering the event, what about filtering the arguments? So if I'm able to see schedule switch, am I able to see each of the arguments because some of them afford the other task and not my task and so they should be filtered. You may have arguments as another slide. Yeah, this is actually filter based on argument. You get the previous and the next. You get the one program you can only access previous and you are filtered based on previous. You need another program to access the next and that's only your filtered based on next. Okay, so if I'm looking at the trace point for schedule switch, you're filtering the arguments that I can access. So somewhere it's like you're allowed to access these. I think the verifier you'll take a look at if your program access previous, we will filter that on previous. If you access the next, you will filter on next. So where is this stored? Like where would the metadata be of, here are the trace points and here are the arguments and members that you're allowed to access and here's the arguments and members you're not allowed to access. So the idea was like we have the verifier to generate a matrix or a set of flags. So you do this, you do that and when you try to attach the program, you use something to make a decision whether it's safe to do the attach. Yeah, I think there needs to be almost a database somewhere of here's 200 trace points. These ones you can trace. These arguments for these ones you can access everything else is blocked. And so that like that information that's essentially true if you want full access. But I think the case we can start with the SCAD switch to enable that because given how popular that one is there are so many other like not so popular trace point we don't need. Also some of them if we know this on contact switch would use current to do the filtering we don't need. We only need this for whatever we use the argument as the filter. I mean to Brandon's point about like creating this list of trace points, we already have stuff BTF ID lists in the kernel and we could do some sort of pointer tagging to say like this is accessible. But I just don't see the exercise of the unprivileged stuff until we fix the security stuff and it's very hard to fix the security stuff there. I totally agree. For security stuff like 80% of, at least 80% of time you'll say something I'll take it as my point. We could build some mitigations into the BTF program itself that would like for especially for some specter like attacks. Some aggressive more aggressive mitigations, right? Like like kind of flush after. Yeah, actually let's just trigger another idea. So instead of doing the entry sampling, we can have the verify to insert the filtering into the program. Can we? I have this observation that like whatever pre-canned capabilities we give to users, someone will come and say that they need more flexibility. So like this kind of trend in the other direction like let's pre-define like what we can filter on. That will work in some cases but then like there will always be users like, oh we need like just this tiny tweak to this filtering and like all the stuff that we will do in Kernel will just not work for them. So how do we resolve this tension between like flexibility and like that was usually our answer, right? Like oh like you have this complicated like kind of hard to formalize requirements, use BPF code like you have control over like the filtering all this stuff, right? Like here we are moving the other direction. We're saying like let's pre-define that like you can filter on task or like on C-group and stuff like that. It's kind of anti-BPF-y, right? Then you move this back into the Kernel, right? The group on is only partially working. Or you have something like the, what Bjorn did for XDP, where you maybe generate the filter through BPF in the Kernel, but I don't know. It's so well. I guess just general question to the audience is like how much do we believe that we can actually statically enforce that some program is contained to like reading data about current tasks, for example? So like even with like, let's do mental exercise, right? Like you have this TPBTF that has task struct type, right? And like so, very far knows that you can like BPF information, you can follow pointers and all that stuff. At some point task struct has a pointer to another task struct that you are not allowed to read. Like can we prevent iterating through like my current task to another task and then doing whatever I want? Like do we even believe it's possible to like enforce it like you are not going to go outside of like those task current task boundaries? Because I personally don't see how you can ever do that. And by the way, I checked the BPF tools. Like it seems like half of them right now, at least use BPF core read directly. Like which for kernel is like read random memory. It's like half of the tools. Like if you disable BPF core read, can you even write a tool? Like some, some partial cases, but. I think in general, like this whole unfreeze stuff like with the latest Spectre BHB, the way the program is written there, it's not doing anything. It's like 10 instructions, no jumps, nothing. And we have to like, there is no practical way to detect that it's malicious. There's like, it's just not doing anything, not reading any kernel memory would say or like. I'm saying, I'm saying unprivileged like until like Intel fixes the ACPUs. Like we cannot, with software, software cannot work around hardware bugs. If this were true, we would have had land localism being implemented with BPF, right? Like this was a wish list for a lot of things. But it's practically, it's never going to be true. So the only case thing that you said in the first slide, which actually, where you said this is infeasible, is the one where is the route we might have to take if we have to allow certain like unprivileged processes to run BPF programs is pre-canned, signed, verified based on a policy, those sort of programs. And the policy might actually be signature based there because as Alex said, it's a very vanilla, simple instruction program that doesn't do anything fancy. So you can't have anything that says like, okay, I won't allow map accesses or pointer accesses. It's just the way CPUs are built that you could trick them into doing stuff by just a few lines of assembly, right? So that's the root of the issue there. Oh, we can try for non-intel, maybe. This is, I mean, Alex said Intel, but you can generalize. This is any modern processor that is doing some speculative execution is going to suffer with that. And most modern processors do that, so. Yeah, I wouldn't make it too restrictive. I mean, do you want a situation where S-trace is more powerful than unprivileged BPF for observability? Like you can do more with S-trace. That would kind of be sad. Like we want some flexibility. My concern is signing programs and having things too canned and like losing the flexibility of doing BPF-trace one-liners. Oh, no, this is something we'll discuss in the signing thing, right? Like this is where your trust for the tool itself. Oh, for the tool itself, sorry, yeah. So we'll bring that up in the, we want to allow dynamic generation, but then you move the trust boundary. That's where you said the tool should be nicely written. And then where you verify that the tool can't be abused to generate these gadgets there, right? Yes, so, but I think we go that direction. We need the tool to be really, really simple. So you cannot say like, I can make a BPF-trace secure. It's like, it's just too large a body, so. I think the idea here is that like we trust BPF-trace to verify that like some script is safe in one way or not like signed, for example, right? Like you can sign the text of the script. And if you trust BPF-trace to verify the signature before the BPF-trace actually is compiled in the code, then you have like this chain of trust, basically. We trust BPF-trace to trust the script. That that's how it would work, probably. Right? Yeah. Well, that's one way. Sorry. Yeah, so. So similar like we, like, LibBPF is a loader for BPF program, right? So you can teach LibBPF to verify signatures of like the L file, right? And like if you trust LibBPF to verify this, then like you can sign the L file without like, you know, like with all the core stuff, like all the stuff before LibBPF actually like modifies the code, right? So it's again like trust, trust chain. So similar idea. And tools won't be simple, right? Like tools will get complex because tools allow you to do complex things. And will they, is this a foolproof solution? When you sign a binary, I actually trust the binary. It comes to all of the thing, right? Software is inherently buggy and somebody will find an expert, somebody will fix it. But you sort of your, it's the best possible barrier to, like the highest possible barrier to entry for like, getting, I know this is reasonably safe. So I sign it. That is the risk that I'm willing to take. I'm not willing to take the risk that I will allow any BPF program to run. I'm willing to take the risk that I will, I'm allowing these BPF program generated by BPF trace because I think it's reasonably safe. So it's, nobody can say for sure, right? Like this is where it depends on your threat model there. Yeah. I see the point. A lot of the checks, the filtering is easier to do in user space or in the BPF program before we get into the kernel. So, and but I think the other side is like, if the kernel can provide some enhancement in secure that's what I hear the answer I hear is like that's impossible or doesn't work the effort. So I think for like true and privileged like signatures and everything, ideally like we, like as a BPF community would work with hardware vendors, with CPU vendors, with Intel and ARM and ours and actually ask them what we need to actually make it safe. Like it could be like if you sort of like and branch instruction that Intel implemented we could do something like this for the BPF and say, well, never execute BPF program in a speculative way. That was just like eliminate all known attacks so far we had is just needs little bit extra work on the CPU side. I think you lose performance, yes. But they do have an ARM 64 maybe to some degree, I think to disable speculation. I'm not sure how expensive this is actually, but Well, I'm not saying disabled speculation completed like and branch instruction is like saying like you can only jump there like when you knew that it is a target of indirect branch. I say guarantees that there will be no side effects for this particular branch. I think like the performance argument is of course we want BPF programs to be but it's a step towards allowing, so Brandon was saying it allows users to craft BPF programs and try them out if they are safe. They'll be slow, like they'll be not the fastest ones. Sometimes that is enough for me to debug something anyways, right? Like I don't need my program to be really fast in a simple setting. So maybe currently we could just do a barrier like MSR write for like to flush out like IPBB barrier at the end of at every BPF program exit or every branch. We just, it will be horribly slow, but sure. But the problem is you don't know whether that's actually enough or not. I mean, we would have to, yeah. This is a whole kind of problem. Yes. I just forgot one point and that is it's not just people playing around with this stuff and learning it. It's gonna be all of the third party companies who are coming up with observability agents and security agents and trying to get adoption. And then they find that people in container environments, they can't run them at all. So yeah, I think this is pretty important now that I think about it. So imagine all of those companies who are building stuff, agents they want users to run. So the question is how do we enable this then? Alexi had an idea, we should talk, we should work with the hardware vendors and figure out the right strategy about it. And it can't just be Intel, right? Like it has to be other, like the end branch stuff. Is there any equivalent on AMD or on ARM, whatever? So, but maybe this is something BSC could help with. Yeah, I mean, I have bad ideas like don't run containers just everyone run on bad metal and problem solved. Okay, you might get a lot of Nike, let's move on. So I think this is, as I call, I think people talk about this idea, not just me, it's like we want a BPF LSM hook on this BPF. So we have some program to decide whether some program can be loaded by some operation is okay for non-privileged users. And the other idea was that we had to verify because when we load the program, we really have no idea what it's look like. We are gonna do the verify to tell us what the program look like and we do the actual filtering on the attached times, something we cannot attach. For example, someone doing probe read and maybe that means everything really useful. But that's the idea. This pretty much sounds like how I was talking earlier, right? And what John wanted to. Yeah, it's the same idea, exactly same idea. So a little more like what this look like, this something is the defaults, the gigamodes. So if you are a non-privileged user loader program, you need whatever GapKeeper f-entry program to really run the program. If there's no GapKeeper f-entry program attached, you just always skip it. That is the case if you have like for whatever reason, the route forgot to load the f-entry program to enforce the security, we will just always skip the program. And the next is the BPF, BPF ISM, BPF hooks and also the verifier generate attributes. It's probably just gather existing. It gives you information we already got in the verifier. And that's it. Thank you.


Hi everyone, I'm Rob from Project Sandbox. In this video, I'm going to show you how to complete one of our self-paced workshops. So the first thing that you'll want to do to complete one of our self-paced workshops is obviously to register for it. So there's two ways you can do that. You can either do that on the Project Sandbox website or you can do it on the My Experience platform, just under the Get Experiences list. Whichever way you choose, it will eventually lead you to this Moodle page. This is where you'll actually do the work of completing the workshop. So if you notice there's a list of helpful links at the top, and then underneath those helpful links, you'll see a bunch of different workshops you can complete. Right now there's only one workshop, but as time goes on, this will populate with more. In each workshop section, you'll see various links associated with that workshop. A couple of things that you'll see is a workshop completion instructions document. You'll see a place to actually submit your final piece. And then you'll see various videos. Some would have activity directions and some won't. If you see videos with activity directions like this one right here, basically what that means is the video is going to pause itself as you're watching it. And all the pauses will have instructions for you to do something with the project that you're creating in this workshop. Once you're finished watching the videos, though, you've made sure you've went through the workshop completion instructions document to make sure you have everything done. You can submit your final project here. So whether that be an image you've created, a website, a video, whatever you're trying to create to complete this workshop, if you click on the submit link, it'll take you to a page that will allow you to submit either images or basically links to objects. So say if you create a video, you'll want to upload it to YouTube and give us a link to that video. If you created a website, you'll just want to give us a link to that website. But this is where you would do all of that. If you ever want to send us a link to a website of some sort, so whether that be things like YouTube or websites like I just mentioned, all you'll have to do is write in text of some sort. So like we could include something that says like my website. And then to link it up, you'll just highlight it and click that little link button. And then you can fill it out with whichever website that you've actually created or put in your YouTube URL, anything like that. After you'll just hit insert. And then you can see that it's actually linked up. Make sure you test your link to to make sure it works before you submit it. And then you'll just hit save changes or post or whatever kind of option leads you to that next step. And then it'll be given to us to actually review. If you send us something that doesn't adhere to all the different elements of that completion checklist, we'll just send it back to you and ask you to make sure to finish those components that you didn't put in the final project. Once that's done, though, we'll give you your credits on the My Experience transcript. If you run into any problems during the course of creating these things, please don't hesitate to contact us. You can do that via either that help form, sending an email to project.sandbox.uleth.ca, or contacting any of the members of Project Sandbox. I hope this information helped to get you through those self-paced modules, and I am incredibly excited to see what you actually create. If you need any help, you know where to find us.


Hey, what's up, folks? Welcome back to another 3D Hangouts. My name is Noah Ruiz. I'm a designer here at Adafruit. Joining me every week is my brother Pedro. Good morning, everybody. I'm Pedro Ruiz, creative tech curator at Adafruit, and every week we're here to share 3D-printed projects featuring electronics from Adafruit. That's right. This is where we combine 3D printing and DIY electronics to make inspirational projects. Hello, everybody hanging out in the Discord chat room. We'll give you some shoutouts and we'll get started. We've got some fun stuff to share and some tips. Very useful tips on things. Giving shoutouts, everybody hanging out in the Discord. We're hanging out at discord.gg slash Adafruit. We're also hanging out in the YouTube chat on Twitch, LinkedIn, and Periscope. Yeah. Is Facebook still boarded? Yes, Facebook is. This is our third week in a row and Facebook is just the streaming that could. Funny, funky. That wasn't our problem, though. We're going to share with you what happened. We're supposed to stream at 11 a.m., but we had to push it back due to some technical difficulties. I plugged stuff into the wrong outlet and it blew it up. Yeah. All right, let's go ahead. Let's go do our housekeeping. Oh, sorry, I said morning. Good afternoon. It still feels like morning, doesn't it? All right, well, let's go through our housekeeping. We're going to look at some free stuff. Adafruit.com slash free. We got some goodies. For orders that are $99 or more, the Half-Size Promo Proto is still a option. For orders that are $149 or more, you'll get the Half-Size Promo Proto plus a KB2040. And for orders that are $200 or more, you get the KB2040 plus the Half-Size Promo Proto and free ground shipping for console US only. That's UPS ground shipping. And then for orders that are $299 or more, you get the UPS ground shipping, the KB2040 driver and the Promo Proto Half-Size keyboard. And it's Circuit Playground Express. So if you want more details on that, go to Adafruit.com slash free. But you'll be happy to know that all the stuff gets automatically added to your cart. No coupons necessary. Okay, heading over to the jobs board. If you are looking for some extra gigs or if you're looking for a maker to help you with your maker project, you can hit up the jobs board at jobs.adafruit.com. There are some great listings up there, so check those out. If you are in the market for a gig or you'd like to get some people working, wait, jobs board.com. Get them working on your project. Yeah, finish my sentence. All right, Circuit Python Day was super successful. Shout out to all the participants, community and hosts. We have a lovely playlist. There are eight videos in the playlist, so check those out. If you missed any of the streams, it was a full day event. It was like our employees got the day off with the shipping folks and everybody got their day off. It was a bit of a flow holiday, but it's awesome that Adafruit created their own holiday. Because there isn't any in August. I tuned in live watching it because I had like stuff to do. I had a lot of fun on the show and tell. Huge shout out to Liz Clark. For hosting. Yeah, she had a great hosting session and we had lots of great people in the community. Some really outstanding projects. So on the archive, everything's there in that playlist. We'll drop a link in the Discord as well. Because that's one place to get them all. Where's the Discord? There's the Discord. Discord, yeah. And that's Circuit Python Day. Newsletters, if you want a newsletter once a week, you can get a newsletter that's focused on the products at Adafruit's shop. Go to Adafruit.com slash newsletter and subscribe to that. If you so choose daily content from AdafruitDaily.com, you can subscribe to specific categories, maker business, biohacking, 3D printing, and Python on hardware. Thanks to everybody for subscribing and sharing your stories and links with the community with us. And we try to highlight all Python related news projects and people. On the newsletter. Shout out to the team for putting it together. That's the Python on microcontrollers newsletter. You can get access to that by going over to the Adafruit Daily and clicking on Python on hardware. Shout out to Paul Cutler for doing up the Circuit Python show podcast, one of our favorite podcasts. And you can get, you can subscribe to it using your favorite podcast player. Just search for the word Circuit Python. All right, that is this week's house. Keep being ready to jump in either this week's project or catch up with the Discord. Let's see, catching up on the Discord. Third cup, second cup of coffee. I lost count of how many. Yeah, you needed the next couple. Everybody had to, or ran errands before they could, or while we were away and ran back to catch the show. Cool. Thanks guys. Thank you. We have a lot of fun stuff to talk about. All right, let's go ahead and start. All right, tell me about the blue smoke monster and how we let it out. DeWester was saying, oh, they love the smell. I got no smell. No. And I got no smoke. Oh, right. Well, this week. I wish we got something, but no. This week is all about whipper snapper. That's the IoT. No coding. Firmware, what we call it, the firmware for all of the ESP32 boards or any board that can do Wi-Fi. Mainly the ESP32 boards. I'd say in like this, but it is definitely like Lego for IoT, hardware controlling, being controlled by data in this point. So we have here a climate control IoT project that is running whipper snapper. What is inside here is a ESP32 S2. Yeah, this is our favorite form factor right now. It's a great dev board that can run circuit Python, Arduino and whipper snapper. Whipper snapper is supposed to be a easy no code solution, meaning that you're supposed to plug it in to your computer and then all the magic and firmware gets installed in the whipper snapper website. That's AdafruitIO.com. You can just do it all there. So whipper snapper and AdafruitIO are really merging together. And it's the layer on top that lets you play with all these sensors and boards. So that with that prefix, like tell us the hardware what's your kind of use case scenario. Yes. So for this, like I was saying before, it's climate control. So we have a AHT20, a humidity and temperature control that's on this side here. It's a sensor. It's a breakout. It can work with a bunch of other boards, but it's great that it's that much. It just plugs in to the back of the QDPI. QDPI is the ESP32 S2 QDPI. Yeah, this little guy here. So we have this mounted on the inside and we have two sensors hooked up to this. So like I was saying before, it's the AHT20. And on the back here, we have a TSL light sensor on the back. So what's this doing is reading the humidity. Got some plants in the bathroom. And I want to make sure that humidity is at the levels that they prefer. So as soon as it gets too humid, it'll turn off via the smart power strip here. You can see that we have it connected right inside of the QDPI. And when it reaches the humidity, it'll turn on the humidifier. Or dehumidifier. I'm going to have to switch that around. Actually, as I've been doing readings for the past two weeks, it looks like it needs to be more humid in there. I'm going to swap that around. So whatever it could be a light, we've shown that before. So it can turn it on and off. It has a built-in relay. And that relay is controllable with just two wires. Is that what's going on? Yeah. So this little guy makes so many appliances possible because it's running off our mains. So any appliance, like Peter said, the light bulb, humidifier, and dehumidifier, whatever appliance, this thing can turn these three light switches on and off. And we're using this one. There's a label here that says it's always on. So even you definitely want your microcontroller plugged into here because if you had it plugged anywhere else, it would shut the power down. And that's kind of what happened to us. That's exactly what happened. So I had this in the bathroom for rearrangement. I had this plugged into the wrong one, which is I think it says sometimes on. Is what the labeling? Does it say that sometimes? Normally on. Normally. Normally it's on. Not always. Yeah. But this is always on. So that's how we have it set up.  Right in the middle of a card read or the flash drive. Right. Yeah. So it pre-corrupted it. The flash chip and the flash chip is integrated into the ESP32 S2. So our board was boarded. So cautionary tail. Cautionary tail. Make sure it is on always on. Yeah. And that's so funny because I had that awareness the entire time I was shooting the video. Right. Like I made sure, like I had to reshoot shots because I had it plugged into the wrong one. Yeah. It's like, oh, I can't have that. I got to make sure that it's correct. So if anybody was watching. Yeah. So we did our diligence there, but right before the show, we just kind of, there's so many different things and dials that we have to make sure everything's set up. Wirecast was messing with us. So we had our mind out of this stuff. We had like a broken adapter. We had to rush to find a cable to replace it. So our hub wasn't working and any hoodle. Yeah. So we have a three-printed case that holds everything together. What we were saying, we have no infill on this. So we have this lovely vernoi. It's called the gyroid. Gyroid pattern. So that great mesh. That builds up in there. Yeah. The easy way to design an intricate mesh or ventilation without having to design it in your CAD software is just turn your top and bottom layers off. So it's a really good tip. If you're ever doing a speaker mesh or something that needs to ventilate air or let light in or something like that, in this case it worked out well because we need to dissipate the heat coming off of the ESP32 S2. It does get a little hot. Not hot enough to melt the PLA, but hot enough to where it can mess up with the temperature reading. Yeah. Yeah. So that's what we're doing here. So yeah. So we have some ventilation there on your top and bottom layers. Yeah. What I'm trying to show here is that one of the things that Brent and Lamar wanted to show off was the chaining. How you can chain all these together. And yes. Having that in a three different case, this is how I was able to do that. We have the, this is the SCD41 inside here. A little bit more accurate, more expensive. Yeah. Probably enough to go with this one. It's a RUO CO2 air quality sensor, right? Yeah. This one does have CO2. Yes, correct. Yeah. I need to put that back in the thing. Yeah. So it's a it's mounted with the QT Pi like this. It snaps right into this little holder. And on the back is where I'm screwing in the SCD41. And then right on top of the QT Pi, I have the light sensor. So I can just keep track of when the sun goes up and all that. Yeah. So that's a hardware setup for it. So this, along with this USB cable and a little battery pack, turns this into a completely portable environmental like monitor. So it's an air node. Yeah.   You're commuting and you want to see how much air, particles are in the air. You can track it and log it with the project like this. Yeah. Yeah. So it's a snap fit together case. So we have a little snap fits right there. The only thing that we're using for the screws is to mount the second sensor on the back there. And then from here, you can actually use standoffs to keep stacking these together. Yeah, you can stack them as high as you want. Yeah. So cool about this. You can stack all of these. There's an additional Stemma cable on these. There's usually two ports. So you can keep on just daisy chaining. Yeah. Yeah. So yeah. Smart outlet. We sell all those parts in the shop. Yeah, let's go ahead and jump into the dashboard and show some of the... So we'll go to the dashboard. But really it's the devices page that got a big upgrade since we last looked at Whippersnapper. So this is just going to show you all of your devices that are Whippersnapper enabled. And it's really easy to tell, well, what's online and what version of Whippersnapper you're running and some extra links like docs and if you want to purchase another one. So here you can see we have a few of them and you can click on either this plus sign or the new device sign if you want to add a device. And this will take you to a brand new page that gives you a search box and a browser of browsing all the hardware that is supported. So you can search or just pick one here. But you'll notice that there are a lot of the ESP based boards. Some of them are like the M4 that has a ESP co-wifi processor. But you'll see that there's a lot of boards that will work with it. So if you plug in a device at this point, will it automatically install, I think? What's that? If I plug in a board, it'll detect it automatically. No, you got to specify what board you want. So we won't set up a new board, but this is just we're just kind of showing you that you can. This is how you would select a board when you are initially setting up the first board. But we do have some already set up. So we'll take a look at our QT Pi ESP32 S2. We have named it the queen as the nickname because it's- That's the name of the plant. It's the name of the plant. So it's kind of a queen. Great name. So this is the new device page. So here you can see all the things that are tied to it. We have the humidity and the temperature readouts here. So when you're first setting it up, you can tell it what features you want to enable. If it has built-in sensors. In this case, we have already added our AHT semisensor. And there's a new component page. So when you click on this new button here or down here, you now, this was all those stuff that came out with Whippersnapper first version. Now the second latest version of Whippersnapper now has the Stema QT breakout boards. So all of these right here are accessible. And we even have a learning guide on how you can add new ones. So if you really want to get hardcore with it, you can. But for now, we're kind of adding them incrementally. So these are a great number of sensors. A lot of them have like three and one, right? Like pressure, humidity and temperature seem to be the triage of sensors. Like the BME 280 has that, the AHT has that, and the BME 680 has that. So whichever flavor of sensor you want, we're kind of supporting it. So that's really great. So if you wanted to add a new sensor, you would click on that and you would have it connected and it's going to scan the I2C address for you automatically. Just great. But we're going to have it. Watch real quick and it'll actually show you. Oh, whoops. That's not what I wanted. Was it read? I don't know. Now there's another where it like shows you what all the address is. Well, it's not connected, right? So that's why it's not connected. Is it? That might be somewhere else. I think it's called scan I2C. Yeah, yeah, that's what I'm trying to look up. Right. So you can scan what bus it's on. Exactly, yes. So that's good. But anyway, here we have a power switch set up and I have some controls that we have kind of added to it. So I can turn on and off the thing here. So by clicking on this switch, I can turn on the relay from the smart outlet that's wired up to our QDPI ESP32S2.  You'll hear that click as well. So there's a little switch there.  So anything that is connected to these three things, you can control. And what we're controlling for our specific project was a humidifier. It's going to be humidifier now. It was dehumidifier because when you're in the shower, I thought that it would be super humid in there. I didn't want the humidity to stick around and like have mildew or something growing in there. But it turns out that it's pretty low humidity in there. Like the AC does a good job of drying everything out. Yeah. All right. Well, this is the device page. It just tells you what's tied to the QDPI ESP, what sensor. Now we're going to look at the dashboards and take a look at some of your data, right? Yep.  One of the updates to the dashboards is you can add emojis and icons. Just to kind of differentiate that. As you can see here, yeah. You can quickly see which one you want to go to. Your plant. Bam. And you can see here, you can rearrange your dashboard. So click on the little cog wheel. Edit.  You can move these around and you can even scale them too. Yeah, that's why I want to go full. Probably smaller. Oh. That'll mess with the way the CSS is rendering on it. Yeah, when it gets too big or too small. All right. Well, you have that on the knee. And it works on your mobile device. And as I just seen to you, there's three different sizes that'll save. You'll have a small, a medium, and a large. So depending on what screen size or whatever window size that you have, it will keep those saved. So you can have everything nice and ready to view at a glance. So we have a switch that will control on and off button there. We have the humidity so you can quickly see that and the temperature and then a bar graph here. So I can quickly see or line charts. Sorry. So you can see what our humidity is. Let me refresh because I think the overlay, yeah, needed to get updated. So this data was that unfortunately data that was logged from our older QT5? No, no, no. This is from, I have that one if you want to look at it. If you go to dashboard, I didn't delete that yet. Old tween temp humidity. And here's what we gathered from the past two weeks. You can see when it actually turns on. You can see what time we, like I shower at. I got 11. You can see it gets up to 80, 90% humidity there. Personal data page where they sharing with the world. You could see there like the. 2 AM. Yeah. Oh, I think we, that was the Halloween party. Got home so late. What's it? Yeah. Yeah, August 20th. So anyway. You can get the bed to like three. This was a good use case of like showing durational like how much. Yeah. How long does the humidity stay in there? So I can see it only lasts for about an hour at 90%. So that's how I know, oh, I actually need to get a humidifier in there. Not a dehumidifier. Okay. So you can see all that data. Again, at before having any of this, I was blindly, you know, just left the dehumidifier on. It would get like super full, little that I know. It's, you know, making my plants sad doing that. You could see like, you know, the temperature too. So if it gets too hot, you know, and adjust that. And then went ahead to add to the light sensor too. Just so I could see, is it too bright in there? Is it like frying the leaves as well? Oh, wow. And then you can have a visual to see when the, the switch actually turned on and off. So you can see here like 2am. Okay. When it's actually turning, when it's actually getting too humid, and then you have your quick switch there, turn it on or off if you need. But this is our old dashboard, because again, the data is tied from to the board. To the board that got fried, but we do have it in the new one set up. But it's super cool to be able to see all this historical data and you know, plot it and you know, export it out to like a CVS file or something. Right. And you have a number of different visual, maybe just the line chart. I don't know. Oh, you can add more. Yeah. If you go to edit, go in there and block. If you wanted to add more stuff in there, like the, like the CO2. Yeah. You can add that to the line chart. There's like some more things you can change. You can modify like the line thickness, like your decimal places like for, might be the other one. I think the gauges let you. Oh, okay. Edit, like the pixel, the width of it. Step lines, draw lines. So there's a bunch of stuff you could play around with. So.  Yeah. And you can have some onboard switches, so if you just want to manually turn it off and on, you have this big switch here that you can do. Okay. Oh, good point from DJ Devin saying that, yeah, the QT Pi, it's only 12 bucks. Um, yeah. And the 8, 8 HT is only like $4. So it's pretty cheap for having a environmental monitor for that. And then having that environment control something else, which is super cool that leads us into actions. That's one of the new things that we wanted to talk about. So as you can see here, the, if the humidity reaches 80%, it's this middle one here. It reaches 80%. Yeah. Go to edit. So you can see the rest of the options you have for that. So if this humidity sensor, if you click on the dropdown, it'll tell you to like show you which board. Okay. It's showing you the broken one. So obviously I'm going to have to switch this around to the newer one. Don't do that here. No, no, no here. So click out of that. So it cancels. So if it's greater or equal to 80, what's this the value of the humidity percentage? Yeah. So if it's at 80, then publish this message. And if you drop that down, it could email you. It could send a web hook, or right now I'm pushing a message to the power switch. And it could be, you know, any of the other sensors. Right. Like the LED, you know, built-in LED, like the father has a built-in LED. It could like, you know, flash red for you. Turn off for, or use, you know, zero and one. So one's going to be on. Yeah. And zero is off. This might change, but for now, this is programmed programmatically how it makes sense. Yep. And then limit to checking it every 15 minutes. Okay. So that's how often it'll kind of change. And then the other new thing is a timer-based action. Let me go back out. React, dude. Wait, timer-based. So this is great.  Or just an example here. If you go back to actions, and it's this bottom one. Right, you can see the type reactive-reactive timer. That's the new one. Very nice. Let's edit. So if the power switch is equal to- If it's on. If the power switch is on, have it turn off after 15 minutes. Just to make sure that, you know, for what I thought the purposes was, you know, it's like, oh, don't have it run so long, because I don't have it checking the humidity every, you know, every minute. It's checking every 15 minutes. Right. So at least have it on for a little bit of amount of time until it checks again to sort of give the room enough time to, you know, sort of level out with the humidity. But that's just one of the examples. You can have that set up for something else. Yeah. So it's just based on the timing. And then the one is a scheduled timer. I think this is when we had before to go to the new actions. And you can just re-hear what it does. So every week, every 30 minutes, you can have it do something. Yeah. Okay. So it should give you ideas for, you know, like for me, a quick, like just thought the idea of, oh, just have the humidifier run, you know, every hour or something like that. And then check what it's at. And then if it needs to turn on more, have it turn on for another 15 minutes.  So it's super cool and complex that you can get with it. And this makes it all possible. Like we could not do this the first time we did the, the first whippers snapper video. Right. And these, these actions weren't kind of fully flushed out yet. So if you have, it's, it's limited. So it's free. Yay. And it's going to work with up to two different devices and 10 feeds. For the free version. For the free version. If you want to do any more stuff like that, then we have a 80 fruit plus, 80 fruit IO plus plan that you can take a look at. If you want to look at more, more feeds and more devices. But I think we think that two devices is a good playing field for everybody to, to see if you want to get into this or not. And for us, like this is all we needed. So we're, we're well within the, the tier, the free tier. How funny. Yeah. DJ Devon was asking, is there a timer base, like have the sunset and midnight actions? Yes. It's a really good idea. Having it have like the light sensor detect. Oh, if the, if the light levels are low, right, you know, turn the light on. Right. Yeah. That's a really cool one. The, one of the other things that Brent is working on and roping this around to the thing that Paul Cutler has just said. If you want to learn more about it, check out the this week's episode with Brent Rebell, who is one of the main developers on it. So you can get some more info on that. But one of the things that he's working on now is new pixels and servos. So that's one of the other things I mentioned last week. If the light levels get low or tie, like run a servo that will, you know, close the blind. Oh, that's a really neat one. Very mechanical. So that is, that's definitely coming up next. And hopefully before Halloween, we can have like a PIR since somebody's coming up and it'll have like a servo do like a door knocker. It'll be like the Haunted Mansion, the doors. Like self locks. We'll pick up some stuff, but. I already got some in mind. Yeah. So action type, related, you know, based on what's going on. Reactive. Reactive. Yes. That's what it is. All right. So we encourage you to check out Whippersnapper, get an ESP32 S2 board, whichever fits your project and start thinking about, you know, what can you do? There's so many. Like Devon was saying with the Alexa can do that. It's a really good way to have some completely customized ones. Yeah. And this outlet is definitely worth checking out. Oh my God. Yeah. This thing. It comes with a cute little cable, but it's all kind of US only. So sorry, people from the. I think you get converters. Yeah. Like the end there. Yeah. But this, this right here is really nice with the built-in relay.  So yeah, it's a little adapter that goes from C to A. Just like plugs in like that. The cutest way to power your pie with a USB battery or any power supply that's USB 5 volts. Yeah. I ran out of time on making a like a thing of a post or something for having all of the cases. So it's kind of very specific to our need. Yeah.  And you can download it. Oh yeah. Let me share that quick. Maybe we'll share that. So for boards that are the size of the SD 40, that is, oh man, I hate the way Google Docs does not put a space between things. It'll be fine. And then the smaller sized boards like the HT 20. There's the Fusion files for that. This is the enclosure design. The enclosure design. Okay. I'll put that out there. And of course, if you want the sensors, the cells as a 3D model, you can check out the CAD repository on GitHub. This is your snap fit design. Your snap fit design for the QDPI. And then the mounts, the standoffs for the different types of boards. I take 10. Look at that. Yeah. You printed it with supports? Oh yeah. This prints with supports. Okay. Yeah. You can see where the overhangs. That's cool. So this will fit like the bigger sized boards. And then we have a different sized ones that'll fit the HT 20. I think it's like the 0.7 or 0.9. A HT. A HT, yeah. You can kind of see in there. What that looks like. It's just smaller. That's all. Oh yeah. Correct. The USB A to C adapter will go into a wall plug. Yeah. Perfectly. It's very nice compact kind of way to get it going. And then I think the other thing is probably just the stem of cables and the sensors. There's so many to choose from.  So you can do some testing on that. But it's definitely worth it. These are all the supported ones. You can also check out the Whippersnapper Quick Start guide. How to add one. And it'll show you how to add one or which ones are supported. Even like between when the video was finished and then like three new boards were added by Brent. So we have the PMS. This is really cool. The LC7. That's the battery gauge. Battery gauge. So it'll monitor the percentage of your battery. So if you're on a portable thing, that could be very, very useful. Speaking of portable, one of the things I wanted to do, we have the, we have that, those new solar panels that we have in the store. Having that with the BFF on the QT Pi. So it'll be completely battery powered, charging, you know, solar.  It's going to make a case for that. I'll figure out how to probably mount it in the back of the panel. We're missing like an extra, oh, this is me talking out loud. Like some sort of info. What is this thing? Yeah, that would be helpful because every time I would have to go back and show this, I would have to like squint my eyes and try to read what the board says on it. I think it's a GPIO expander? No, it says it's a temperature. That's what I was doing. I would have to read the tiny text on the board. Well, we're all, again, this is still beta, right? Yeah, yeah. It works so well that you forget. Yeah, it works so well that we forget it's just beta. Oh yeah, that's right. So any input and feedback, there is a feed, there's a help, there's a feedback right there. There's a report bugs or anything. There's like three different ways to contact me right on there. And then there's just some options here, something not listed. And obviously it'll take you there. Yep. Yeah, let us know. And there's a help thing. So you can go here and it gives you to the welcome. We're working hard to get everything up to date because we've got to update this guide. And now we have to update this documentation. So bear with us. It's still very new. One of the developers didn't realize that we actually have like emoji and icon support. Speaking of, yeah. Go to the cog wheel there to quickly show that off. You can edit the icons for this. And this is using awesome fonts. There's so many, you can do the search on that or just use the, what is it, the hex, whatever emojis at? Universal emojis. There's gauges, like all the pressure gauges. Temperature, all the temperature ones. There's different styles of them, thin, light, solid. What does solid look like? Does it just fill it in? It's cool. Regular school. Yeah, regular, it's fine. Cat. Oh, the one that just, no, the, oh, it's space. I thought it was like with a cone on his head. With dog. There's dog. There's a hot dog. Food. So there's plenty of customization for this. It's, I'm going to get cooler. More taco. Any other suggestions? Acorn. What is this for the on and off? Yeah, it's the plug. They do have a unicorn. Of course. Anywho, I'm having fun. Lots of icon support. Very nice. I haven't seen, yeah, that's a huge update. Not, yeah, it's a big update. Having so much more stuff too. Like in the background, like the way you went from switched over to platform. Oh, installation process is a lot better now. It's a drag and drop. Yeah. It's in the video, but it's setting one up. Yeah, it'll, it has a WYSIWYG. So it'll show you like what all the blinking lights mean. Like what, like what reset button that'll get you into the bootloader.  And then the, the color animations for the LEDs showing you what does that mean. So it's a very helpful. It's interesting to see folks use the 8266. That's kind of like the older, but like very well rounded board. Mm-hmm. That'll take you. Yeah, it'll take you to the. Because everybody's, you know, the, the 8266 was so popular when it's day, you know, a couple of four years ago or whatnot. It's in there. But it's in there. So check this out. It's not just the ESP32. There's so many. But there are lots of 32s. S2s, C3s, so on. It's helpful. It's quite a bit to choose from. Chances are you have one of these boards. Okay. All right. Well, that is this week's project. I will be using this a lot more. And we've got a second one of these. So we could have. Yeah.  So I have more to have even more temperature controlled ones. And the, each plant's different. So we can figure out what the humidity and the temperature levels are for each one and build your, if, you know, if this ends up all accordingly. Yeah. Okay. That's it for this week's freaking awesome project. Good job to Brent team on hard work. Cause this is definitely not easy. Having all this. Hey, Brent's in the chat. Shout out Brent. Yes. There's so many frigging people using 8266. Okay. Yep.  All right. We will be back with more of these later. Okay. Cool. So check that out. Let, let us know what you think. Yeah. Post the links to those and yeah, check out all the boards. All the sport boards. Okay. All right. Cool. Let's go and jump into this week. So what are we prototyping? All right. We are prototyping last week. We talked about a Raspberry Pi based project this week. We have updates to the Raspberry Pi project. So this is our attempt of making a Raspberry Pi media center that uses a 2.5 inch SATA drive SSD solid state drive. It's one terabyte. We got one of these crazy SATA to USB 3 cables. That plugs into the Pi. We got the Pi in there. This is the Pi 4 mounted to our lovely 3D printed case. We got a fan. We have added lots of things to it. So you'll remember the, the, the display. We're using 1.9 inch TFT display. And we're using Blinka circuit Python wrapper for Raspberry Pi and other Linux single board computers to run a display. So we can do, so we can use all the circuit Python libraries for display using display IO libraries. So we have this playing GIFs. And we also have it displaying things like the IP address. Right now I don't have it plugged in. So there's that. But I'll plug it in and we'll do a quick demo because we have time on the back. We have this very lovely 16 millimeter metal button. It's a push button. It's a momentary button. And this is tied to GPIO 3 and another GPIO pen so that we can turn it on. And turn it off with a safe shutdown command. We also have the SD card extander here. So we can access it without having to open our case. All the ports here are accessible. Here it's accessible. Good spot for the display. And then up here we have two more buttons. These are our Stemma buttons. They have, they're basically six or 12 or 10 millimeter buttons that have JST ports on them so that you can quickly wire them up. And we're using them to switch between gifs. And then of course we have a 3D printer handle. So let's power it up and see what we got going on. So I have the Pi 4 power supply. It plugs into the wall. It's 5 volts, 3 amps. Because that's what the Pi 4 needs. It's a very, very hungry Pi starving. So I turned it on and I'll come up with a startup script. But for now, once it boots up, I'll SSH into it. And then I'll turn on the Python script. Because I have all the libraries installed for the display. So I'm going to go into my terminal. I'm going to SSH into it. It's still booting up. I have the red LED tied to the TX pin. So I can see, I can see when it's on and when it's off. So if I would press this, it would do the safe shutdown command. But we're not doing that right now. We'll do it after. So here are some gifs. These gifs are a part of one of the project learn guides where we show how to do a pendant. But so all the code is kind of written for this version of CircuitPython running on the Raspberry Pi. It was a learn guide from Alyssa. So we can just cycle through using these buttons. There's a Blinka transition, some hardware. And our favorite gif is JP as the Doom guy. So if you want to play Doom on your Raspberry Pi, you can play Doom gifs all day long. I think it does run the actual Doom, doesn't it? I don't know if we could get it to run on the display. No, not on the display. But this is a great display. It's an IPS display. So you've got really good viewing angles, 1.9 inch. And it just gets panel mounted to the side of the case. But for more useful stuff, let me go ahead and close out this script. And then I'll run another script, the kind of IP display. So all this is written in CircuitPython using display IO libraries. So here you can see the temperature, the internal temperature, the CPU. And some memory and disk stuff. But that's our IP address. And we just got a regular 5 volt fan that's 30 millimeters. This is the Noctua one, so it's nice and quiet. But yeah, it's got a lot of things. The main thing that we wanted to do is to run our media and streaming services. So originally we were using Plex, but we're going to give another one try. We're going to try out the OSMC. I don't know what that stands for, but you can burn a nasty card with that version of Pi OS using the Raspberry Pi imager. And we'll see if we can get our media from the SSD to play from there so that we can have lots and lots of media that we have for running our own kind of streaming server. So it'd be perfect for the office in New York, office there. I don't think we'll have someone at the front office. What is that called? The front office person? Well, the TV, the cliche. Yeah, the front desk. It would just be running all of the project videos. Right, that'd be pretty cool. That would be cool. Just ship that like that with every single video on there and just have it loop playing in the background. Yeah, so that is what we got going on. Let's go ahead and try out the safe shutdown. So if I click on that, the active LEDs are going to start flaring off there, and it should kind of power itself off. One of the things that we found though is that it'll still get power from here, so it'll just stay on. But because the LED is wired to the TX pin, this will actually turn off once when it's actually off. So it's off right now, so it's safe for me to unplug. And now that's a quick demo. This will be next week's project. I've got the learn guide started. A lot of pie accessories for this one. Yeah, any questions that we got so far for this particular project? By the way, we know about the Plex. Plex unfortunately had a security breach, so that's why we're trying out a different media service. But it's nice that there's a lot of different options out there. But Plex was an easy one because it was just like, oh, just load it on Chrominium, the web browser for Raspberry Pi OS. And I didn't have to install a custom thing on top or anything. I just installed the thing and then it used Chrominium to access Plex, the website, and then you can log in. They have live stream TV and stuff, and some movies that you can stream. But you could use Chrominium to go straight to the Disney Plus or Netflix or whatever Hulu. If you're into that, that's a little outside of the SSD. The whole point of the SSD is to luckily have all your media. So if you're into that, this is a good option, a good setup. Yeah, great for like I was saying, the front office or museums or any educational. Open Source Media Center, that's what OSMC stands for, I think it is. And the SATA to USB cables are quite handy. Yeah, I didn't know it was a thing. And I just checked, we should be having these in stock soon. Soon, we're going to stock these cables, not the hard drive, just the cable because we saw cables. Yeah, this just mounts like a drive does.  So the Raspberry Pi OS, the latest version of it, just support it. You don't have to do any special commands to mount it anymore. It just works out of the box, which is great. It's never been a better time to do a Pi Media Server with buttons. Three buttons. I just turned it on. Dang it. Wait, no I didn't because I don't have it. There's nothing plugged in. So that's going to be next week's project. All right, cool. Look out for it. I don't know when we'll have pies, so don't ask. I think PT, you already said that it's 1130 on Wednesdays. Is that what I heard? Yeah, every Wednesday. It's awesome. The nutshell that every Wednesday at 1130, it's already passed that. Yep, they're out of stock. Do we mean we got a new stock? I think that just goes in there at that time is what he said. You can listen to last week's show. I forget in what section he talks about it, but he spills the secrets. He spills the beans. I got some cool Devin saying he hasn't used his Plex, but he's used Mb. Eat MbY and it's similar. Yeah, I'm guessing all these media server OSs are kind of the same. Oh, Deweyster is that one of them? Yeah, 1130, Snago today, Deweyster dropping the... Yeah, was it last week that PT talked about it? He was like, all right, let me just tell you all the secret. I was like, oh, because we need another one. But only you folks, our audience only knows about it and Deweyster knows about it. So at 1130... I mean, you can confirm it's true. On Wednesdays, I didn't hear pies. And we only stocked maybe 100 or half of that. Couple, yeah. That is so cool. I'm glad you got one, Deweyster. Dude, yeah. Yeah. I think I need like just one more. Media server in a lunchbox. That's great, dude. I love it. Yeah, using the Atombox lunchbox is great. Oh, I know. I want another one. Yeah. Yeah, it's like collector item. All right, let's just prototype. Let's go jumping into... Shop talk. Wait, no, is it shop talk? It's a shop talk, for sure. I think I thought it was a prototyping, but... No, it's shop. I saw they released these really cool, you know, we've been wanting to do like a smoky project to see all the cosplayers like doing, you know, the... What is it? The vape juice stuff. And I was like, I don't want to take apart a whatever heating element and get the... Is it sticky? Like... I don't know. That's why I'm like... Show us the thing. So this is great. This little stitch thing was released yesterday at, I think it was at World of Disney where we picked this up. We saw, we follow all the Disney bloggers. So as soon as they posted this up, I was like, we need to go to Springs right now and pick one of these up. It's just water. It's like... Water vapor. Yeah, water vapor. So A, great for, you know, the kids when you're out, super hot out, freaking cool down with this. B, like no sticky bubble stuff going everywhere. So like every time the bubble wand that's always like the core. It's very nice and cool. It is water vapor, so be careful with electrons. Oh yeah. So you don't have to like get more, you know... No, seriously. Actually, no, no, I'm trying to do this to see if the humidity rises. But yeah, how cool is this? When I disassemble it and put it in some sort of prop, I don't know what prop. Like hammer something. Atomizers before, you can purchase atomizers from like the Halloween store. You had to plug them into the wall. Yeah, you do have to plug them into the wall. The ones you can get for like, you know, like a bowl, candy or something. We've done a project before with it, but we think that they've figured out how to make it body-powered and as small as possible. That's what intrigued me. And so there is an element in here that's doing the atomizing. So it's turning that water. So there's a thing here that has the water. And then we've got some pump or something that's sucking it in. Because we do hear some pressure going off. And then there's some built-in LEDs here that are very, very bright, eye-blinding. But we'd like to do something with it. We don't know what yet, but we think we're going to take this part out and kind of rearrange it. A new kind of portable humidifier or atomizer thing. So I have not seen one. It's like handheld battery-powered, but maybe there is. That's actually why I'm just showing it to you guys. So hopefully you guys would send me some links. Links let me on. It's called the fog wand. When we, when you bought it. Oh, Devin is, DJ Devin is saying, yeah, vape juice is very sticky. Like no tack flux or soldering. So this stuff is great because you're not going to get a ton of fog. Because it's, you know, but it is cool. Like in terms of the temperature, it literally keeps you cool. And having that light built into the, to this piece, the atomizer is a good way to kind of get the fusion. So at night, it just illuminates and looks much, much better. Oh, how cool. So there's some ideas. Devin was saying that last night, they were actually chatting about the, in the generals chat, they were chatting about the dune portal ideas. Yeah, this would be cool for that. Yes, it's stitch. Yeah, it's stitch. When you hit the trigger, his mouth opens. So there's some mechanical linkage going on here. And there's a speaker. So you have the lights and sound. So it's fully decked out. You get fog, lights, sound. Yeah, that's why it cools you down. Like it's a useful thing. Yeah, something for, you know, a prop that we could take apart. So it's, it checks off like every single. It's battery powered. That, that was the main thing that got me. And it's battery powered. Right. So you really can't get one like this, like figured out how to. Maybe there is. Again, that's why I'm showing it. So if you guys have seen it, please send links. Okay. Is it like a smaller one? I know. That's the first thing that we should do with the kids as ones. He's like Lars. Much more vocal. But you can hear, is that pressure that built up? And then the motor starts going like until the pressure builds up. Yeah, we're going to shoot it out. We'll see. Oh, it's so cool the way, like trying to figure out how it's working. So that's something interesting that we are looking at. Yes, smoke. It's finally, because that's the thing that definitely turned me off. Like, because I knew it would be sticky. I knew it would make a mess and it would mess with heating elements. And yeah, for the kids too, this is great. So yeah, that's one of the things that shout talk stuff. Okay. I also have some filament that I'm testing out. This is some wood filament from ProtoPasta. So can we get some? Let me focus here. So ProtoPasta makes some really good filament. They're a manufacturer in the US that makes their own kind of artisanal filament. And this is some of their wood PLA, matte PLA. So it'll work with, I mean, they have different diameters for the different printers. And I'm testing this stuff out. It's really nice. It prints very nicely. This was printed in Bayes mode. So it's just a single perimeter. So it's kind of flexible. And it diffuses light really nicely. If I can get this. Very nicely. So I'm thinking about making like a lamp or something. I figured out how to, in Fusion 360, the design software I use, I figured out how to create these kumiko inspired shapes that are wrapping around the cylinder using an emboss. The emboss feature. So I think it could be a cool lamp or something. But I've really diggin this filament. If you're looking for something that looks like wood and has these like speckles and stuff, check out the wood PLA from Proto Pasta. I have a link here. It's under their matte fiber collection. Let's go ahead and switch to that if I haven't already. Here we go. So check them out. If you're in the States, they're a good supplier, maker of, like I said, artisanal bespoke filament. They have three different like types of wood. Oh, four. They have a walnut, daffodil, which is the one I'm using, mahogany and chestnut. And they also have this other one called a espresso, which is like this darker coffee ground, which has a gold flakes in it. I don't see it here, but that's a cool option. So they got a bunch of great stuff. I got some of the greens as well, but it's from Proto Pasta. So check them out. We like artisanal filaments and they've been around for a while. So it's good to support them. So definitely check them out. And love the shadow effect. Do you have any cool ideas? Yeah, of what we can do with this concept of like kumiko lamp? Let us know. We're really into woodworking, kind of inspired projects. So I think it's kind of neat that you can 3D print like a woodworking inspired kind of project. It feels kind of rough. So nice. It feels like almost paper because of how thin the vase mose made it. Yeah, I like it. Vase mose. Very cool. That's so cool. Yeah. Even without the way that the shadows are being created on it. It's pretty cool. This would make a great cookie roller. It makes a kumiko cookies. I remember when we did that. Yeah, yeah, yeah. It's exactly that. DJ Devil is saying that this is how they make brick patterns on concrete one of these. Like you were just saying like the cookie roller. Oh man, I want to do concrete one day. Like do some cool pattern. Concrete casting. I've been following some Instagram stuff. It's pretty dang cool. On making custom shapes with concrete pours. Pedro is telling me we are running out of time. All right, so from the new series or that series, right? Sandman. Yeah, this is Netflix TV show called Sandman. It's called of the Carinthian? Carinthian. Carinthian by Sander. This is designed by the Sander, Seder. Yeah, this of course. I think this kicks off our Halloween time-lapse Tuesday stuff. Yeah, we're officially in Halloween mode now. Oh wow. Yeah, we got our whole setup for the lights. With the acoustics or acoustics. Yes. Kind of shimmering. I love the teeth detail in the eyes. Obviously it's, I've not seen this before. So that's what really caught my eye on it. Yeah, I'm in episode six now and we're still, I still haven't seen a skull of this guy. I don't know his full name or anything. So I'm like, hmm, it's going to take a bit. Trying to lip sync to you. Hello, I am Sandman. So it's two different pieces. Have you seen?  I did chop off the top here. So I wouldn't even, so I wouldn't need even more supports and bringing it up and then having like this, you know, crazy bottom. Just chopped it in two and then the jaw prints separately. Just snap fits in there. Pretty cool look. It's like a ball socket. Oh yeah, it's really great. It just pops right in. Make a chatter. Extra creepy when you do the chatter. I wish these. I want two of them so I can like do a little. I want the little mouths to freaking chatter too, right? Too frightening. That'd be too frightening. Yeah, so glow-in-the-dark filament. Crap, I didn't bring the UV light. It looks so cool. It looks like it's atomic. I wish I showed it in the video as well. I did show it in the snaps that I posted. So it's available in close 3D. It's $1.49. Yeah, there are some free ones available. Unfortunately, those don't have the teeth open. And yeah, I don't know about the jaw either. But I wanted to support an artist. Or making a point to support designers. But yeah, the Namer Seder, love 3D modeling. I think they printed this in resin. Oh, it's a resin print. I think so. Cool. If I write it correctly, if I'm remembering it right. The Namer Sandman series scale doesn't have to be registered in the series. Move the bar and the jaw can be open. It's this ABS film in there. And the model needs a servo, says Devin. Right. And De Wester says it looks like something from Tool. Yeah. Totally. We'll sell these in 3D, but it's on cold 3D, so you can get it there. This says a vibration motor. Yeah, that would make a chatter. Yeah. Perfect. The old school wind it up. Oh, yeah, wind up chatter teeth. Ha ha. Classic. It kind of looks like the teeth are chattering me to do that. Yeah. Yeah. So yeah. Chatters very well. Very good acoustics. Mm-hmm. Yeah, nice detail all throughout. Yeah, this is great for starting out hollowing, I think. Like the teeth detail. I did print this at 180 microns. So a little bit of detail on there. And it cleans up pretty good with all the support material. It was all inside there. You can kind of see. I know that's what I'm like.  I mean, that's good teeth. Yeah, that's what I'm looking at. Straight teeth. Mm-hmm. Do the quality of them too. All right, cool. This week's kicking off Halloween stuff in time lapses. And I think we got some community makes as well. Yeah, one. Where are we? No, we have two. Oh yeah. Shout out to Charlotte. This looks so good. She made a beautiful master sword. She followed her tutorial, but she kind of modified the design. It was originally designed by Garrett of Chaos Cortech. Yeah. We butchered it. And we butchered it. Just hollowed it out. We hollowed it out and split it into multiple pieces so that we could print it. Some with support, some without support, but mostly so that we can print the pieces individually. Shawnee did a fantastic kind of log. Breakdown. Thread breakdown, yeah, over work in progress. So she goes through the filament. She also used Prada Pasta, the glitter flake stardust, which is awesome. You can see here how it looks like when it's diffusing. I like that it diffuses through without you knowing that it's not light up. It's like this stuff, but like silver. So it's great that it's transparent, but it looks great without the lighting. So having it turned off and on is a really good thing to surprise. She also had some really good tips here on strengthening the blade tabs. Didn't add any tabs, but this is an excellent idea. The reason I didn't is that yeah, we printed it flat. Hers is printed tallways, so she even thought to make it. So that the printing orientation is going to be strengthened. So it looks great. Here's another kind of look at the three pieces put together. I did that with the dark saber, I believe. Yeah, I did that with the Guardians, right? Yeah. So they're all good options to look at. So it's really, really useful to look at under a build blog and see. Nice paintings, dowels to align. But then she made these like pegs that have a slit through them so that they can squeeze in kind of like how you would with woodworking. You would kind of do the swedge thing. But definitely read up on her on her thing if you want to like a full breakdown. Here it is like kind of working. Switch in there. Like the first kind of power of masking. Yeah. And then she did incredible paint jobs. Some final stuff. Final, yeah. This is the epic details. Like she went the whole nine yards with a gold flake. So lots of good tips there. So check that one out. And then here's like her fancy video. Oh, and if you're going to Silicon, SiliconJS. That's what she's doing. Yeah, that's the I guess the handle for it. Oh, right. With SiliconJS. Yeah, with the dark saber. She will be there. So if you see her, you have an opportunity to see the sword. That's really good. Yeah. And I love the, was it laser cut? She said the Shiga? Yeah, the Shiga thing. She has her own build blog on the Shiga slate too. Which is awesome. And it's her phone holder. It's fantastic. So cool. Super cool. So there's Sharlane, her master sword. Oh, quick. Devin's asking, is that print stronger vertical or horizontal? Horizontal for the sword, which is why I think she did the things because she printed it vertical. I think her printer bed was just taller. And maybe that's why she printed it vertical. But usually for swords, yeah, I print them horizontal. So it's long ways. The filament gets laid out horizontally as all one line. If you're printing it vertical, there's no strength in there. Because the adhesion is only as strong as the heat was. So if it's vertical, it's all one line, one continuous extrusion. Otherwise, they're stacked up on top of each other. And it's a lot easier to break if it's vertical. I'm looking at all the swords like that. Yeah, yeah. I mean, a lot of the props, though, for the handles, I will print them upright just because it's an optimal way to do it. What's going on? So these printed flat, horizontal. So I did mine. Where am I? Where am I? Yeah, so you can kind of see the shiny there. I'll print it flat on there. And that is for strength. That's why I didn't need to do the taps connection. And we verified that with the, I think he was seven years old at the time, having a kid flinging around, stabbing the ground. We resized it. Oh yeah, this is the longer one. Yeah. I don't know where the shorter one is. Yeah, yeah, yeah. But yeah, all the swords are usually printed. But that's why she had those tabs, because it definitely adds the strength to it. So very good stuff. Okay, we have one more community to make to run out to show. Let me get my tabs. So this was a make of our hand crank solder dispenser. So you folks remember this? It's a solder dispenser in the shape of Adobot's head. And the handle is a crank. It's a printed place crank that's hinged, double hinged. And we have a make from Light, or Ligtus posted this up. So it's very cute and works fantastic. Easy to print and the tonches are very well made. Nice. So they printed it in these colors and you can either dual extruder or print it in multiple pieces in different colors. And the solder comes out of the little mouth. And one of the ears, the antennas, is the crank. And also Sophia Skins also made one. I don't know if we shared this one, but look at the color scheme. A yellow Adobot with pink ears. I like it. That is very cute. So this is designed to fit the solder spools as a part of the learn guide, this one here. So if you want to, I think I re-mixed it to work with the solder spools that are green because we changed our supplier because we do that a lot. So there's like two versions of the design out there. Right. Let me see files. But you could always modify the actual holder bit inside. It's a bit of a modular design. So if you want to just redesign the holder bit, like the actual thing that plugs into the, that snap fits into the spool, you can modify this design. If you'd like, it's a Fusion 360 file somewhere as well. There's a step file. You can play with that. Good enough. Yes, it's good enough. I made it a while ago, so I don't remember stuff. But thank you, folks, for posting your make of the Cranky Adobot. I'm having fun. I also did a very similar, look at the top. You notice something special about the top of his head? Zero infill. No. Oh. Zero top of bottoms. Oh. Right. And the infill is gyroid. And you get this nice kind of mesh. And I'm glad that they did that to these two folks. Mm-hmm. And that's what this makes community makes. Shout out to everybody for making stuff. Love the color combos. Yeah. Filaments on it. And we're out of the show. We're out of content. We're dry as a bone. I'm tired. We're going to host tonight's show and tell. Does that make you excited? Yes, it does. Come by. We invite you to come on and share your stuff with us. It'll be at 7.30 p.m. Eastern time. Usual time slot. And then asking the engineer the same time slot. 8 p.m. Eastern time. It's all good. Yeah. We'll be there. Come show off all your DIY. Projects. Yeah. Come, you know, come by the Discord a couple minutes before the show and tell. We'll drop the link there and we hope to see you there. It doesn't have to be a completed project or any of that. New trick to be whatever. Plans, parts. Work in progress. Work in progress. Your maker space. Jokes. Some of your jokes. Magic tricks. And then tomorrow. JP's workshop. So you're feeling dry. Turn on the humidifier. Yes. I will miss myself. It's super hot in Florida. John Park's workshop every Thursday at 4 p.m. Eastern time. Tim Fomey Guy will be hitting up Friday with his deep dive. 2 p.m. Pacific or 5 p.m. Eastern. And then we're wrapping around on Sundays. It's from the desk of Lady Ada. So you can check Lady Ada. Streaming. Close the door. It's very loud. We're almost done though. And then on Mondays, the circuit Python meeting. Meeting the circuit Python Get together. Just use Python Meet for now. Where does it say that? It's not circuit Python. I know, I know. I need to update this. Yeah, I know. You had switched it out. Yeah, oops. Well, the circuit Python hangout happens every Monday at 1 p.m. 1 p.m. Fuck's good. We'll know. I think there's a bot. Yeah. So that's Monday. Tuesday is JP's product pick of the week. Every Tuesday at 4 p.m. Eastern time or 1 p.m. Pacific time. Your opportunity to get up to 50% off. Select items only during the live show. So it's a huge discount. Your special code and a special thumbnail. That's crazy every week. Best thumbnails. Yes. And then Wednesday's show strap. Again, normally we do it at 11 a.m. when things don't blow up. And I plug the thing into the right place. Yeah. And then three shows today. So this show, show and tell, and then ask engineer. Make sure you tune in and ask engineer. You can get a 10% off coupon code every Wednesday at 8 p.m. All right, that's it. All right. We're good. Thanks for hanging out with us and coming back. What do you got, Peter? That's it. With all that, forget to make a great day. See you guys later tonight. Thanks, everybody. We'll see you tonight. Wait. He said my catchphrase. Make a great day. And stream. Bye.


friends and welcome back so today I'm going to do a plan with me in my mini for my social media so I have some pages the extender pack pages and let's try to get started I really don't have anything in mind yet I laid this card out because I kind of wanted to use that but again I want to use some washi tape as well I don't know I did washi in my last video so I'm thinking this might work so I don't know I'm just gonna go with the flow I have some books over here to the side I have the daydreamer pack here and I was thinking of using that I don't know I don't really see a lot a lot of blue but I kind of want to do something with this washi tape I haven't used washi tape in a while but I really like the hexagon boxes and I just want to use those not sure and I may not even use this book so I'm trying to let me go ahead and place this out I'm gonna use my tape that is not basically permanent I'm trying to basically do more talk through videos and just see how you all like them and how I like them and I'm working on doing better with playing my lines here we need to wipe that out something I notice like everybody nobody really uses this box and I'm thinking one day I'm going to use this box one day one day I'm gonna use it so should I put washi tape there or should I put just is washi tape so my last video I was saying that I took this a little bit of time off just to you know enjoy planning again well not again but just to enjoy planning and pretty much why I started you know planning so I've kind of lost my weight a little bit I was trying to find plan a piece and I just really to be honest I don't think I found any plan a piece yet so I wanted to kind of see how I liked the mini and I did plan you know did a plan with me not a plan with me I have the classic as well and I did plan in it for last week but I did not go in that classic at all I was a little thrown off by the designs in it so I don't know but I see myself leaning towards the travelers notebook I don't know I'm just trying to really find some plan a piece and I really thought I was at peace with my a five but it was just kind of bulky to you know carry all the time but I do I did enjoy flipping through it and I'm excuse my best I got glue and everything on here but I did enjoy like you know flipping through it and seeing where I've come from and I still have it I still have it I'm gonna keep it I picked out a sticker yeah this wasn't cut right let me just snip it a little bit me tease so little time it's gonna work we're not so I'm gonna cover up to buy and we're gonna do down here I'm gonna put errands on my exercise so today I'm just kind of winging it to buy so I'm thinking this box is going for me going to be for me to kind of do my stats I'm kind of trying to change things around a little bit but I hadn't used washy and I keep buying it I mean I've loved washy since the day I started playing and I just kind of got away from it so I kind of wanted to get back to my washy one's just a wee bit off I can see that line up here so I'm working on perfecting my my layouts and I think I'm gonna put one over here we'll do blue and so this is gonna be kind of a blue spread okay so I'm in my Walmart sticker book here so this is what I need but there is a problem I'm gonna cut this two off it's on there I knew I'd find it there's another so like another one so I'm gonna take that one and cut the two off as well how much that take off and then Saturday we need something here I'll take another one this one is more of a gray one cut that off hey you guys so I just filmed an after the pen video I did a video on my phone of the things that I added after my camera cut off so I basically added my girl Piper from goldmine and cocoa these arrows from my I just thought about I meant to actually do this afterwards but I couldn't get the video to go to mine from my phone to my email so I said well let me you know just not leave them hanging so you'll see me do this process of after the pen but here is my little hustle and sunglasses from bunny plans and code things many plans I had these asterisk marks from the Walmart sticker book excuse my dog in the back and I think that's all that I added so it wasn't much but I just didn't want to leave you all hanging and want to tell you guys thank you so much for watching and I'll see you in my next video