<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>The Makery</title>
    <subtitle>Projects made by the Makery community.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://www.themakery.cc/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://www.themakery.cc"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    
    <updated>2026-10-10T00:00:00+00:00</updated>
    <id>https://www.themakery.cc/atom.xml</id>
    <entry>
        <title>Vetinari clock driven by an ESP32</title>
        <published>2026-10-10T00:00:00+00:00</published>
        <updated>2026-10-10T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/2wfnb9/vetinari-clock-driven-by-an-esp32/"/>
        <id>https://www.themakery.cc/projects/2wfnb9/vetinari-clock-driven-by-an-esp32/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/2wfnb9/vetinari-clock-driven-by-an-esp32/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/2wfnb9/vetinari-clock-driven-by-an-esp32/1558352561348542545.jpg&quot; alt=&quot;Vetinari clock driven by an ESP32&quot;&gt;&lt;/p&gt;&lt;p&gt;Stavros built a Vetinari clock: a clock whose ticking wanders and stutters, yet always adds up to exactly one minute every minute. It began with a $6 clock from a store, followed by a second $6 clock and two movements from AliExpress.&lt;/p&gt;
&lt;p&gt;The first attempt was a complete failure. For days he tried to make it tick, but the second hand would only &quot;just barely barely move&quot; no matter what current settings or timings he tried. Ready to give up, he ordered three more movements from AliExpress to experiment on, and bought yet another clock while he waited. When he put a battery in that one, the problem finally revealed itself: it didn&#39;t tick at all. It was a continuous sweep clock, which was never going to work for irregular ticking.&lt;/p&gt;
&lt;p&gt;When the new movements arrived, two turned out to be continuous sweep as well, but one ticked. He took out its PCB, which is basically just a crystal that pulses a voltage onto the coil to rotate the gear that moves the hands. Not wanting to repeat the mistakes of the past, he put an oscilloscope on it, noted the voltages and timings, and reproduced them with an ESP32, which he admits is overkill. This time it worked perfectly, and he then wrote the code to make it tick irregularly.&lt;/p&gt;
&lt;p&gt;The clock has a few modes, all synced with NTP so that each minute comes out exact:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one that ticks randomly each second&lt;/li&gt;
&lt;li&gt;one that ticks normally but then stops for a second&lt;/li&gt;
&lt;li&gt;one that behaves a bit like a pendulum, swinging fast at the bottom and slow at the top&lt;/li&gt;
&lt;li&gt;one that rushes to :59 and stays there for 30 seconds, then rushes again to :59 and waits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The trick behind the irregular ticking is a list of 59 integers, each one dictating how long a given second&#39;s tick lasts. In the mode that skips a second, for example, 58 of the integers are 980 and one is 2000, the skipped second. Some modes shuffle the list so those odd seconds land in a random position, while others, such as the pendulum mode, keep it in order. The 60th second is never dictated at all: the clock simply waits for NTP to tick over the minute, then moves to the 00 position. That way it is always synced with NTP, to the minute.&lt;/p&gt;
&lt;p&gt;Setting the time is a small delight of its own. When the clock boots, it is stopped. Since it has no way of knowing where its hands are, it is told what time it is showing, and it then rushes forward (or stays stopped) until it catches up with the real time, at which point it carries on as normal.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>Shoe rack to server rack</title>
        <published>2026-10-07T00:00:00+00:00</published>
        <updated>2026-10-07T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/becnr9/shoe-rack-to-server-rack/"/>
        <id>https://www.themakery.cc/projects/becnr9/shoe-rack-to-server-rack/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/becnr9/shoe-rack-to-server-rack/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/becnr9/shoe-rack-to-server-rack/1557429942294413473.jpg&quot; alt=&quot;Shoe rack to server rack&quot;&gt;&lt;/p&gt;&lt;p&gt;Stavros set out to (try to) convert a cheapo shoe rack into a server rack.&lt;/p&gt;
&lt;p&gt;After finishing the first bit, he drilled holes in the body of the rack so the shelves could sit closer to the wooden part. Getting the final shelf layout in place took some coaxing: the 10 € rack, in his words, &quot;was not built to my exacting tolerances,&quot; and needed some pushing and pulling to get into shape. With the layout settled, he cut the rack to size, doing it &quot;the old-fashioned way&quot; with a drill and saw.&lt;/p&gt;
&lt;p&gt;The finished rack then moved to its final resting place and was loaded up with all of his servers, ready for duty.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>Updated: Wherewhen, a travel planner</title>
        <published>2026-09-26T00:00:00+00:00</published>
        <updated>2026-09-30T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/sv33j3/wherewhen-a-travel-planner/"/>
        <id>https://www.themakery.cc/projects/sv33j3/wherewhen-a-travel-planner/#updated-2026-09-30</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/sv33j3/wherewhen-a-travel-planner/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/sv33j3/wherewhen-a-travel-planner/1553333071908970526.jpg&quot; alt=&quot;Wherewhen, a travel planner&quot;&gt;&lt;/p&gt;&lt;p&gt;Stavros set out to build his own travel planning website after finding that every planner he had tried was missing something, whether good AI integration, a good visualisation of the trip, or how long it takes to travel between places. So he started making Wherewhen.&lt;/p&gt;
