<?xml version='1.0' encoding='utf-8'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>andyreagan.com</title>
  <subtitle>Blog posts by Andy Reagan</subtitle>
  <id>https://andyreagan.com/</id>
  <link rel="self" type="application/atom+xml" href="https://andyreagan.com/feed.xml" />
  <link rel="alternate" type="text/html" href="https://andyreagan.com/blog.html" />
  <updated>2026-11-09T12:00:00Z</updated>
  <author>
    <name>Andy Reagan</name>
    <uri>https://andyreagan.com/</uri>
  </author>
  <entry>
    <title>PICO-8 on the arcade with the joysticks working</title>
    <id>tag:andyreagan.com,2026-11-09:pico8-on-the-arcade</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-11-09-pico8-on-the-arcade.html" />
    <published>2026-11-09T12:00:00Z</published>
    <updated>2026-11-09T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org120ddd4"&gt;

&lt;div class="outline-text-2" id="text-org120ddd4"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
More games from the kids since &lt;a href="https://andyreagan.com/2026-06-21-abel-wrote-a-game.html#ID-DA9F0944-1FF4-4E2A-A373-D75EBFC862D2"&gt;Dave Digger Bot&lt;/a&gt;,
this was one of the prompts:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
This is fun. Let's make some more games. New game: the bad guys name is
maldrid, an evil wizard. rainbow platforms. the main character is a princess
named princess lucille. the princess tries to collect doggies for points. she
has power to get away, a magic wand that can make the bad guy go away. there
is a tent that is the safety lair, pink tent. a red orb for the bad guy
safety.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
and then to get them on the &lt;a href="https://andyreagan.com/arcade.html#ID-6693F586-F3B1-4E43-A1CE-BDFEF2838EA9"&gt;arcade&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
I'd like you to set up these games to be playable on our arcade, which is
running retropi and has two joystick/set of buttons connected (I think via 4
usb connections total, maybe 2). I had pico8 running there before, but the sd
card had a formatting issue and I started over. So we need to get the
executable up there and running. That's first. I had to use a keyboard before
because the keys I had for pico8 games didn't line up with what the
controllers were using for the inputs. To that end, I want to check for a
keymap file (I programmed the keys with the retropie settings for the
joysticks and buttons). So maybe we can see what they're mapped to now. Go
step by step, you can ssh directly using alias "arcade"
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
It's 2 (DragonRise encoders).
I had to download the raspi zip from lexaloffle myself, uses &lt;code&gt;pico8_dyn&lt;/code&gt;.
Claude on the buttons:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
SDL has a built-in layout for this board that assumes a regular gamepad
… So pressing your &lt;b&gt;a&lt;/b&gt; button paused the game.
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Fix was this in &lt;code&gt;~/.lexaloffle/pico-8/sdl_controllers.txt&lt;/code&gt;,
my buttons from /opt/retropie/configs/all/emulationstation/es&lt;sub&gt;input.cfg&lt;/sub&gt;:
&lt;/p&gt;
&lt;pre class="example"&gt;
03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b9,b:b8,x:b11,y:b10,back:b4,start:b5,leftx:a0,lefty:a1,dpleft:-a0,dpright:+a0,dpup:-a1,dpdown:+a1,platform:Linux,
&lt;/pre&gt;
&lt;p&gt;
Select+start to quit, &lt;code&gt;exit_combo.py&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class="example"&gt;
import os, select, struct, subprocess, glob
SEL, START = 4, 5
fds = {}
for p in glob.glob('/dev/input/js*'):
    fds[os.open(p, os.O_RDONLY)] = set()
while True:
    r, _, _ = select.select(list(fds), [], [])
    for fd in r:
        data = os.read(fd, 128)
        for i in range(0, len(data) - 7, 8):
            _, val, typ, num = struct.unpack('IhBB', data[i:i+8])
            if typ &amp;amp; 0x01:
                (fds[fd].add if val else fds[fd].discard)(num)
        if SEL in fds[fd] and START in fds[fd]:
            subprocess.call(['pkill', '-f', '/home/pi/pico-8/pico8'])
            raise SystemExit
&lt;/pre&gt;
&lt;p&gt;
&lt;code&gt;launch.sh&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class="example"&gt;
#!/bin/bash
python3 /home/pi/pico-8/exit_combo.py &amp;amp; W=$!
cd /home/pi/pico-8
./pico8_dyn -run "$1"
kill $W
&lt;/pre&gt;
&lt;p&gt;
/opt/retropie/configs/all/emulationstation/es&lt;sub&gt;systems.cfg&lt;/sub&gt;:
&lt;/p&gt;
&lt;pre class="example"&gt;
&amp;lt;system&amp;gt;
  &amp;lt;name&amp;gt;pico8&amp;lt;/name&amp;gt;
  &amp;lt;fullname&amp;gt;PICO-8&amp;lt;/fullname&amp;gt;
  &amp;lt;path&amp;gt;/home/pi/RetroPie/roms/pico8&amp;lt;/path&amp;gt;
  &amp;lt;extension&amp;gt;.p8 .P8 .png .PNG .sh&amp;lt;/extension&amp;gt;
  &amp;lt;command&amp;gt;/home/pi/pico-8/launch.sh %ROM%&amp;lt;/command&amp;gt;
  &amp;lt;platform&amp;gt;pico8&amp;lt;/platform&amp;gt;
  &amp;lt;theme&amp;gt;pico8&amp;lt;/theme&amp;gt;
&amp;lt;/system&amp;gt;
&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;
Okay it totally works, incredible!
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr/&gt;
&lt;p&gt;
Afternote: this post was drafted by Claude (from my prompts in the session that
did the setup) and then heavily edited by me.
Before my edits, a fresh Claude agent read it shuffled in with 10 of my older
posts and gave it a 35% chance of being written by me (my real posts were
45-95%), after 7 rounds of rewrites.
This is a crude version of what Nat Eliason built in
&lt;a href="https://x.com/nateliason/status/2115803497773904292"&gt;How to Build an AI Writing System That Actually Sounds Like You&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Work bike commuting</title>
    <id>tag:andyreagan.com,2026-10-22:work-bike-commuting</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-10-22-work-bike-commuting.html" />
    <published>2026-10-22T12:00:00Z</published>
    <updated>2026-10-22T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org4e45e1a"&gt;

&lt;div class="outline-text-2" id="text-org4e45e1a"&gt;
&lt;p&gt;
Ive been searching and iterating on how to effectively dial into zoom calls on the go. At this point I have subjected my colleagues and board members to hours of terrible audio, and Im still figuring it out!
&lt;/p&gt;
&lt;p&gt;
I use an iPhone 15 pro max, great for reception quality. The built-in mic is so far the best option!
&lt;/p&gt;
&lt;p&gt;
Airpods pro, my first attempt to do better, perform really really terribly in the wind. Speakerphone is better.
&lt;/p&gt;
&lt;p&gt;
My next attempt for open-ear will be the BiKom 20, I found a set on ebay for 180.
&lt;/p&gt;
&lt;p&gt;
This aligns nicely to escape’s review: &lt;a class="bare-url" href="https://escapecollective.com/the-quest-for-a-wind-noise-solution-cyclists-will-actually-wear/"&gt;https://escapecollective.com/the-quest-for-a-wind-noise-solution-cyclists-will-actually-wear/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I use a regular helmet and a ski helmet mostly, which are very different. The ski helmet protects from noise, and I need earbuds to hear. But it also jams the earbuds in, after an hour it hurts. There is some ability for people to hear me when I use airpods with the ski helmet and face mask protecting from wind.
Without the ski helmet, traffic is still too loud to hear reliably over 20mph, so I need headphones. But Ill switch to speaker to be heard.
&lt;/p&gt;
&lt;p&gt;
30cent Lapel mic is actually pretty great, but I have to rely on speaker to hear for this.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Outbound light mount</title>
    <id>tag:andyreagan.com,2026-09-08:outbound-light-mount</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-09-08-outbound-light-mount.html" />
    <published>2026-09-08T12:00:00Z</published>
    <updated>2026-09-08T12:00:00Z</updated>
    <category term="ATTACH" />
    <content type="html">&lt;div class="outline-2" id="outline-container-orga25e574"&gt;

