UX, mobile, freelancing, entrepreneurship

Speaking Engagements Q1 2015

I am on the road again. If you are around the conference place get in touch. I am always up for a beer/coffee/chat. Yell at me on Twitter. My handle is @_funkyboy.


Where: Washington DC, USA

When: February 6-7

Website: http://www.rwdevcon.com


Where: Amsterdam, The Netherlands

When: March 5-6

Website: http://mdevcon.com


Where: Chicago, USA

When: March 27-28

Website: http://cocoaconf.com/chicago-2015/home

Copy and Paste Mentality

Raise your hand if you remember which was the most difficult obstacle when you started programming. I do. It was the difference between ‘=’ and ‘==’. To me they were the same. I remember that to complete a homework I needed a function and it was like one that my mentor already shared with me. So I took his code and, on purpose, exchanged all the occurrences of ‘=’ with ‘==’ and then submitted. My mentor was a super calm and cozy guy. As he saw my code he yelled at me for 10 seconds and then he started explaining me the difference between ‘=’ and ‘==’. I’ll never forget it.

When I started programming I did a lot of cut and paste. The first reason is that typing is boring to me. Ever tried to copy some code from a printed book? Good bless ebooks! So I thought.

The third party code that I copied didn’t do exactly what I wanted. Changing it meant that I had to actually understand it. Having the solution to a similar problem didn’t help, indeed it was an obstacle to me. All the time (and stress) that I saved via copy and paste suddenly was knocking on my door.

Since I started my career my style evolved quite a lot. Now when I see a piece of code I look for inspiration and I end up saying:

“Oh look he used this API to calculate that. Good, I don’t have to dig into the documentation!”.


“Great, so this is the template for this function: step 1, 2 and 3”.

Sometimes I still end up copying a few lines. They are usually “timeless” and highly reusable lines, like sorting an array of objects by key. In a word, snippets.

A few days ago Justin Jackson has published an interesting post that resonated a lot with what I wrote above. You can in fact apply a copy and paste mentality to business too.

There are many “successful” entrepreneurs out there publishing posts/books about building a business. Some of them have such an authoritative voice that it’s easy to fall into the copy and paste attitude.

“He/she followed that path and was successful. If I follow the same path I will be successful too.”

Much like with code, chances are that:

  • the “recipe” proposed by your hero doesn’t do exactly what you want.
  • You will need to change it
  • To change it you will need to understand it.
  • Parts of the recipe you have copied are now an obstacle instead of an help.

As with code, I have learned to copy just the bits that are “timeless” and reusable. The rest I’ll forge it myself. Sometimes it’s hard, because I feel I could take some shortcuts, but I remind myself that in the long run it will pay off.

What about you? Are you following a similar approach? Or a totally different one? Hit me on Twitter if you wanna chat or write a blog post about it and send me the link. I am very interested in this topic.

Putting Marco’s Numbers in Perspective

Marco Arment has published the sales numbers of Overcast, the podcast application that he released six months ago.

We need more posts like this. They help a lot other entrepreneurs to explore opportunities and put things in perspective.

Before you jump to the “he made it so I can make it too” conclusion let’s put those numbers besides other facts/numbers:

  • Marco runs a very famous blog. I don’t know if Alexa is still the goto tool for measuring websites but his blog has a 45,162 global rank. Just to give you an idea this blog ranks 5,616,248.

  • Marco has 78K followers on Twitter. Some of them are fans and will probably buy whatever he builds, whether it’s high or low quality.

  • Marco runs a very famous podcast with Casey Liss and John Siracusa. Just to give you an idea, the sponsorship for an episode is $3750, which is pretty high for a podcast.

  • Marco has a reputation of building good products: from Tumblr, Instapaper and The Magazine. People trust him.

This didn’t happen overnight. It took him a long time to get to this point. As far as I remember Instapaper dates back to 2008 if not earlier.

So if you are thinking “all I need is 15 months of hard work to build a good product then I will make ~165k a year in revenue” you are wrong. The right way to read his post is:

If you have this kind of online presence AND built this kind of trust AND built a good product then you can aim for that range of revenue.

Clearly there can be exceptions. A developer/team that you have never heard of builds a great product and boom, instant success (and huge sales). That has the same probabilities of winning at Blackjack, without counting :)

