Hello, my name is Keith Packard. I work in the device OS group at Amazon as a senior principal engineer. Today I'm going to talk about Pico Lib C, a C library designed for embedded 32 and 64-bit microcontrollers. In this presentation, I'll describe what I see as the requirements for an embedded C library, the pieces from which Pico Lib C was built, how development progressed, results of that development along with several projects that have Pico Lib C support integrated into them. Finally, I'll briefly touch on future work that I hope to see done in Pico Lib C. Small systems are small. They can be really small. The embedded hardware iFly uses systems with 32 to 128 kilobytes of RAM and 4 to 32 kilobytes of RAM. They often use low-performance 32-bit cores. Some have a 32-bit floating-point unit, but many have no FPU at all. Developers writing long-running embedded software often want to avoid depending upon dynamic allegations exceeding. As it's easiest to prove that malloc will never fail if malloc is not linked into the application. As a developer, one of the steepest learning curves with embedded development is getting the very first Hello World application compiled linked and running on the target device. Arduino has had tremendous success by making that process easy enough for even me to teach to middle school students. Embedded systems generally make modest demands on the C library. The most commonly used functions are string and memory APIs, things like stir copy, men move, and the like. Applications doing computation may need some math functions like square root sign or the occasional Bessel function. Standard IO will often only be used during debugging to send output to a serial console to help diagnose software and hardware issues. However, applications may also use these functions to handle JSON, YAML, or other text interchange formats, and so strict standards conformance can be critical. While I am a strong proponent of share like licenses, a C library needs a pragmatic approach to be useful to all developers. A clear MIT or BSD license is best practiced in this space. To make starting with a new embedded platform easier, developers will benefit from extra support in the C library. First, the processor, memory, and library need to be initialized. Second, the linker needs to know how to lay out the application in RAM and RAM. This includes hardware-specific information, processor setup instructions, and library initialization code. Finally, providing debug output from the application using semi-hosting or other architecture-specific mechanism lets the developer see debugging information to four clocks when serial port drivers are working. With these three tools, a new SoC can be brought up using only the memory layout of the device, as we'll see later in some examples. When I started doing embedded development in the modern era in 2009, I was using an 8051 SoC. The compiler, SDCC, came with a small C library, so I didn't have to think about it. In 2012, when we built our first Cortex-M3 board, I also had to find a new C library. For this project, NewLib was too big and required too many support routines in the form of libgloss, including S-break from ALEC, which was required for standard IO. I initially settled on PDC lib, as that was at least reasonably small. However, it used a lot of stack space for printf and didn't have a math library. This library seems to be an experiment building a small C library, but not in building a C library for small systems. Some SoC vendors provide proprietary C libraries. These are often ports from older 8 and 16-bit systems, which can lack compliance with modern C standards in some areas. And of course, they're not free software, which makes them uninteresting to me. After a couple of years of using PDC lib, I decided to return to NewLib and see what can be done to make it usable for my work. I want to say first that NewLib is a great project. The code is easy to work on, the community is welcoming and supportive, and I've been happy to collaborate with them. Everything here relates to using NewLib for my small embedded projects, which is not what NewLib is really designed for. In looking at the changes that I wanted to make, the first thing on my list was StandardIO. NewLib StandardIO is designed to offer good performance and full compatibility and systems with an underlying POSIX API. It has internal buffering and allocates space on the heap for them. Replacing the whole thing seemed like the best option. I also wanted to get rid of the libgloss OS shim layer. Libgloss was originally designed as an interface between NewLib and whatever underlying operating system it was run on. With bare metal environments, there is no operating system, and so there really isn't a reason to have this library anymore. NewLib uses POSIX interfaces internally, porting to an RTOS is usually a simple matter of making sure the necessary POSIX interfaces are available. Fortunately, most of the common uses for libgloss APIs were in StandardIO. By replacing that, the bulk of the problem was already solved. One other huge consumer of RAM in NewLib is the struct re-ent. This structure holds all per thread state for the entire library. Replacing this with modern thread local storage techniques would free up a lot of memory while still allowing applications to take advantage of library APIs which needed persistent state. NewLib is an old code base that has seen development extended back to the pre-ANSI era of compilers. The C language has changed a lot since then, and how we use the language has changed even more. It's been a long time since I defined a new API with a bare int type. We now know that it's best to use a more specific type that won't surprise you with overflow issues or sign errors on some new platform. At a minimum, the library should compile cleanly with WLW extra flags. Finally, it's unreasonable to expect code review alone to catch errors and changes to the library. An extensive and automated test suite is table stakes for a project of this size. I got started hacking on the StandardIO changes that I wanted to make and sent them into the NewLib bailing us to see what feedback I might get. That was when the reality of what NewLib was hit me. NewLib is not a library for embedded application. NewLib is the SIGWIN C library which happens to be used by many embedded developers lacking an alternative. In particular, radical changes to the API and ABI of the library could never be integrated, as those would break binary compatibility for SIGWIN applications. So I decided I had to fork NewLib and start a new project. Once I decided to abandon attempts to upstream my work, I felt free to make all the changes I wanted, building the libraries I thought best. The good parts of NewLib I kept, the math, string, and locale implementations worked great. Having had experience with AVR Lipsy on app mail processors, I took that code as the basis for a new StandardIO implementation. To get rid of struct re-ent, I decided to replace it with thread local storage as supported by the C language. That involved changing nearly every file in the library, removing the parameter from internal functions, creating new thread local versions of all global data. The tests needed to run on target architectures. PicoLipsy includes enough infrastructure to build and run applications on bare metal hardware without depending on any external software. That includes startup code, linker scripts, and a mechanism to get error codes out of the test and up into the test framework running on Linux host. These are also what developers need when starting to work with a new chip. Changes to move the code base from the old style C to more modern practice were made so that PicoLipsy now builds with a C18 compiler and builds cleanly with GCC and Clang's WALW extra flags. NewLib also uses an old style build system with a maze of auto-tool bits and nested configure scripts. Instead of modifying those, I decided to overlay a new build system on top using Maison. This had a couple of advantages. First, it meant that I could ignore the existing build system so that upstream changes to that wouldn't affect merging my code changes in. Second, Maison builds are dramatically faster. A full build for all embedded ARM targets, compiling 28,429 files, takes only 38 seconds with an empty compiler cache. With a cache hot, that same build takes but 6.3 seconds. For some internal testing, I reanimated the NewLib test suite and then started adding more tests. NewLib includes piles of GPL code, but none of that is likely to be used in a non-SigWin binary. To make the PicoLipsy license status clear, all of the non-BSD license library code has been removed. The printf test cases came from a GPL license testing project, but those are not part of any possible library build. Now I'll start going into some of these changes in more detail, starting with the math code. One of the most useful bits of NewLib is the math library. That includes implementations of the standard math functions as specified in IEEE 754 and CC in POSIX. Lots of this code came from Sun back from the early 1990s. A couple of years ago, ARM provided some new float code using double precision intermediates to reduce the number of instructions necessary for these operations. Unfortunately, the resulting code is less accurate than the old Sun code. And of course, it's really only useful in hardware that has 64-bit floats. As a result, PicoLipsy disables this code into vault builds. Some of the math library codes split into two layers, a lower-level IEEE 754 API, which does the computation, including raising exceptions on hardware that has them, and a higher-level C API, which uses those lower-level functions and also updates the Erano as appropriate. The library can be built without Erano support, which eliminates the C wrappers and exposes the IEEE functions using the C names. These functions should be squashed together, moving the Erano bits into the lower-level functions. NCC has slowly refined the use of Erano and now has relatively consistent behavior based on the underlying IEEE 754 exception definitions. POSIX constrains behavior further. For instance, C17 says that a domain error may occur for POW 0,0, but provides no hint to the value returned, while POSIX requires the return value to be 1 and also requires that no errors are raised. PicoLipsy code has been modified to follow the POSIX spec as closely as practical. Exception generation relies on executing instructions that raise the appropriate exception, and that is challenging when C compilers work hard to move computation from runtime to compile time. I don't oversurefy a way to force a particular computation to happen at runtime. We've adopted some techniques which work with existing compilers, but we'll need to keep testing the library to make sure compilers don't outsmart us in the future. With the PicoLipsy testing infrastructure in place, tests were added to verify Erano and exception values for all math library functions and all exception causes. PicoLipsy inherits its standard I.O. from AVRLipsy. This code uses a small in-ram struct to hold per file state. PicoLipsy's standard I.O. is built on two primitive operations, get a character, and put a character. Any file struct includes pointers to functions which do just that. This means that implementing I.O. for another system involves implementing just these two functions, not a large set of POSIX APIs. To make PicoLipsy's standard I.O. code re-entrant without requiring locking, the un-get field is manipulated with atomic operations. As this field gets modified at runtime, the struct itself needs to live in RAM. There are macros which help applications initialize the structure correctly, also inherited from AVRLipsy. Standard in, standard out, and standard error are global pointers to file structs. They are declared const as PicoLipsy doesn't modify them, and so that they may be placed in RAM. These can all point to the same underlying file object if desired. For systems that do support POSIX functions, PicoLipsy provides F open in friends using those. FD open creates a file struct with getC and putC pointing at functions inside PicoLipsy, which then use POSIX, read and write. This support doesn't extend to fseq or rewind currently. Those are not yet implemented, although they could be added fairly easily. The standard I.O. code has made some obvious trade-offs for size and simplicity versus performance. Funneling all I.O. through narrow one byte functions slows things down. There are also no multi-byte or wide character support. For my applications, those have seemed like good choices. I'd like to hear what other people think. Print F, and to a lesser degree scan F, are key functions for any C library. When used for debugging, they need to be small and avoid interfering with other parts of the system. When used for data interchange, they need to be NCC and POSIX compliant. The original AVRLipsy print F is remarkably tight and has only a few issues with standards conformance. The one major gap is in printing and scanning floating point numbers. These are fundamentally base conversion functions converting between the base 10 printed form and the base 2 internal form. Think about how 1 tenth is represented in binary form as an infinite repeating fraction. This makes exact conversion impossible. So I'll redefine exact float spring conversion as a conversion where a number printed and then re-scanned generates exactly the same internal bits. Newlib, glibc and other C libraries use arbitrary precision numbers for this style of exact conversion. This is slow, large and generally requires malloc. PicoLibc uses the Rio fix precision algorithms developed by Ulf Adams to perform these operations. These require 128 bit operations for double and 64 bit operations for float conversions. This reduces code size and avoids malloc calls. PicoLibc has numerous additional fixes and improvements including hex format floats so that it nearly meets C18 requirements. The notable exception being numbered arguments. Newlib was developed before threading was common in POSIX environments. In that era, there was no C-language support for thread local storage. To work around this, Newlib introduced struct-rient. This struct contains every variable in the library which needs to be thread specific according to POSIX. That includes common things like air-know, but also rarely used items like sign-gam. The global variable used to hold the sign return from L-gamma. This struct uses 656 bytes on ARM32 bit. Newlib Nano includes changes which dynamically allocate much of the struct as needed reducing the static size to only 96 bytes. But PicoLibc eliminates this struct entirely instead using the C-language thread storage class. The linker gathers all of the variables of this class effectively creating a struct on the fly. Only TLS variables used by the application end up in the application. At runtime, access to these values uses an ABI-specific mechanism. For some architectures, PicoLibc supplies helper functions for this. PicoLibc also provides functions to allocate and initialize and set up ABI-specific mechanisms so that applications can manage multiple TLS blocks without needing a detailed understanding of the target architecture. We'll see this later in some examples. I was a bit surprised when I wrote my first Cortex-M3 code that I actually needed to initialize the processor, fill in the interrupt vectors, and initialize memory before starting my application. On 8 and 16 bit processors, this code is usually provided for you along with the compiler and C library. Like so many others, I wrote an application-specific version of the necessary code and compiled that with my application. For PicoLibc, I decided to take that and adapt it to be a bit more general, adding a default interrupt vector, initializing an heat-floating point unit, as well as setting up TLS. And now it could be used on most Cortex-M processors. After that, I wrote the equivalent code for RISC-5 and AR-64, then discovered that there are non-thumb arm processors which require completely different initialization code, so I added that as well. Finally, my friend Mike Hartel wrote startup code for x86 CPUs, both i686 as well as AMD64 mode. I bet very few of us have ever considered x86 as a bare-metal processor. As usual for embedded programming, these need to be customized, depending upon the target environment. So in PicoLibc, there are built three ways, depending upon the API support required. The normal way, which invokes constructors, but just spins if main returns. A hosted mode, which also calls exit, passing the return value from main. And a minimal mode, which doesn't even call the constructors. I use the hosted mode when running under QEMU to capture the exit status from test applications and report that to the test framework. But most of my actual applications use the normal variant, as I often have a constructor or two. Of course, some environments need even more control over startup and exit, and end up writing their own code. For them, the PicoLibc startup code can show what they need to do to support the library. I sometimes think that linker scripts are a dark art in embedded development world. The scripting language is a bit unusual, and the contents depend greatly on the implementation details of the C and C++ compilers, along with details about how the C library works. Gathering all these requirements together and writing a working script often takes many iterations and experiments. And even then, many of the scripts I've written only work by accident. For PicoLibc, I've tried to create a sample linker script that shows all the necessary pieces to build successful C and C++ applications, including handling thread local storage and C++ exceptions. The only information the developer needs is to provide the ROM and RAM addresses and sizes, and perhaps the desired size of a stack. For more sophisticated developers, the sample script should explain the language in PicoLibc requirements and help shorten the time to develop their own script. This script expects applications to put objects in special sections. For instance, the NVIC interrupt vector in Cortex-M processors usually needs to be the very first thing in Flash so that the reset vector and initial stack pointer can be loaded from it. The script also expects many symbols to be defined so that the code knows how memories are ranged. For instance, the startup code that sets up RAM needs to know where the contents of initialized data are in Flash and where they need to go in RAM. These are all defined in the PicoLibc documentation, but using the sample linker script can help clarify how to set things up. Semi-hosting allows a program running in a debug environment to communicate with the debugger. This can be used to provide debug output and status information even before the system clock and IO devices are running. Semi-hosting works with a hard-to-debug link like JTAG or from within QEMU. Using semi-hosting, the program places information and registers in memory and then invokes a breakpoint or other instruction which triggers a debugger visible event and halts the processor. The debugger can then use the register and memory contents to perform an operation, be that writing to the console or reading and writing data from the debugger host file system. ARM and RISC-V share the same spec which PicoLibc fully supports. x86 has a much smaller set of operations, limited to writing the console and terminating execution. Testing is key to the success of any system software like PicoLibc because most of the library will not be used by any one application. It's difficult to do in situ evaluation of the code. Instead, explicit low-level tests are needed to ensure the library conforms to the expected definitions. Fortunately, C libraries have several comprehensive specifications that define library behavior. This makes building a test suite a matter of identifying statements in the specifications that can be converted to assertions than writing code to test them. Newlib had an existing test suite which was not working when I found it. Fixing those tests and getting the code passing again took several months. The code fixes were shared with Newlib, but there was no way to fix the test suite in Newlib itself as it doesn't have any way to run tests in the target systems. To validate tests, they are all run against both PicoLibc and Glibc. PicoLibc contains numerous architecture-specific code paths, optimizing for space and speed using a combination of special C code and handwritten assembly. The target architectures have varying characteristics as well, from floating-point support to sizes of basic data types and even sign-in-ness of the char and w-char-t types. Making sure all this code operates correctly can only be done by executing on all the target architectures. PicoLibc does this by building bare-metal tests for each architecture and then running them under QEMU, which avoids needing a pile of sketchy embedded hardware for testing. Bare-metal code requires hardware-specific support in the form of startup code and linker scripts. Finally, the tests also need some way to report status back to the test harness, which uses the semi-hosting support in QEMU. QEMU includes support for numerous architectures, but not all of the supported CPU types are actually available. Every non-Cortex-M CPU can be used in the non-machine, but there is no equivalent for Cortex-M CPUs, which are only available in full SoC models. As a result, only the Cortex-M3 CPU can be tested in upstream QEMU. I submitted a patch adding a VRT-M machine that enabled testing of all Cortex-M models in QEMU, but that was rejected as out-of-scope for QEMU upstream. Within the upstream ULIB source are thousands and thousands of tests. Essentially, none of these work having been neglected for years. The math tests appear to have been translated a number of times, corrupting the expected values, places which should have been NAN or INF have been replaced with 64. Fortunately, the test code also contains paths to compute the expected values by calling the appropriate routines. I regenerated all the tables by using glibc as an oracle. New tests have been added to the test suite code as well in response to bug reports. With major rewrite of nano-malloc code, extensive malloc validation and stress testing was used to make sure it works in a wide range of environments. An external printf test suite was incorporated to make sure changes to printf continue to produce the expected results. Finally, a sequence of bug reports against NewLib's math routines, which reproduced incorrect exception and error-no results, led to the development of tests against all the M functions to make sure they produced the right error-no and exception values. To make sure the tests continue to work correctly, they are built against glibc and the output verified for that library as well as picolibc. With the tests reconstructed and a test-hardest built that uses QEMU to run them, all of the tests now pass on ARM, AR64, RISC-V, and X86 today. While the official upstream host for picolibc is at keithb.com, there is an active picolibc project at GitHub which accepts bug reports and merge requests. There are GitHub actions that test on each change to the main branch and all merge requests to main. This allows problems to be caught before being merged, offering confidence that the library continues to work as expected, even across fairly significant changes. GitHub appears happy to do a lot of testing for the project. Tests are built-in run on AR64, AMD64, ARM, RISC-V, and I686. Tests are also built on the extents at LX106. In addition, most of the tests can be run natively using the underlying system C library to provide POSIX functions. The actions build and run tests on both Linux and MacOS X systems using this mechanism. In total, picolibc is built 1,121 times, and the entire test suite is run 1,026 times. Some recent changes to picolibc include merging the math library into the C library because some of the C library functions wanted to use functions in the math library. This means that applications don't need to use dash lm to get access to the math functions anymore. A stub math library is included to provide backward compatibility. Printf and scanf recently gained support for hex format floats, %a in printf. The printf support is designed to produce the same output as glibc does, which is easy to understand for those of us familiar with IEEE 754 binary floating point formats. An ongoing source of trouble has been making C++ applications build with picolibc. Some of that has to do with how GCC sets up include paths and how libstdc++ headers are written. For cross tool ng, I've actually got a patch to GCC that removes the use of pound include next and header files as that would cause the compiler to find non picolibc headers following the libstdc++ headers. For the last week or so, I've been working to clean up the library so that it builds cleanly with the wextr compiler flag. Quite a bit of this work was caused by old style code which used inappropriate types like int for sizes or wintt instead of wcharity. This found a number of possible bugs but nothing that would likely cause problems in real use. Now it's time to show some samples of how picolibc can be used. The first one should be familiar to anyone who has learned to program in C. Hello.C is a classic first C program which can be used to verify a tool chain including the C library and the runtime environment because the string passed to printf is constant and ends with a new line. GCC optimizes this into a call to puts so the resulting binary doesn't contain printf at all. This linker script describes the memory layout of an STM32L152RBT6 Cortex M3SOC. It shows the 128 kilobytes of flash starting at 0x0800000 and the 16 kilobytes of RAM starting at 0x2000000. The picolibc linker script included at the end of this file takes those values and lays out the application and memory. Flash contains instructions, constant data and initialization values for RAM. At program start those initialization values are copied to RAM and the zero initialized area of RAM is cleared. If your application is fairly simple this style of linker script will probably work fine. If not you can use the picolibc linker script as a guide to what picolibc needs. It might be nice to include a collection of linker scripts like this one with definitions for common microcontrollers that would be one less step for starting a project. This command invokes GCC to compile the application and link it with picolibc. The dash dash spec sql picolibc.specs option loads a file adding command line parsing for picolibc options like the oslib and crt0 as well as telling the compiler how to find the right picolibc files. Dash dash oslib equals semi-host adds the picolibc semi-host library after the C library to connect picolibc to the semi-hosting environment. There's also a different library called dummyhost which provides dubs for tiny standard IO so that you can link an application using standard IO without any oslayer. The dash tstm.ld option uses the linker script that we showed above to arrange the program in memory. Here we see the amount of flash in RAM used by the sample application. Because printf has been replaced with puts by the compiler, the binary is surprisingly small. This is a complete Cortex M3 image that runs on real hardware and includes the interrupt vector and semi-hosting interface routines. This script loads the program in flash and then starts it running while monitoring the device for semi-hosting requests. Console output from the application appears on standard out. This example is unusually short because OpenOCD includes information about the STM32L discovery board which includes built-in debug connection which avoids needing to specify both SOC and debug dongle information. You can also run this application under Quemu that requires relinking using a different script as the memory addresses supported by the nps2-an385 Quemu model are different from the STM32L152RBT6 with flash starting at 0 instead of 0x08000 otherwise the .l file is identical. Quemu also supports semi-hosting which can be enabled on the command line. A script like this is how PicoLibSe runs all the tests during development. Here's a program that shows the size of PicoLibSe's printf function. Unlike the first example, this one includes an argument so that it isn't converted into a call to puts. We use a floating point number to show the size of the different versions of the printf provided in PicoLibSe. Using a bit of simple definition magic PicoLibSe lets you select which type of printf function your application will use at link time. Because of the way floating point numbers are passed to var arcs functions like printf we need to use printf float to handle the 32-bit float value. When using the float-only version of printf this inline function wraps the 32-bit float in a 32-bit int preventing it from being extended to a 64-bit double. When not using the float-only printf this function casts to a 64-bit double. This example can be compiled and run like the hello world example above. This table shows the different size of the variance. The first is the full version of printf supporting 32 and 64-bit floats. The second only provides support for 32-bit floats. The third has no float support and doesn't support 64-bit ints. To add 64-bit int support would increase the size by 400 bytes. I also included sizes for the original Lulub code both full float and integer only. The initial RAM size plus the amount of memory allocated from the heap at runtime. You can see from these numbers why many developers avoid printf in standard IO often writing custom IO routines. Adapting the AVR standard IO in printf code along with the Ryu floating point conversion code provides a standard IO that fits in most ROM budgets while using very little RAM. Here's one last example which is more like a typical embedded application. This program blinks the blue LEDs on an STM32L discovery board by accessing the GPIO controller on the SOC programming the two pins connected to the LEDs' outputs and then toggling them with a delay loop to slow things down enough to see. This example doesn't use much of the library functions, but it does use the startup code in Likerscripts so even the short example is easy to write with PicoLibC than without. Now I want to talk about work done in other projects including PicoLibC including tool chains, operating systems and hardware emulation. Lots of people are using C++ for embedded applications and they often want to use higher level libraries including libsteaded C++. One of the pieces of libsteaded C++ is IOStream which provides abstractions on top of regular C standard IO. The GCC libsteaded C++ implementation has performance optimizations which penetrate the standard IO interaction with custom code for both glibc and newlib directly manipulating private fields within the file struct and bypassing the C library with direct calls to the underlying POSIX API. I submitted patches to GCC which eliminated these optimizations to make libsteaded C++ work with PicoLibC. These are selected by building GCC with the enable standard IO equals standard IO underscore pure flag and they are now included in GCC version 11. The INRIA CompSert project is building a formally verified C compiler for embedded software. Projects using this compiler would prefer a C library also built with a verified compiler. CompSert developers have provided patches to PicoLibC that allow it to be built with their compiler. Most of these changes fix GCC in clang specific language constructs in the code and so they have generally improved the portability and C standard CrosToolNG is a cross compilation toolchain building system. Select a target system in a suite of libraries and CrosToolNG will download the bits, build the host tools, compilers and libraries creating a self-contained toolchain ready to build your embedded projects. Zephyr uses CrosToolNG to build its native toolchain. One of the assumptions built in a CrosToolNG is that there is only one C library. For most users that's pretty reasonable as they only need to use one C library to build their projects and that's how initially integrated PicoLibC into CrosToolNG offering another C library alternative to NewLib and NewLibNano. With a resulting toolchain I managed to build and test numerous applications including the Zephyr tests. However, that's not how Zephyr project was using CrosToolNG. Within the Zephyr fork of CrosToolNG was a Kluge patch to build both NewLib and NewLibNano. This allowed Zephyr users to download a single toolchain and decide while building the Zephyr project which C library used. I decided to work from there and create a mechanism that could be upstreamed in a CrosToolNG that would build all three C libraries PicoLibC, NewLib and NewLibNano and offer the users a mechanism to select between them while building an application with a toolchain. Working within the CrosToolNG community we ended up using the companion library mechanism for NewLibNano and PicoLibC to build these in addition to the core NewLibC library. You can also ask to build only one of the three although the configuration mechanism is a bit clunky. Taking advantage of the libstd at C++ patches incorporated into GCC, CrosToolNG also builds libstd at C++ for all three libraries. All this work is now in CrosToolNG. Riot is an operating system for IoT devices. There's a fun group of people working on it and they discovered that they were already working on integrating PicoLibC in the summer of 2020. I joined it and helped answer a couple of questions. That code got merged in August of 2020 and has seen a steady uptick in usage by Riot developers. Because of the straightforward Riot code base adding TLS support was easy as it could use the PicoLibC TLS helpers unchanged. The whole integration work took about 500 lines of new code in Riot including the TLS bits. Reviewing Riot development over the last year there have been quite a few patches related to PicoLibC so it seems pretty clear that PicoLibC has taken root in the Riot community. If you're looking for a great little IoT operating system I'd encourage you to look here. Many of you are probably familiar with Zephyr, the embedded operating system sponsored by the Linux Foundation. I got interested in when I discovered they were getting serious about memory protection stuff. An embedded operating system that took advantage of memory protection hardware available in smaller SOC devices sounds like a good thing to me. The PicoLibC integration work started about two years ago. I sent the initial pull request that included TLS support for 32-bit ARM processors. Zephyr has a lot more processor specific assembly code including much of the context switch code with the architecture specific TLS hooks needed to go. It was easier to just do that part in line. After submitting the pull request a couple of people who had been thinking about TLS support jumped in and made the rest of the TLS support part of Zephyr and that series got merged in. But the main PicoLibC integration hasn't been accepted yet. The initial blocker was a lack of tool chain support which led to getting PicoLibC integrated into CrosstoolNG which led to fixing libstandard C++ to support other libc implementations. By then I was off working on other things and unable to get back to Zephyr. I've got the patches re-based and working again. I'll try to see if I can get them posted and ask if somebody else wants to help bring this series home. PicoLibC could also replace the built-in minimal C library in the Zephyr tree. The PicoLibC code is smaller and faster in all cases while also including a math library and other parts of a standard C environment. This could also replace the cbprintf and printkpas in the system reducing ROM prints quite a bit while improving standards conformance. I started the PicoLibC project because I needed a solid C library for my own microcontroller projects. So I thought I should tell you about some of those projects. First is Altos which is a suite of firmware built into the products that BDL Garby and I sell for use in high power amateur rocketry. This firmware is also included in several amateur radio satellites currently in orbit. While we started with a venerable 8051 microcontroller many years ago we've almost completely migrated to the ARM Cortex-M processors ranging from the STM32 FO42 through the STM32 L151. We started looking at some Cortex-M4 processors or some applications requiring higher performance but haven't quite gotten there. If you're interested check out altosmetrum.org. Next we built Chaos Key which is a USB connected true random number generator built using the STM32 FO42 processor. We built a thousand of these and sold them to people around the world. For that same hardware platform I wrote a tiny scheme interpreter and called the result Lambda Key. It was largely a gag but it did create enough language infrastructure for my next project. That next project was SNEC a subset of Python that runs on a huge range of small microcontrollers from the ATMEGA 328P in the original Arduino to the SAMD 21 chips found in a range of Adafruit products. SNEC is also the primary firmware for SNEC board also based on the SAMD 21 processor. SNEC board has motor controllers and IO pins designed to work with LEGO Power Functions hardware. I ran a crowd supply campaign last year so that I could build a bunch of these boards and started using them in a middle school LEGO Robotics class just as the pandemic began. I'm hoping to get back to teaching kids as soon as I can. The PicoLibSea code has tried to remain reasonably source compatible with NewLib so that patches can be easily exchanged. For example, a bunch of bug fixes for exceptions and Arduino supported math functions have been passed from PicoLibSea back to NewLib. Some patches require editing to get them building in NewLib again. Without a comprehensive test suite it's difficult to know if they work. Changes from NewLib are added into PicoLibSea from time to time. Few of the patches are relevant as most NewLib work relates to SIGWIN support which has been removed from PicoLibSea. I'm happy to continue supporting the NewLib project. Much of the code for PicoLibSea had its origins there and giving back to a community that has continued to improve so much useful code for so many years seems like the best way to thank them. There are always things to do with an old body of code like PicoLibSea. Some of the functions are still declared using KNR syntax. Much of the older and less frequently used code like the search stuff is still written with a casual approach to typing leaving questions about integer overflow safety and the like. Similarly the math library is showing its age with numerous functions less accurate than many other C libraries like Muscle and G-LibSea. This is especially true for odd corners of the library like T-Gamma and the Bessel functions. PicoLibSea can't simply adopt the G-LibSea implementations giving licensing differences. I would also like to see integer only implementations of some of the more important math functions for use on soft float hardware. To help people starting with a new device it would be nice to include linker scripts and compiler options for a range of embedded SOC parts. That way you wouldn't have to dig through data sheets to discover where memory was mapped and what kind of core was provided. Finally we're starting to see more activity with people using PicoLibSea but it's still a pretty quiet project. And that's the end of my presentation. I hope you found it useful and want to thank you for taking time to listen today.


