<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Windfall</title><description>personal blog. mostly reblogs of myself.</description><link>https://myles.garden/</link><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-05-11-windfall</link><guid isPermaLink="true">https://myles.garden/windfall/2026-05-11-windfall</guid><pubDate>Mon, 11 May 2026 18:53:56 GMT</pubDate><content:encoded>&lt;p&gt;I built a parody of Tumblr called &lt;a href=&quot;https://myles.garden/windfall&quot;&gt;Windfall&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Colophon</category><category>Windfall</category><category>1RG&apos;s Side Project Social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-05-10-books-up-for-grabs</link><guid isPermaLink="true">https://myles.garden/windfall/2026-05-10-books-up-for-grabs</guid><pubDate>Sun, 10 May 2026 16:59:06 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2026/05/10/books-up-for-grabs/books-up-for-grabs.jpg&quot; alt=&quot;Two boooks,Colored Television by Danzy Senna and Ghosts Photo in a graph a chronicle by Myrna Kostash, sitting on a stack of London Review of Books.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>Bookmarked The map that keeps Burning Man honest by Amanda Shendruk for Not-Ship.</title><link>https://myles.garden/windfall/2026-05-07-the-map-that-keeps-burning-man-honest</link><guid isPermaLink="true">https://myles.garden/windfall/2026-05-07-the-map-that-keeps-burning-man-honest</guid><pubDate>Thu, 07 May 2026 14:18:50 GMT</pubDate><content:encoded>&lt;p&gt;Amanda Shendruk writes about &lt;a href=&quot;https://www.not-ship.com/burning-man-moop/&quot;&gt;the work that’s done after Burning Man&lt;/a&gt;, where 150 people line up, side by side and arms apart, and slow walk the entire playa looking for Moop (Matter Out of Place).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This forensic-style sweep takes weeks; everything they find is removed and logged. At the end, they’re left with a remarkable accounting of what 70,000 people left behind: &lt;a href=&quot;https://journal.burningman.org/2026/03/black-rock-city/leaving-no-trace/moop-map-2025/?ref=not-ship.com&quot;&gt;The MOOP Map&lt;/a&gt;. And I’m obsessed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Moop Map is a pretty remarkable view of what is left behind:&lt;/p&gt;
&lt;a href=&quot;https://uploads.myles.garden/posts/2026/05/07/the-map-that-keeps-burning-man-honest/2025-moop-map.jpg&quot; target=&quot;_blank&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=https%3A%2F%2Fuploads.myles.garden%2Fposts%2F2026%2F05%2F07%2Fthe-map-that-keeps-burning-man-honest%2F2025-moop-map.jpg&amp;amp;w=2048&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Moop Map from Bunring Man 2025&quot; width=&quot;2048&quot; /&gt; &lt;/a&gt;</content:encoded><category>Maps</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-05-06-sometime-well-sometimes-poorly</link><guid isPermaLink="true">https://myles.garden/windfall/2026-05-06-sometime-well-sometimes-poorly</guid><pubDate>Wed, 06 May 2026 04:05:00 GMT</pubDate><content:encoded>&lt;p&gt;Spotted on Ossington a poster for &lt;a href=&quot;https://contactphoto.com/festival/2026/open-call/sometimes-well-sometimes-poorly&quot;&gt;Sometimes Well, Sometimes Poorly&lt;/a&gt; by &lt;a href=&quot;https://www.instagram.com/lil.dans/&quot;&gt;Dani Dazo&lt;/a&gt; and &lt;a href=&quot;https://www.instagram.com/nadom_/&quot;&gt;Nadom Paintsil&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2026/05/06/sometime-well-sometimes-poorly/sometime-well-sometimes-poorly.jpg&quot; alt=&quot;A wheat-pasted poster on a utility pole on a city street. The poster layers a photograph of someone in a green hoodie holding a bouquet of pink tulips over a white event flyer, which reads: &amp;quot;Dani + Nadom invite you to Sometimes Well, Sometimes Poorly. Book Launch + Photo Exhibit. May 1st 2026 @ 8PM. Memento Film Lab, 216 Ossington Ave.&amp;quot; A 40km/h speed sign hangs above. Behind the pole: a red bike lane, passing cars, and a grey spring sky.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><category>Street Posters</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-05-03-callery-pear</link><guid isPermaLink="true">https://myles.garden/windfall/2026-05-03-callery-pear</guid><pubDate>Mon, 04 May 2026 03:59:59 GMT</pubDate><content:encoded>&lt;p&gt;A Callery Pear in bloom.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2026/05/03/callery-pear/callery-pear.jpg&quot; alt=&quot;A Callery pear branch crowds the right of the frame, white blossoms with maroon centres and pink-tipped buds in sharp focus. Behind it, a rain-slick sidewalk and empty street recede past low-rise apartment buildings.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-05-02-blind-date-with-a-typewriter</link><guid isPermaLink="true">https://myles.garden/windfall/2026-05-02-blind-date-with-a-typewriter</guid><pubDate>Sun, 03 May 2026 03:59:59 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2026/05/02/blind-date-with-a-typewriter/blind-date-with-a-typewriter.jpg&quot; alt=&quot;A white flyer pinned with a teal thumbtack to a weathered wooden utility pole at night. Bold black caps read &amp;quot;BLIND DATE WITH A TYPEWRITER&amp;quot; above smaller lowercase &amp;quot;may 3, 1–4pm&amp;quot;. Fringed tear-off strips along the bottom carry the handles @bon.vivant.to and @poesy.ca, a few already pulled. The pole is scarred with staples and old paper scraps; behind it, a dark street recedes into blurred streetlights.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><category>Street Posters</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-28-cherry-blossom</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-28-cherry-blossom</guid><pubDate>Tue, 28 Apr 2026 12:45:15 GMT</pubDate><content:encoded>&lt;p&gt;Caught them just as they opened. The rain was not invited but showed up anyway.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/cherry-blossom-01.qAHfLKVY.jpg&quot; alt=&quot;Pink cherry blossom trees lining a wet path in Trinity Bellwoods Park on an overcast day.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/cherry-blossom-02.DI33XuAV.jpg&quot; alt=&quot;A grove of cherry blossom trees on a grey spring morning, grass still damp from rain.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/cherry-blossom-03.BsXQNkXr.jpg&quot; alt=&quot;Close-up of white cherry blossom buds covered in raindrops, hanging from a bare branch.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/cherry-blossom-04.BeJ2xOIG.jpg&quot; alt=&quot;Rain-soaked cherry blossoms in bloom, petals translucent against a pale grey sky.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Trinity Bellwoods Park</category><category>Flowers</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-10-visual-shoegaze</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-10-visual-shoegaze</guid><pubDate>Fri, 10 Apr 2026 18:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Saw this &lt;em&gt;Visual Shoegaze&lt;/em&gt; sticker on Ossington today.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/visual-shoegaze.DlIsqEdT.jpg&quot; alt=&quot;A black circular sticker reading &apos;Visual Shoegaze&apos; in bold white lettering, mounted on a weathered concrete pole on Ossington Ave, surrounded by other stickers.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-04-09-claude-buddy</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-09-claude-buddy</guid><pubDate>Fri, 10 Apr 2026 00:45:49 GMT</pubDate><content:encoded>&lt;p&gt;claude code removed my buddy 😢&lt;/p&gt;</content:encoded><category>Claude Code</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-06-theo-at-the-farm</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-06-theo-at-the-farm</guid><pubDate>Mon, 06 Apr 2026 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Theo at the farm.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/theo-at-the-farm-01.lVmldpKh.jpg&quot; alt=&quot;A golden doodle trotting across a gravel driveway, gripping a large fallen branch in its mouth, bare early-spring farm grounds behind it.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/theo-at-the-farm-02.C5tgLzQ6.jpg&quot; alt=&quot;A golden doodle mid-run across a gravel driveway toward camera, a UnionTools wheelbarrow in the foreground, overcast sky and bare trees behind.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/theo-at-the-farm-03.bbAdcb7g.jpg&quot; alt=&quot;A golden doodle resting its curly amber head on someone&apos;s denim-covered lap, a cluttered dark-wood coffee table visible in the background.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/theo-at-the-farm-04.Dfra3PjO.jpg&quot; alt=&quot;A golden doodle standing with its back to camera, nosing a fallen branch on the ground between two large tree trunks.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/theo-at-the-farm-05.D9tbmXmA.jpg&quot; alt=&quot;A golden doodle hauling a long fallen branch by its mouth along a gravel driveway edge, fieldstone border and evergreens in the background.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Family Farm</category><category>Theo</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-04-04-hello-world-from-reid-wiseman</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-04-hello-world-from-reid-wiseman</guid><pubDate>Sat, 04 Apr 2026 15:58:43 GMT</pubDate><content:encoded>&lt;p&gt;Reid Wiseman, NASA astronaut and Artemis II Commander, took this picture of &lt;a href=&quot;https://www.nasa.gov/image-article/hello-world/&quot;&gt;Earth from the Orion spacecraft’s window&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/earth.DRBcyDos.jpg&quot; alt=&quot;Photogrpah of Earth from the Orion sapcecraft&apos;s window&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Photography</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-03-railpath</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-03-railpath</guid><pubDate>Fri, 03 Apr 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Walked along the West Toronto Railpath on my way home from Kitchener.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/railpath.DinjbC8q.jpg&quot; alt=&quot;Paved path between a pixelated mural and a chain-link fence, with a concrete noise wall topped with glass panels on the right and a condo tower visible left. Bare trees, early spring.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Junction Triangle</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-02-a-place-for-all-my-books</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-02-a-place-for-all-my-books</guid><pubDate>Thu, 02 Apr 2026 21:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Played &lt;em&gt;A Place For All My Books&lt;/em&gt; with the colleagues.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/a-place-for-all-my-books-box.CScDScVf.jpg&quot; alt=&quot;A hand holds the box for A Place for All My Books, a Smirk &amp;amp; Dagger game illustrated by Naomi Lord. The cover shows a young woman reading amid towering book stacks, a black cat draped across her lap, a steaming mug nearby.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/a-place-for-all-my-books-board.eQ9vQMa7.jpg&quot; alt=&quot;A pink game board mid-play, action spaces labeled Rest, Gather, Sort, Read a Book, and Admire. Colourful wooden book tokens in green, blue, yellow, and red are spread across a room grid: Bedroom, Bath, Kitchen, Backpack.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/a-place-for-all-my-books-card.Crhk5oIY.jpg&quot; alt=&quot;A Graphic Novel card featuring an anime-style character with long green hair and a skull tee. Acquire effect: add a purple book to any stack. Admire effect: name a color, treat your purple book as that color until end of turn.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Kitchener</category><category>Board Games</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-02-dogs</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-02-dogs</guid><pubDate>Thu, 02 Apr 2026 20:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/dogs.CaSKzcFg.jpg&quot; alt=&quot;Two husky-type dogs waiting behind the glass doors of an office building vestibule, one sitting and one standing, both looking directly at the camera.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Kitchener</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-04-02-kw-airbnb</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-02-kw-airbnb</guid><pubDate>Thu, 02 Apr 2026 14:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Stayed at a really cute Airbnb in Kitchener. Very much my aesthetic: plants everywhere, rattan everything, a vintage world map on the wall.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/kw-airbnb-01.CFEc8zT6.jpg&quot; alt=&quot;A cream sofa piled with linen pillows beside a bird of paradise plant and cast iron radiator, lit by a woven pendant lamp.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/kw-airbnb-02.CTGtA0qg.jpg&quot; alt=&quot;A small dining nook with a rattan pendant light, pink tulips in a glass vase, and a vintage pull-down world map on the wall.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/kw-airbnb-03.f_gbJauy.jpg&quot; alt=&quot;A white-walled bedroom with linen bedding, a jute rug, a moroccan pouf, and botanical prints above a black cast iron stove.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Kitchener</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-04-01-trellis</link><guid isPermaLink="true">https://myles.garden/windfall/2026-04-01-trellis</guid><pubDate>Wed, 01 Apr 2026 17:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Instagram is a photo grid owned by a company that would prefer you never leave. It used to be kind of nice.&lt;/p&gt;
&lt;p&gt;So I made my own version. It lives at &lt;a href=&quot;https://myles.garden/trellis&quot;&gt;myles.garden/trellis&lt;/a&gt; and it’s just photos, in a grid, on a website I own.&lt;/p&gt;</content:encoded><category>Colophon</category><category>Trellis</category><category>1RG&apos;s Side Project Social</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-03-30-drawing-of-1rg</link><guid isPermaLink="true">https://myles.garden/windfall/2026-03-30-drawing-of-1rg</guid><pubDate>Tue, 31 Mar 2026 03:13:33 GMT</pubDate><content:encoded>&lt;p&gt;Line drawing of &lt;a href=&quot;https://1rg.space/&quot;&gt;1RG&lt;/a&gt;’s street view.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/street-view-of-1rg.8AncXiTm.png&quot; alt=&quot;Line drawing of the street view of 1RG. Brick upper floor, bay window, large grid windows, and a side door marked 2557.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>1RG</category><category>1RG (Place)</category><category>Drawing</category><author>myles</author></item><item><title>Bookmarked Thoughts on slowing the fuck down by Mario Zechner.</title><link>https://myles.garden/windfall/2026-03-25-slowing-the-fuck-down</link><guid isPermaLink="true">https://myles.garden/windfall/2026-03-25-slowing-the-fuck-down</guid><pubDate>Wed, 25 Mar 2026 17:27:52 GMT</pubDate><content:encoded>&lt;p&gt;Mario Zechner writes about the current usage of LLM coding agents in software development and &lt;a href=&quot;https://mariozechner.at/posts/2026-03-25-thoughts-on-slowing-the-fuck-down/&quot;&gt;how we just need to slow down our release cycles&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You have zero fucking idea what’s going on because you delegated all your agency to your agents. You let them run free, and they are merchants of complexity. They have seen many bad architectural decisions in their training data and throughout their RL training. You have told them to architect your application. Guess what the result is?&lt;/p&gt;
&lt;p&gt;An immense amount of complexity, an amalgam of terrible cargo cult “industry best practices”, that you didn’t rein in before it was too late. But it’s worse than that.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>LLMs</category><category>Mario Zechner</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-03-21-this-is-my-jam</link><guid isPermaLink="true">https://myles.garden/windfall/2026-03-21-this-is-my-jam</guid><pubDate>Sat, 21 Mar 2026 19:45:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://web.archive.org/web/20210926084455/https://www.thisismyjam.com/&quot;&gt;This Is My Jam&lt;/a&gt; was a music sharing site that let you declare one song your jam at a time. It shut down in 2015 and I still think about it.&lt;/p&gt;
&lt;p&gt;So I made my own version. It lives at &lt;a href=&quot;https://myles.garden/this-is-my-jam&quot;&gt;myles.garden/this-is-my-jam&lt;/a&gt; and will be updated whenever the mood strikes.&lt;/p&gt;</content:encoded><category>Colophon</category><category>This is [Myles&apos;] Jam</category><category>1RG&apos;s Side Project Social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-03-15-tulips</link><guid isPermaLink="true">https://myles.garden/windfall/2026-03-15-tulips</guid><pubDate>Sun, 15 Mar 2026 19:08:55 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/tulips.XZozs5te.jpg&quot; alt=&quot;A bouquet of tulips in a glass vase on a windowsill, lit by soft natural light. The arrangement mixes deep purple, pale pink, and white fringed tulips with tall green stems and leaves. Other houseplants are visible on the windowsill behind them, and bare tree branches show through the window in the background.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Home</category><category>Flowers</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-03-09-street-art</link><guid isPermaLink="true">https://myles.garden/windfall/2026-03-09-street-art</guid><pubDate>Mon, 09 Mar 2026 16:34:27 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/street-art.BHG-oTdv.jpg&quot; alt=&quot;A street art mural on a yellow brick wall at night. A woman with long auburn hair and lavender skin holds two large yellow flowers with eyes at their centres. A pentagram marks her forehead; green vines frame the scene.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Graffiti Alley</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-02-27-late-night-walk</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-27-late-night-walk</guid><pubDate>Sat, 28 Feb 2026 02:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Took a walk through the neighbourhood after dark.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/01-happy-face.LeYnJBG6.jpg&quot; alt=&quot;A smiley face drawn in snow on a park ground at night, lit by warm amber streetlight. The photographer&apos;s shadow stretches into the foreground.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/02-bridge.CTJgvIyK.jpg&quot; alt=&quot;A pedestrian bridge at night, its concrete barriers covered in colourful graffiti, stretching toward a distant city skyline lit with signs and streetlights.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/03-old-hacklab.uh7zjv7F.jpg&quot; alt=&quot;A quiet city intersection at night. A construction hoarding reads &amp;quot;Mitchell Demolition&amp;quot; along a fenced-off empty lot, with condos glowing in the background.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-02-26-drive-slow-cat-at-play</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-26-drive-slow-cat-at-play</guid><pubDate>Thu, 26 Feb 2026 15:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/cat-at-play.BODAEeYI.jpg&quot; alt=&quot;A yellow diamond-shaped caution sign reading &amp;quot;Drive Slow — Cat at Play&amp;quot; with a silhouette of a cat batting at butterflies, attached to a street pole alongside parking signs. Snow dusts the sidewalk in the background.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-02-25-whistler</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-25-whistler</guid><pubDate>Wed, 25 Feb 2026 17:12:34 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/01-hayden.C2nYMv3t.jpg&quot; alt=&quot;Hayden in ski gear — white helmet, red-lens goggles, and a black neck gaiter — at the base of a ski resort on an overcast, snowy day. Other skiers and a lodge building are visible in the background.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/02-whistler.C1zE-8bR.jpg&quot; alt=&quot;A sweeping view from high on Whistler Mountain looking down over snow-laden pine trees and ski runs into the valley below, with Whistler village visible in the distance under a partly cloudy blue sky.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/03-whistler.D1DegrnZ.jpg&quot; alt=&quot;Looking down a wide mountain valley from a gondola, with snow-covered trees blanketing both hillsides, a ski run cutting a straight line through the centre, and the Whistler valley floor visible far below.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/04-whistler.CWA69HRh.jpg&quot; alt=&quot;High alpine terrain at Whistler with dramatic storm clouds rolling over steep, snow-covered peaks. Rocky outcroppings are buried under deep snow in the foreground, and a blue trail marker is barely visible at the left edge.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/05-whistler.CB4yx46R.jpg&quot; alt=&quot;A blue diamond ski trail marker on a red and white pole stands on a snowy alpine ridge at Whistler, with wind-sculpted snowdrifts over rocks in the foreground and overcast mountain peaks stretching into the distance.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/06-whistler.ff9ourkr.jpg&quot; alt=&quot;View looking straight down from a gondola over a dense, snow-covered forest. The gondola cables extend ahead into misty fog, with a faint sun barely visible through the white-grey sky above.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/07-whistler.BZ0akFM4.jpg&quot; alt=&quot;Looking out from a high ridge on Blackcomb Mountain over a frozen lake nestled in the valley far below, surrounded by dark forested peaks under a heavy overcast sky. Ski runs and scattered pines dot the slope in the foreground.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/08-whistler.D6BuO6nW.jpg&quot; alt=&quot;A long, narrow lake — Green Lake — winds through the valley below, framed by snow-covered slopes, scattered pines, and trail markers. Moody grey clouds drape over the mountain ridgeline in the background.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Whistler</category><category>Photo Dump</category><author>myles</author></item><item><title>Bookmarked Ontario&apos;s ICON Computer by Jacob Filipp.</title><link>https://myles.garden/windfall/2026-02-25-ontarios-icon-computer</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-25-ontarios-icon-computer</guid><pubDate>Wed, 25 Feb 2026 17:10:42 GMT</pubDate><content:encoded>&lt;p&gt;Jacob Filipp writes about a moment in the 1980s when the Ontario Ministry of Education commissioned a computer designed specifically for students.&lt;/p&gt;
&lt;p&gt;A time when public institutions believed they could build their own tools, and did.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1984 was an alternative reality where we could do things. Like &lt;em&gt;build a computer in Ontario&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><author>myles</author></item><item><title>Bookmarked Ladybird adopts Rust, with help from AI by Andreas Kling for Ladybird.</title><link>https://myles.garden/windfall/2026-02-23-ladybird-adpotion-of-rust-with-help-from-ai</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-23-ladybird-adpotion-of-rust-with-help-from-ai</guid><pubDate>Mon, 23 Feb 2026 17:25:08 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://ladybird.org&quot;&gt;Ladybird&lt;/a&gt; (a new web browser), recently &lt;a href=&quot;https://ladybird.org/posts/adopting-rust/&quot;&gt;migrated part of their code base to a new programming language&lt;/a&gt; with the help of Claude Code and Codex (OpenAI’s code model). I thought this idea of human-directed LLM tasks is really great:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I used Claude Code and Codex for the translation. This was human-directed, not autonomous code generation. I decided what to port, in what order, and what the Rust code should look like. It was hundreds of small prompts, steering the agents where things needed to go. After the initial translation, I ran multiple passes of adversarial review, asking different models to analyze the code for mistakes and bad patterns.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Rust</category><category>LLMs</category><category>Software Engineering</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-02-15-flight-to-vancouver</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-15-flight-to-vancouver</guid><pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/01-mountains.5QgvWTUZ.jpg&quot; alt=&quot;Aerial view of snow-covered mountain ranges stretching to the horizon under a deep blue sky, with a jet engine visible in the lower right corner and patches of cloud drifting between the peaks.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/02-mountains.D9w0BZ5k.jpg&quot; alt=&quot;Snow-dusted mountain ranges seen through an airplane window, with dark evergreen forest visible in the valleys below and billowing white clouds nestled between the ridgelines.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/03-mountains.cfKZPNak.jpg&quot; alt=&quot;A jagged cluster of snow-capped peaks framed by an airplane window, with a river valley and dense forest cutting through the lower terrain and the engine nacelle visible at the right edge of the frame.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>British Columbia</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-02-14-lumiere-at-trillium-park</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-14-lumiere-at-trillium-park</guid><pubDate>Sun, 15 Feb 2026 01:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://ontarioplace.com/en/special_programs/lumiere/&quot;&gt;Lumière&lt;/a&gt; is back at Trillium Park.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/lumiere-colourful-plastic.CXuJlW7G.jpg&quot; alt=&quot;A canopy of vertical, translucent plastic light strips in vivid rainbow colours glows overhead at night, suspended from a black metal frame above snow and wet pavement in Trillium Park.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/lumiere-bright-lights.CQne3Mcw.jpg&quot; alt=&quot;Snow-covered trees and a curving asphalt path frame an installation of bright golden lights below, casting a warm glow across Trillium Park on a winter night.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Trillium Park</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-02-09-snow</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-09-snow</guid><pubDate>Mon, 09 Feb 2026 14:29:23 GMT</pubDate><content:encoded>&lt;p&gt;A quiet, snowy winter weekend at the farm.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00001.CreUJaYK.jpg&quot; alt=&quot;View from inside a car driving down a snow-covered rural road, with low visibility, falling snow, and bare trees lining both sides.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00002.Bc1pzhBH.jpg&quot; alt=&quot;A wide snow-covered field during active snowfall, with bare trees scattered across the landscape and a narrow footpath cut through deep snow.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00003.uMO7yEgs.jpg&quot; alt=&quot;The side of a brick farmhouse during heavy snowfall, with a shoveled path along the wall and deep snowdrifts stretching into an open field.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00004.DUQ46Ydw.jpg&quot; alt=&quot;A quiet winter landscape with rolling snow-covered fields, leafless shrubs in the foreground, and patches of blue sky breaking through clouds.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00005.DAhLeloM.jpg&quot; alt=&quot;A vast snow-covered field at dusk, with a dark tree line on the horizon and a thin band of orange and pink light beneath a deep blue sky.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00006.rlcZYsfK.jpg&quot; alt=&quot;A dark night sky with faint stars visible, framed by the bare branches of trees reaching in from the edges.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00007.DM9WBpQR.jpg&quot; alt=&quot;View from a covered porch overlooking a snow-covered field, with decorative trim framing a glowing sunrise behind a line of trees.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00008.333uL74Y.jpg&quot; alt=&quot;A cozy living room with leather armchairs, sheer curtains, wooden floors, and warm sunlight streaming through windows on a winter day.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00009.DgtDBenR.jpg&quot; alt=&quot;A modern pergola and patio buried under deep snow, casting striped shadows across the ground under a bright blue winter sky.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snow-00010.DHHfuWBB.jpg&quot; alt=&quot;A bright winter scene with fresh snow on the ground, tall evergreen and birch trees, and crisp shadows under clear blue skies.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Photo Dump</category><category>Family Farm</category><author>myles</author></item><item><title>Bookmarked watercolors by Bruce MacEvoy.</title><link>https://myles.garden/windfall/2026-02-04-water-colour</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-04-water-colour</guid><pubDate>Wed, 04 Feb 2026 16:55:52 GMT</pubDate><content:encoded>&lt;p&gt;Bruce MacEvoy, has an awesome website &lt;a href=&quot;https://www.handprint.com/HP/WCL/water.html&quot;&gt;for water colour painters&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Bruce MacEvoy</category><category>That&apos;s a website</category><author>myles</author></item><item><title>Bookmarked The Everdeck: A Universal Card System for The Wrong Tools.</title><link>https://myles.garden/windfall/2026-02-03-everdeck</link><guid isPermaLink="true">https://myles.garden/windfall/2026-02-03-everdeck</guid><pubDate>Tue, 03 Feb 2026 20:46:23 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://thewrongtools.wordpress.com/2019/10/10/the-everdeck/&quot;&gt;The Everdeck&lt;/a&gt; is a versatile 120-card system designed to support a wide range of traditional and modern card games. Its design weaves together mathematical and linguistic patterns, allowing it to map cleanly onto many existing systems, standard decks, Tarot, Hanafuda, and more, which makes it especially interesting as a piece of universal game infrastructure.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2026-01-31-cairn</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-31-cairn</guid><pubDate>Sat, 31 Jan 2026 22:25:00 GMT</pubDate><content:encoded>&lt;p&gt;Started playing &lt;a href=&quot;https://www.thegamebakers.com/cairn/&quot;&gt;Cairn&lt;/a&gt; on my Steamdeck, such an amazing game.&lt;/p&gt;</content:encoded><category>Video Games</category><category>Cairn</category><author>myles</author></item><item><title>Bookmarked Sophie Calle: Suite Vénitienne by Harriet Baker for AnOther.</title><link>https://myles.garden/windfall/2026-01-29-sophie-calle-suite-venitienne</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-29-sophie-calle-suite-venitienne</guid><pubDate>Thu, 29 Jan 2026 15:40:53 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Harriet Baker&lt;/em&gt; reviews Sophie Calle’s first book &lt;strong&gt;Suite Venitienne&lt;/strong&gt;, which documents her pursuit of one man through the streets of Venice.&lt;/p&gt;</content:encoded><category>Harriet Baker</category><category>Sophie Calle: Suite Vénitienne</category><category>Photography</category><author>myles</author></item><item><title>Bookmarked The Science of Life and Death in Mary Shelley’s Frankenstein by Sharon Ruston for The Public Domain Review.</title><link>https://myles.garden/windfall/2026-01-22-the-science-of-life-and-death-in-mary-shelleys-frankenstein</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-22-the-science-of-life-and-death-in-mary-shelleys-frankenstein</guid><pubDate>Thu, 22 Jan 2026 19:53:04 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://publicdomainreview.org/essay/the-science-of-life-and-death-in-mary-shelleys-frankenstein/&quot;&gt;Sharon Ruston surveys the scientific background to Frankenstein&lt;/a&gt;, grounding its horror in real debates about resuscitation, galvanism, and ambiguous states between life and death.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>The Stuff That Stuck in 2025</title><link>https://myles.garden/windfall/2026-01-13-the-stuff-that-stuck-in-2025</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-13-the-stuff-that-stuck-in-2025</guid><description>Not a definitive list, just the books and movies that followed me out of the room in 2025.</description><pubDate>Tue, 13 Jan 2026 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In 2025 I tried to watch and read less US media. This isn’t a definitive list, just the books and movies that followed me out of the room.&lt;/p&gt;
&lt;h2&gt;Books&lt;/h2&gt;

