❌

Normal view

Whisper and SpeechAnalyzer

22 July 2026 at 21:34

Om Malik (2023):

One of the key advantages of MacWhisper, as it utilizes the Whisper technology, is its superior accuracy in transcriptions compared to other services I have used. I was an early adopter of Rev.com and eventually switched to Otter.ai, for which I paid approximately $100/year. However, I have since canceled my subscription.

[…]

After comparing the audio transcripts from MacWhisper and Otter, I found that while Otter’s formatting is superior, there is hardly any difference in the transcriptions. I started with the free model, which was sufficient for my needs, and eventually upgraded to the large models. Nowadays, I primarily use MacWhisper to transcribe my voice memos, which I then import into Lex.Page.

Bon Adamson:

Whisper, which is made by OpenAI, has the distinct advantage of allowing you to transcribe audio in almost any language you may ever need to. For the time being, Otter can only transcribe English. The benefits of better accuracy and accurate punctuation that the service already holds over Siri hold up across other languages as well. If you’re looking to transcribe non-English audio accurately, Whisper is definitely the best option available on Mac.

Dan Moren:

By taking advantage of OpenAI’s Whisper framework, Audio Hijack can now take any audio it’s recording and generate a text transcript. While this process was possible before—see Jason’s lengthy post about his workflow—it required a lot of fiddling and several different tools to accomplish; it’s certainly a lot easier to simply drop Audio Hijack’s block into your existing session. If you record multiple sources, it can even appropriately label each one—though if you record multiple people via one input, say the other end of a Zoom call, it can’t distinguish between the various participants.

Inscribe (2026, Hacker News):

Apple’s new SpeechAnalyzer is the most accurate on-device speech engine we tested. It beat every Whisper model we ship, including Whisper Small, on both the clean and the noisy half of LibriSpeech, while running roughly three times faster than Small. And the API it replaces, SFSpeechRecognizer, came last on clean speech: behind even Whisper Tiny, a 40MB model.

[…]

The new API cuts word error rate by 3.5 to 4x on the same audio: from 9.02% to 2.12% on clean speech, and from 16.25% to 4.56% on noisy speech. There is no accuracy trade-off to weigh; the new API wins everywhere we measured, and it produces punctuated, cased text where the legacy engine’s output is rougher.

[…]

All five engines ran comfortably faster than real time: between roughly 12x and 40x on the M2 Pro, meaning an hour of audio transcribes in about 1.5 to 5 minutes on-device. SpeechAnalyzer was about 3x faster than Whisper Small per second of audio while beating it on accuracy.

Yuki:

SpeechAnalyzer’s ReportingOption.fastResults reads like a knob you’d reach for when you want to trade power for latency. That framing is what cost me the afternoon.

[…]

If a recording matters — and in a notes app, a lost meeting is the worst thing that can happen to a user — then the container you write while recording has to be PCM in CAF. Not m4a, and not AAC-in-CAF either.

[…]

AVAudioEngine’s inputNode silently ignores your device selection

[…]

I wanted summarization to run on-device. Everything else in Nib’s transcription path does, the audio never leaves the machine, and it would have been a much cleaner story to tell.

But 4,096 tokens for the Foundation Models isn’t enough.

Previously:

Sunsetting Google Earth for Mac

22 July 2026 at 21:33

The Google Earth Team:

We’re continuing to make Google Earth on web and mobile (Android | iOS) the best place for people to get helpful geospatial insights. While you can continue using the legacy Google Earth Pro desktop app, it will no longer be available for new downloads beginning on June 25, 2027. We encourage using web and mobile for the best Google Earth experience.

Via Nick Heer:

This is a two-factor loss: the MacOS app is Intel-based and, thus, will no longer be supported by the system come next year.

[…]

On the Google Earth community thread, you will find comments from people with all sorts of interesting use cases for the desktop app.

Rui Carmo:

This is going to be the end of an era for me. One of the first things I did with the early versions of Google Earth was wire it up to Vodafone’s mobile network data, producing some genuinely unique–for the time, at least–visualisations of network usage over time.

