<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://bbum.net/feed.xml" rel="self" type="application/atom+xml" /><link href="https://bbum.net/" rel="alternate" type="text/html" /><updated>2026-09-04T23:55:57+00:00</updated><id>https://bbum.net/feed.xml</id><title type="html">bbum.net</title><subtitle>Bill Bumgarner&apos;s weblog - recipes, projects, commentary, and more.</subtitle><author><name>Bill Bumgarner</name></author><entry><title type="html">William Orbit: A Tale of Two Albums</title><link href="https://bbum.net/2026/08/william-orbit-a-tale-of-two-albums/" rel="alternate" type="text/html" title="William Orbit: A Tale of Two Albums" /><published>2026-08-23T00:00:00+00:00</published><updated>2026-08-23T00:00:00+00:00</updated><id>https://bbum.net/2026/08/william-orbit-a-tale-of-two-albums</id><content type="html" xml:base="https://bbum.net/2026/08/william-orbit-a-tale-of-two-albums/"><![CDATA[<p>William Orbit died on July 23, 2026, at his home in London. He was 69.</p>

<p>His music has been threaded through my life since 1993, when <em>Strange Cargo III</em> rewired what I thought electronic music could be.</p>

<p>He will be missed.   Upon his death, his classical album — <em>Pieces in a Modern Style</em> — was re-released as a “Remembering William Orbit” piece.   This is the original album and worth a listen.</p>

<iframe allow="autoplay *; encrypted-media *;" frameborder="0" height="450" style="display:block;margin:1em auto;width:100%;max-width:660px;overflow:hidden;background:transparent;" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation" src="https://embed.music.apple.com/us/album/pieces-in-a-modern-style/361158349"></iframe>

<p>Below is the post from my old weblog about some of Orbit’s other works and a brief interchange we had.</p>

<p>So long, William.   Thank you for your contributions to my life (and patience with me in the brief moment we interacted).</p>

<hr />

<div class="figure right">
<img src="/assets/images/posts/william-orbit/strange-cargo-iii.jpg" width="240" height="240" alt="William Orbit - Strange Cargo III album cover" />
<div class="caption"><a href="https://en.wikipedia.org/wiki/Strange_Cargo_III">Strange Cargo III</a></div>
</div>

<p>Wwwaaayyy back in 1993 an album came out that set me on a path of deep exploration of all things Electronica, borderline “dance”, and trance/ambient. Of course, back then, it wasn’t called that. It was just called “rave/dance” or “electronic” in most record stores.</p>

<p>That album was <a href="https://www.williamorbit.com/">William Orbit’s</a> <a href="https://en.wikipedia.org/wiki/Strange_Cargo_III">Strange Cargo III</a>.</p>

<p>It was a pivotal album in my music collection. Combining a depth &amp; precision in production that any geek would be awed by with sometimes poignant and often beautifully ethereal lyrics all on top of brilliant compositions yielded an album of auditory bliss.</p>

<p>For many years, <em>Strange Cargo III</em> was the album I played for anyone claiming that <em>bleep blorp</em> compositions weren’t really music. And they walked away proven wrong, generally off to pick up a copy.</p>

<!--more-->

<div class="figure left">
<img src="/assets/images/posts/william-orbit/madonna-ray-of-light.jpg" width="240" height="240" alt="Madonna - Ray of Light album cover" />
<div class="caption"><a href="https://en.wikipedia.org/wiki/Ray_of_Light">Ray of Light</a></div>
</div>

<p>An aside; you might be wondering why <a href="https://en.wikipedia.org/wiki/Ray_of_Light">Madonna’s Ray of Light</a> appears at left. To many, <em>Ray Of Light</em> was a total surprise. It exhibited a depth of composition and lushness of sound that was unprecedented either in Madonna’s catalog or in major pop releases, in general.</p>

<p>One listen to <em>Strange Cargo III</em> and the connection is unmistakable; <em>Ray of Light</em> <strong>is</strong> a William Orbit album with Madonna authoring lyrics, performing vocals, and providing extensive composition input!</p>

<p>This is important because a relatively small percentage of avid music fans have heard the name <em>William Orbit</em>, and yet his work is pervasive and unmistakable, once you know the sound. Signature singles &amp; mixes from Depeche Mode, Erasure, U2, Beth Orton, and many others were produced by Orbit. As evidenced by <a href="https://www.discogs.com/artist/William+Orbit">his discography</a>, William Orbit’s impact on popular music has been huge!</p>

<div class="figure right">
<img src="/assets/images/posts/william-orbit/my-oracle-lives-uptown.jpg" width="240" height="240" alt="William Orbit - My Oracle Lives Uptown album cover" />
<div class="caption"><a href="https://en.wikipedia.org/wiki/My_Oracle_Lives_Uptown">My Oracle Lives Uptown</a></div>
</div>

<p>16 years after SCIII, Orbit has released <a href="https://en.wikipedia.org/wiki/My_Oracle_Lives_Uptown">My Oracle Lives Uptown</a>.</p>

<p>And this is where this particular “review” goes sideways.</p>

<p>After the second listen, I dropped a tweet:</p>

<blockquote>
  <p><strong><a href="https://twitter.com/bbum/status/2633519977">Bill Bumgarner</a>:</strong> Meh. William Orbit’s newest album (Oracle something) is… meh. Nowhere near as good as Strange Cargo III.</p>
</blockquote>

<p>Not much later, I see:</p>

<blockquote>
  <p><strong><a href="https://twitter.com/WilliamOrbit/status/2642793123">William Orbit:</a></strong> @bbum give a couple more spins, u never know, it might not be so far behind SCIII :-)</p>
</blockquote>

<p>… and I was a bit taken aback. Not so much because William Orbit had reached out through the twitterverse to respond with kindly to what was a rather snarky and unfair critique, but because I realized that my tweet was… well… both unfair and just a bit rude.</p>

<p>Offensive &amp; rude in that it is a completely unfair critique of the album.</p>

<p><em>My Oracle Lives Uptown</em> is an excellent album. The production notes are perfect– no surprise, given the artist– and the composition is rich and melodic.</p>

<p>It is, however, a very different album than <em>Strange Cargo III</em>. Whereas SCIII is a set of perfectly presented singles, Oracle is a part of a conceptual whole that maintains a specific ambience throughout.</p>

<p>SCIII benefits from very strong vocals – it was the vehicle via which I, and much of the rest of the world, was introduced to <a href="https://en.wikipedia.org/wiki/Beth_Orton">Beth Orton</a>, for example – and the tracks are composed to the strengths of the performer and since there are multiple vocals on the album, some of the tracks feel very different than others; ranging from what would become vocal trance to hip hop.</p>

<p>Oracle focuses entirely on almost purely instrumental compositions throughout. There are vocals, but they are more a part of the overall instrumentation than the lead melody. Each track has multiple parts and, overall, the melodies and instrumentation show a maturity beyond that of SCIII.</p>

<p>Yet, listen closely and you’ll hear threads of sound, melodies, and production that are distinctly Orbit.</p>

<p>I responded to William Orbits’ tweet:</p>

<blockquote>
  <p><strong><a href="https://twitter.com/bbum/status/2643193979">Bill Bumgarner</a>:</strong> @WilliamOrbit Will do. Some of the best albums in my collection only happened after the nth listen over m weeks. Production is spot on,tho.</p>
</blockquote>

<p>To which I received:</p>

<blockquote>
  <p><strong><a href="https://twitter.com/WilliamOrbit/status/2643370183">William Orbit:</a></strong> @bbum the best music improves slowly w/ age. but not trying to sell you on oracle, SCII is a hard one to trump!</p>
</blockquote>

<p>So true and the primary source of my chagrin; I should know better.</p>

<p>And having written this while listening to Oracle a couple of more times, proof positive.</p>

<p>It really is an awesome album. $10 well spent.</p>

<p>I still prefer SCIII because my tastes run a bit more to vocal trance than nearly pure instrumentals, but that’s just me. Then again, I also haven’t listened to Oracle the umpteen million times that I have listened to SCIII. Another 10 years and I’ll know where it really stands.</p>

<p>If you prefer instrumental electronic to vocal stuff, you’ll probably prefer <em>My Oracle Lives Uptown</em>.</p>]]></content><author><name>Bill Bumgarner</name></author><category term="music" /><summary type="html"><![CDATA[William Orbit died on July 23, 2026, at his home in London. He was 69. His music has been threaded through my life since 1993, when Strange Cargo III rewired what I thought electronic music could be. He will be missed. Upon his death, his classical album — Pieces in a Modern Style — was re-released as a “Remembering William Orbit” piece. This is the original album and worth a listen. Below is the post from my old weblog about some of Orbit’s other works and a brief interchange we had. So long, William. Thank you for your contributions to my life (and patience with me in the brief moment we interacted). Strange Cargo III Wwwaaayyy back in 1993 an album came out that set me on a path of deep exploration of all things Electronica, borderline “dance”, and trance/ambient. Of course, back then, it wasn’t called that. It was just called “rave/dance” or “electronic” in most record stores. That album was William Orbit’s Strange Cargo III. It was a pivotal album in my music collection. Combining a depth &amp; precision in production that any geek would be awed by with sometimes poignant and often beautifully ethereal lyrics all on top of brilliant compositions yielded an album of auditory bliss. For many years, Strange Cargo III was the album I played for anyone claiming that bleep blorp compositions weren’t really music. And they walked away proven wrong, generally off to pick up a copy.]]></summary></entry><entry><title type="html">ATLI X10 Time Lapse Camera</title><link href="https://bbum.net/2026/08/atli-x10-time-lapse-camera/" rel="alternate" type="text/html" title="ATLI X10 Time Lapse Camera" /><published>2026-08-05T00:00:00+00:00</published><updated>2026-08-05T00:00:00+00:00</updated><id>https://bbum.net/2026/08/atli-x10-time-lapse-camera</id><content type="html" xml:base="https://bbum.net/2026/08/atli-x10-time-lapse-camera/"><![CDATA[<!-- Review of the ATLI X10 4K Time Lapse Camera -->
<!-- Affiliate link: https://amzn.to/4fWCj7L -->
<!-- Product notes: 4K, Wi-Fi + app control, 90-day battery, Bluetooth wake-up
     & scheduling, 12cm macro focus, pre-installed 128GB SD card -->

