The technology behind our Mobile First Cloud First strategy

Excuse my particularly nerdy topic today. This is an exception for me but felt it important to outline what technologies we are using to make this strategy work.

The problem with being Mobile First Cloud First as a tiny little indie developer company is that you have to become proficient at a bunch of different technologies. This is hard for a single developer or two-person team to accomplish.

We are currently developing for three platforms using five technologies. The three platforms are the web, iOS and Android. The languages are Javascript, (ansii) C, iOS/Objective-C, Android/Java and Ruby on Rails. The technologies, besides Javascript and C, don’t matter that much specifically, although writing for iOS and Android leave little choice.

Have you ever really looked at a map of Florida? I mean really looked? In the middle of the state is a massive lake, Lake Okeechobee. It’s so big that it is actually the primary source of fresh water for all of south Florida with tens of millions of residents. When I was in high school in Ft. Lauderdale I remember hearing that Lake Okeechobee was so shallow, though, that you could walk across the entire thing without ever having your head below water level. I’m sure that’s not true¹ but I love the metaphor. That’s how I am as a programmer: miles wide and inches deep. I know all four languages pretty well (my partner does all the ansii C development) but in none am I an expert. Allowing myself to just be proficient is important to pulling this strategy off.

The one that I am probably best versed in today is the most important to make this cross-platform strategy work: Javascript. It’s the primary language we have that works across all devices. And lucky for us it has gotten awfully good over the last few years. We use it in specific views, never for view transitions, minimizing the places where it is obviously not native code.

Within those views we do have some animations and a few controls.² We consciously decided, however, not to match the look-and-feel of native controls. Instead we created our own that function well but don’t try to be the same. I suspect most of my customers won’t really notice the difference.

As much as we could develop in cross-platform code we did. That means big chunks of the UI are in Javascript and big chunks of the back-end technology are in C. This allows us to treat the “native” code as glue. On the web that glue is Ruby on Rails, although it could be Python or Go or node or whatever. For the most part it handles JSON callbacks, serves pages and interacts with the database.

On iOS and Android, the framework for the apps is all native and only a single primary view is HTML. This one page, though, is 80% of the UI work to develop and maintain the app. Thousands of lines of code are all cross-platform. Furthermore, we stuffed as much of the processing into C as we could, which will link into Rails and Android and run natively on iOS. The key is being able to make quick updates to all apps.

If you are just starting out, I highly recommend the following resources for iOS, Android and Javscript:

Objective-C Programming: The Big Nerd Ranch Guide (2nd Edition)
iOS Programming: The Big Nerd Ranch Guide (4th Edition)
Android Programming: The Big Nerd Ranch Guide
How To Learn Javascript Properly
Agile Web Development with Rails

Becoming proficient at multiple languages is time-consuming but important to our success long-term. We can keep churning on the same ol’ mobile-only apps we have, making a few bucks a month, or take some of that time and start learning technologies that let us be mobile and cloud first. I think the latter is the only way to sustain success.

¹ Besides, I think the alligators would probably get you before you made it across.
² Check out Greensock, especially in the iOS and Android browsers. Amazing stuff.

Apple Doesn’t Have To Do Jack Shit

Look, I sympathize. I am one of you. I too rushed to ship an app to the App Store in 2008. I too have ridden the ups and downs of the Store. I too have a vaguely successful app if “vaguely successful” means it would provide an unbelievably good side income.

Unlike most of you, however, I’ve been at this a long time. I launched our current product in 1997 as a Palm OS application, have supported multiple platforms over the years, and at one time ran one of the largest mobile software companies. (That’s not bragging. The companies were actually that small back then.) I made the trial-and-purchase-for-a-fixed-price-plus-periodic-upgrades model work and work well for many many years.

But those days are dead, and, some tough love is needed here: THIS IS NOT APPLE’S PROBLEM.

Let’s say that together now: the dearth of many viable iOS indie dev businesses is not Apple’s problem.

