When I perform a particular sequence of tasks I don’t think, I just act in a sort of “cruise control” mode. For example let’s say that I am using Tweetbot or the official Twitter app on iOS. I open a link in a tweet and now I am reading a blog post. It’s interesting and I wanna tweet about it. I usually follow this template: {Title} {link} by {author} {some comment of mine}. If you click the tweet button the new tweet will contain just the link. I still need the title and the author and I don’t wanna type neither of those, because the risk of mistyping is pretty high. So within Tweetbot this is the flow:

Tap share button

Pick ‘Tweet Link’ from the menu at the bottom

Save draft

Copy title from the post

Go back

Open compose

Open draft

Paste title

Save draft

Copy author handle

Open compose

Open draft

Tweet

That’s quite a trip! And Tweetbot has the nicest and less-in-the-way animations I am aware of.
It’s way worse when the post I wanna share is open in Safari. The following assumes that Safari and the Twitter app are close to each other in the stack of open applications.

copy link in Safari

home button double tap to show app stack

ANIMATION

pick Twitter app

ANIMATION

tap compose

paste link

save draft

home button double tap to show apps

ANIMATION

select Safari

ANIMATION

copy title

home button double tap to show apps

ANIMATION

select Twitter

ANIMATION

paste title

(TEMPTATION TO NOT INSERT THE AUTHOR BECAUSE OF BOREDOM)

home button double tap to show apps

ANIMATION

select Safari

ANIMATION

copy author

home button double tap to show apps

ANIMATION

select Twitter

ANIMATION

paste author

Tweet

That is nuts! And yet I do it sometimes.

Note: You might argue that I could use iOS system wide integration with Twitter. I don’t because I am concerned it might mess up my contacts and I don’t want to. Moreover it doesn’t allow to format the tweet the way I want. Even more, I can’t save a draft. That means I need to have all the data in advance stored somewhere (a side note or the clipboard) before opening the widget.

I didn’t time the sequence above to the microsecond but I feel that switching to another app takes roughly one second. There’s 10 occurrences of ANIMATION in the list above. 10 seconds of overhead for each tweet in the format I like. I have to be really motivated before deciding to tweet :)
An extra complication is that sometimes I want to double tap home but I triple tap it. This turns on VoiceOver, which takes a few extra seconds to kick in and then read the first element of the current screen. After that I’d need 2 more seconds to turn off VoiceOver.

On the iPad it’s a bit better because I use the three finger swipe to switch applications and I feel there’s less overhead.

Almost a year ago I started using Buffer. If you start from a page in Safari it grabs both the link and the title of a page and it even shortens the link. It essentially cuts 50% of the actions listed above. Not to mention it allows to schedule a tweet. A godsend.

But the burden of animation is still there, whenever you need grab some data from another app in the background. That second to switch to another app is not an eternity but it can become quite boring if you switch often.

A similar case is when you want to close apps on iOS. I do it probably twice a year, when my iPhone seems laggy. Double tap home and then swipe up all the apps, one by one. Try it, and you’ll see what I mean by “animations are in the way”. You can’t swipe an app before the previous animation has completed.

On iOS animations are usually not laggy. On Yosemite some animations can be quite slow, especially on old hardware. Here is a neat trick to speed them up a bit. Fortunately I never learned how to use Spaces? Why? Because if I switch to a new screen and I see a lag I am tempted to find the cause, instead of doing my job :)

Should Apple cancel all the animations on iOS and Mac OS X? No, but in some heavy switching scenario it might shorten the duration. Instead of using a canned value for the duration of animations, you could calculate how “intense” is the interaction (and specifically app switching) in a given time frame and speed up animations. I have talked about seconds, but when you pile them up they become minutes pretty quickly.

Or, somebody could make an app that builds a tweet by extracting data from a page and inject it in a template :)

How many watch apps are there? While searching for the answer I stumbled upon this report by AppAnnie. On June 8th there were 6,352. When I found it I felt it wasn’t a lot interesting. So I came up with a different question:

In the countries in which the Apple Watch has been released, which is the percentage of apps that have a companion Watch app?

For each of these countries I pulled the first 10 positions of the following ranks:

Top Paid

Top Free

Top Grossing

New Applications

New Free Applications

New Paid Applications

I didn’t pull genre by genre, so these are “top of the top”, essentially the first screen that you see on iTunes when you open the “Apps” section. All the data were pulled yesterday, June 29th.

I ended up with 1082 apps. Some of them are iPad only apps, for which you can’t technically build a watch extension. So I filtered those out and I was left with 939. How many of those have a Watch app?

… drum roll …

61

That’s 6.5%. I have mixed feelings about this number. Here is how I tried to rationalize it:

A good chunk of apps in the top ranks are pretty heavy graphics games, for which a Watch app probably doesn’t make sense.

It’s still early, I know many developers that have bought a Watch but it has not been delivered yet. They probably wanna test it on the device before submitting the app to the store.

