I’ve been thinking about all the generative AI slop that’s appearing, especially with tools like “Reimagine”, and I think it’s going to be a great thing for the open web. Why? Because Google is unwittingly shooting itself in the foot in a way that will change the character of the … | Continue reading
This site now supports Dynamic Type on iOS and iPadOS. If you go to System Settings on your iPhone or iPad, and change the setting for Display & Brightness > Text Size, you’ll see the change reflected on this website. This is a big win for accessibility: many folks make this adju … | Continue reading
A toot by my friend Casey brought back some frustrating memories about expired subscriptions that haven’t expired (yes, really). This blog post will hopefully help you avoid having these same recollections. It all begins when a customer contacts you with a screenshot that looks s … | Continue reading
On Mastodon, Alex Chaffee points out some of Tapestry’s shortcomings. These are all valid concerns and I’ll deal them individually here (rather than with a long toot thread). iOS-only Building for iOS first is a strategic choice. There is a lot of work to do here, and many new co … | Continue reading
Last week’s 40th anniversary of the Mac got me thinking. I’ve also been contemplating this week’s release of Apple Vision Pro. It feels like we’re at a crossroads for platforms, but one that’s impossible to pass. I was one of the folks who bought a Mac in 1984. At the time I was … | Continue reading
The new visual appearance and functionality of watchOS 10 is a welcome change. There was clearly a lot of design and engineering effort put into this new interface and the improvements are tangible for most apps. Unfortunately, the app that I use the most on the Apple Watch has l … | Continue reading
There’s a new “feature” in Sonoma, and no one besides Apple is quite sure what it is. Alerts for deprecated APIs are now appearing frequently. Sometimes when you launch an app, and sometimes at random. Here are three I got the other day after waking a MacBook from sleep: From a U … | Continue reading
I’m happy to announce the release of a new tvOS app called Blank. It turns your screen black and keeps it that way until you press any button on a remote. Seriously, that’s all it does. Here’s the screen you see when you launch the app for the first time: That second paragraph hi … | Continue reading
Well, it happened. We knew it was coming. A prick pulled the plug. And what bothers me most about it is how Space Karen did it. My mom passed away just before Christmas. Her decline was something everyone in the family saw coming and we prepared for her demise. It still hurts lik … | Continue reading
Well, it happened. We knew it was coming. A prick pulled the plug. And what bothers me most about it is how Space Karen did it. My mom passed away just before Christmas. Her decline was something everyone in the family saw coming and we prepared for her demise. It still hurts lik … | Continue reading
Have you ever added code like this to your app? print(Bundle.main.resourcePath!) print(FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.path) Or maybe you’ve been frustrated that you can’t add that code because you’re in the middle of debugging? Yeah, … | Continue reading
Beginning with Xcode 14, the Simulators for watchOS and tvOS are available as separate downloads (iOS and macOS are still “built-in”). This reduces the app download size significantly, but it also means that you now have to manage these large (3-4 GB) components yourself. When yo … | Continue reading
It’s been awhile since I’ve done one of these deep dives on what goes on behind the scenes during the development of an Iconfactory app. There’s a common thread to each one: I feel the need to document our work when there’s a major change in how we build user interfaces. The firs … | Continue reading
Where there’s smoke, there’s fire. And as we approach WWDC 2022, there’s a lot of smoke around AR and VR. In some ways, this is going to be a huge inflection point, in other ways, it’s probably going to be a letdown. Remember when the iPod was announced? Some folks called it lame … | Continue reading
This past summer we narrowly avoided a major user interface regression on Apple devices. The story ended well, but I think it’s important to look back on the situation and ask a simple question: Why did this happen in the first place? My answer is something I call “consistency si … | Continue reading
In my ongoing quest to release FREE apps that are useful in my daily life, I’m proud to announce the release of AV Remote. It’s a very simple remote for Denon and Marantz AV receivers. The official apps for controlling these receivers work fine, but have way too many features for … | Continue reading
A friend of mine recently pointed me at a well hidden command line tool. In the JavaScript framework used by Safari and other parts of Apple’s products, there is a tool called jsc. It’s a command line interface for JavaScript that uses the same code as the rest of the system. You … | Continue reading
Last week, one of my colleagues informed me that the word “tweet” was now included in the Oxford English Dictionary (see “Quiet announcement” at the end of the page.) The noun and verb tweet (in the social-networking sense) has just been added to the OED. This breaks at least one … | Continue reading
It’s common wisdom that you should release a software product when it is minimally viable: get an early version out in the world as soon as it can perform a useful task for a customer. When that product is for someone who is a developer that’s been coding since the dawn of time, … | Continue reading
I have a long history of writing about code signing in macOS. When Big Sur was released, I thought “Finally!” I was wrong. This time around I was tripped up by Safari, of all things. It doesn’t open app archives like other parts of macOS. This story began with customer reports of … | Continue reading
I’ve been using the Unix command line since 1983 and like most software developers, the Terminal app is a permanent fixture in my Dock. Over the years I’ve learned a lot of things that make working in this environment more productive, but even old dogs like me are constantly lear … | Continue reading
Today, the Iconfactory is happy to introduce a product that’s made with three different apps: Triode. Simply put, it’s the best way to enjoy all of your favorite Internet radio stations, wherever you go. So why did I make these apps? A Brief History of Internet Radio Before I can … | Continue reading
Luckily, I don’t have to use this kind of title often. But when I do, there’s a good reason: this year’s beta release cycle for all of Apple’s operating systems has been a mess. The months since WWDC in June have been a terrible experience for both customers and developers alike … | Continue reading
We recently started updating our macOS apps for Catalina: so far there have been very few issues with APIs and frameworks. The biggest hurdle has been the new notarization process that’s required for apps signed with a Developer ID: customers will be unable to download and launch … | Continue reading
I am so fucking excited about SwiftUI. I had strong suspicions that Apple was working on something like this, but what we’ve seen this week goes way beyond any of my expectations. My thoughts have now turned to how important this development will be for the future all user intera … | Continue reading
Shortly after finishing my treatise on Marzipan, I started thinking about what lies beyond. Some of those initial thoughts made it into a thread on Twitter. This post can be considered an addendum or a hell of a long footnote: in either case, you’ll want to start by reading my th … | Continue reading
I just finished reading an oddly named book by someone you’ve probably never heard of – I loved it so much I’m writing this site’s first book review. Ken Kocienda is a talented developer. He’s also a lucky one: he worked at Apple during the years when the Mac was reborn and the i … | Continue reading
Today’s a big day for app developers. In the lead-up to today’s event, I spent some time digging through my old purchases. After launching the App Store app, tap on your profile in the upper-right corner, then tap on the Purchased menu of your account page. After spending a few h … | Continue reading
About three years ago, I wrote a piece on how to get system fonts in CSS. The San Francisco fonts had just been released and getting them onto a web page wasn’t obvious or easy. A recent tweet reminded me that I needed to update this information. In my original post, I proposed t … | Continue reading
One of my favorite posts is one that’s over ten years old: Benchmarking in your pants. In that essay, I compared the original iPhone to my iMac, both with native and web apps. One of the reviewers of my treatise on the iPhone SDK thought it would be fun to see how those numbers s … | Continue reading
I’m 57 years old and my eyesight is getting worse every year. As a result, I have a newfound appreciation for the accessibility features that Apple builds into its products: they’re a lifeline for people who have problems worse than mine. With such a unique and concerted effort t … | Continue reading
What if I told you that you could add a Retina Display to your MacBook Pro for under $100? And what would you think when I showed how it plugs into your computer? The business card underneath this hardware gives you some hints, but where did this magical device come from and how … | Continue reading
I like Swift. We’re using it for new products like Linea, which was written from the ground up with the new syntax. In spite of this, I still consider the language harmful. The best way to understand the issues is by imagining that you’re an iOS developer who wants to write their … | Continue reading
Up until the middle of last year, my iPad spent most of its time next to my comfy chair. I’d bring it into the office whenever I needed to test an app on the device, but for the most part it stayed in our living room for reading and browsing. What changed? I added this […] | Continue reading
After over two years of work, my book on color management is now available for purchase. People I know and respect are saying some really nice things about my writing. It makes me happy when doing hard things pays off. Previously, I’ve written about how displays are changing and … | Continue reading
To bring long-term value for clients, companies need to continually reinvent themselves. This quote comes from an IBM announcement that it was selling its PC business in 2005. IBM’s business was moving towards services, and it was less dependent on hardware sales. But it still ne … | Continue reading