<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.3">Jekyll</generator><link href="https://morehavoc.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://morehavoc.com/" rel="alternate" type="text/html" /><updated>2023-09-19T04:48:10+00:00</updated><id>https://morehavoc.com/feed.xml</id><title type="html">MoreHavoc</title><subtitle>Projects and Musings</subtitle><entry><title type="html">The WhisperFrame Generates Art From Conversations</title><link href="https://morehavoc.com/2023/09/17/whisperframe.html" rel="alternate" type="text/html" title="The WhisperFrame Generates Art From Conversations" /><published>2023-09-17T23:55:45+00:00</published><updated>2023-09-17T23:55:45+00:00</updated><id>https://morehavoc.com/2023/09/17/whisperframe</id><content type="html" xml:base="https://morehavoc.com/2023/09/17/whisperframe.html">&lt;h1 id=&quot;the-whisperframe&quot;&gt;The WhisperFrame&lt;/h1&gt;

&lt;p&gt;The WhisperFrame listens to conversations in our living room and then generates art based on those conversations. It’s a pretty simple concept:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Record snippets of the conversations&lt;/li&gt;
  &lt;li&gt;Convert those to text via OpenAI’s Whisper API&lt;/li&gt;
  &lt;li&gt;Combine recent transcripts together and have GPT-4 pick a topic and generate an image prompt&lt;/li&gt;
  &lt;li&gt;Use Stable Diffusion to generate an image from the prompt&lt;/li&gt;
  &lt;li&gt;Show it in the living room!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ours generates a new image after every 5 minutes of active conversation. When there hasn’t been any talking, it will revert to showing randomly selected images generated in the past.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/PCUJBcXRGKw&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Check out the images and prompts (658 of them) it has generated from our &lt;a href=&quot;https://whisperframe.morehavoc.com&quot; target=&quot;_blank&quot;&gt;living room&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In general, the moving parts are:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;A loop that records 15-20 seconds of audio, then sends it to the OpenAI Whisper API to get a transcript. And repeat. Every 5 minutes or so of recorded material, go to the next step.&lt;/li&gt;
  &lt;li&gt;Take the transcript and use GPT-4 to extract a topic as an image prompt. We manually created some outputs to give it a couple of examples to go by.&lt;/li&gt;
  &lt;li&gt;Send that prompt to Stable Diffusion to get an image. When done, return to step 1.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A separate Flask server runs in the background, serving up the current image, and every 5 minutes, checks again to see if there is a new image. If there hasn’t been a new image in 30 minutes, it reverts to just showing random pictures from the list until a new one is generated.&lt;/p&gt;

&lt;p&gt;This helps keep the content fresh and relevant to the conversation in the room.&lt;/p&gt;

&lt;p&gt;It’s a bit self-fulfilling in that as people talk about the image it drew, it becomes more likely that it tries to illustrate that one again, as the topic is more likely to be selected by GPT-4. But it’s still awesome!&lt;/p&gt;

&lt;p&gt;It was a fun project; I even created a second one for my office that generates images during meetings! It might even be a new way to make meeting notes, a list of images representing the meeting instead of action items. It probably won’t catch on, though!&lt;/p&gt;</content><author><name></name></author><category term="maker" /><category term="projects" /><category term="youtube" /><category term="ai" /><summary type="html">The WhisperFrame</summary></entry><entry><title type="html">Using AI to Protect Web Form Inputs: Extending Beyond the Adopt-A-Drain Example</title><link href="https://morehavoc.com/2023/05/10/ai-adopt-a-drain.html" rel="alternate" type="text/html" title="Using AI to Protect Web Form Inputs: Extending Beyond the Adopt-A-Drain Example" /><published>2023-05-10T12:30:45+00:00</published><updated>2023-05-10T12:30:45+00:00</updated><id>https://morehavoc.com/2023/05/10/ai-adopt-a-drain</id><content type="html" xml:base="https://morehavoc.com/2023/05/10/ai-adopt-a-drain.html">&lt;blockquote&gt;
  &lt;p&gt;Note: This post is a brief summary of a video I made about using AI to keep names clean and safe in adopt-a-drain programs. I’ll update this post when the video is available. This post was made by feeding the transcript of the video into GPT-4 and asking it to write a blog post. It was then edited by me.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/BbmepIKACzo&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Artificial Intelligence (AI) has become an integral part of our daily lives, from setting timers (via tools like Alexa) to writing code. One particular use of AI that I find interesting is its application in protecting web form inputs. In this blog post, we explore how GPT-4 AI can be used to safeguard input forms across various domains, using the “adopt-a-drain” program as just one example.&lt;/p&gt;