Previously:

The EnshAIttification of Day One

21 July 2026 at 21:28

Aleem Shaun:

I’ve used Day One for more than a decade. It was an excellent journalling app. Private, minimal, easy to use, with excellent features such as geolocation, weather, ‘On this Day’, and book printing. Features that got out of the way and either worked quietly in the background or appeared only when you summoned them. That’s changed.

Now there are new subscription tiers. Previously, the tiers were Free and Premium. Simple. Premium included sync and a few other things that I can’t remember, but it was compelling enough that I’ve been a Premium subscriber from the beginning. Now, without consultation, I’m Silver (not Premium), and there’s a new, more expensive AI-driven tier, Gold. I don’t object solely on that basis. You would think I could just choose to remain on ‘Silver’ and all would be well. But no. Even with these features turned off in settings, I’m visually prompted in the app to upgrade to Gold and use the Daily Chat (with AI), which I’ve turned off and can only use if I upgrade. And yet, there it is, taunting me.

Via Eric Schwarz:

Even Apple is guilty of doing this in the Settings app and the former iWork apps.

Previously:

Licensing a Mac App With RevenueCat

20 July 2026 at 16:28

Jared Sorge:

I know there are options out there like Paddle, FastSpring, and Lemon Squeezy that have worked for many apps like mine over the years. But I also wanted something simple for my users. Not to mention Apple Pay was a must-have.

I believe all the services he mentions do support Apple Pay.

  • RevenueCat serves as the source of truth for whether or not a customer is licensed.

  • I create RevenueCat customer IDs from local iCloud identifiers (more specifically, calling userRecordID() on my CKContainer in CloudKit).

  • When the user makes a purchase, they earn an entitlement that I look for in Arborist to grant them a license.

He doesn’t need to run his own server, and the purchases are automatically tied to the user’s iCloud account, so there are no e-mails or serial numbers to deal with. On the other hand, well, it’s all dependent on the Apple Account.

The app, which helps manage Git worktrees, is shipping now.

Previously:

Git Tower 17

20 July 2026 at 16:27

Bruno Brito (release notes):

In Tower 15, we introduced the “Fully Merged” badge and Automatic Branch Management to help you keep your repository tidy. With Tower 17, we’re taking the detection behind that badge to a whole new level. […] Tower now matches your local branches against merged pull requests from your hosting service, such as GitHub or GitLab.

[…]

Trust is everything when deleting branches — so we redesigned the “Fully Merged” hint view to show you exactly which checks matched.

[…]

One that is particularly noteworthy is that updating submodules is now significantly faster! Tower gathers each submodule's Git data concurrently instead of one at a time—something you will especially notice in repositories with many submodules.

I’m sad that they got rid of the yellow icon.

Previously:

SpamSieve 3.3.1

15 July 2026 at 19:53

