Inkwell for Mac
Last week we shipped Inkwell, our new feed reader for Micro.blog. Today I’m releasing a native Mac app for Inkwell.
You can download Inkwell directly here.
I also recorded a 3-minute video demo of the Mac app. That’s the best way to understand the app. I’ll be updating documentation and other things soon.
Gulf of Mexico. Heading out on a kind of crazy adventure that I’ll blog more about later. As usual with my travel, I’ve devised the most complicated trip possible. Boat, trains, planes!
Inkwell 1.0.1 is out for Mac with several bug fixes, especially for dark mode. Choose “Check for Updates” from the application menu to get the latest version.
If you missed the announcement, I posted a video about Inkwell yesterday.
Like the native Micro.blog client apps, Inkwell for web and macOS are open source. We aren’t great at incorporating contributions into the shipping versions, but it feels right. With AI-assisted development, the code itself is not as valuable as the whole package — design, infrastructure, etc.
Federico Viticci blogs about using Android foldables, thinking about the upcoming iPhone foldable:
Anyway, what every foldable has also taught me is that it’s just so nice to realize you can open your phone and be taken into a quasi-tablet environment without having to go grab a separate device. This happens to me all the time: I’m doing some research and realize I want to keep my browser next to, say, ChatGPT; without interrupting what I’m doing, I can open the Z Fold and continue the task, now with two apps shown on screen.
Also I love the name iPhone Duo.
Really cool set of upcoming Micro.blog plug-ins from @rscottjones for putting different kinds of travel maps on your blog. I bet this’ll work great for my attempt to visit all Texas state parks.
That’s a lot of green Ws. Spurs have won their last 18 of 20 games. 🏀
Marco Arment posted to Reddit with details on the first Overcast beta that includes transcripts. Very nicely done. The transcripts UI feels cleaner and less finicky than Apple Podcasts.
I’m testing GPT-5.4 via the API. The pricing is interesting. 5.4-mini and 5.4-nano are about 3x as expensive, but they are apparently much better, so I switched one call from 5-mini to 5.4-nano.
Meanwhile for coding I use 5.4 high with /fast and can’t burn through tokens fast enough. Really good.
Wondering if I use AI-assisted coding differently than a lot of developers. I don’t chat with AI forever to come up with a perfect plan and then have it execute it. I use AI the same way I would code traditionally, iterating quickly with dozens of quick changes. Still feels like programming.
AI coding transcript
Expanding on my short post this morning about AI-assisted coding style, I think the reason I like this iterative approach is that I don’t always know what I want the UI to look like until I build it. UI design is a bit like sculpting, slowly revealing the shape of everything.
This may also be a difference in style between Claude Code and Codex, where Claude prefers to come up with a plan first, and Codex is fine just running with small instructions and figuring out the details as it goes.
Here’s a transcript of my interaction with Codex for adding podcast playback to Inkwell for Mac. I’m just including my own text, not all the logging from Codex. Maybe someone will find it interesting! Years from now I can look back and marvel at how primitive this will seem.
Here’s a screenshot of the current in-progress UI. The feature is not done. I plan to fill in the space on the right of the podcast pane with playback speed, add better download caching, and whatever else makes sense.
<style> .chat { background-color: #EFEFEF; border-radius: 5px; padding-left: 10px; padding-right: 10px; padding-top: 5px; padding-bottom: 5px; margin-bottom: 1rem; } .robot { font-size: 15px; font-family: Courier; text-align: center; margin-bottom: 1rem; } </style>
[JSON clipped]
Notice the "enclosure" field with "enclosure_url" and "itunes_duration". We'll want to add these to our model.
Next, we want to add a new player pane at the bottom of the sidebar, below the tableview. For now, it will be hidden by default. If the selected sidebar item has an enclosure, we show the new player pane. Give the new player its own view controller like MBPodcastController which you can wire up as necessary where it needs to be instantiated and called. As a placeholder, just have an orange background and a button centered with an image "play.fill". We'll add more later. Also keep tracking of whether a podcast is playing. If playing, we change the image to "stop.fill". Also if playing, we keep the podcast pane shown below the tableview. If the podcast is not playing, then when the selection changes in the tableview to another row, we hide the player pane.
"enclosure_type": "audio/mpeg",
And use enclosure_type == "audio/mpeg" to mean audio podcast enclosures, returning YES there.
Just released Inkwell for Mac 1.0.2, improving a few things and fixing bugs, especially a potential hang on launch. There’s also a help page with full release notes for each version.
Just realized today that we hadn’t released the Epilogue update for Android that improves book search. It has been done for a while. Finally out now! Lots of apps and versions to juggle right now.
My NCAA bracket could’ve started off better, but caught the last couple minutes of Spurs/Suns, so good. Officially back in the playoffs. 🏀
OpenAI is planning to unify its apps into a single app. I don’t love this. Codex is excellent on its own, and Atlas already feels cluttered. From the WSJ:
OpenAI is planning to unify its ChatGPT app, coding platform Codex and browser into a desktop “superapp,” a step to simplify the user experience and continue with efforts to focus on engineering and business customers.
Chief of Applications Fidji Simo will oversee the change and focus on helping the company’s sales team market the new product.
Amazon is working on a new phone:
According to people familiar with the new phone, “integrating artificial intelligence capabilities into the device” has been a central focus, which could mean “Transformer” may rely on mini apps like those available in ChatGPT, rather than a fully-fledged app store.
This might work. Alexa and mini apps could be the core UI, while still allowing Android apps and the web where needed.
It’s 2026 and AppKit is the best way to build Mac apps. Even a part-time luddite like me is surprised by this. SwiftUI is great for new programmers who don’t want to embrace AI-assisted coding, but old school developers should not feel any guilt sticking with AppKit. It’s still the gold standard.
This is my new favorite article from The Onion. Southwest Airlines Begins Assigning Chores:
For instance, everyone in row 18 might now be in charge of trash on this flight, while those in the fire exit rows will push the beverage cart. Chore assignments will be clearly printed on all boarding passes for ticketed travelers 2 years old and above. Those flying standby may refer to the chore wheels posted at fore and aft of the plane. Of course, you will have the option to pay extra if you want a more comfortable job.
Nick Heer in a fediverse post:
Do I trust this computer?, my iPhone asks me for what has to be the thousandth time using the same computer logged into the same Apple ID. Enter your passcode, it demands once again, reflecting the hardware, software, and services working together in a way only Apple can deliver.
Another one is charging my Apple Watch via the Mac and needing to confirm if I trust this accessory. Too secure! Only Apple could do this.
I blogged briefly last year about feature creep when there is no cost to adding features with AI. Need to keep reminding myself of this. I’ve been adding podcast support to Inkwell, but it’s not intended to be a podcast player that can do everything… Just the right set of features.
We are pretty much done clearing out my mom’s house. I’ve found many little memories, keepsakes, books, and other things. One surprise was this letter my mom wrote from Greece in 1980. Preserving it here on my blog as a snapshot in time.
Finished reading: To Shape a Dragon’s Breath by Moniquill Blackgoose. Starts with a girl discovering a dragon egg, but really a story about indigenous people, race, class, and colonialism. 📚
NetNewsWire via AppleScript via MCP… I wonder what the future of scriptability is. We’ve got AppleScript, Shortcuts, App Intents, and MCP. But meanwhile you have agents which are fine just firing up command-line tools.
Trying to be better about cleaning up unused Git branches in a new project, before they get out of control. Micro.blog has hundreds of stale branches because I haven’t taken the time to sort out if there are a few I might want to keep, just in case.
Loops adds starter kits. I’ve been poking around the Loops API to see if I should support this in the way we support Bluesky starter packs. Probably will wait to see what Mastodon does.
Apple’s Mac app notarization is throwing errors for me today, maybe networking problems, so I guess it’s time to take a break from work.
Catching up on this news from Bluesky:
Hubble is a new open-source project to build and operate a whole-Atmosphere public data mirror, synchronizing every atproto repository in real-time, keeping public data available even when a PDS goes down.
Great project. It’s not like the Internet Archive (no history) but more a current mirror for PDSes that might be increasingly hosted outside of Bluesky, and so without the infrastructure for backups, etc. One of Bluesky’s strengths is data portability and this leans into that.
There’s an SNL UK now! Funny so far. The cold open and a few of the other skits are on YouTube.