<div class="figure video">
<div class="video-frame">
<iframe src="https://player.vimeo.com/video/1215690668?badge=0&amp;autopause=0" allow="autoplay; fullscreen; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" title="Storm to Calm" loading="lazy"></iframe>
</div>
<div class="caption">Storm to Calm</div>
</div>

<div class="figure amazon-card right">
<a href="https://amzn.to/4fWCj7L" rel="sponsored noopener" target="_blank">
<img src="/assets/images/amazon/atli-x10.jpg" width="240" height="183" alt="ATLI X10 4K time lapse camera, front view showing the macro lens" />
<div class="caption">ATLI X10 4K Time Lapse Camera</div>
<div class="amazon-note">View on Amazon &rarr;</div>
</a>
</div>

<p>In general, my photography is usually focused on still images of all kinds.   Portraits.  Extreme macros.  Long telephotos.  Landscapes.  Etc.    I don’t generally shoot video as I find it much more difficult to frame, requiring more equipment and significantly more editing time than stills.</p>

<p>The one exception is making the very fast slow and the very slow fast.    This post focuses on an easy way to make the very slow fast.</p>

<p>That is, timelapse captures to create videos where every frame may be seconds to minutes apart.</p>

<p>While cell phones can certainly take time lapse photos, they typically don’t provide a lot of control and, frankly, I’m not about to stick my phone on a tripod outside overnight.</p>

<p>Fortunately, dedicated time lapse cameras have come down in price considerably while also significantly increasing imaging quality.</p>

<!--more-->

<p>Most recently, I’ve been using the <a href="https://amzn.to/4fWCj7L">ATLI X10 time lapse camera</a>.   It is a 4K camera that is controlled entirely via an <a href="https://www.atlitimelapse.com/pages/download-center">iOS or Android app</a>.   Literally:  there is a power button and 3 LEDs on the camera body.    No display, no controls.   Which is just fine because the in-body UI on these kinds of cameras is generally terrible and next to impossible to use in the field when trying to frame a shot and configure capture settings.</p>

<p>The X10 is relatively small and light.   Easily mounted to any standard camera mount or tripod via the included ¼″-20 UNC bolt hole (more on that in a moment).   There is a (proprietary, but they all are) battery slot, an SD card slot, and a USB-C charging port.   It claims IP64 level of dust and water protection, but the “seals” are pretty basic and I wouldn’t trust it in anything beyond a light rain.</p>

<p>The app does require an annoying amount of account creation before use (I didn’t check if you can use the app without an account, but I suspect not).   However, the <em>discover</em> tab in the app is a combination of pure marketing and a second tab of documentation and tutorials that are pretty well done.  And while it does feature a bunch of community created videos, there doesn’t appear to be any sort of upload mechanism.</p>

<p>Beyond that, the app offers a <em>me</em> tab with basic account information, including notifications and the like.  The last is the Camera tab.   Dive into that to see your registered camera(s), select one and then the app will go through the connection process.</p>

<div class="figure video">
<div class="video-frame">
<iframe src="https://player.vimeo.com/video/1215690728?badge=0&amp;autopause=0" allow="autoplay; fullscreen; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" title="Sunrise" loading="lazy"></iframe>
</div>
<div class="caption">Sunrise</div>
</div>

<p>For the X10, the camera needs to be on and then the app first connects via Bluetooth (it can even wake over Bluetooth).   Once connected, it will then switch to a WiFi connection either with a network created by the camera (useful when in the middle of a field somewhere) or by connecting to whatever existing network the camera is on.</p>

<p>The camera shows the typical preview image with various controls.   Full auto vs. manual exposure, battery remaining, mode, settings, and the like.   Nothing surprising and all fairly intuitive.</p>

<p>Assuming timelapse mode, hitting the record button brings up the recording UI.   There is a NOW and a SCHEDULE tab at the top.</p>

<p>The Now tab allows you to control the interval (delay between frames in seconds), the duration of the timelapse, and whether you want to store it as an MP4 movie file or a series of JPGs for later processing.   Click the record button and the camera will record for the interval and duration you set or until battery or storage runs out.</p>

<p>The Schedule tab allows you to configure the same interval and output options, but lets you set daily windows (up to 4) within which recording should take place.</p>

<p>Click the Start button in either mode and the camera starts recording.   Close the app and get on with life as the camera will do its thing.</p>

<p>Once done recording, there is a per-camera gallery in the app where you can select timelapses for download or deletion.</p>

<p>Pretty straightforward and easy to use.</p>

<div class="figure video">
<div class="video-frame">
<iframe src="https://player.vimeo.com/video/1215894657?badge=0&amp;autopause=0" allow="autoplay; fullscreen; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" title="Reflections — shot with the camera mounted as pictured below" loading="lazy"></iframe>
</div>
<div class="caption">Reflections — shot with the camera mounted as pictured below</div>
</div>

<div class="figure amazon-card left">
<a href="https://amzn.to/4gbpMyu" rel="sponsored noopener" target="_blank">
<img src="https://live.staticflickr.com/65535/55442247107_0f79d44407_n.jpg" width="240" height="320" alt="ATLI X10 time lapse camera mounted on an articulating arm clamped to a wooden rail, aimed out over a pond reflecting clouds" />
<div class="caption">JEBUTU 22&quot; Magic Arm with Clamp Mount</div>
<div class="amazon-note">View on Amazon &rarr;</div>
</a>
</div>

<p>But to use it well requires some more tools and finesse.   And a bit of practice and patience.</p>

<p>First, auto mode is probably not what you want to use.   At least, not in any environment where the lighting isn’t a tightly controlled artificial source with consistent output.</p>

<p>To use the camera to capture images in variable lighting environments, like clouds passing by or a pond scene with periods of bright sun and relative dimness caused by cloud cover, you’ll want to use manual exposure mode to ensure consistent exposure (even if some segments end up being darker or brighter) or else you’ll end up with videos that weirdly pulse as the shutter changes to compensate for exposure in real time.</p>

<div class="figure video">
<div class="video-frame">
<iframe src="https://player.vimeo.com/video/1215848311?badge=0&amp;autopause=0" allow="autoplay; fullscreen; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" title="Calm Pond (autoexposure) — note the pulsing as the camera compensates" loading="lazy"></iframe>
</div>
<div class="caption">Calm Pond (autoexposure) — note the pulsing as the camera compensates</div>
</div>

<p>Select manual mode and dial the ISO to a fairly low number on a very bright day.   Use something higher if shooting in the evening or a night sky.    Likewise, dial the shutter speed until the preview image is clear and not washed out or too dim.  Increasing the ISO increases light sensitivity, allowing a faster shutter speed in lower light conditions, enabling you to freeze motion at the expense of more noise in the image.</p>

<p>Record away.</p>

<div class="figure video">
<div class="video-frame">
<iframe src="https://player.vimeo.com/video/1215691499?badge=0&amp;autopause=0" allow="autoplay; fullscreen; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" title="Clouds" loading="lazy"></iframe>
</div>
<div class="caption">Clouds</div>
</div>

<p>With manual settings, though, you’ll want to determine if catching the beginning or the end of a variable light scene like a sunset/sunrise is more important.   Because one end is gonna be too dim or washed out.    It would be helpful if ATLI Cam+ provided an option to vary the exposure over time, scheduled or automatic, but the best you can do is stop recording and start a new recording with a corrected exposure, then stitch and adjust later (though you’ll end up with an abrupt brightness change).</p>

<p>As for frame interval, use a faster interval than you think you need.    You can always slow down or speed up the video in post production and having more frames than you need will make the edits cleaner.   If you are really concerned about quality, shoot to JPG images – to individual frames – and then use your favorite editing program to stitch it together.</p>

<p>One challenge in many shooting locations is camera mounting.   A small tripod or the like will work sometimes, but you’ll often need to point the camera in an odd direction.</p>

<p>In my case, I found a mounting arm with a clamp at one end and a standard ¼″-20 UNC bolt at the other.   Bunch of ball joints in between.  Clamp the arm to something solid, loosen the ball joints, place the camera where you want, and then tighten down the ball joints.  The arm pictured is quite adequate and relatively cheap, but I wouldn’t claim it is the best quality.   I also suspect it isn’t going to work well for a full sized DSLR.</p>

<p>The patience bit?</p>

<p>You’ll want to set the camera up and then let it do its thing.   Over and over.   Catch every sunset.  Every sunrise.   Catch clouds moving, storms on the pond, whatever.  Throwing out most.   Dial in the settings.  The camera comes with a relatively huge SD card that can store many days of footage (many more days than the battery will last).</p>

<p>Beyond previewing exposure on a single frame, you can’t really test the camera in a given environment without letting it run, potentially, for hours.   Get comfortable with configuring it and you’ll gain confidence in set-it-and-forget-it for the one off / one chance captures like, say, a flower blooming.</p>