&lt;p&gt;Web forms often require users to submit information, ranging from names and email addresses to more sensitive data such as credit card numbers. Ensuring that the submitted information is appropriate and valid is of utmost importance. For instance, in an Adopt-A-Drain program, users may submit creative names for drains that could be inappropriate or offensive. We can use GPT-4 to check those names when the user submits them.&lt;/p&gt;

&lt;p&gt;GPT-4 AI can be used in chat mode to review the submitted inputs, regardless of the specific use case. By crafting a prompt that outlines the AI’s role in assessing the appropriateness or validity of the submitted information, we can instruct the AI to provide feedback on whether the input passes or fails the required criteria. If the AI is uncertain, it can flag the input for review by a human moderator.&lt;/p&gt;

&lt;p&gt;One of the significant advantages of using AI like GPT-4 is its ability to understand unstructured prompts. It can interpret instructions and provide responses in a conversational manner, making it easier to engage and interact with the AI. Furthermore, GPT-4 can be “programmed”&lt;sup&gt;1&lt;/sup&gt; to respond in different tones, such as professional, funny, snarky, or sarcastic, depending on the desired outcome.&lt;/p&gt;

&lt;p&gt;In addition to using GPT-4 AI, the OpenAI API offers a moderation endpoint, which acts as a first line of defense against inappropriate inputs. By categorizing the input, the moderation endpoint helps protect the system from offensive or invalid content. If the input passes the moderation endpoint, the more powerful GPT-4 AI can then be used to assess the input’s suitability or validity.&lt;/p&gt;

&lt;p&gt;In conclusion, AI like GPT-4 offers a powerful and adaptable solution to protect web form inputs across various domains. By crafting the right prompts and utilizing AI’s conversational abilities, we can create systems that ensure appropriate and valid content is submitted. The Adopt-A-Drain example is just one instance demonstrating the potential of AI in safeguarding web form inputs, and its applications can be extended to numerous other scenarios.&lt;/p&gt;

&lt;h3 id=&quot;footnotes&quot;&gt;Footnotes&lt;/h3&gt;
&lt;p&gt;1 - I put programmed in quotes because you are really just telling it, like you would a human doing the same work.&lt;/p&gt;</content><author><name>christopher moravec and GPT-4</name></author><category term="software" /><category term="ai" /><summary type="html">Note: This post is a brief summary of a video I made about using AI to keep names clean and safe in adopt-a-drain programs. I’ll update this post when the video is available. This post was made by feeding the transcript of the video into GPT-4 and asking it to write a blog post. It was then edited by me.</summary></entry><entry><title type="html">OctoPrint Saves Me From a Blue Screen of Death!</title><link href="https://morehavoc.com/2023/05/10/octo-print-saves-me.html" rel="alternate" type="text/html" title="OctoPrint Saves Me From a Blue Screen of Death!" /><published>2023-05-10T12:30:45+00:00</published><updated>2023-05-10T12:30:45+00:00</updated><id>https://morehavoc.com/2023/05/10/octo-print-saves-me</id><content type="html" xml:base="https://morehavoc.com/2023/05/10/octo-print-saves-me.html">&lt;h1 id=&quot;octoprint-saves-me-from-a-blue-screen-of-death&quot;&gt;OctoPrint Saves Me From a Blue Screen of Death!&lt;/h1&gt;

&lt;p&gt;Recently my trusty Lulzbot Mini 3D Printer was having issues.. well actually the
old Windows laptop I used to run it was having issues. When I set out to replace 
the printer I stumbled upon OctoPrint, which not only saved my printer, but made it 
much better than it ever was before.&lt;/p&gt;