The lesson I take from Marco’s post is: besides building a good product, build an audience that trusts you.

Where’s That App?

Tons of words have been written about the problems that developers have with the App Store:

I enjoy a lot the fact that whenever I buy a new machine or install a new version of Mac OS X all the apps are “there”, in the list of my purchases. It’s just a matter of clicking on a bunch on “Install” buttons and wait. With third party software is a bit more complicated:

  • Go to the website of the app
  • Download it
  • Find license token and enter it

The App Store app collapses all these actions in one click, it’s a huge win for the final customer. There are drawbacks though. This is my recent experience.

I recently installed Yosemite on one of my Macs and I started digging through the list of purchased apps as I usually do. While some where downloading I wanted to write a blog post so I looked for Clean Writer Pro, a very nice and simple app that I bought a while ago. It wasn’t in the list of my purchases. It’s not unusual to experience glitches like this in the App Store app. So I ran a quick Google search and ended up on the app website. I clicked the black button and:

The item you’ve requested is not currently available in the Italian Store, but it is available in the U.S. Store. Click Change Store to view this item.

Weird, but again not the first time. So I asked a few of my American friends to open the website and click on the black button. Same story, the app is not on the store. What? I bought something and I think I have the right to use it. A developer can pull an app from the store whenever he/she wants, but since I bought it I should be able to use it as much as I want. To be clear, we are not in the case in which the app is not compatible with Yosemite. It is not in the store anymore.

The app was not expensive and there’s plenty of similar apps, even free. Clearly I can write posts using another editor. Yet, this is not a great user experience. In the good old days we used to buy boxes with floppy disks or CDs, in other words we “owned” a copy of the software. I am comfortable with the idea that now we don’t “own” it anymore, as long as I can download it as many times as I want! In this case what I expect is that an app I have bought appears in the list of my purchases even if the developer pulled it from the store.

I got in touch with the developer via the contact form, but I didn’t hear back and I am not blaming him/her at all. Should I start including my Applications folder in Time Machine? It doesn’t sound like a great idea. To me only data should be included in the back up.

Anyway I quickly put on my The Wolf hat and solved the problem the good old way. I just didn’t expect it to work. I copied the app from the Applications folder of another Mac! And it works! I could have copied it also from a backup I guess. It works because I bought it using the same Apple ID. I solved my problem but still I don’t feel it’s the right solution. It looks more like a patch. Plus not anybody has two machines and can afford to use one as a “cache” for apps :)

This issue got me thinking about a few other edge cases that I could stumble upon in the App Store:

  • I buy an app, then I ask for a refund and I get it. Later I change my mind: can I buy it again? I think so but I am not sure.
  • I buy an app, the dev takes it off of the store a few days later. Can I ask for a refund? I think so, but who knows.
  • An app implementing Auto-Renewable subscriptions gets pulled form the store. The app is still installed on my device. Am I still billed monthly? I have no idea

If you had similar experiences let me know on Twitter. I am curious.

Where Are Not There (Yet)

I was skimming Apple’s related announcements at CES and I stumbled upon Toshiba Transfer Jet.

The fact that tools like this are still invented (and probably sold) makes me think we are not there yet. The dream of moving one file from a device to another is in fact still paved with complicated requirements. This led me to inspect the requirements to use AirDrop, which are pretty high, considering the following facts:

  • There’s still lots of iPhone 4S and iPad 2nd generation out there
  • Not everybody has upgraded to Yosemite yet
  • Not everybody has an iDevice

The problem of transferring a file in a p2p fashion could be easily solved by running an app that starts an HTTP server and shares a folder. That’s it, really. On another device you visit the URL via the browser and download/upload what you want. This is how VLC worked for example. You still need a WiFi connection, but that’s pretty easy to find nowadays. Bluetooth would be ideal because it does not even require a WiFi but the odds of finding two phones (beloging to different platforms) with a Bluetooth chipset that is “compatible enough” to allow a file transfer seem pretty low to me.

My point is that I would love to see the “trasfer problem” solved via software tools, instead of a hardware dongle that you might forget or not have handy when you need it. But it seems we are not there (yet).

Amazon Devices

Dustin Curtis on Amazon Echo