<p>Overall, the camera is a lot of fun.   Enables me to capture all kinds of things that are too slow to see in real time and turn them into pretty amazing timelapse captures like the ones you see on this post.   I’ll be posting more to the <a href="/timelapse/">Timelapse</a> page over time.</p>]]></content><author><name>Bill Bumgarner</name></author><category term="review" /><category term="photography" /><summary type="html"><![CDATA[Storm to Calm ATLI X10 4K Time Lapse Camera View on Amazon &rarr; In general, my photography is usually focused on still images of all kinds. Portraits. Extreme macros. Long telephotos. Landscapes. Etc. I don’t generally shoot video as I find it much more difficult to frame, requiring more equipment and significantly more editing time than stills. The one exception is making the very fast slow and the very slow fast. This post focuses on an easy way to make the very slow fast. That is, timelapse captures to create videos where every frame may be seconds to minutes apart. While cell phones can certainly take time lapse photos, they typically don’t provide a lot of control and, frankly, I’m not about to stick my phone on a tripod outside overnight. Fortunately, dedicated time lapse cameras have come down in price considerably while also significantly increasing imaging quality.]]></summary></entry><entry><title type="html">When You Live in a Glass House…</title><link href="https://bbum.net/2026/06/when-you-live-in-a-glass-house/" rel="alternate" type="text/html" title="When You Live in a Glass House…" /><published>2026-06-27T00:00:00+00:00</published><updated>2026-06-27T00:00:00+00:00</updated><id>https://bbum.net/2026/06/when-you-live-in-a-glass-house</id><content type="html" xml:base="https://bbum.net/2026/06/when-you-live-in-a-glass-house/"><![CDATA[<!-- Review of the ECOVACS WINBOT W3 OMNI robotic window cleaner -->
<!-- Affiliate link: https://amzn.to/4gKcLN6 -->

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55361067876_0bec670307_n.jpg" width="215" height="320" alt="Grimy, water-spotted window with a fence and hanging plants barely visible through it" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55361067876/">Before: a window in need of a wash</a></div>
</div>

<p>I live in an Eichler;  a literally glass and stick house.   We have floor to ceiling glass walls that cut the house in half, six sliding glass doors, and numerous large windows beyond the glass walls (and no crawl space / attic, which can make maintenance <strong>interesting</strong>).  As well, we live in one of the dustiest places around.</p>

<p>Day to day, it is easy to miss that the windows are getting dirty until, one day, the sun hits just right and it is an immediate “oh my!  I can’t really see through that well at all!”.</p>

<p>Cleaning is obviously a bear.   The peaks of some windows are nearly 10 ft up and the outside is over flower beds such that there is nowhere to place a ladder that isn’t either precarious or will damage something.</p>

<p>A neighbor stopped by the other day with “a cool gadget I wanted to show you”.   I’m not generally one for gadgets (really!), but this was an immediate buy.</p>

<!--more-->

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55360132477_24aa2efeba_n.jpg" width="240" height="320" alt="Patio glass wall at dusk, brick column, sunset light reflected in the glass" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55360132477/">Glass house at dusk</a></div>
</div>

<p>Specifically, he had a WinBot v2.   Plugged it in and let it rip on one of my windows.   End result was a clean window in just a few minutes!</p>

<p>I looked through the various models and selected the <a href="https://amzn.to/4gKcLN6">ECOVACS WinBot W3 Omni</a>.   The extra $100 or so gets you a battery for portability, better designed scrubbing surface, and a built in scrubber cleaner which actually works very well.</p>

<p>I paid $566 on a sale; as of June 27, 2026 it lists for $699.   Prices fluctuate, so check the current number before you buy.  In fact, you can use <a href="https://camelcamelcamel.com/product/B0GJDQ59J1">CamelCamelCamel</a> to track its Amazon price over time.</p>

<h2 id="use">Use</h2>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55361483940_0e8ac67302_n.jpg" width="320" height="319" alt="ECOVACS WINBOT W3 OMNI clamped to a glass door, cleaning, power cord attached" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55361483940/">WINBOT W3 OMNI at work</a></div>
</div>

<p>Use is straightforward.</p>

<p>Fill the cleaning liquid chamber with the included cleaning agent (which is mostly water + alcohol with a couple of additional ingredients) or tap water if you’re out of cleaner.</p>

<p>Hold the robot against the window you want to clean and hold the power button.</p>

<p>The vacuum motor will spin up and the robot will give a little left/right jog to let you know it is safe to let go.</p>

<p>From there, it’ll move to the top of the window and then pick its way along the top edge until it “discovers” a side.   From there, back and forth in half-width rows, spraying a bit of cleaner until the whole window is done.</p>

<p>There are multiple cleaning modes.</p>

<p>Quick clean for interior windows.  Thorough cleaning for exterior windows that is a bit slower and goes over edges twice.</p>

<p>Edge Clean does what it says.   Deep clean makes many more passes while heavy-duty clean basically cleans for however many minutes you set and periodically pauses so you can clean or swap the cleaning pads.</p>

<p>There is also a manual control mode that lets you effectively “drive” the bot around the window.  Useful for getting the thing down when it ends the cycle and parks itself out of reach.</p>

<p>Finally, zone clean and spot clean let you divide a window so you can clean part of it.</p>

<p>Finally, there are three cycles for cleaning the scrubbing pad.  A short cycle, a long deep clean cycle, and then a cleaning chamber cycle that can clean the unit interior, if needed.</p>

<h2 id="hardware">Hardware</h2>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55361068021_e28a68c130_n.jpg" width="240" height="320" alt="WINBOT opened up showing the blue Y-shaped microfiber cleaning pads" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55361068021/">WINBOT cleaning pads</a></div>
</div>

<p>The window crawler robot – the WinBot – is square with a comfy handle on top that puts your thumb right over the power button.  The bottom of the bot has a scrubbing pad that is held in place by four little pull clips.   Easy enough to take out by first pulling two tabs, lifting the pad, and then pulling the other two.   The edges of the robot have various pressure switches and rollers to sense when the device hits the edge.</p>

<p>Of note, there is no active scrubber.   The robot cleans the window by sucking itself against the window and pressing the scrubbing pad onto the surface, and then using the little rubber tank treads to move it about.   The pads extend all the way to the edges.</p>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55361264759_4955ff94a9_n.jpg" width="320" height="240" alt="WINBOT top control panel with two water reservoirs and a display reading Cleaning" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55361264759/">Control panel and reservoirs</a></div>
</div>

<p>The base unit holds the battery (though the battery is easily replaceable), pad cleaner and water tanks for the clean / dirty water used to clean the scrubbing pad.   It also has the control panel.</p>

<p>The base is attached to the robot via a long cord that is coiled inside the base unit.   There is even a motorized cord retractor!</p>

<p>There is also a hook for the robot to hang off of on the base, a little compartment for the wall socket cord (used to recharge or when not using the battery), and a convenient handle for carrying the whole thing about.</p>

<p>All in all, the hardware is very well designed.</p>

<h2 id="software">Software</h2>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55360268667_9dbf5d291a_n.jpg" width="157" height="320" alt="WinBot app screen listing window cleaning modes: Fast, Thorough, Edge, Deep, Heavy-Duty, Zone, and Spot Clean" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55360268667/">App: window cleaning modes</a></div>
</div>

<p>I wish I could say the same for the software.   As with just about every modern electronic device, yes, there is an app.    The app isn’t terrible, but it isn’t good.   At least, the setup is a trainwreck, but, once configured, the app is fine.   Fortunately, you don’t actually need the app to use the cleaning bot.   All of the functionality can be accessed via the control panel on the base.</p>

<p>There is an odd new trend where manufacturers have decided that every complex electronic device must have a voice.   The <a href="https://amzn.to/4gKcLN6">WinBot</a> embraces this trend and the device will announce various bits about its state as well as providing warning not to stand under the bot when it is cleaning (duh).</p>

<p>I’d rather have indicator lights on the control panel, but the voice is fine.</p>

<p>As for the setup?</p>

<p>Out of the box, the device wants to immediately guide you through to actually using the robot.   If you want to link the app, which you need to do to be able to connect to WiFi and WiFi is required to update the firmware, you have to interrupt the out of box sequence and it isn’t at all intuitive as to how to do that.</p>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55361364808_f891afecfd_n.jpg" width="155" height="320" alt="WinBot app Station tab listing pad wash modes: Standard Wash, Heavy-Duty Wash, and Self-Clean" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55361364808/">App: station wash modes</a></div>
</div>
<p>As well, the device is super finicky about connecting to WiFi.   It flat out failed to connect to my house network, so I created a dead simple stupid network.   That failed too, but for a completely different reason.   So I tried my house network again and it failed again even after factory reset.  Not doing anything different, I tried one last time and that worked.</p>

<p>As a part of the setup, the device “phones home” to check for software update.   If that fails, then the whole setup fails and it rejects your WiFi network.   However, not completely, it seems.   Some parts of the App UI will still show the WiFi, but not let you pick it.</p>

<p>As I said;  trainwreck.</p>

<p>However, once it is configured, it is fine.   The app talks with the bot via bluetooth and the UI for controlling the bot is pretty straightforward.</p>

<p>Typical pains of owning a modern technology focused device where the human computer interface wasn’t really properly thought through.</p>

<h2 id="verdict">Verdict</h2>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55361228023_3ea101827d_n.jpg" width="240" height="320" alt="The same fence and hanging plants now seen clearly through clean glass" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55361228023/">After: clean glass</a></div>
</div>

<p>Fortunately, once you get through that mess, actually using the <a href="https://amzn.to/4gKcLN6">WinBot</a> is straightforward and the results are excellent.</p>

<p>The battery provides about 3.5 hours of runtime.</p>

<p>Most of the windows in my house can be cleaned fairly easily using traditional cleaning methods.   But not all and the really tall ones are truly hazardous to clean unless you have a proper ladder and/or tools.</p>

<p>Hiring a professional cleaner would cost anywhere from $500-$1,000, depending on options.   Not something we’ve done very often because of the cost.</p>

<p>Thus, $700 for a window cleaning robot that actually works pretty darned well is worth it for us.  Of all the “extras” the Omni offered over the regular version, I think the automatic scrubber cleaner is the most valuable.    I could run an extension cord easily enough, rendering the battery a nice convenience, but not a necessity.</p>

<p>The scrubbing pad cleaner, though, is highly optimized to cleaning the oddly shaped scrubbing pads and it does a really good job.  I wouldn’t want to use a model without it.</p>

<p>One downside with the W3 vs. the older models is that the scrubbing pads are integrated with the plastic frame and clips.   They are significantly more expensive to replace ($10-$15 per pad).  However, I don’t think they’ll need to be replaced often.   I just did all the windows in the house and it looks pretty new.    The device came with 2 scrubbing pads.</p>

<p>Overall, the WinBot is definitely a quality of life upgrade!   It is surprising how much more open the house feels now that the back glass wall is basically transparent again.   If the WinBot catalyzes said windows being cleaned more often than once every six months to a year, it is worth every penny!</p>

