<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
	<title>tyler.io</title>
	<atom:link href="https://tyler.io/feed/" rel="self" type="application/rss+xml" />
	<link>https://tyler.io/</link>
	<description>mostly nonsense</description>
	<lastBuildDate>Sun, 05 Jul 2026 00:00:00 -0400</lastBuildDate>
	<language>en-US</language>
	<generator>Hugo 0.166.0</generator>
	<item>
		<title>Escape from Squircle Jail</title>
		<link>https://tyler.io/2026/07/05/escape-from-squircle-jail/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Sun, 05 Jul 2026 00:00:00 -0400</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=3105</guid>
		<category>Blog</category>
		<description>This weekend, I was wrapping up a new release of Iris and decided to have some fun with the app icon.</description>
		<content:encoded>&lt;p&gt;This weekend, I was wrapping up &lt;a href=&#34;https://irisphotos.app/&#34;&gt;a new release of Iris&lt;/a&gt; and decided to have some fun after a user emailed to say:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;I have a rather niche feature request—but wondering if it would be possible to offer an alternative app icon with the beautiful flower freed from its squircle? I know that Apple has mandated the squircle from macOS Tahoe on; but I’m still running Sequoia, and I imagine other users may be as well. I love the way apps like Nova and Sketch offer alternative “legacy” icons, and it would make Iris feel even more at home in my dock 🙂&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;We all know about macOS Tahoe’s &lt;a href=&#34;https://daringfireball.net/linked/2025/11/07/tahoes-terrible-icons&#34;&gt;terrible app icons&lt;/a&gt; and how 3rd party developers have been confined to &lt;a href=&#34;https://atp.fm/643?utm_source=irisphotos&#34;&gt;squircle jail&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you’re lucky enough to distribute an app outside the Mac App Store, you can break free of squircle jail using &lt;a href=&#34;https://developer.apple.com/documentation/appkit/nsdocktileplugin&#34;&gt;NSDockTilePlugIn&lt;/a&gt;. It’s not strictly the intended use-case of that API. And it’s not allowed in the Mac App Store, either. But it can solve the problem.&lt;/p&gt;&#xA;&lt;p&gt;So today’s release of Iris adds three additional app icons to choose from in the app’s &lt;em&gt;Special&lt;/em&gt; &lt;del&gt;Preferences&lt;/del&gt; Settings pane. And since they use the NSDockTilePlugIn API, the custom icon remains even when you quit the app.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/07/CleanShot-2026-07-05-at-19.38.26.gif&#34; alt=&#34;&#34; height=&#34;531&#34; width=&#34;800&#34;&gt;&lt;/figure&gt;&lt;p&gt;But let’s take this a step further. Past useful, beyond silly and ridiculous, and all the way to fun. (Remember when software was allowed to be whimsical?)&lt;/p&gt;&#xA;&lt;p&gt;One of &lt;a href=&#34;https://irisphotos.app/manifesto/&#34;&gt;Iris’s Guiding Principles&lt;/a&gt; is “Fun”:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;There is no reason to maintain and invest in your family’s photo and home video library if you’re not also going to enjoy your memories.&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I added another setting named “Show Faces in Dock”. Once enabled, you can choose any person’s face in your library and…add them to the Dock. Now your favorite people can hang out alongside your favorite apps.&lt;/p&gt;&#xA;&lt;div style=&#34;position:relative;padding-top:56.25%;&#34;&gt;&lt;iframe allow=&#34;accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;fullscreen;&#34; allowfullscreen=&#34;true&#34; loading=&#34;lazy&#34; src=&#34;https://iframe.mediadelivery.net/embed/48030/3c19705f-ee9c-4a07-bc60-19fdad2a28ca?autoplay=false&amp;amp;loop=true&amp;amp;muted=true&amp;amp;preload=true&amp;amp;responsive=true&#34; style=&#34;border:0;position:absolute;top:0;height:100%;width:100%;&#34;&gt;&lt;/iframe&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;br&gt;Why?&lt;/p&gt;&#xA;&lt;p&gt;Because software should be fun and joyful just as much as it should be useful. That’s why.&lt;/p&gt;&#xA;&lt;p&gt;Iris is available &lt;a href=&#34;https://irisphotos.app/&#34;&gt;directly from the app’s website&lt;/a&gt; or in the &lt;a href=&#34;https://apps.apple.com/us/app/iris-photo-video-library/id6761598836&#34;&gt;Mac App Store&lt;/a&gt;. Only the direct version includes fun extras like custom app icons and Dock faces.&lt;/p&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>Fossils in the Ground</title>
		<link>https://tyler.io/2026/05/27/fossils-in-the-ground/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Wed, 27 May 2026 00:00:00 -0400</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=3052</guid>
		<category>Blog</category>
		<description>Iris ships today. 2,023 days since the first line of code. Before I say anything about what it is, I want to show you what the app started as — because the two things barely resemble each other, and the gap between them is basically the whole story.</description>
		<content:encoded>&lt;p&gt;&lt;a href=&#34;https://irisphotos.app/&#34;&gt;Iris&lt;/a&gt; ships today.&lt;/p&gt;&#xA;&lt;p&gt;2,023 days since the first line of code. Before I say anything about what it &lt;em&gt;is&lt;/em&gt;, I want to show you what the app started as — because the two things barely resemble each other, and the gap between them is basically the whole story.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/hero-light-1024x721.jpg&#34; alt=&#34;&#34; height=&#34;721&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;That’s the finished thing. Now let me rewind almost six years.&lt;/p&gt;&#xA;&lt;h2 id=&#34;it-started-as-antiphoto-and-it-wasnt-really-a-photo-app&#34;&gt;It started as “AntiPhoto,” and it wasn’t really a photo app&lt;/h2&gt;&#xA;&lt;p&gt;The first version, from November 2020, was called AntiPhoto. The name was a &lt;em&gt;mood&lt;/em&gt;. I had tens of thousands of photos and videos scattered across drives and old phone backups, and Apple Photos wanted me to live inside &lt;em&gt;its&lt;/em&gt; library, on &lt;em&gt;its&lt;/em&gt; terms. I didn’t want a walled garden. I wanted something that could point at a messy folder and just make sense of it.&lt;/p&gt;&#xA;&lt;p&gt;So the very first build wasn’t about browsing pretty pictures at all. It was a triage tool. It scanned a folder and tried to &lt;em&gt;understand&lt;/em&gt; each image — running it through machine learning models to pull out scene categories, objects, and any text it could find.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/02_antiphoto_grid-1024x713.jpg&#34; alt=&#34;&#34; height=&#34;713&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;AntiPhoto, week one. Every photo auto-tagged with whatever the models thought was in it. Half of these tags are wrong, which was sort of the point — I was trying to see how far this could go.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Behind the grid was a little command-line program I called &lt;code&gt;TriageDemo&lt;/code&gt;. You pointed it at a directory and it printed out everything it could infer per image: categories with confidence scores, detected objects, OCR’d text, the works.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/03_triage_terminal-1024x641.jpg&#34; alt=&#34;&#34; height=&#34;641&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;The actual seed of the whole project: &lt;code&gt;TriageDemo&lt;/code&gt; chewing through a folder, scoring every guess. “Category: structure 0.996. Term: people 0.98. Term: sign 0.85.”&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you’d asked me then, I’d have told you I was building a search engine for your own hard drive. Faces, things, text-in-images — index all of it, make it findable. The fact that it happened to contain your family photos was almost incidental.&lt;/p&gt;&#xA;&lt;p&gt;That framing didn’t last.&lt;/p&gt;&#xA;&lt;h2 id=&#34;renaming-to-iris&#34;&gt;Renaming to Iris&lt;/h2&gt;&#xA;&lt;p&gt;By the end of December 2020, “AntiPhoto” had become Iris. (The internal library format kept the name &lt;code&gt;AntiPhotoLibrary&lt;/code&gt; for an embarrassingly long time afterward — you can still find it lurking in old screenshots.) Within about six weeks the skeleton of the real app was already there: sources, dates, places, people, things, and a status bar quietly counting how much it had scanned.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/04_iris_2020-1024x698.jpg&#34; alt=&#34;&#34; height=&#34;698&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;December 2020. Newly renamed, already counting EXIF, GPS, ML, and hash passes in the status bar. Everything after this was variations on a theme.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I liked “Iris” because it refused to mean one thing. It’s the iris of your &lt;strong&gt;eye&lt;/strong&gt;. It’s the &lt;strong&gt;aperture&lt;/strong&gt; of a camera. And it’s the &lt;strong&gt;flower&lt;/strong&gt;. I spent a genuinely unreasonable amount of the next several years unable to decide which of those three the app actually was. You can watch me fail to decide, right in the icon.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-icon-saga&#34;&gt;The icon saga&lt;/h2&gt;&#xA;&lt;p&gt;This is the part I’m most sheepish about. Here is the design “process,” and I use that word generously. A lot of bad clip-art testing out ideas and even worse &lt;del&gt;Photoshop&lt;/del&gt; Acorn choices.&lt;/p&gt;&#xA;&lt;p&gt;It began on-the-nose: an eyeball, inside a camera lens. Both meanings of “iris,” literally stacked on top of each other.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/05_icon_eye.jpg&#34; alt=&#34;&#34; height=&#34;760&#34; width=&#34;760&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Exhibit A: the “what if we just did both” icon. An eye. In a lens. Subtle.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Then I swung hard toward the flower. In January 2022 the icon became a sketched iris bloom — blue fading to magenta, on a purple tile. Meh. It also looked nothing like a utility for searching 100,000 files, which is what the app actually was by then.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/06_icon_painted_iris.jpg&#34; alt=&#34;&#34; height=&#34;860&#34; width=&#34;900&#34;&gt;&lt;/figure&gt;&lt;p&gt;Then, in late 2022, image-generation tools showed up and I completely lost the plot. I generated &lt;em&gt;dozens&lt;/em&gt; of camera-lens-inside-a-flower icons and saved them all in a folder I named, with no irony, “Icon Apps.” Antique. Black. Blurred Rainbow Waves. Drippy Flower. Funky Shape. Purple Stars. Starfield. White. I could not stop.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/07_icon_apps_grid-1024x755.jpg&#34; alt=&#34;&#34; height=&#34;755&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;A small sample of the icon binge. There were more. There are always more.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;I even went to space.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/08_icon_space.jpg&#34; alt=&#34;&#34; height=&#34;760&#34; width=&#34;760&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;“Space Iris.” This version hung around for a surprisingly long time through early beta versions that friends and family were testing.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;For even longer, it came back around to, fittingly, a flower After four years and a few dozen detours, the eye and the lens quietly stepped aside and let the flower win.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/icon_512x512@2x.png&#34; alt=&#34;&#34; height=&#34;1024&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;But then Apple came around and decided to put everyone’s Mac apps in &lt;em&gt;&lt;a href=&#34;https://9to5mac.com/2025/08/08/macos-tahoe-fix-gray-box-icons/&#34;&gt;squircle jail&lt;/a&gt;&lt;/em&gt;. I needed to align with Tahoe’s demoralizing icon design guidelines and keep everything within the squircle bounds. Which led to this compromise:&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/tahoe-flower.png&#34; alt=&#34;&#34; height=&#34;1024&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;As much as I had learned to love the rainbow flower over the two years it was the app’s icon, it had way too much detail — especially in the modern Apple design era.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/Iris-App-Icon-1024.png&#34; alt=&#34;&#34; height=&#34;1024&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;Which brings us to the final icon design that Iris ships with today.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-modes-that-came-and-went&#34;&gt;The modes that came and went&lt;/h2&gt;&#xA;&lt;p&gt;Under the hood, Iris was organized around &lt;strong&gt;modes&lt;/strong&gt; — a Browse / Organize / Find toggle at the top of the window. By 2022 you could see it sitting (smugly) right next to Apple Photos, which is exactly where I kept it while I worked.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/09_side_by_side_photos-1024x584.jpg&#34; alt=&#34;&#34; height=&#34;584&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Iris (right) next to the thing it was a reaction to (left), August 2022. Note the “image analysis remaining” counter — there was always more to scan.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some of those modes were wildly ambitious, and not all of them survived contact with reality. My favorite casualty is &lt;strong&gt;Explore Mode&lt;/strong&gt; — a drag-and-drop visual query builder I described in my own notes as “Advanced Search for Normals.” The idea was that you’d drag People, Places, Things, and Text onto a canvas and wire them together with AND/OR connectors to build a search visually, no query syntax required.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/10_explore_mode-1024x705.jpg&#34; alt=&#34;&#34; height=&#34;705&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Explore Mode, as sketched on my iPad. I still think this is a good idea. I also fully understand why it didn’t ship in this form — note my own margin note worrying about whether places have to be OR’d “b/c a photo can’t be in more than one at a time.”&lt;/em&gt;&lt;/p&gt;&#xA;&lt;div style=&#34;position:relative;padding-top:56.25%;&#34;&gt;&lt;iframe allow=&#34;accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;fullscreen;&#34; allowfullscreen=&#34;true&#34; loading=&#34;lazy&#34; src=&#34;https://iframe.mediadelivery.net/embed/50686/8da76b22-454b-4930-b03b-b5907a3a40cc?autoplay=false&amp;amp;loop=true&amp;amp;muted=true&amp;amp;preload=true&amp;amp;responsive=true&#34; style=&#34;border:0;position:absolute;top:0;height:100%;width:100%;&#34;&gt;&lt;/iframe&gt;&lt;/div&gt;&#xA;&lt;p&gt;This is the only screen recording of the old Explore Mode I could find.&lt;/p&gt;&#xA;&lt;p&gt;Then there was also &lt;strong&gt;Organize Mode&lt;/strong&gt;, which was its own little universe. You’d collect items onto a “shelf,” then run batch operations on the whole shelf at once: set dates, fix locations, sort into date folders, correct OCR. There was a whole scored &lt;strong&gt;duplicate finder&lt;/strong&gt; in there — same filename worth +2, same size +1, same hash +5, with a hopeful “ML?” scribbled at the bottom — that computed a “dupe %” for every candidate.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/11_organize_mode-705x1024.jpg&#34; alt=&#34;&#34; height=&#34;1024&#34; width=&#34;705&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Organize Mode. Half of this shipped, half of it is still a someday-maybe, and the duplicate scorer was way more fun to design than it had any right to be.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;The same notebooks have pages and pages on &lt;strong&gt;People&lt;/strong&gt;: per-person “lifestreams,” matching faces by vector distance (the more faces you confirm, the better the guesses get), a biography view that charts how often someone appears in your photos by age, and a wistful note asking whether I should let you group people into families. Some of that is in the app today. Some of it is still just ink.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/Biography-1024x768.jpg&#34; alt=&#34;&#34; height=&#34;768&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/People-Editor-1024x607.jpg&#34; alt=&#34;&#34; height=&#34;607&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/People-Window-1024x821.jpg&#34; alt=&#34;&#34; height=&#34;821&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/Timeline-1024x741.jpg&#34; alt=&#34;&#34; height=&#34;741&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;div style=&#34;position:relative;padding-top:56.25%;&#34;&gt;&lt;iframe allow=&#34;accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;fullscreen;&#34; allowfullscreen=&#34;true&#34; loading=&#34;lazy&#34; src=&#34;https://iframe.mediadelivery.net/embed/50686/2d567fb9-fbd4-4bce-8d0d-0f95745e8ced?autoplay=false&amp;amp;loop=true&amp;amp;muted=true&amp;amp;preload=true&amp;amp;responsive=true&#34; style=&#34;border:0;position:absolute;top:0;height:100%;width:100%;&#34;&gt;&lt;/iframe&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;One last, random, video. Iris had a prototype interactive graph view (like &lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt;) that shows a visually weighted representation of how your photos connect with each other by way of people, places, dates, and things.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-boring-work-nobody-sees&#34;&gt;The boring work nobody sees&lt;/h2&gt;&#xA;&lt;p&gt;For every dreamy sketch there were months of deeply unglamorous hitting my head against the wall, none of which makes a good screenshot. The single hardest problem was often just &lt;em&gt;scrolling&lt;/em&gt;. A photo library isn’t 200 items, it’s 200,000+, and they all have different aspect ratios, and you want a buttery justified grid that never stutters. I have a screen recording I named “100k Spinning Scroll” from April 2022 — the day a library of &lt;strong&gt;101,706 items&lt;/strong&gt; finally scrolled without choking — and I remember it feeling like a bigger win than any feature. But even today, Iris has performance hiccups — especially around complex searches and truly massive libraries. But if I waited to solve every bug, I’d never ship.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/05/12_100k_inspector-1024x617.jpg&#34; alt=&#34;&#34; height=&#34;617&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;101,706 items, scrolling smoothly at last. That meant a custom collection-view layout, a background scanning daemon, and a lot of staring at memory graphs.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;That daemon — &lt;code&gt;IrisScanner&lt;/code&gt; — was its own saga. It does all the heavy lifting (EXIF, hashing, location lookups, face and object ML) in the background without making the app feel slow or eating your RAM. I spent a good chunk of 2023 in Instruments getting it to do all of that while holding steady around 266 MB. Nobody will ever notice this work, which is exactly the goal.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-iris-actually-became&#34;&gt;What Iris actually became&lt;/h2&gt;&#xA;&lt;p&gt;Here’s the part I didn’t see coming. That original triage idea — the thing that made me call it &lt;em&gt;AntiPhoto&lt;/em&gt; — never died. It just grew up.&lt;/p&gt;&#xA;&lt;p&gt;And somewhere along the way the whole emotional center of the thing shifted. I set out to build an anti-Photos &lt;em&gt;utility&lt;/em&gt; — a search engine for a hard drive. What I actually ended up with is a memory keeper. Open a photo today and Iris tells you the date, surfaces “16 items on this day,” drops a pin on the map, and lists the people in the frame with their ages quietly calculated from their birthdays. That is not a utility. That is the opposite of anti-anything.&lt;/p&gt;&#xA;&lt;p&gt;I think that’s the real lesson from digging through six years of old screenshots. You start with a thesis — &lt;em&gt;mine was basically “Apple Photos is not for me”&lt;/em&gt; — and you build toward it. But the app keeps making little counter-arguments. The scroll work pulls you toward big libraries. The face work pulls you toward people. The “on this day” experiment pulls you toward nostalgia. And one day you look up and the spiteful little triage tool has become a thing you’re genuinely fond of, named after a flower you spent three years refusing to commit to.&lt;/p&gt;&#xA;&lt;p&gt;Stephen King is my favorite author. And if you don’t count &lt;em&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/The_Elements_of_Style&#34;&gt;The Elements of Style&lt;/a&gt;&lt;/em&gt;, he wrote the best book &lt;em&gt;ever&lt;/em&gt; about writing, &lt;em&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/On_Writing:_A_Memoir_of_the_Craft&#34;&gt;On Writing&lt;/a&gt;&lt;/em&gt;. He says:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;“Stories are found things, like fossils in the ground.”&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The same can be said about software. Apps go where they want to go. The best you can do is keep showing up and let them.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://irisphotos.app/&#34;&gt;Iris is out today&lt;/a&gt;. Thanks for being here for the wrong turns.&lt;/p&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>“Get 3 months of free music with your AirPods Pro”</title>
		<link>https://tyler.io/2026/02/27/get-3-months-of-free-music-with-your-airpods-pro/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Fri, 27 Feb 2026 00:00:00 -0500</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=3008</guid>
		<category>Blog</category>
		<description>I don&amp;#39;t care if AirPods are the better product for my needs. They&amp;#39;re no longer the experience I want. And, increasingly, more and more of what Apple offers is not, either.</description>
		<content:encoded>&lt;p&gt;Today I was getting ready for a Zoom meeting, but my AirPods (Pro, gen 3) weren’t connecting to my work laptop (Tahoe 26.3). I assumed it was one of the usual AirPods failure modes where my phone or personal laptop might be holding onto the connection from the day before.&lt;/p&gt;&#xA;&lt;p&gt;I checked my iPhone — no connection.&lt;/p&gt;&#xA;&lt;p&gt;Next troubleshooting step: Put them back in the case. Count to five. Open the case. Hope they connect.&lt;/p&gt;&#xA;&lt;p&gt;Worse. I get the dreaded half-screen setup sheet that says something like “These aren’t your AirPods” asking if I want to connect them. This happens a few times a year. They’ll go missing from my Apple account, I’ll re-pair, and then they mostly work for the next six months.&lt;/p&gt;&#xA;&lt;p&gt;Fine, start the setup process.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Yes, I want to enable Announce Calls.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;No, I don’t want to enable Announce Notifications.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Yes, I want to use Personalized Volume.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Yes, I want to enable head gestures to answer and decline phone calls.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;No, I don’t want to turn on Conversational Awareness.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;No, I don’t want to take a hearing test.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;No, I don’t want to try a demo of live translation.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;And then…&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Get 3 months of free music with your AirPods Pro&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;An advertisement. In the setup wizard. After a product failure. While I’m stressed and late for a work meeting.&lt;/p&gt;&#xA;&lt;p&gt;And Apple couldn’t even be bothered to make the advertisement properly fit on screen. On their latest flagship iPhone.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/02/fucking-stupid-airpods.jpeg&#34; alt=&#34;&#34; height=&#34;768&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;&lt;p&gt;My wife switched to a pair of &lt;a href=&#34;https://electronics.sony.com/audio/headphones/all-headphones/p/wfls910n-g&#34;&gt;Sony earbuds&lt;/a&gt; last year after swearing off AirPods for frequently failing to charge. She’s enjoyed them. So instead of accepting Apple’s generous three free months of Apple Music, I put that money to better use and bought a pair of &lt;a href=&#34;https://electronics.sony.com/audio/headphones/truly-wireless-earbuds/p/wf1000xm5-b&#34;&gt;Sony WF-1000XM5&lt;/a&gt; (what a name) on my lunch break.&lt;/p&gt;&#xA;&lt;p&gt;I no longer care if AirPods are the better product for my needs. They’re not the experience I want. And, increasingly, more and more of what Apple offers is not, either.&lt;/p&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/02/bb-email-sony-1024x866.png&#34; alt=&#34;&#34; height=&#34;866&#34; width=&#34;1024&#34;&gt;&lt;/figure&gt;</content:encoded>
	</item>
	<item>
		<title>“Things I think I’m good at”</title>
		<link>https://tyler.io/2026/01/27/things-i-think-im-good-at/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Tue, 27 Jan 2026 00:00:00 -0500</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2981</guid>
		<category>Blog</category>
		<description>As a parent, I often lose faith that I&amp;#39;m doing a good job raising my kids, but then I&amp;#39;ll get a sign that maybe things are going OK after all. Last night, my daughter came into my office to show me a list she made of things she thinks she&amp;#39;s good at. Reading it nearly melted the eight inches of snow outside my window.</description>
		<content:encoded>&lt;p&gt;As a parent, I often lose faith that I’m doing a good job raising my kids, but then I’ll get a sign that maybe things are going OK after all. Last night, my daughter came into my office to show me a list she made of things she thinks she’s good at. Reading it nearly melted the eight inches of snow outside my window.&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;Things I think I’m good at.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Math&lt;/li&gt;&#xA;&lt;li&gt;Soccer&lt;/li&gt;&#xA;&lt;li&gt;Knowing peoples emotions&lt;/li&gt;&#xA;&lt;li&gt;Sketching&lt;/li&gt;&#xA;&lt;li&gt;Run Fast&lt;/li&gt;&#xA;&lt;li&gt;Swimming&lt;/li&gt;&#xA;&lt;li&gt;Flipping on trampoline&lt;/li&gt;&#xA;&lt;li&gt;Singing&lt;/li&gt;&#xA;&lt;li&gt;Dancing&lt;/li&gt;&#xA;&lt;li&gt;Making people laugh&lt;/li&gt;&#xA;&lt;li&gt;Making friends&lt;/li&gt;&#xA;&lt;li&gt;Writing fast and readable&lt;/li&gt;&#xA;&lt;li&gt;Being with one another&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2026/01/IMG_2526-768x1024.jpeg&#34; alt=&#34;&#34; height=&#34;1024&#34; width=&#34;768&#34;&gt;&lt;/figure&gt;</content:encoded>
	</item>
	<item>
		<title>“This time it’s not fatigue, but disconnection”</title>
		<link>https://tyler.io/2025/12/06/this-time-its-not-fatigue-but-disconnection/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Sat, 06 Dec 2025 00:00:00 -0500</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2905</guid>
		<category>Uncategorized</category>
		<description>&amp;#34;My idea of being a luddite is more like someone who keeps advocating that technology should be in our service, and not vice-versa. Technology seems to be on a path of eroding people’s agency, whereas I want people to have more agency and to be less ‘personal data fodder’.&amp;#34;</description>
		<content:encoded>&lt;p&gt;&lt;a href=&#34;https://morrick.me/archives/10176&#34;&gt;Riccardo Mori&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;What is happening with the monetise &amp;amp; weaponise strategy, instead, is this progressive fracture and disconnect between tech companies and regular people. A disconnect where people at various levels of tech-savvy feel equally at odds with the behaviour of many tech companies. I certainly don’t view tech as an ally or as something that should benefit me or improve my life anymore. More like a user of technology, I increasingly feel used and lied to by it; I feel like a mere instrument that exists to guarantee its survival.&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;My idea of being a luddite is more like someone who keeps advocating that technology should be in &lt;em&gt;our&lt;/em&gt; service, and not vice-versa. Technology seems to be on a path of eroding people’s agency, whereas I want people to have &lt;em&gt;more&lt;/em&gt; agency and to be less ‘personal data fodder’.&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Riccardo accomplishes two extraordinary things in this article:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;He successfully puts into words what so many of us in the larger tech community (however you define that) have been feeling over the last few years.&lt;/li&gt;&#xA;&lt;li&gt;He authored one of his best posts ever. That’s no small feat.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>Alan.app</title>
		<link>https://tyler.io/2025/11/26/alan/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Wed, 26 Nov 2025 00:00:00 -0500</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2770</guid>
		<category>Blog</category>
		<description>Maybe it&amp;#39;s because my eyes are getting old or maybe it&amp;#39;s because the contrast between windows on macOS keeps getting worse. Either way, I built a tiny Mac app last night that draws a border around the active window. I named it &amp;#34;Alan&amp;#34;.</description>
		<content:encoded>&lt;p&gt;Maybe it’s because my eyes are getting old or maybe it’s because &lt;a href=&#34;https://tyler.io/2020/09/surtainly-not/#active-window&#34;&gt;the contrast between windows&lt;/a&gt; on macOS keeps getting worse. Either way, I built a tiny Mac app last night that draws a border around the active window. I named it “Alan”.&lt;/p&gt;&#xA;&lt;p&gt;In Alan’s preferences, you can choose a preferred border width and colors for both light and dark mode.&lt;/p&gt;&#xA;&lt;p&gt;That’s it. That’s the app.&lt;/p&gt;&#xA;&lt;p&gt;You can &lt;a href=&#34;https://github.com/tylerhall/Alan/releases/tag/v1.0&#34;&gt;download a notarized copy of Alan here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Here’s a short demo video.&lt;/p&gt;&#xA;&lt;div style=&#34;position:relative;padding-top:56.25%;&#34;&gt;&lt;iframe allow=&#34;accelerometer;gyroscope;autoplay;encrypted-media;picture-in-picture;&#34; allowfullscreen=&#34;true&#34; loading=&#34;lazy&#34; src=&#34;https://iframe.mediadelivery.net/embed/48030/d56950d0-4c13-498d-911b-8f61fda8e690?autoplay=false&amp;amp;loop=true&amp;amp;muted=false&amp;amp;preload=true&amp;amp;responsive=true&#34; style=&#34;border:0;position:absolute;top:0;height:100%;width:100%;&#34;&gt;&lt;/iframe&gt;&lt;/div&gt;&#xA;&lt;p&gt;If you want to hide Alan’s icon from the Dock, you can set a hidden preference by running this Terminal command. Then, relaunch the app.&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;&lt;code&gt;defaults write studio.retina.Alan hideDock -bool true&lt;/code&gt;&lt;/pre&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>Some Books</title>
		<link>https://tyler.io/2025/08/11/some-books/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Mon, 11 Aug 2025 00:00:00 -0400</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2748</guid>
		<category>Blog</category>
		<description>An internet friend asked the other day: It appears I have finally rebooted my reading hobby, after years of trying. Feels good. What’s something great you’ve read? Here’s some of my favorites (in no particular order). The Ocean at the End of…</description>
		<content:encoded>&lt;p&gt;An internet friend &lt;a href=&#34;https://allamaraine.io/@hisaac/114990274156235460&#34;&gt;asked the other day&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;It appears I have finally rebooted my reading hobby, after years of trying. Feels good.&lt;/p&gt;&#xA;&lt;p&gt;What’s something great you’ve read?&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Here’s some of my favorites (in no particular order).&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/18505792-the-ocean-at-the-end-of-the-lane?from_search=true&amp;amp;from_srp=true&amp;amp;qid=QVuAvB3nsE&amp;amp;rank=1&#34;&gt;&lt;em&gt;The Ocean at the End of the Lane&lt;/em&gt;&lt;/a&gt; by Neil Gaiman&lt;br&gt;Wonderful, quick, fantasy novel.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/48328.Revolutionary_Road?from_search=true&amp;amp;from_srp=true&amp;amp;qid=8X3AVijfNU&amp;amp;rank=2&#34;&gt;&lt;em&gt;Revolutionary Road&lt;/em&gt;&lt;/a&gt; by Richard Yates&lt;br&gt;A gut-wrenching family drama.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/6913830-blind-descent?from_search=true&amp;amp;from_srp=true&amp;amp;qid=ZsN7tBayDf&amp;amp;rank=1&#34;&gt;&lt;em&gt;Blind Descent: The Quest to Discover the Deepest Place on Earth&lt;/em&gt;&lt;/a&gt; by James M. Tabor&lt;br&gt;I’ve never been hooked so hard by a non-fiction book.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://sive.rs/n&#34;&gt;&lt;em&gt;Hell Yeah or No&lt;/em&gt;&lt;/a&gt; by Derek Sivers&lt;br&gt;Modern advice and wisdom.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/205363955-meditations-for-mortals?from_search=true&amp;amp;from_srp=true&amp;amp;qid=1XNSxQpk3k&amp;amp;rank=1&#34;&gt;&lt;em&gt;Mediation for Mortals&lt;/em&gt;&lt;/a&gt; by Oliver Burkeman&lt;br&gt;Forced me to rethink parts of my life.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/38169.Alas_Babylon&#34;&gt;&lt;em&gt;Alas, Babylon&lt;/em&gt;&lt;/a&gt; by Pat Frank&lt;br&gt;My dad was an English teacher, and this was a favorite of his – and now mine.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/145654483-midnight-on-beacon-street&#34;&gt;&lt;em&gt;Midnight on Beacon Street&lt;/em&gt;&lt;/a&gt; by Emily Ruth Verona&lt;br&gt;Horror joy ride.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/42779092-the-chain&#34;&gt;&lt;em&gt;The Chain&lt;/em&gt;&lt;/a&gt; by Adrian McKinty&lt;br&gt;Hold on to your butt horror.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.goodreads.com/book/show/840.The_Design_of_Everyday_Things&#34;&gt;&lt;em&gt;The Design of Everyday Things&lt;/em&gt;&lt;/a&gt; by Donald A. Norman&lt;br&gt;A great book for software developers that isn’t about software.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>Migrating Day One Journal Entries to Obsidian</title>
		<link>https://tyler.io/2025/06/23/migrating-day-one-journal-entries-to-obsidian/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Mon, 23 Jun 2025 00:00:00 -0400</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2712</guid>
		<category>Blog</category>
		<description>I recently moved away from Day One and am now using Obsidian to keep my daily journal. To make that possible, I needed to migrate over a decade’s worth of journal entries into an Obsidian-friendly format. When I first started using Day…</description>
		<content:encoded>&lt;p&gt;I recently moved away from &lt;a href=&#34;https://dayoneapp.com/&#34;&gt;Day One&lt;/a&gt; and am now using &lt;a href=&#34;https://obsidian.md/&#34;&gt;Obsidian&lt;/a&gt; to keep my daily journal. To make that possible, I needed to migrate over a decade’s worth of journal entries into an Obsidian-friendly format.&lt;/p&gt;&#xA;&lt;p&gt;When I first started using Day One, &lt;a href=&#34;https://tyler.io/2013/10/journaling/&#34;&gt;I wrote about it on this blog&lt;/a&gt; and said one of the requirements needed to be&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;…and stores my data in an open format that I’m confident is future proof and exportable to another system if the need ever arises.&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I’m happy to say that worked out well. I don’t know what I’d do if my 20,000+ entries were locked-up in a proprietary format.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tylerhall/DayOne-Obsidian-Exporter&#34;&gt;This Swift script&lt;/a&gt; takes &lt;a href=&#34;https://dayoneapp.com/guides/tips-and-tutorials/exporting-entries/&#34;&gt;Day One’s JSON export file&lt;/a&gt; (and media attachments) and converts each entry into a YAML + Markdown file that is friendly to Markdown editors like Obsidian.&lt;/p&gt;&#xA;&lt;p&gt;Entries are sorted into folders based on their date with support for multiple entries per day. Media attachments are saved alongside the Markdown files as inline attachments.&lt;/p&gt;&#xA;&lt;p&gt;Running the script&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;&lt;code&gt;d1obsidian &amp;lt;path-to-export.json&amp;gt; &amp;lt;some-output-folder&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;will create a directory structure like this:&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;&lt;code&gt;/export-folder/&#xA;  /2023/&#xA;  /2024/&#xA;  /2025/&#xA;    /2024-01 - January/&#xA;    /2024-02 - Februrary/&#xA;      /2024-02-01/&#xA;        2024-02-01 - 001.md&#xA;        2024-02-01 - 002.md&#xA;        some-image.jpeg&#xA;        another-image.jpeg&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;figure class=&#34;wp-block-image&#34;&gt;&lt;img decoding=&#34;async&#34; src=&#34;https://cdn.tyler.io/wp-content/uploads/2025/06/458043133-88023a33-3d05-4b0a-9b7b-7a1b557f71e9-1024x726.png&#34; alt=&#34;&#34;&gt;&lt;/figure&gt;&lt;p&gt;Based on the availabe metadata, each entry’s Markdown file will look similar to:&lt;/p&gt;&#xA;&lt;pre class=&#34;wp-block-code&#34;&gt;&lt;code&gt;---&#xA;uuid: AA7A6A77946547449ED0BBC99349537C&#xA;creationDate: 2013-02-13T20:38:54Z&#xA;timeZone: America/Chicago&#xA;location:&#xA;  latitude: 37.546&#xA;  longitude: -77.439&#xA;  localityName: Richmond&#xA;  administrativeArea: Virginia&#xA;  country: United States&#xA;weather:&#xA;  conditionsDescription: Cloudy&#xA;  weatherCode: cloudy&#xA;  temperatureCelsius: 3.5&#xA;---&#xA;Today I went for a run and ate a sandwhich.&#xA;&#xA;![](991F17490A0F4A919116C5AB428E6F1E.jpeg)&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;It’s worth noting that this script does not exhaustively migrate all fields that Day One supports — mostly because I couldn’t find a complete listing of all the available fields. It also strips out &lt;code&gt;dayone-moment:/workout&lt;/code&gt; and &lt;code&gt;dayone-moment:/location&lt;/code&gt; in-line references from your entires.&lt;/p&gt;&#xA;&lt;p&gt;And in keeping with open source tradition, there are plenty of other export scripts floating around GitHub and the Obsidian forums, but it was easier to hack this together quickly than try and modify someone else’s to match the output I wanted.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/tylerhall/DayOne-Obsidian-Exporter&#34;&gt;DayOne-Obsidian-Exporter on GitHub&lt;/a&gt;&lt;/p&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>All Your Brand Are Belong To Us</title>
		<link>https://tyler.io/2025/06/12/all-your-brand-are-belong-to-us/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Thu, 12 Jun 2025 00:00:00 -0400</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2706</guid>
		<category>Blog</category>
		<description>The last iOS redesign, iOS 7 in 2013, laid the foundation for a neutral, nearly agnostic visual language that third-party developers and companies could build their own brand and corporate design on top of. It was such a clean slate that, twelve…</description>
		<content:encoded>&lt;p&gt;The last iOS redesign, &lt;a href=&#34;https://en.wikipedia.org/wiki/IOS_7&#34;&gt;iOS 7 in 2013&lt;/a&gt;, laid the foundation for a neutral, nearly agnostic visual language that third-party developers and companies could build their own brand and corporate design on top of. It was such a clean slate that, twelve years later, most major apps look similar — if not identical — between their iOS and Android counterparts. Ignoring platform exclusives, most apps eschew Apple and Android’s branding in favor of their own.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Liquid_Glass&#34;&gt;Liquid Glass&lt;/a&gt;, in Apple’s 2026 operating systems, feels like an attempt to reassert control over third-party app branding — forcing others to become a subset of the larger iOS brand and look and feel.&lt;/p&gt;&#xA;&lt;p&gt;It also strikes me as a defense against the continued growth of cross-platform frameworks by furthering the distance between what’s a “real” iOS app versus a cross-platform app — or even against apps that try to meet in the middle of both platforms design-wise. It will be more challenging to build an app that feels at home on iOS with limited development and design budgets.&lt;/p&gt;&#xA;&lt;p&gt;Put another way: three days after the WWDC keynote, Liquid Glass feels just as much a strategic business move as it does a design solution &lt;del&gt;in search of a problem&lt;/del&gt;. (I’m striking out that last phrase from my original post. It was unintentionally more harsh than I meant it to be.)&lt;/p&gt;&#xA;&lt;p&gt;(&lt;a href=&#34;https://en.wikipedia.org/wiki/All_your_base_are_belong_to_us&#34;&gt;For my younger readers&lt;/a&gt;.)&lt;/p&gt;&#xA;</content:encoded>
	</item>
	<item>
		<title>minifeed</title>
		<link>https://tyler.io/2025/01/14/minifeed/</link>
		<dc:creator>tyler</dc:creator>
		<pubDate>Tue, 14 Jan 2025 00:00:00 -0500</pubDate>
		<guid isPermaLink="false">https://tyler.io/?p=2574</guid>
		<category>Blog</category>
		<description>I recently discovered minifeed, and it has quickly become one of my favorite things on the internet. Once, maybe twice a day, I load the homepage and browse through the latest posts from real blogs written by real humans. I almost always find something surprising, delightful, weird, or just plain fun to read. Even better, I come away with a new blogger to follow.</description>
		<content:encoded>&lt;p&gt;I recently discovered &lt;a href=&#34;https://minifeed.net/&#34;&gt;minifeed&lt;/a&gt;, and it has quickly become one of my favorite things on the internet.&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Minifeed&lt;/strong&gt; is a curated blog reader and search engine. We collect humans-written blogs to make them discoverable and searchable.&lt;/p&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Once, maybe twice a day, I load the homepage and browse through the latest posts from real blogs written by real humans. I almost always find something surprising, delightful, weird, or just plain fun to read. Even better, I come away with a new blogger to follow.&lt;/p&gt;&#xA;&lt;p&gt;From the minifeed &lt;a href=&#34;https://minifeed.net/about&#34;&gt;About&lt;/a&gt; page, there is a self-imposed deadline to decide if the service is worth maintaining:&lt;/p&gt;&#xA;&lt;blockquote class=&#34;wp-block-quote is-layout-flow wp-block-quote-is-layout-flow&#34;&gt;&#xA;&lt;p&gt;I have been building and using Minifeed since December 2023 (see &lt;a href=&#34;https://minifeed.net/about/changelog&#34;&gt;changelog&lt;/a&gt;). I will launch it publicly by the end of 2024, allow paid subscriptions, and keep actively working on it for 1 year (until end of 2025). In December 2025 I will make a public announcement choosing between one of 3 options:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Given enough interest and support from users, continue to develop and maintain Minifeed for the long term.&lt;/li&gt;&#xA;&lt;li&gt;Given little, but not enough interest, run it for as long as the money lasts.&lt;/li&gt;&#xA;&lt;li&gt;Given no interest, shut it down and allow users to download all their data in a simple, usable format.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;I sure hope they start charging soon. I’d love to see the service last.&lt;/p&gt;&#xA;</content:encoded>
	</item>
</channel>
</rss>