The news about Watch OS 2 probably changed the plans of those who were planning to release a Watch app soon.

Everybody is cautious, the Apple Watch is a totally new device and requires some time to understand what people expect from this kind of apps.

I am planning to do some study like this genre by genre in the future. What do you think? Let me know on Twitter.

I love the Mac App Store, I hate the Mac App Store. The review system makes me angry, the review system makes my machines safer. I am a developer, I am a user, I am thorn.

You might have read a lot of posts about how it’s hard to make a living in the App Store. The most common reasons are the usual ones:

no paid upgrades

long review times

inconsistent rules

no access to customers emails

As a developer I perceive all these as obstacles to my business.

BUT

As a user, I love the App Store, especially the MAS. At least once a year I reinstall OS X on my machines, from scratch. Most of the apps I use are on the MAS and it’s a pleasure to click Get and see they just get installed. I have a few other apps that are not on the store and the installation is a pain as in:

download

find the key

enter the key

the key is for an upgrade

find the key of the previous version

enter the ley

activate

then enter the key of the new version

Some of those apps probably will probably never be on the App Store and I really need them, so I go through the pain. Fortunately it happens just once a year.

There’s more. You never appreciate what you don’t see or doesn’t happen. I think I never heard something like “Thanks to the Mac App Store I feel (a bit more) secure”.
All the anger that the developer in me throws at the MAS was largely mitigated a few weeks ago when I read this bug report in Chromium.
Chromium is the open-source project on which Google Chrome is based. The report is related to Debian, one of the most secure Linux distributions. The report shows that Chromium (Google Chrome for Linux) silently downloads a binary executable blob, by default. There’s a lot of speculation on the role of this “thing”. A Google engineer chimed in to clarify that the “thing” was just downloaded and not executed, unless the user turned on the “Ok Google” feature. Fair enough, but sneaky to say the least. Only a few hours ago we got the announcement that the download will be disabled by default.
Oh, I forgot a little detail. The “thing” was supposed to record audio for the Ok Google feature.

[Insert your preferred NSA joke here].

Something like this would have never happened on the App Store, because the app would have been rejected right away. Especially now that Apple is putting a lot of focus on privacy.

And so here I am, even more thorn. As a user I keep enjoying the MAS. When I wanna buy a new app on the store I feel pretty sure, because somebody has checked it for me.

As a developer I should probably learn that those that seem obstacles are meant to protect users. It’s pretty clear to me that Apple lives by “users first, developers after” kind of principle. To be fair, if I were Apple, I’d probably adopt the same principle.

WWDC was two weeks ago. I watched some of the videos while I was in SF. I don’t remember anything, and I will watch them again.

What I remember vividly is the people that I met, so many and so passionate. I don’t remember what’s new in Swift 2.0 but I clearly remember who I met in SF, where and what we talked about.

The essence of a conference is not the new APIs or tools presented but the people you meet and the relationship you create or nurture.

If I had a WWDC ticket I’d have been worried to get the most out of it. Attending as many presentations as possible and asking as many questions as possible at the labs. Without a ticket I was free to organize breakfast with friends or to join somebody for a coffee, a hike or just a chat.
I am not saying there’s no value in a WWDC ticket, but with all the videos published on line so quickly, most of the value is in the labs.

The biggest value is in the side effect generated by WWDC. Tons and tons and tons of people that you usually “meet” online are in SF that week, in blood and flesh. And you don’t need a ticket to hang out with them.

The web is full of unneeded and useless words about the “Taylor Swift convinced Apple with a blog post” episode.
Among all the crap I found a gem, a post by Rob Napier

The difference is that musicians had a money problem and devs have a not-money problem.…The App Store is an engineering problem, not a money problem. Engineering problems are hard and messy.…And that’s why one artist can move all of Apple. Yes, she’s big and important, but she also brought a simple problem.

I agree 100%. Developers don’t have a money problem with Apple. I am trying to frame developers’ problems with Apple in terms of money, but the only thing I came up with so far is making the smallest price tier 4.99$. I feel it’s not gonna happen. I’ll keep thinking. Help me out on Twitter.

UPDATE: iMore has an interesting post about this topic but unfortunately most of the listed solutions are related to engineering problems. The only money related suggestion is reducing Apple’s cut. While it would be welcomed, I don’t feel it’s gonna solve the sustainability problem of indie developers.

Now that Dick Costolo stepped down, everybody has a plan for Twitter. So why should you read mine? Because it’s simple and effective.

We (developers) made Twitter was it is because of its APIs. Remember when 80% of iOS demo apps were a Twitter client? Yes, that was PR, for free. Now Twitter does not need PR anymore but it needs tools so that people can use it in a meaningful way. So what’s my plan?

Open up the APIs by loosening the tight limits (presumably) imposed to make Wall Street happy.

Developers are pretty far from the Wall Street mentality. We need tools to build products. Give us decent APIs, some time and Twitter will shine again.