<h2 id="notes">Notes</h2>

<p>Basically:</p>

<p>Choose your cleaning cycle to optimize time use vs. cleaning needs.</p>

<p>The robot navigates our slant-topped windows pretty well.  Seems to actually clean in the triangle at the top effectively.    I don’t know how well it would deal with curved top windows.   Narrow windows are also a challenge.   It works in my ~18” wide window, but just barely.</p>

<p>If the window is super dirty, you may have to go through the cleaning cycle twice, cleaning the scrubbing pad in between.</p>

<p>I have also noticed that a silhouette of the scrubbing pad will be left on the window from wherever the bot stopped and you removed it.    Easily fixed by immediately wiping down the window with a clean cloth (there is enough cleaning fluid left behind that there is no need to add more).</p>

<p>For particularly filthy outdoor windows, I suggest hosing them down first.   If you do this, let the window fully dry before you run the <a href="https://amzn.to/4gKcLN6">WinBot</a>.  Any significant amount of moisture will cause the treads to slip, which the bot will detect and complain about.</p>

<p>Also, remove any spider webs as they’ll get wrapped around the corner rollers of the device.  Doesn’t cause any problems, but is a pain to clean.</p>

<p>At the end of a cleaning cycle, the <a href="https://amzn.to/4gKcLN6">WinBot</a> will park itself pretty close to wherever you started it from.   It will announce that it is done and leave the vacuum powered until you grab the handle and hold down the power button.</p>

<p>I’m curious what would happen if you let the battery run out.   Will it try to navigate to the bottom of the window to hopefully make for a shorter fall?    Not really interested in testing that.  Maybe.</p>]]></content><author><name>Bill Bumgarner</name></author><category term="review" /><summary type="html"><![CDATA[Before: a window in need of a wash I live in an Eichler; a literally glass and stick house. We have floor to ceiling glass walls that cut the house in half, six sliding glass doors, and numerous large windows beyond the glass walls (and no crawl space / attic, which can make maintenance interesting). As well, we live in one of the dustiest places around. Day to day, it is easy to miss that the windows are getting dirty until, one day, the sun hits just right and it is an immediate “oh my! I can’t really see through that well at all!”. Cleaning is obviously a bear. The peaks of some windows are nearly 10 ft up and the outside is over flower beds such that there is nowhere to place a ladder that isn’t either precarious or will damage something. A neighbor stopped by the other day with “a cool gadget I wanted to show you”. I’m not generally one for gadgets (really!), but this was an immediate buy.]]></summary></entry><entry><title type="html">Pizza Night! (With a side of AI)</title><link href="https://bbum.net/2026/04/pizza-night-with-a-side-of-ai/" rel="alternate" type="text/html" title="Pizza Night! (With a side of AI)" /><published>2026-04-30T00:00:00+00:00</published><updated>2026-04-30T00:00:00+00:00</updated><id>https://bbum.net/2026/04/pizza-night-with-a-side-of-ai</id><content type="html" xml:base="https://bbum.net/2026/04/pizza-night-with-a-side-of-ai/"><![CDATA[<div class="figure right">
<img src="https://live.staticflickr.com/65535/55245405285_3471b865b1_n.jpg" width="240" height="320" alt="Cream cheese, capers, salmon, dill pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55245405285/">Cream Cheese, Capers, Salmon, Dill</a></div>
</div>

<p>I always love when I have an excuse to toss some pizzas.   The latest excuse was book club.  Our neighborhood has a book club where, yes, they actually discuss a book and, when we host, I make pizza.</p>

<p>I decided on 8 pizzas this time.   Not that there was going to be enough folks to consume 8, but because I wanted these 8 pizzas in my life.   And this also leaves enough leftover such that neighbors can take some home for the folks that didn’t make it.</p>

<h2 id="the-menu">The Menu</h2>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55244101737_8ec6fda345_n.jpg" width="320" height="240" alt="Pepperoni pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55244101737/">Pepperoni</a></div>
</div>

<ul>
  <li>Basic Cheese</li>
  <li>Pepperoni</li>
  <li>Heirloom Tomato &amp; Basil</li>
  <li>Pesto &amp; Basil</li>
  <li>Mushroom &amp; Truffle Salt</li>
  <li>Fig Jam, Prosciutto, Arugula, Pine Nuts, Goat Cheese</li>
  <li>Cream Cheese, Capers, Salmon, Dill</li>
  <li>Southwestern</li>
</ul>

<p>I missed taking a picture of the Southwestern Pizza.</p>

<p>All in all, a huge success.   The pizzas were great.  The company fantastic.  A lively book discussion was had with the author present.   Good times!</p>

<h2 id="ai-and-pizza">AI and Pizza?</h2>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55245004776_78cd52f8db_n.jpg" width="240" height="320" alt="Basic cheese pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55245004776/">Basic Cheese</a></div>
</div>

<p>This party was significantly different in execution.  Namely, I used AI – specifically, <a href="https://claude.ai/claude-code">Claude Code</a> – in a project management role to organize the shopping, prep, and execution.</p>

<p>It was, by far, the most relaxing pizza night I’ve executed!</p>

<div style="clear: both;"></div>

<h2 id="planning">Planning</h2>

<p>First, using Claude Code, I manage what I call the “California Kitchen” recipes file.  These are recipes that I’ve collected over the years while living in California.  This is in parallel to the gigantic library of family recipes – spanning back 100+ years – that my mom and sisters had collected (I used Claude Code to convert all of those from a mish mosh of dead file formats to markdown files, then published to a family accessible web page).</p>

<p>I created a new directory in California Kitchen called “Events”.   It is where I work through the food/drink planning for parties we throw.</p>

<p>In that directory, I jotted down some ideas for the various pizzas I wanted to serve, eventually narrowing it to the 8 you see here.</p>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55245005851_d2183cbb9b_n.jpg" width="240" height="320" alt="Fig jam, prosciutto, arugula, pine nuts, goat cheese pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55245005851/">Fig Jam, Prosciutto, Arugula, Pine Nuts, Goat Cheese</a></div>
</div>

<p>I then asked Claude to generate an ingredient list from the pizzas.  All the ingredients that would be needed to make all the pizzas.</p>

<p>With that in hand, I checked what I had on hand and marked those off.   Made a couple of substitutions based on what was on hand.</p>

<p>Literally, to Claude:  “I have ingredients for the pizza sauce, olive oil, mexican cheese, an onion, etc.etc.etc… sub pecorino, which I have, for parmesan” and Claude figured out what was still needed and modified the recipes accordingly.</p>

<h2 id="day-before-prep-planning">Day Before Prep Planning</h2>

<p>The best part?</p>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55245005491_b375fde881_n.jpg" width="240" height="320" alt="Pesto and basil pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55245005491/">Pesto &amp; Basil</a></div>
</div>

<p>To Claude:  “Making a 62% hydration dough, want an overnight rise in the fridge.   When do I need to start it, when to ball, when to pull from fridge prior to cooking.   Dinner will start at 7pm.”   Boom.  Schedule done.</p>

<p>Also:  “What prep work can I get done the day before?  Make a checklist.”   Came up with a checklist and even formatted it with checkboxes that I could cross off (I do print these things in this case).</p>

<h2 id="day-of-planning--execution">Day of Planning &amp; Execution</h2>

<p>Did the same for day of prep, too.</p>

<p>As for the cook?   That was another checklist from Claude where it listed out each pizza and the ingredients needed.   Made it trivial to stay on top of which pizza I was working on and exactly what I needed.  As well, it was easy to grab the ingredients for the next pizza while the current one was cooking.</p>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55245005231_fef7c3f2f7_n.jpg" width="240" height="320" alt="Heirloom tomato and basil pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55245005231/">Heirloom Tomato &amp; Basil</a></div>
</div>

<p>Finally, after it was all said and done, I gave Claude some notes on which pizzas went the fastest, which had the most leftover, and any comments I overheard from the guests.   That’s all been recorded such that the next time we host book club, I’ll know that I should make more mushroom, that we have at least a couple of vegans attending, and that one guest is mildly allergic to onions (I’ll keep onions out of my sauce).</p>

<p>Normally, slinging 8 pizzas back to back is non stop busy work.   There is a lot to keep track of and a constant struggle to keep all the details in my head.   Writing it down definitely helps, but having the extra project management oversight of the LLM took it to a whole new level.</p>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55244102377_b48df9910a_n.jpg" width="240" height="320" alt="Mushroom and truffle salt pizza" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55244102377/">Mushroom &amp; Truffle Salt</a></div>
</div>

