recentpopularlog in

favoritetweet

« earlier   
Twitter
I’m super happy to announce that we just released VLC for iOS 3.1. We added Chromecast support and device motion support for 360-degree video! https://t.co/866jC3M5HM pic.twitter.com/FnKNezyRKb

— Ⓒⓐⓡⓞ (@_Caro_N) July 18, 2018
FavoriteTweet  _Caro_N 
1 hour ago by mjtsai
Twitter
I read @mjtsai’s blog everyday and if you’re a blog reading nerd that still uses an RSS reader... well, chances are you’ll like it too. https://t.co/zQhL9LXm4t

— Josh Sowin (@jpsowin) July 18, 2018
FavoriteTweet  jpsowin 
1 hour ago by mjtsai
Twitter
It’s the naughty big developers I’m worried about. When the entire software economy is living off user surveillance…

— Joe Groff (@jckarter) July 18, 2018
FavoriteTweet  jckarter 
2 hours ago by mjtsai
Twitter
I’m a huge fan of your living posts like this, as well as Feedbin letting me know they’ve been updated

— The Gley Community (@nut_bunnies) July 18, 2018
FavoriteTweet  nut_bunnies 
2 hours ago by mjtsai
Twitter
Pretty much the same in the last ~25 years or so. Incidentally, NeXTStep releases tended to not break things. System updates were downright boring.

— Marcel Weiher 🇪🇺 (@mpweiher) July 18, 2018
FavoriteTweet  mpweiher 
2 hours ago by mjtsai
Twitter
To sum it up: IMO, strictly and relentlessly forbidding any private API use is ill-fated. It hurts users, developers and the platform.

I’d like Apple to reconsider this direction. Bugs are a *reality* in software development. We must all live and deal with them.

(The End)

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
So why is that? Have we ever used private API in the past, we stuck to some clear rules:

- Use it only as a LAST resort
- Use it only for cases of bad UX
- Always protect against change

We usually have lower standards when “bending” public API. (That’s actually why apps break.)

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
Know what? In my one and a half *decades* as professional app developer, *all* my apps broke in some way on *every single* new OS that came out.

Staring with Mac OS X 10.2, continuing to iOS 12 today.

But absolutely *zero* of these breaks were caused by the use of private API.

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
Why is Apple pushing so hard against private API? I have no insights, I can only guess.

I believe they hope for a more stable platform. Internal APIs can change any time, and their use might break apps. If a change broke a lot of apps, it would turn into *Apple’s* problem.

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
Here is what Apple/App Review tells you at the moment:

- You must not ship bugs.
- You must not use private API.

So they leave you with shipping inferior experiences or hacky applications or even push for cross-platform SDKs. This is why I call it ill-fated. pic.twitter.com/QMAPzQWofl

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
With these options left:

- users get worse experiences,
- developers get worse products,
- Apple gets lower quality apps on its platforms.

Everybody looses. Nobody wins.

(Thanks for reading until here, I’m almost done. Just one more thing…)

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
So what are we left with?

1) Buggy UI
2) Inferior UX
3) Hacky Code
4) Private API
5) Horrible UI

If you were *free* to choose – what would you do?

I know *my* option. The mindset behind it got us an Apple Design Award. Make your guess.

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
5) Switch to non-native cross-platform toolkit.

I know this is radical. But you’re free to do whatever you want there. Style the UI with some CSS or something and no need for private API.

But IMO nobody will want to use your app. Bad idea. Native wins. UIKit is the one to use.

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
4) Use private API that fixes the problem.

Turns out, UINavigationItem has a private “backButtonTitle” property. Setting this instead of a button item does the job. Good on all versions! (image)

Best possible experience, but now you are using private API. Which is bad, isnt it? pic.twitter.com/D983Vnx8ot

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
2) Do not set a custom back title.

This leads to worse user experience – because we are no longer able to provide *better* context than what’s the default.

While this is a small example, take a dozen of them and you have a worse app. You get a *worse experience* for users.

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
So… options.

1) Leave as-is, file radar, hope for eventual fix.

Results in bad experience for some users. They are not able to use the app because of a certain title. That’s a bug. Bad idea.

(There even is an app review guideline against bugs. More in a moment.)

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
In fact, iOS 11/12 still has this behavior, if you’re NOT using the backBarButtonItem … but if e.g. the parent view controller happens to have a very long title.

It’s still there. It’s intended (and good!) behavior. But setting a backBarButtonItem is broken beyond usability. pic.twitter.com/NYDDS4eHK0

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai
Twitter
This is *not* about this bug.

But as developer of apps, we need to ship things. Even if the issue was fixed now, apps should be as bug-free as possible on all the OS’es. iOS 11 is still the public release.

So… we need a solution. Let’s look at our options here.

— Max Seelemann (@macguru17) July 18, 2018
FavoriteTweet  macguru17 
2 hours ago by mjtsai

Copy this bookmark:





to read