It’s ours.

Whether we like it or not, the game has changed. Trials are out. They’ve been out for six years now and we have no idea if they are ever coming back. Upgrades are out, too. Again, we have no idea if they will ever come back. Ask yourself, do you really want to sit here and wait another 10 months to find out if we will get trials and upgrades, and then wait another three months after that to see it available? Hell, no. I need to make a living now.

It’s time for us to adapt.

It’s time for us to take a hard look in the mirror and decide whether we want to be in business or not.

It’s time to look in the mirror and say, in our best Jack Handy voices, that it’s us, not them.

The sooner we can come to the conclusion that it’s our problem, not Apple’s, the sooner we can move on to something more useful, like re-thinking our approaches and making a living.

“I guess it comes down to a simple choice, really. Get busy living or get busy dying,” said Andy to Red in Shawshank Redemption.

It’s time for us to get busy living.

I was particularly curious what Marco Arment would do with Overcast, his new podcast app. This category may be a hotbed for design but it sure as hell is not a hotbed for making money. Marco, for as many haters as he seems to attract, is no dummy. I am certain he knew this going in. What rabbit would he pull out of his hat, especially with some of the biggest brains in iOS development to discuss it with? No surprise, he tried something new for the category: freemium. Good for Marco.

This should be a lesson for all of us. What’s the old saw? Doing the same thing over and over with the same results is the definition of crazy.

Well, we are the crazy ones. We keep shipping paid up-front apps into the App Store and charging the same prices for them. How is that Apple’s fault?

It’s time for us to change and try something new. Would an app supported by ads work? How about free with in app purchase? Charge for individual features so power users can pay us more? Subscriptions? Or how about just raising prices? Multiple apps so you can cross promote? Move to multiple platforms? Build something useful on the website that people will pay for, too?

Can we take what makes these products unbelievable and get our biggest fans to pay us a little more, even pay us a little bit over time, so we can have a reason to keep devoting energy to these products we love?

Does this mean we may have to piss off a few of our existing customers to do it? Maybe. But losing an arm is better than dying. If we can’t make ends meet then we will all be exiting the iOS development game. We’ll be dead.

But it’s not like everyone has failed. The indie life isn’t dead yet. After all, if a few can make it work than a few more can make it work, too.

Personally, I’m not going quietly. We are working on a new mobile and web service, one that takes everything we learned about iOS and Android, about apps and our customers, about the way the app stores work, lessons from my many years developing our software, and I’m trying to fix two things: an even better product than the one my customers already love and a better business model that makes it feasible for me and a small team to support it full-time.

It took me a long time to get to this point. Frankly, too long. I would have gotten here a lot sooner if I would have stopped blaming Apple for my problems, stopped waiting for Apple to fix the App Store issues, and accepted the fact that there is incredible opportunity in front of me, one maybe unprecedented in the history of software development.

In order to capitalize I am the one who needs to change, not Apple.

Why Trial Apps Won’t Save Mobile Indie Developers

4 Ps

With all the discussion this week about iOS indie developers and how hard it is to make a living, I was asked whether trial versions would help developers out. My answer is that I am skeptical that it will help¹.

First, refer to the graphic above. This is the classic marketing mix as taught in every college for the past sixty years. In short the marketing mix has four pieces: the product itself, the price you charge, the place where it is sold, and what promotion is used to help people find it. It is often referred to as the 4-Ps.

In the old days of selling software, we leveraged all four of these components. We developed a great product at multiple price points with varying features, promoted it through partners, trade shows, publications, direct sales and various advertising campaigns, and sold it in as many outlets as we could. At one point or another powerOne calculator was sold via our web site, value-added resellers, retail stores, catalogs, online resellers and via other partners. We were particularly good at “place”.