&lt;p&gt;By his own account the interface is still rough (&quot;The UI is a bit shit still&quot;), and he plans to give it a proper pass once the functionality is right. The features are already piling up nicely, though. A calendar view lets times be adjusted by dragging and shows driving and walking times between places, and there is a spot for jotting down ideas that can be placed on a map later. He has since added a day view, so the itinerary for a single day is easy to see.&lt;/p&gt;
&lt;p&gt;Wherewhen already supports collaborative editing, so friends can be invited to see and edit a trip together, and it works completely offline thanks to Yjs. As Stavros puts it, &quot;CRDTs are pretty great.&quot;&lt;/p&gt;
&lt;p&gt;The logo came from Claude. Stavros ran out of tokens before he could iterate on it, so that first version became the logo. Later he gave Wherewhen a new visual identity made with Claude Design, which he called &quot;just mindblowing.&quot;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>Makery projects website</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/rskwmz/makery-projects-website/"/>
        <id>https://www.themakery.cc/projects/rskwmz/makery-projects-website/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/rskwmz/makery-projects-website/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/rskwmz/makery-projects-website/1551538285371723776.jpg&quot; alt=&quot;Makery projects website&quot;&gt;&lt;/p&gt;&lt;p&gt;Stavros built a projects website for the Makery. He already collects all of the server&#39;s Discord messages in a database, which he uses to generate the newsletter, and the same collection now feeds this site too.&lt;/p&gt;
&lt;p&gt;The site looks only at threads in the Discord, works out which ones are about a project, gathers up their text and images, and turns each one into a project page. For now the result is &quot;a bit of a mishmash of everything&quot;, since the threads haven&#39;t always been kept tidy, but Stavros expects that a little curation will make it great.&lt;/p&gt;
&lt;p&gt;His aim is to have one place to point people to for all the cool things made at the Makery. He enjoys telling everyone about what he&#39;s building but can&#39;t always find the time for a proper writeup, and this lets the threads do some of that work. He notes that the generated text reads as &quot;LLMese&quot; for the moment, something he plans to fix later.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>Nicolas’ big head</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        <author>
            <name>Nicolas Mattia</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/jk20sg/nicolas-big-head/"/>
        <id>https://www.themakery.cc/projects/jk20sg/nicolas-big-head/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/jk20sg/nicolas-big-head/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/jk20sg/nicolas-big-head/1551522559416336444.jpg&quot; alt=&quot;Nicolas’ big head&quot;&gt;&lt;/p&gt;&lt;p&gt;Nicolas Mattia took a scan of his own head, turned it into an egg, scaled it up and printed it. The finished piece has since found a second job as a bathroom companion.&lt;/p&gt;
&lt;p&gt;The scan came from the Heges app on his iPhone, which uses the Face ID camera; he suspects Android has something similar. Reshaping the scan into an egg was done by hand in Blender, a manual process he thinks Astra might be able to help with. He also points out that the shape of his head lends itself to the egg form, so another head might call for something different.&lt;/p&gt;
&lt;p&gt;He offered to print a head for anyone who sends him a scan, while noting that he tries to keep his own scans away from the internet, &quot;just in case&quot;.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>Room presence sensor</title>
        <published>2026-09-21T00:00:00+00:00</published>
        <updated>2026-09-21T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/0sewb3/room-presence-sensor/"/>
        <id>https://www.themakery.cc/projects/0sewb3/room-presence-sensor/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/0sewb3/room-presence-sensor/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/0sewb3/room-presence-sensor/1551541582581207080.jpg&quot; alt=&quot;Room presence sensor&quot;&gt;&lt;/p&gt;&lt;p&gt;Stavros built a presence sensor for the various rooms of his home using an ESP32 and an LD2410 sensor. He flashed ESPHome firmware to the ESP32, and it worked out of the box.&lt;/p&gt;