<p>As well, Claude was exceptionally helpful planning the prep.   Suggested several techniques for prepping ingredients that I hadn’t encountered before.   Salt and drain the tomatoes.   Lay out the fresh sliced mozz on a cookie sheet and let sit in the fridge for a bit.   Save the rehydrated mushroom broth to add a bit to the mushrooms when sautéing for extra flavor intensity.  That sort of thing.   All on point (I double checked).</p>]]></content><author><name>Bill Bumgarner</name></author><category term="cooking" /><category term="llm" /><summary type="html"><![CDATA[Cream Cheese, Capers, Salmon, Dill I always love when I have an excuse to toss some pizzas. The latest excuse was book club. Our neighborhood has a book club where, yes, they actually discuss a book and, when we host, I make pizza. I decided on 8 pizzas this time. Not that there was going to be enough folks to consume 8, but because I wanted these 8 pizzas in my life. And this also leaves enough leftover such that neighbors can take some home for the folks that didn’t make it. The Menu Pepperoni Basic Cheese Pepperoni Heirloom Tomato &amp; Basil Pesto &amp; Basil Mushroom &amp; Truffle Salt Fig Jam, Prosciutto, Arugula, Pine Nuts, Goat Cheese Cream Cheese, Capers, Salmon, Dill Southwestern I missed taking a picture of the Southwestern Pizza. All in all, a huge success. The pizzas were great. The company fantastic. A lively book discussion was had with the author present. Good times! AI and Pizza? Basic Cheese This party was significantly different in execution. Namely, I used AI – specifically, Claude Code – in a project management role to organize the shopping, prep, and execution. It was, by far, the most relaxing pizza night I’ve executed! Planning First, using Claude Code, I manage what I call the “California Kitchen” recipes file. These are recipes that I’ve collected over the years while living in California. This is in parallel to the gigantic library of family recipes – spanning back 100+ years – that my mom and sisters had collected (I used Claude Code to convert all of those from a mish mosh of dead file formats to markdown files, then published to a family accessible web page). I created a new directory in California Kitchen called “Events”. It is where I work through the food/drink planning for parties we throw. In that directory, I jotted down some ideas for the various pizzas I wanted to serve, eventually narrowing it to the 8 you see here. Fig Jam, Prosciutto, Arugula, Pine Nuts, Goat Cheese I then asked Claude to generate an ingredient list from the pizzas. All the ingredients that would be needed to make all the pizzas. With that in hand, I checked what I had on hand and marked those off. Made a couple of substitutions based on what was on hand. Literally, to Claude: “I have ingredients for the pizza sauce, olive oil, mexican cheese, an onion, etc.etc.etc… sub pecorino, which I have, for parmesan” and Claude figured out what was still needed and modified the recipes accordingly. Day Before Prep Planning The best part? Pesto &amp; Basil To Claude: “Making a 62% hydration dough, want an overnight rise in the fridge. When do I need to start it, when to ball, when to pull from fridge prior to cooking. Dinner will start at 7pm.” Boom. Schedule done. Also: “What prep work can I get done the day before? Make a checklist.” Came up with a checklist and even formatted it with checkboxes that I could cross off (I do print these things in this case). Day of Planning &amp; Execution Did the same for day of prep, too. As for the cook? That was another checklist from Claude where it listed out each pizza and the ingredients needed. Made it trivial to stay on top of which pizza I was working on and exactly what I needed. As well, it was easy to grab the ingredients for the next pizza while the current one was cooking. Heirloom Tomato &amp; Basil Finally, after it was all said and done, I gave Claude some notes on which pizzas went the fastest, which had the most leftover, and any comments I overheard from the guests. That’s all been recorded such that the next time we host book club, I’ll know that I should make more mushroom, that we have at least a couple of vegans attending, and that one guest is mildly allergic to onions (I’ll keep onions out of my sauce). Normally, slinging 8 pizzas back to back is non stop busy work. There is a lot to keep track of and a constant struggle to keep all the details in my head. Writing it down definitely helps, but having the extra project management oversight of the LLM took it to a whole new level. Mushroom &amp; Truffle Salt As well, Claude was exceptionally helpful planning the prep. Suggested several techniques for prepping ingredients that I hadn’t encountered before. Salt and drain the tomatoes. Lay out the fresh sliced mozz on a cookie sheet and let sit in the fridge for a bit. Save the rehydrated mushroom broth to add a bit to the mushrooms when sautéing for extra flavor intensity. That sort of thing. All on point (I double checked).]]></summary></entry><entry><title type="html">Monterey: Hiking Jacks Peak via Olmsted Road</title><link href="https://bbum.net/2026/03/monterey-hiking-jacks-peak/" rel="alternate" type="text/html" title="Monterey: Hiking Jacks Peak via Olmsted Road" /><published>2026-03-21T00:00:00+00:00</published><updated>2026-03-21T00:00:00+00:00</updated><id>https://bbum.net/2026/03/monterey-hiking-jacks-peak</id><content type="html" xml:base="https://bbum.net/2026/03/monterey-hiking-jacks-peak/"><![CDATA[<div class="figure right">
<a href="https://www.flickr.com/photos/bbum/55160243871/"><img src="https://live.staticflickr.com/65535/55160243871_90cd630af2_n.jpg" width="320" height="240" alt="Monterey Peninsula from Jacks Peak" /></a>
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55160243871/">Monterey Peninsula from Jacks Peak</a></div>
</div>

<p>Hiked part of the <a href="https://www.alltrails.com/trail/us/california/jacks-peak-via-olmsted-road">Jacks Peak via Olmsted Road</a> trail in Monterey today. Jacks Peak is the highest point on the Monterey Peninsula at 1,068 feet and lies within one of the three remaining natural stands of Monterey Pine in the United States.</p>

<p>The trail starts on Olmsted road and is fairly steep at the beginning (muddy in the rainy season).   Once you climb a bit, it changes from a pine forest to a fairly rocky landscape covered in manzanitas and other dryer climate plants.   The top becomes flat with some really interesting landscapes.   The views are spectacular from several points along the trail!</p>

<p>It was peak wildflower season, too!  Lots of gorgeous flowers all over and the variety changed with altitude and microclimate.</p>

<!--more-->

<div class="figure left">
<a href="https://www.flickr.com/photos/bbum/55160293799/"><img src="https://live.staticflickr.com/65535/55160293799_003633d065_n.jpg" width="240" height="320" alt="Fuchsiaflower Gooseberry" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339678806">Fuchsiaflower Gooseberry</a></div>
</div>

<p><a href="https://www.countyofmonterey.gov/government/departments-i-z/public-works-facilities-parks/county-parks/list-of-county-parks/jacks-peak-park">Jacks Peak County Park</a> has a bit of a layered history. The land was originally part of the Pueblo Lands tract acquired in 1859 by Scottish immigrant <a href="https://en.wikipedia.org/wiki/David_Jacks_(businessman)">David Jacks</a> (Yes, the <a href="https://en.wikipedia.org/wiki/Monterey_Jack">Monterey Jack cheese</a> guy). The county acquired the land in stages through the 1960s and 70s, and the park opened in 1977.</p>

<p>The park is now adjacent to the <a href="https://www.mprpd.org/joyce-stevens-monterey-pine-preserve">Joyce Stevens Monterey Pine Preserve</a>, an 851-acre property the Monterey Peninsula Regional Park District purchased from Pebble Beach Company in 2014 for $7.45 million. The preserve is currently closed to the public, but together with Jacks Peak County Park it protects part of the largest contiguous Monterey Pine habitat remaining on the planet. The California Native Plant Society describes the native Monterey Pine forest as forming “plant and animal communities found nowhere else on earth,” home to ten rare and endangered species including Yadon’s rein orchid (<em>Piperia yadonii</em>), a federally listed endangered plant.</p>

<h2 id="photos-from-the-hike">Photos from the Hike</h2>

<div class="photo-gallery">

<div class="figure" style="grid-column: 1 / -1;">
<a href="https://www.flickr.com/photos/bbum/55160243871/"><img src="https://live.staticflickr.com/65535/55160243871_90cd630af2_c.jpg" width="800" height="600" alt="Monterey Peninsula from Jacks Peak" /></a>
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55160243871/">Monterey Peninsula from Jacks Peak</a></div>
</div>

<div class="figure" style="grid-column: 1 / -1;">
<a href="https://www.flickr.com/photos/bbum/55159358187/"><img src="https://live.staticflickr.com/65535/55159358187_4944899b6c_c.jpg" width="800" height="317" alt="Panorama of Jacks Peak Trail" /></a>
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55159358187/">Panorama of Jacks Peak Trail</a></div>
</div>

<div class="figure">
<a href="https://www.flickr.com/photos/bbum/55160040111/"><img src="https://live.staticflickr.com/65535/55160040111_c26df654d8_z.jpg" width="480" height="640" alt="Fremont's Death Camas" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339678845">Fremont's Death Camas</a> (<em>Toxicoscordion fremontii</em>)</div>
</div>

<div class="figure">
<a href="https://www.flickr.com/photos/bbum/55160209038/"><img src="https://live.staticflickr.com/65535/55160209038_da62519fcf_z.jpg" width="480" height="640" alt="Pacific Poison Oak" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339678861">Pacific Poison Oak</a> (<em>Toxicodendron diversilobum</em>)</div>
</div>

<div class="figure">
<a href="https://www.flickr.com/photos/bbum/55160209223/"><img src="https://live.staticflickr.com/65535/55160209223_1eabb652c8_z.jpg" width="511" height="640" alt="Peas, Vetches, and Allies" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339678877">Peas, Vetches, and Allies</a> (<em>Fabeae</em>)</div>
</div>

<div class="figure">
<a href="https://www.flickr.com/photos/bbum/55160427705/"><img src="https://live.staticflickr.com/65535/55160427705_67c710af9c_z.jpg" width="480" height="640" alt="Bearberries and Manzanitas" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339682832">Manzanita</a> (<em>Arctostaphylos</em>)</div>
</div>

<div class="figure">
<a href="https://www.flickr.com/photos/bbum/55160293799/"><img src="https://live.staticflickr.com/65535/55160293799_003633d065_z.jpg" width="480" height="640" alt="Fuchsiaflower Gooseberry" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339678806">Fuchsiaflower Gooseberry</a> (<em>Ribes speciosum</em>)</div>
</div>

<div class="figure">
<a href="https://www.flickr.com/photos/bbum/55160426750/"><img src="https://live.staticflickr.com/65535/55160426750_9e621d3eea_z.jpg" width="640" height="640" alt="Ceanothus" /></a>
<div class="caption"><a href="https://www.inaturalist.org/observations/339682815">Ceanothus</a></div>
</div>