&lt;p&gt;I read a lot of quiet, plot-light fiction this year. Books that care more about mood, memory, and voice than big events.&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9780300278194&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=https%3A%2F%2Fuploads.myles.garden%2Farcana%2Fcovers%2Fbooks%2Fballerina-patrick-modiano.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Ballerina by Patrick Modiano&quot; width=&quot;256&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9780300278194&quot;&gt;Ballerina&lt;/a&gt; by Patrick Modiano&lt;/h3&gt;&lt;p&gt;Set in 1960s Paris, &lt;em&gt;Ballerina&lt;/em&gt; follows a single mother’s troubled relationship with her young son, and her enigmatic involvement with the narrator.&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781681378725&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2F9781681378725.Cadk1K32.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Perfection by Vincenzo Latronico&quot; width=&quot;256&quot; height=&quot;379&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;p&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781681378725&quot;&gt;Perfection&lt;/a&gt; by Vincenzo
Latronico&lt;/p&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;An Italian expat couple in Berlin: freelancers with few constraints, tending
houseplants and curating a life online while the city hums around them.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781635423853&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=https%3A%2F%2Fuploads.myles.garden%2Farcana%2Fcovers%2Fbooks%2Fim-a-fool-for-loving-you.tiff&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;I&apos;m a Fool for Loving You by Camila Sosa Villada&quot; width=&quot;256&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;p&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781635423853&quot;&gt;I’m a Fool for Loving You&lt;/a&gt; by
Camila Sosa Villada&lt;/p&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Nine short stories about desire, danger, tenderness, and survival—sharp,
funny, and devastating.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781534323865&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2F9781534323865.CrgBw943.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;It&apos;s Lonely at the Centre of the Earth by Zoe Thorogood&quot; width=&quot;256&quot; height=&quot;394&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781534323865&quot;&gt;&lt;p&gt;It’s Lonely at the Centre of the Earth&lt;/p&gt;&lt;/a&gt; &lt;p&gt;by Zoe Thorogood&lt;/p&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;A brutally honest (and often darkly funny) graphic memoir about living with
bipolar disorder and trying to keep making things anyway.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781770467903&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2F9781770467903.yc-Mf9Fh.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Land of Mirrors by María Medem&quot; width=&quot;256&quot; height=&quot;360&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/bookshelf/books/9781770467903&quot;&gt;Land of Mirrors&lt;/a&gt; by María Medem&lt;/h3&gt;&lt;p&gt;A stunning, dreamlike graphic novel—mythic and intimate at the same time, with art that feels like it’s humming.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2&gt;Movies&lt;/h2&gt;