SpamSieve 3.3.1 is an update of my Mac e-mail spam filter that improves the filtering accuracy and includes various optimizations, fixes, and updates for macOS 27. Some interesting engineering issues were:

  • I’m still supporting macOS 10.13, but the app can now build with the macOS 12 deployment target in preparation for Xcode 27. The way Swift handles calling deprecated APIs remains annoying. You need workarounds like protocols to suppress a warning in a particular region of code. Often, I am updating to a newer API, but I want to continue using the old one on earlier versions of macOS. Right now I am heavily testing on macOS 26, so I would like to only deploy the new code there. Sometimes the initial versions of APIs are buggy, and I don’t want to have to retest every feature on every version. But Swift doesn’t like me to gate the calls to macOS 26 and later if the new API was actually introduced in, say, macOS 11.

  • The most risky update was probably switching to the Swift API for Scanner. This is tricky because the current scan position changes from being based on UTF-16 indexes to String.Index. And in some cases my code was intentionally scanning into the middle of a combining character. I was really glad to have extensive tests here.

  • Recent versions of Tahoe introduced a Core Data bug that broke save recovery (when invalid Unicode can’t be written to the database and we have to fix it up first). When the error comes in, SpamSieve looks under the NSDetailedErrorsKey key, but the value of this key is "NSDetailedErrorsKey" while the actual error info is under the key "NSDetailedErrors".

  • Database corruption combined with a Core Data bug and two Swift behaviors were causing crashes. The root problem, I think, is that in this situation Core Data neglects to set the error pointer for -[NSManagedObjectContext countForFetchRequest:error:]. Normally, Swift would detect this and throw a generic nilError. However, this method signals errors by returning NSNotFound instead of nil. It’s annotated as swift_error(nonnull_error), which I think means that Swift doesn’t even look at the return value, only the (unset) error. So my code was receiving NSNotFound on the non-error path, treating it as a real count, and doing some math with it, which (by default in Swift) leads to a crash if there’s overflow. Now my code checks for NSNotFound and uses Int.addingReportingOverflow().

  • I reimplemented Core Data batch fetching because of two problems with the fetchBatchSize option. First, it logs spurious errors when fetching from multiple stores at once. Second, it leads to high memory use. It will load objects in batches, but it never releases the earlier batches. You can manually refault objects that you no longer need, but it will still hold onto the full object shells, which can add up. My implementation only holds onto IDs, and it can fetch the IDs using a different context than the objects to push more work to background threads.

  • I’m now using String.makeContiguousUTF8() in various places to avoid slow iteration of bridged strings.

  • There was a regression where some menu code could crash on macOS 10.13. -[NSMenu setItemArray:] is only available on macOS 10.14 and later, whereas the getter is always available. With old Objective-C, the two methods could be annotated with separate availabilities. The Objective-C property syntax doesn’t allow this, so there’s no way for the compiler to flag calls where the setter is missing.

  • The AppleScript support works much better with large data sets. The key, I think, is to never return an array to Cocoa for a scripting property/element. First, if you give it a lazy array it will sometimes try to access all the elements even if it only needs a few. And, second, AppleScript will run out of memory if the array is too large. By using indexed accessors, you can maintain laziness and only convert one object to a descriptor at a time. By caching a batch-fetching collection, you can limit the number of fetches and respond quickly when AppleScript requests individual objects.

Previously:

ChatGPT Work and ChatGPT Classic

10 July 2026 at 16:47

John Gruber, earlier this week:

When ChatGPT is attached to an open document in another app, it’s not a snapshot at the moment of attachment, like what you’d get by copying and pasting the whole thing into the chat, or by dragging the current version of the file into the chat. It’s a live ongoing attachment, so as the attached document/note changes, ChatGPT sees the changes. It’s such a great feature, and I don’t think it exists on any platform but the Mac. And it couldn’t exist on iOS, by design, doesn’t allow for inter-application communication.

I worry for ChatGPT’s future, though.

Juli Clover:

OpenAI today announced ChatGPT Work, a ChatGPT agent with built-in Codex that can complete tasks across web, mobile, and desktop using information from your apps. ChatGPT Work can execute multi-step tasks, using scheduling to work independently. Like Claude Cowork, ChatGPT can use your computer to do tasks in the background across apps.

[…]

With OpenAI merging Codex and ChatGPT, there is a new ChatGPT desktop app that’s available across Mac and Windows. Users who have the Codex app installed can update it to turn it into the new ChatGPT desktop app. The existing ChatGPT desktop app is being renamed ChatGPT Classic.

Zac Hall:

You can watch today’s livestream announcement video below[…]

[…]

It’s possible to have ChatGPT Classic, ChatGPT, and Codex installed, but the way forward seems to be just running the new ChatGPT desktop app. Codex users can still use the Codex app icon, but the app will be called ChatGPT.

The ChatGPT Classic app looks more native Mac-like, so that might be an issue for users.

Steve Troughton-Smith:

LOL @ OpenAI replacing the native AppKit ChatGPT app with the Electron Codex app after @gruber’s recent posts on the topic 😂

(It’s almost like Apple doesn’t have clear messaging on the right way to build native desktop apps anymore, and, if Apple doesn’t know, why on earth would third-party developers make that investment)

