Archive for May 15, 2018

Tuesday, May 15, 2018

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.

Update (2018-06-02): Tapbots (via John Gruber):

Tweetbot for Mac 3.0.2 is out with the ability to hide the action buttons until you move your mouse over the Tweet. You can enable this in the settings.

Unlike Tweetbot 2, favorited tweets do not show the heart icon unless they are selected or moused over.

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.

Update (2018-06-02): Nick Heer:

Apple has apparently intended for the notification system to be seen as less of a todo list of items of interest, and more of an advisory area — something that you look at occasionally, and never really worry about clearing fully. I think that it feels too heavy-handed to be something so passive. Either Apple ought to be more prescriptive about how push notifications are to be used, or the design of the system needs to be pragmatic and take into account the notifications that people actually get. The latter is more challenging because it would need to compensate for all kinds of edge cases, but I think that would ultimately result in a better product.


I don’t think apps should require users to figure out a granular array of notification types; apps should set appropriate priorities for different kinds of alerts they may push, and the system ought to have a way to enforce that. The same goes for prioritizing notifications across multiple apps — no matter how much I miss grouping notifications by app instead of sorting chronologically, I don’t think that’s something users should be required to manage. As with multitasking and Bluetooth connectivity, above, an iPhone should be able to figure this stuff out.

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.