<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:webfeeds="http://webfeeds.org/rss/1.0">
  <channel>
    <title>macwright.com</title>
    <description>JavaScript, math, maps, etc</description>
    <link>https://macwright.com</link>
    <atom:link href="https://macwright.com/rss.xml" rel="self" type="application/rss+xml" />
    <webfeeds:accentColor>00588F</webfeeds:accentColor>
    <webfeeds:icon>https://macwright.com/css/logo-simple.svg</webfeeds:icon>
    <item>
      <title>Cycling Vermont</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;In October I rode the &lt;a href=https://bikepacking.com/routes/green-mountain-gravel-growler/ &gt;Green Mountain Gravel Growler&lt;/a&gt; route in Vermont with a few close friends. It’s a route curated by bikepacking.com that consists of back roads, dirt roads, and single track trails. It wasn’t as blissfully car-free as the &lt;a href=https://macwright.com/2025/09/26/tree-down&gt;C&amp;O Canal&lt;/a&gt; or the &lt;a href=https://macwright.com/2026/07/05/switzerland&gt;loop around Lake Konstanz&lt;/a&gt; that I rode earlier this year, but in exchange for sharing the road occasionally, we got loads of variety and beautiful hills to climb up and coast down.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/5Bk6dNa3E3-640.webp 640w, https://macwright.com/img/5Bk6dNa3E3-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Foam brewers&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/5Bk6dNa3E3-640.jpeg srcset=&quot;https://macwright.com/img/5Bk6dNa3E3-640.jpeg 640w, https://macwright.com/img/5Bk6dNa3E3-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;As the name implies, the route is structured around breweries. We only did half because vacation time is scarce, but still managed to hit some good ones. The first night’s, in Burlington, was &lt;a href=https://www.foambrewers.com/ &gt;Foam Brewers&lt;/a&gt;. I had the “Tally Mark” altbier, which tasted like a cigar, in a good way.&lt;/p&gt;&lt;p&gt;We didn’t get much time to explore Burlington. We did see the world’s tallest filing cabinet.&lt;/p&gt;&lt;p&gt;The first day of riding was from Burlington to Stowe, with stops at &lt;a href=https://www.thebidwellvt.com/home&gt;The Bidwell&lt;/a&gt; for food, &lt;a href=https://www.thetropic.com/ &gt;The Tropic&lt;/a&gt; for a mid-ride drink, and ending at &lt;a href=https://alchemistbeer.com/ &gt;The Alchemist&lt;/a&gt;. About 50 miles, and 3,700 feet of climbing.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/nbhR3majK8-640.webp 640w, https://macwright.com/img/nbhR3majK8-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;The Alchemist&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/nbhR3majK8-640.jpeg srcset=&quot;https://macwright.com/img/nbhR3majK8-640.jpeg 640w, https://macwright.com/img/nbhR3majK8-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;Places like The Alchemist are impossibly nice: sunshine, babies and puppies crawling in the grass, happy people playing corn hole. The delirious happiness of finishing a long day in the saddle makes it all even more saturated and exuberant. I was feeling pretty good on the bike, most of the ergonomics were working. The only gear tweak that this trip will inspire is sticking to fancy cycling bibs (shorts): Ornot, to be specific, instead of trying to scrape by with the cheap stuff, which for me is The Black Bibs.&lt;/p&gt;&lt;div class=up&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/0b71AVFVfC-640.webp 640w, https://macwright.com/img/0b71AVFVfC-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;GPS Unit&quot; decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/0b71AVFVfC-640.jpeg srcset=&quot;https://macwright.com/img/0b71AVFVfC-640.jpeg 640w, https://macwright.com/img/0b71AVFVfC-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/Fb9YddIkzx-640.webp 640w, https://macwright.com/img/Fb9YddIkzx-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Trail decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/Fb9YddIkzx-640.jpeg srcset=&quot;https://macwright.com/img/Fb9YddIkzx-640.jpeg 640w, https://macwright.com/img/Fb9YddIkzx-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/N2svMMpiAI-640.webp 640w, https://macwright.com/img/N2svMMpiAI-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Trail decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/N2svMMpiAI-640.jpeg srcset=&quot;https://macwright.com/img/N2svMMpiAI-640.jpeg 640w, https://macwright.com/img/N2svMMpiAI-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/div&gt;&lt;p&gt;The Alchemist’s “Heady Topper” is like drinking a flat white made out of hops.&lt;/p&gt;&lt;style&gt;.up{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;line-height:0}&lt;/style&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/28V70Ima3B-640.webp 640w, https://macwright.com/img/28V70Ima3B-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Riding to Stowe&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/28V70Ima3B-640.jpeg srcset=&quot;https://macwright.com/img/28V70Ima3B-640.jpeg 640w, https://macwright.com/img/28V70Ima3B-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;Weather was perfect for almost the entire trip, and the route was pretty clear and empty. We mostly encountered locals riding casually, casually passing us on the way up some big trail. Vermonters are strong riders.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/p87oJ--E_L-640.webp 640w, https://macwright.com/img/p87oJ--E_L-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Riding in the wind&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/p87oJ--E_L-640.jpeg srcset=&quot;https://macwright.com/img/p87oJ--E_L-640.jpeg 640w, https://macwright.com/img/p87oJ--E_L-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;The second day would be about 44 miles of riding and well over 4,200 feet of elevation. At this point everyone was feeling it: we’re New Yorkers and a lot of the biggest rides up till this point have been pretty flat. The total elevation change for the C&amp;O Canal ride we did was 605 feet over 185 miles. Riding &lt;a href=https://en.wikipedia.org/wiki/Bear_Mountain_(Hudson_Highlands)&gt;Bear Mountain&lt;/a&gt; and the &lt;a href=https://ridewithgps.com/routes/31399394&gt;Goldens Bridge&lt;/a&gt; loop helped with training, but nothing near the city can match the relentless climbing in Vermont. I expect hills to crest when there’s a turn in the road, but Vermont doesn’t follow that rule.&lt;/p&gt;&lt;p&gt;But, every hill ends eventually. I only had to walk up one, and that was because it was so steep that I couldn’t get traction &lt;em&gt;and&lt;/em&gt; not wheelie at the same time.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/5ilf57kMgR-640.webp 640w, https://macwright.com/img/5ilf57kMgR-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Couch decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/5ilf57kMgR-640.jpeg srcset=&quot;https://macwright.com/img/5ilf57kMgR-640.jpeg 640w, https://macwright.com/img/5ilf57kMgR-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;To make this all easier, we weren’t camping at all, just staying at nice places and sleeping in real beds. With the quickly changing weather, camping in the cold would’ve been pretty tough. So that meant more room for changes of clothes and creature comforts. Places to stay in Burlington, Stowe, Hardwick, and Montpelier are pretty scarce though, and tended to be at the very top of hills. Seemed like everything was at the top of the hill, especially…&lt;/p&gt;&lt;div class=up&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/5ZXJ7ALrAz-640.webp 640w, https://macwright.com/img/5ZXJ7ALrAz-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Horse decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/5ZXJ7ALrAz-640.jpeg srcset=&quot;https://macwright.com/img/5ZXJ7ALrAz-640.jpeg 640w, https://macwright.com/img/5ZXJ7ALrAz-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/UtOSNrLqqK-640.webp 640w, https://macwright.com/img/UtOSNrLqqK-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Beer decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/UtOSNrLqqK-640.jpeg srcset=&quot;https://macwright.com/img/UtOSNrLqqK-640.jpeg 640w, https://macwright.com/img/UtOSNrLqqK-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/UyFlXj6E5f-640.webp 640w, https://macwright.com/img/UyFlXj6E5f-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Menu decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/UyFlXj6E5f-640.jpeg srcset=&quot;https://macwright.com/img/UyFlXj6E5f-640.jpeg 640w, https://macwright.com/img/UyFlXj6E5f-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/div&gt;&lt;p&gt;Where The Alchemist was a casual, hippie-inflected destination, Hill Farmstead was like an elusive vineyard that happened to brew beer. And it’s at the top of a hill, of course. Like everywhere else, there were a few other people who had also biked to the hill, and lots of families, dogs, and fleece jackets. They had a food truck outside which whipped up an excellent, fairly spicy vegan burrito for me.&lt;/p&gt;&lt;p&gt;Timing for this trip was tight, and rushing to arrive at a brewery before close had a kind of reality-TV greatest race feel to it. We were going to Hill Farmstead on a Sunday, and their hours on Sundays are &lt;em&gt;11:30-3pm&lt;/em&gt;. They close at three! And they don’t re-open, that’s just it. The rest of the week the bar closes at 5: it’s an exclusively day-drinking oriented outlet.&lt;/p&gt;&lt;p&gt;But we made it, and made it to Hardwick, where the local &lt;a href=https://www.positivepie.com/ &gt;Positive Pie&lt;/a&gt; location had a spectacular beer selection and surprisingly vegan-friendly menu.&lt;/p&gt;&lt;p&gt;This was my first time in Vermont, encountering its specific brand of rural living. Many people were so open and welcoming to us, asking about the route and complimenting our endurance like proud parents. This, even though it was nearly peak tourist season and they probably get plenty of other people following the same directions. One stop in particular, sticks in my memory, the &lt;a href=https://www.maplecornercommunitystore.org/ &gt;Maple Corner Community Store&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/_vmOnwNeMg-640.webp 640w, https://macwright.com/img/_vmOnwNeMg-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Maple Corner Community Store&quot; decoding=async height=768 loading=lazy sizes=auto src=https://macwright.com/img/_vmOnwNeMg-640.jpeg srcset=&quot;https://macwright.com/img/_vmOnwNeMg-640.jpeg 640w, https://macwright.com/img/_vmOnwNeMg-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;If you look at the full span here: this place is a grocery store, deli, coffee shop, live music venue, bar, as well as &lt;em&gt;the post office&lt;/em&gt;. Plus it has a little free library out front, and carries a selection of books written by local authors and signs for plays written by local playwrights that are performed nearby. It’s hard to even comprehend the level of integrated community-hub joy in this place. And, for me, they had a world-class selection of vegan snacks.&lt;/p&gt;&lt;p&gt;The few odd interactions with Vermonters were all about land: their private land, and that we should stay off it. Not that we ever were on it - we were staying in houses and riding on public roads. But still we got reminded not to veer off and ride through apple orchards or lawns. In one sense this is a funny inverse of cities, where people control such little territory, but here the average homeowner has acres upon acres. But land rules in Vermont are very unusual: the constitution allows &lt;a href=https://guilfordvt.gov/land-posting/ &gt;people to hunt, fish, and trap on other people’s private land&lt;/a&gt; unless it’s posted that the land doesn’t permit it, and the &lt;a href=https://www.wcax.com/2026/02/12/vermont-lawmakers-debate-private-land-posting-rules/ &gt;rules around posting&lt;/a&gt; are contentious. I’d be watchful too if people could just hike to my backyard and kill a deer.&lt;/p&gt;&lt;div class=up&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/hQqWzwfPGy-640.webp 640w, https://macwright.com/img/hQqWzwfPGy-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=House decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/hQqWzwfPGy-640.jpeg srcset=&quot;https://macwright.com/img/hQqWzwfPGy-640.jpeg 640w, https://macwright.com/img/hQqWzwfPGy-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/ywNCEjXFJm-640.webp 640w, https://macwright.com/img/ywNCEjXFJm-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=House decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/ywNCEjXFJm-640.jpeg srcset=&quot;https://macwright.com/img/ywNCEjXFJm-640.jpeg 640w, https://macwright.com/img/ywNCEjXFJm-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/3MJqDXh6zM-640.webp 640w, https://macwright.com/img/3MJqDXh6zM-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Trees decoding=async height=1706 loading=lazy sizes=auto src=https://macwright.com/img/3MJqDXh6zM-640.jpeg srcset=&quot;https://macwright.com/img/3MJqDXh6zM-640.jpeg 640w, https://macwright.com/img/3MJqDXh6zM-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/div&gt;&lt;p&gt;Then we were headed back on the Amtrak from Montpelier. It’s such a perk to be able to do this kind of trip without renting or using a car at all, just riding to and from train stations. Amtrak’s train ticket guarantees a spot for the bike, but it is always stressful and rushed getting bikes on &amp; off.&lt;/p&gt;&lt;p&gt;We only completed the first half of this trip - Burlington-Stowe-Hardwick-Montpelier, so there’s another Vermont trip in the future. Maybe next year! It was really spectacular. The hills were tough, but it was all worth it.&lt;/p&gt;</description>
      <pubDate>Sun, 01 Nov 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/11/01/cycling-vermont.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/11/01/cycling-vermont.html</guid>
      <media:content url="https://macwright.com/images/2026-10-30-ride-to-stowe.jpg" medium="image" />
    </item>
    <item>
      <title>Recently</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;September was another big month for my life, mostly for me offline. Another good month for bicycle riding, seeing more of the trails on &lt;a href=https://en.wikipedia.org/wiki/Randalls_and_Wards_Islands&gt;Randalls and Wards Islands&lt;/a&gt;.&lt;/p&gt;&lt;div class=two-up&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/IQKePf5iQo-640.webp 640w, https://macwright.com/img/IQKePf5iQo-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Hell gate&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/IQKePf5iQo-640.jpeg srcset=&quot;https://macwright.com/img/IQKePf5iQo-640.jpeg 640w, https://macwright.com/img/IQKePf5iQo-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/0DSD4YjhKR-640.webp 640w, https://macwright.com/img/0DSD4YjhKR-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Hell gate two&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/0DSD4YjhKR-640.jpeg srcset=&quot;https://macwright.com/img/0DSD4YjhKR-640.jpeg 640w, https://macwright.com/img/0DSD4YjhKR-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/div&gt;&lt;p&gt;The New York area has taught me a few things about islands and one of them is that they’re very fungible. On a map, Randalls and Wards Islands look one one island because they’re “conjoined”. They were conjoined on purpose: they used to be two, with a bridge and everything. But then in 1955 the government announced they wanted to join up the islands &lt;a href=https://en.wikipedia.org/wiki/Randalls_and_Wards_Islands#1940s_to_1960s&gt;“by allowing private contractors to dump debris within Little Hell Gate for free” (!)&lt;/a&gt;&lt;/p&gt;&lt;figure&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/XzNbvE0YuG-640.webp 640w, https://macwright.com/img/XzNbvE0YuG-1000.webp 1000w&quot; type=image/webp&gt;&lt;img alt=&quot;Randalls island pre-conjoining&quot; decoding=async height=1000 loading=lazy sizes=auto src=https://macwright.com/img/XzNbvE0YuG-640.jpeg srcset=&quot;https://macwright.com/img/XzNbvE0YuG-640.jpeg 640w, https://macwright.com/img/XzNbvE0YuG-1000.jpeg 1000w&quot; width=1000&gt;&lt;/picture&gt;&lt;figcaption&gt;Photo from &lt;a href=https://en.wikipedia.org/wiki/Randalls_and_Wards_Islands#/media/File:New_York_City_bridges_and_expressways_(1962)_(cropped).jpg&gt;From City of New York Department of Parks: 28 Years of Progress, scanned by Erica Fischer (!)&lt;/a&gt; CC BY SA 2.0&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;The opposite happened with Fire Island: it was one island for a while until 2012, and Hurricane Sandy broke it back into two.&lt;/p&gt;&lt;figure&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/Nx8D0Bb18b-640.webp 640w, https://macwright.com/img/Nx8D0Bb18b-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Fire Island&quot; decoding=async height=714 loading=lazy sizes=auto src=https://macwright.com/img/Nx8D0Bb18b-640.jpeg srcset=&quot;https://macwright.com/img/Nx8D0Bb18b-640.jpeg 640w, https://macwright.com/img/Nx8D0Bb18b-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;figcaption&gt;Photo from &lt;a href=https://www.usgs.gov/media/images/photos-and-after-hurricane-sandy-opened-a-breach-fire-island&gt;USGS&lt;/a&gt;, PD&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Dump trash to combine islands, dump water from the sky to divide them. That’s just how life is.&lt;/p&gt;&lt;style&gt;.two-up{display:grid;grid-template-columns:1fr 1fr;gap:10px;line-height:0}&lt;/style&gt;&lt;h2 id=listening&gt;Listening&lt;/h2&gt;&lt;p&gt;I watched Magnolia this month and finally &lt;em&gt;got&lt;/em&gt; the hype around Aimee Mann. It’s a little frustrating that the songs from the film aren’t on&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/aNmKghTvj0E&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;And a throwback: Dusty Springfield’s version of &lt;em&gt;When the Love Light Starts Shining Through His Eyes&lt;/em&gt;. Originally &lt;a href=https://en.wikipedia.org/wiki/When_the_Lovelight_Starts_Shining_Through_His_Eyes&gt;recorded by the Supremes&lt;/a&gt; and forgive me for highlighting the &lt;a href=https://en.wikipedia.org/wiki/Blue-eyed_soul&gt;blue-eyed soul&lt;/a&gt; version of this song but it’s so driving and urgent in a way that most of the other versions aren’t, it’s such a good slice of that very particular rushing rhythm of the era.&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/IrVqT5C7mOQ&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;h2 id=reading&gt;Reading&lt;/h2&gt;&lt;p&gt;On a meta-level: I’m getting pulled back to Instapaper from &lt;a href=https://readeck.org/en/ &gt;Readeck&lt;/a&gt;, because I rely on offline reading so often and unfortunately the Readeck iOS offline mode is unreliable. It is &lt;a href=https://codeberg.org/readeck/readeck-ios&gt;open source&lt;/a&gt; and I &lt;em&gt;should&lt;/em&gt; contribute and in all likelihood the issue will get fixed, but in the meantime I need something to look at on the subway.&lt;/p&gt;&lt;p&gt;Reading: I enjoyed &lt;a href=https://spiraldb.com/blog/announcing-spiral&gt;Spiral’s launch post&lt;/a&gt; a lot, as well as &lt;a href=https://turbopuffer.com/blog/rip-vector-database&gt;turbopuffer’s post about their refactoring&lt;/a&gt;. Database companies in the AI-adjacent space are a nice hybrid kind of reading, still concerned with architecture and a little more grounded than a lot of the “big idea” or marketing-centric stuff that I read from AI labs. I also liked &lt;a href=https://www.are.na/editorial/personal-business&gt;Charles Broskoski’s “Personal Business”&lt;/a&gt; essay (one of the are.na founders).&lt;/p&gt;&lt;p&gt;And I’ve been &lt;em&gt;really&lt;/em&gt; liking reading &lt;a href=https://www.perfectdaybooks.com/shop/work&gt;Work by Bud Smith&lt;/a&gt;. Review of that soon.&lt;/p&gt;&lt;h2 id=otherwise&gt;Otherwise&lt;/h2&gt;&lt;p&gt;The end of October will be &lt;em&gt;even more packed&lt;/em&gt; than September for me, so if I don’t post, don’t worry, I’m not dead, I’m partying.&lt;/p&gt;</description>
      <pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/10/01/recently.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/10/01/recently.html</guid>
      <media:content url="https://macwright.com/images/2026-10-03-hell-2.jpg" medium="image" />
    </item>
    <item>
      <title>Recently</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;I skipped August’s &lt;em&gt;Recently&lt;/em&gt; because this summer has been relentless, mostly in the positive sense. July and August were filled with bike rides, 5K races, friends in town, life changes and logistics.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/vM2d47bbI8-640.webp 640w, https://macwright.com/img/vM2d47bbI8-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Cyclone roller coaster&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/vM2d47bbI8-640.jpeg srcset=&quot;https://macwright.com/img/vM2d47bbI8-640.jpeg 640w, https://macwright.com/img/vM2d47bbI8-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;For a friend’s birthday, we rode the rickety &lt;a href=https://en.wikipedia.org/wiki/Coney_Island_Cyclone&gt;Coney Island Cyclone&lt;/a&gt;, which was faster and more intense than I remembered it. But it’s been 18 years since the last injury on the coaster, and the rider was partly at fault: good enough for me.&lt;/p&gt;&lt;div class=two-up&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/fUtUPrWe2O-640.webp 640w, https://macwright.com/img/fUtUPrWe2O-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;GPS Unit&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/fUtUPrWe2O-640.jpeg srcset=&quot;https://macwright.com/img/fUtUPrWe2O-640.jpeg 640w, https://macwright.com/img/fUtUPrWe2O-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/zPjzndp2qm-640.webp 640w, https://macwright.com/img/zPjzndp2qm-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Trail decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/zPjzndp2qm-640.jpeg srcset=&quot;https://macwright.com/img/zPjzndp2qm-640.jpeg 640w, https://macwright.com/img/zPjzndp2qm-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/div&gt;&lt;style&gt;.two-up{display:grid;grid-template-columns:1fr 1fr;gap:10px;line-height:0}&lt;/style&gt;&lt;p&gt;I rode my first proper &lt;a href=https://lirando.org/ &gt;randonneuring ride&lt;/a&gt;: 200km (124mi) to all of the beaches around Brooklyn. It was pretty challenging, as you’d expect, but I didn’t ‘find my limit’ for endurance, but I did find my limit in terms of how many gels &amp; ride-nutrition packets I could consume before sugar becomes repulsive. I do still heartily endorse &lt;a href=https://untapped.cc/product-category/untappeds-energy-gels/ &gt;maple syrup packets&lt;/a&gt; for ride nutrition: compared to the space-age fuels that all taste like fruit or coffee, it’s an identifiable substance that tastes like you’d expect.&lt;/p&gt;&lt;p&gt;And, not pictured, but I ran a bunch of 5Ks. Haven’t hit my goal this year of going sub-20, but got close in the last one - 20:15. I’m not giving up yet, because the weather is getting better and Brooklyn has a lot of 5K options.&lt;/p&gt;&lt;h2 id=listening&gt;Listening&lt;/h2&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=2369499514/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/transparent=true/&quot; style=border:0;width:100%;height:120px;&gt;&lt;a href=https://duffyuhlmann.bandcamp.com/album/hot-creek&gt;Hot Creek by Duffy x Uhlmann&lt;/a&gt;&lt;/iframe&gt;&lt;p&gt;Duffy x Uhlmann has been in my rotation for &lt;a href=https://macwright.com/2025/08/29/recently&gt;a year now&lt;/a&gt; and the new album has all the things I like from the combination. This and &lt;a href=https://shrunkenelvis.bandcamp.com/album/shrunken-elvis&gt;Shrunken Elvis&lt;/a&gt; go along well together and both have been hits at dinner parties.&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/h54KXzWNv1Q&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;This album from &lt;a href=https://en.wikipedia.org/wiki/Frances_Quinlan&gt;Frances Quinlan&lt;/a&gt;, the frontperson of Hop Along, went under the radar, but it’s so good. I’ve also been playing Hop Along’s send album &lt;em&gt;Get Disowned&lt;/em&gt;. I really like everything that this band has put out. It’s a product of Philadelphia but I hear some of the elements that drew me to DC post-punk in the turn-on-a-dime songwriting.&lt;/p&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=2102394109/size=large/bgcol=ffffff/linkcol=333333/tracklist=false/artwork=small/track=1030913408/transparent=true/&quot; style=border:0;width:100%;height:120px;&gt;&lt;a href=https://hopalong.bandcamp.com/album/get-disowned&gt;Get Disowned by Hop Along&lt;/a&gt;&lt;/iframe&gt;&lt;h2 id=watching&gt;Watching&lt;/h2&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/u6XAPnuFjJc&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;This video, ‘The surprising truth about what motivates us’, is kind of an artifact of the ‘Obamaverse’, as one of my friends would put it. It’s by &lt;a href=https://www.danpink.com/ &gt;Daniel Pink&lt;/a&gt;, a writer-speaker-self-help kind of guy, and it’s accompanied by one of those realtime hand-illustrations. There are lots of reasons to tune it out as YouTube filler.&lt;/p&gt;&lt;p&gt;Still, I thought it was pretty cool for two reasons: first, it connected directly with Andrew Kelley’s video, which is the next one. And it connects with my &lt;a href=https://macwright.com/2024/03/01/incentives&gt;feelings about incentives&lt;/a&gt; and how most simple incentives are counterproductive. And second, the drawing is &lt;em&gt;real&lt;/em&gt;. I’m so used to the artificial version of this visual style that it took a minutes to realize that the it wasn’t AI or some ‘drawing hand’ style of video essay, it was a real person making quite nice illustrations: specifically &lt;a href=https://www.hairyhand.co/about&gt;Andrew Park&lt;/a&gt;.&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/iqddnwKF8HQ params=&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;Found myself nodding along to every bit of this interview with Andrew Kelley. His values and motivation are so nice to encounter in this current phase of tech. He’s kind of a role model, which is something that I used to find trite in my early career but I’m coming around to. As Adam Neely &lt;a href=&quot;https://www.youtube.com/watch?si=tRSHMTjG-ywVFsPA&amp;t=1324&amp;v=U8dcFhF0Dlk&amp;feature=youtu.be&quot;&gt;pointed out in his video&lt;/a&gt;, a lot of the people heavily using Suno (an AI music tool) could not cite any role models, and defaulted to a sort of enclosed, self-centered stance. I see this with engineering too: it’s hard to discern what values or talents the people at ‘the forefront of the industry’ have that I want. Finding personal qualities as something to imitate instead of desires and possessions (cue the segue into &lt;a href=https://en.wikipedia.org/wiki/Mimetic_theory&gt;Girard’s Memetic theory&lt;/a&gt;) seems like a better way to live.&lt;/p&gt;&lt;h2 id=reading&gt;Reading&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;What strengthens a relationship? Almost always, it is personal investment. Perhaps an AI agent might be better at predicting what my father will want for his birthday than I am, but it definitionally cannot give him my time and consideration. Love is not just a feeling; it is a way of paying attention.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href=https://www.theverge.com/ai-artificial-intelligence/977623/mark-zuckerberg-ai-manifesto-dim-vision&gt;Elizabeth Lopatto&lt;/a&gt; in The Verge picks apart Mark Zuckerberg’s weird, sad view of humanity. It’s worth a read even just for the incredible opening anecdote.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Home of the titular 100 foot waves. Which existed when I was a kid of course, but the larger world didn’t know about them yet. They were our secret. My grandfather and I would walk to the lighthouse and watch the waves hitting against the cliffs and he’d tell me that these were the biggest waves in the world. I didn’t believe him, of course. I thought it was standard grandpa hyperbole. But I also didn’t want to believe that I was seeing the biggest of anything. Not yet. I wanted the really great things to be in the future. Something to aim for. Which means I missed out on some great things that were right in front of me.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href=https://buttondown.com/monteiro/archive/how-to-live-somewhere-safe/ &gt;Mike Monteiro’s&lt;/a&gt; newsletter is always beautiful and melancholy, and this is a really nice edition of it.&lt;/p&gt;&lt;p&gt;I read and highlighted a few other articles but they were all saying things about AI, mostly about how it makes the world worse and makes people feel bad. I won’t add those to the pile because I don’t want that kind of content to dominate what I mention, even if it does dominate what I read.&lt;/p&gt;&lt;h2 id=elsewhere&gt;Elsewhere&lt;/h2&gt;&lt;p&gt;For the Val Town blog, &lt;a href=https://blog.val.town/security&gt;I wrote about our experience with the bug bounty program&lt;/a&gt;. It’s been a very interesting experience. Val Town has a pretty difficult security surface: in contrast to &lt;a href=https://www.mapbox.com/ &gt;Mapbox&lt;/a&gt;, which was mostly a read-only API, it’s a very read-write system with many access controls. At the center of the product is a sandbox that we want to keep secure. And because we’re living in the AI age, a single bit of functionality can be exposed via REST API, React Router loaders, tRPC, and MCP. Building a model layer and a shared authorization layer - modeled after &lt;a href=https://www.osohq.com/ &gt;Oso&lt;/a&gt; - has helped a bit.&lt;/p&gt;&lt;p&gt;But the reports still come in. It’s pretty wild how AI factors into it: I’d say that 100% of the vulnerability reports used AI to write the report itself. From the best reporters, the vulnerabilities come with screen recordings and evidence, and it’s clearly not all-robot. But - I suspect that other people manning help desks &amp; bug bounty programs know this experience - it’s jarring to go three replies into an email conversation with someone and they suddenly stop using an LLM to write their emails and the voice completely changes, from hyper-literate to abbreviated and misspelled.&lt;/p&gt;&lt;p&gt;I also wrote about &lt;a href=https://blog.val.town/access&gt;our new authentication scheme&lt;/a&gt; that makes vals require login and makes it possible to manage permissions to val applications, not just their code. It was pretty fun to implement, and the sixth or seventh time working with &lt;a href=https://en.wikipedia.org/wiki/HMAC&gt;HMAC&lt;/a&gt; schemes I’m starting to get a natural grasp on them.&lt;/p&gt;</description>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/09/01/recently.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/09/01/recently.html</guid>
      <media:content url="https://macwright.com/images/2026-08-27-recently.jpg" medium="image" />
    </item>
    <item>
      <title>Placemark is now fully open source</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;&lt;em&gt;Context: Placemark is a tool that lets you view, create, and edit geospatial (map) data. I ran it as a company for a while and &lt;a href=https://macwright.com/2024/01/19/placemark-oss&gt;open sourced it&lt;/a&gt; when I shut down that company.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Yesterday &lt;a href=https://www.placemark.io/ &gt;Placemark&lt;/a&gt; got a &lt;a href=https://github.com/placemark/placemark/pull/269&gt;pretty big PR from Birk Skyum&lt;/a&gt;, replacing its dependency on Mapbox GL JS with MapLibre, along with some other improvements. &lt;a href=https://github.com/birkskyum&gt;Birk&lt;/a&gt; is one of the cofounders of &lt;a href=https://maplibre.org/ &gt;MapLibre&lt;/a&gt;&lt;sup class=footnote-ref&gt;&lt;a href=https://macwright.com/2026/08/25/placemark-fully-open-source.html#fn1 id=fnref1&gt;[1]&lt;/a&gt;&lt;/sup&gt; and a generally prolific open-source contributor.&lt;/p&gt;&lt;p&gt;It’s merged and live, and you can see it in action at &lt;a href=https://www.placemark.io/ &gt;placemark.io&lt;/a&gt;. This meant swapping out both the Mapbox frontend code as well as switching to a different tile service - we’re now using &lt;a href=https://openfreemap.org/ &gt;OpenFreeMap&lt;/a&gt; for tiles, &lt;a href=https://openmaptiles.org/ &gt;OpenMapTiles-based styles&lt;/a&gt;, &lt;a href=https://account.heigit.org/info/tos&gt;openrouteservice&lt;/a&gt; for the routing drawing mode, and &lt;a href=https://www.maptiler.com/ &gt;MapTiler&lt;/a&gt; for the satellite layer. Forks of Placemark no longer require a Mapbox API token to work, but they do require a MapTiler token to support Satellite tiles, and an openrouteservice token to do route-drawing.&lt;/p&gt;&lt;p&gt;The big upside here is that this makes Placemark cleanly open source: all of its dependencies have proper open source licenses like MIT, ISC, Apache-2.0, BSD-3-Clause, or similar&lt;sup class=footnote-ref&gt;&lt;a href=https://macwright.com/2026/08/25/placemark-fully-open-source.html#fn2 id=fnref2&gt;[2]&lt;/a&gt;&lt;/sup&gt;. &lt;a href=https://github.com/mapbox/mapbox-gl-js/blob/main/LICENSE.txt&gt;Mapbox GL’s license&lt;/a&gt; is not open source and requires the developer to have a Mapbox account and follow their Terms of Service. So: you can now fork Placemark and build cleanly-licensed open source applications on its codebase. I recommend it!&lt;/p&gt;&lt;p&gt;You’ll notice some visual changes: MapTiler’s satellite sources and processing are different than Mapbox’s, and the OpenFreeMap styles are a bit different. I hope that it’s not a disruptive change for anyone relying on the tool.&lt;/p&gt;&lt;p&gt;Along with this, Birk removed the deck.gl dependency that had been bothering me for a few years, and swapped out the routing functionality for a more permissive provider. It was a really great contribution, and resolved an issue more than two years old. Great stuff, and much appreciated!&lt;/p&gt;&lt;h4 id=previously&gt;Previously&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Earlier this month, &lt;a href=https://macwright.com/2026/08/19/new-geojson-io&gt;Placemark code got readopted into geojson.io&lt;/a&gt;, which was also very cool&lt;/li&gt;&lt;li&gt;Rewind to the 2024 &lt;a href=https://macwright.com/2024/01/19/placemark-oss&gt;Placemark open source release post&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr class=footnotes-sep&gt;&lt;section class=footnotes&gt;&lt;ol class=footnotes-list&gt;&lt;li class=footnote-item id=fn1&gt;&lt;p&gt;Notes on &lt;a href=https://gist.github.com/tmcw/eb87d6b3cc85048491dffc5327cd89d9&gt;the Mapbox / Maplibre history&lt;/a&gt;, for clarity. &lt;a href=https://macwright.com/2026/08/25/placemark-fully-open-source.html#fnref1 class=footnote-backref&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class=footnote-item id=fn2&gt;&lt;p&gt;Here’s the &lt;a href=https://gist.github.com/tmcw/b60c0e0a31a361e63bbf734e3b778f29&gt;full license list from pnpm license list&lt;/a&gt;. &lt;a href=https://macwright.com/2026/08/25/placemark-fully-open-source.html#fnref2 class=footnote-backref&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description>
      <pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/08/25/placemark-fully-open-source.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/08/25/placemark-fully-open-source.html</guid>
    </item>
    <item>
      <title>Technology optimism hour</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/8NgcHpQYKz-640.webp 640w, https://macwright.com/img/8NgcHpQYKz-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Another lovingly hand-illustrated watercolor of a computer surrounded by greenery. Not training data.&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/8NgcHpQYKz-640.jpeg srcset=&quot;https://macwright.com/img/8NgcHpQYKz-640.jpeg 640w, https://macwright.com/img/8NgcHpQYKz-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;Back in 2022, I wrote &lt;a href=https://macwright.com/2022/11/18/optimism-updates&gt;&lt;em&gt;Web technology optimism hour&lt;/em&gt;&lt;/a&gt;, highlighting the things I thought were cool about the state of technology. Time flies. Let’s do it again.&lt;/p&gt;&lt;p&gt;It’s still easy to be pessimistic, but it’s nice to mine your feelings for the positive ones. The elephant in the room is AI, but I don’t feel like throwing another post into the gravity field of that topic.&lt;/p&gt;&lt;p&gt;Without further ado:&lt;/p&gt;&lt;h2 id=typescript-7&gt;TypeScript 7&lt;/h2&gt;&lt;p&gt;It’s here, finally, and it’s faster. In the last edition, one of the headings was “Rust and Go based tools are making TypeScript development faster.” At that point we had a few upstart projects for minifying, transpiling, and bundling TypeScript. Those tools have become standard-issue.&lt;/p&gt;&lt;p&gt;But &lt;em&gt;TypeScript&lt;/em&gt;, the actual type-checking of the language and the language tooling in editors, was still a bottleneck. There was exactly one implementation of the TypeScript type checker, and it was implemented in TypeScript, so it ran at JavaScript speeds and had limited ability to become multi-threaded.&lt;/p&gt;&lt;p&gt;Unfortunately there’s still only one game in town for TypeScript type checkers: it’s still just Microsoft. But they rewrote TypeScript in Go for &lt;a href=https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/ &gt;TypeScript 7&lt;/a&gt; and it’s much, much faster. This is one of the most noticeable changes to my day-to-day coding in a while.&lt;/p&gt;&lt;p&gt;Plus, even better: TypeScript 7 supports the Language Server Protocol! As I wrote about in 2024, &lt;a href=https://macwright.com/2024/06/01/recently#the-typescript-situation&gt;Microsoft invented TypeScript and also the Language Server Protocol&lt;/a&gt;, but TypeScript never implemented the Language Server Protocol. So there was no standard way for other editors, other than Microsoft’s VS Code, to provide language tooling for TypeScript. This was suspicious behavior because of &lt;a href=https://blog.documentfoundation.org/blog/2026/07/17/microsofts-main-tool-for-lock-in/ &gt;the company’s&lt;/a&gt; &lt;a href=https://en.wikipedia.org/wiki/United_States_v._Microsoft_Corp.&gt;history&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;But now: it just works. Neovim can support TypeScript 7 with its built-in Language Server support instead of someone &lt;a href=https://github.com/yioneko/vtsls&gt;wrapping the VSCode extension in an LS-protocol shell&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;So: a big win. Hooray for the new TypeScript: it’s faster, it supports open standards, and now there are two TypeScript implementations. Now all we need is one that’s made by someone who doesn’t work at Microsoft.&lt;/p&gt;&lt;h2 id=the-effect-ecosystem-is-exciting&gt;The Effect ecosystem is exciting&lt;/h2&gt;&lt;p&gt;I’ve been writing little &lt;a href=https://macwright.com/2026/07/16/effect-update&gt;development logs about Effect&lt;/a&gt; over the last year or two. I’m excited about &lt;a href=https://effect.website/ &gt;Effect&lt;/a&gt;. It’s a big, all-encompassing system, but I think it has a lot of potential and is arriving at exactly the right time.&lt;/p&gt;&lt;p&gt;This is an era of supply-chain risk and I think there is, and should be, a swing away from the tiny module ecosystems in NPM. Software that’s composed of hundreds of little modules from hundreds of authors is a lovely idea that doesn’t work with malicious actors. The swing is toward larger, buttoned-up libraries, and Effect is really well-positioned for that. It has type validation, observability, state management, fancy data types, and lots of functional programming helpers all under one roof, in one package that’s pretty well-maintained and heavily tested.&lt;/p&gt;&lt;p&gt;It’s also very, very typed, which makes it safer to use at scale. And it makes limits a lot easier: you can just stick an &lt;a href=https://effect.website/docs/v4/error-management/timing-out#timeout&gt;Effect.timeout&lt;/a&gt; on anything and prevent network requests or database queries or anything else from taking too long. The same with concurrency, it’s very easy to limit concurrency. It’s ready for a very uncertain world where you have to validate and be careful about everything. But at the same time, it’s fun to use, if you’re that kind of person, which I am.&lt;/p&gt;&lt;h2 id=bluesky-and-mastodon-are-successful-meaningfully-decentralized-systems&gt;Bluesky and Mastodon are successful, meaningfully decentralized systems&lt;/h2&gt;&lt;p&gt;I use Bluesky and Mastodon all the time and both &lt;em&gt;just work&lt;/em&gt;. They don’t feel like tech demos, it’s not all nerds using them. The uptime is pretty good, the featureset doesn’t seem limited by the technology choices.&lt;/p&gt;&lt;p&gt;And yet both are legitimately decentralized (in different ways) networks, with really interesting ideas about security, privacy, and community systems. Bluesky is aggressively building out &lt;a href=https://bsky.network/ &gt;its protocol as an independent technology&lt;/a&gt; from the social network, and as I learned &lt;a href=https://macwright.com/2026/04/05/in-the-atmosphere&gt;at their conference&lt;/a&gt;, there are lots of creative people building on the technology.&lt;/p&gt;&lt;p&gt;There’s a big gap between a cool tech demo and a user-friendly popular service, and both of these have bridged it. It’s exciting, and shows that you don’t have to accept a bad set of tradeoffs to make tech that’s both principled and popular.&lt;/p&gt;&lt;h2 id=signal-whatsapp-imessage-and-rcs-are-meaningfully-secure-messaging-platforms&gt;Signal, WhatsApp, iMessage, and RCS are meaningfully secure messaging platforms&lt;/h2&gt;&lt;p&gt;I want to just celebrate the end of a technology: SMS. It’s so good that people don’t use SMS anymore: it was needlessly expensive and &lt;a href=https://en.wikipedia.org/wiki/SMS#Vulnerabilities&gt;extremely insecure&lt;/a&gt;. My texts with friends are almost exclusively on Signal &amp; iMessage, and occasionally WhatsApp.&lt;/p&gt;&lt;p&gt;Now, &lt;a href=https://en.wikipedia.org/wiki/Reception_and_criticism_of_WhatsApp_security_and_privacy_features&gt;WhatsApp is a mixed bag&lt;/a&gt; and nothing’s perfect, but it’s cool that the secure options &lt;a href=https://ssd.eff.org/ &gt;recommended by the EFF&lt;/a&gt; and other sources are also popular options that people use every day. That’s also pretty important from a privacy standard: having Signal installed on your phone is normal because it has a wide userbase, but the same would not be true if it was only used by people attending protests and being wary of government surveillance.&lt;/p&gt;&lt;h2 id=hardware-update-cycles-are-slowing&gt;Hardware update cycles are slowing&lt;/h2&gt;&lt;p&gt;&lt;a href=https://www.macrumors.com/2024/07/10/apple-users-keeping-their-devices-for-longer/ &gt;People are hanging on to their phones and computers for longer&lt;/a&gt;. I’m part of this trend - my iPhone hit its fourth birthday, and I have no reason to even think about replacing this computer. With the exception of their batteries, modern laptops and phones are robust: they’re water-resistant, made of durable materials, and basically just work.&lt;/p&gt;&lt;p&gt;You could read the same data differently: maybe people are upgrading slower because they have less disposable income. I’m not sure that’s true. But either way, it’s good that upgrade cycles are longer: it means less e-waste, less pollution, less churn overall.&lt;/p&gt;</description>
      <pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/08/14/optimism-hour.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/08/14/optimism-hour.html</guid>
      <media:content url="https://macwright.com/images/2026-08-14-optimism-ratio.jpg" medium="image" />
    </item>
    <item>
      <title>Printing tiny photos for paper journals</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;I’m still &lt;a href=https://macwright.com/2019/01/02/paper-notes&gt;writing my journals on paper&lt;/a&gt;. Makes it about a decade of notebooks, most of them &lt;a href=https://fieldnotesbrand.com/ &gt;Field Notes&lt;/a&gt;, kept in the &lt;a href=https://fieldnotesbrand.com/products/archival-wooden-box&gt;archival wooden boxes&lt;/a&gt;&lt;sup class=footnote-ref&gt;&lt;a href=https://macwright.com/2026/07/24/printing-for-journals.html#fn1 id=fnref1&gt;[1]&lt;/a&gt;&lt;/sup&gt;. Writing by hand helps me remember and process life. Finishing notebooks give me the feeling of closing a chapter on those problems, at least for a moment.&lt;/p&gt;&lt;p&gt;Paper notebooks are also a very flexible medium, as most teenagers can confirm: you can take train tickets and elmers-glue them in there to commemorate a trip, or make sketches to illustrate some anecdote. Want five different kinds of checkboxes, and lines connecting paragraphs? You can do it in a paper notebook, and probably not in Notion or other digital tools.&lt;/p&gt;&lt;p&gt;Collecting ephemera in notebooks has been really satisfying, so I’ve been experimenting with something new: a tiny printer. In particular, the &lt;a href=https://www.liene-life.com/products/pearl-n200-pro-portable-photo-printer-purple&gt;Liene Pearl N200 Pro&lt;/a&gt;. Here’s some of that experience.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/pNrxWOMutk-640.webp 640w, https://macwright.com/img/pNrxWOMutk-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Liene printer on a wood table&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/pNrxWOMutk-640.jpeg srcset=&quot;https://macwright.com/img/pNrxWOMutk-640.jpeg 640w, https://macwright.com/img/pNrxWOMutk-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;It’s a little printer. Exactly the height of an iPhone 16, and about twice its thickness. The photos it prints are small - 2x3 inches. My beloved Field Notes notebooks are 3.5x5.5&quot;, so the photos fit really well: any wider and they’d creep too close to the binding of the notebook.&lt;/p&gt;&lt;p&gt;The Liene charges by USB-C and connects via Bluetooth. Virtually nothing that uses Bluetooth is reliable, and this is no exception.&lt;sup class=footnote-ref&gt;&lt;a href=https://macwright.com/2026/07/24/printing-for-journals.html#fn2 id=fnref2&gt;[2]&lt;/a&gt;&lt;/sup&gt; Half the time it pairs immediately, the other half I have to restart it to connect both to my iPhone and to the app. And it’s kind of odd that it doesn’t support AirPrint, Apple’s standardized way for printers to connect to iPhones. You have to use the app, which is fine to use if you ignore the goofy AI features. For Chinese-based consumer electronics like this, the hardware is usually a lot better than the software.&lt;/p&gt;&lt;p&gt;And the photos are stickers! So far I haven’t printed something from this and &lt;em&gt;not&lt;/em&gt; wanted the photo to be a sticker: wouldn’t I want to stick it onto a postcard or in a notebook? The quality’s totally fine but won’t replace a desktop printer or a film photo.&lt;/p&gt;&lt;p&gt;It prints with dye-sublimation in a &lt;a href=https://en.wikipedia.org/wiki/CMYK_color_model&gt;three-color CMY process&lt;/a&gt;: yellow, magenta, and cyan. You can see the photo at each stage, and then it does a final lamination pass. The image rendering is punchy - high-contrast and high-saturation.&lt;/p&gt;&lt;div class=table-wrap&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=border:none&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/pIAQdxOT1m-640.webp 640w, https://macwright.com/img/pIAQdxOT1m-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Photo Yellow&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/pIAQdxOT1m-640.jpeg srcset=&quot;https://macwright.com/img/pIAQdxOT1m-640.jpeg 640w, https://macwright.com/img/pIAQdxOT1m-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/td&gt;&lt;td style=border:none&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/ZHqlkVyAEG-640.webp 640w, https://macwright.com/img/ZHqlkVyAEG-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Photo Magenta&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/ZHqlkVyAEG-640.jpeg srcset=&quot;https://macwright.com/img/ZHqlkVyAEG-640.jpeg 640w, https://macwright.com/img/ZHqlkVyAEG-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/td&gt;&lt;td style=border:none&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/xxhEcq_Slb-640.webp 640w, https://macwright.com/img/xxhEcq_Slb-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Photo Combined&quot; decoding=async height=1707 loading=lazy sizes=auto src=https://macwright.com/img/xxhEcq_Slb-640.jpeg srcset=&quot;https://macwright.com/img/xxhEcq_Slb-640.jpeg 640w, https://macwright.com/img/xxhEcq_Slb-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Then the photos work nicely as full-width, or can be aligned vertically with a squeezed left column, like here:&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/uq51D8hXZ4-640.webp 640w, https://macwright.com/img/uq51D8hXZ4-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Photo in notebook&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/uq51D8hXZ4-640.jpeg srcset=&quot;https://macwright.com/img/uq51D8hXZ4-640.jpeg 640w, https://macwright.com/img/uq51D8hXZ4-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;The printer supposedly goes through a cartridge every 10 prints and eats &lt;a href=https://www.liene-life.com/products/pearl-n200-pro-2x3-dye-sublimation-photo-paper-50-sheets&gt;special paper&lt;/a&gt; that costs 50 cents a print.&lt;/p&gt;&lt;p&gt;It’s hard to say that this kind of thing is practical: is putting little photos in paper notebooks ‘practical’? The whole exercise is sentimental and psychological. The prints are tiny and the printer takes a good 45 seconds to make them. They’re kind of expensive. It usually requires a minute of futzing to connect.&lt;/p&gt;&lt;p&gt;But I’ve used &lt;a href=https://www.snailjet.com/ &gt;snailjet&lt;/a&gt; for years - a service that lets you send a postcard with any photo, straight from your phone, for $1.41. Is surprising a friend with an old photo worth $1.41? Obviously.&lt;/p&gt;&lt;p&gt;Have I gotten some joy from buying a ~$110 printer to decorate my little paper notebooks? Definitely. Someday I’ll read the notes that I’m writing this year and be nostalgic for this phase of life, and it’ll be fun to see how I was doing.&lt;/p&gt;&lt;hr class=footnotes-sep&gt;&lt;section class=footnotes&gt;&lt;ol class=footnotes-list&gt;&lt;li class=footnote-item id=fn1&gt;&lt;p&gt;I bought my wooden boxes back when they were $35. I don’t know if I’ll keep buying them now that they’re $50: &lt;a href=https://macwright.com/2026/07/24/printing-for-journals.html#fnref1 class=footnote-backref&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class=footnote-item id=fn2&gt;&lt;p&gt;AirPods work flawlessly because they’re cheating with a proprietary Apple-only protocol. &lt;a href=https://macwright.com/2026/07/24/printing-for-journals.html#fnref2 class=footnote-backref&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;</description>
      <pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/07/24/printing-for-journals.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/07/24/printing-for-journals.html</guid>
      <media:content url="https://macwright.com/images/2026-07-24-printer.jpg" medium="image" />
    </item>
    <item>
      <title>Recently</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/nk73DBTnLv-640.webp 640w, https://macwright.com/img/nk73DBTnLv-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Street art in Porto, probably commentary on tourism&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/nk73DBTnLv-640.jpeg srcset=&quot;https://macwright.com/img/nk73DBTnLv-640.jpeg 640w, https://macwright.com/img/nk73DBTnLv-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;June was a big month: I went to Porto &amp; Lisbon, and had a lot of life stuff happen. I’ll get into the trip once I get my rolls of film developed. Three rolls at a new photo developing place: fingers crossed!&lt;/p&gt;&lt;h2 id=reading&gt;Reading&lt;/h2&gt;&lt;p&gt;I finished reading &lt;a href=https://macwright.com/2026/06/06/intermezzo&gt;Intermezzo&lt;/a&gt; (&lt;a href=https://macwright.com/2026/05/05/intermezzo-bag&gt;of the bag&lt;/a&gt;) and it was fantastic. I’ve always liked Sally Rooney’s books but this was the one where the writing style really clicked.&lt;/p&gt;&lt;p&gt;Also, &lt;a href=https://macwright.com/2026/06/13/the-vegan&gt;The Vegan&lt;/a&gt;. Meh.&lt;/p&gt;&lt;p&gt;I read &lt;a href=https://www.lrb.co.uk/the-paper/v48/n11/patricia-lockwood/diary&gt;Patricia Lockwood’s ‘A Tradcath Wedding’&lt;/a&gt; via &lt;a href=https://buttondown.com/perfectsentences/archive/perfect-sentences-183/ &gt;Perfect Sentences&lt;/a&gt; but found an additional sentence to be perfect:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Whenever they rang the chimes, which seemed to be every four seconds or so, a toddler screamed ‘WOW A BELL!’ to the visible displeasure of the celebrants – though isn’t the entire point of the ritual that you’re supposed to be that awestruck every time?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Patricia Lockwood is the funniest writer I’ve read.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;You cannot grow a pumpkin, but you can improve the odds.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href=https://taylor.town/pumpkin&gt;Taylor’s ‘You Cannot Grow a Pumpkin’&lt;/a&gt; is a fantastic little prose poem of sorts.&lt;/p&gt;&lt;h2 id=watching&gt;Watching&lt;/h2&gt;&lt;p&gt;I’m always trying to find a ‘romp’ when it comes to movies. Something lighthearted, pretty easy to watch, so on. We watched &lt;a href=https://letterboxd.com/film/the-pink-panther/ &gt;The Pink Panther&lt;/a&gt; this month and it is a perfect example of the genre. The inspiration for the watch came from the &lt;em&gt;hamburger scene&lt;/em&gt;:&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/Z6oeAdemFZw&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;But there’s so much more of this kind of thing in the movie, little bits and physical comedy.&lt;/p&gt;&lt;p&gt;Oh, and I also watched &lt;em&gt;The Departed&lt;/em&gt;, which everyone says is good and is good.&lt;/p&gt;&lt;h2 id=elsewhere&gt;Elsewhere&lt;/h2&gt;&lt;p&gt;I wrote &lt;a href=https://macwright.com/2026/06/24/accidental-anonymity&gt;Accidental Anonymity&lt;/a&gt; on the micro blog, and it stirred up some discussion &lt;a href=https://bsky.app/profile/macwright.com/post/3mp22c3wo4s2j&gt;on Bluesky&lt;/a&gt; as well as at least one &lt;a href=https://lukealexdavis.co.uk/posts/a-response-to-accidental-anonymity/ &gt;blog response&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It was kind of an angry piece, as I said at the start. I will keep trying to stay out of the trap of writing about that topic all the time.&lt;/p&gt;&lt;h2 id=listening&gt;Listening&lt;/h2&gt;&lt;p&gt;The only album I bought this month was &lt;a href=https://thatbandofhers.bandcamp.com/album/songs-of-hers&gt;Songs of Her’s by Her’s&lt;/a&gt;, which is fine. I wish I had something more profound to say about it given how the band met &lt;a href=https://en.wikipedia.org/wiki/Her%27s#Deaths&gt;an unbelievably tragic end&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Maybe more influential than that was &lt;a href=https://know-your-enemy-1682b684.simplecast.com/episodes/pope-leo-xivs-magnifica-humanitas-w-jack-hanson-hXM7gedP&gt;Know Your Enemy’s recent podcasts&lt;/a&gt;, especially this one about the pope’s encyclical. I’ve really grown to love that podcast, and it has been part of me intellectually reconnecting with, but not readopting, Catholicism.&lt;/p&gt;&lt;h2 id=art&gt;Art&lt;/h2&gt;&lt;p&gt;Here’s some art I really liked this month:&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/41TMJ-HlOl-640.webp 640w, https://macwright.com/img/41TMJ-HlOl-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&#39;David Hockney&amp;#39;s &quot;Picture Emphasizing Stillness&quot;&#39; decoding=async height=1085 loading=lazy sizes=auto src=https://macwright.com/img/41TMJ-HlOl-640.jpeg srcset=&quot;https://macwright.com/img/41TMJ-HlOl-640.jpeg 640w, https://macwright.com/img/41TMJ-HlOl-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;This &lt;a href=https://www.thedavidhockneyfoundation.org/artwork/3588&gt;Hockney piece called ‘Picture Emphasizing Stillness’&lt;/a&gt; from 1962 was at the MAC/CCB museum in Lisbon.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/ZnBmMf9KtY-640.webp 640w, https://macwright.com/img/ZnBmMf9KtY-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Tomas Sanchez&quot; decoding=async height=1585 loading=lazy sizes=auto src=https://macwright.com/img/ZnBmMf9KtY-640.jpeg srcset=&quot;https://macwright.com/img/ZnBmMf9KtY-640.jpeg 640w, https://macwright.com/img/ZnBmMf9KtY-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;Via &lt;a href=https://bsky.app/profile/tbabb.bsky.social/post/3mowjhmjldk2g&gt;Tim Babb&lt;/a&gt;, I enjoyed finding &lt;a href=https://www.tomassanchez.com/ &gt;Tomás Sánchez&lt;/a&gt;’s work.&lt;/p&gt;</description>
      <pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/07/01/recently.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/07/01/recently.html</guid>
      <media:content url="https://macwright.com/images/2026-07-01-porto.jpg" medium="image" />
    </item>
    <item>
      <title>Recently</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/bz_ujWn6NR-640.webp 640w, https://macwright.com/img/bz_ujWn6NR-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;A scene from the cycling path in Switzerland&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/bz_ujWn6NR-640.jpeg srcset=&quot;https://macwright.com/img/bz_ujWn6NR-640.jpeg 640w, https://macwright.com/img/bz_ujWn6NR-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;figcaption&gt;A section of trail in Switzerland&lt;/figcaption&gt;&lt;p&gt;May was a big month! The highlight was a cycling trip around Lake Konstanz, passing through Konstanz, Bregenz Austria, Stein am Rhein in Switzerland, and Meersburg.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/ZTUnzBIlNv-640.webp 640w, https://macwright.com/img/ZTUnzBIlNv-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Scene from Bodenseeufer in Germany&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/ZTUnzBIlNv-640.jpeg srcset=&quot;https://macwright.com/img/ZTUnzBIlNv-640.jpeg 640w, https://macwright.com/img/ZTUnzBIlNv-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;figcaption&gt;A farm in Bodenseeufer, Germany&lt;/figcaption&gt;&lt;p&gt;We passed a lot of operating agriculture, growing apples, strawberries, and other fruits.&lt;/p&gt;&lt;p&gt;The route is very continuous, mostly flat, and popular with retirees. It’s very idyllic riding: lots of protected and separated lanes. There are some interesting regional differences in the riding. Swiss drivers were noticeably more aggressive and gave a lot less space to bikes, but the Swiss infrastructure was really nice when it was off-road. Also it was interesting to see that the vast majority of other cyclists on most of the route were on ebikes. This only changed when we were close to hip cities and we’d notice more young people on high-end road bikes.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/hVrRc6oYRb-640.webp 640w, https://macwright.com/img/hVrRc6oYRb-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Münster St. Maria und Markus&quot; decoding=async height=961 loading=lazy sizes=auto src=https://macwright.com/img/hVrRc6oYRb-640.jpeg srcset=&quot;https://macwright.com/img/hVrRc6oYRb-640.jpeg 640w, https://macwright.com/img/hVrRc6oYRb-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;figcaption&gt;Münster St. Maria und Markus&lt;/figcaption&gt;&lt;p&gt;Taking the ride in 40-60 mile days left a lot of room for checking out the towns, food, and views. It was very easy being vegan in Germany, and significantly harder in Austria and Switzerland. Some highlights:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;KERVAN Imbiss in Konstanz: cheap, delicious vegan kebabs&lt;/li&gt;&lt;li&gt;Insel Mainau: beautiful botanical garden on an island, recommended to follow up with Biergarten St. Katharina, a beer garden in the woods&lt;/li&gt;&lt;li&gt;The Pile Dwelling Museum in Uhldingen-Mühlhofen-Unteruhldingen: very aesthetic museum plus recreations of pile dwellings&lt;/li&gt;&lt;li&gt;In Zurich: the Swiss National Museum was gigantic and featured the best-integrated high-tech exhibits I’ve seen&lt;/li&gt;&lt;li&gt;On the final evening we took a cable car up to Panorama Restaurant Falsenegg and it delivered on the name&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=reading&gt;Reading&lt;/h2&gt;&lt;p&gt;I read &lt;a href=https://macwright.com/2026/05/24/the-technological-republic&gt;The Technological Republic&lt;/a&gt; the book by Alex Karp and one of his employees. It was terrible as expected: part sales-pitch, part standard-issue MAGA cultural critique, part implied defense of just war. The last part was the most interesting to me, because Karp spends so much time grandstanding about his intellectual background and telling protestors to quiet down and have a real discussion, and this book confirms that he can’t actually have that conversation. He has nothing to say about the moral complexity or justification of war.&lt;/p&gt;&lt;p&gt;It’s surprising that the only critical reviews I could find of the book are from other right-leaning sources. &lt;a href=https://providencemag.com/2025/05/the-technological-republic/ &gt;Providence&lt;/a&gt;, an American Christian Realist magazine, found it too weak. The &lt;a href=https://www.independent.org/tir/2025-fall/the-technological-republic/ &gt;Independent Institute&lt;/a&gt; didn’t like it based on their Libertarian principles. I guess it’s just so far from any left-wing thought that nobody bothers to read it.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Democratic governance rests on a bargain so old we’ve forgotten it’s a bargain at all. The governed have something the governors need: labor, tax revenue, military service, consumer spending. This dependency is the source of democratic leverage. The whole system functions because power is distributed, and it’s distributed because the people at the top need something from the people at the bottom.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I’m still trying to avoid writing about AI, but &lt;a href=https://www.owenmcgrann.com/p/the-dead-economy-theory&gt;this piece by Owen McGrann&lt;/a&gt; was worth the time. It takes a lot of points that I’ve long agreed with and stitches them together into a coherent but miserable whole.&lt;/p&gt;&lt;p&gt;On the bright side, I’m just finishing reading &lt;a href=https://en.wikipedia.org/wiki/Intermezzo_(novel)&gt;Intermezzo&lt;/a&gt; and it’s &lt;em&gt;wonderful&lt;/em&gt;. A totally rejuvenating and inspiring novel.&lt;/p&gt;&lt;h2 id=listening&gt;Listening&lt;/h2&gt;&lt;p&gt;Cheekface is a ~9 year old band in the tradition of Cake, They Might Be Giants, etc. They’ve got some great hits - part sardonic and ironic, part euphoric and ultra-light pop choruses.&lt;/p&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=1367505248/size=small/bgcol=ffffff/linkcol=333333/track=3286354914/transparent=true/&quot; style=border:0;width:100%;height:42px;&gt;&lt;a href=https://cheekface.bandcamp.com/album/its-sorted&gt;It&#39;s Sorted by Cheekface&lt;/a&gt;&lt;/iframe&gt;&lt;h2 id=watching&gt;Watching&lt;/h2&gt;&lt;p&gt;Adam Neely’s talking about AI and music again, and like always, it’s very worth watching. The generational element is especially interesting here: just like the &lt;a href=https://www.404media.co/ucf-ai-commencement-speaker-booed/ &gt;commencement speakers&lt;/a&gt; getting booed, there’s a consistent theme where Gen Z (and millennials, to some extent) are rejecting the AI hype while older generations are optimistic and coincidentally in a position to benefit from it.&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/EfeGc02nzC4&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;</description>
      <pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/06/04/recently.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/06/04/recently.html</guid>
      <media:content url="https://macwright.com/images/2026-06-04-cycling-1.jpg" medium="image" />
    </item>
    <item>
      <title>Intermezzo bag</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;I’ve been reading the new Sally Rooney novel, &lt;a href=https://en.wikipedia.org/wiki/Intermezzo_(novel)&gt;Intermezzo&lt;/a&gt;. It’s really beautiful. The perfect kind of novel to read slowly. She manages to write prose that’s engaging at the micro and macro levels - beautiful sentences, as well as lovely long narrative arcs. I’ve been trying to read the dialog with an Irish accent in my head.&lt;/p&gt;&lt;p&gt;It’s a good book for reading in a park, and in Brooklyn we have a lot of nice little neighborhood parks. There’s one right next to my apartment, public albeit under a confusing non-city ownership. Getting back from a long day of working on the internet, I want to throw that book in a bag and spend some time reading. But my bags are all the wrong size, too small or so large that the book lays horizontally at the bottom, which annoys me.&lt;/p&gt;&lt;p&gt;Following along with &lt;a href=https://cwandt.com/ &gt;CW&amp;T&lt;/a&gt;’s newsletter, &lt;a href=https://kevinlynagh.com/side-table/ &gt;Kevin Lynagh&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=UcqHdPFFuh8&quot;&gt;Casey Neistat&lt;/a&gt;, and others, I’ve gained an appreciation of people who create their own tools in real life, not just on the computer.&lt;/p&gt;&lt;p&gt;A sewing machine has unlocked a new domain of life where I feel free to do that. It’s both supposedly practical and a crucial emotional-life crutch to be able to make something tangible as a respite from the virtual.&lt;/p&gt;&lt;p&gt;So I made a bag just for this one book. The Intermezzo bag. The dimensions are just based on fitting this one item, a book that I’ll finish in a 120 pages anyway, and then it’ll be more of a toss-up which books it will fit.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/JAWWAKuNsE-640.webp 640w, https://macwright.com/img/JAWWAKuNsE-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Planning the bag&quot; decoding=async height=1462 loading=lazy sizes=auto src=https://macwright.com/img/JAWWAKuNsE-640.jpeg srcset=&quot;https://macwright.com/img/JAWWAKuNsE-640.jpeg 640w, https://macwright.com/img/JAWWAKuNsE-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;I did a minimum of planning for this project: the book, plus some tolerance, plus some &lt;a href=https://www.are.na/tom-macwright/sewing-inspo-sxtvnuqkkjc&gt;reference points&lt;/a&gt; for details. The idea was to make the bag flat, unlike other things I’ve made, in the &lt;a href=https://outershell.com/products/magic-musette&gt;musette&lt;/a&gt; genre of bag shapes.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/4WTFNNn36p-640.webp 640w, https://macwright.com/img/4WTFNNn36p-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Attachments decoding=async height=960 loading=lazy sizes=auto src=https://macwright.com/img/4WTFNNn36p-640.jpeg srcset=&quot;https://macwright.com/img/4WTFNNn36p-640.jpeg 640w, https://macwright.com/img/4WTFNNn36p-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;I had some accessory rope that I wanted to use to make a sort of sacoche which I hadn’t gotten to yet, and some D-rings from previous projects. The main material is the same from the &lt;a href=https://macwright.com/2025/09/27/porteur-bag-2&gt;porteur bag 2&lt;/a&gt; and &lt;a href=https://bsky.app/profile/macwright.com/post/3lhabemdm6c2z&gt;original frame bag&lt;/a&gt;: &lt;a href=&quot;https://rockywoods.com/products/eco200?variant=45810546409756&quot;&gt;ECOPAK 200D&lt;/a&gt; from Rockywoods. Unbelievably overkill for this project, but I like it and the way it holds shape.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/iRHLPpaIbC-640.webp 640w, https://macwright.com/img/iRHLPpaIbC-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=Knot decoding=async height=959 loading=lazy sizes=auto src=https://macwright.com/img/iRHLPpaIbC-640.jpeg srcset=&quot;https://macwright.com/img/iRHLPpaIbC-640.jpeg 640w, https://macwright.com/img/iRHLPpaIbC-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/riHplgyty_-640.webp 640w, https://macwright.com/img/riHplgyty_-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Knot 2&quot; decoding=async height=960 loading=lazy sizes=auto src=https://macwright.com/img/riHplgyty_-640.jpeg srcset=&quot;https://macwright.com/img/riHplgyty_-640.jpeg 640w, https://macwright.com/img/riHplgyty_-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;The internet is so good for learning knots, I used &lt;a href=https://www.animatedknots.com/ &gt;animated knots.com&lt;/a&gt; for these. The important one is the &lt;a href=https://www.animatedknots.com/adjustable-grip-hitch-knot&gt;adjustable grip hitch&lt;/a&gt;, which makes the strap adjustable. Works super well, and it’s nice to have one less piece of ‘hardware’ and instead just rely on the physics and friction of knots.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/v7QnVQtz4E-640.webp 640w, https://macwright.com/img/v7QnVQtz4E-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Bag edited&quot; decoding=async height=1280 loading=lazy sizes=auto src=https://macwright.com/img/v7QnVQtz4E-640.jpeg srcset=&quot;https://macwright.com/img/v7QnVQtz4E-640.jpeg 640w, https://macwright.com/img/v7QnVQtz4E-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;The quiet drama was whether it would actually fit the book, which is not an easy thing to guarantee because flexible fabric and uncertain seam tolerances add up in a fuzzy way during a project like this.&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/8RIDBbLUFj-640.webp 640w, https://macwright.com/img/8RIDBbLUFj-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Book in the park&quot; decoding=async height=720 loading=lazy sizes=auto src=https://macwright.com/img/8RIDBbLUFj-640.jpeg srcset=&quot;https://macwright.com/img/8RIDBbLUFj-640.jpeg 640w, https://macwright.com/img/8RIDBbLUFj-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/05/05/intermezzo-bag.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/05/05/intermezzo-bag.html</guid>
      <media:content url="https://macwright.com/images/2026-05-05-bag-edited.jpg" medium="image" />
    </item>
    <item>
      <title>Recently</title>
      <dc:creator>Tom MacWright</dc:creator>
      <description>&lt;p&gt;I spent a lot of time outside in April. The first two weekends I did long bike rides: from Brooklyn to Tarrytown along the &lt;a href=https://en.wikipedia.org/wiki/Croton_Aqueduct&gt;Old Croton Aqueduct trail&lt;/a&gt;, and out to Rockaway Beach via the Marine Parkway Bridge &amp; Cross Bay Memorial Bridge.&lt;/p&gt;&lt;p&gt;Then, I ran the Brooklyn Experience Half Marathon. I wrote some &lt;a href=https://macwright.com/2026/04/26/brooklyn-experience-half-marathon&gt;notes about the experience over in /micro&lt;/a&gt;. I properly trained for it this time, and it felt good and was pretty fast: shaved five minutes off my previous record.&lt;/p&gt;&lt;p&gt;And then, the Great Saunter…&lt;/p&gt;&lt;p&gt;&lt;picture&gt;&lt;source sizes=auto srcset=&quot;https://macwright.com/img/fkELUsCgYV-640.webp 640w, https://macwright.com/img/fkELUsCgYV-1280.webp 1280w&quot; type=image/webp&gt;&lt;img alt=&quot;Great Saunter&quot; decoding=async height=632 loading=lazy sizes=auto src=https://macwright.com/img/fkELUsCgYV-640.jpeg srcset=&quot;https://macwright.com/img/fkELUsCgYV-640.jpeg 640w, https://macwright.com/img/fkELUsCgYV-1280.jpeg 1280w&quot; width=1280&gt;&lt;/picture&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href=https://shorewalkers.org/great-saunter/ &gt;Great Saunter&lt;/a&gt; is a full loop around Manhattan. The route is 32 miles but it took us 33 with GPS jitter and detours. Ten hours and forty-three minutes. It was very difficult, in a lot of ways tougher than the half-marathon in terms of the stress it puts on the body.&lt;/p&gt;&lt;p&gt;I’m getting more comfortable with longer endurance events, but still have no &lt;a href=https://macwright.com/2025/11/02/fewer-people-should-run-marathons&gt;interest in running a marathon&lt;/a&gt;, and definitely no ultramarathons. A 200-300km &lt;a href=https://rusa.org/ &gt;randonneuring&lt;/a&gt; ride though could be in the cards.&lt;/p&gt;&lt;h2 id=reading&gt;Reading&lt;/h2&gt;&lt;p&gt;I read &lt;a href=https://macwright.com/2026/04/19/origins-of-efficiency&gt;The Origins of Efficiency&lt;/a&gt; by Brian Potter, the author of Construction Physics. I learned that I like his blogging better than his book-length writing: for example, this month’s article &lt;a href=https://www.construction-physics.com/p/helium-is-hard-to-replace&gt;Helium is Hard to Replace&lt;/a&gt; is really great, with understandable and fascinating charts and examples.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;there’s a final layer to this argument that nobody’s quite articulated yet. product quality improvements, at the frontier, are not bounded by how fast you can write code. they’re bounded by how fast you can come up with ideas good enough to push the frontier.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I liked &lt;a href=https://ethanding.substack.com/p/claude-code-is-not-making-your-product&gt;claude code is not making your product better&lt;/a&gt;, and think it perfectly rhymes with &lt;a href=https://cutlefish.substack.com/p/tbm-383-maximizers-vs-focusers&gt;John Cutler’s post about maximizers vs. focusers&lt;/a&gt; which isn’t directly about AI. Maximizers are overrepresented in the top rungs on tech companies, people who are marked by opportunistic, experimental thinking, and for them the ability to implement a ton of features really quickly even at low quality is a gift. Their ability to enact their will was previously gated by the people doing the coding and designing, who mostly dislike pushing low-quality work. Now it isn’t, as much.&lt;/p&gt;&lt;p&gt;I took the time to thoroughly read through &lt;a href=https://mathiasbynens.be/notes/javascript-unicode&gt;JavaScript has a Unicode Problem&lt;/a&gt; and &lt;a href=https://mathiasbynens.be/notes/javascript-encoding&gt;JavaScript’s internal character encoding: UCS-2 or UTF-16?&lt;/a&gt; They’re from 2013 but still relevant, and really engaging from a technical perspective if you are very interested in text encoding and also JavaScript, which I am.&lt;/p&gt;&lt;h2 id=listening&gt;Listening&lt;/h2&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=906072634/size=small/bgcol=ffffff/linkcol=333333/track=2730704415/transparent=true/&quot; style=border:0;width:100%;height:42px;&gt;&lt;a href=https://intlanthem.bandcamp.com/album/extra-stars&gt;Extra Stars by Gregory Uhlmann&lt;/a&gt;&lt;/iframe&gt;&lt;p&gt;An excellent month for music. The new Gregory Uhlman (guitarist for SML) album.&lt;/p&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=534870983/size=small/bgcol=ffffff/linkcol=0687f5/track=1270560676/transparent=true/&quot; style=border:0;width:100%;height:42px;&gt;&lt;a href=https://mammalhands.bandcamp.com/album/circadia&gt;Circadia by Mammal Hands&lt;/a&gt;&lt;/iframe&gt;&lt;p&gt;New Mammal Hands, too.&lt;/p&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=2152818959/size=small/bgcol=ffffff/linkcol=333333/track=1353668455/transparent=true/&quot; style=border:0;width:100%;height:42px;&gt;&lt;a href=https://doshismailyyoung.bandcamp.com/album/dosh-ismaily-young&gt;Dosh, Ismaily, Young by Dosh, Ismaily, Young&lt;/a&gt;&lt;/iframe&gt;&lt;p&gt;New album from Dosh, Ismaily, Young. Dosh who you might know from being Andrew Bird’s drummer at one point (after Kevin O’Donnell and before Griffin Goldsmith).&lt;/p&gt;&lt;iframe seamless src=&quot;https://bandcamp.com/EmbeddedPlayer/album=2598115928/size=small/bgcol=ffffff/linkcol=333333/track=1973222878/transparent=true/&quot; style=border:0;width:100%;height:42px;&gt;&lt;a href=https://thebadplus.bandcamp.com/album/complex-emotions&gt;Complex Emotions by The Bad Plus&lt;/a&gt;&lt;/iframe&gt;&lt;p&gt;The Bad Plus’s final album from back in 2024! They’re on a farewell tour right now, all things must come to an end.&lt;/p&gt;&lt;h2 id=watching&gt;Watching&lt;/h2&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/htYh-Tq7ZBI&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;This was a great long watch on some math concepts that I’ve had to re-learn a bunch of times, and it was the first time that the idea of a quaternion really clicked for me. &lt;a href=https://www.youtube.com/@Acegikmo&gt;Freya’s channel&lt;/a&gt; has a lot more great videos.&lt;/p&gt;&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/VXtgNphtmOA&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;Jamelle Bouie’s channel is consistently the best video commentary on the details of US politics I can find.&lt;/p&gt;</description>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      <link>https://macwright.com/2026/05/04/recently.html</link>
      <guid isPermaLink="true">https://macwright.com/2026/05/04/recently.html</guid>
      <media:content url="https://macwright.com/images/2026-05-03-great-saunter.png" medium="image" />
    </item>
  </channel>
</rss>