The media strategy that seems to be driving Jeff Bezos to make mobile consumption devices (with Amazon’s media stores and Prime video/music) is flawed. No one makes money selling media for consumption anymore. That market is quickly and brutally dying.

The only explanation I have is that Jeff Bezos wakes up in the morning and says “We have this money to spend, we can’t throw it away so let’s build something”.

I dealt with long distance voice recognition in the past and I know for a fact that its possibilities are pretty limited.

Fear of the App Store

As I’ve mentioned in previous emails, I fear App Review. And that’s no small thing. So many decisions I make end up being filtered through whether or not I think something might get rejected. Which has a profound impact on my team’s entire development process …

Is this sane to you? Not even a bit to me. And yet you have to be paranoid about whether Apple will approve your app, especially if you are going to include an offbeat feature. This is even worse.

Contractors may steer their clients away from taking risks.

For sure I’ll never accept a “final payment once the app is published in the store” clause if there’s an innovative feature involved. Too muck risky to me.

Don’t Experiment on the App Store

The recent adventures of PCalc widget leads me to subscribe to the following statement.

The bottom line is that if I were an iOS developer, I would be leery of investing significant resources into a Today View widget.

Unless you have time to explore (and see how it goes) DO NOT EXPERIMENT on the App Store. Do you have in mind a new feature? Toss it out as quickly as you can, submit it and see how it goes. DO NOT PUT SWEAT AND BLOOD IS SOMETHING THAT YOU ARE NOT SURE IT WILL BE APPROVED.

Widgets are a new feature in iOS8 and Apple is still trying to figure out the rules. If you want to experiment, just do it, and share the results with the community!

If each one of us runs a little experiment like James Thomson did, I am pretty sure we can figure out the rules.

UPDATE: Looks like Apple changed its mind. My point still stands though.

Bikes Must Stay Outside

We are having a sunny October over here and I enjoy biking to pick up my kid at the kindergarden. There’s a gate with a bell. You ring it, say who you are about to pick up and they let you in. The kindergarden is surrounded by a beautiful garden, so from the gate to the actual building there’s a short path. I got there, rang, waited for the gate to open and biked to the building, oblivious of what I just did. I parked the bike by the door and got in, happy to pick up my kid. The janitor approached me with a severe look:

“Bikes must stay outside of the garden”
“I am very sorry, I didn’t know. It won’t happen anymore”.

I felt she was a bit harsh, but I thought she was having a bad day. While I was standing in the corridor waiting for my kid, one of his teachers approached me from behind. She tapped on my shoulder and even more severely than the janitor said:

“Do you know that bikes must stay outside of the garden?”
“The janitor just told me, I didn’t know, sorry about that.”

Now I was beginning to feel a bit weird, especially because I didn’t know why bikes within the garden were so dangerous. But hey, I was there to pick up my boy and I was looking forward to hug him! As the teacher walked away the headmaster happened to enter the door.

“Whose bike is that?”

Well, at that point I could not take it anymore.

“It’s mine. In the last four minutes I have been already warned twice. Now I perfectly know it is forbidden to introduce bikes in the garden and I am sorry about that. But, if I may, I suggest you put a sign at the gate. You know, a bike is not a tank and not everybody thinks it’s dangerous to introduce one in here.”
“You know what, you are right.”

And we walked away.

Frankly I am not discussing the rule (even if I don’t get it). I am arguing that those who break the rule just don’t know it!

Now, this little story made me ask myself a bunch of questions:

  • how many times did I make the same mistake in my designs?
  • how many times I made the customer feel guilty about something that wasn’t clearly spelled out in the UI?
  • how many times I “hoped” that customers behaved by the rules that I didn’t make explicit?

Behind a UI there’s a set of rules and expectations. The goal of the UI is to make them explicit. It’s a hard work, but it’s required if you don’t want your customers to feel guilty when they do something they are not supposed to.

Costolo on Mobile SDKs

The mobile SDK landscape has been inhabited by parties that optimize for self-interest first, and your interest second

I have found this quote only in this post on ReadWrite. I can’t believe that Dick Costolo already forgot how Twitter treated developers a few years ago. I hope it’s a joke. Costolo may have a short memory, but developers hardly forget.