Archive for May 15, 2018

Tuesday, May 15, 2018 [Tweets] [Favorites]

App Architecture: iOS Application Design Patterns in Swift

Chris Eidhof, Matt Gallagher, and Florian Kugler:

This book explains a range of application design patterns and their implementation techniques using a single example app, fully implemented in five design patterns.

Instead of advocating for any particular pattern, we lay out the problems all architectures are trying to address: constructing the app’s components, communicating between the view and the model, and handling non-model state. We show high-level solutions to these problems and break them down to the level of implementation for five different design patterns — two commonly used and three more experimental.

Tweetbot 3 for Mac

Tapbots (MacRumors, MacStories, The Verge, 9to5Mac):

Tweetbot’s new optional expanded sidebar provides one-click access to all of your subsections like your lists, direct message conversations and saved searches.

Columns have been rebuilt from the ground up to be far more accessible and customizable. Easily add/remove columns, change the content of a column or reorder them.

Automatically playback videos and GIFs in your timeline with a quick mouseover. A click on an image or video opens it up in our lightning fast new media viewer.

Go easy on your eyes in low light situations with the new dark theme, one of the most highly requested features for Tweetbot. See how images and videos pop beautifully.


Topics automatically chain together multiple Tweets to easily create tweetstorms or live blog events.


Ever forget why you followed someone or wanted to jot notes about someone for future reference? Create notes on a user’s profile that only you can see.

$10 is a small price to pay to keep supporting development of a quality native Twitter client, but I see this update as a bit of a design regression. It continues the trend of lowering the information density by adding a row of buttons to each tweet. This consumes a lot of vertical space and fills it with distracting widgets that I will never use—because I use the keyboard shortcuts.

Annoyingly, it did not remember my accounts or preferences from Tweetbot 2. Do I have the Mac App Store to thank for requiring paid updates to have a different bundle identifier and thus a different sandbox container?

Previously: Twitter Abolishes Native Mac Client.

Update (2018-05-19): See also: The Sweet Setup.

When Disappearing Messages Don’t Disappear

Patrick Wardle:

In short, Alec noted that if using the macOS Signal App, disappearing messages may remain in macOS’s Notification Center. Yikes!


While the application deletes the messages (once the ‘disappear’ time is hit) from the app’s UI - the message may still remain in macOS’s Notification Center.

This apparently occurs because:

  1. Signal displays (posts) a message notification (with the content of the message) to the Notification Center (if the app is not in the foreground).
  2. The OS automatically dismisses the notification ‘banner’ … but the notification (which contains the message contents) remain in the Notification Center.
  3. Signal, does not explicitly delete this notification when it deletes messages from the app UI.

Even if it did delete the notifications, the data might still remain in the SQLite database file.

Previously: TextExpander 5 and Notification Center Privacy.

Why Apple Should Copy the Android P Notification Shade

Michael Simon:

Even before the public beta of version 9.0 landed this week, Android’s system of notifications was far superior to Apple’s. As someone who regularly bounces between the two platforms, I actively ignore the iOS Notification Center, but on Android, I use it regularly to catch up on things I might have missed. The Android notification shade isn’t just for messages and alerts; it’s an information center for your entire digital life.

As it stands, I have far fewer complaints about notifications on Android Oreo than I do on iOS 11, but the system has its kinks and annoyances just like it did on previous Android version, Nougat and Marshmallow. But in Android P, notifications are nearly perfect. Google hasn’t overhauled the notification system in Android P, but it has implemented a series of meaningful tweaks that work to make notifications useful, whether you want to interact with them, control what you see, or just keep them at bay.

20 Years of USB

Accidental Tech Podcast had a good segment on the many changes that USB brought and how, amazingly, peripherals for the original iMac can still be used today. I have always seen USB as a mixed bag. For the industry as a whole, it’s certainly a success. But for a Mac user, it represents a lowest common denominator approach and a degradation of the user experience in some ways.

All wired keyboards and mice can now use the same connector, and you can plug the mouse into the keyboard. That’s great—but we had that with ADB, and ADB input devices didn’t periodically stop working and have to be unplugged and replugged.

In theory, hubs are better than daisy chaining, but finding a USB hub that’s reliable is a challenge. Even when directly connected, nearly every USB 3 storage device I’ve used is subject to spontaneous unmounting. (That never happened with SCSI.) And the availability of hubs made Apple comfortable with reducing the number of USB ports, which amongst other reasons is a problem because some USB devices don’t work with hubs.

It took until at least USB 3 before it was as fast as FireWire.

Hot swapping devices worked reliably with FireWire, but doing that with my new USB 3.1 drive dock will sometimes knock other USB devices off the bus.

It sounds convenient that USB-C and Thunderbolt 3 now share the same port, but this has brought USB’s flakiness to the formerly rock solid DisplayPort. Every month or so my iMac stops recognizing my external display until I’ve restarted a few times and plugged and replugged the connector and swapped it back and forth between the different ports. (At least I have two.)

Previously: 20 Years of iMac.