If that’s not still clear let me make a concrete example. Change the APIs so that Manton Reece uses them again. That’s it.

I am not a fan of ceremonies. There’s usually a “protocol” to follow. There’s something you can do and something you can’t.

I worked a lot on iOS apps. When you have to submit one, there’s a ceremony. I call it the “App Store dance”. Prepare screenshots, description, icons, keywords and then repeat for every language. You think you are done but then you need to upload the binary, answer questions about rating, encryption and then … wait till someone approves it.
I feel kind of trapped, like wearing a suit during a hot summer day.

Sometimes the ceremony is in my head, in the form of the following (totally irrational) concerns:

If I ship this and then tweet about it they are gonna hog the server (I wish!)

I can’t ship now, it’s midnight, nobody is gonna notice

Maybe if I include this feature with that other feature the customers will perceive a bigger value

The truth is: none of that is relevant. People will read your announcements on the blog/mailing list when they can/want. Customers will notice the new feature when they stumble upon it. If you wanna “control the narrative”, write books or find a different medium. The web is asynchronous, fortunately or unfortunately.

That’s why I have come up with a simple ceremony for AppVersion:

does new feature (of bug fix) pass tests?

ship it

announce it (if relevant)

No waste of time, no complicated dances. As a user I appreciate products that get fixed/updated fast. It is a sign of taking care. I am gonna adopt the same approach for my products. The absence of ceremony fosters the idea that shipping is nothing special, it’s a normal action, much like drinking coffee.

And … it’s very liberating to roll out a bug fix or a new version without waiting for any kind of 3rd party review.

Do you have ceremonies when you ship a product? Can you get rid of (some of) them? If you ever write about this topic let me know on twitter.

You are ready. The servers are running, the credit card is a bit more empty, buttons are aligned as you wanted. You have waited for this moment. You are ready to press “Publish”. But you are not alone. Sometimes of the shelf, sometimes right on your desk. Fear.
All kinds of questions cross your mind.

Will the server keep up?

Did I schedule backups?

Did I run all the tests?

Can’t I hold it a bit more?

I know, paranoia. Then I compared it with some other situation that I am comfortable with: traveling. When I travel I pack and I go, without looking back.

I asked a few friends about their concerns when traveling:

Will the luggage arrive at destination?

Will the train/bus/plane be on time?

Did I remember to bring the passport?

Is it expired?

Will the hotel/apartment be like in the pictures on line?

Will I get lost?

Will the bed/pillow be comfortable?

Most of the concerns come from people that travel less than me, and that is totally fine because they are less used to it.
It’s exactly the point: getting used to it, to deal with the unknown and change your plans if needed.

So I took I deep breath and hit publish. AppVersion, my first product, is on line. I feel like the plane took off, I feel better, one less weight on the chest.

Now curiosity took the place of fear: how will it go? I am eager to know and I’ll keep you posted.

If you are a parent this might be a common scene to you. This happens pretty often with my kids when I try to force them to do something.
Usually my technique to persuade them is argumentative.

“If you don’t floss daily you will probably have a bad tooth, that will hurt, and we’ll have to go to the dentist”.

It takes a while but eventually they understand.

I apply the argument strategy also with clients.

“If we do it the way it’s designed it’s gonna take ten more hours than planned. If we modify it like this we stay on budget”.

Some understand and accept the modification. Others “force me” to do it as designed, often because the design is bound to a contract signed with blood. I am not a fan of these situations but when I have to pay the bills I do it, clearly with a bit of reluctance. The reason is simply because they are forcing me without providing an argument or, if you like, the argument is simply “because we say so”.

Now think of iOS release cycles. There’s a new one every year and it forces everybody to update your apps at least once a year (but probably more often). Again there’s no argument behind this. Clearly Apple knows the rationale about this crazy pace, but we have no access to it. It sounds like a parent that says “you have to do this because I say so”. I swear that if the App Store were a place where you can still build a sustainable business I’d probably accept the yearly pace.

Then I look outside of the App Store. I see developers and small companies building sustainable businesses while deciding their pace. You are probably using some service that is built on top of Ruby 1.9.3, Postgres 9.0 or Ubuntu 10.04 and “they just work” (zing). Nobody forced anybody to update to a new version. You still might need to tweak the CSS to deal with some new browser release but if you keep the UI simple I am sure it’s not gonna take a long time. Not to mention that you can roll out your modifications instantly, without going through a review process (zing).
Coding is just 20% of a product. The rest (marketing, support, growth just to name a few) deserves a lot of time which you shouldn’t spend updating your code to prevent crashes or weird behaviors due to a updated SDK/API.

Am I the only one on this boat? No. Somebody even quit because they couldn’t keep up with the pace.

Honestly, the complexity of every single thing we do has shot up in the last few years. My brain no longer has the time and energy to deal with Apple forcing me to relearn how to program every few years.