&lt;p&gt;This is that story:&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/lNXoYzrilq0&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;a-few-more-details-for-those-that-want-to-try-this-on-their-own&quot;&gt;A few more details for those that want to try this on their own&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.instructables.com/Octolibre-Running-Octoprint-on-the-Libre-Computers/&quot;&gt;I got the basic tutorial from here (I know instructables gets a bad wrap sometimes, but this was a great starting point!)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/paukstelis/octoprint_deploy/blob/master/octoprint_deploy.sh&quot;&gt;An OctoPrint deploy script that made thigs much easier&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.thingiverse.com/thing:3426091&quot;&gt;The case I used, but only the bottom half&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://hub.libre.computer/t/aml-s905x-cc-le-potato-overview-resources-and-guides/288&quot;&gt;Getting started with the Libre Potato board&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;I got my Libre board on Amazon.&lt;/li&gt;
  &lt;li&gt;Make sure you have a sufficient power supply otherwise the board might brownout while printing&lt;/li&gt;
&lt;/ol&gt;</content><author><name>christopher moravec</name></author><category term="maker" /><category term="youtube" /><category term="projects" /><summary type="html">OctoPrint Saves Me From a Blue Screen of Death!</summary></entry><entry><title type="html">Meet Portia, The Candy Spewing Spider!</title><link href="https://morehavoc.com/2023/04/17/portia-candy-spider.html" rel="alternate" type="text/html" title="Meet Portia, The Candy Spewing Spider!" /><published>2023-04-17T23:55:45+00:00</published><updated>2023-04-17T23:55:45+00:00</updated><id>https://morehavoc.com/2023/04/17/portia-candy-spider</id><content type="html" xml:base="https://morehavoc.com/2023/04/17/portia-candy-spider.html">&lt;h1 id=&quot;i-finally-finished-making-my-video-of-portia&quot;&gt;I finally finished making my video of Portia!&lt;/h1&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/5Crmm9zOipU&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;It was a fun project that mostly worked in the end. I also enjoyed making the video so, more to come in both departments!&lt;/p&gt;</content><author><name></name></author><category term="maker" /><category term="projects" /><category term="youtube" /><summary type="html">I finally finished making my video of Portia!</summary></entry><entry><title type="html">Building a Needle Container</title><link href="https://morehavoc.com/2023/01/30/needle-container.html" rel="alternate" type="text/html" title="Building a Needle Container" /><published>2023-01-30T12:30:45+00:00</published><updated>2023-01-30T12:30:45+00:00</updated><id>https://morehavoc.com/2023/01/30/needle-container</id><content type="html" xml:base="https://morehavoc.com/2023/01/30/needle-container.html">&lt;p&gt;I’m pretty into making custom things with my 3D printer these days. So when a random request comes in from a friend like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hey, this little plastic tube I used to hold darning neadles broke, can you make me a new one?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I get excited. So I made a quick hexagonal tube, with a threaded lid!&lt;/p&gt;

&lt;p&gt;The lid is a little too tall, so has too many threads. The number of times you turn it to remove the top is a little silly, but it works! Next time I would aim for just a fully turn to unscrew the lid.&lt;/p&gt;

&lt;h1 id=&quot;pictures&quot;&gt;Pictures&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/needle-container/Needle.png&quot; alt=&quot;The Needle Holder&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/needle-container/NeedleTop.png&quot; alt=&quot;The Cap&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;stl-files&quot;&gt;STL Files&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;/assets/images/needle-container/Needle.stl&quot;&gt;The Needle Holder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/images/needle-container/NeedleTop.stl&quot;&gt;The Cap&lt;/a&gt;&lt;/p&gt;</content><author><name>christopher moravec</name></author><category term="maker" /><category term="projects" /><summary type="html">I’m pretty into making custom things with my 3D printer these days. So when a random request comes in from a friend like:</summary></entry><entry><title type="html">Building a Swift</title><link href="https://morehavoc.com/2023/01/21/building-a-swift.html" rel="alternate" type="text/html" title="Building a Swift" /><published>2023-01-21T23:55:45+00:00</published><updated>2023-01-21T23:55:45+00:00</updated><id>https://morehavoc.com/2023/01/21/building-a-swift</id><content type="html" xml:base="https://morehavoc.com/2023/01/21/building-a-swift.html">&lt;p&gt;My friend, Bee, does a lot of knitting. She recently was debating if she should buy a &lt;a href=&quot;https://en.wikipedia.org/wiki/Swift_(textiles)&quot;&gt;swift&lt;/a&gt; to help winding
balls of yarn. They are pretty cheap online, but I wanted to see if I could make one, so here comes an
Umbrella Swift!&lt;/p&gt;