Now, though, you have one choice for place and one choice only: the App Store². This puts insane pressure on the other components of the marketing mix. Because there is only one place to purchase iOS apps, everyone looks there. This means that outside promotion — short of a few well-read publications during the launch — fails most apps. Long-term the App Store is the only place to promote, and there isn’t much room for promotion there. A few pictures, a title, an icon and a description, soon a video, is all we get. It is very hard to differentiate any application with only that. And since differentiation is very hard, prices drop. In the end it is one of the few ways a typical app can differentiate: price.

Why don’t I think trials will impact revenues substantially³? Because nothing about this equation changes. There is still only one place to buy apps, and that one place puts pressure on all the other marketing mix components.

It does offer more promotion opportunity, though, my questioner pointed out. Won’t it mean that high quality apps will rise to the top and lesser apps that aren’t as good will disappear, making it possible that the high quality apps get found more and more in the future?

Maybe, but I’m skeptical. The problem is that the volume of apps in any one category is overwhelming and when supply outstrips demand as it has in the App Store, a minor promotional opportunity like trials won’t make that much of a difference. There are literally hundreds if not thousands of products in some categories, like calculators, note-taking apps, and task lists.

Even in niche markets like podcast clients there are ten or more solid choices. When one solid choice is $.99 and another solid choice is $9.99, the $9.99 app has to be 10x better than the $.99 app to even get consideration, and that’s hard to do among tens or hundreds of alternatives. A little 30-day trial isn’t going to be enough to make the difference for the “expensive” app. Thus the race to the bottom is back on, and indie devs still can’t pay themselves a reasonable rate to make it a full-time job.

¹ Although I hope I’m wrong.

² Android is slightly better but not much. There you have Google Play, Samsung Apps and Kindle Appstore, plus a bunch of smaller players that don’t amount to much.

³ And by substantially I mean enough to make a bunch of indie developers revenue successful when they weren’t before.


What If Apple Is Actually Better Without Steve Jobs?

Last one, I promise, on Apple and its worldwide developer conference. This one, though, from Ben Thompson was too good to pass up:

What is critical to understand about Steve Jobs’ Apple was how much it was rooted in fear. Not fear of Jobs, but rather, the abject terror of the company ever finding itself in a similar situation to the one Jobs stepped into in 1997. A company bankrupt technically, and on the verge of being bankrupt financially, deserted by the partner it had made into a powerhouse (Adobe), and forced to accept a loan from its oldest and most bitter rival Microsoft. Jobs, and all of those closest to him, swore never again.

And so, Apple hoarded cash like a depression-era grandma; every new Apple product was locked down to the fullest extent possible, with limitations removed grudgingly at best. This absolutely extended to developers: not only were apps originally banned from the iPhone, and later on subject to seemingly arbitrary limitations and restrictions, but even today it’s unclear if non-game apps can be the foundation of sustainable businesses because of Apple’s restrictions.

There has been a lot of press discussion the last few years about how Apple will fail without Steve Jobs, its undeniable leader. But what if Apple can be a better company because Steve Jobs is gone?

I believe that there is a time in every company’s history when it is time for founders to step aside. Companies change drastically as they grow large and often times the man or woman who started it from scratch and ran it when all hell was breaking loose, when no one knew whether it could make payroll, when its future was uncertain, often times that man or woman is not the right man or woman to run it once its a 30,000 person behemoth.

Steve Jobs was clearly a brilliant man but the company that is Apple today is no where near the company it was when Jobs returned in 1997.¹ In 1997 Apple had $7 billion in revenue for the entire year. In 2013 Apple’s revenues were $171 billion. In fact, Apple’s fourth quarter profit — PROFIT, not revenues, and only the fourth quarter — was more than Apple made in all of 1997 ($7.5 billion Q4 2013 profit versus $7.1 billion 1997 entire year revenue).