&lt;p&gt;The LD2410 had a history with him. He once thought it was a cool sensor and bought ten off AliExpress, but always had bad results with them and couldn&#39;t figure out the calibration. This time Claude explained to him how the sensor worked and helped him write a calibrator, which he published as &lt;a rel=&quot;external&quot; href=&quot;https://github.com/skorokithakis/ld2410-calibrator&quot;&gt;ld2410-calibrator&lt;/a&gt;. With that in hand, the sensor &quot;works amazingly well.&quot;&lt;/p&gt;
&lt;p&gt;The first iteration of the box turned out small and pretty nice looking, and it worked perfectly with very small latency. He found the sensors remarkably accurate, able to detect breathing 2m away, and in his view they pretty much solve the presence problem for smallish rooms of up to about 4m. A final enclosure followed.&lt;/p&gt;
&lt;p&gt;Along the way he also added a photodiode to sense light. ESPHome handles it well, sending updates only when the light level changes significantly. The photodiode is soldered directly to a GPIO and 3.3V, using the GPIO&#39;s internal pulldown to form the voltage divider. The readings are a bit compressed towards the bright end, but it works very well in general.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>An Android digital assistant app with custom actions</title>
        <published>2026-09-20T00:00:00+00:00</published>
        <updated>2026-09-20T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/y651a1/an-android-digital-assistant-app-with-custom-actions/"/>
        <id>https://www.themakery.cc/projects/y651a1/an-android-digital-assistant-app-with-custom-actions/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/y651a1/an-android-digital-assistant-app-with-custom-actions/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/y651a1/an-android-digital-assistant-app-with-custom-actions/1551028159015690340.jpg&quot; alt=&quot;An Android digital assistant app with custom actions&quot;&gt;&lt;/p&gt;&lt;p&gt;I&#39;ve made a digital assistant app for Android. It can register as an assistant, so long-pressing the power button makes it pop up and record audio.&lt;/p&gt;
&lt;p&gt;You can add various actions to it, and the fallback goes to my digital assistant, &lt;a rel=&quot;external&quot; href=&quot;https://github.com/skorokithakis/stavrobot&quot;&gt;Stavrobot&lt;/a&gt;. If you&#39;re offline it keeps retrying everything until it works.&lt;/p&gt;
&lt;p&gt;It uses the OpenAI or ElevenLabs API for transcription, and OpenAI as a lightweight LLM to parse the actions. You can tell it to add calendar events and alarms as well.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <title>A compact case for Milwaukee screwdriver bits</title>
        <published>2026-02-04T00:00:00+00:00</published>
        <updated>2026-02-04T00:00:00+00:00</updated>
        <author>
            <name>Stavros</name>
        </author>
        <link rel="alternate" type="text/html" href="https://www.themakery.cc/projects/4gwhkf/a-compact-case-for-milwaukee-screwdriver-bits/"/>
        <id>https://www.themakery.cc/projects/4gwhkf/a-compact-case-for-milwaukee-screwdriver-bits/</id>
        <content type="html" xml:base="https://www.themakery.cc/projects/4gwhkf/a-compact-case-for-milwaukee-screwdriver-bits/">&lt;p&gt;&lt;img src=&quot;https://www.themakery.cc/projects/4gwhkf/a-compact-case-for-milwaukee-screwdriver-bits/1468934881768636416.jpg&quot; alt=&quot;A compact case for Milwaukee screwdriver bits&quot;&gt;&lt;/p&gt;&lt;p&gt;I bought some Milwaukee screwdriver bits, which are apparently the best bits in the universe because I love them already. The only problem was that their case was pretty massive, so I designed a smaller one.&lt;/p&gt;
&lt;p&gt;The lid has lettering on it, and I never managed to figure out how to paint the same surface in two colours, so instead I embossed the text and flood filled the embossed part. That put the second colour on a different layer rather than on the face, which meant several manual filament swaps once my AMS broke down and I could not print the white part.&lt;/p&gt;
&lt;p&gt;Nicolas Mattia pointed me at a much better approach: in the slicer you add a second extruder, enable single extruder MMU, and set the custom tool change G code to M600 so the tool change becomes a filament swap. You use two models, assign each a colour, and slice them together, and since slicing always starts with the first extruder, putting white first gets it down to a single swap near the beginning of the print. Agisilaos also suggested slicing the letters and the case as two separate files and printing the letters first, aligning them carefully and keeping the toolhead from crashing into them, which would work for a single layer of letters but left me worried about homing the bed between two prints.&lt;/p&gt;
&lt;p&gt;I also noticed after printing that I forgot the chamfer: the design has one, but the printed version is flat and only has the corners chamfered, since the chamfer is only on the vertical edges while the big case has one all the way around.&lt;/p&gt;
&lt;p&gt;In the end the AMS worked long enough for me to print this. I do not really know what was wrong with it, I just restart it until it works and then it breaks again when I turn it off, and I am waiting for Bambu to get back to me about it. The case is fantastic and I love it.&lt;/p&gt;
</content>
    </entry>
</feed>