&lt;p&gt;I watched fewer &lt;em&gt;big&lt;/em&gt; movies and more films that feel like postcards: compact, precise, and a little haunted. The ones below are mostly about image and rhythm.&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/can-i-get-a-witness&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fcan-i-get-a-witness.D2vdSmCY.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Can I Get a Witness?&quot; width=&quot;256&quot; height=&quot;380&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/can-i-get-a-witness&quot;&gt;Can I Get a Witness?&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A near-future moral fable with a quiet dread running under everything. It’s the kind of film where the premise is simple and the aftertaste is not.&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/la-jetee&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fla-jetee.CjruuHgB.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;La Jetée&quot; width=&quot;256&quot; height=&quot;384&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/la-jetee&quot;&gt;La Jetée&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;A whole science-fiction epic told in still images. Time travel as memory,
obsession, and inevitability. Short, perfect, and strangely emotional.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/la-tortue-rouge&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fla-tortue-rouge.kMvc1Abw.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;The Red Turtle&quot; width=&quot;256&quot; height=&quot;384&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/la-tortue-rouge&quot;&gt;The Red Turtle&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Nearly wordless, completely gorgeous. A story about solitude, companionship,
and the long shape of a life, told with ocean rhythm.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/mars-express&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fmars-express.B5uonIhT.jpg&amp;amp;w=640&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Mars Express&quot; width=&quot;256&quot; height=&quot;384&quot; /&gt; &lt;/a&gt;&lt;div&gt;&lt;h3&gt;&lt;a href=&quot;https://myles.garden/reelbook/films/mars-express&quot;&gt;Mars Express&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A sleek, French cyberpunk noir: a PI and her android partner chasing a missing person case that keeps widening into something systemic.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Annual Epilogue</category><category>Ballerina by Patrick Modiano</category><category>I&apos;m a Fool for Loving You by Camila Sosa Villada</category><category>It&apos;s Lonely at the Centre of the Earth by Zoe Thorogood</category><category>Land of Mirrors by María Medem</category><category>Perfection by Vincenzo Latronico</category><category>Can I Get a Witness</category><category>The Red Turtle</category><category>La Jetée</category><category>Mars Express</category><author>myles</author></item><item><title>Bookmarked I wanted a camera that doesn’t exist — so I built it by Cristian Băluță.</title><link>https://myles.garden/windfall/2026-01-07-transformer-panasoonic-lumix-g9ii-into-leica-m-style</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-07-transformer-panasoonic-lumix-g9ii-into-leica-m-style</guid><pubDate>Wed, 07 Jan 2026 18:23:50 GMT</pubDate><content:encoded>&lt;p&gt;Cristian Băluță writes about &lt;a href=&quot;https://medium.com/@cristi.baluta/i-wanted-a-camera-that-doesnt-exist-so-i-built-it-5f9864533eb7&quot;&gt;he moded a Panasonic Lumix G9II into a Leica M-Style camera&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Cristian Băluță</category><category>Photography</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2026-01-04-coronation-park</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-04-coronation-park</guid><pubDate>Mon, 05 Jan 2026 01:14:12 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/coronation-park.iTcTMs5e.jpg&quot; alt=&quot;Nighttime view over dark water filled with broken sheets of floating ice, seen from behind a pale blue metal railing; distant red harbor lights glow under a low, stormy sky.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Coronation Park</category><author>myles</author></item><item><title>Bookmarked A website to destroy all websites. by Henry Desroches for Henry from Online.</title><link>https://myles.garden/windfall/2026-01-02-a-website-to-destroy-all-websites</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-02-a-website-to-destroy-all-websites</guid><pubDate>Fri, 02 Jan 2026 17:30:29 GMT</pubDate><content:encoded>&lt;p&gt;Henry Desroches makes a thoughtful case for &lt;a href=&quot;https://henry.codes/writing/a-website-to-destroy-all-websites/&quot;&gt;reclaiming the Web we actually want&lt;/a&gt; by embracing personal, hand-coded, syndicated websites and protocols like RSS &amp;amp; Webmentions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hand-coded, syndicated, and above all personal websites are exemplary: They let users of the internet to be autonomous, experiment, have ownership, learn, share, find god, find love, find purpose. Bespoke, endlessly tweaked, eternally redesigned, built-in-public, surprising UI and delightful UX. The personal website is a staunch undying answer to everything the corporate and industrial web has taken from us.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Henry Desroches</category><category>IndieWeb</category><author>myles</author></item><item><title>Annual Prologue: 2026</title><link>https://myles.garden/windfall/2026-01-01-annual-prologue</link><guid isPermaLink="true">https://myles.garden/windfall/2026-01-01-annual-prologue</guid><pubDate>Thu, 01 Jan 2026 14:12:08 GMT</pubDate><content:encoded>&lt;p&gt;There’s a tab open on my laptop that’s been there for three weeks. A half-finished drawing, a reference image, a colour picker frozen mid-decision. I haven’t closed it. I think that means something.&lt;/p&gt;
&lt;p&gt;2025 was hard. Like, genuinely hard in ways I’m not going to get into here, it was the kind of year that takes a lot out of you and doesn’t really ask permission before doing it. I made it through, which sounds dramatic but also just feels true. I’m not dwelling, I just want to be honest that I’m starting this year from a different place than I expected to be.&lt;/p&gt;
&lt;p&gt;Okay. Moving on.&lt;/p&gt;
&lt;p&gt;The question I keep coming back to for 2026 is simpler than the ones I usually ask myself, not &lt;em&gt;what will I finish&lt;/em&gt; or &lt;em&gt;what will I ship&lt;/em&gt;, just: &lt;em&gt;what do I want to make?&lt;/em&gt; Not for anyone in particular, not toward anything specific, just for the thing itself.&lt;/p&gt;
&lt;p&gt;There’s a tarot deck that’s been living in my head for too long, there are photographs I keep meaning to actually sit with instead of just archiving, there’s a drawing practice I keep treating like a warmup for something more serious when maybe the drawing is just the thing and I should stop waiting for the serious thing to show up. And then there’s a whole other thing I’m building on the side, something that grew out of an obsession and turned into a project without me totally noticing, which is maybe the best way for something to start. None of these have deadlines. None of them need to become anything. I want to find out what they are by actually making them instead of thinking about making them, which is a trap I fall into constantly and am trying very hard to stop doing.&lt;/p&gt;
&lt;p&gt;That’s what I’m bringing into this year. Just the intention to keep going, keep the tabs open, see what accumulates.&lt;/p&gt;
&lt;p&gt;The drawing still isn’t finished. I’ll probably look at it tonight.&lt;/p&gt;</content:encoded><category>Annual Prologue</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-12-31-trinity-bellwoods-park</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-31-trinity-bellwoods-park</guid><pubDate>Wed, 31 Dec 2025 17:30:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/trinity-bellwoods-park.3PZWlxG2.jpg&quot; alt=&quot;Night view over a frozen, glossy pond in a snowy park, with bare trees silhouetted against a cloudy sky and a line of lampposts lighting the path and a small wooden platform on the ice.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Trinity Bellwoods Park</category><author>myles</author></item><item><title>Bookmarked Using LLMs at Oxide by Bryan Cantrill.</title><link>https://myles.garden/windfall/2025-12-29-oxide-and-llms</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-29-oxide-and-llms</guid><pubDate>Mon, 29 Dec 2025 21:26:42 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Bryan Cantrill&lt;/strong&gt; shares Oxide’s internal guidance on the use of LLMs in &lt;a href=&quot;https://rfd.shared.oxide.computer/rfd/0576&quot;&gt;RFD 576&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Empathy&lt;/strong&gt;: Be we readers or writers, there are humans on the other end of our language use. As we use LLMs, we must keep in mind our empathy for that human, be they the one who is consuming our writing, or the one who has written what we are reading.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Bryan Cantrill</category><category>Oxide</category><category>LLMs</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-12-26-boxing-day-walk</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-26-boxing-day-walk</guid><pubDate>Fri, 26 Dec 2025 19:45:59 GMT</pubDate><content:encoded>&lt;p&gt;Went for a long walk during a winter snowstorm on Boxing Day.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1141.DXhX62u8.jpg&quot; alt=&quot;Snow-covered park path lined with bare trees and a black iron fence, footprints fading into blowing snow.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1143.DjZioH65.jpg&quot; alt=&quot;A snowy sidewalk at Bandshell Park with rows of Canadian flags whipping in the wind under dark grey clouds.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1145.D-nFVHib.jpg&quot; alt=&quot;A wooden walkway fenced with chain-link leading straight out toward the lake beneath an overcast sky.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1147.Cr3hlOL_.jpg&quot; alt=&quot;A windblown, snow-dusted sidewalk beside a long mural-covered construction fence, with high-rises fading into the distance.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1148.DyKlzxfx.jpg&quot; alt=&quot;A snowy waterfront ramp with metal railings descending to choppy water, the skyline barely visible through snowfall.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1149.DKUwEamm.jpg&quot; alt=&quot;Snow-covered rocks and a bench beside the lake, with a large bare tree and a red lifebuoy ring near the shore.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1150.C1hWv-9F.jpg&quot; alt=&quot;A curving lakeside path with a bench and trash can, thin snow skittering across the pavement.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1151.Czr_99_r.jpg&quot; alt=&quot;Dark green lake waves rolling in a snowstorm, viewed from a rocky, snow-covered shoreline.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1152.BFHi1yjq.jpg&quot; alt=&quot;Pebble shoreline and concrete blocks at the water’s edge, rough lake water and falling snow stretching into a grey horizon.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boxing-day-walk-1154.CtdyrTBo.jpg&quot; alt=&quot;A long, snow-covered shoreline path lined with bare trees and benches, with a metal railing beside the choppy lake.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2025-12-20-charli-xcx-comment-on-john-cale-instagram</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-20-charli-xcx-comment-on-john-cale-instagram</guid><pubDate>Sat, 20 Dec 2025 20:57:46 GMT</pubDate><content:encoded>&lt;p&gt;Charli XCX commenting on John Cale’s Instagram post, &lt;em&gt;“defo text me any time!”&lt;/em&gt;.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/john-cale-instagram-post.DB9_R6Il.jpg&quot; alt=&quot;Screenshot of John Cale’s Instagram: photo of John Cale with Charli XCX. Caption: ‘Can I speak to you privately for a moment?’ Charli replies: ‘defo text me any time!’&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Charli XCX</category><category>John Cale</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-12-19-flowers</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-19-flowers</guid><pubDate>Fri, 19 Dec 2025 19:13:24 GMT</pubDate><content:encoded>&lt;p&gt;Playing around with &lt;a href=&quot;https://mood.camera&quot;&gt;mood.camera&lt;/a&gt;, an iOS camera app that aims to emulate film photography. Really enjoying how it renders indoor light.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/flowers.Bkpb4uEG.jpg&quot; alt=&quot;A bouquet of pale roses and white chrysanthemum-like blooms in a glass vase, shot indoors with a soft film-like grain.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Home</category><category>mood.camera</category><category>Flowers</category><category>Still Life</category><author>myles</author></item><item><title>Bookmarked I&apos;m Kenyan. I Don&apos;t Write Like ChatGPT. ChatGPT Writes Like Me. by Marcus Olang&apos; for this man&apos;s mind.</title><link>https://myles.garden/windfall/2025-12-15-i-dont-write-like-chatgpt-chatgpt-writes-like-me</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-15-i-dont-write-like-chatgpt-chatgpt-writes-like-me</guid><pubDate>Mon, 15 Dec 2025 18:03:34 GMT</pubDate><content:encoded>&lt;p&gt;Marcus Olang’ &lt;a href=&quot;https://marcusolang.substack.com/p/im-kenyan-i-dont-write-like-chatgpt&quot;&gt;reflects on being told his writing sounds like ChatGPT&lt;/a&gt;. As a Kenyan, he reframes the comparison: ChatGPT writes like him and like many others shaped by the same educational system.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I am a writer. A writer who also happens to be Kenyan. And I have come to this thesis statement: I don’t write like ChatGPT. ChatGPT, in its strange, disembodied, globally-sourced way, writes like me. Or, more accurately, it writes like the millions of us who were pushed through a very particular educational and societal pipeline, a pipeline deliberately designed to sandpaper away ambiguity, and forge our thoughts into a very specific, very formal, and very impressive shape.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Marcus Olang&apos;</category><category>ChatGPT</category><category>LLMs</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-12-13-stormy-night-at-trillium-park</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-13-stormy-night-at-trillium-park</guid><pubDate>Sun, 14 Dec 2025 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The lake was almost the same colour as the sky, separated only by a thin, pale horizon. Wind came in hard from the water and the waves kept breaking against the rocks in short, restless bursts. Everything felt flattened, quiet, and heavy, like the city was holding its breath.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/stormy-night-at-trillium-park.FhXHGPbu.jpg&quot; alt=&quot;Dark, stormy view of Lake Ontario at night from a rocky shoreline, with small waves crashing against the rocks in the foreground and a low, grey horizon blending into a cloudy sky.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Trillium Park</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2025-12-03-spotify-wrapped</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-03-spotify-wrapped</guid><pubDate>Wed, 03 Dec 2025 16:07:12 GMT</pubDate><content:encoded>&lt;p&gt;My &lt;a href=&quot;https://spotify.com/wrapped&quot;&gt;Spotify Wrapped&lt;/a&gt; for 2025.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/01-minutes-listened.iT9vKkPu.jpg&quot; alt=&quot;Spotify Wrapped card showing I listened for 19,049 minutes in 2025, equal to 13 days.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/02-top-genres.DtUn65ii.jpg&quot; alt=&quot;Spotify Wrapped card listing my top genres: Indie Pop, Freak Folk, Art Pop, Indie Punk, and Folk Punk.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/03-listening-age.CpyGrokU.jpg&quot; alt=&quot;Spotify Wrapped card showing my ‘listening age’ as 25, based on listening to music from the late 2010s.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/04-top-song.nin88RwL.jpg&quot; alt=&quot;Spotify Wrapped card showing my top song, ‘Lover’s Spit’ by Broken Social Scene, with 22 streams.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/05-top-songs.JSynq06M.jpg&quot; alt=&quot;Spotify Wrapped card showing my top five songs: ‘Lover’s Spit’ by Broken Social Scene; ‘Archie, Marry Me’ by Alvvays; ‘Ode to a Conversation…’ by Del Water Gap; ‘Sexy to Someone’ by Clairo; and ‘Don’t Delete The Kisses’ by Wolf Alice.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/06-top-album.9rSJrPNv.jpg&quot; alt=&quot;Spotify Wrapped card showing my top album, TANGK by IDLES, with 223 minutes listened.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/07-top-albums.CS5kILrL.jpg&quot; alt=&quot;Spotify Wrapped card listing my top albums: TANGK by IDLES; Could Have Done Anything by Charlotte Cornfield; Five Years of Brutalism by IDLES; What’s Another Night? by Apes of the State; and flounder by quinnie.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/08-top-artist.BN5f-otd.jpg&quot; alt=&quot;Spotify Wrapped card showing my top artist, IDLES, with 534 minutes listened and a Top 2% global fan badge.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/09-top-artists.VElg4CbC.jpg&quot; alt=&quot;Spotify Wrapped card showing my top five artists: IDLES, Charlotte Cornfield, Taylor Swift, Lucy Dacus, and Suki Waterhouse.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/10-role.C5xp-z2h.jpg&quot; alt=&quot;Spotify Wrapped card showing my listening role, ‘Collector,’ with an illustration of a meditating flower character.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/11-repeat-heavy-day.kc6qJnhw.jpg&quot; alt=&quot;Spotify Wrapped card for March 18, 2025, labeled Repeat-Heavy Day. Highlights that I listened mostly to Madelline tracks like ‘dopamine,’ ‘Participation Trophies,’ and ‘training wheels,’ with indie folk and pop later in the day. Shows 221 minutes, 69 plays, and 38 artists.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/12-most-diverse-day.Cn3v-vHM.jpg&quot; alt=&quot;Spotify Wrapped card for April 24, 2025, labeled Most Diverse Day. Summarizes listening across 57 tracks and 64 artists—ranging from Edward Sharpe to The Magnetic Fields and Suki Waterhouse—with genres including folk, electropop, bossa nova, and riot grrrl. Total 198 minutes.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/13-biggest-idles-day.AQ6HsRkf.jpg&quot; alt=&quot;Spotify Wrapped card for July 18, 2025, labeled Biggest IDLES Day. Describes a day dominated by IDLES songs like ‘POP POP POP,’ ‘Roy,’ and ‘Gift Horse,’ including live Glastonbury recordings. Shows 196 minutes, 54 tracks, and 3 artists.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/14-birthday.CsJTJKsR.jpg&quot; alt=&quot;Spotify Wrapped card for September 19, 2025, labeled Birthday. Describes a punk-pop heavy day featuring IDLES, DITZ, Warmduscher, Lola Young, Your Smith, and DEADLETTER. Shows 257 minutes, 80 tracks, and 25 artists.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/15-biggest-music-listening-day.CK_v9DfI.jpg&quot; alt=&quot;Spotify Wrapped card for October 31, 2025, labeled Biggest Music Listening Day. Highlights a full-day indie pop marathon featuring bülow, Your Smith, and Jaira Burns. Shows 689 minutes, 216 tracks, and 90 artists.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Spotify</category><category>Annual Epilogue</category><author>myles</author></item><item><title>Bookmarked For Decades, Cartographers Have Been Hiding Covert Illustrations Inside of Switzerland’s Official Maps by Zoey Poll for Eye on Design.</title><link>https://myles.garden/windfall/2025-12-01-cartographers-hiding-covert-illustrations-inside-switzerlands-official-maps</link><guid isPermaLink="true">https://myles.garden/windfall/2025-12-01-cartographers-hiding-covert-illustrations-inside-switzerlands-official-maps</guid><pubDate>Mon, 01 Dec 2025 16:21:01 GMT</pubDate><content:encoded>&lt;p&gt;Swiss mapmakers have been &lt;a href=&quot;https://eyeondesign.aiga.org/for-decades-cartographers-have-been-hiding-covert-illustrations-inside-of-switzerlands-official-maps/&quot;&gt;quietly seeding their work with little doodles&lt;/a&gt;—marmots, spiders, even the occasional hidden hiker—inside official maps.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It also implies that the mapmaker has openly violated his commitment to accuracy, risking professional repercussions on account of an alpine rodent. No cartographer has been fired over these drawings, but then again, most were only discovered once their author had already left. (Many mapmakers timed the publication of their drawing to coincide with their retirement.) Over half of the known illustrations have been removed. The latest, the marmot drawing, was discovered by Swisstopo in 2016 and is likely to be eliminated from the next official map of Switzerland by next year. As the spokesperson for Swisstopo told me, “Creativity has no place on these maps.”&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Zoey Poll</category><category>Maps</category><author>myles</author></item><item><title>Bookmarked Fan Sans Essay by Emily Sneddon.</title><link>https://myles.garden/windfall/2025-11-25-fran-sans</link><guid isPermaLink="true">https://myles.garden/windfall/2025-11-25-fran-sans</guid><pubDate>Tue, 25 Nov 2025 16:16:10 GMT</pubDate><content:encoded>&lt;p&gt;Emily Sneddon on how she designed &lt;a href=&quot;https://emilysneddon.com/fran-sans-essay&quot;&gt;Fran Sans&lt;/a&gt;, a display font inspired by the destination displays on Muni’s Breda Light Rail Vehicles in San Francisco.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What caught my eye was how the displays look mechanical and yet distinctly personal. Constructed on a 3×5 grid, the characters are made up of geometric modules: squares, quarter-circles, and angled forms. Combined, these modules create imperfect, almost primitive letterforms, revealing a utility and charm that feels distinctly like the San Francisco I’ve come to know.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Emily Sneddon</category><category>Typography</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-11-24-dark</link><guid isPermaLink="true">https://myles.garden/windfall/2025-11-24-dark</guid><pubDate>Mon, 24 Nov 2025 22:25:39 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/dark-1rg.D4TW6Y89.jpg&quot; alt=&quot;A dimly lit interior of a modern coworking or living space with a warm, minimal aesthetic. A brick accent wall runs along the left side, with two metal-framed chairs and a small bench placed against it. In the center is a dining table surrounded by simple black chairs, partially tucked under the landing of a staircase with black railings. Light wood floors and a muted, patterned rug fill the foreground. The room feels quiet, spacious, and slightly shadowed, as if lit only by natural light on an overcast day.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>1RG (Place)</category><author>myles</author></item><item><title>Bookmarked A Home That Proves You Can Never Have Too Many Books by Alexa Brazilian for The New York Times Style Magazine.</title><link>https://myles.garden/windfall/2025-11-15-home-that-proves-you-can-never-have-enough-books</link><guid isPermaLink="true">https://myles.garden/windfall/2025-11-15-home-that-proves-you-can-never-have-enough-books</guid><pubDate>Sat, 15 Nov 2025 22:35:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://archive.is/rkU5j&quot;&gt;Peter-Ayers Tarantino’s Manhattan apartment&lt;/a&gt; is packed with books and artwork in every direction. It’s chaotic, layered, and unbelievably charming.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/sitting-room-01.BcQoOTsY.jpg&quot; alt=&quot;A richly layered sitting room lined floor-to-ceiling with bookshelves. A large gilded painting hangs over a white fireplace filled with logs, flanked by sconces and decorative ceramic figures. Stacks of books surround cream-coloured armchairs, a glass coffee table, and bowls of apples. The room feels warm, dense, and lived-in, with patterned rugs and abundant artwork.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/sitting-room-02.SEN17etw.jpg&quot; alt=&quot;A cozy sitting room with taupe wall panelling and shelves overflowing with books. A monumental religious painting in a gold frame dominates the wall above a black fireplace. Cream armchairs encircle a glass coffee table perched on stacks of books. More piles of books line the window and flank every seat, creating a snug, library-like atmosphere.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/bedroom-01.DkkjFv0T.jpg&quot; alt=&quot;A bedroom corner overflowing with tall stacks of books on the floor and used as nightstands. Built-in shelves behind the bed are packed with books, pottery, and framed art. A white bed with patterned pillows sits beside the vertical towers of books, alongside small objects like a lamp, flowers, and a vintage telephone.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/bedroom-02.DKoKu8Rn.jpg&quot; alt=&quot;Another view of the bedroom, showing a fireplace mantel crowded with decorative vases and fresh flowers, backed by a large mirror and framed art. Bookshelves overflow with books on either side, and more floor-to-ceiling stacks rest around a pair of upholstered chairs. The room feels maximalist, warm, and deeply curated.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><author>myles</author></item><item><title>Bookmarked everyone wants to be a DJ, no one wants to dance by Dani Offline for offline soul.</title><link>https://myles.garden/windfall/2025-11-12-everyone-wants-to-be-a-dj-no-one-wants-to-dance</link><guid isPermaLink="true">https://myles.garden/windfall/2025-11-12-everyone-wants-to-be-a-dj-no-one-wants-to-dance</guid><pubDate>Wed, 12 Nov 2025 14:49:56 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://danioffline.com/&quot;&gt;Dani Offline&lt;/a&gt; writes about how &lt;a href=&quot;https://danioffline.substack.com/p/everyone-wants-to-be-a-dj-no-one&quot;&gt;everyone wants to be a DJ, but no one wants to dance&lt;/a&gt;. She argues that the commodifiction of art has devalued the experience of enjoying art for its own sake.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I present this example to mark a paradox that troubles the title of this essay. Pure, anonymous participation in something strange and beautiful is often that which draws us to the center of it all. The best writers I know are devoted readers. The best musicians I know listen to music, constantly. Is it such a problem that everyone wants to be an artist these days?&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-11-09-snowfall</link><guid isPermaLink="true">https://myles.garden/windfall/2025-11-09-snowfall</guid><pubDate>Sun, 09 Nov 2025 19:30:00 GMT</pubDate><content:encoded>&lt;p&gt;First snowfall of the season.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/snowfall.BgVleo1E.jpg&quot; alt=&quot;Fresh snow in Trinity Bellwoods Park&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Trinity Bellwoods Park</category><author>myles</author></item><item><title>Bookmarked My Truck Desk by Bud Smith for The Paris Review.</title><link>https://myles.garden/windfall/2025-11-04-bud-smith-truck-desk</link><guid isPermaLink="true">https://myles.garden/windfall/2025-11-04-bud-smith-truck-desk</guid><pubDate>Tue, 04 Nov 2025 20:33:12 GMT</pubDate><content:encoded>&lt;p&gt;Bud Smith writing in The Paris Review about &lt;a href=&quot;https://www.theparisreview.org/blog/2025/10/29/truck-desk/&quot;&gt;his truck desk&lt;/a&gt;,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’d built a portable desk inside it. My truck desk, I called it. A couple of planks screwed together, our union sticker slapped on, the whole deal sealed with shellac. I’d built the desk so it slid into the bottom of the steering wheel and sat across the armrests. I used to hang back at the job and sneak in some creative work while the rest of the crew went to break. My desk—which I’d taken far too long to build and perfect through many prototypes—had been stowed behind the driver’s seat when the truck was hauled off by the wrecker.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There is something amazing about how Smith built a workspace from the world around him, writing squeezed between shifts.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>Bookmarked Your Guide to Reading Jane Austen Books in Order by Chase Anderson for alibris.</title><link>https://myles.garden/windfall/2025-10-30-jane-austen-reading-order</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-30-jane-austen-reading-order</guid><pubDate>Thu, 30 Oct 2025 15:23:28 GMT</pubDate><content:encoded>&lt;p&gt;Chase Anderson wrote a &lt;a href=&quot;https://www.alibris.com/blog/your-guide-to-reading-jane-austen-books-in-order/&quot;&gt;guide to reading Jane Austen books in order&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Reading</category><category>Jane Austen</category><category>Chase Anderson</category><author>myles</author></item><item><title>Bookmarked Code like a surgeon by Geoffrey Litt.</title><link>https://myles.garden/windfall/2025-10-24-code-like-a-surgeon</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-24-code-like-a-surgeon</guid><pubDate>Fri, 24 Oct 2025 15:37:48 GMT</pubDate><content:encoded>&lt;p&gt;Geoffrey Litt on how he uses LLMs to &lt;a href=&quot;https://www.geoffreylitt.com/2025/10/24/code-like-a-surgeon&quot;&gt;code like a surgeon&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A surgeon isn’t a manager, they do the actual work! But their skills and time are highly leveraged with a support team that handles prep, secondary tasks, admin. The surgeon focuses on the important stuff they are uniquely good at.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Software Engineering</category><category>LLMs</category><category>Geoffrey Litt</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-10-22-leica-lux</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-22-leica-lux</guid><pubDate>Wed, 22 Oct 2025 21:37:37 GMT</pubDate><content:encoded>&lt;p&gt;Was playing around with Leica’s &lt;a href=&quot;https://apps.apple.com/us/app/leica-lux-pro-manual-camera/id6477182657&quot;&gt;Pro Manual Camera iOS App&lt;/a&gt; today.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/upstairs-at-1rg.DMcHd7aq.jpg&quot; alt=&quot;Black and white photo of the upstairs of 1RG.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>1RG (Place)</category><author>myles</author></item><item><title>Bookmarked The Majority AI View by Anil Dash.</title><link>https://myles.garden/windfall/2025-10-20-the-majority-ai-view</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-20-the-majority-ai-view</guid><pubDate>Tue, 21 Oct 2025 02:27:05 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.anildash.com/2025/10/17/the-majority-ai-view/&quot;&gt;Anil Dash&lt;/a&gt; on most people in the tech industry, who actually build things, share the same feelings on AI:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Technologies like LLMs have utility, but the absurd way they’ve been over-hyped, the fact they’re being forced on everyone, and the insistence on ignoring the many valid critiques about them make it very difficult to focus on legitimate uses where they might add value.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>LLMs</category><category>Anil Dash</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-10-14-artistvictoriaday</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-14-artistvictoriaday</guid><pubDate>Tue, 14 Oct 2025 19:41:00 GMT</pubDate><content:encoded>&lt;p&gt;Awesome memorial by &lt;a href=&quot;http://www.artistvictoriaday.com/&quot;&gt;Victoria Day&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/memorial-by-victoria-day.DLhNXXd6.jpg&quot; alt=&quot;A bright, symmetrical mural painted on a brick wall, featuring a fan-like pattern of tall green columns decorated with colorful, floral designs and wave-like blue details. The background is split between deep blue and a vivid red circle in the top left, framed by dark red bricks. The geometric precision and bold palette give it a ceremonial, almost architectural feel.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Junction Triangle</category><category>Victoria Day</category><author>myles</author></item><item><title>Bookmarked It&apos;s Rude To Show AI Output To People by Alex Martsinovich.</title><link>https://myles.garden/windfall/2025-10-14-its-rude-to-show-ai-output-to-people</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-14-its-rude-to-show-ai-output-to-people</guid><pubDate>Tue, 14 Oct 2025 16:28:00 GMT</pubDate><content:encoded>&lt;p&gt;Alex Martsinovich on why &lt;a href=&quot;https://distantprovince.by/posts/its-rude-to-show-ai-output-to-people/&quot;&gt;it’s rude to show AI output to people&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For the longest time, writing was more expensive than reading. If you encountered a body of written text, you could be sure that at the very least, a human spent some time writing it down. The text used to have an innate proof-of-thought, a basic token of humanity.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>LLMs</category><category>Alex Martsinovich</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2025-10-10-society-of-brevity</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-10-society-of-brevity</guid><pubDate>Fri, 10 Oct 2025 22:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.societyofbrevity.com/&quot;&gt;The Society of Brevity&lt;/a&gt; is for those who believe most sentences can end sooner. We honor concision, condemn excess, and keep introductions short.&lt;/p&gt;</content:encoded><category>The Society of Brevity</category><category>Projects</category><author>myles</author></item><item><title>Bookmarked In Alberta, the Punks Are Taking Over by Liam Hodder for The Tyee.</title><link>https://myles.garden/windfall/2025-10-07-alberta-punks</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-07-alberta-punks</guid><pubDate>Tue, 07 Oct 2025 18:52:00 GMT</pubDate><content:encoded>&lt;p&gt;Liam Hodder writes about how the &lt;a href=&quot;https://thetyee.ca/Culture/2025/08/08/Alberta-Punks-Taking-Over/&quot;&gt;punk and hardcore community in Alberta are galvanizing against a common enemy, the United Conservative Party&lt;/a&gt;. A great read on how local music scenes double as political communities.&lt;/p&gt;</content:encoded><category>Culture</category><category>Liam Hodder</category><category>The Tyee</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-10-06-teddy-bear</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-06-teddy-bear</guid><pubDate>Mon, 06 Oct 2025 18:06:26 GMT</pubDate><content:encoded>&lt;p&gt;Someone left a small guardian in the garden.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/teddy-bear-shrubs.Dnl613Rl.jpg&quot; alt=&quot;A small teddy bear with a red ribbon is perched in the branches of a shrub, partly hidden among green leaves. Behind it, a quiet residential street lined with brick and cream-colored houses sits under a bright blue sky. The bear looks slightly weathered, as if it has been there for a while, creating a curious, almost whimsical scene.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Junction Triangle</category><author>myles</author></item><item><title>Bookmarked Blog Feeds.</title><link>https://myles.garden/windfall/2025-10-06-blogfeeds</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-06-blogfeeds</guid><pubDate>Mon, 06 Oct 2025 14:57:00 GMT</pubDate><content:encoded>&lt;p&gt;Steve Simkins built a site about how the answer to doomscrolling and disconnectedness is &lt;a href=&quot;https://blogfeeds.net&quot;&gt;Blog Feeds&lt;/a&gt;. It’s meant to be an antidote to endlessly scrolling, just a curated list of people you actually care about.&lt;/p&gt;</content:encoded><category>IndieWeb</category><category>Steve Simkins</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-10-05-lovebot</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-05-lovebot</guid><pubDate>Mon, 06 Oct 2025 02:40:33 GMT</pubDate><content:encoded>&lt;p&gt;Spotted a Lovebot stencil tucked along a brick wall tonight.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/lovebot-stencil.DoXxtUKR.jpg&quot; alt=&quot;A brick wall covered in layered street art and graffiti. At the center, a white stencil of a small robot with a heart-shaped chest — the Toronto Lovebot — stands out sharply against the bricks. Surrounding it are bold black, red, and white tags and murals, including part of a painted animal figure. A plastic bottle sits on a ledge beneath a small sign, giving the scene a mix of urban grit and character.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Stencil</category><category>Lovebot</category><category>Fashion District</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-10-05-st-andrews-park</link><guid isPermaLink="true">https://myles.garden/windfall/2025-10-05-st-andrews-park</guid><pubDate>Mon, 06 Oct 2025 01:08:49 GMT</pubDate><content:encoded>&lt;p&gt;Waiting for a friend at St. Andrew’s Playground Park.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/st-andrews-park-at-night.CyDZ6Z7W.jpg&quot; alt=&quot;A quiet city park at night, captured in black and white. A brick path winds through the scene, scattered with fallen leaves, while modern apartment buildings glow in the background. Streetlights cast soft pools of light, and a signpost marks the park as smoke-free. The scene feels still and contemplative.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>St. Andrews Playground Park</category><author>myles</author></item><item><title>Movie Mice Theatre</title><link>https://myles.garden/windfall/2025-09-25-movie-mice-theatre</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-25-movie-mice-theatre</guid><pubDate>Fri, 26 Sep 2025 00:30:00 GMT</pubDate><content:encoded>&lt;p&gt;Saw this cute diorama on my evening walk tonight.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/movie-mice-theatre.D2-CqErE.jpg&quot; alt=&quot;A whimsical miniature diorama of a “Movie Mice Theatre” is lit with glowing green lights at night. A marquee above reads “NOW SHOWING — GRAND OPENING.” Inside a clear display box below, tiny mouse figurines are posed at a grand opening celebration, complete with streamers, balloons, and a “Grand Opening” banner. One mouse sits at a small table with a cake, another pushes a baby carriage, and others are dressed up as if attending a party. The whole scene is nestled among garden plants, giving it a magical, hidden-world feel.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><author>myles</author></item><item><title>Red Light Signing Through my Window</title><link>https://myles.garden/windfall/2025-09-25-red-light</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-25-red-light</guid><pubDate>Thu, 25 Sep 2025 23:53:00 GMT</pubDate><content:encoded>&lt;p&gt;They are filming a movie outside my apartment and there is a huge red light coming into my window.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/red-light-in-my-window.AS5eWecB.jpg&quot; alt=&quot;A cozy apartment corner with potted plants lined along a window ledge, glowing under a dramatic red streetlight outside. The window looks out onto leafy trees bathed in vivid red light, with city buildings in the background. Inside, books and papers are stacked on a desk, pillows and plush toys rest on the couch, and the whole scene feels warm, cluttered, and intimate against the surreal red glow.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Home</category><author>myles</author></item><item><title>Building a Calendar Interface in Astro</title><link>https://myles.garden/windfall/2025-09-21-astro-calendar</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-21-astro-calendar</guid><description>How I built a static calendar interface in Astro using date-fns.</description><pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I wanted my website to have a clean, static calendar interface to showcase all my &lt;a href=&quot;https://myles.garden/rsvp&quot;&gt;RSVP posts&lt;/a&gt;. At first, I considered using &lt;a href=&quot;https://fullcalendar.io&quot;&gt;FullCalendar&lt;/a&gt;, an excellent package, but a bit too heavy for my needs. I wanted something that rendered at build time, without extra client-side scripting. Building a lightweight calendar in Astro with &lt;code&gt;date-fns&lt;/code&gt; was surprisingly straightforward.&lt;/p&gt;