Welcome to Art Resin 101. To get started with Art Resin, first prep your workspace and your art piece.  Make sure that your artwork is completely dry before applying Art Resin. If your work is on a large canvas, you will want to reinforce it at the back with some cardboard to prevent the resin from pooling in the center. If your artwork involves ink, paper, or anything that has the potential to bleed, it becomes saturated under the wet resin, we recommend you pre-seal your piece. If you plan to resin the sides of your piece, tape the underside of your artwork to catch any drips.  To determine how much Art Resin you'll need, use our resin coverage calculator at artresin.com slash calculator. It's a good idea to warm the resin and hardener up in a water bath before measuring it out to reduce bubbles. Just make sure not to get any water in it as it will turn the mixture cloudy. With gloves on, pour by volume precisely equal amounts of resin and hardener into a mixing container. Remember to replace the proper cap on each bottle once you're done pouring. Black for resin, white for hardener. Stir your resin and hardener mixture thoroughly for at least three full minutes. You'll want to scrape along the sides and bottom of the container as you stir to ensure that the entire mixture will catalyze properly and therefore cure as expected. If you see bubbles forming during this step, don't worry, we'll take care of them in step five. Once you've mixed both the resin and hardener together, you'll have about 45 minutes of working time to spread it before it starts to cure. If your mixture is warmer than room temperature, your working time and cure time will be decreased. Pour and spread the Art Resin as you see fit. If you intend to coat the entire piece, start by pouring in the center. Use a spreader to guide it exactly where you want it to go or you can use a disposable brush to embellish only certain areas of your piece. You can resin the sides with a disposable brush or your gloved hand or just let it dome neatly on top. After spreading the Art Resin, air bubbles will begin to rise to the surface. We recommend using our artist torch to pop bubbles for a flawless finish. Just hold the torch a few inches away from the surface, moving it constantly just like you would iron clothes. Pick out any hairs or dust particles with a toothpick. Cover your piece to protect it from dust and let it sit overnight. In about 24 hours, your piece will be hard to detach. After 72 hours, it will be fully cured. And don't forget, cure time will be decreased in a warmer room. To clean and reuse your mixing tools, wipe them down with paper towel promptly after use. Spritz with rubbing or denatured alcohol and wipe down again for a final clean. If necessary, wash skin promptly with soap and water. If you've taped off the underside of your piece, remove tape carefully no later than 24 hours post-pore. And voila, behold your wonderful creation.