</div>]]></content><author><name>Bill Bumgarner</name></author><category term="hiking" /><summary type="html"><![CDATA[Monterey Peninsula from Jacks Peak Hiked part of the Jacks Peak via Olmsted Road trail in Monterey today. Jacks Peak is the highest point on the Monterey Peninsula at 1,068 feet and lies within one of the three remaining natural stands of Monterey Pine in the United States. The trail starts on Olmsted road and is fairly steep at the beginning (muddy in the rainy season). Once you climb a bit, it changes from a pine forest to a fairly rocky landscape covered in manzanitas and other dryer climate plants. The top becomes flat with some really interesting landscapes. The views are spectacular from several points along the trail! It was peak wildflower season, too! Lots of gorgeous flowers all over and the variety changed with altitude and microclimate.]]></summary></entry><entry><title type="html">Claude, Meet Fusion 360: Designing a Plant Pot with MCP</title><link href="https://bbum.net/2026/03/fusion-360-mcp-stapelia-pot/" rel="alternate" type="text/html" title="Claude, Meet Fusion 360: Designing a Plant Pot with MCP" /><published>2026-03-08T00:00:00+00:00</published><updated>2026-03-08T00:00:00+00:00</updated><id>https://bbum.net/2026/03/fusion-360-mcp-stapelia-pot</id><content type="html" xml:base="https://bbum.net/2026/03/fusion-360-mcp-stapelia-pot/"><![CDATA[<div class="figure right">
<img src="https://live.staticflickr.com/65535/55137494688_5ed6d1b64e_n.jpg" width="240" height="320" alt="Stapelia variegata Flower" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55137494688/">Stapelia variegata</a></div>
</div>

<p>Somebody wrote a <a href="https://github.com/Anonimus124/fusion-mcp">Fusion 360 MCP plugin</a> that enables Claude (or any MCP enabled agent) to fully control Fusion360.   Sketches, extrusions, bodies, rendering, exporting, file management, etc….</p>

<p>I had Claude install it.  Once Claude installed and confirmed it was working, it asked, “What do you want to build?”</p>

<p>“How about starting with something simple?  A flower pot ideal for a Stapelia variegata.”<sup id="fnref:species" role="doc-noteref"><a href="#fn:species" class="footnote" rel="footnote">1</a></sup></p>

<!--more-->

<h2 id="how-claude-responded">How Claude Responded</h2>

<p>Claude summarized the design requirements as follows.  Spot on!</p>

<ul>
  <li><strong>Stapelia spread horizontally</strong>, not vertically.  They’re ground-hugging succulents with thick, angular stems that branch outward.  So the pot needed to be wide and shallow, not tall and narrow.</li>
  <li><strong>Drainage is critical.</strong>  Stapelia are extremely rot-prone.  Sitting in wet soil will kill them faster than almost anything else.   Thus, tons of drainage.</li>
  <li><strong>The stems drape over pot edges.</strong>  The soft, fleshy stems would be destroyed by any sharp edges on the rim.</li>
</ul>

<h2 id="the-design">The Design</h2>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55137494568_87dab83ebc_z.jpg" width="640" height="360" alt="Stapelia Pot - Fusion 360 Render" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55137494568/">The pot, rendered in terracotta</a></div>
</div>

<p>Claude drove Fusion 360 through the MCP to create a pot with a gentle outward-curving taper via a spline profile, rendered in a terracotta appearance.  The dimensions:</p>

<ul>
  <li>~14cm top diameter, ~10cm bottom diameter, 8cm tall</li>
  <li>0.4cm wall thickness</li>
  <li>Rounded rim (0.2cm fillet) so the soft stems aren’t damaged where they drape over the edge</li>
  <li>Bottom chamfer for style points</li>
</ul>

<p><br clear="all" /></p>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55137550009_e350f862e0_z.jpg" width="640" height="360" alt="Stapelia Pot - Drainage Holes" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55137550009/">Five drainage holes</a></div>
</div>

<p>That’s quite a bit more drainage than I’d likely have found at the local pot store!   Critical to keep root rot at bay for this particular succulent.</p>

<p><br clear="all" /></p>

<h2 id="the-workflow">The Workflow</h2>

<p>All in all, a very productive, quick, workflow.   I certainly could have designed said pot in F360, though it would have been a challenge for me as I’m somewhere around the “barely able to muddle my way to success” level of skill.</p>

<p>There are some clear design improvements to be made.   And it will be interesting to see how well Claude handles added complexity or revisions.</p>

<p>Next step: print it and see if the Stapelia approves.</p>
<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:species" role="doc-endnote">
      <p>I’d be lying if I were to claim the species name was something I knew.  I dropped this photo on ChatGPT and asked it to identify it, which it did.  “Looks like Orbea variegata — commonly called starfish flower, carrion flower, or formerly Stapelia variegata.” – with a bunch of observations as to why. <a href="#fnref:species" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Bill Bumgarner</name></author><category term="3d-printing" /><category term="llm" /><summary type="html"><![CDATA[Stapelia variegata Somebody wrote a Fusion 360 MCP plugin that enables Claude (or any MCP enabled agent) to fully control Fusion360. Sketches, extrusions, bodies, rendering, exporting, file management, etc…. I had Claude install it. Once Claude installed and confirmed it was working, it asked, “What do you want to build?” “How about starting with something simple? A flower pot ideal for a Stapelia variegata.”1 I’d be lying if I were to claim the species name was something I knew. I dropped this photo on ChatGPT and asked it to identify it, which it did. “Looks like Orbea variegata — commonly called starfish flower, carrion flower, or formerly Stapelia variegata.” – with a bunch of observations as to why. &#8617;]]></summary></entry><entry><title type="html">Dialing in TPU on the Prusa XL</title><link href="https://bbum.net/2026/01/dialing-in-tpu-prusa-xl/" rel="alternate" type="text/html" title="Dialing in TPU on the Prusa XL" /><published>2026-01-10T00:00:00+00:00</published><updated>2026-01-10T00:00:00+00:00</updated><id>https://bbum.net/2026/01/dialing-in-tpu-prusa-xl</id><content type="html" xml:base="https://bbum.net/2026/01/dialing-in-tpu-prusa-xl/"><![CDATA[<p>As far as printer filament goes, TPU is weird. It is the one filament that is always north of the <a href="/2026/01/filament-drying-temperatures/">glass transition temperature</a> when you’re working with it. That is, it’s already closer to melted than solid and that’s the whole point. It prints as a flexible material. Can be used to provide soft bumpers or gripping surfaces. Or <a href="https://www.printables.com/model/787865-nba-airless-basketball-more-accurate">basketballs</a>.</p>

<p>As such, TPU needs a radically different configuration than printing with PETG/PLA or the other filaments that are actually solid.</p>

<p>First, TPU is extremely hygroscopic.  It sucks up water from the atmosphere like a relative sponge compared to PLA or PETG.   So, make sure the filament is dry. For this run, I dried at 47°C and put the filament dryer on a postal scale so I could record weight loss.  The first 80 minutes dropped 248g (3,320g → 3,072g). The next 3.5 hours lost only 4g more. Obviously, how quickly filament dries depends entirely on surrounding environment, but the typical recommendation of more than 8 hours is total overkill.</p>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55034021606_8d6a0e1b34_n.jpg" width="200" height="267" alt="TPU Overhead Feed" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55034021606/">TPU Overhead Feed</a></div>
</div>

<p>The Prusa XL uses long bowden tubes to feed filament to the print heads. TPU does not work well with bowden tubes. Too much friction and too flexible, so it tends to not feed well at all and causes all kinds of pressure issues at the print head. Thus, the first step was to eliminate the bowden entirely by going to direct feed by hanging the filament spool over the printer and direct feeding.</p>

<p><br clear="all" /></p>

<div class="figure right">
<img src="https://live.staticflickr.com/65535/55033283417_2e14a3be61_n.jpg" width="232" height="320" alt="Naive TPU Settings" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55033283417/">Naive TPU Settings</a></div>
</div>

<p>Because the XL is physically not compatible with TPU as a filament, it also doesn’t provide any presets for using TPU. If one naively simply takes a regular filament preset and modifies the print temperatures to print at the temps recommended on the filament’s box (220°C), the result is an utter mess.</p>

<p><br clear="all" /></p>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55036176823_fe8916af24_n.jpg" width="320" height="213" alt="Prusa XL TPU Preset" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55036176823/">Prusa XL TPU Preset</a></div>
</div>

<p>Add a TPU preset on the Prusa XL itself. Set the nozzle temperature to 205°C and turn off auto-retraction. The rest of the settings are acceptable for a project where TPU is embedded in other filaments that are printed on the bed. To undo the landmine I set for future self, I set the bed temperature to 50°C after taking the screenshot.</p>

<p>Actually fixing the problem required changing a TON of parameters.   In this case, made more complex because I wanted to print a TPU gripping surface onto the yellow PETG.  Thus, the changes made to support TPU had to remain compatible with PETG.</p>

<p>Details inside….</p>

<!--more-->

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55035109395_2cfef02674_n.jpg" width="320" height="210" alt="TPU+PETG Test Prints" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55035109395/">TPU+PETG Test Prints</a></div>
</div>

<p>I don’t claim these are correct, but that they worked for my particular needs.   They are the product of quite a lot of trial and error (and a bunch of conversations with ChatGPT).</p>

<p>This is using <a href="https://www.microcenter.com/product/610047/inland-175mm-tpu-3d-printer-filament-10-kg-(22-lbs)-spool-black">Inland TPU from MicroCenter</a>.  There is enough variance between TPU that I suspect it would require tweaks for other brands.</p>

<h2 id="filament-preset-settings">Filament Preset Settings</h2>

<h3 id="filament">Filament</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Extrusion multiplier</td>
      <td>0.9</td>
    </tr>
  </tbody>
</table>

<h3 id="temperature">Temperature</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Idle temperature</td>
      <td>170 °C</td>
    </tr>
    <tr>
      <td>Nozzle – first layer</td>
      <td>210 °C</td>
    </tr>
    <tr>
      <td>Nozzle – other layers</td>
      <td>210 °C</td>
    </tr>
  </tbody>
</table>

<p>*note:  Bed temperature is not adjusted as the first dozen+ layers were all PETG and, thus, the TPU doesn’t make bed contact (except on wipe tower, but that didn’t seem to matter)</p>

<h3 id="cooling">Cooling</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Fan speed min</td>
      <td>30 %</td>
    </tr>
    <tr>
      <td>Fan speed max</td>
      <td>50 %</td>
    </tr>
    <tr>
      <td>Bridge fan speed</td>
      <td>60 %</td>
    </tr>
  </tbody>
</table>

<h3 id="advanced-overrides">Advanced Overrides</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Max volumetric speed</td>
      <td>1.5 mm³/s</td>
    </tr>
  </tbody>
</table>

<h3 id="filament-overrides---retraction">Filament Overrides - Retraction</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Retraction length</td>
      <td>0.4 mm</td>
    </tr>
    <tr>
      <td>Retraction speed</td>
      <td>12 mm/s</td>
    </tr>
    <tr>
      <td>Deretraction speed</td>
      <td>10 mm/s</td>
    </tr>
    <tr>
      <td>Wipe while retracting</td>
      <td>ON</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="print-settings">Print Settings</h2>

<h3 id="extruders">Extruders</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Wipe tower extruder</td>
      <td><em>set to the TPU extruder</em></td>
    </tr>
    <tr>
      <td>Bed temperature by extruder</td>
      <td><em>set to extruder that is primarily layer 1</em></td>
    </tr>
  </tbody>
</table>

<h3 id="ooze-prevention-critical-fix">Ooze Prevention (Critical Fix!)</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Temperature variation</td>
      <td>–30 °C</td>
    </tr>
  </tbody>
</table>

<h3 id="wipe-tower">Wipe Tower</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Enable</td>
      <td>ON</td>
    </tr>
    <tr>
      <td>Extra flow for purging</td>
      <td>130%</td>
    </tr>
  </tbody>
</table>

<h3 id="advanced--interlocking-tpu--petg">Advanced – Interlocking (TPU ↔ PETG)</h3>

<table>
  <thead>
    <tr>
      <th>Parameter</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Use beam interlocking</td>
      <td>ON</td>
    </tr>
    <tr>
      <td>Interlocking beam width</td>
      <td>0.5 mm</td>
    </tr>
    <tr>
      <td>Interlocking beam layers</td>
      <td>1</td>
    </tr>
    <tr>
      <td>Interlocking depth</td>
      <td>2</td>
    </tr>
    <tr>
      <td>Interlocking boundary avoidance</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

<p><em>Note: this assumes you have an interface between the TPU and another material that doesn’t naturally offer adhesion between the two. And it assumes the model wasn’t designed with this in mind. In particular, this allows you to “paint” TPU onto a PLA/PETG surface and PrusaSlicer will automatically generate penetrative overlapping bits of material that lock the two materials physically.</em></p>]]></content><author><name>Bill Bumgarner</name></author><category term="3d-printing" /><summary type="html"><![CDATA[As far as printer filament goes, TPU is weird. It is the one filament that is always north of the glass transition temperature when you’re working with it. That is, it’s already closer to melted than solid and that’s the whole point. It prints as a flexible material. Can be used to provide soft bumpers or gripping surfaces. Or basketballs. As such, TPU needs a radically different configuration than printing with PETG/PLA or the other filaments that are actually solid. First, TPU is extremely hygroscopic. It sucks up water from the atmosphere like a relative sponge compared to PLA or PETG. So, make sure the filament is dry. For this run, I dried at 47°C and put the filament dryer on a postal scale so I could record weight loss. The first 80 minutes dropped 248g (3,320g → 3,072g). The next 3.5 hours lost only 4g more. Obviously, how quickly filament dries depends entirely on surrounding environment, but the typical recommendation of more than 8 hours is total overkill. TPU Overhead Feed The Prusa XL uses long bowden tubes to feed filament to the print heads. TPU does not work well with bowden tubes. Too much friction and too flexible, so it tends to not feed well at all and causes all kinds of pressure issues at the print head. Thus, the first step was to eliminate the bowden entirely by going to direct feed by hanging the filament spool over the printer and direct feeding. Naive TPU Settings Because the XL is physically not compatible with TPU as a filament, it also doesn’t provide any presets for using TPU. If one naively simply takes a regular filament preset and modifies the print temperatures to print at the temps recommended on the filament’s box (220°C), the result is an utter mess. Prusa XL TPU Preset Add a TPU preset on the Prusa XL itself. Set the nozzle temperature to 205°C and turn off auto-retraction. The rest of the settings are acceptable for a project where TPU is embedded in other filaments that are printed on the bed. To undo the landmine I set for future self, I set the bed temperature to 50°C after taking the screenshot. Actually fixing the problem required changing a TON of parameters. In this case, made more complex because I wanted to print a TPU gripping surface onto the yellow PETG. Thus, the changes made to support TPU had to remain compatible with PETG. Details inside….]]></summary></entry><entry><title type="html">3DMakerPro Toucan: How to Not Throw it Through the Nearest Window</title><link href="https://bbum.net/2026/01/3dmaker-pro-toucan-how-to-not-throw-it-through-nearest-window/" rel="alternate" type="text/html" title="3DMakerPro Toucan: How to Not Throw it Through the Nearest Window" /><published>2026-01-07T00:00:00+00:00</published><updated>2026-01-07T00:00:00+00:00</updated><id>https://bbum.net/2026/01/3dmaker-pro-toucan-how-to-not-throw-it-through-nearest-window</id><content type="html" xml:base="https://bbum.net/2026/01/3dmaker-pro-toucan-how-to-not-throw-it-through-nearest-window/"><![CDATA[<div class="figure right">
<img src="https://live.staticflickr.com/65535/55028706767_d40806c183_n.jpg" width="320" height="240" alt="Printed Anvil with Original" />
<div class="caption"><a href="https://www.flickr.com/photos/49503114554@N01/55028706767">Printed Anvil with Original</a></div>
</div>