&lt;figure&gt;&lt;a href=&quot;https://myles.garden/calendar/2025-09&quot;&gt;   &lt;img src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fmyles-garden-calendar-screenshot.FcWTXGkS.png&amp;amp;w=750&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; alt=&quot;Screenshot of the September 2025 calendar interface on myles.garden, showing one event on Sunday the 21st.&quot; width=&quot;768&quot; height=&quot;768&quot; /&gt; &lt;/a&gt;&lt;figcaption&gt;&lt;p&gt;Screenshot of the &lt;a href=&quot;https://myles.garden/calendar/2025-09&quot;&gt;calendar interface&lt;/a&gt; for
this website.&lt;/p&gt;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;The Code&lt;/h2&gt;
&lt;p&gt;I am using &lt;a href=&quot;https://date-fns.org&quot;&gt;date-fns&lt;/a&gt; to do a lot of the heavy lifting here.&lt;/p&gt;
&lt;h3&gt;Get the Static Paths&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://docs.astro.build/en/reference/routing-reference/#getstaticpaths&quot;&gt;&lt;code&gt;getStaticPaths&lt;/code&gt;&lt;/a&gt; generates multiple page routes from a single &lt;code&gt;.astro&lt;/code&gt; page component.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { getCollection } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &quot;astro:content&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; dateFns &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &quot;date-fns&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; const&lt;/span&gt;&lt;span&gt; getStaticPaths&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; () &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // The events collection is pretty generic, it would look something like&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // this:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // const eventsCollection = defineCollection({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //    loader: glob({ pattern: &quot;*.md&quot;, base: &quot;./src/content/events&quot; }),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //    schema: z.object({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //        name: z.string(),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //        startsAt: z.date(),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //        endsAt: z.date().optional(),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //        isAllDay: z.boolean(),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  //    }),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // })&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; allEvents&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; getCollection&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;calendarEvents&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // We want to get the upper and lower bound of the calendar pages without it&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // we would have to have every possible month.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; eventDates&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; allEvents&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .&lt;/span&gt;&lt;span&gt;flatMap&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;post&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; [post.data.startsAt, post.data.endsAt])&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;&lt;span&gt;(Boolean) &lt;/span&gt;&lt;span&gt;as&lt;/span&gt;&lt;span&gt; Date&lt;/span&gt;&lt;span&gt;[];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; upperBound&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;endOfMonth&lt;/span&gt;&lt;span&gt;(dateFns.&lt;/span&gt;&lt;span&gt;max&lt;/span&gt;&lt;span&gt;(eventDates));&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; lowerBound&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;startOfMonth&lt;/span&gt;&lt;span&gt;(dateFns.&lt;/span&gt;&lt;span&gt;min&lt;/span&gt;&lt;span&gt;(eventDates));&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // We want to capture all the years and their months between the upper and&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // lower bounds.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; yearsBetween&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .&lt;/span&gt;&lt;span&gt;eachYearOfInterval&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      start: lowerBound,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      end: upperBound,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    })&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    .&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;yearStart&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      const&lt;/span&gt;&lt;span&gt; yearEnd&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;endOfYear&lt;/span&gt;&lt;span&gt;(yearStart);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      const&lt;/span&gt;&lt;span&gt; months&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;eachMonthOfInterval&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        start: dateFns.&lt;/span&gt;&lt;span&gt;isBefore&lt;/span&gt;&lt;span&gt;(yearStart, lowerBound) &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; lowerBound &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; yearStart,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        end: dateFns.&lt;/span&gt;&lt;span&gt;isAfter&lt;/span&gt;&lt;span&gt;(yearEnd, upperBound) &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; upperBound &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; yearEnd,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      return&lt;/span&gt;&lt;span&gt; { months };&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // Finally we can build all the pages that will be generated.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; yearsBetween.&lt;/span&gt;&lt;span&gt;flatMap&lt;/span&gt;&lt;span&gt;(({ &lt;/span&gt;&lt;span&gt;months&lt;/span&gt;&lt;span&gt; }) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    months.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;monthStart&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      const&lt;/span&gt;&lt;span&gt; monthEnd&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;endOfMonth&lt;/span&gt;&lt;span&gt;(monthStart);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      // Adjust the start and end to the nearest Monday and Sunday for a full&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      // week of coverage, this does mean the week will start on a Monday and&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      // end on a Sunday.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      const&lt;/span&gt;&lt;span&gt; calendarMonthStart&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;isMonday&lt;/span&gt;&lt;span&gt;(monthStart)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        ?&lt;/span&gt;&lt;span&gt; monthStart&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        :&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;previousMonday&lt;/span&gt;&lt;span&gt;(monthStart);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      const&lt;/span&gt;&lt;span&gt; calendarMonthEnd&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;isSunday&lt;/span&gt;&lt;span&gt;(monthEnd)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        ?&lt;/span&gt;&lt;span&gt; monthEnd&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        :&lt;/span&gt;&lt;span&gt; dateFns.&lt;/span&gt;&lt;span&gt;nextSunday&lt;/span&gt;&lt;span&gt;(monthEnd);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      const&lt;/span&gt;&lt;span&gt; days&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; dateFns&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        .&lt;/span&gt;&lt;span&gt;eachDayOfInterval&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          start: calendarMonthStart,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          end: calendarMonthEnd,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        })&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        .&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;day&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; ({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          day,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          events: allEvents.&lt;/span&gt;&lt;span&gt;filter&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;event&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            dateFns.&lt;/span&gt;&lt;span&gt;isSameDay&lt;/span&gt;&lt;span&gt;(event.data.startsAt, day),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          ),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }));&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        params: {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          // You&apos;ll want to change this to how your filename is, mine is&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          // `[...yyyymmm].astro`.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          yyyymm: dateFns.&lt;/span&gt;&lt;span&gt;format&lt;/span&gt;&lt;span&gt;(monthStart, &lt;/span&gt;&lt;span&gt;&quot;yyyy-MM&quot;&lt;/span&gt;&lt;span&gt;),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        props: {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          start: calendarMonthStart,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          end: calendarMonthEnd,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          days,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      };&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Build the Interface&lt;/h3&gt;
&lt;p&gt;The above builds three props: &lt;code&gt;start&lt;/code&gt; (first day of the calendar), &lt;code&gt;end&lt;/code&gt; (last day), and &lt;code&gt;days&lt;/code&gt; (an array of days and their events). I use &lt;a href=&quot;https://tailwindcss.com&quot;&gt;Tailwind CSS&lt;/a&gt; for styling this website, I’ll be using their CSS classes.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /**&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   * The border attribute doesn&apos;t really work with grids, so to get this to&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   * work, we are going to add a slight gap between the grid&apos;s cells and&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   * subtract the margin a bit on the right. This means we&apos;ll have a&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   * tic-tac-toe border kind of like this:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   *&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   *  MON | TUE | WED | THU | FRI | SAT | SUN&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   * -----------------------------------------&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   *   29 |  31 |  1  |  2  |  3  |  4  |  5&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   *                    ...&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   *   27 |  28 |  29 |  30 |  31 |  1  |  2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;   */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; class:list&lt;/span&gt;&lt;span&gt;={[&lt;/span&gt;&lt;span&gt;&quot;-mr-0.5 grid grid-cols-7 gap-0.5 bg-black&quot;&lt;/span&gt;&lt;span&gt;]}&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    [&lt;/span&gt;&lt;span&gt;&quot;mon&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;tue&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;wed&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;thu&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;fri&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;sat&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;sun&quot;&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;weekDay&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt;className, &lt;/span&gt;&lt;span&gt;&quot;bg-white text-right font-bold uppercase&quot;&lt;/span&gt;&lt;span&gt;]}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        {weekDay}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;h2&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    days.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;(({ &lt;/span&gt;&lt;span&gt;day&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;events&lt;/span&gt;&lt;span&gt; }) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;span&gt;&quot;h-32 bg-white&quot;&lt;/span&gt;&lt;span&gt;]}&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;span&gt;&quot;px-1 py-0.5 text-right font-semibold&quot;&lt;/span&gt;&lt;span&gt;]}&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          {dateFns.&lt;/span&gt;&lt;span&gt;format&lt;/span&gt;&lt;span&gt;(day, &lt;/span&gt;&lt;span&gt;&quot;d&quot;&lt;/span&gt;&lt;span&gt;)}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;h3&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;span&gt;&quot;space-y-0.5 overflow-y-hidden text-sm&quot;&lt;/span&gt;&lt;span&gt;]}&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          {events.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;event&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            &amp;lt;&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              &amp;lt;&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;`/events/${&lt;/span&gt;&lt;span&gt;event&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;}`&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  &quot;flex justify-between rounded-sm px-1 py-0.5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  &quot;hover:bg-black/5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                ]}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              &amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;span&gt;&quot;block flex-shrink truncate&quot;&lt;/span&gt;&lt;span&gt;]}&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  {event.data.name}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                {&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;event.data.isAllDay &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  &amp;lt;&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;{[&lt;/span&gt;&lt;span&gt;&quot;block flex-shrink-0 text-black/75&quot;&lt;/span&gt;&lt;span&gt;]}&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    {dateFns.&lt;/span&gt;&lt;span&gt;format&lt;/span&gt;&lt;span&gt;(event.data.startsAt, &lt;/span&gt;&lt;span&gt;&quot;h:mm a&quot;&lt;/span&gt;&lt;span&gt;)}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  &amp;lt;/&lt;/span&gt;&lt;span&gt;span&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                )}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              &amp;lt;/&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            &amp;lt;/&lt;/span&gt;&lt;span&gt;li&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          ))}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;ul&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    ))&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;div&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;Now my website has a &lt;a href=&quot;https://myles.garden/calendar/2025-09&quot;&gt;calendar interface to my RSVP posts&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Astro</category><category>Colophon</category><category>Tailwind CSS</category><category>TypeScript</category><author>myles</author></item><item><title>Untitled Bookmark Post</title><link>https://myles.garden/windfall/2025-09-13-internets-hidden-creative-renaissance</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-13-internets-hidden-creative-renaissance</guid><pubDate>Sat, 13 Sep 2025 07:02:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://newpublic.substack.com/p/the-handmade-internet-is-making-a&quot;&gt;Alexandra Ciufudean explores the IndieWeb&lt;/a&gt;, where people’s personal websites are pushing back against the corporate internet.&lt;/p&gt;</content:encoded><category>IndieWeb</category><category>Alexandra Ciufudean</category><author>myles</author></item><item><title>Butterfly</title><link>https://myles.garden/windfall/2025-09-10-butterfly</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-10-butterfly</guid><pubDate>Wed, 10 Sep 2025 16:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/butterfly-1.F0gM2Ejb.jpg&quot; alt=&quot;A butterfly on a flower.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/butterfly-2.CDUJI5Sg.jpg&quot; alt=&quot;A butterfly on a flower.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-09-06-tomato-in-concrete</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-06-tomato-in-concrete</guid><pubDate>Sat, 06 Sep 2025 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Found this cute little guy today near Queen and University.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/tomato-growing-in-concrete.B3GnRdLl.jpg&quot; alt=&quot;A tomato plant growing in concrete on the side of a building.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><author>myles</author></item><item><title>JSONFeed in Astro with @astrojs/rss</title><link>https://myles.garden/windfall/2025-09-03-astro-rss-and-jsonfeed</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-03-astro-rss-and-jsonfeed</guid><pubDate>Wed, 03 Sep 2025 21:42:00 GMT</pubDate><content:encoded>&lt;p&gt;I wanted this website to publish both an &lt;a href=&quot;https://en.wikipedia.org/wiki/RSS&quot;&gt;&lt;strong&gt;RSS feed&lt;/strong&gt;&lt;/a&gt; and a &lt;a href=&quot;https://jsonfeed.org/&quot;&gt;&lt;strong&gt;JSONFeed&lt;/strong&gt;&lt;/a&gt;. The catch: I didn’t want to maintain two separate feed pipelines.&lt;/p&gt;
&lt;p&gt;Astro already has a handy &lt;a href=&quot;https://docs.astro.build/en/recipes/rss/&quot;&gt;&lt;code&gt;@astrojs/rss&lt;/code&gt;&lt;/a&gt; package that outputs RSS feeds. So I thought—why not reuse the same data shape to generate JSONFeed as well?&lt;/p&gt;
&lt;p&gt;Turns out, it’s pretty straightforward.&lt;/p&gt;
&lt;h2&gt;The Code&lt;/h2&gt;
&lt;p&gt;Here’s how I reused the &lt;code&gt;@astrojs/rss&lt;/code&gt; shape to build a JSONFeed endpoint in Astro.&lt;/p&gt;
&lt;h3&gt;Formatting the Feed&lt;/h3&gt;
&lt;p&gt;I built a transformer function to take the &lt;code&gt;RSSOptions&lt;/code&gt; and convert them to be a valid &lt;a href=&quot;https://www.jsonfeed.org/version/1.1/&quot;&gt;JSONFeed 1.1&lt;/a&gt; top-level.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt; { APIContext } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &quot;astro&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { getCollection } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &quot;astro:content&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; type&lt;/span&gt;&lt;span&gt; { RSSFeedItem, RSSOptions } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &quot;@astrojs/rss&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; const&lt;/span&gt;&lt;span&gt; formatJsonFeed&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;rssOptions&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; RSSOptions&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;site&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; rssOptions;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; homePageUrl&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; site &lt;/span&gt;&lt;span&gt;instanceof&lt;/span&gt;&lt;span&gt; URL&lt;/span&gt;&lt;span&gt; ?&lt;/span&gt;&lt;span&gt; site.href &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; site;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    version: &lt;/span&gt;&lt;span&gt;&quot;https://jsonfeed.org/version/1.1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    title: title,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    home_page_url: homePageUrl,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    feed_url: &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; URL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/feed.json&quot;&lt;/span&gt;&lt;span&gt;, homePageUrl).href,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    description: description,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    items: [],&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Formatting Feed Items&lt;/h3&gt;
&lt;p&gt;Next was transforming RSS items to be valid JSONFeed 1.1 items.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; const&lt;/span&gt;&lt;span&gt; formatJsonFeedItem&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;rssFeedItem&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; RSSFeedItem&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; { &lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;content&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;pubDate&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt; } &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; rssFeedItem;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;link) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    throw&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Error&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;RSS feed item must have a link.&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    id: link,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    url: link,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    title: title,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    summary: description,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    date_published: pubDate?.&lt;/span&gt;&lt;span&gt;toISOString&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    content_html: content &lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  };&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Putting It Together&lt;/h3&gt;
&lt;p&gt;Next, you’ll need to create a &lt;a href=&quot;https://docs.astro.build/en/guides/endpoints/#static-file-endpoints&quot;&gt;Static File Endpoint&lt;/a&gt; to serve the JSONFeed. I put mine at &lt;code&gt;/src/pages/feed.json.ts&lt;/code&gt;, which servers it at &lt;code&gt;https://example.com/feed.json&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; async&lt;/span&gt;&lt;span&gt; function&lt;/span&gt;&lt;span&gt; GET&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;context&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; APIContext&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; Promise&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;Response&lt;/span&gt;&lt;span&gt;&amp;gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; posts&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; await&lt;/span&gt;&lt;span&gt; getCollection&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;posts&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; jsonFeedItems&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; posts.&lt;/span&gt;&lt;span&gt;map&lt;/span&gt;&lt;span&gt;((&lt;/span&gt;&lt;span&gt;post&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;=&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    formatJsonFeedItem&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      link: url.href,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      title: post.data.name,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      pubDate: post.data.publishedAt,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }),&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  );&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  const&lt;/span&gt;&lt;span&gt; jsonFeed&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; formatJsonFeed&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    title: &lt;/span&gt;&lt;span&gt;&quot;Website Feed&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    description: &lt;/span&gt;&lt;span&gt;&quot;This is a JSONFeed!!!&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    site: context.site,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    items: jsonFeedItems,&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  return&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Response&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;stringify&lt;/span&gt;&lt;span&gt;(jsonFeed, &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;), {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    headers: { &lt;/span&gt;&lt;span&gt;&quot;Content-Type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;application/feed+json&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Auto-Discovery of Your New JSONFeed&lt;/h3&gt;
&lt;p&gt;To make your JSONFeed discoverable by browsers and feed readers, add a &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag in your site’s &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;. For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;alternate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;application/rss+xml&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;RSS Feed&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;/rss.xml&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  rel&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;alternate&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  type&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;application/feed+json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  title&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;JSONFeed&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  href&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;/feed.json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This way, clients that support feed auto-discovery will automatically pick up both formats.&lt;/p&gt;
&lt;h2&gt;Wrap Up&lt;/h2&gt;
&lt;p&gt;Now my site has two feeds: RSS for the traditionalists and JSONFeed for the modernists. If you’re already using &lt;code&gt;@astrojs/rss&lt;/code&gt;, this pattern makes JSONFeed nearly free. Give it a try—and let me know if you’d like me to extend this into Atom or other formats. 🌱&lt;/p&gt;</content:encoded><category>Astro</category><category>Colophon</category><category>JSONFeed</category><category>RSS XML Feed</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-09-03-boiler-room</link><guid isPermaLink="true">https://myles.garden/windfall/2025-09-03-boiler-room</guid><pubDate>Wed, 03 Sep 2025 18:38:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/boiler-room-funds-genocide.C20s2WS-.jpg&quot; alt=&quot;Graffiti on asphalt reading “Boiler Room Funds Genocide”.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><category>Stencil</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2025-08-25-duolingo-pro-horse-agenda</link><guid isPermaLink="true">https://myles.garden/windfall/2025-08-25-duolingo-pro-horse-agenda</guid><pubDate>Mon, 25 Aug 2025 14:12:00 GMT</pubDate><content:encoded>&lt;p&gt;I don’t appreciate Duolingo’s pro-horse agenda.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/a-la-campagne-j-entends-les-chevaux.LTHFw-IA.jpg&quot; alt=&quot;Screenshot of Duolingo French lesson. It&apos;s asking to translate the English sentence, In the countryside, I hear the horses, to French. I successfully translated it to Á la campagne j&apos;entends les chevaux.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/ce-cheval-est-tres-beau.CFN-GlFO.jpg&quot; alt=&quot;Screenshot of a Duolingo French lesson. It&apos;s asking to translate the English sentence, This horse is very beautiful, to French. I successfully translated it to Che cheval est tres beau.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Duolingo</category><author>myles</author></item><item><title>Farm Photo Dump</title><link>https://myles.garden/windfall/2025-08-24-farm</link><guid isPermaLink="true">https://myles.garden/windfall/2025-08-24-farm</guid><pubDate>Mon, 25 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A week in the countryside, skies shifting from blue to dusk, trees heavy with summer leaves, wildflowers pushing through stone walls, rain on the patio, and quiet evenings under open skies. A little collection of stillness and light. 🌿🌦️☀️&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-01.jpg&quot; alt=&quot;View of a partly cloudy sky framed by two large white umbrellas at the edges, with the tops of leafy green trees below.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-02.jpg&quot; alt=&quot;Close-up of a tree branch with bright green leaves in sunlight, with a grassy field and small yellow flowers in the background.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-03.jpg&quot; alt=&quot;Backyard scene with a small wooden shed framed by tall trees, sunlight filtering through the leaves, and the corner of a bright blue swimming pool in the foreground.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-04.jpg&quot; alt=&quot;Wooden rocking chair on a deck at night, lit by a warm light, facing a row of green shrubs and a dark blue sky.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-05.jpg&quot; alt=&quot;Sunlight streaming through tall trees at the edge of a grassy yard, casting long shadows across the lawn with a stone wall and hills faintly visible in the distance.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-06.jpg&quot; alt=&quot;Wide view of an open field at dusk, with tall grasses in the foreground, tree lines at the edges, and a sky streaked with soft clouds glowing pink and blue.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-07.jpg&quot; alt=&quot;Rainy backyard scene with wet patio furniture in the foreground, a white umbrella, a swimming pool in the middle ground, and a small wooden shed near the tree line.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-08.jpg&quot; alt=&quot;View through trees and tall grass toward an open field, with a patch of blue sky and scattered white clouds above the horizon.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-09.jpg&quot; alt=&quot;Curving gravel driveway bordered by green grass and tall trees, leading out toward an open field under a cloudy sky.&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2025/08/24/farm/farm-10.jpg&quot; alt=&quot;Bright yellow wildflowers growing near a tree trunk and stone wall, with tall grasses and leafy trees in the background under a partly cloudy sky.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Photo Dump</category><category>Family Farm</category><author>myles</author></item><item><title>Tomatoes from the garden.</title><link>https://myles.garden/windfall/2025-08-23-tomatoes</link><guid isPermaLink="true">https://myles.garden/windfall/2025-08-23-tomatoes</guid><pubDate>Sat, 23 Aug 2025 10:23:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/tomatoes.CnZauRRM.jpg&quot; alt=&quot;A white bowl filled with freshly picked cherry tomatoes in shades of red and orange, with green stems attached, sitting on a wooden railing with greenery and a brick wall in the background.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Family Farm</category><category>myles.social</category><author>myles</author></item><item><title>Lego sculpture on the corner of Edwin Ave and Dupont St.</title><link>https://myles.garden/windfall/2025-08-11-lego</link><guid isPermaLink="true">https://myles.garden/windfall/2025-08-11-lego</guid><pubDate>Tue, 12 Aug 2025 03:59:59 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/lego-sculpture.D38_5bbf.jpg&quot; alt=&quot;A traffic light pole base on a city sidewalk is covered in colourful LEGO bricks, forming a tall, blocky structure. Small baskets filled with loose LEGO pieces surround the base, and scattered bricks are spread across the pavement.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>LEGO</category><category>Junction Triangle</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-08-03-map-of-toronto</link><guid isPermaLink="true">https://myles.garden/windfall/2025-08-03-map-of-toronto</guid><pubDate>Sun, 03 Aug 2025 15:53:05 GMT</pubDate><content:encoded>&lt;p&gt;I love this map of Toronto on the wall at the White Squirrel.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/map-of-toronto.Cr2Jy0bH.jpg&quot; alt=&quot;A map on the wall of a coffeeshop of the City of Toronto.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>White Squirrel</category><category>Maps</category><category>Toronto</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2025-07-09-moody</link><guid isPermaLink="true">https://myles.garden/windfall/2025-07-09-moody</guid><pubDate>Thu, 10 Jul 2025 03:59:59 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/moody.CkL-R9Z5.jpg&quot; alt=&quot;Theo, a golden doodle, is lying on a herringbone floor in a cozy room with the word &amp;quot;MOODY&amp;quot; written on the floor.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Theo</category><category>Bedford Park</category><category>myles.social</category><author>myles</author></item><item><title>Bookmarked Death of a Fantastic Machine.</title><link>https://myles.garden/windfall/2025-06-24-death-of-a-fantastic-machine</link><guid isPermaLink="true">https://myles.garden/windfall/2025-06-24-death-of-a-fantastic-machine</guid><pubDate>Wed, 25 Jun 2025 00:56:00 GMT</pubDate><content:encoded>&lt;p&gt;This documentary &lt;a href=&quot;https://youtu.be/Sf3wEg9tsCY&quot;&gt;Death of a Fantastic Machine&lt;/a&gt; explores how photography has shaped our lives, from early photographs to AI-generated images.&lt;/p&gt;