Federico Viticci:

The rollout of the unified ChatGPT for Mac app really isn’t going well on X/Reddit 🥶

They kinda fumbled it and I think Anthropic did a slightly better job on first try. Even OpenAI’s existing iOS app makes more sense than their new Mac layout right now.

The difference between “normal” chatbot chats, Work/Cowork harnesses with connectors, and Code/Codex local threads and filesystem access is the new UX hell for these companies.

Steve Troughton-Smith:

The chat experience is ChatGPT. Now it’s squirreled away in a sub section of a sub pane inside a vastly more-complex app. It’s hard to imagine anybody who actually wants to use ChatGPT wants to use it this way, Electron or not. And as a Codex user, I resent having my Codex deleted and renamed ‘ChatGPT’ instead. I don’t want my ‘chats’ anywhere near my ‘work’. This feels like a stupid move that will decimate casual ChatGPT desktop usage

John Gruber (Mastodon):

Looks like I picked the wrong week to quit sniffing glue.

See also: Dithering.

Previously:

Update (2026-07-13): Tony Arnold:

Oh yeah, the new ChatGPT app is as bad as first impressions made it out to be. It’s not just a slow, RAM hungry shell of a thing, but the design and UX are a poorly thought out kitchen sink approach.

Codex has never been great, but this is a confusing mess.

Benedict Evans:

Wow, what a total mess. What is the difference between a project, a task and a chat? Why did chats get a crappy floating window but tasks and projects don’t? Why does choosing ‘plugins’ get me ‘templates’? Am I not allowed to finish ‘setup’ if I don’t use Slack or Google Drive? Why…

Via John Gruber (Mastodon):

OpenAI’s internal org chart is a complete disorganized mess. This new app perfectly reflects that.

The old ChatGPT app was focused. That’s the app that still ships for mobile (which includes iPad, which tells you whether OpenAI thinks iPad is a real computer or a big iPhone), and is, for some Mac users, left installed on their systems as “ChatGPT Classic”. The new app is an incredibly confusing sloppy mess. At a glance it looks like a polished app. But the UI is just slop. It has the veneer of a polished app without actually being organized or structured or labeled in ways that add clarity and coherence.

John Gruber:

So I don’t see “the prompt in the app to download the new ChatGPT desktop app”. If I download the new app manually, I get a disk image. After mounting the disk image, the instructions say to double-click the “ChatGPT” app on the disk image — not to drag it to the Applications folder. If I do that while the old ChatGPT app is still running, it bounces back and forth a few times but nothing new gets installed and nothing old gets removed or renamed. I’m just left with the classic ChatGPT app, still named “ChatGPT”.

If I run the installer on the disk image when the old ChatGPT app is not running, the old app gets replaced by the new one in my Applications folder, and the old app is moved to the Trash. There is no app named “ChatGPT Classic”.

I mean, their Help document does say “the new app may install alongside your current app”, and “if both remained installed”, so they seem just as confused as I am.

Update (2026-07-14): Adam Engst:

And as much as I’ve been focusing more of my attention on Anthropic’s Claude because of concerns I have about OpenAI and its management, ChatGPT has more active users (~1.1 billion) than Google’s Gemini (~900 million), and many more than Claude (~245 million, in part because it’s more focused on enterprise uses).

As such, it’s worth noting three recent changes with ChatGPT: a massively confusing app replacement, the end of the ChatGPT Atlas Web browser, and improvements to ChatGPT Voice.

Update (2026-07-17): M.G. Siegler:

Let’s give OpenAI some credit, once they realize they made a mistake, they act quickly to correct it. Today’s case in point: with an update, ChatGPT now features ChatGPT once again. No, that’s not a joke, and yes, it does speak to a very obvious self-own.

John Gruber:

How in the world did they ship this without sync?

[…]

Bringing back “chat” to ChatGPT is literally the least they needed to do. Hiding chat in an obscure corner of the interface from an app named “ChatGPT” would be like removing text editing from TextEdit.