&lt;h1 id=&quot;research&quot;&gt;Research&lt;/h1&gt;

&lt;p&gt;I first looked at pictures of swifts, like these:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/building-a-swift/HorizontalSwift.jpg&quot; alt=&quot;An old style horizontal swift&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/building-a-swift/UmbrellaSwift.jpg&quot; alt=&quot;A more modern umbrella style swift&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Then I browsed Amazon. The basic design hasn’t changed much, so I set about building a simple Umbrella Swift.&lt;/p&gt;

&lt;h1 id=&quot;the-process&quot;&gt;The Process&lt;/h1&gt;

&lt;p&gt;I started by designing the top cap and the bottom of the umbrella in Fusion 360 and printing them on my 3D Printer.&lt;/p&gt;

&lt;h2 id=&quot;the-top-of-the-swift&quot;&gt;The top of the swift&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/assets/images/building-a-swift/Top.png&quot; alt=&quot;Top of the swift&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-bottom-of-the-swift&quot;&gt;The bottom of the swift&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/building-a-swift/Bottom.png&quot; alt=&quot;The bottom of the swift&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Yes, they are all hexagons! Partially because this is &lt;em&gt;Bee&lt;/em&gt; we are talking about here, and also because &lt;a href=&quot;https://www.youtube.com/watch?v=thOifuHs6eY&quot;&gt;hexagons are the bestagaons&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-clamp&quot;&gt;The Clamp&lt;/h2&gt;

&lt;p&gt;I had never designed or printed threads until this project, but I really wanted the clamp on the bottom to be 3D printed as well. Turns out it was Super Easy, Barely and Inconvenience! Really, I just used the Thread tool in Fusion 360, set it to “Modeled” and then just pushed back each of the three surfaces of the thread by 0.1 mm.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/building-a-swift/Clamp.png&quot; alt=&quot;Bottom Clamp&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;construction&quot;&gt;Construction&lt;/h2&gt;

&lt;p&gt;I used a hardwood dowel as the shaft, and 15 inch bamboo “craft sticks” as all of the bars. A few random nuts and bolts here and there, some locktite, and of course my old friend hot glue to hold the top onto the shaft.&lt;/p&gt;

&lt;h1 id=&quot;final-product&quot;&gt;Final Product&lt;/h1&gt;

&lt;p&gt;&lt;img src=&quot;https://media.giphy.com/media/zlpTm3aCFQ6ldwsyXk/giphy.gif&quot; alt=&quot;The Sift Works!&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;download-stl-files&quot;&gt;Download STL files:&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/assets/images/building-a-swift/Bottom.stl&quot;&gt;Bottom.stl&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/assets/images/building-a-swift/Top.stl&quot;&gt;Top.stl&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/assets/images/building-a-swift/Clamp.stl&quot;&gt;Clamp.stl&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/assets/images/building-a-swift/Screw.stl&quot;&gt;Screw.stl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>christopher moravec</name></author><category term="maker" /><category term="projects" /><summary type="html">My friend, Bee, does a lot of knitting. She recently was debating if she should buy a swift to help winding balls of yarn. They are pretty cheap online, but I wanted to see if I could make one, so here comes an Umbrella Swift!</summary></entry><entry><title type="html">NFTs from a Camera!</title><link href="https://morehavoc.com/2023/01/10/the-nft-camera.html" rel="alternate" type="text/html" title="NFTs from a Camera!" /><published>2023-01-10T23:55:45+00:00</published><updated>2023-01-10T23:55:45+00:00</updated><id>https://morehavoc.com/2023/01/10/the-nft-camera</id><content type="html" xml:base="https://morehavoc.com/2023/01/10/the-nft-camera.html">&lt;h1 id=&quot;nfts&quot;&gt;NFTs&lt;/h1&gt;