How are you guys today? I'm gonna take you through my kitchen refrigerator pantry So you have an understanding of what I'm currently eating now that I'm no longer on the carnivore diet And as much as I wanted to do a day of eating it wouldn't really encapsulate every single thing I've been consuming so I just prepared my dinner for tonight and I'm gonna have as a carbohydrate source some white potatoes in the form of french fries and This is about two pounds of grass-fed lean ribeye steak. Here are actually some potatoes that I haven't cooked yet Those potatoes were boiled in water as well as some vinegar and then thrown in the oven Alternatively to these white russet potatoes, of course everything is organic. These are the actual potatoes. I Have pasta so I'll have organic spaghetti this week I've actually been really craving potatoes, but the past three weeks was you know that organic pasta mostly organic spaghetti Here are just some organic grapes on the counter You know maybe a couple times a week. I'll have some organic fruit usually apples or grapes This is something a little more recent most of the time I'll do some pineapple shakes, but I'll show you guys that in a second. The main type of pasta I consume is Higher quality more expensive stuff like this pasta a brutsis from Italy This is like four to five dollars. I like it because it tastes really really good, but the regular organic stuff is fine Here are some organic lemons that I'll occasionally throw into my pineapple smoothies and This is organic beef broth that I will sometimes cook the potatoes or pasta in In these whole foods bags, I bought some coconut milk that sometimes I'll use to make cookies This is some more beef broth some juice so Normally past few weeks. I was Blending up some frozen or whole fruit in the blender. Just this past week. I've been having some juice here and there from really craving energy There's some salt in there too, and this is some more potatoes Over here is Some of the juice that I've been drinking. This was the vinegar I put on the potatoes This is the nature's glucose that I've been Putting in some smoothies with some fruit just to sweeten it up a bit I'll also use the nature's glucose to make some cookies and this is some cookie dough I made yesterday while doles. I'll take this I'll put in the oven I'll have some chocolate chip cookies as a treat I've been trying to avoid chocolate because usually I have a hard time sleeping. It makes my skin break out But from a caloric density perspective, you know with I'll make these with either animal fat or coconut oil Wheat flour. It's just super super calorically dense. So it's good for bodybuilding. It's good for gaining weight because If all I eat is steak, you know potatoes and grapes Regardless of how much I stuff myself with even you know, I'm eating this meal twice a day I'm eating three to four pounds of red meat, you know two to three four pounds of starch and Fruit too, and I'm still losing weight. So I do have to add things like the cookies and the fruit juice just to maintain the weight One bodybuilding I Do have some supplements and some various enzymes and antimicrobials here. I'm not really taking that much maybe once a week I'll take some vitamins and minerals and On a daily basis, maybe I'll take a few enzymes here and there But not nearly as much as I was taking over the past few months So down here in my garage is let's like a stockpile of supplements like enzymes and vitamins I don't think I've gone down here for a month or two It's just you know in case stuff goes crazy with what's going on in the world And I can't get my hands on some stuff. I might need I have some extra down here and not much in my fridge Just a bunch of steaks really so Here's some leaning ground beef from Frankie's Surrange meats Here's some Chuck steaks that have probably gone bad because I don't like Chuck steaks that much But in this crate is what I've been eating. This is some Rib-by-steaks, and there's some natures glucose in here. I actually have to take out but mostly rib-by-steaks. I do have some Probiotic juices in here that I haven't really been consuming but what I do have that I'll have maybe once or twice a week is a Toddler probiotic, and I'll basically just take the whole bottle I'll put it in a smoothie and I'll blend that up, and I'll have that for probiotics The freezer down here the only thing I'm really eating from here is this organic pineapple So, you know since fresh pineapples a bit of a pain to ripen it and get it right You know I found organic pineapple chunks, and I've been putting these in the shakes This stuff isn't mine. This is my family. I do have some extra ground beef down here So if I'm not having the probiotics, I'll just drink some juices when I have some digestive enzymes if I am having the probiotics What I'll do is I'll take a tablespoon or two of natures glucose I'll take some sea salt some vanilla powder some of that frozen pineapple I'll take two organic lemons, and I'll blend that up here, and then I'll strain that out Maybe I'll show you guys how I make that in a video, and I know I said I wouldn't really explain what I'm doing in detail But it's a very very basic simple, you know, that's obviously why he's doing that I have the steak the protein still eating incredibly large I'm actually eating more red meat than I've ever eaten before in my life I'm eating like three four pounds of steak per day whereas I used to eat like two or three And then I'll have the starch as the caloric energy component, and if I need to add more Energy calories again the juices we have the fruit Those smoothies are mainly for probiotics, so Anyone with somewhat of an understanding of gut health knows that Your gut bacteria need to consume carbohydrates. They cannot eat protein. They cannot eat fat That's why all of these indigenous groups native Alaskans, whatever They consume fermented meat every single day because instead of feeding their gut bacteria with carbohydrates They just replaced the bacteria with new bacteria So what I'm doing essentially by eating all these carbohydrates is consistently feeding my gut bacteria and You know some probiotic shakes that I'll do once or twice a week is just to make sure everything stays healthy That you don't have any fungal problems or dysbiosis I did get a little bit of acne on my face these past two days But I just ate way too many of these chocolate chip cookies I've been making because I was too hungry, but These are the foods that have been working for me I did forget to show a couple of things in my pantry. So let's just take a quick look at that. I forgot what's in here I think it's just some flour so This is the wheat flour that I'll use to make Mainly just cookies. I made some beef patties the other day I just took some flour with some animal fat and then I put the beef in them This is actually Raw macadamia nut oil that I don't really like. I haven't really been using it And in here I have some mustard and I Think that's really the only thing I was eating in here is some mustard and this is sometimes where I put my beef broth Diet still incredibly strict incredibly nutrient dense very high in B vitamins very high in minerals more balanced from the copper and the Magnesium perspective and anything. I'm missing them. I'm supplementing about once a week I would like to get you know the vitamin supplementing back to two or three times a week But I'm sleeping a little bit better without doing that For the starches. I'm really only switching between organic white potatoes and organic pasta Although I might throw in some rice some buckwheat some oats for some variety But I've kind of been enjoying what I'm doing right now and that's been fine for the meats It's really just been the lean grass-fed beef. I've I've tried fish. I've tried pork. I've tried a couple other meats I just don't feel as good eating them the fat sources I'm keeping the fat a little bit lower now that I'm eating so many carbohydrates, but Overall, even though the diet is pretty strict. I feel good right now the fruits Okay with mainly sticking to grapes Sometimes apples and paris on occasion. I really do like the pineapple But it's a bit hard to get my hands on and the quality is really inconsistent The natures glucose, of course, I'm using as a sweetener not only am I putting the natures glucose in the shakes the smoothies that I'm making I put it in the cookies so Once we do a day of eating once I show you guys how I make the shakes and the smoothies and how I do that type of stuff You guys will get a better idea of What I'm talking about so I've probably been doing this diet for about a month now I've been feeling a lot better and it's looking like I might have to do this for a pretty long period of time You know, there seems to be two fields of thoughts for my viewers right now one group just trying to advertise other people's diets and Another group trying to guilt trip me into revealing more information so that it can be plagiarized and stolen and I do understand that a lot of people do want my health information and do want my health but at this point in time It's really really difficult for me considering, you know, what happened with the Joe Rogan podcast You know two weeks ago and how it's so easy for people to basically just steal every single one of my ideas without any repercussions I honestly didn't even want to make this video today. It's just I'm just tired. I'm exhausted. I have a headache and I didn't want to have to write a script and film something else and This the scripts I had written weren't really videos. I was too comfortable doing anyway, so Hopefully this gives you guys some insight to what I'm eating I'm sure some of the smarter people in the comments can figure out why although. I'll probably remove those comments But thank you guys for joining me today. Hey, try out what I'm doing. Let me know how you feel and and We'll take it from there. Maybe some time in the next, you know Six or seven or eight months when I have a book ready more likely towards the end of next year early 2022 I might have a book ready on this new diet as you know, it's not just something I've been following for a month It's something I've been researching for a very long time Pulling up a lot of studies to reinforce it and just getting my thoughts together and collect it But that's gonna be for today guys I don't think I missed anything. This is really all I've been eating You know the actual amount of food that I'm consuming are very low I think it's less than 10 or 15 total ingredients Check out Frankie's your range foods if you guys want the ribeye steaks if you guys want the ground beef you saw and who knows maybe We'll be able to carry more plant foods sometime in the near future Although we can't produce them ourselves at this moment See you guys for tomorrow's video