<p>The top anvil is a 150+ year old anvil that has been passed down in my family. On the bottom is a sub-millimeter accurate 3D printed copy of said anvil. The 3D file used for printing was generated using the 3DMakerPro Toucan structured light 3D scanner.</p>

<p>The <a href="https://www.amazon.com/s?k=3DMakerPro+Toucan">3DMakerPro Toucan</a> is a standalone handheld 3D scanner running around $2,000 (I got it for 50% off in what seems to be a commonly occurring promotion). It promises 0.03mm accuracy, has 32GB + 256GB of onboard storage, and can operate without a PC for basic scanning.</p>

<p>The device is surprisingly heavy at nearly 2kg and really well built. All metal case. External controls include a brightness dial, power button, and shutter button. There’s a large widescreen touch panel on the back and the device can fully process multiple scans—including point cloud alignment and mesh generation—entirely on device.</p>

<div class="figure left">
<img src="https://live.staticflickr.com/65535/55027894531_25d0790787_n.jpg" width="320" height="240" alt="3DMakerPro Toucan Structured Light 3D Scanner" />
<div class="caption"><a href="https://www.flickr.com/photos/bbum/55027894531/">3DMakerPro Toucan</a></div>
</div>

<p>The fan, though, is questionable. Out of the box it was loud and made odd noises when moving the device around. After a software update, fan speed is now controlled in settings and is reasonably quiet. No indication as to how fan speed might impact performance.</p>

<p>The Toucan uses <a href="https://www.artec3d.com/learning-center/structured-light-3d-scanning">blue laser structured light</a> for scanning with Class 1 and Class 3R modes.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> I don’t trust Class 1 mode and always wear 450nm safety goggles. When I asked 3DMakerPro which glasses to buy, their helpful response: “Our equipment uses a laser wavelength of 450nm; you can use this parameter to select your glasses”.</p>

<!--more-->

<p>Once you get the hang of it, the Toucan produces exceptionally detailed scans. Getting there, however, involves navigating some frustrating software and non-obvious workflows.</p>

<p>Hopefully, this tutorial will help others to avoid the frustrating learning curve I experienced (while no windows were damaged in figuring this out, there were some close calls).</p>

<p><strong>For the step-by-step workflow, see: <a href="/pages/toucan-3d-scanning-workflow/">Toucan 3D Scanner: Object to Printable STL</a></strong></p>

<p>I’m also keeping a <a href="/pages/toucan-notes/">Notes &amp; Gotchas</a> page as a living document of things I’ve learned, workarounds, and other observations as I continue to use the Toucan.</p>

<hr />

<h2 id="texturing">Texturing</h2>

<p>In scanning settings, there are options for texture or geometry. I always scan geometry since my goal is 3D printing. No idea how well the Toucan captures surface textures.</p>