&lt;p&gt;I don’t really want to cover what an NFT is here in this post, there are lots of places
to read about that, like here, or here, or here is a funny story about some NFTs…&lt;/p&gt;

&lt;p&gt;What you need to know for this idea to make sense is that an NFT is a way to make a
digital thing unique. If you make a painting, there is only one original. If you take a
picture on film, that’s your original. It’s uniqueness gives it some of it’s value.&lt;/p&gt;

&lt;p&gt;With an NFT, you can make a digital asset unique. You can then sell it as though it was the only one.&lt;/p&gt;

&lt;h1 id=&quot;ai&quot;&gt;AI&lt;/h1&gt;

&lt;p&gt;One other thing… AI image tools have gotten pretty good and are only getting better. I can feed prompt like this into Dall-E:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;a photograph of the Eiffel tower taken across the seine with the champ de mars in the background and a beautiful sunset behind it.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And get this, slightly impossible picture:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2023-01-11-the-nft-camera-dalle.png&quot; alt=&quot;OpenAI Dall-e generated photo of the Eiffel tower&quot; /&gt;&lt;/p&gt;

&lt;details&gt;
&lt;summary&gt;Why can't this picture be real? (other than the obvious funny business?)&lt;/summary&gt;
&lt;p&gt;
This should be taken from roughly the north side of the Eiffel tower, with a sunset to the south, which shouldn't be possible.
&lt;img alt=&quot;Image that exmplains why this camera position can't be real&quot; src=&quot;/assets/images/2023-01-11-the-nft-camera-camera-position.png&quot; /&gt;
&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;How do we know photographs are real? How do we know they were really taken by a human, and at the real place?&lt;/p&gt;

&lt;h1 id=&quot;nfts-direct-from-a-camera&quot;&gt;NFTs direct from a Camera&lt;/h1&gt;

&lt;p&gt;The idea here is that you have a physical device that let’s you take pictures. This device is not your phone, we’ll call it
a &lt;a href=&quot;https://en.wikipedia.org/wiki/History_of_the_camera&quot;&gt;&lt;strong&gt;Camera&lt;/strong&gt;&lt;/a&gt; for lack of a better word. When you take a picture with this device you can preview it, and if you approve it, and if the camera has a connection to the internet, it will:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Write it directly to &lt;a href=&quot;https://en.wikipedia.org/wiki/InterPlanetary_File_System&quot;&gt;IPFS&lt;/a&gt; and get it’s global URI back&lt;/li&gt;
  &lt;li&gt;Write the global URI to the etherium ledger as belonging to the owner of the camera.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A few notes:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;The image is &lt;em&gt;never&lt;/em&gt; written to disk anwyere, it it stored in RAM and then written directly to IPFS.&lt;/li&gt;
  &lt;li&gt;The &lt;em&gt;original&lt;/em&gt; image is copied. If you want to edit it, you can get it from IPFS and use it as you normally would.&lt;/li&gt;
  &lt;li&gt;There could be a whole set of additions to photo editing software to handle the chain of changes for an image. As you work on it, the new one is written to IPFS and marked on the ledger as yours, and being relative to it’s parent image. This keeps a chain of custody for the image as you touch it up.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;the-project&quot;&gt;The project&lt;/h1&gt;

&lt;p&gt;It might be fun to build a simple version of this. Perhaps using a Circut Python board, a simple serial enabled camera and perhaps a nice case to put it all in.&lt;/p&gt;

&lt;p&gt;It even would have the added benefit of being pretty low resolution, really bringing back that old digital camera feel!&lt;/p&gt;

&lt;p&gt;;-)&lt;/p&gt;</content><author><name>christopher moravec</name></author><category term="ideas" /><category term="crypto" /><category term="maker" /><category term="nft" /><summary type="html">NFTs</summary></entry></feed>