&lt;div class="outline-text-2" id="text-orga25e574"&gt;
&lt;p&gt;
I shot this message over to the folks at Outbound lights,
you can also use the file!
&lt;/p&gt;
&lt;p&gt;
Hey guys. I'm enjoying my detour light! It worked great overnight with pass through charging, my only lighting for a long haul ride, and it's great as my daily commuting light (for visibility, this time of year). It did stop working for a couple days with apparent water inside (not sure how? droplets on the lens, behaving erratically, I let it dry thoroughly with the charge flap open and fan on it, and it's back to life).
&lt;/p&gt;
&lt;p&gt;
Anyway, my front rack &lt;a class="bare-url" href="https://pelagobicycles.com/commuter-front-rack-aluminium-large/"&gt;https://pelagobicycles.com/commuter-front-rack-aluminium-large/&lt;/a&gt; has a mount option for a light, and I found that a bag on the rack often blocked the light from the handlebars.
&lt;/p&gt;
&lt;p&gt;
To make it fit, I printed up this little adapter (in orange):
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/media/2026-09-08-outbound-light-mount/1.jpg"&gt;1.jpg&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Here's the inside:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/media/2026-09-08-outbound-light-mount/2.jpg"&gt;2.jpg&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I attached the STL file, it's very simple. Thought you might enjoy.
For readers of the blog: &lt;a href="https://andyreagan.com/media/2026-09-08-outbound-light-mount/Light mount adapter.stl"&gt;Light mount adapter.stl&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
See more at &lt;a href="https://andyreagan.com/3dprinting.html#ID-94340141-18D8-4156-8A5E-9746562C938C"&gt;3D Printing&lt;/a&gt;.
Making ~1100 miles on &lt;a href="https://andyreagan.com/specializedturbolevo.html#ID-54BCA490-2720-48B8-B8BB-13B2EA7176F7"&gt;Specialized Turbo Creo&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Fuzzing, formal verification, and in-between</title>
    <id>tag:andyreagan.com,2026-09-01:fuzzing-verification</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-09-01-fuzzing-verification.html" />
    <published>2026-09-01T12:00:00Z</published>
    <updated>2026-09-01T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org74b5959"&gt;

&lt;div class="outline-text-2" id="text-org74b5959"&gt;
&lt;p&gt;
I'm not the first to become interested in verification,
but "formal verification" means something specific.
See &lt;a href="https://ghuntley.com/slop/"&gt;Geoffrey Huntley&lt;/a&gt; joining Antithesis.
&lt;/p&gt;
&lt;p&gt;
If you've worked with Claude Code,
perhaps especially Fable,
you'll pretty quickly realize that you ability to produce software is only
limited by your ability to architect and test it.
&lt;/p&gt;
&lt;p&gt;
The answer from Antithesis seems good,
and is maybe the right take.
To understand their take, watch the video Huntley links to,
it's worth the time.
&lt;/p&gt;
&lt;p&gt;
Formal verification is with systems like &lt;a href="https://github.com/hypothesisworks/hypothesis"&gt;hypothesis&lt;/a&gt;.
I had Claude lay this out as a levels of specification,
and hypothesis lands somewhere in the middle.
It's not full formal verification of behaivor,
like a Lean proof or a Dafny assertion,
but it's way more precise than a written description of a feature than a BA.
&lt;/p&gt;
&lt;p&gt;
This is not well thought out here - just putting down some notes that I'm
interested in the topic and I'm going to be exploring it more.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>10 years ago I was on VPR</title>
    <id>tag:andyreagan.com,2026-07-21:10-years-since-VPR</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-07-21-10-years-since-VPR.html" />
    <published>2026-07-21T12:00:00Z</published>
    <updated>2026-07-21T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org298e997"&gt;

&lt;div class="outline-text-2" id="text-org298e997"&gt;
&lt;p&gt;
My claim to fame.
How time has flown!
&lt;/p&gt;
&lt;p&gt;
&lt;a class="bare-url" href="https://www.vermontpublic.org/vpr-news/2016-07-21/story-core-uvm-researchers-use-data-mining-to-identify-emotional-story-arcs"&gt;https://www.vermontpublic.org/vpr-news/2016-07-21/story-core-uvm-researchers-use-data-mining-to-identify-emotional-story-arcs&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>A little mobile editor for my org-mode brain</title>
    <id>tag:andyreagan.com,2026-06-30:local-pkm-editor</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-06-30-local-pkm-editor.html" />
    <published>2026-06-30T12:00:00Z</published>
    <updated>2026-06-30T12:00:00Z</updated>
    <category term="software" />
    <category term="orgmode" />
    <category term="pkm" />
    <content type="html">&lt;div class="outline-2" id="outline-container-orga48ea7b"&gt;

&lt;div class="outline-text-2" id="text-orga48ea7b"&gt;
&lt;p&gt;
I keep my whole personal knowledge base in &lt;a href="https://andyreagan.com/tools-for-thought.html#ID-0586BA67-9CB1-4838-BBFC-C2C155EE2FFE"&gt;Org mode&lt;/a&gt; –
a flat directory of &lt;code&gt;.org&lt;/code&gt; files in &lt;code&gt;~/brain&lt;/code&gt;, edited in Emacs on the laptop and
exported to HTML for the blog.
On the desktop this is a joy.
On my phone it has always been the weak link.
&lt;/p&gt;
&lt;p&gt;
The single biggest source of friction was &lt;b&gt;adding photos&lt;/b&gt;.
I'd take a picture of a race, a bike repair, a chicken coop fix –
and then it would sit on my phone until I got back to a real keyboard,
remembered to move it into the right &lt;code&gt;media/&lt;/code&gt; folder,
and wrote the link by hand.
Most of the time the moment passed and the photo never made it in.
Everything else (a quick note, a link for the blogroll, ticking off a TODO)
was technically possible through some combination of SMB shares and iOS org
apps, but fiddly enough that I didn't reach for it.
&lt;/p&gt;
&lt;p&gt;
So I built &lt;a href="https://github.com/andyreagan/mobile-brain"&gt;mobile-brain&lt;/a&gt;:
a tiny mobile-first web app that does &lt;b&gt;only&lt;/b&gt; the handful of things I actually
want to do from my phone.
View and edit pages from the org source (not the rendered HTML),
create new posts and pages,
capture a link to the blogroll or a note to my journal,
toggle TODOs,
and – the whole point – snap a photo or pick one from the gallery and have it
dropped into the right companion &lt;code&gt;media/&lt;/code&gt; directory with the org link inserted
right where my cursor is.
&lt;/p&gt;
&lt;p&gt;
The design constraint that keeps it simple:
it only ever writes &lt;code&gt;.org&lt;/code&gt; source and image files.
It never renders HTML, never publishes, never touches the deploy pipeline.
All of that still happens on the desktop, where it belongs.
The app just gets words and pictures into the files;
Synology Drive syncs them back to the laptop, and the next time I'm at my desk
the normal Emacs export takes over.
That division of labor is why it could stay small enough to actually finish.
&lt;/p&gt;
&lt;p&gt;
A few things fell out nicely.
It runs inside my Tailscale VPN, bound to the tailnet IP, so there's no auth to
build and nothing exposed to the internet – the network &lt;b&gt;is&lt;/b&gt; the perimeter.
It installs to the iOS home screen as a PWA, so it opens full-screen like a real
app.
And it adds backlinks the way &lt;a href="https://andyreagan.com/tools-for-thought.html#ID-0D7EAA8E-8758-4DDE-B667-2D4E5589F94C"&gt;org-super-links&lt;/a&gt; does on the desktop:
pick a page to link to, and it both inserts the forward link and writes the
reverse link into the target's &lt;code&gt;:BACKLINKS:&lt;/code&gt; drawer, minting an &lt;code&gt;:ID:&lt;/code&gt; if the
heading doesn't have one.
I had it use human-readable slug IDs (&lt;code&gt;home-gym-build&lt;/code&gt;) instead of UUIDs –
&lt;code&gt;org-id&lt;/code&gt; indexes the literal &lt;code&gt;:ID:&lt;/code&gt; value, so slugs resolve cross-file in Emacs
exactly like UUIDs do, they're just nicer to read.
&lt;/p&gt;
&lt;p&gt;
It is built with Flask and Svelte, which is overkill for what it is, but the two
genuinely nicer-on-mobile pieces – inserting an image at the cursor, and
autosave on a flaky connection – earned the front-end framework.
&lt;/p&gt;
&lt;p&gt;
This very much embodies &lt;a href="https://andyreagan.com/tools-for-thought.html#ID-8C9AD2DD-4589-4B2E-A5D2-A334A89F9701"&gt;file over app&lt;/a&gt;:
the app is disposable, the files are forever.
If mobile-brain disappears tomorrow, my brain is still a pile of plain text I can
open anywhere.
That's the only kind of tool I want to build for this.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Dave Digger Bot</title>
    <id>tag:andyreagan.com,2026-06-21:abel-wrote-a-game</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-06-21-abel-wrote-a-game.html" />
    <published>2026-06-21T12:00:00Z</published>
    <updated>2026-06-21T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org6cc8e76"&gt;

&lt;div class="outline-text-2" id="text-org6cc8e76"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/maintenance.html#ID-2CFFB586-E2BA-4F70-875A-EE26534C8BFA"&gt;Other (not otherwise tracked in maintenance.org or websites.org)&lt;/a&gt; | | &lt;a href="https://andyreagan.com/2026-11-09-pico8-on-the-arcade.html#ID-54F48D57-FD4A-4831-B632-9879FA61A55F"&gt;PICO-8 on the arcade with the joysticks working&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/abel.html#ID-F8C25F5C-F0A4-4CE6-95A2-BD687A45AED1"&gt;Abel&lt;/a&gt; wrote a game, with Claude's help,
and it's pretty aweseome.
We had worked on the sprites a few times before,
and for our "special" time on Fathers day we made it work.
&lt;/p&gt;
&lt;p&gt;
He drew the sprites in PICO 8, designed the gameplay,
and Claude made it playable.
This is a serious upgrade to our first big game attempt last year,
where I tried to get them more invovled in the gameplay,
and watched youtube tutorials with them while writing the code myself!
&lt;/p&gt;
&lt;p&gt;
It's very fun and it's here: &lt;a class="bare-url" href="https://github.com/andyreagan/dave-digger-bot"&gt;https://github.com/andyreagan/dave-digger-bot&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This is another example where if we'd just asked Claude to "make us a game"
with some loose ideas it would not have worked out.
By constraining to pico 8 we were able to do the artwork (Claude sucks at this,
in general) and also set it up for success with a simple framework.
Of course, props to PICO 8 team,
and h/t to Shane Celis who I heard about it from.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Making the Bonavita smarter</title>
    <id>tag:andyreagan.com,2026-06-20:making-the-bonavita-smarter</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-06-20-making-the-bonavita-smarter.html" />
    <published>2026-06-20T12:00:00Z</published>
    <updated>2026-06-20T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org8747f6b"&gt;

&lt;div class="outline-text-2" id="text-org8747f6b"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/coffee.html#ID-D6DBC594-0B25-45C5-B846-6D74D75C05B4"&gt;Drip&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
I added a Zooz Z-wave relay to the Bonavita coffee machine and now I can turn it
on with my phone!
&lt;/p&gt;
&lt;figure id="org6aaa859"&gt;
&lt;img alt="image.jpg" src="https://andyreagan.com/media/2026-06-20-making-the-bonavita-smarter/image.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
More automations "needed" to have hot coffee before I come downstairs in the
morning.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Introducing the Healify App</title>
    <id>tag:andyreagan.com,2026-06-19:healify</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-06-19-healify.html" />
    <published>2026-06-19T12:00:00Z</published>
    <updated>2026-06-19T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org8ae18a6"&gt;

&lt;div class="outline-text-2" id="text-org8ae18a6"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/notes.html#ID-D21561C8-F52E-4694-972F-2B050173EB11"&gt;Daily &amp;lt;2026-06-19 Fri&amp;gt;&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
Had a big bike crash this past &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;&amp;lt;2026-06-13 Sat&amp;gt;&lt;/span&gt;&lt;/span&gt;,
and the hip wound and hand will need to be monitored for a longer time.
All of my photos of them were scattered across the gallery on my phone,
mixed in with everything else.
So while stuck in bed I had Claude write an iOS app to organize the photos and
notes for each of the wounds/scratches.
It's been helpful to crop and save photos per-wound,
and take notes on how often I'm changing the bandages out.
Claude built the whole thing in a day (with tests, and CI, which is more than
I would have done).
&lt;/p&gt;
&lt;p&gt;
I "sideloaded" it onto my &lt;a href="https://andyreagan.com/iphone15promax.html#ID-F01D99AD-D47E-46D1-ABC1-CE1DFF39814F"&gt;iPhone 15 Pro Max&lt;/a&gt;
after jumping through all of Apple's insane hoops to do so,
and apparently it will still need to be rebuilt weekly.
Very frustrating that I can't push this to the app store without a $99/year
developer license!
&lt;/p&gt;
&lt;p&gt;
Anyway, here's the code, feel free to re-use if it's at all helpful:
&lt;a class="bare-url" href="https://github.com/andyreagan/healify"&gt;https://github.com/andyreagan/healify&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Afternote: the first draft of this post was also written by Claude,
I've since rewritten it with more of my own notes from that week.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>♛ Kings ♛ of ♛ Shutesbury ♛ is 🎉🎉 LIVE 🎉🎉</title>
    <id>tag:andyreagan.com,2026-05-28:kings-of-shutesbury</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-05-28-kings-of-shutesbury.html" />
    <published>2026-05-28T12:00:00Z</published>
    <updated>2026-05-28T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orgc84b106"&gt;

&lt;div class="outline-text-2" id="text-orgc84b106"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/maintenance.html#ID-2CFFB586-E2BA-4F70-875A-EE26534C8BFA"&gt;Other (not otherwise tracked in maintenance.org or websites.org)&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
We have a leaderboard, we have a map, we have segments, and we have a king: none
other than Owen Wright.
&lt;/p&gt;
&lt;p&gt;
After a couple months of hunting the smaller stuff, happy to report that I've
scored in 4th place with 79 points!
&lt;/p&gt;
&lt;p&gt;
Shutesbury's own @Owen Skorupski is right there with 72 points, and @Bowen
Woodard-McNiff is on the board with 4 points. Our Leverett neighbor @Nick
Gaubinger is leading on gravel, and @Drew Best on MTB.
&lt;/p&gt;
&lt;p&gt;
You can check it out at &lt;a class="bare-url" href="https://andyreagan.github.io/kings-of-shutesbury/"&gt;https://andyreagan.github.io/kings-of-shutesbury/&lt;/a&gt;,
source is on &lt;a href="https://github.com/andyreagan/kings-of-shutesbury"&gt;github&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Leaderboard:
&lt;/p&gt;
&lt;figure id="org85aa643"&gt;
&lt;img alt="kings-1.jpg" src="https://andyreagan.com/media/2026-05-28-kings-of-shutesbury/kings-1.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
Maps:
&lt;/p&gt;
&lt;figure id="orgdf229c6"&gt;
&lt;img alt="kings-2.jpg" src="https://andyreagan.com/media/2026-05-28-kings-of-shutesbury/kings-2.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
Segments:
&lt;/p&gt;
&lt;figure id="org79246c8"&gt;
&lt;img alt="kings-3.jpg" src="https://andyreagan.com/media/2026-05-28-kings-of-shutesbury/kings-3.jpg"/&gt;
&lt;/figure&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>New version of my 24-hour Garmin watch face released</title>
    <id>tag:andyreagan.com,2026-05-20:garmin-watch-face-v2-published</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-05-20-garmin-watch-face-v2-published.html" />
    <published>2026-05-20T12:00:00Z</published>
    <updated>2026-05-20T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org23ed534"&gt;

&lt;div class="outline-text-2" id="text-org23ed534"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/garmin.html#ID-EE61DD21-26C4-442B-A987-91888032DC16"&gt;24-Hour Watch face&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
V2 is live now:
&lt;/p&gt;
&lt;p&gt;
&lt;a class="bare-url" href="https://apps.garmin.com/apps/143cd37d-d146-4e4c-a2c8-7bfd7b418cbe"&gt;https://apps.garmin.com/apps/143cd37d-d146-4e4c-a2c8-7bfd7b418cbe&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I'd released V1 and after a few days of use,
thought to add colored minute hand and color-matching 5-minute ticks.
I started working on these and then got a comment requesting them!
Who knew someone would actually use my watch face…
&lt;/p&gt;
&lt;p&gt;
Then I noticed that the "Slow Watch" has 12 on top,
started adding that,
and got another comment requesting that feature!
These people are reading my mind.
&lt;/p&gt;
&lt;p&gt;
Got them both released right now and it's working on my write right now,
just before 23:00 while I'm sitting with the kids.
I guess it's been done and I just needed to upload since &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;&amp;lt;2026-05-06 Wed&amp;gt;&lt;/span&gt;&lt;/span&gt;.
&lt;/p&gt;
&lt;p&gt;
Code is here: &lt;a class="bare-url" href="https://github.com/andyreagan/garmin-24h-watchface"&gt;https://github.com/andyreagan/garmin-24h-watchface&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>The AI Reckoning</title>
    <id>tag:andyreagan.com,2026-05-06:AI-reckoning</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-05-06-AI-reckoning.html" />
    <published>2026-05-06T12:00:00Z</published>
    <updated>2026-05-06T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org8fdf241"&gt;

&lt;div class="outline-text-2" id="text-org8fdf241"&gt;
&lt;p&gt;
Just wanted to point out that there is a lot of writing and thinking swirling
around that highlight the disillusionment of productivity with AI.
I can say we've also experienced some degree of this at MassMutual,
and personally I feel so much more productive…but am I really?
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;a href="https://www.robert-glaser.de/when-everyone-has-ai-and-the-company-still-learns-nothing/"&gt;When everyone has AI and the company still learns nothing&lt;/a&gt; by Robert Glaser.
Via &lt;a href="https://news.ycombinator.com/item?id=48020063"&gt;HN&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.b-list.org/weblog/2026/apr/09/llms/"&gt;Let’s talk about LLMs&lt;/a&gt; by James Bennett
A really critical review, without having used the tools, based heavily on Fred
Brooks' &lt;i&gt;No Silver Bullet&lt;/i&gt; and &lt;i&gt;The Mythical Man-Month&lt;/i&gt;.
Via &lt;a href="https://news.ycombinator.com/item?id=48011904"&gt;HN&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mariozechner.at/posts/2026-03-25-thoughts-on-slowing-the-fuck-down/"&gt;Thoughts on slowing the fuck down&lt;/a&gt; by Mario Zechner.
Author of &lt;code&gt;pi-agent&lt;/code&gt;.
Didn't want me coming to his site from HN…&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thetypicalset.com/blog/thoughts-on-coding-agents"&gt;The bottleneck was never the code&lt;/a&gt; by Rémi, via &lt;a href="https://news.ycombinator.com/item?id=48006967"&gt;HN&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
All four are saying the same things:
these agent factories are not replacing people,
or in many cases, actually speeding up delivery!
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>A better strength workout visualization: Rep Grid</title>
    <id>tag:andyreagan.com,2026-05-04:rep-grid-strength-vis</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-05-04-rep-grid-strength-vis.html" />
    <published>2026-05-04T12:00:00Z</published>
    <updated>2026-05-04T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org117f780"&gt;

&lt;div class="outline-text-2" id="text-org117f780"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/maintenance.html#ID-2CFFB586-E2BA-4F70-875A-EE26534C8BFA"&gt;Other&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
The GPS tracks for riding and running make really nice visualizations.
And I kind of hate the "muscle group" type vis for lifting.
So I tried to make my own!
&lt;/p&gt;
&lt;p&gt;
The idea was to get a sense for the type of workout (e.g., 5x5 structure),
and how much was lifted.
You sort-of lose the type of exercise here though.
I tried.
I'm not in love with the results.
Claude made many different versions, and then we refined this one substantially,
but a month later I'm not …excited… by it.
&lt;/p&gt;
&lt;p&gt;
Here's the codebase, there are samples and even an online vis generator with it:
&lt;a class="bare-url" href="https://github.com/andyreagan/rep-grid"&gt;https://github.com/andyreagan/rep-grid&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>So long, openclaw</title>
    <id>tag:andyreagan.com,2026-04-15:so-long-openclaw</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-04-15-so-long-openclaw.html" />
    <published>2026-04-15T12:00:00Z</published>
    <updated>2026-04-15T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orgc97ceb0"&gt;

&lt;div class="outline-text-2" id="text-orgc97ceb0"&gt;
&lt;p&gt;
My brief run at having OpenClaw running via my Anthropic account has come to an
abrupt end as they have shut down third party apps.
Boo!
&lt;/p&gt;
&lt;p&gt;
I had a fun daily report coming via telegram,
I had up making weekly PRs against all of my python projects…
&lt;/p&gt;
&lt;p&gt;
This also means I'm back to the Claude code harness,
with all of it's context bloat etc.
&lt;/p&gt;
&lt;p&gt;
I &lt;i&gt;think&lt;/i&gt; I can do a lot of this via the Claude ecosystem,
but don't have the energy to go back through setting it up.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>2025 Recap</title>
    <id>tag:andyreagan.com,2026-03-08:2025-recap</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-03-08-2025-recap.html" />
    <published>2026-03-08T12:00:00Z</published>
    <updated>2026-03-08T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orge28bd1c"&gt;

&lt;div class="outline-text-2" id="text-orge28bd1c"&gt;
&lt;p&gt;
I liked seeing the &lt;a href="https://andyreagan.com/2024-12-31-year-by-numbers.html#ID-F0C7B070-8C33-4D7C-98E0-30A95F9D3917"&gt;2024 Recap&lt;/a&gt; just
now,
so I should try a 2025.
Better late than never!
I'll try for the same numbers.
&lt;/p&gt;
&lt;p&gt;
By the numbers:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;493 miles run (82k ft, 83h)&lt;/li&gt;
&lt;li&gt;6,014.6 miles ridden (370k ft, 373h)&lt;/li&gt;
&lt;li&gt;982lb E1RM combined powerlift (so close to 1000!)&lt;/li&gt;
&lt;li&gt;0 ER Visits&lt;/li&gt;
&lt;li&gt;1 FKT (better than a marathon? erie canal)&lt;/li&gt;
&lt;li&gt;1 OCR (spartan again)&lt;/li&gt;
&lt;li&gt;0 academic papers&lt;/li&gt;
&lt;li&gt;5 prod releases of LW backend&lt;/li&gt;
&lt;li&gt;3 classes taught&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Personal projects
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;a href="https://andyreagan.com/bikeshop.html#ID-6A050A45-8807-45D9-97CF-36BECBBA0E23"&gt;Bike Shop&lt;/a&gt; build underway&lt;/li&gt;
&lt;li&gt;Grin ebike build running (see &lt;a href="https://andyreagan.com/ebikes.html#ID-AA53F070-CFA2-4736-8FBA-0FF5C411935E"&gt;Grin build&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;3d printer, so many designs and prints made (see &lt;a href="https://andyreagan.com/centauri-carbon.html#ID-6578180E-B63D-4A11-9834-E70443512419"&gt;Centauri Carbon 3D Printer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;No changes in car ownership&lt;/li&gt;
&lt;li&gt;&lt;a href="https://andyreagan.com/johndeere.html#ID-0AFBDC89-F49C-4361-951D-E1F717CB9319"&gt;Lawn tractor&lt;/a&gt; didn't make it: to the neighbors&lt;/li&gt;
&lt;li&gt;Expanding use of &lt;a href="https://andyreagan.com/synology.html#ID-BFC305BC-C646-4A35-819B-09107BE89D60"&gt;NAS&lt;/a&gt; (this blog is on it!)
&lt;ul class="org-ul"&gt;
&lt;li&gt;3d printer bridge&lt;/li&gt;
&lt;li&gt;now into 2026 moved turkey trot website on&lt;/li&gt;
&lt;li&gt;retiresim, training app next&lt;/li&gt;
&lt;li&gt;blog to docker host&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://andyreagan.com/homeassistant.html#ID-6911ECF4-EC33-4B20-A020-9497B3E11A4C"&gt;Home Assistant&lt;/a&gt; use expanded
&lt;ul class="org-ul"&gt;
&lt;li&gt;bluetooth bridge + temp/humidity/co2 sensor&lt;/li&gt;
&lt;li&gt;z-wave bridge&lt;/li&gt;
&lt;li&gt;fire alarm sensor&lt;/li&gt;
&lt;li&gt;thermostats&lt;/li&gt;
&lt;li&gt;bike shop lights&lt;/li&gt;
&lt;li&gt;all door monitors&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Completed my full first reponder course (finally, officially)&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Ebike woes</title>
    <id>tag:andyreagan.com,2026-02-26:ebike-out-of-commission</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-02-26-ebike-out-of-commission.html" />
    <published>2026-02-26T12:00:00Z</published>
    <updated>2026-02-26T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orgdb653bd"&gt;

&lt;div class="outline-text-2" id="text-orgdb653bd"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/ebikes.html#ID-1371CCD7-401C-46EA-8592-E708B1C94746"&gt;Cut the motor wires&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
It's always an adventure biking and ebiking to work.
Less so biking, other than it takes some time.
The ebike is always breaking in various ways,
and I'm always tinkering with it.
&lt;/p&gt;
&lt;p&gt;
Swapped to slicks (and pedals with a flat side) this morning…
got a flat 3 miles in.
See flat:
&lt;/p&gt;
&lt;figure id="org3a911ff"&gt;
&lt;img alt="1.JPEG" src="https://andyreagan.com/media/2026-02-26-ebike-out-of-commission/1.JPEG"/&gt;
&lt;/figure&gt;
&lt;p&gt;
Got it changed carefully not pinching or getting more dirt in
(must have pinched the tube during the swap?).
This is the pinch:
&lt;/p&gt;
&lt;figure id="org8119183"&gt;
&lt;img alt="2.JPEG" src="https://andyreagan.com/media/2026-02-26-ebike-out-of-commission/2.JPEG"/&gt;
&lt;/figure&gt;
&lt;p&gt;
Ready to roll (not quite: check that torque arm):
&lt;/p&gt;
&lt;figure id="org9d31475"&gt;
&lt;img alt="3.JPEG" src="https://andyreagan.com/media/2026-02-26-ebike-out-of-commission/3.JPEG"/&gt;
&lt;/figure&gt;
&lt;p&gt;
I remembered that I forgot to attach the torque arm,
10 miles later…
made the mistake of hitting the regen to stop
which swung the torque arm forward and totally smushed the motor wires…
womp womp.
No obvious shorts happened: controller light on,
12v system still going,
but nothing on the CA.
Will have to repair the wire and then see…
emailed Grin on &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;&amp;lt;2026-03-28 Sat&amp;gt; &lt;/span&gt;&lt;/span&gt; to see if they can do the repair.
Phone died waiting for a ride so I collected a small mountain of trash and cans.
&lt;/p&gt;
&lt;p&gt;
Thanks Sam and MaryAnne for the ride!
&lt;/p&gt;
&lt;p&gt;
Here's a photo of the damage:
&lt;/p&gt;
&lt;figure id="org7ce9abe"&gt;
&lt;img alt="4.JPEG" src="https://andyreagan.com/media/2026-02-26-ebike-out-of-commission/4.JPEG"/&gt;
&lt;/figure&gt;
&lt;p&gt;
&lt;a href="https://www.strava.com/activities/17866271036"&gt;Ride on strava&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Claude code, meet pi</title>
    <id>tag:andyreagan.com,2026-02-11:claude-code-pi</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2026-02-11-claude-code-pi.html" />
    <published>2026-02-11T12:00:00Z</published>
    <updated>2026-02-11T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org3672d09"&gt;

&lt;div class="outline-text-2" id="text-org3672d09"&gt;
&lt;p&gt;
I had asked Claude code itself just three days ago if it could pare down it's
own default context, which starts out by consuming 22K tokens.
Turns out,
all I need was the pi-agent.
Works like a charm!
&lt;/p&gt;
&lt;p&gt;
Onward with super productivity.
Like others have noted,
I'm working just as much as before,
but it feels like I'm taking on more ambitious projects.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Tech Jam Burlington</title>
    <id>tag:andyreagan.com,2025-12-01:tech-jam-burlington</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-12-01-tech-jam-burlington.html" />
    <published>2025-12-01T12:00:00Z</published>
    <updated>2025-12-01T12:00:00Z</updated>
    <category term="ATTACH" />
    <content type="html">&lt;div class="outline-2" id="outline-container-org3d350e6"&gt;

&lt;div class="outline-text-2" id="text-org3d350e6"&gt;
&lt;p&gt;
I found this old video! See attached.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Claude Won the 5k</title>
    <id>tag:andyreagan.com,2025-10-28:claude-5k-win</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-10-28-claude-5k-win.html" />
    <published>2025-10-28T12:00:00Z</published>
    <updated>2025-10-28T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orgc9aa8d6"&gt;

&lt;div class="outline-text-2" id="text-orgc9aa8d6"&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/2025-10-17-claude-5k-training.html"&gt;A few weeks ago I wrote about using Claude to design my 5k training plan&lt;/a&gt;.
The short version: I hadn't trained specifically for a 5k in years,
had about a month before the MassMutual Halloween Hustle,
and decided to let the model design the block.
&lt;/p&gt;
&lt;p&gt;
Spoiler: it worked.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-org813c7bb"&gt;
&lt;h3 id="org813c7bb"&gt;The Race&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org813c7bb"&gt;
&lt;p&gt;
&lt;a href="https://www.strava.com/activities/16282787982/overview"&gt;MassMutual Halloween Hustle 5k 🥇&lt;/a&gt; — October 28, 2025
&lt;/p&gt;
&lt;p&gt;
Final time: &lt;b&gt;19:30&lt;/b&gt; (6:17/mile pace).
First place overall.
&lt;/p&gt;
&lt;p&gt;
The race was a solid effort — not an all-out PR attempt, but a controlled hard
effort that put me at the front from the start.
I felt good through the middle miles and had enough left to push the finish.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-orged8ea61"&gt;
&lt;h3 id="orged8ea61"&gt;Did the Plan Work?&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orged8ea61"&gt;
&lt;p&gt;
Looking back at &lt;a href="https://andyreagan.com/2025-10-17-claude-5k-training.html"&gt;the training block&lt;/a&gt;,
Claude's plan was structured and sensible:
intervals early, tempo work in the middle, short sharpening sessions close to race day.
I didn't execute every session perfectly (the lifting fell off toward the end),
but the running volume was there and the quality work held up.
&lt;/p&gt;
&lt;p&gt;
The 19:30 was a comfortable win.
Would I have been faster with a different plan?
Hard to say.
But going from zero 5k-specific training to a race win in four weeks —
I'll take it.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-org35e72f5"&gt;
&lt;h3 id="org35e72f5"&gt;What's Next&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org35e72f5"&gt;
&lt;p&gt;
Back to cycling for the fall/winter.
Maybe we run this experiment again next year and see if we can go sub-19.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/running.html"&gt;Running&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>EBike Battery Mount</title>
    <id>tag:andyreagan.com,2025-10-26:ebike-battery-mount</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-10-26-ebike-battery-mount.html" />
    <published>2025-10-26T12:00:00Z</published>
    <updated>2025-10-26T12:00:00Z</updated>
    <category term="ATTACH" />
    <content type="html">&lt;div class="outline-2" id="outline-container-orge5654fe"&gt;

&lt;div class="outline-text-2" id="text-orge5654fe"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/raleighfurley.html#ID-9A50A918-0F77-49D8-98BA-BF652AB83259"&gt;2025&lt;/a&gt; | &lt;a href="https://andyreagan.com/3dprinting.html#ID-4C94A6FD-4B5A-45DA-B929-6C735DCBD0E8"&gt;Ebike battery holder&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
Mounting the triangle battery in a good place is not so easy!
If you have frame in which it's close to the top tube,
perhaps strapping to all the tubes would work just fine.
My triangle is much bigger so I initially attached it in the top corner like
this:
&lt;/p&gt;
&lt;figure id="org07ef911"&gt;
&lt;img alt="IMG_3384.jpeg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_3384.jpeg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
That worked well for 400-ish miles,
until the velcro straps broke.
It also turned out that part of the loops had broken off too.
Maybe some bike tube padding and a bike tube strap would have helped?
The straps giving out was the same day that my pannier detached and my laptop
and phone were totally crushed.
I was able to hold the battery for the last couple miles,
but I was pretty defeated after this and didn't ride for a couple months.
&lt;/p&gt;
&lt;p&gt;
Seeing this battery on the floor, and just moving it around as I build out the
bike shop, was sad.
It needed to go back on the bike!
With some velcro straps and plenty of bike tube tying,
this was a rock solid attachment:
&lt;/p&gt;
&lt;figure id="orgf0f7ec9"&gt;
&lt;img alt="IMG_0603.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0603.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
I did two commutes on this,
around 100 miles,
and it was great.
Yet I was satisified!
Getting the weight lower would definitely make the bike handle better,
and it kind of looked like shit.
&lt;/p&gt;
&lt;p&gt;
So I spent two hours measuring, 3d modeling, and got it mounted in the lower
part of the triangle.
I was inspired by a lot of different attempts at this:
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;&lt;a href="https://twowheellifestyle.com/how-to-make-an-ebike-triangle-battery-cradle"&gt;This guy made an aluminum bracket system which is cool&lt;/a&gt; [&lt;a href="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/2025-10-26-How To Make An eBike Triangle Battery Cradle – Two Wheel Lifestyle.html"&gt;cache&lt;/a&gt;].&lt;/li&gt;
&lt;li&gt;The grin &lt;a href="https://ebikes.ca/product-info/grin-products/battery-anchors.html"&gt;triple bob attachment&lt;/a&gt; using hose clamps for extra security.
I bought one of these with the whole system, turned out I didn't need it!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thingiverse.com/thing:4648926"&gt;This guy made some 3d-printed brackets&lt;/a&gt; [&lt;a href="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/2025-10-26-Triangle Battery mount - Mario Ebike by andreasbossen - Thingiverse.html"&gt;cache&lt;/a&gt;], I don't think they'd be strong
enough alone.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://goodmitar.click/product_details/85944633.html"&gt;Full frame case&lt;/a&gt; [&lt;a href="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/2025-10-26-E Bike Triangle Battery Case Thin With Suspension Forks – Go Ebikes - Online Store.html"&gt;cache&lt;/a&gt;] that the battery fits inside is very cool,
but I'm not sure that this actually exists. I found various versions of this
picture around the internet.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.electricbike.com/triangle-battery-different-sizes/"&gt;A bunch of different DIY options that are pretty cool&lt;/a&gt; [&lt;a href="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/2025-10-26-Here is a list for currently available triangle packs for ebikes ｜ ELECTRICBIKE.COM.html"&gt;cache&lt;/a&gt;].&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I started by measuring the battery pack,
and then modeling a case around it!
My browser history is a good project log.
You can see me looking for a dimensional drawing of the battery (which I didn't
find) and then converting from my tape measure to mm here, ha:
&lt;/p&gt;
&lt;figure id="orge410849"&gt;
&lt;img alt="Screenshot 2025-10-26 at 11.22.34 AM.png" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/Screenshot 2025-10-26 at 11.22.34 AM.png"/&gt;
&lt;/figure&gt;
&lt;p&gt;
Looks like it only took an hour of measuring and drawing before I was looking
into the setting for the slicer software.
&lt;/p&gt;
&lt;p&gt;
The modeled battery looks like this:
&lt;/p&gt;
&lt;figure id="org1a108e9"&gt;
&lt;img alt="Screenshot 2025-10-26 at 11.38.22 AM.png" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/Screenshot 2025-10-26 at 11.38.22 AM.png"/&gt;
&lt;/figure&gt;
&lt;p&gt;
I had to modify it to fit inside the bed of the printer, though I had liked
this orientation:
&lt;/p&gt;
&lt;figure id="orgce8083e"&gt;
&lt;img alt="IMG_0607.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0607.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
I had to trim it and orient it vertically.
By the next morning it was ready:
&lt;/p&gt;
&lt;figure id="orge9a2ba0"&gt;
&lt;img alt="IMG_0608.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0608.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
It fits!!
&lt;/p&gt;
&lt;figure id="org5811be8"&gt;
&lt;img alt="IMG_0609.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0609.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
The mount holes all line up, which is more amazing:
&lt;/p&gt;
&lt;figure id="org8a5ae19"&gt;
&lt;img alt="IMG_0610.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0610.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
I went with a a few more washers on the bolts at the end of the day,
as well as three hose clamps.
The chain line was really tight,
on a version 2 I'd make the wall thinner along the radius of the chainring:
&lt;/p&gt;
&lt;figure id="orga02f153"&gt;
&lt;img alt="IMG_0612.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0612.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
All mounted, with a bike tube to make sure it doesn't look too professional:
&lt;/p&gt;
&lt;figure id="org3be51cc"&gt;
&lt;img alt="IMG_0613.jpg" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/IMG_0613.jpg"/&gt;
&lt;/figure&gt;
&lt;p&gt;
It felt super secure without the tube,
just the velcro strap on the top and one to the bike.
&lt;/p&gt;
&lt;p&gt;
Ride test forthcoming!
&lt;/p&gt;
&lt;p&gt;
Soon enough, I'll have to build this out of aluminum or at least print it out of
the PETG-CF.
I have some extra velcro straps in case I break down and need to improvise.
The 12v converter is also pretty darn ugly and huge,
but it works (tubes are necessary there either, but good to have).
&lt;/p&gt;
&lt;p&gt;
While I should focus on making a better version of this,
I'm already looking to fabricating some lightweight aluminum panniers.
Motorcycle panniers are too heavy,
looking at 10 pounds each for big aluminum ones.
These are the look I'd be going for:
&lt;/p&gt;
&lt;figure id="orgd484002"&gt;
&lt;img alt="Screenshot 2025-10-26 at 12.10.58 PM.png" src="https://andyreagan.com/media/2025-10-26-ebike-battery-mount/Screenshot 2025-10-26 at 12.10.58 PM.png"/&gt;
&lt;/figure&gt;
&lt;p&gt;
Update &lt;span class="timestamp-wrapper"&gt;&lt;span class="timestamp"&gt;&amp;lt;2025-10-28 Tue&amp;gt;&lt;/span&gt;&lt;/span&gt;: 100 miles in from commuting the past two days,
and the battery mount is showing no signs of weakness.
The upgrade in ride feel with the lower center of gravity is noticeable!
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Can Claude win a 5k?</title>
    <id>tag:andyreagan.com,2025-10-17:claude-5k-training</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-10-17-claude-5k-training.html" />
    <published>2025-10-17T12:00:00Z</published>
    <updated>2025-10-17T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orgb80e6d1"&gt;

&lt;div class="outline-text-2" id="text-orgb80e6d1"&gt;
&lt;p&gt;
I've a great streak of success as the gym class hero in MassMutual's company 5k.
Last year,
I hadn't trained for a 5k and while I did squeak out the win it was rough.
This year, I'm going to train for it!
&lt;/p&gt;
&lt;p&gt;
I wrapped up my crammed bike prep for, and ride of, the Grafton Gran Fondo by
the end of September.
It was time to turn to running, with one month until the 5k,
and got a great start with 8x400 two days after the fondo!
&lt;/p&gt;
&lt;p&gt;
Where to go from here with only a few weeks of time…
who better than to design my training than Claude?
Seems like an in-distribution thing to do.
&lt;/p&gt;
&lt;p&gt;
I've attached my transcrip with the model here,
and with a few modifications, it's going according to plan!
&lt;/p&gt;
&lt;table&gt;
&lt;colgroup&gt;
&lt;col class="org-left"/&gt;
&lt;col class="org-left"/&gt;
&lt;col class="org-left"/&gt;
&lt;col class="org-left"/&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class="org-left" scope="col"&gt;Date&lt;/th&gt;
&lt;th class="org-left" scope="col"&gt;Run&lt;/th&gt;
&lt;th class="org-left" scope="col"&gt;Lift&lt;/th&gt;
&lt;th class="org-left" scope="col"&gt;Day of week&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/6/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16050682569"&gt;8x400 ~80s&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/7/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/8/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16081153742"&gt;Easy 3-4mi&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16079041034"&gt;5x5 SBD&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt;W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/9/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16091362987"&gt;Easy 3-4mi&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/10/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16099074893"&gt;5x800m at 6:10-6:15 pace, 90 sec recovery&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt;5x5 SBD&lt;/td&gt;
&lt;td class="org-left"&gt;F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/11/2025&lt;/td&gt;
&lt;td class="org-left"&gt;Recovery 3 mile&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/12/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16120887535"&gt;Tempo run - 3 miles at ~6:20-6:25 pace&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/13/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/14/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16142106578"&gt;6x600m at goal 5k pace (6:05-6:10), 90 sec recovery&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt;5x5 SBD&lt;/td&gt;
&lt;td class="org-left"&gt;T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/15/2025&lt;/td&gt;
&lt;td class="org-left"&gt;&lt;a href="https://www.strava.com/activities/16152911039"&gt;Easy 4-5 miles&lt;/a&gt;&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/16/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/17/2025&lt;/td&gt;
&lt;td class="org-left"&gt;Easy 3 miles + 4x150m strides&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/18/2025&lt;/td&gt;
&lt;td class="org-left"&gt;5k time trial at 90% effort&lt;/td&gt;
&lt;td class="org-left"&gt;5x5 SBD&lt;/td&gt;
&lt;td class="org-left"&gt;S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/19/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/20/2025&lt;/td&gt;
&lt;td class="org-left"&gt;Easy 3-4mi&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/21/2025&lt;/td&gt;
&lt;td class="org-left"&gt;Track - 4x400m at 5k pace (90-92 sec), 2x200m faster (42-43 sec)&lt;/td&gt;
&lt;td class="org-left"&gt;(3x5 @ 80%)&lt;/td&gt;
&lt;td class="org-left"&gt;T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/22/2025&lt;/td&gt;
&lt;td class="org-left"&gt;Easy 3-4mi&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/23/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/24/2025&lt;/td&gt;
&lt;td class="org-left"&gt;3x400m at 5k pace (90-92 sec) with 2x200m at 42-43 sec, full recovery&lt;/td&gt;
&lt;td class="org-left"&gt;(3x5 @ 80%)&lt;/td&gt;
&lt;td class="org-left"&gt;F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/25/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/26/2025&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/27/2025&lt;/td&gt;
&lt;td class="org-left"&gt;15-20 min shakeout with 3x30 sec at race pace&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="org-left"&gt;10/28/2025&lt;/td&gt;
&lt;td class="org-left"&gt;RACE&lt;/td&gt;
&lt;td class="org-left"&gt; &lt;/td&gt;
&lt;td class="org-left"&gt;T&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
I've linked to parts I completed,
haven't done all the lifting.
It's 10/17 today it looks like I need to get our for an easy run!
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>2025 Spartan Beast</title>
    <id>tag:andyreagan.com,2025-09-18:spartan-take-3</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-09-18-spartan-take-3.html" />
    <published>2025-09-18T12:00:00Z</published>
    <updated>2025-09-18T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org8726ff8"&gt;

&lt;div class="outline-text-2" id="text-org8726ff8"&gt;
&lt;p&gt;
My best result yet, by a lot!
Achieved my goal of finishing strong.
Really held back the pace on all of the climbs,
which helped!
Did miss a couple obstacles this year.
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;2025: &lt;a href="https://www.strava.com/activities/15799134171"&gt;4:24:11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2024: &lt;a href="https://www.strava.com/activities/12410338590"&gt;4:57:53&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2015: &lt;a href="https://www.strava.com/activities/395763232"&gt;5:37:44&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I will say that I think 2015 was harder?
&lt;/p&gt;
&lt;p&gt;
Ran for awhile with Tom Sumner and then with Alison Andersen (who went on to win
the women's ultra beast).
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>I got a mule and her name is Sal</title>
    <id>tag:andyreagan.com,2025-08-08:empire-state-trail</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-08-08-empire-state-trail.html" />
    <published>2025-08-08T12:00:00Z</published>
    <updated>2025-08-08T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-org8767d8e"&gt;

&lt;div class="outline-text-2" id="text-org8767d8e"&gt;
&lt;p&gt;
369 miles on the Erie Canal.
&lt;/p&gt;
&lt;p&gt;
In one go! What a ride. All the up and downs (and many wrong turns) on my first
all night endurance ride. Lost a lot of pace on the night (just hard to keep
speed - alternating between standing and coasting with the chafing setting in -
all the standing was hard on the knees too), all the gear worked perfect
enough. Was able to charge everything on the go when needed. Made good time for
the first 1/3, paved mostly, pretty hot. Maybe overcooked myself a bit and
couldn’t wait for the sun to go down and it cool off. The gravel slowed me down
a hair then nighttime really slowed and the stiff headwind the last 60 miles was
almost the nail in my coffin. It doesn't sound like a lot of miles compared to
the 310 just ridden but the headwind and exhaustion and it's … 60 miles!! Was
looking like 5 hours with the slowing pace, but made it in less than that with
some final pushes. 4 stops: 70, 120, parents at 185, Marc K at 290. Ran out of
~2.5L of water by each stop, took a 16oz coke on the first two stops and a
coffee on the last. I also stopped once to stretch for 1min and took that
picture of my leg…tried to stay on the pedals I guess. Ate lots of sugar, a
whole slice of buffalo pizza from second stop (S/O to Sam for the encouragement
to eat real food), snacks snacks snacks, and a glorious full batch of nobake
cookies and sourdough pbj from my parents. Other than the knee pain from the
standing, my right foot hurt a lot on the bottom and I had to curl my toes
repeatedly to keep the foot from tingling. Thought it would be worse after the
ride but it was okay? Pinkies are tingly still ~24 hours out, the aerobar
position was high up but also a new position - saved the hands a lot and to my
surprise, no shoulder pain.
&lt;/p&gt;
&lt;p&gt;
Special S/O to all the in-person and remote support, really pulled me though
some of the hard parts.
&lt;/p&gt;
&lt;p&gt;
Wrong turns feel like 30-60min in aggregate (?), there were maybe 20 (from small
to large). it was hard to find the trail sometimes at night when it diverged
from the GPX track, as the headlight lit up the road/trail but not the higher up
signs. the triple closures on the shoreline trail at the end was a total mess,
had google maps going and riding around with a big group of confused riders
right through downtown buffalo on niagara st.
&lt;/p&gt;
&lt;p&gt;
Could really go through and make a dialed-in GPX file at this point - but the
closures would change I'm sure.
&lt;/p&gt;
&lt;p&gt;
The Garmin routing was worthless - it's as-if Garmin doesn't have the bike trail
at all - it mostly tried to route me on roads (you can see this on some of the
photos/videos). So I just followed the actual GPX track on the map, as much as I
could. Perhaps the worst nav was the GPX leading me to a closed fairground gate,
the on-street signage leading me though an open gate, no signage inside the
fairgrounds…and eventually realizing the GPX needed me out of the fairgrounds
but all of the exit gates were closed! The other stuff is mostly minor -
crossing a bridge to the other side of the canal the the GPX just goes right
onto the path but I'm still on the bridge and need to continue to a connecting
trail (on either side of the road sometimes).
&lt;/p&gt;
&lt;p&gt;
Strava for a few photos: &lt;a class="bare-url" href="https://www.strava.com/activities/15392240733"&gt;https://www.strava.com/activities/15392240733&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
FKT: &lt;a class="bare-url" href="https://www.cyclingfkt.com/eriecanal.html"&gt;https://www.cyclingfkt.com/eriecanal.html&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>VTXL</title>
    <id>tag:andyreagan.com,2025-06-22:vtxl</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-06-22-vtxl.html" />
    <published>2025-06-22T12:00:00Z</published>
    <updated>2025-06-22T12:00:00Z</updated>
    <content type="html">&lt;div class="outline-2" id="outline-container-orga47a116"&gt;

&lt;div class="outline-text-2" id="text-orga47a116"&gt;
&lt;p&gt;
Wow. What a ride, what an incredible group of guys to do it with. The route is
unbelievably good, unrelentingly difficult, and the best way to spend 4 days on
a bike.
&lt;/p&gt;
&lt;p&gt;
The sheer quantity of dirt roads in Vermont is astounding. A lot of variety
within that category: from powerline, to single track, to rolling farmland, to
steep ass gravel climbs (I saw 25%+).
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-org834c417"&gt;
&lt;h3 id="org834c417"&gt;Logistics&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org834c417"&gt;
&lt;p&gt;
So huge to have the combined brainpower of 5 adventure experts to plan the
entire thing and book everything!
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Pre-ride: spent Wednesday night in Williamstown at Maple Terrace with MM (an
an initial no bikes one room, happened to change their mind and bring a
cleaning rag- cool) caught our ride to the start at 5:30AM on Thursday. Driver
was awesome- retired outdoor director at Williams.&lt;/li&gt;
&lt;li&gt;Day 1: Canada (Canaan, VT) -&amp;gt; Danville, VT. Stayed in an RV in the Sugar Ridge
RV Park. Hot water didn’t work, but camp showers and the guys cooked a
feast. Sleeping was rough.&lt;/li&gt;
&lt;li&gt;Day 2: Danville, VT -&amp;gt; Tunbridge, VT. Stayed in a yurt in a goat
pasture. Maybe the most Vermont thing I’ve ever done despite living in VT for
5+ years. A hot shower would have still been nice - but hey a bonfire is swell
too. Cot was meh, and shared.&lt;/li&gt;
&lt;li&gt;Day 3: Tunbridge, VT -&amp;gt; Londonderry, VT. Stayed at the Upper Pass Lodge,
workable, had to sneak bikes in. Solo bed (thanks guys!) best night of sleep.&lt;/li&gt;
&lt;li&gt;Day 4: Londonderry, VT -&amp;gt; MA Border (Williamstown, MA). Home for kids bedtime
(as I write this while they fall asleep).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-org76445cb"&gt;
&lt;h3 id="org76445cb"&gt;Food&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-org76445cb"&gt;
&lt;p&gt;
More details than necessary but maybe a future VTXL planner would find the stop
details helpful.
&lt;/p&gt;
&lt;p&gt;
Brought ~12K calories, finished with ~1K. Definitely did not need to bring so
much sugar, and could have resupplied each day (didn't buy any candy/soda during
the trip at all). 12-13 LMNT throughout the trip, and roughly used the ~4L of
capacity that I had completely twice per day (and thrice on Saturday, the longer
day). Didn't use the 6 or so gels I brought - backup but not needed. Ate a
handful of meat sticks but had ~ 5 left.
&lt;/p&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Day 1: Dunkin on the way up for breakfast/coffee. The Yellow Deli in Island
Pond for lunch, Salmon sandwhich. Have to eat the pickles now. We cooked rice
and added heat-up food packets. Ate so so much - guac and chips, big salad,
etc.&lt;/li&gt;
&lt;li&gt;Day 2. More heat-up food for breakfast. Instant coffee, heated up water with
coffee pot. Gramps for pizza and a cheeseburger, choc milk, water
fill. ~40. Tunbridge general store for cremee dinner - really great. 20oz sip
of sunshine by the fire and a lot of pretzels.&lt;/li&gt;
&lt;li&gt;Day 3. Tunbridge general store breakfast - amazing breakfast burrito and good
coffee. The upstairs there is worth checking out! Two stops: woodstock at 30
(just hit the cumby's - scoop was closed) and amazing fried chicken sandwhich
(the green mountain boy) at Singleton's (and an apple + chips +
kombucha). Burger, friers, two beers at the lodge.&lt;/li&gt;
&lt;li&gt;Day 4. Breakfast at the lodge, eggs toast pancakes sausage, a bit of everying
and decent hot coffee. Made a coffee in the room but hadn't need to. Chocolate
shop at 37, didn't even really need water (didn't go in - missed the 100lb
chocolate teddy bear). Held for mile 50 an amazing cold maple filled donut and
an iced oat milk latter. Nice water fill there. That was enough for the
finish!&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-3" id="outline-container-orgafc6c80"&gt;
&lt;h3 id="orgafc6c80"&gt;Gear list&lt;/h3&gt;
&lt;div class="outline-text-3" id="text-orgafc6c80"&gt;
&lt;p&gt;
Note food total at start 7.5lbs.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-org0c719d8"&gt;
&lt;h4 id="org0c719d8"&gt;Clothing worn&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org0c719d8"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Helmet: POC, 5 years old&lt;/li&gt;
&lt;li&gt;Rapha shorts &amp;amp; top&lt;/li&gt;
&lt;li&gt;Sunglasses: Started w/ 6yr old Oakleys with no nose piece - real issue in
rain. Bought $14 pair at Tunbridge General Store = major upgrade&lt;/li&gt;
&lt;li&gt;Bike shoes: Road shoes, worked fine&lt;/li&gt;
&lt;li&gt;Socks&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-org46e43f5"&gt;
&lt;h4 id="org46e43f5"&gt;Extra clothes&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org46e43f5"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Rapha rain jacket: Didn’t really need even in downpour but wore a few mornings
before sweating through&lt;/li&gt;
&lt;li&gt;Wool shirt (1), Pants (1) - lightweight hiking, permethrin treated&lt;/li&gt;
&lt;li&gt;Shoes (1) - Vivobarefoots, Underwear (1), Socks (2) - bring at least 2 extra&lt;/li&gt;
&lt;li&gt;Shorts (0) - dropped last minute, only needed one set pants, good call&lt;/li&gt;
&lt;li&gt;Clear sunglasses (0) - didn’t get safety glasses, big miss&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-org2045732"&gt;
&lt;h4 id="org2045732"&gt;Electronics&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org2045732"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Phone: iPhone 15 Pro Max, [redacted] FirstNet&lt;/li&gt;
&lt;li&gt;Garmin Edge 540 excellent for turn by turn directions. The climb gradients and
start finish locations were always off by a bit. Garmin watch/whoop just to
have.&lt;/li&gt;
&lt;li&gt;Rear flashy, Power bank (12000mah) - used by myself and others variously and
charged up where I could.&lt;/li&gt;
&lt;li&gt;Cables: USB-C to USB-A, Wall to USB-A, USB-C to USB-C, USB-A to USB-Micro&lt;/li&gt;
&lt;li&gt;Headlamp, didn’t use except in red mode around the yurt.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-orgef324b5"&gt;
&lt;h4 id="orgef324b5"&gt;Batteries&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgef324b5"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Shifter/hub batteries charged&lt;/li&gt;
&lt;li&gt;CR2032 (2) for shifters, Coin (1) for shifter battery door&lt;/li&gt;
&lt;li&gt;CR1632 (1) - Classified shifter&lt;/li&gt;
&lt;li&gt;CR1/3N (0) - need 2 or 4 LR44 for pedals, didn’t do power pedals so also
dropped the lr44s last minute’s&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-orgb1d5d7d"&gt;
&lt;h4 id="orgb1d5d7d"&gt;Tools&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgb1d5d7d"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Multitool: Silca, lots of tools (their biggest one).&lt;/li&gt;
&lt;li&gt;Mini pump: Lezyne, used more than expected + by Sam daily&lt;/li&gt;
&lt;li&gt;Dynaplug (2), Quick link (1) - 12 speed, Tire lever (1)&lt;/li&gt;
&lt;li&gt;Lube: T-9 3oz bottle empty by day 3(?), used Duffie’s Triflow day 4 = perfect&lt;/li&gt;
&lt;li&gt;Used Sam/Joshs silca secret drip wax first two nights after rainstorms killed
my wax on day 1, but it didn’t hold up the full day, thought it got closer on
day 3 after better prep before applying. Sam and Josh it worked for.&lt;/li&gt;
&lt;li&gt;Inner tube (0) - found in driveway at home!&lt;/li&gt;
&lt;li&gt;SRAM accessories: charger, pad spacers, battery blanks. Used the blanks for
travel to start.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-orgaaeb104"&gt;
&lt;h4 id="orgaaeb104"&gt;Camping&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orgaaeb104"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Sleeping bag: Marmot 55F, 1lb 12oz&lt;/li&gt;
&lt;li&gt;Filtration kit, Knife/box cutter, Zip ties (10)&lt;/li&gt;
&lt;li&gt;Sunscreen: SPF70 small bottle, Bug spray: Off scentless&lt;/li&gt;
&lt;li&gt;No tarp/bivy or sleeping pad: not needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-org3f3d2d9"&gt;
&lt;h4 id="org3f3d2d9"&gt;Food&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-org3f3d2d9"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Oreos (1 box), PB cups (1 bin) - Trader Joe’s, melted but whatever&lt;/li&gt;
&lt;li&gt;Maurten gel (6) - didn’t use, backup&lt;/li&gt;
&lt;li&gt;Fidlock bottles: 3L across 4 bottles&lt;/li&gt;
&lt;li&gt;LMNT salt (11) - used every one&lt;/li&gt;
&lt;li&gt;Meat sticks (8) - ate ~4, Cash ($10) - bring $100 more?&lt;/li&gt;
&lt;li&gt;Instant coffee (6) - overnight cold brew&lt;/li&gt;
&lt;li&gt;Trail mix (1 huge bag), Sour Patch (1 family size)&lt;/li&gt;
&lt;li&gt;Scandinavian swimmers (2 bags)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="outline-4" id="outline-container-orga2a3d1a"&gt;
&lt;h4 id="orga2a3d1a"&gt;Bike/bags&lt;/h4&gt;
&lt;div class="outline-text-4" id="text-orga2a3d1a"&gt;
&lt;ul class="org-ul"&gt;
&lt;li&gt;Bike: &lt;a href="https://andyreagan.com/firefly1169.html#ID-EFF38F49-04DC-4D00-8E2A-18E9693C7D14"&gt;Firefly 1169&lt;/a&gt;, Tires: Rene Herse 42C knobby&lt;/li&gt;
&lt;li&gt;Handlebar bag: Moose Packs Ted’s XLent Adventure - huge, kept stuff handy&lt;/li&gt;
&lt;li&gt;Frame bag: Relevate large, Saddle bag: Huge Relevate - super stable&lt;/li&gt;
&lt;li&gt;Top tube bag: Relevate wide - good!&lt;/li&gt;
&lt;li&gt;Phone mount: Peak Design - held up, handy&lt;/li&gt;
&lt;li&gt;Mounts: Pump + Dynaplugs on bottle cages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
60+ photos over on Strava: &lt;a class="bare-url" href="https://www.strava.com/activities/14886326195"&gt;https://www.strava.com/activities/14886326195&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
There is an FKT page for this (but I'm not on it!):
&lt;a class="bare-url" href="https://www.cyclingfkt.com/vtxl.html"&gt;https://www.cyclingfkt.com/vtxl.html&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <title>Keep your AC from freezing solid</title>
    <id>tag:andyreagan.com,2025-06-06:AC-freeze-solid</id>
    <link rel="alternate" type="text/html" href="https://andyreagan.com/2025-06-06-AC-freeze-solid.html" />
    <published>2025-06-06T12:00:00Z</published>
    <updated>2025-06-06T12:00:00Z</updated>
    <category term="ATTACH" />
    <content type="html">&lt;div class="outline-2" id="outline-container-org0186f24"&gt;

&lt;div class="outline-text-2" id="text-org0186f24"&gt;
&lt;p&gt;
&lt;i&gt;Backlinks: &lt;a href="https://andyreagan.com/house14.html#ID-maintain-hvac-filter"&gt;HVAC filter change&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
When the AC is pulling too much condensation out of the air,
the system can actually can actually freeze solid,
as it did today.
&lt;/p&gt;
&lt;p&gt;
You'll know because it's not getting colder.
The trick is to &lt;b&gt;&lt;b&gt;keep the fan set to auto&lt;/b&gt;&lt;/b&gt;.
That will keep enough airflow over the condensor
so it doesn't actually freeze.
&lt;/p&gt;
&lt;p&gt;
Here's what the inside of the heat exchanger:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/media/2025-06-06-AC-freeze-solid/IMG_3457.HEIC_compressed.JPEG"&gt;img&lt;sub&gt;3457.heic&lt;/sub&gt;&lt;sub&gt;compressed.jpeg&lt;/sub&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
and on the outside:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://andyreagan.com/media/2025-06-06-AC-freeze-solid/IMG_3447.HEIC_compressed.JPEG"&gt;IMG&lt;sub&gt;3447.HEIC&lt;/sub&gt;&lt;sub&gt;compressed.JPEG&lt;/sub&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The other thing to make sure is that filter it clean.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
  </entry>
</feed>