<hr />

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p><strong>Class 1</strong> is safe under normal operation—emitted radiation is below the Maximum Permissible Exposure for the human eye. Still don’t stare at it. <strong>Class 3R</strong> can be potentially hazardous if viewed directly under focused conditions. Risk of injury is low but exists, especially if you stare at the beam. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name>Bill Bumgarner</name></author><category term="3d-printing" /><summary type="html"><![CDATA[Printed Anvil with Original The top anvil is a 150+ year old anvil that has been passed down in my family. On the bottom is a sub-millimeter accurate 3D printed copy of said anvil. The 3D file used for printing was generated using the 3DMakerPro Toucan structured light 3D scanner. The 3DMakerPro Toucan is a standalone handheld 3D scanner running around $2,000 (I got it for 50% off in what seems to be a commonly occurring promotion). It promises 0.03mm accuracy, has 32GB + 256GB of onboard storage, and can operate without a PC for basic scanning. The device is surprisingly heavy at nearly 2kg and really well built. All metal case. External controls include a brightness dial, power button, and shutter button. There’s a large widescreen touch panel on the back and the device can fully process multiple scans—including point cloud alignment and mesh generation—entirely on device. 3DMakerPro Toucan The fan, though, is questionable. Out of the box it was loud and made odd noises when moving the device around. After a software update, fan speed is now controlled in settings and is reasonably quiet. No indication as to how fan speed might impact performance. The Toucan uses blue laser structured light for scanning with Class 1 and Class 3R modes.1 I don’t trust Class 1 mode and always wear 450nm safety goggles. When I asked 3DMakerPro which glasses to buy, their helpful response: “Our equipment uses a laser wavelength of 450nm; you can use this parameter to select your glasses”. Class 1 is safe under normal operation—emitted radiation is below the Maximum Permissible Exposure for the human eye. Still don’t stare at it. Class 3R can be potentially hazardous if viewed directly under focused conditions. Risk of injury is low but exists, especially if you stare at the beam. &#8617;]]></summary></entry><entry><title type="html">Chef Genius: A Custom LLM Recipe Assistant</title><link href="https://bbum.net/2026/01/chef-genius-llm-recipe-assistant/" rel="alternate" type="text/html" title="Chef Genius: A Custom LLM Recipe Assistant" /><published>2026-01-05T00:00:00+00:00</published><updated>2026-01-05T00:00:00+00:00</updated><id>https://bbum.net/2026/01/chef-genius-llm-recipe-assistant</id><content type="html" xml:base="https://bbum.net/2026/01/chef-genius-llm-recipe-assistant/"><![CDATA[<p>I’ve been using a custom GPT called “Chef Genius” for a while now. It’s a recipe assistant tuned to my kitchen - my equipment, my pantry, my dietary preferences. It generates healthy, vegetable-forward meals using what I actually have on hand.</p>

<p>The value isn’t in the Custom GPT (a MyGPT), but in the prompt that it uses. That prompt works very well in Claude, Gemini, or, even, a local LLM of reasonable capability.</p>

<p>Instead of sharing the prompt and having people edit it by hand, I created an interactive form that generates the prompt automatically.</p>

<h2 id="what-it-does">What It Does</h2>

<p>Chef Genius generates recipes that:</p>
<ul>
  <li>Use ingredients and equipment you actually have</li>
  <li>Match your preferred meal style (light, moderate, or hearty)</li>
  <li>Serve your household size</li>
  <li>Provide measurements in grams (with US volume for convenience)</li>
  <li>Include cultural context and prep times</li>
</ul>

<p>The key philosophy: <strong>flavor-first</strong>. No sad “healthy” substitutions that ruin the dish. If a recipe needs butter, it uses butter - just in reasonable amounts.</p>

<h2 id="the-template">The Template</h2>

<p>I’ve created an <a href="/pages/chef-genius-generator/">interactive form</a> that generates a customized prompt for your kitchen. Fill in your equipment, pantry staples, and preferences, then copy the result into any LLM.</p>

<p><em>Click through for hallucination details and tips.</em></p>

<!--more-->

<h2 id="hallucinations">Hallucinations</h2>

<p>Speaking of hallucinations, we’ve all seen the stories of LLMs putting preposterous ingredients in generated recipes or suggesting really dumb ways to improve food. Like <a href="https://www.theverge.com/2024/5/23/24162896/google-ai-overview-hallucinations-glue-in-pizza">glue on pizza</a> or <a href="https://www.aiweirdness.com/ai-recipes-are-bad-and-a-proposal-20-01-31/">Chocolate Chicken Cake</a> or flat out dangerous suggestions.</p>

<p>Yes, you can make it hallucinate some true bogosity, even dangerous bogosity, if you try. And most of the various horror stories were from people trying. The more subtle risk comes from lack of context. If you fire up the LLM and say “make me a sammich”, there is no context; no clue what parameters, what ingredients, what tools, etc… so, it’ll make stuff up (or, in more recent times, it’ll likely ask clarifying questions).</p>

<p>The key to success with an LLM in any task is to (a) <em>provide clear instructions with lots of context to limit the problem space under consideration</em> and (b) <em>focus on things that the LLM has in its training data</em>.</p>

<p>Given that the models used by the likes of Claude, ChatGPT, Gemini, DeepSeek, etc… were trained on vast troves of internet available data and the internet has about 8 bazillion recipes on it, the recipe construction domain definitely meets (b). By providing a prompt that clearly outlines equipment, ingredients, and goals, that meets (a).</p>

<p>The end result is really quite good at coming up with recipes. Yes, you need to proofread, for sure. But I have yet to see any large LLM (local small models get sketchy fast) suggest anything dangerous, much less even suggesting wildly wrong. The biggest problem I had initially is that the recipes would often be scaled for 1 person or 100, hence the “serves 4 people” guideline.</p>

<h2 id="tips-for-using-it">Tips for Using It</h2>

<ol>
  <li>
    <p><strong>Be specific about equipment</strong> - If you have a sous vide or pizza oven, mention it. The LLM will suggest recipes that use them.</p>
  </li>
  <li>
    <p><strong>List your actual pantry</strong> - The more specific, the better. “berbere spice” is more useful than “various spices.”</p>
  </li>
  <li>
    <p><strong>Update it seasonally</strong> - What’s in your fridge changes. Keep a few versions.</p>
  </li>
  <li>
    <p><strong>Start conversations with constraints</strong> - “I have chicken thighs, zucchini, and want something Asian-inspired” works great.</p>
  </li>
</ol>

<p>The <a href="/pages/chef-genius-generator/">generator form</a> makes this easier - fill it out once and copy the result.</p>]]></content><author><name>Bill Bumgarner</name></author><category term="llm" /><category term="cooking" /><summary type="html"><![CDATA[I’ve been using a custom GPT called “Chef Genius” for a while now. It’s a recipe assistant tuned to my kitchen - my equipment, my pantry, my dietary preferences. It generates healthy, vegetable-forward meals using what I actually have on hand. The value isn’t in the Custom GPT (a MyGPT), but in the prompt that it uses. That prompt works very well in Claude, Gemini, or, even, a local LLM of reasonable capability. Instead of sharing the prompt and having people edit it by hand, I created an interactive form that generates the prompt automatically. What It Does Chef Genius generates recipes that: Use ingredients and equipment you actually have Match your preferred meal style (light, moderate, or hearty) Serve your household size Provide measurements in grams (with US volume for convenience) Include cultural context and prep times The key philosophy: flavor-first. No sad “healthy” substitutions that ruin the dish. If a recipe needs butter, it uses butter - just in reasonable amounts. The Template I’ve created an interactive form that generates a customized prompt for your kitchen. Fill in your equipment, pantry staples, and preferences, then copy the result into any LLM. Click through for hallucination details and tips.]]></summary></entry><entry><title type="html">Filament Drying: Temperature Matters More Than Time</title><link href="https://bbum.net/2026/01/filament-drying-temperatures/" rel="alternate" type="text/html" title="Filament Drying: Temperature Matters More Than Time" /><published>2026-01-02T00:00:00+00:00</published><updated>2026-01-02T00:00:00+00:00</updated><id>https://bbum.net/2026/01/filament-drying-temperatures</id><content type="html" xml:base="https://bbum.net/2026/01/filament-drying-temperatures/"><![CDATA[<figure style="float: left; margin: 0 1em 1em 0; max-width: 160px;">
<a data-flickr-embed="true" href="https://www.flickr.com/photos/bbum/55020060419/" title="Filament Dryer Temp Accuracy Test by bbum, on Flickr"><img src="https://live.staticflickr.com/65535/55020060419_80ea9a78d3_b.jpg" width="160" alt="Filament Dryer Temp Accuracy Test" /></a>
<figcaption style="font-size: 0.8em; color: #888;">My filament dryer is off by ~2°C. (Nice self portrait :) )</figcaption>
</figure>

<p>A lot has changed in the 15 years since I acquired my first 3D printer (a wooden <a href="https://makezine.com/article/digital-fabrication/3d-printing-workshop/getting-started-with-a-3d-printer/">Ultimaker Original</a>).</p>

<p>In particular, filament drying is now considered standard procedure. And it really does make a huge difference, especially with very hygroscopic filaments like PETG.</p>

<p>But there is a lot of misinformation out there. Or incomplete information. For example: drying time. Drying time is impacted by too many variables for one to claim “this filament needs to dry for that long at that temperature” and have it be accurate. I’ve measured it by putting my filament dryer on a postal scale and writing down the weights over time. If you read online, PETG drying time will be 6-8+ hours. However, for my moderately damp filament:</p>

<table>
  <thead>
    <tr>
      <th>Time</th>
      <th>Weight</th>
      <th>Total Loss</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>7:40 pm</td>
      <td>4426g</td>
      <td>—</td>
    </tr>
    <tr>
      <td>8:10 pm</td>
      <td>4394g</td>
      <td>32g</td>
    </tr>
    <tr>
      <td>10:10 pm</td>
      <td>4314g</td>
      <td>112g</td>
    </tr>
    <tr>
      <td>11:12 pm</td>
      <td>4312g</td>
      <td>114g</td>
    </tr>
  </tbody>
</table>

<p>This is obviously a one-off and not terribly well designed, but ~3.5 hours sure ain’t 6-8.</p>

<p>Also, the critical part about drying is temperature. You don’t want to exceed the Tg (the glass transition temperature) of the filament <em>or the spool it is on</em>.</p>

<p>I compiled a list of Tg values and safe drying temperature ranges for a bunch of common (and some not so common) materials: <a href="/pages/filament-dryer-temps/">Filament Dryer Temperatures</a>. Also includes some resources for diving into material characteristics.</p>]]></content><author><name>Bill Bumgarner</name></author><category term="3d-printing" /><summary type="html"><![CDATA[My filament dryer is off by ~2°C. (Nice self portrait :) ) A lot has changed in the 15 years since I acquired my first 3D printer (a wooden Ultimaker Original). In particular, filament drying is now considered standard procedure. And it really does make a huge difference, especially with very hygroscopic filaments like PETG. But there is a lot of misinformation out there. Or incomplete information. For example: drying time. Drying time is impacted by too many variables for one to claim “this filament needs to dry for that long at that temperature” and have it be accurate. I’ve measured it by putting my filament dryer on a postal scale and writing down the weights over time. If you read online, PETG drying time will be 6-8+ hours. However, for my moderately damp filament: Time Weight Total Loss 7:40 pm 4426g — 8:10 pm 4394g 32g 10:10 pm 4314g 112g 11:12 pm 4312g 114g This is obviously a one-off and not terribly well designed, but ~3.5 hours sure ain’t 6-8. Also, the critical part about drying is temperature. You don’t want to exceed the Tg (the glass transition temperature) of the filament or the spool it is on. I compiled a list of Tg values and safe drying temperature ranges for a bunch of common (and some not so common) materials: Filament Dryer Temperatures. Also includes some resources for diving into material characteristics.]]></summary></entry></feed>