Sunsetting ChatGPT Atlas

10 July 2026 at 16:47

James Sun (via Tim Hardwick):

Lastly, with all these updates, we are going to be sunsetting Atlas.

All these capabilities were built on what we learned from Atlas users who took a leap of faith on a new browser.

You taught us how agents can help make browsing and doing work on the open web better, and we are applying these learnings to these new products.

Zac Hall:

With the new ChatGPT desktop app, OpenAI now has a desktop app with robust browser capabilities. ChatGPT (and Codex before it) also supports a Chrome desktop browser plugin. This lets Chrome users benefit from ChatGPT integration without completely switching browsers.

Kyle Hughes:

Anthropic and OpenAI have legacy software media in the blender because they are playing a new game. They are legitimately racing to build God. The products they release are one-off fundraising vehicles to buoy the next training run. They are not trying to build long-term consumer goodwill.

Previously:

Sunsetting Textual IRC Client

8 July 2026 at 20:22

Codeux Software:

Textual is the world’s most popular application for interacting with Internet Relay Chat (IRC) chatrooms on macOS.

[…]

Textual supports very powerful modern technologies such as the latest IRCv3 specifications, native IPv6, client-side certificate authentication, and much, much more in an easy to navigate, clutter free experience.

Unfortunately (via Jan Lehnardt):

Textual has been sunset and will no longer receive updates.

Previously:

Update (2026-07-10): rob:

IRC (Internet Relay Chat) is having a bit of a revival in one of the communities I participate in (we ditched Discord), but there are not that many clients for Apple devices?

I’m currently using Goguma on mobile and Halloy on desktop, but they both don’t feel like native apps… (technology stack and especially UI/UX)

[…]

Luckily I recently discovered Mango, which looks very promising.

The Mac Genie:

I would still love to have a modern version of Ircle. Nothing else comes close as the best example of a Mac IRC client.

A New Firefox Look

7 July 2026 at 20:53

Rizki Kelimutu:

Firefox is evolving with a refreshed design that makes the browser feel more modern, approachable, and consistent across desktop and mobile. The refresh also extends to Firefox’s voice and writing style, making product experience feel more human, direct, and unmistakably Firefox.

Via Jeff Johnson:

Nothing says “consistent” like making your large-screen keyboard & mouse UI exactly like your tiny touchscreen UI.

And nothing says “more human” like a manufactured voice and writing style.

rjacob:

Internally, we’ve been calling this work Project Nova, and today we’re excited to share a deeper look at what we’ve been building and where we’re heading next.

The goal of this work is to create a more cohesive foundation for Firefox: making the browser feel cleaner, warmer, faster, and more adaptable.

Some of the areas we’re working on include:

  • Simpler navigation and a redesigned Settings experience
  • Easier access to features like tab groups, split view, and vertical tabs
  • The return of Compact Mode
  • Refreshed visual updates across tabs, icons, spacing, and browser surfaces
  • More customization options, including new themes and wallpapers

Previously:

Update (2026-07-28): athomas (via Thomas Clement):

Starting today, you can try out the next design evolution of Firefox in Nightly.

It’s still Firefox, now with a more cohesive look and feel across tabs, menus, panels, and other browser surfaces. You’ll notice softer tab shapes, a warmer color palette, updated icons, and – after hearing from many of you – the return of Compact Mode and new theme options to make Firefox your own.

Still no AppleScript support.

Update (2026-08-04): Marcin Wichary:

Contra the previous post, just spotted this “Same settings, new look!” callout in Firefox, on a page I have never visited before, talking about a feature I have never used[…]

Sunsetting Maestral

7 July 2026 at 20:52

Sam Schott:

As of June 2026, Maestral is no longer actively maintained. The current version will continue to work until certificates expire.

Via John Gruber (Mastodon):

I don’t know when these certificates are expiring. And I don’t know what I’m going to do when they do. I might try moving everything from my Dropbox account to iCloud Drive. That certainly seems worth trying before I resort to going back to Dropbox’s own monstrosity of a Mac client.