Apple, as Ben points out so well, was near failure in 1997. It had been abandoned by almost every big software company. If it wasn’t for one government anti-trust lawsuit it might have been everyone. Jobs had to figure out how to keep Apple alive, and then had to figure out how to grow it. As someone who just went through a life-and-death situation with his own company, albeit no where near the size and scale of Apple, I can tell you how focusing it can be. It was definitely an all-hand’s-on-deck, batten-down-the-hatches experience. It made me fearful for every penny and mistrustful of every “partner.” It instilled loyalties in me that I never thought I’d have for non-family and made me hateful of people I felt abandoned me or didn’t believe in me. I understand completely that “abject terror” of ever finding myself in that situation again.

For Apple, though, that was 17 years ago now. Since then Apple has given us iPods, iTunes Store, Apple Stores, Macbooks, iMacs, iPhone and iPads. It has gone from an after-thought to a leader in the stock market, a thought leader on design, a king of technology, and the envy of retailers everywhere. Millions stand by waiting for what Apple will do next and hundreds of thousands of developers and artists rely on Apple for their living. In every way imaginable Apple is not even close to the same company it was back then.

And that’s exactly what I mean: maybe it was time for a change? Maybe it was time for the fear and loathing that served the company so well in the late 90s to move on? Maybe the ideals and perspectives of Steve Jobs are no longer the right ideals and perspectives for Apple?

We are seeing that now. The management team has changed substantially in Tim Cook’s few years on the job. People who attended WWDC are saying they saw a different side of the people who work for Apple, more open, more cooperative. The features and capabilities announced certainly are a sea change from the Apple of old.

There’s no denying that Steve Jobs was an incredible leader. He ran a team of five and a team of 50,000. That’s a rare skill duplicated by few. He was an amazing thinker, a fascinating strategist, a top-notch designer and technologist. And that was exactly what Apple needed for many years.

But maybe, whether sick or not, his time to lead Apple was coming to an end. And maybe he knew this. Maybe that’s why he established “Apple U” and hired top-notch professors to run the program. Maybe Steve Jobs knew, one way or another, that his time as CEO was coming to an end and that it was important for him to instill in Apple a legacy and mythology that could be carried forward without him.


What if Steve Jobs’ last brilliant move as the founder, recoverer and guardian of Apple was to leave Tim Cook to run it?

¹ It isn’t even the same company literally. Apple was Apple Computers, Inc. in 1997; now it is Apple, Inc.

Pretentious App Stores

We are now involved with multiple app stores due to Android and iOS versions of the app. Most of them perform some kind of review process. I understand the desire to do a review as it, to some extent, helps eliminate some of the app abuse *

Of all the ones who do app review, Apple does it the best. Yes, it takes them awhile but they have very specific guidelines and they test specifically for those guidelines. While Apple will report back if they discover a crashing issue or something that doesn’t work at all, short of making sure it adheres to the guidelines, Apple doesn’t tell us about “broken features.” Apple is looking primarily for things that could be bad for the customers.

We distribute through some other companies that like to “test the functionality” of our apps. They pretend they are a customer and report back “bugs” and opinions about how the app should function, rejecting the app and telling us to fix these issues before submitting again. Except these companies are not our customers and they have spent little time understanding how the product should work. What they think is a bug without really spending time with it is exactly how it is supposed to work.

I don’t need an app store to tell me how to design my products. That’s my job and my customer’s job to tell me when I’ve succeeded and failed.

But rather than pass it through testing and report that they found something they weren’t certain about and wanted to bring it to my attention, I get an email proclaiming that our app failed, resubmit if you want to try getting it through again. Even more insulting is that we have six versions of powerOne, all of which function off the exact same code base. A failure in one has to be a failure in all of them. Except they only ever reject one, and if they reject more than one it is for completely different reasons.

Frankly, reviews this way are insulting and their email rejections are pretentious. I wish they would all stick to what they are good at: making sure the apps adhere to security and safety concerns. Particularly on Android, this is a big enough problem as it is.

* Don’t kid yourself. Most of the review processes are security theater. A nasty developer could easily thwart any of these review processes and not even break a sweat trying.