More from anderegg.ca
I really enjoy John Gruber’s podcast The Talk Show. However, I’ve noticed that it’s been a while since it was in my feed. I decided to chart previous episode dates to check some of my assumptions about release frequency. Cutting to the chase, here’s a link to The Talk Show Timeline. You can click/tap on days to get a pinned tooltip, which lets you link out to a particular day’s episode. I’ve tried to make this work well on mobile devices, but you’ll likely find it works best on desktop. A note about this: Gruber has mentioned in the past that there has been a personal situation that he’s been working through. He’s also mentioned something to this effect on the podcast at points, but hasn’t gone into detail. I don’t need to know more than has been said, and I just hope things are alright. I’ve read Gruber’s site since 2002 1 and listened to his podcasts since 2007. In that time, I’ve learned that he operates on his own timeline… and has a penchant for procrastination. No shade here! He’s set himself up with a work situation that I envy. I also don’t want to seem grumpy about the lack of podcast episodes; I’m just trying to understand how this current break compares to those in the past. Because it was easiest, and because it would answer my immediate questions, I only looked at the current iteration of The Talk Show. Happily, there’s a single page which lists all the episodes. It had a tiny bit of data weirdness, 2 but I was able to turn this into a JSON file with the details I cared about. With that, I used the calendar heatmap chart in Apache ECharts to display the episodes over time. Some things I noticed: While it’s been a while (29 days) since the last episode (on August 10), this isn’t unheard of. The average is about 12 days between episodes, but there have been 6 other times when the episode gap has been at least this long. The longest gap was 62 days between December 24, 2024 and February 24, 2025. There’s exactly one day with two episodes: July 19, 2014. It was “Cat Pictures” with Marco Arment, which got split into two “sides”. Here’s a link to side 1, and here’s side 2. I mentioned procrastination: 73% of episodes take place on the 16th of a month or later. 28% of episodes take place on either the last or second-last day of the month. Again, no shade! It’s something I chuckle about whenever I notice it. At the current rate, this year is about in line with output going back to 2023. While it has been a while since a new episode dropped, it’s not out of whack statistically. Anyway, this was a Labour Day project that was mostly for my own amusement. I expect there will likely be a new episode of The Talk Show some time fairly soon after tomorrow’s Apple event. I also don’t know if I’ll keep this chart up to date… though it’s not terribly onerous to do now, so who knows. I found Daring Fireball because I was researching the purchase of my first Mac around this time. It wasn’t until October of 2002, but I ended up buying one of the machines he wrote about in his first post that August. ↩ The following dates don’t match the main format: Sunday 30 November, 2025 Mon, 24 Feb 2020 16:05:34 EDT Tuesday 31 December 2019 Tuesday, June 25 2019 Sat, 16 Mar 2019 19:43:49 EDT Wednesday 31 December 2014 Monday, 30 Jun 2014 ↩
I mostly use my web stats service because I get a lizard-brain kick from watching numbers go up, but it also provides some fun insights. For example, it’s how I found out about bubbles.town. At first I thought this might be a Mastodon instance. I get a lot of referral traffic from Mastodon, but each instance has its own URL. You can guess at mas.to, but dice.camp doesn’t provide many clues. Bubbles, as it’s known, is a very nice service. It aggregates a curated list of indie blogs. People can sign up and vote for posts they enjoy, but they can’t submit new articles. Authentication and comments are both handled using Fediverse technologies. In my case, I was able to log in via my Mastodon instance. The idea is to highlight cool indie writers around the web. I love this sort of thing so very much. Anyway, this is all to say that you should check out Bubbles. Seeing a blog-based reaction to one of my posts on the service filled my heart with immense joy.
I’ve been using Photoshop since the mid-90s. First at school, with Photoshop 3, then through work. I bought my first boxed copy of CS2 in 2005, then upgraded to CS5 in 2010. I subscribed to Photoshop Creative Cloud on day one. Today, I uninstalled it. I hope I never have to use Adobe software ever again. Photoshop used to be a joy to use. Whenever I got access to an upgraded version, I’d always have fun exploring the new features. I got really good at using it. When Adobe launched the Creative Cloud version of Photoshop in 2013, I signed up immediately. The subscription meant I would always have an up-to-date Photoshop, and I loved the idea that new features would be rolled out more frequently. But over time things started getting worse. Slowly at first, but then much more quickly. Originally, the Creative Cloud app was native and relatively useful. I wasn’t ever excited to open it, but I certainly didn’t mind having it installed. At some point, it became a terrible web-based app. Over time it felt slower and more broken. One thing I loved as part of the Creative Cloud subscription was the Creative Cloud Synced Files service. Basically, it was Adobe’s version of DropBox. I used it all the time to share screenshots and samples of in-progress work. Then, in 2023, Adobe announced they’d be discontinuing the service. There was so much pushback that they delayed the service’s retirement for a year. It makes sense, it was a nice feature of the subscription plan and businesses had come to rely on it. This was the first time I started questioning my Creative Cloud subscription. Out of curiosity, I looked around at the available options. I played with Pixelmator Pro, Acorn, and Affinity Photo. They were all fine, but I couldn’t let Photoshop go. I just knew it too well. But I also started realizing how little I was using it. I used to do a lot of traditional web development. In days of yore, this involved getting Photoshop mockups from designers. Those images needed slicing into pieces that you’d use to build a site or an app. But I hadn’t gotten a Photoshop document from a client in years. The PSD had been replaced with Sketch files, then with links to Figma documents. I still used Photoshop to touch up images, but that really didn’t use much of its power. The only thing holding me to the product was familiarity. Then I started to notice some real quality issues. For some reason that I still don’t understand, my copy of Photoshop stopped updating. I didn’t notice for a while, but eventually I stumbled upon the release notes and saw that I was something like nine months behind. I was able to fix this by forcing the Creative Cloud app to reload its settings using Command + Option + R, at which point I could update. Then, a few months later, Photoshop updates started getting stuck. I’d start an update, but it would spin for hours but never complete. I was able to fix this by uninstalling Photoshop using the Creative Cloud app, then re-installing it… but I had to do this more than once. Soon after that, every new Photoshop update would reset my preferences to the defaults. I’d need to take 5 or so minutes to re-apply my settings every time. A little while later, Adobe started silently updating my /etc/hosts file for license verification purposes. As posited in that link above, the Creative Cloud app now felt like malware to me. But that wasn’t all, Photoshop itself had started feeling terrible. There was now an annoying welcome screen that would re-appear for me whenever I didn’t have an image open. There was an option to disable it, but the option was reset every time I relaunched Photoshop for a couple of releases. Then Adobe decided to replace almost all of Photoshop’s native UI controls with web-based ones. This was the final straw. I’m sure some of these issues were special cases for me. Something that got stuck somewhere, maybe. I’m a developer, so maybe my tooling was interfering with something? Only: every time I ran into an issue, I’d see dozens of people complaining about the same thing on the Adobe support forums. It really felt like Photoshop and the Creative Cloud app had grown into blobs of pain that Adobe no longer knew how to properly maintain. As this was happening, Apple had released their Creator Studio service. For the same price as my Creative Cloud Photography plan, I could get an updated version of Pixelmator Pro, plus a bunch of other great apps. I’ve since signed up and haven’t looked back. But Adobe wasn’t done with me yet. It turned out that my subscription, which had been going since 2013, was on an “Annual Paid Monthly” plan. Even though I was getting billed monthly, I couldn’t actually cancel any time I wanted. I had sort of remembered this being a thing when I signed up, but had long since forgotten about it. Anyway, the one-month window to cancel without a termination fee recently arrived, and I got around to cancelling today. Cancelling required me to log into my Adobe account on the web. No problem, I thought. I had set up Adobe Authenticator, and had used it dozens of times to log in before. This time, however, the authenticator app needed me to log in. To log into the authenticator app, the app asked me to use the app to authenticate the app. Sorry? This was, of course, impossible. Eventually I figured out that I could use an alternative method to log into the app, so I could then use the app to authenticate my web session. This felt bone-headed, but whatever. I then received the following email. There’s nothing hidden here, this is the full contents of the message. At this point, though, I was actually able to start the cancellation process. The first screen of the cancellation flow looked like this: Here’s what it looked like after selecting things: I guess no one at Adobe uses dark mode? Anyway, the next 3 steps included Adobe begging me not to cancel, and even offering me three free months. This process had not convinced me I’d be happier staying. But even after completing the cancellation, I wasn’t done. I now wanted to uninstall everything. The Photoshop part of this was easy enough using the uninstaller app in the /Applications/Adobe Photoshop/ folder. The Creative Cloud app was more stubborn. There was also a link to an uninstaller for it in the /Applications/Adobe Creative Cloud/ folder… but running it failed with the error: Couldn’t uninstall Creative Cloud for desktop. You still have Creative Cloud applications installed on your computer that require it. Weird. The only other “app” I had installed was Camera Raw, which was just a plugin. There was also no way to uninstall it inside of the Creative Cloud app. I was able to find the plugin in /Library/Application Support/Adobe/Plug-Ins/CC/File Formats/. Deleting it and relaunching the Creative Cloud app showed that it was now no longer installed. I tried running the Creative Cloud uninstaller again, but I got the same error. This time I tried the “Repair” option, offered as part of the uninstaller, but that also failed. So I then tried the Creative Cloud Cleaner Tool… but this failed, too. At this point I was really annoyed, so I decided to manually remove things. I do not recommend doing this yourself, but here’s a general list of the stuff I got rid of: Under /Applications/: all the Adobe folders Under /Applications/Utilities/: all the Adobe folders The /Library/Application Support/Adobe and ~/Library/Application Support/Adobe directories, as well as any com.adobe.* files Under /Library/Preferences/ and ~/Library/Preferences/ all the Adobe* and com.adobe.* files Under /Library/Caches/ and ~/Library/Caches/ any Adobe* directories Under /Library/LaunchAgents/, /Library/LaunchDaemons/, and ~/Library/LaunchAgents/ directories: all the com.adobe.* files Under /Library/PrivilegedHelperTools: all com.adobe.* files Under /Users/Shared: all Adobe* directories Let me reiterate: you should not follow my lead here. I likely missed some things, and it’s very easy to mess things up by deleting system files. I offer no support if you decide to follow these steps. Again, it’s quite possible that there’s something weird going on with my machine or my installation… but I swear I never did anything but use the Creative Cloud app to manage things. I expect Adobe to be able to clean up their mess if they’re going to install files all over the friggin’ place. Anyway, all this said, I’m still slightly sad to be rid of Photoshop. Pixelmator Pro suits my current needs, but there are definitely things I will miss from Photoshop. Pixelmator Pro’s UI is a bit of a Liquid Glass nightmare, but it’s a massive improvement in terms of software quality. I’m extremely happy that it doesn’t strew zillions of files across my computer. I’m also pretty certain it will be much easier to unsubscribe from if I decide to do so in the future. So long, Photoshop. I’ll remember the old days fondly, but you are well past your prime.
I’ve been following Apple news and rumours since the year 2000, and I don’t think I’ve ever been less excited for WWDC. Apple’s software story is in rough shape, and I worry that this year’s event won’t do much to help. Perhaps it’ll be the beginning of an upswing, but we’ve got quite a way to go. Before looking forward, let’s look back. WWDC 2024 focused on a number of “Apple Intelligence” features that never materialized. Which is probably for the best because the features that did ship that year were annoying at best and awful at worst. WWDC 2025 introduced a new redesign that I was initially looking forward to… until I saw it in practice. This year, the scuttlebutt is that WWDC will once again be about LLM-based features. Many of those features sound like re-announcements of the ones from 2024. I wasn’t excited about them then, and I’m still not now. If there are Apple Intelligence features announced on Monday, I hope they’re actually useful and not just shoehorned in. It’s reasonable for Apple to do something to improve Siri, but it’s been terrible for so long that I’ve found much better alternatives. I also worry that Apple risks overloading people with “AI” features. Microsoft only recently started learning their lesson about this, and it would be a real shame if Apple wasn’t taking notice. Given Apple’s recent track record, I’m not optimistic. I wish Apple would be content with its excellent place as a platform for machine learning and LLM-based work. I truly believe that local LLM use is the future, and it’s a future with far fewer downsides. I would love for Apple to focus on this, as it’s something they’re already doing well. None of the rumours have hinted at local LLM improvements, but it’s more developer- than user-focused. Maybe there will be more news at the State of the Union event after the keynote. My guess is that most AI features announced will still be sent to a server farm, and will likely involve subscription fees. There’s also been talk about tweaks to the Liquid Glass design language. I’m somewhat more hopeful about this, but still concerned. Apple’s head of design changed late last year, but that’s not much lead time. If there are changes, they won’t be drastic. Apple spent a lot of time re-architecting parts of the system to support Liquid Glass, and then asked developers to update their apps to support those changes. There’s no easy way to revert things, and we’d be in for another rough year of software quality if they tried. Instead, we’ll get minor tweaks. Here’s hoping for more design concerns to be addressed. The other thing I’ve heard is that this could be another “Snow Leopard” year. That is, Apple may have spent the last year fixing bugs and optimizing things. I’d be very happy if this was the case, but it is a bit at odds with all the AI rumours. Even if Apple has been doing a lot of polishing, it’s a difficult thing to market. Maybe Apple could brag about the number of bugs they’ve squashed? That would make me very happy, which tells you the sort of person I am. It’s definitely not exciting, but it’s the thing I’m most looking forward to. I’ve been worried about the direction of Apple’s software quality for a while. Their hardware game has never been more on-point, so it’s potentially hopeful that the head of hardware will soon be the new CEO. But this change, like the change of design lead, isn’t happening in time to affect this year’s WWDC. Maybe I’m wrong to worry. Maybe Apple will surprise me tomorrow. Sitting here today, I’m much more interested in what WWDC 2027 might look like.
More in technology
Here are the Vim forks I know about: Neovim: “a Vim-based text editor engineered for extensibility and usability, to encourage new applications and contributions.” Vim Classic: “a stable, long-term support fork of the ubiquitous text editor, maintained without the assistance of generative AI tools.” EVi: “a hard-fork of Vim v9.1.0 (Jan 2024) before AI was used in the project.” MacVim: “a macOS version of the Vim text editor, providing a graphical user interface for Vim, while tightly integrating with macOS and providing features specific to the platform.” This list doesn’t include Vim-inspired editors like Kakoune, Vim-style plugins for other editors like IdeaVim, or Vim “distributions” like LazyVim. Contact me if you know of other forks!
Thought I’d make a quick blog post about some weird behavior I’m seeing on iOS 27 and Dynamic Island live activities, that I initially thought was restricted to the Duo, but turns out affects everything. Yay. Maybe this post can save some others some time, and hopefully Apple can fix it. Long story short, ever since iOS 16.1 introduced “Live Activities”, where we can display handy little widgets in the Dynamic Island, there’s been a bunch of different configurations for showing things up there: something on the left, the right, when expanded, when two apps are showing things and yours gets a bit smaller, and on the lock screen. One interesting one is if you only need to show a small indicator in the Dynamic Island (screen recording indicator, electric vehicle charging status, etc.) you can do so, which just shows on the left on older iPhones, and on the Duo a single one below the camera cutout. Apple describes how to do this in their developer documentation (emphasis added): If you can’t find a solution to display views for leading and trailing compact presentations with limited width, provide a compact leading presentation that best represents your Live Activity, such as the view you use for the minimal presentation, and an empty view for the trailing compact presentation. The system hides the empty trailing view automatically. Unfortunately, in iOS 27 (and 27.1, and 27.2), this only half works, due to a new addition in iOS 27: isDynamicIslandLimitedInWidth. It’s a variable that basically tells you if the Dynamic Island is even narrower than normal, presumably because they knew the Duo was coming with its vertical Dynamic Island, but also because as of iOS 27, Live Activities now show in the Dynamic Island when the device is in landscape too. So it’s handy to know if you have a bit less space than usual. In this new narrow view however, it seems like they didn’t test all the configurations thoroughly, as if you provide EmptyView for that trailing compact presentation, it’s not empty at all, and in fact enforces a quite large minimum size so the Dynamic Island looks hilariously tall. In other words: The system hides the empty trailing view automatically Left: what it should look like. Right: reality You can imagine this is especially rough on the Duo, where navigation buttons, toolbar buttons, tab bar buttons, etc. are all competing for precious space on the right. But that’s only half true. It displays perfectly fine (hiding it) when isDynamicIslandLimitedInWidth is false (AKA how it always used to be), but in the new cases where it can be true, like the Duo and iPhones in landscape, that’s when it breaks. So tl;dr: In iOS 27, Dynamic Island Live Activities are improperly sized if you use the listed EmptyView configuration and isDynamicIslandLimitedInWidth is true. This makes it especially bad on the Duo, womp womp. Complications Now, you might be saying “That’s weird, I haven’t seen that behavior! This is nothing but hogwash!”. But it is not hogwash, just a little complicated. There’s basically three categories of apps. Apple apps Maps, for instance, displays this single, small Dynamic Island live activity perfectly well and sized, and has been beautifully compiled with the iOS 27.2 SDK. By all accounts it should show this bug, too! Apple apps don’t have to use the same APIs as us normies, so funnily enough through really cool tools like REA we can disassemble the iOS Simulator and see that it’s in fact true, the Apple Maps live activity just completely bypasses WidgetKit and instead just renders plain UIKit through MapsBannerViewController which shows the cute little cyan widget through a ManeuverAccessoryView and then for the hidden trailing view simply returns a DistanceAccessoryView with CGSizeZero, which iOS actually respects, unlike our paltry SwiftUI EmptyView. Third-party apps NOT updated to iOS 27 If your app hasn’t been compiled with any of the iOS 27 SDKs, it only knows about iOS 26, and thus doesn’t know about (or have to worry about) the new, troublesome isDynamicIslandLimitedInWidth property, so it just… displays perfectly well. Here’s the Rivian app, which hasn’t been updated for iOS 27 yet, which shows the Live Activity displaying perfectly sized on the Duo (indicating vehicle charging): (Technical disassembly detail for the nerds: iOS shows the app’s minimal config, a smaller config normally used when multiple apps are in the Dynamic Island together, rather than the normal compact config, so it bypasses this issue entirely.) Developers who updated their apps for iOS 27 Surprise! That picture from before? On the left is just me compiling with the old 26 SDK that works! Unfortunately if you are a good developer who updated their app for iOS 27 and all the new features, you kind of get punished through this bug, because your live activity displays the improperly sized way described above, and you can’t just use raw UIKit like Apple. So you’re kinda stuck where I am: do I ship a weirdly sized Dynamic Island experience for everyone? Do I shove something extraneous in the compactTrailing spot just so it doesn’t look as empty? Do I not update the app at all until Apple fixes this bug? Widgets are techincally a separate extension from your main app, so you could compile them with a different SDK (26) than your main app (27) which fixes this bug, but I’m not sure Apple approves of that. Apple On the bright side hopefully it’s an easy enough fix, treating EmptyView like you used to on iOS 26 and per the documentation (the part that is weirdly right beside the mention of the new API that introduces this craziness in the first place). Radar/feedback assistant ID: FB25301955 Easy reproduction code if you’re curious: import ActivityKit import SwiftUI import WidgetKit struct CircleAttributes: ActivityAttributes { struct ContentState: Codable, Hashable {} } struct BlueCircle: View { var body: some View { Circle() .fill(.blue) .frame(width: 20, height: 20) } } @main struct CircleLiveActivity: Widget { var body: some WidgetConfiguration { ActivityConfiguration(for: CircleAttributes.self) { _ in BlueCircle() } dynamicIsland: { _ in DynamicIsland { DynamicIslandExpandedRegion(.center) { BlueCircle() } } compactLeading: { BlueCircle() } compactTrailing: { EmptyView() // pls respect me } minimal: { BlueCircle() } } } }
Vicky, driving me home from O'Hare, got sixteen dollars for the best conversation I had in months. The last line is hers.
I’ve had “AI usage statements” in the back of my mind ever since I read Ethan Marcott’s blog post sharing a round-up of his favorite ones. I didn’t consider writing one for this site, since it had the smell of status-signaling. Like a quasi-political declaration of allegiance to some sort of in-group (be it pro-AI, anti-AI, etc). I couldn’t be less interested in that.1 But then something happened that caught me completely off-guard. I was reading a post on my friend’s personal blog. This was a guy that I knew personally and looked up to. I’ve been reading everything he had been writing for years. About two-thirds of the way through a long (and fairly insightful) blog post, I had a sudden realization that the post had been written by AI. I’m not the best at detecting this kind of thing, but once I saw it, I couldn’t unsee it. It was unmistakable. And the thing is, I didn’t feel indifferent or even disappointed, as I might have predicted. I felt betrayed. For somebody who considers themselves open-minded—even optimistic—towards the development of AI, I didn’t know where this feeling was coming from. I have theories… maybe it has something to do with the social contract between the writer and the reader. Whatever it is, I didn’t want anyone who was reading my blog (hi mom 👋) to feel the same thing. So for the sake of transparency, here is my AI usage statement: The content of this website is written by me. I do not use AI to generate the text you are reading because writing from scratch helps me process my thoughts (which is one of the main reasons I blog in the first place). I don’t currently use AI-powered writing tools (grammar-check, spell-check, dictation tools, etc), but I may experiment with them as long as they don’t undermine the thinking process. The code for this website was originally hand-written, but I have since used AI to make several useful updates. I expect to continue using AI to write code for this website and other personal coding projects. When I create a public project exclusively with AI, I mention that fact in the project README.2 I am experimenting and my AI usage may change. When it does, I’ll update the policy here on my /about page, which is where it will live long-term. To explain why, see Paul Graham's Keep your Identity Small. ↩ For an example, see s-tier ↩ Thanks for reading this post via RSS! Let me know your thoughts by leaving a comment on the original post or sending me an email.
Amend 4.0 has been released: amend-4.0.sit (StuffIt 3 archive, includes source code and THINK C 5 project file) c838ee34931c00c03869affe7f9d6b85c0bbc51dd1242d11e8682a3774fdd0e3 SHA1: 040059d0b3302f1bd6ec0207b9a2f12dccdda374 Changes in this version: New repository format that tracks author e-mail in addition to name; existing repositories are migrated automatically on open Add inregrated resource file support; .rsrc files can be added directly to a repo and files are converted to DeRez-style ASCII output before diffing, so running SADerez to produce separate .r files on every change is no longer required Allow Command+. to cancel loading a repo Allow Command+. to cancel diffing; if diff text has already been output it will remain available, otherwise the window will be closed Center settings dialog, make sure author name is present Use database transactions to avoid leaving repository database files in a partially-committed state if we crash Numerous bug fixes