What is up a welcome back? Do you have to do a bit of a cake? So do we and we have a new video each week this week? Well today. We're back again with test cut Tuesday Taco Tuesday, except it's not hot unless you have a fish tacos. Oh fish taco Tuesday I'm down with some fish tacos so today We started with the Masculine signs low woodsy woodsy Gare and I have been about 10 rounds on this sign. This is like Little arguing here. Well, then you do it. You know what? Let's just switch jobs. You do the designing And then I was like, well fine, I will design it and then he's watching so much you're doing it wrong Well, what are you doing? Why are you why are you taking that apart? You're never gonna get that back in the place. Yep. That's what he said to me. Guess what? He took it back He listened to what I said and we came up with something together. I think it's good. I mean It's cool, right? There's a lot going on there. So this came from an adobe stock image that we Like completely modified. It's similar but different Yeah, you can hear me, right? Yeah. Yeah, so We decided to go with this and I think it looks really cool. There's a lot There's a lot going on, but it's not too bad. I don't think it's too bad I don't think it's gonna be too heavy. Technically. This is test cut number two. It is test cut two Two test cut one didn't even make it to the show. So test cut two here It's not even a full test the second test cut We had to modify and by modify I mean break some of the pieces so that they'd fit So I will be reviewing this file before it gets sent out All right, you want to hold it up and see if you can hold it up? Yeah, well, let's see if we can go overhead That's it. That's it. It's no longer seated together Like there's only a thousand pieces to the fish. There were ten thousand pieces to the fish. So Yeah I think it's gonna be a fun one All right, you want to say hello? Let's say hello. We jumped right in. Yeah, we jumped right in well I was running late. I couldn't find my phone So usually it's me, but he just as soon as I walked in he literally walked out and then we waited four minutes Well, I want to pull my phone out so that I could see some of the comments over this side And I realized there was no phone So then I had to go find my phone and it was playing on laser number three All right, you want to say hello?  Is it a man cave sign not a door hanger sign? I said you can't put a ribbon on this one. I was like, okay So Corey were to buy a sign Put on his door Would he want something that looked like that? Yeah, so it's kind of where we were working. Yep. So They're thinking about you because he watched a little YouTube videos All right, say say finish saying hi and J. J. I said I see Tyra and Jennifer and JJ Eric Minnesota makes it's Chris Helen Wiley Well Mandy Chantel Lori Annette They already say Mandy Steve Andy.  I couldn't stop at the K Jason, what's up? Kel Jason Kelsey Oh Kimberly Lance you got your laser working yet? I Mean I need to know I was hoping to come to see you this weekend, but we didn't have time for that. Is that? Jean uh-huh or I see it's It looks like a French French last name. So is it Shawn? Yeah, you can punchy. Oh, I forgot my thing She's a New Jersey. So that's Tara. Oh Susan. Wow. I got a long list today. Daniela Whoo. All right. I'm winded Kara Vance chat I'm putting this away. All right. This could go on Hannah Oh and Jennifer All right, let's see you Check the chat. I'll start on the back. All right, because I'm gonna make the back feed burst feedback as we go along here So you can kind of see how this is gonna go together Yes Well remember you're not gonna see I guess just do a little orange and then Little yellow right here. That's what you really need because the trees are gonna hide everything else Well, I think I'm gonna start with white because everything else is going to be white My chat. Oh Yeah, here we are. I'm back. I could see it You are getting some feedback and getting some love on your sign Punchy said looks details. How many people's pieces are we talking about not too bad? We're gonna find out. We're gonna find out. Let's see. I mean the fish was a little crazy at first But I tried to tone them down. So How are you demoted wrencher? Lois says hello you to the demoted wrencher is back. Who who demoted you? Lois Lois. Oh Lois. Oh Go find it. I'll fix it. Lois Yes, Hannah, I know guess what Hannah says Kim you need to combine sublimation with white acrylic for your signs. It's a freaking game changer Let's do that soon, right? Let's do it. Let's do it. Why are you painting anything white? Doesn't have an orange and yellow background? Yeah, but I think you just like well around this edge is gonna be white and then these guys At least have to do these guys Interesting Yeah, how'd you guys see the hedgehog that came to visit yesterday? Mr. Nerds, that was his name. Oh Who oh dude, I never saw you posted. I didn't see where you posted it so if you guys didn't see it we had a workshop here yesterday and Somebody brought well the one of the guys that was here Well, one of them the only guy that was here was gifted a hedgehog in a little carrying case He had a little he had his own little like Soft plastic carrying case and He brought it into the workshop and set him up on the table or yeah him Because he already has a female hedgehog. Yeah, and so this one's called Mr. Nerds and It was adorable. It was super adorable. He stayed bald up so we didn't get to play with him Apparently he only gets active at night. Yeah, they're relatively nocturnal. Yeah, that's what he said Oh Jennifer said Cory loves it your sign And Chris says this is totally an up north of Minnesota sign. It fits Cavendick or perfectly. Yes, it does Up Kim says we are cutting. Oh great And then but Mike wants to talk to you because there's the weak area on the front corner of the bed and Then she said yes, we'd love to have you guys over. Yeah, I totally wanted to come and see you guys and Check things out for myself. I wanted to just put my hands on your laser and see if we could help Yeah, I was gonna give it one of these work Holy ghost Oh Wiley says I'd airbrush the heck out of that fish don't know So here's the thing I mean yes, I'd love to airbrush the fish, but you got to ride the line Like I tell the kids Do you want to be an artist or you want to make money? There's a way to do both. Oh Tatyra saw your hedgehog Hannah said I'm happy to help with all my trial and error and the best acrylic I have found I just did a camper sign and I don't think I will ever paint again. I love so much detail With one sublimation press Yes, well, that's what the DTF was for for us But we haven't done much on here for for these signs because on everybody has one but Sublimation and acrylic is an easy game to get into But you'll have to show me because I wouldn't send me an email Support at K&G make it calm because I'd love to see it. How expensive does the acrylic get? Versus like the MDF would I how much more what what price point would I have to sell these signs at? Yeah, because if there's an easier if all I have to do is cut it and glue it together I don't know. I don't know though. I mean maybe for some pieces, but we get a lot of comments about wow These are handmade these are hand-painted Wow, there's so much detail. These are awesome. They're so crisp their colors are so vibrant So yeah, we got a lot of bright colors this weekend. Oh, there's so many bright colors I don't know if we just get those same reactions if they're sublimated Think we like it though. These are neat Yeah, can I send me an email show me your picture. I mean still gonna try it. I mean don't get me wrong It's still happening and we'll show you guys our results and if Hannah wants to come Show us on the YouTube channel Be more than welcome. Everybody knows where we are Come on down Come on down the bowtown. All right, can I help you? I Don't know are these the colors? These the colors are hitting right there. We're going with Um, yes. Well, no, I don't want my trees to be blue. I don't know why we have blue there What color? Green both front and back Like all of our bottles are empty kind of mad at the girls they are Using the paint and helping us paint for the summer, but nobody's refilling paint bottles Empty Oh, why don't you bring all the paints in? Huh? Is this your just your selection of paints you're going with yes, okay? That's why I thought we needed one. Yeah, are we messing something?  Yeah, but I think these front ones are in Nope in a billiard green which I guess you didn't Think we need it See it. I thought I got all the greens I got all the greens. You do not have all the greens, but I can go get one of them Hold on. I'm gonna put my shoes back I got sneakers on Keep painting my friend keep painting. Oh, I got on my friend. I feel threatened now Would you guys do this weekend? Anybody else have any shows? Anybody else go to any shows? Before I ask questions, let me see what you got Oh Yeah, I also like the colors in the printout so these trees are black in the back Yeah, I agree with Helen. I Like the layered paint pieces.  I had to break this This little fishing lure Had him on the wrong layer Oh, see so Can't fault you for that Well, I told Sarah to look for it So Sarah's gonna do a little looking around for us. You don't want to use like garden spot for these front trees. I Think it's gonna be What happened to the squishy tube? My garden spot is looking dark. I Think garden spot should be the frame Garden spot is this one, right? Oh, what is that? I mean billiard. Well, that's what I was gonna make Shamrock What's happening here? See this one's a little little different than Shamrock. A little more green Well, this is Shamrock, it's the same. Oh Feel like we're a Flying color blind. Yeah, we're trying to figure this thing out on the fly. So you guys usually just cut Tuesday It happens. It's a thing Thank you. Thank you Sarah Dismissed I think garden spot like up here Okay, go for it. Do we have any paper and pen lights back here? Let's be on light Yes All right, let me get back to my comments. Yeah, you just stick over there to your comments Let me handle the sign Fans chat I signed up for patreon this morning. How do I get access to the Google Drive? The Google Drive is Up Chris is already on it. I knew one of you would be on the feed Just keep scrolling down on March 19th. There's a link to the Google Drive Yep Helen says I know sublimation is a thing, but I really like the layered painted pieces. Yeah, that's what Garrett was saying I feel you It just takes it to a whole other level And Lori says they had a very successful show last weekend Oh, that's what I like to hear getting ready for our first three-day festival. Awesome. Yeah, didn't you have the night one? That's fun. I think the night shows are so fun I saw Scott common of two about to be in fun night shows. Yeah, I want to do a night show Wiley doing my first show on July 29th. Super nervous. I hope I get everything done. Don't be nervous Just bring as much as you can and just do what you can You know, hopefully you sell out of all of it. Yeah, you don't have to bring anything home But just know It's gonna be a learning experience You're gonna forget things Like a lot of things Let's see here JJ said I'm a hobbyist. I don't have room in my craft room for anything else. No sublimation Helen has a show on Friday and a farmer's market on Saturday Nice, we don't have another show until mid-July. So we have a month but I think I shared with you guys that we have our a Booth space in the painted tree, which is like an Craft mall. There's all of these different booths kind of like an antique mall, but this is kind of a What are you? Where are you going? The sponges are in there Continue paints on Tuesdays from four to five Call out Garrett Tuesday. I have a show every weekend for the next three weeks. Nice. Oh Gotcha And Chris said you don't need to scroll on patreon.  I'll teach you how to use that point of sale service. I Mean even Even if it's not. Oh, that's cute.  No, this works great for it. Yeah, so he's taken the garden spot Yeah, go overhead so they can kind of see what you're doing there. That looks good. That looks really good So you put the lighter green and now he's going over it with the like those car wash sponges That I cut up into little squares and it's leaving it kind of speckled looking I was doing that for the tree that's supposed to be in the back kind of I hope it separate the two trees Very cool How do you know how much to bring to a show? LOL I don't know if I have a good guide It depends on It really depends on how many people are at the show. I think I did this once I did the math for this one That's like how many people and 10% of them Well, we'll stop at your booth and then 10% of them We'll purchase something like that So it's like a 10% rule we figured it out one time here if it's a I do small, medium, large if it's a small show So if it's it was as the farmers market, we would bring 40 to 50 signs, right? Yeah, two wagons about 40 signs If it were if it was it's a weekend show I would try and bring around 80 signs or four wagons I do it by wagon because I know I get 20 signs in a wagon and then If it's a big show and you know, there's going to be tons of people there Yes, depending on the number of vendors if there are over a hundred vendors there then I try to bring a 120 To a hundred and forty signs So what is that? Six or seven six wagons six or seven wagons. We do have eight wagons And I have brought signs to fill up eight wagons before but on average like this last show I'd have to look up in Frederick, Maryland Frederick Festival of the Arts. I brought Me wagons do we have six wagons, right? Because we actually had some maybe we had five wagons. Yeah, I think it was six. I think you're correct So that's a hundred and twenty signs and that's I'd say that's about average for a big a big show Again, if it's a small like Local event I would only bring and it's just like a half a day I would only bring about 40 signs to wagons. I don't know if that was useful at all but I could maybe do some sort of a You know blog post about that Yeah, I think that would be Helen says bring as much as you can. Yep. Yeah, that's that's true, too Off-road everything says coming from a fisherman. I am impressed at how authentic this looks awesome job guys. Thanks. Thank you It was a it's been a Road, we'll see how this fish turns out It was a team effort I'm gonna say what happened to this color. Oh, where did we put it? I don't know. Didn't you just have it? I did in your hand. Yes.  You got a gimmick gimmicks the kid while he's loving your trees. They are looking really cool Lori Helen just saw the letterboard Yeah, that was from last weekend's show. Can you see it? Oh Jennifer says greetings from Holland Holland That is very cool. He loves it when we get somebody from a far away Exotic lands And how many different sizes signs do you bring out of those numbers? It depends on the sign Whatever I think is popular for that for the show for that show I bring four to six Otherwise, I try and bring at least two of everything Sometimes I mean if I'm only bringing if I'm bringing leftover signs from last time Like for example, I only had one of the did you but did you bring tacos? By the way, did you guys see that I changed the bottom to black and it was worse So definitely I think we're gonna stick with white next time, which is what Tanner said in the beginning No Here put a little bit right here or something Wow He's trying to squirt just a little bit of yellow on here, and you know, it's gonna go. Yep. Yeah, I Got it. It's okay.  I've learned to bring more of my best sellers instead of a Yes, you'll be kind of sorry if you run out of your best sellers and you're sitting there with things that aren't selling But you know, sometimes you're surprised And you got to sit there and try to juge up your Ones that didn't sell. Yeah, sometimes we'll change the paint schemes while we're sitting there people love to see Us it's usually Garrett love to see Garrett painting Well, he's just sitting there, you know when he's not napping You're trying to say I don't know just being funny. I was just being funny He didn't nap at all He didn't nap at all last weekend Maybe not it off once or twice. Oh Yeah, but didn't you also not off once or twice? Yeah, he went to it was so hot this past weekend and Like the peak of the day.  I was hungry and it was hot and I had been busy making bows and fluffing bows and Whatever and then I sat down in this chair and I was flipping through on my phone Which I hardly ever have time to actually just sit and flip through my phone But I was that's what I was doing. It was like two o'clock He did the day and I noticed that my head was bobbing a little I was like, oh geez. I've got to stay awake I've got to stay awake. I should probably stand up and then next thing I would go. Oh my gosh I think I fell asleep again. I should stand up finally. I just had to get up and stand up because I Was sitting there too comfortable and I was totally nodding off easy to do I understand Kim Hey, that looks good So what he's doing here is he's got you can see he's got a little painter's palette going on with some yellow and some orange and He's really trying to create that sunset look Put this so you guys can see it still Yeah, hopefully you can start to see some orange in there show us some score mark So I know where to Stop up here. Maybe you can do that before you do the final one. Yeah There's no there's a this frame has two pieces an inner ring and outer ring And there's no score mark so that we don't know how far up to paint Just guessing and I see you're going way. That's way too far. You're way too far Well, you can see the line of these are these trees Eddie that Ellen gave you the email that's good. I think you need to do an offset in black and then do white letters But the font on top of the cutout seems too busy. Yeah, that's what I was thinking too I love the font, but I think it's too the letters end up being too close together and you just can't read them Steve says you have to go big always right here. Yeah, always. Why bother?  Oh Mandy says looks like I'm gonna do lots of lighthouse signs We have two in just my city and more nearby made one for my mom as a gift from my dad And she posted it and I got orders right away. Awesome Yeah, the lighthouse was a special request Kara says I came and had to jump out how soon will be released on patreon Probably tomorrow looks like I gotta fix some things. Yeah, I think he's got to do a little fixing up Got some fixin to do That blending is wonderful. You're doing a great job Yeah, put some happy little trees, can you hand me that sponge right down there? So what yeah, I just wanted to show you guys what he's using are these sponges here This is what I keep forgetting who I was it Chris somebody one of you guys Tyra one of you guys Shared this tip that you can use these sponges instead of the wedge sponges This one leaves a little more of a texture, but for what he's doing here. It's doing a great job blending so I Recommend having those as well It'll save you on having so many of the wedge using so many so many of the wedge sponges Or sometimes you have to go tiny like the hands As a matter of fact you want to tell him what Jennifer Corey brought you Let's write his pocket She doesn't work with the sleeves that it works better when you get Now it's like I got a short arm and a tiny hand That one and where's your other one these hands are super flexible He loves them he's been carrying him around in his pocket Well, I just like to do normal day things with tiny hands because it makes me laugh Any ideas for wooden Christmas tree ornaments? Any ideas for wooden Christmas ornaments this year, but she has a little trees in there I don't I'll work on those for Christmas in July Lois because I Promised X tool that I would take the F1 and get some shots of us Making things brought it but it was too hot last yeah, I did bring Yes, yes, that's what I was thinking. What do you think? Yeah? Well, yeah, man It's too late now cam Yeah, it was too hot like We were baking underneath our tent AK Bob Ross. Yeah, totally We're the same here dude They do if Garrett I can see he's keeps his haircut really short But right now it's already starting.  You don't have to mess with that too much. Oh, yeah, I guess they don't have to be that So hopefully they'll come I can fix my laptop and be back on it Tried to show Kim one of the designs yesterday, and I moved the television that the laptop is leaning against and the laptop it's Everything is good with it Just the whole case like the hard drive still good The screen is perfect. Yeah, I'm surprised you didn't go order a new laptop I can see you've just ordered some parts. So this laptop is good. It's a good laptop I would rather spend time fixing My laptop and put it again in a new case and try to Loose files. I could do some weight for you while I'm sitting here Might as well make myself a little bit useful. Yeah Carrying this team Kim I love how our lasers become like drying racks on Tuesdays Sorry guys, it's just for today. You want to talk a little bit about what this Friday's video is going to be? I don't feel like we should count our tags before they're hatched You mean our chickens Yeah, I'm not gonna count any chickens ever. I'm gonna let them be them But I'm not gonna count my chickens before they hatch either. What color is this? this water I mean, no, I was gonna do it colors. Yes Okay Agreed agreed. I know how could I possibly do a sign without aquarium every sign has aquarium spot in it Yeah, well, it's that age but It's a good color. I mean it really goes with summer Winter I mean it does go with winter Let it snow. Yes. Yep It needs to be taped down Anyone's watching me thinking why I'm taping that down. I don't know Who that dynamic blue looks different than in the bottle Well, is that too bright? No No, no, I think it's good. No, it's good. We're good Gonna have some vibrant colors Haley and Matt says I get to watch y'all now since school is out for the summer. Oh, yeah Yeah, the kids are here. They're working for the summer And he asks any signs that you think would cut well at 11 inches. Oh We're trying to shrink some We're supposed to be making a list this week of signs Something we're working on. Yeah, there's not all signs will shrink well So for some of those signs that don't shrink well, I'm making an alternative Like the so Mandy if you have some That are super detailed, but you'd love a small version of it like what was that? We had an example that we were specifically talking about Was it that was super detailed and we said Let's let's simplify it a little and then we can shrink it No, I can see his I could see he's not really thinking about it. It was cranky, but nothing was there. I Was thinking about it. No, I could think of is the the dog Hope you like dogs. No, no, it was a themed one because you were saying oh the bees Was it the bees? No Yes, that's a good example of what that's it's an example like the bees are two If you shrink it, it's gonna be too much. So we thought we would Simplified a little to make it a smaller one lose two of the bees Helen said maybe the monogram Yes, that's what it's very specific to bring to a craft show agreed. I love what I definitely I Can't wait till we can do some personalization with this F1 at the craft shows. I Really want to bring Do a bunch of letters or something and then be able to put them together? At the end backers or something I got to be able to bring more monograms because people love the monograms when they I'll bring like five or six random letters and That I think are popular last names in this area. That's what usually what I look up Yes, and everyone says that and they always sell they always sell I just bring a D a J How many people asked for K this weekend, right? I did not have K. I went on Google and I said where are the popular last names in Virginia and Then I cut all those monograms and not one of them was K Okay, but so many people kept asking it's like well, I think it was at least two I know ask us for K and I was like no, but you can bet I'll be bringing K next time And then nobody nobody over ask for K Lori guess what Lori asked for a hummingbird round Who has a good one? Why haven't we done a hummingbird and dragonfly? We don't have a dragon fly I read hummingbird, but I was thinking dragonfly, but we're just talking about dragonfly one this weekend, too Welcome spring flowers from January 28th may shrink down good. Yeah, I want a cottage core mushroom one We started that one to me and a you know guys We have so many designs that we start and never finish Yeah That we get stuck I need to figure out a way to get you guys to help us finish them when we get stuck when we do a little analysis paralysis or I Don't know like we're it's it's close, but not quite. Let me give you some tape Yeah, you're just figuring out what your layers are So the base of the fish this is going to be yellow and then this is white and Yellow white garden spot and then the same green the Shamrock green What's on your mind? I don't know colors stuff Stuff just stuff Kim Thinking contemplating What causes garden spot Haley and Matt said I also had my first paint party last Saturday. It was great. Good for you Congratulations, how'd it go? Did you give them a whole spiel? Missing any pieces anybody glue their fingers together Yes, Helen Haley, I'll see Mandy also said yes dragonfly Hummingbird hummingbird and dragonfly are getting a lot of love Helen says Jack and Sally sign with the moon is great and that sells year-round. Yeah, we had somebody asked for this weekend Well, and they just love I under our standard that has like our most popular signs. It's just the printed standing advertising thing the hope you like serial killers gets That I smell children those get commented on I don't know at least five times a day, right? Yeah, people come in and say something about those those standings work great Helen says she wants a mushroom one And I'll show you guys what I started. Maybe I'll start throwing them out there here. We're stuck on this What are your what should get your feedback? Or give me an idea I can steal Helen said Apparently I need to make a Yellowstone door hanger something about a train station and rip What I know yeah fell down on that one Yeah Just over here kicking myself Why are you going lime green on that Kim there's a layering process here You do your job I'll do my job Well, send it to me Mandy will make our version of it. Mandy says I have a screenshot of one I'm looking out on Etsy, but I haven't pulled the trigger. I'm looking to see what you guys have on deck So send over some inspiration. That's where we do. We just see what other people see what's popular and then we try and do My slave. Yes, put it in our style and then and sometimes it's just whatever You know, it's not just what's popular, but what's being asked for a lot. We do those too Well, I sometimes I'll scroll and then it'll just inspiration hits Like yesterday when she was showing me Some of some other designs.  I got it because he was after this was after the you do it You do the designs and then he goes. Yeah, all right. I got it. You know what give me five minutes Let me let me give you what I'm thinking and then I was like, yes, that's perfect So I came back again. I came back with this then And my first one nowhere near that one nowhere near my second one way far the other way So, yep happens and it gets mad it gets mad along the way Well, I don't get mad. I get discouraged. Yes, that's mad and more discouraged like, ah, oh I'll never finish this symphony Eric says you need to do a Yellowstone sign saying I don't have the energy for you today. I love that one I love that I don't have the energy for you today I feel like Garrett thinks that sometimes Never and vice versa and vice versa, right?   Oh, are you videoing it? Did you just video it? Yeah, it's happening now in real time There we go now it's being videoed. Yeah Oh a realistic train one would be cool Yes, man, I started a train one too. Oh tyron one's a black bear one like this one. Yes All right, somebody's taking notes Helen Helen's like look look man. Look guys. I'll take the notes and you'll ignore them It happens Oh, yeah, that's crazy. Somebody just was talking about that one. Helen said I saw Something friends welcome family by appointment only. Yeah, literally we're talking about that in our booth this weekend literally Michael's fabric my my wife is trying to learn about adobe learn adobe, but it's kicking her butt She has probably 20 hours in trying to layer a frog poor girl And I feel I feel for her I want to be there to help her Um, I will tell you like today I clicked over to photoshop to do something Which I do not know how to use photoshop at all and I couldn't even resize my photo And I was like Garrett Why can't I click on it and drag the handles the little squares in the corners? And then he looks at he's ignored me ignored me and then finally he was like What is it? He comes over to see if he could help and then he was like, oh Well, you don't even have the The little resizing squares. I was like, yes, that's what I was saying I don't even have the basics here and it was just a checkbox. Yeah At the top I didn't even I didn't even know So hard when you first start out. There's so many different Programs, yeah And they each do it their own way Ellen says, okay, I will take notes. I'll put it in a sauna Thank you. I've been working to sauna Uh, thank you Donna. Remember to hit that like button. Go ahead Do you to your thing? Yeah Remember to hit that like button Hit that bell the I said it all backwards Hit the smash the like button Tick that bell no hit the Subscribe button and tick that bell to be notified of our new videos each week All right I wasn't paint mode Kim. I'm sorry keep going.  Wait a minute and we put it back together. I think it'll be easier All right, you might want to go overhead again. Not that they can see because you're working so close to you Close to the vest. Yes very close to the vest Bam boom Yeah, he looks good already. We just pulled it way further away from you guys Yeah, forget it. You didn't see in it mind your own business You need a we need a good one Right overhead so that we can really zoom into what you're doing Interesting what's happening here I was trying something Not sure I love it, but it works That's not done It's not done Kim. Don't judge. Don't be hasty to judge I don't really enjoy what's going on here either though. Tyra says no multitasking today Garrett a helmet cam. Yes. That's what you need all day. He does need it all day I can clean up with some edges on this thing And what else can I be painting? Do you need a second coat on anything? No? I think you're almost there really you're just doing the fish, right? Yeah, I think it's the fish and this lure you want to do with the liver They were Shazam look at that. It came out like a blast Almost empty as most of them are Kind of excited to have Our teens helping us this summer They've really been well one of them has been old enough But we were so far away and now we're just 15 minutes so they can just drive here I don't make them come in until 10 so they can sleep in a little and then You can kind of keep an eye on them And i'm paying them so every sign they do they get paid Sounds like a win win win win win win. They're going to the water park on monday No Saturday So they need to get some signs painted so they can go and have money for the water park And i'm not just handing out 20s 50s It's like it's always 20 20 20 20 20 wrack wrack city I don't know if anyone knows that one I feel like it's pretty popular All right, continue the lyrics. No don't Tracy says you guys crack me up My favorite day of the week made the flamingo and it turned out great. The file was perfect. Awesome. Thank you, Tracy Tyra Lowe's test cut Tuesday as well How do you two enjoy uh Getting to talk to you peoples Helen said i need a boss who will let me sleep in I need a boss that will let me sleep in well what was funny is this morning I get a message from her about 10 30 that said Hi, I just woke up. This is the oldest one. I just woke up well The 15 year old the youngest one Has a touch you can leave it you can leave it at not feeling well Has a touch of the food poisoning. It's not feeling so great And the older one was like do you here? Hey I've got this look. Do you need me today? I hit what did she say? I didn't do much yesterday Do you need me today? I didn't do much yesterday And what else what else something else she said and Garrett said Well, that's all you that you didn't do much yesterday. No, that gets red. You get red Stop I know it. I wanted to paint it. No, I don't want pink. I don't want I don't want to paint it right away I was gonna give it a minute Trust the system kim. I know Now you do a great you do a great job blending all the colors So why are you second guessing my colors? Well because we're pushing top of the hour it is five o'clock So you've got to wrap up your little paint party here sounds like oh that's on you Sorry, I was lashing out. Yeah Was I supposed to be painting that guy? Huh? Was I supposed to be painting that little guy? I don't know. We can always go back and Look at the footage and see is there anywhere I can help and I said, yes, you can paint the lure And then you wipe the paint off of the tongue Yeah, it's still why I just didn't want to spend six days waiting for it to dry Should I make this black It's off of that black Um, I just think why wouldn't you make him like a small version of this guy and do it in that same green? Right, isn't that black? Okay, then do it in black Black sounds good And then I think I'm about done. Oh, I gotta do his eyeball Just check in and love watching your lives. Thanks diana. Thanks diana Diana says I missed the first 57 minutes. Are you loving being close now? Wow, is it 57 minutes already? Yes, it's 502. Wow time flies or you're having fun Yes, diana, we are loving being so close for example We were in maryland over the weekend and we came back so After the show after the craft show ended at five. We went to dinner with um garrits mom and um Her boyfriend and what else we went and did a little tour of his facility his shop and by the time we left Frederick it was 10 p.m. Something like that, right and it was two hours home It was probably 10 30 because by the time we made it back to the shop. It was about one o'clock 12 31 o'clock. I'm like, we're just heading home, right? She's like no, we're gonna unload the trailer first Well, I just wanted to Drop the trailer off because we're so close. I was like, we're so close But then once we did that and garrits said, all right, we're done We're ready to go home and the girls in the back seat went and we're only 15 minutes from home And it only took nine minutes. There was no traffic because it was midnight I think that's it.  Yeah Yeah Gotcha, I got you. Thank you All right, let's do it. Let's glue some things together. All right, let's start putting this a mammoth jammer together Put another coat of red on that Should I start by putting these little pieces together or just start like we regularly do I think like we regularly do bottom up You pass me some glue Just do this Just do this thing Why am I passing you glue? Do I have it? Yeah, well behind you Oh, you've got them on the shelf over here And you're still over it.  You don't want to help No, I just mean put the fish together and then I can do like this big big piece Oops, okay Oh, but I can't put the fish together till the trees are down You could put like this on and all the little pieces inside, right? Uh, I guess so but then I got to try to guess where it lines up over the trees Uh, you could be a little I did it on the laser earlier I'm hoping Oh, it's a strong one today Sometimes the glue gets you and then sometimes I'm fine. It's like the rhythm Oh And we've only just begun Mm-hmm Go on now stick All right, things are getting quiet now because they're gluing you guys know how it is This is how it got yesterday during the workshop too And because two of them finished sooner I don't like two of them didn't even talk there.  Yeah, well, I'm just you don't have to put it down It'll be all right That's the one thing about this glue if you guys don't already know It really start.  No, I've been impossible You sure you did it on laser? Yeah, I was gonna say no, it won't be impossible. I did it Bam Now we're gonna lay this fish down. All right Tiena says I bought a laser cutter several months ago not unboxed it shame on me as soon as I do I'm going to purchase so many designs The best I've seen thank you. Thank you so much. So it's so nice Don't be afraid of it. We're here. We'll help you. Yeah It's not as bad as it seems. Oh, hey, Kathy. Kathy Stanley made it. What's up, Kathy I see all your lives. Yeah, so I'm speaking of lives. We caught, uh Lori and Gil we caught the replay Thanks for the shout out Yeah, we heard it This thing's coming together quickly. Don't you think? I need it, Louie. It just it's the painting. It's the pain Yeah, I forgot. I forgot his little paw His little paw I'm sorry There's not a lot in the chat. I think everyone's watching too Everybody's mesmerized. Oh man. Lori said Diana become a patron. You won't regret it. Yep Oh, that's this piece. Yeah, you want to buy so many files Or get them all as a patron number a patreon number and some that haven't even made it to the story yet I think uh, I think I'm missing Two pieces of this guy that fin Oh Right here stand down Okay, stand down crisis of Found it. Look at the welcome looking cool. I might leave his little eyeball out. It looks fine like that I Don't think so I like how It directs is because it's like cut out. It looks like it's directing is his eye to the The little fish he's trying to catch What color is this? I don't know wait Well, what is it? Oh, this little piece right here. Yeah, sure. Yeah white.  Sorry fish a man handle his fish a little bit Show him who's boss. Yeah, come on fish It's those fingers Those painty fingers Ha ha our live. I felt your pain. We could not get it to go live Ha ha ha right Yeah, I'm grateful for you guys. Thank you. Yeah, I know I was like Technical difficulties happens been there And then you're so stressed out you're really trying to get it get sweating. Yeah, we get sweat both of us like it's a thousand degrees Also live and learn, huh Let's need to go at the same time you jump the gun by doing the fish. I think I should have done all that right then It's on a different layer There you go. You got it All right, this would be cool if you will trees stop rushing me with the trees lady. I'm sorry. I'm sorry She'd like to just learn this lesson Look at that water Oh tree I'm gonna grab the other trees Start glueing Did you hear this guy? Oh, but I think the trees need to rest on this thing. I'm really liking this font here Me too It looks It looks woodsy Yeah, I feel like your guys are gonna see this font on all the like Masculine this is my new font. So I hope everybody likes it. I'm going deep on it. So Great job. Great job Look at that thing it looks so awesome. I can see it on the screen looks great Dina says the font is nice and clean. Yes Mandy says I'm trying to figure out how I could do this one on my m1 because I know this one will sell up here Well, I think I wonder what the distance is How wide you said 11 inches and I hear you say something about 11 inches earlier, yeah from here To here Is 11 so we could do one with a puzzle piece back here Back behind the welcome. I think this one would look fine on a desk I think you lose the ribbon holes or maybe don't even because I hid the ribbon holes And you don't need it Oh, just shrink the whole thing down. Yeah shrink the whole thing down. I mean you may lose some Detail in the lure's face, but I don't think it matters. You could take that out Just get rid of the lure's eye What happened to his eye? So where do you want it? Where is it point? He's got this way. I don't think you I don't guess it matters This way so that he's kind of looking at the with the hole this way So he's looking at the fish. Is there a glue down in there? Yeah Oh, do you have a little white? I don't think so I don't see it No, I can't imagine you would have that is a tiny tiny tiny piece. It's okay. I got it. I got this Oh, you need a little micro tip to get down in there Any more fish puns anyone Yeah, I gotta get some fish puns Looks awesome. So the two Christmas vacation signs are priced at 70 and 75 depending on the show Because I do a lot of colors and mostly men buy them and men pay for the signs they fall in love with you are exactly Right. We have seen the same thing Helen When remember the Christmas show that we brought the one the first time we had done the What was that? So what does it say? With the RV. Yeah, the shitter's full The first time we brought that one was the one that we had painted on our Tuesday live or Or maybe it was a Friday video. I don't quite remember Anyway, that one sold for a hundred dollars. We said no, it wasn't for sale And then he rips a hundred out. He was like I'll pay double He said I'll pay double And we were like, okay, so that somebody was like, hey, you just said it wasn't for sale Like well, he just offered me a hundred dollars for it All right, that's good. I think you're you're That's good No, that's awesome. Okay. That's awesome And you've held it long enough that you could pick it up. I think So give me your feedback. How are the trees? What's the how's the color scheme? I mean I don't need any feedback on that sunset. You did a great job on that. I love it Little loosey goosey I really didn't go beyond the border right there. It was a little bit. Yeah, you did a good job Look at that thing it looks great That looks good. Yeah, it looks good. Let's try and see if I can see it I mean, look at that water and that fish is 3d out the top. I love it Pretty good So I'll put this up on patreon probably tomorrow morning and then the store probably tomorrow afternoon Got to recut it and get a picture on stuff. Yeah, we're getting some feedback Looks perfect. It's gorgeous. Looks awesome. Beautiful The ribbon holes are up here, but I don't think you need a ribbon. So I made them smaller So you could just fit like string or some kind of plain Ribbon, you know, we put a big fluffy bow on there No, I don't think it needs a fluffy bow Kim I'm gonna have to find some good. You guys can give me some ideas like what would you hang it with? Yeah, what would you hang it with? I think some burlap ribbon. I think it needs to have a little song No, not fishing line Great teamwork. Thank you. I'm scared of the fishing line too Nautical rope, uh-huh twine or rope. Yes Yeah, I'll have to try a couple things and then show you what we end up with Look, it's balanced So we know It'll hang correctly Yeah, he tried to put the fish kind of right here in the middle So it wouldn't be too heavy on one. Yeah, I knew he was gonna be Hanging with a leather strap so cool That could be cool Or denim Michael says okay I need one though the speckled trout and a red fish and a tarpon and a flounder I can go on for days for these You send me the clip or Michael you're just getting him started because he said That is not a virginia fish and I was like who cares. It's just a fish And I was like it doesn't matter what kind of fish and now look at you. I said it does I said any fisherman a salmon Any fisherman worth his weight and chum would know what fish would be in his state Yeah So now you got to do one with all the different fish No, now I provide a 10 now we're a fish channel. That's it The fish channel All right, we're with that said I am about at it Man that fate is looking good So we will see you on Friday. What would we do with something with tumblers? And the p2, okay, we're using the p2 to make tumblers Well, I'm using the rotary tool to do lots of different things Tumblers is just one of them.  That's correct. Yes All right, we'll see you guys on Friday. Have a great week. Stay cool