&lt;div&gt;  &lt;a href=&quot;https://youtube.com/watch?v=Sf3wEg9tsCY&quot;&gt; &lt;span&gt;&lt;/span&gt; &lt;/a&gt;  &lt;/div&gt; </content:encoded><author>myles</author></item><item><title>Broadacre City — Frank Lloyd Wright&apos;s Utopia Dystopia</title><link>https://myles.garden/windfall/2024-08-30-broadacre-city</link><guid isPermaLink="true">https://myles.garden/windfall/2024-08-30-broadacre-city</guid><pubDate>Fri, 30 Aug 2024 16:40:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Democracy… we have started toward a new integration—to an integration along the horizontal line which we call the great highway.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;- Frank Lloyd Wright, September 1931.&lt;/p&gt;
&lt;p&gt;Today I learned about Broadacre City from Phil Edwards’ YouTube video, &lt;a href=&quot;https://www.youtube.com/watch?v=DWqZMZ0HPqw&quot;&gt;The truth about Utopias&lt;/a&gt;.&lt;/p&gt;

&lt;div&gt;  &lt;a href=&quot;https://youtube.com/watch?v=DWqZMZ0HPqw&quot;&gt; &lt;span&gt;&lt;/span&gt; &lt;/a&gt;  &lt;/div&gt; 
&lt;h2&gt;See also&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nextcity.org/urbanist-news/frank-lloyd-wrights-utopian-dystopia&quot;&gt;Frank Lloyd Wright’s Utopian Dystopia&lt;/a&gt; by Katherine Don, 8th April 2010.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://franklloydwright.org/revisiting-frank-lloyd-wrights-vision-broadacre-city/&quot;&gt;Revisiting Frank Lloyd Wright’s Vision for “Broadacre City”&lt;/a&gt; by Frank Lloyd Wright Foundation, 8th September 2017.&lt;/li&gt;
&lt;/ul&gt;</content:encoded><author>myles</author></item><item><title>Icebergs can get stuck on underwater mountains</title><link>https://myles.garden/windfall/2024-08-10-icebergs</link><guid isPermaLink="true">https://myles.garden/windfall/2024-08-10-icebergs</guid><pubDate>Sat, 10 Aug 2024 19:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The current largest iceberg, A-23A, is currently spinning in place on top of an underwater mountain:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;After leaving Antarctic waters, the iceberg got stuck in a vortex over a seamount, or an underwater mountain. Imagine a piece of ice about 1,500 square miles in area and as deep as the Empire State Building spinning slowly but steadily enough to fully rotate it on its head over the course of about 24 days.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;- Tumin, R. (2024, August 7). &lt;a href=&quot;https://www.nytimes.com/2024/08/07/science/a23a-iceberg-antarctica-spinning.html&quot;&gt;After breaking free, world’s largest iceberg is stuck spinning in circles&lt;/a&gt;. &lt;em&gt;New York Times&lt;/em&gt;.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>Bookmarked I Reviewed Restaurants for 12 Years. They’ve Changed, and Not for the Better. by Pete Wells for The New York Times.</title><link>https://myles.garden/windfall/2024-08-07-pete-wells-how-restaurants-have-changed</link><guid isPermaLink="true">https://myles.garden/windfall/2024-08-07-pete-wells-how-restaurants-have-changed</guid><pubDate>Wed, 07 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Read &lt;em&gt;Pete Wells&lt;/em&gt;’s Times article on &lt;a href=&quot;https://www.nytimes.com/2024/08/06/dining/pete-wells-how-restaurants-have-changed.html&quot;&gt;his experience reviewing restaurants for the last 12 years&lt;/a&gt;.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>Bookmarked How to Paint Like Hayao Miyazaki for Animation Obsessive.</title><link>https://myles.garden/windfall/2024-08-02-how-to-paint-like-hayao-miyazaki</link><guid isPermaLink="true">https://myles.garden/windfall/2024-08-02-how-to-paint-like-hayao-miyazaki</guid><pubDate>Fri, 02 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Read &lt;a href=&quot;https://animationobsessive.substack.com/p/how-to-paint-like-hayao-miyazaki&quot;&gt;How to Paint Like Hayao Miyazaki&lt;/a&gt;.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>Bookmarked The internet is already over by Sam Kriss for Numb at the Lodge.</title><link>https://myles.garden/windfall/2024-07-31-the-internet-is-already-over</link><guid isPermaLink="true">https://myles.garden/windfall/2024-07-31-the-internet-is-already-over</guid><pubDate>Wed, 31 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Read &lt;em&gt;Sam Kriss&lt;/em&gt;’s article &lt;a href=&quot;https://samkriss.substack.com/p/the-internet-is-already-over&quot;&gt;The Internet is already over&lt;/a&gt;.&lt;/p&gt;</content:encoded><author>myles</author></item><item><title>Exploring Toronto&apos;s Restaurant Inspection Data with DineSafe</title><link>https://myles.garden/windfall/2024-03-16-toronto-dinesafe</link><guid isPermaLink="true">https://myles.garden/windfall/2024-03-16-toronto-dinesafe</guid><pubDate>Sat, 16 Mar 2024 05:00:00 GMT</pubDate><content:encoded>&lt;p&gt;As a lover of good food, I’ve always been curious about restaurant health inspections. So, I decided to take matters into my own hands and create a tool that makes it easy to explore Toronto’s DineSafe data.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dinesafe-toronto.slothful-myles.com&quot;&gt;&lt;img alt=&quot;Screenshot of the Datasette for DineSafe Toronto — slothful-myles&quot; width=&quot;1280&quot; height=&quot;1050&quot; src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fdinesafe-toronto-datasette-screenshot.B64UKQCg.png&amp;amp;w=1200&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I built a scraper using Python and the &lt;a href=&quot;https://sqlite-utils.datasette.io/en/stable/&quot;&gt;sqlite-utils&lt;/a&gt; library. It gathers data on restaurant inspections and stores it in a SQLite database. But I didn’t stop there – I added some automation magic to make the process even more fun!&lt;/p&gt;
&lt;p&gt;Now, thanks to a &lt;a href=&quot;https://github.com/myles/dinesafe-toronto/blob/main/.github/workflows/deploy.yml&quot;&gt;Github Actions workflow&lt;/a&gt;, the scraper runs every day at 9 am and deploys the database to an instance of &lt;a href=&quot;https://datasette.io/&quot;&gt;Datasette&lt;/a&gt; running on &lt;a href=&quot;https://vercel.com/&quot;&gt;Vercel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Datasette is a super cool tool that lets you explore and visualize data in a fun and interactive way. So, whether you’re a foodie, data enthusiast, or just curious about what’s happening behind the scenes in your favorite restaurant, this project is for you.&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://github.com/myles/dinesafe-toronto&quot;&gt;Github repository&lt;/a&gt; to see the code and learn how to set up your own instance of the scraper. You can also explore the data and play around with visualizations on the &lt;a href=&quot;https://dinesafe-toronto.slothful-myles.com/&quot;&gt;DineSafe Toronto website&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>Software Engineering</category><category>Toronto</category><category>Projects</category><category>mylesbraithwaite.com</category><author>myles</author></item><item><title>Arc App&apos;s JSON Export to SQLite</title><link>https://myles.garden/windfall/2024-03-09-arc-to-sqlite</link><guid isPermaLink="true">https://myles.garden/windfall/2024-03-09-arc-to-sqlite</guid><pubDate>Sat, 09 Mar 2024 05:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I started working on a Dogsheep utility for processing &lt;a href=&quot;https://www.bigpaua.com/arcapp/&quot;&gt;Arc App&lt;/a&gt;’s Daily (or Monthly) JSON exports into a SQLite database. This provides the ability to analysis the places I visit and activities I am doing in &lt;a href=&quot;https://datasette.io/&quot;&gt;Datasette&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screenshot of Datasette showing the timeline_items table in a SQLite database. There is a map at the bottom that is showing the locations I traveled in the last few days.&quot; width=&quot;1280&quot; height=&quot;1198&quot; src=&quot;https://myles.garden/_vercel/image?url=_astro%2Farc-to-sqlite-running-in-datasette.gGZHdjuM.png&amp;amp;w=1200&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I’ve published a working alpha version of the Dogsheep utility, &lt;a href=&quot;https://github.com/myles/arc-to-sqlite&quot;&gt;arc-to-sqlite on my Github&lt;/a&gt;. Check it out if you are interested.&lt;/p&gt;</content:encoded><category>arc-to-sqlite</category><category>Arc Timeline</category><category>Software Engineering</category><category>Projects</category><category>mylesbraithwaite.com</category><author>myles</author></item><item><title>😢 My Stupid Weather Twitter Profile Bot Got Suspended</title><link>https://myles.garden/windfall/2023-04-14-twitter-bot</link><guid isPermaLink="true">https://myles.garden/windfall/2023-04-14-twitter-bot</guid><description>My little weather-updating Twitter bot was finally suspended after seven years.</description><pubDate>Fri, 14 Apr 2023 21:29:00 GMT</pubDate><content:encoded>&lt;p&gt;Seven years ago, I created a &lt;a href=&quot;https://github.com/myles/weather-twitter-profile-updater&quot;&gt;little Python script that would add a weather emoji to my Twitter handle&lt;/a&gt;, based on the current conditions in Toronto. I don’t think anyone besides myself notices, but it always made me happy to see my handle change to &lt;code&gt;☀️ Myles Braithwaite&lt;/code&gt; on a sunny day.&lt;/p&gt;
&lt;p&gt;Today, I received an email from the Twitter Developer Platform, informing me that my bot was suspended from accessing the Twitter API. I tried to appeal the decision, but the web form kept giving me an error.&lt;/p&gt;
&lt;p&gt;&lt;img width=&quot;1280&quot; height=&quot;835&quot; src=&quot;https://myles.garden/_vercel/image?url=_astro%2Fapplication-suspension-notice-email-from-twitter.BOAaPv6Q.png&amp;amp;w=1200&amp;amp;q=100&amp;amp;dpl=dpl_98njFTE329udbduZd8YMQsUD5h6y&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I knew this day was coming when I had to give up on this bot, I used DarkSky’s API to get the current weather, which API was disconnected on 31 March 2023. Strangely enough, my bot continued to work for a while after that. Just all feels pretty sudden.&lt;/p&gt;</content:encoded><category>Software Engineering</category><category>Projects</category><category>mylesbraithwaite.com</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2022-11-21-windy</link><guid isPermaLink="true">https://myles.garden/windfall/2022-11-21-windy</guid><pubDate>Mon, 21 Nov 2022 17:27:00 GMT</pubDate><content:encoded>&lt;p&gt;It’s a bit windy in Toronto today.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2022/11/21/windy/windy.jpg&quot; alt=&quot;Windswept Lake Ontario from a rocky shoreline. Bare trees and red-stemmed shrubs in the foreground, whitecaps crashing against a low stone breakwater in the middle distance, the Humber Bay condo towers on the horizon under scattered clouds.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Ontario Place</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2020-02-21-failing-tests</link><guid isPermaLink="true">https://myles.garden/windfall/2020-02-21-failing-tests</guid><pubDate>Sat, 22 Feb 2020 04:59:59 GMT</pubDate><content:encoded>&lt;p&gt;I spent the last 30 minutes trying to figure out why my tests weren’t failing. It turned out it was because I forgot to prepend &lt;code&gt;test_&lt;/code&gt; to the function 🙃.&lt;/p&gt;</content:encoded><category>Python</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2019-08-13-tooth-and-tail-austin-wintory</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-13-tooth-and-tail-austin-wintory</guid><pubDate>Tue, 13 Aug 2019 15:58:00 GMT</pubDate><content:encoded>&lt;p&gt;Listening to &lt;strong&gt;Tooth and Tail&lt;/strong&gt;’s soundtrack by &lt;strong&gt;Austin Wintory&lt;/strong&gt; gives my chores pomp and circumstance.&lt;/p&gt;</content:encoded><category>myles.social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2019-08-11-port-perry</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-11-port-perry</guid><pubDate>Mon, 12 Aug 2019 03:59:59 GMT</pubDate><content:encoded>&lt;p&gt;Sitting in a park in Port Perry.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://uploads.myles.garden/posts/2019/08/11/port-perry/port-perry.jpg&quot; alt=&quot;Port Perry park in the summer time.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Port Perry</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2019-08-10-thinknum</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-10-thinknum</guid><pubDate>Sun, 11 Aug 2019 03:59:59 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://www.thinknum.com/&quot;&gt;Thinknum&lt;/a&gt;, a dataset service for revealing strategic movements within companies, made &lt;a href=&quot;https://storage.googleapis.com/thinknum-assets/resources/Quest%20for%20Alpha%20-%20Thinknum.pdf&quot;&gt;their pitch deck a comic book&lt;/a&gt;.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/data-is-business.DWgD1el3.jpg&quot; alt=&quot;A comic book panel where the character says &amp;quot;Data is business. Business is war!&amp;quot;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>myles.social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2019-08-10-summer</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-10-summer</guid><pubDate>Sun, 11 Aug 2019 03:59:59 GMT</pubDate><content:encoded>&lt;p&gt;I ♥️ summer in Toronto.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/summer-processed.y2PRJGnn.jpg&quot; alt=&quot;Toronto park in the summer time.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>City of Toronto</category><category>myles.social</category><author>myles</author></item><item><title>Scooter&apos;s aren&apos;t as &quot;eco-friendly&quot; as they claim to be</title><link>https://myles.garden/windfall/2019-08-08-scooters</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-08-scooters</guid><pubDate>Fri, 09 Aug 2019 03:59:59 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;The study concludes that dockless scooters generally produce more greenhouse-gas emissions per passenger mile than a standard diesel bus with high ridership, an electric moped, an electric bicycle, a bicycle—or, of course, a walk.&lt;/p&gt;
&lt;p&gt;The paper found that scooters do produce about half the emissions of a standard automobile, at around 200 grams of carbon dioxide per mile compared with nearly 415. But, crucially, the researchers found in a survey of e-scooter riders in Raleigh, North Carolina, that only 34% would have otherwise used a personal car or ride-sharing service. Nearly half would have biked or walked, 11% would have taken the bus, and 7% would have simply skipped the trip.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Temple, J. (2019, August 2). Sorry, scooters aren’t so climate-friendly after all. Retrieved August 8, 2019, from &lt;a href=&quot;https://www.technologyreview.com/s/614050/electric-scooters-arent-so-climate-friendly-after-all-lime-bird/&quot;&gt;technologyreview.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>myles.social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2019-08-06-waiting-to-go-home</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-06-waiting-to-go-home</guid><pubDate>Wed, 07 Aug 2019 00:17:14 GMT</pubDate><content:encoded>&lt;p&gt;Waiting to go home from Oakville.&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/oakville-processed.DHhuI5qm.jpg&quot; alt=&quot;Oakville Go Station&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Oakville</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Photo Post</title><link>https://myles.garden/windfall/2019-08-04-outside-is-awesome</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-04-outside-is-awesome</guid><pubDate>Sun, 04 Aug 2019 17:39:15 GMT</pubDate><content:encoded>&lt;p&gt;Outside is awesome today!&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/outside-processed.BnQQiLZ5.jpg&quot; alt=&quot;Sailboats on Lake Ontario.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Trillium Park</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2019-08-03-hobbs-shaw</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-03-hobbs-shaw</guid><pubDate>Sun, 04 Aug 2019 03:59:59 GMT</pubDate><content:encoded>&lt;p&gt;🎥 &lt;a href=&quot;https://www.youtube.com/watch?v=HZ7PAyCDwEg&quot;&gt;Hobbs &amp;amp; Shaw&lt;/a&gt; was really good.&lt;/p&gt;</content:encoded><category>Films</category><category>myles.social</category><author>myles</author></item><item><title>Untitled Note Post</title><link>https://myles.garden/windfall/2019-08-01-chance-the-rapper</link><guid isPermaLink="true">https://myles.garden/windfall/2019-08-01-chance-the-rapper</guid><pubDate>Fri, 02 Aug 2019 03:59:59 GMT</pubDate><content:encoded>&lt;p&gt;🎵 Chance the Rapper new album &lt;a href=&quot;https://ditto.fm/bigday&quot;&gt;The Big Day&lt;/a&gt; is awesome.&lt;/p&gt;</content:encoded><category>Music</category><category>myles.social</category><author>myles</author></item><item><title>Lovebot Graffiti in Toronto</title><link>https://myles.garden/windfall/2019-07-30-lovebot</link><guid isPermaLink="true">https://myles.garden/windfall/2019-07-30-lovebot</guid><pubDate>Wed, 31 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;To create a better future we must create love within our lives now we have the tools to create love. This is love for not just some of us but for all people. This is love not just in our time, but for all time.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;img src=&quot;https://myles.garden/_astro/lovebot-processed.De5wUCyN.jpg&quot; alt=&quot;Graffiti on the side of a build.&quot; /&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Graffiti</category><category>Lovebot</category><category>City of Toronto</category><category>myles.social</category><author>myles</author></item></channel></rss>