[…]

In theory, because Maestral is open source, someone could fork it and keep it going.

Nick Heer:

I use Dropbox only for some relatively basic but necessary things, like hosting PDFs for this very website, which is why Maestral has been the perfect client for me. It is a testament to the effect of a good third-party app that I have stuck with Dropbox despite its corporate-focused strategy pivot.

I’ve switched to iCloud Drive, which seems better, but not better than Old Dropbox.

Previously:

WhatCable 1.1.7

6 July 2026 at 19:45

Darryl Morley:

WhatCable explains cable speed, charging limits, e-marker data, and connected devices in plain English. Name a cable and it tracks how the cable actually performs over time, so you can spot the one that has started misbehaving. No more guessing why a cable charges slow or refuses to drive your display.

Via Norbert M. Doerner:

It is open source, free, and definitely a tool to look into, if you have external drives on your Mac!

Previously:

Update (2026-07-10): Dan Moren:

For example, after looking at it, I realized that my backup drive was only connected via a USB2 cable. Fine in general for overnight backups, but when it reminded to me when I was troubleshooting some backup issues that maybe I should switch to a high speed cable that supports USB-3.

[…]

For a £9.99 one-time purchase, you can unlock WhatCable Pro, which works on up to two Macs, lets you assign names to cables so you can remember which one it is when you plug it in later, provides more in-depth diagnostics, offers live power metering to see how much juice is being delivered right now, and even more.

NetNewsWire 7.1

1 July 2026 at 21:05

Brent Simmons:

  • The Current Activity window shows what the app is doing right now
  • The Activity Log window shows what the app did recently
  • The Account Stats window shows per-account article and status counts and database sizes, and it includes a Vacuum Databases button which can help with database size and performance
  • The Dinosaurs window lists feeds that haven’t updated in n months (with a text field where you specify n)

It’s great to have more visibility into what the app is doing. I was about to report a regression where Mastodon and some other favicons were pixellated, but this was quickly fixed in 7.1.1.

Previously:

Shutting Down Notion Mail

29 June 2026 at 18:37

Zac Hall:

Last year, Notion expanded its productivity suite to include Notion Mail, an AI-powered email client. Today, the company announced that it’s shutting down the Notion Mail inbox service this fall.

[…]

Today, more than half of Notion Mail users manage emails without ever opening their inbox. So, we’re going all in on using agents to run your inbox.

Previously:

Rewriting Notion in SwiftUI

12 June 2026 at 20:34

Hartley Charlton:

Apple this week confirmed that Notion is migrating its user interface to SwiftUI, citing the app’s desire for greater performance and UI consistency than its existing web-based stack can deliver.

[…]

The callout was clearly deliberate; Notion is one of the most widely used productivity apps on the Mac, and has long been criticized for the sluggishness that comes with its Electron-based architecture.

Previously:

Golden Gate Window Corners

9 June 2026 at 19:16

Adam Overholtzer:

Corners!

Simon B. Støvring:

“We fixed corner radius” was a WWDC keynote highlight. Let that sink in.

Rudrank:

This should have been since macOS 26 #WWDC26

Folks getting excited for consistent corner radius 😂

Kuba Suder:

Ehh, no change here, RIP Intel Macs… stuck on the v1 Liquid Glass forever 🫤

There was so much demand for this that the Liquid Radius haxie exists. People were willing to disable FileVault and System Integrity Protection to get consistent window corners.

Previously:

Update (2026-06-23): Marcin Wichary:

Then, there’s the website you’ve just seen: elaborate, with nice “before and after” animations, and a fun landing page. I thought the installation steps, given the complexity of the effort, were exemplary and even educational. There’s also a page listing all the apps confirmed to work, and a “How Liquid Radius limits its blast radius” (ha) section, revealing the author is clear-eyed about their work being a hack, and even the dimensionality of its hackiness. Even within the tool there are nice design details.

But, as I was exploring the site, I kept switching between “this is ridiculous!” (laudatory) and “this is ridiculous!” (derogatory) in my head.

❌