Today is a good day to code

Why the Volume Approach to Sales in the Apple App Store Won’t Work

Posted: December 16th, 2009 | Author: irv | Filed under: Apple, Companies, iPhone | Tags: , , , , , | No Comments »

For a few months I have been thinking about the app store. Specifically I have been thinking through all of the drama and screaming that is occurring on the internet over the rejection of a few apps, the difficulty of finding anything quality in the app store, and the impact to actual users. The conclusion that I have come to is one that is different from the conclusion to which I had figured I’d arrive before thinking deeply about it.

Basically the App Store is great for Apple, but bad for developers. OK, you may think, well that is obvious and it is, but I don’t think that it is quite as simple as that. Firstly, I think Apple has brought their brilliance for marketing physical machines, accessories, and their integrated software and applied it to third party applications. Secondly, they have created an ecosystem where sales volume is king and the primary means of competition is over price, not quality. Regarding the second point, I am certain that they did not intend to do this however, it is in fact where things are today.

To understand why volume alone in software sales does not make one rich or profitable, you have to look at the contrast between physical goods sales, and service sales in an environment similar to the app store.

Imagine that you have an area like the Akihabara district in Tokyo, Japan, where you can buy anything technology based, motherboards, cameras, MP3 players, etc… Everyone who wants to sell this stuff crams into the Akihabara district even though there are already thousands of people there selling the same exact thing. So why would you do this one might think? It is because even though you have to drop your price to compete with the others, the number of people who will come to the Akihabara looking for some electronic thing is very high, if you were to locate elsewhere, you could increase the price, but you would have fewer people coming to your store. This is less than optimal for someone selling a physical good, to understand this, you have to look at how profitability works when selling a real thing.

If I can buy 5 widgets at $2, my cost is $10, if I sell the widgets at $4, my revenue is $40, my net profit is $30, not too bad. Now lets say I move into the Akihabara, I will need 1000 widgets to accommodate all of the foot traffic, and the people who want my widgets. Because I can sell 1000 widgets, the supplier is willing to sell them to me for $0.25 each. Now I have to cut my price because I have thousands of others selling the same type of widget, so lets say I cut the price to $2.50, my cost is now $25.00, but my revenue is now $2,500, that leaves my net profit at $2,475. I am making way more money now that I am in the Akihabara, even though I am losing some business to my competitors and my per item cost is lower, my profitability is actually better.

Now, lets say we do the same thing for a service based industry like plumbing. I have a plumbing business out in the suburbs and I charge $175 / hour to fix plumbing, maybe I get 100 hours of work every month since I am out in the suburbs and I am the only one. I am making $17,500 per month, I’m doing pretty well. Now I move into the plumber’s alley in town with 50 other plumbers, well, in order to get jobs, since it is so easy for customers to shop around, I have to cut my rate to $65 / hour, and since I am around there with 50 other plumbers, there is a bit more foot traffic, but I am just one guy so when I am out on a job, I can’t collect any more work. Now I am doing 150 hours of work each month, but at $65.00, I’m only making $9,750 per month. The answer would be to hire another guy, let’s say I do that, now I can do 300 hours of work each month, but I have to pay this clown, plus the drain on my time to train him to do it my way, after his pay, I am making $45.00 / month, $13,500, not bad, but still not as good as working less and making more in the suburbs.

Software is not exactly the same, but it is similar enough that the calculus works out nearly the same. I have just seen this happen with my CycleMetrics application, which applies to a broad vertical, versus my Mides application, which applies to a very narrow vertical, and came out when there were very few items in the app store.

With software, there is a significant up-front cost of your, or if you have to hire a team, your team’s time.  But for most people in the App Store, it is just you, lets say you want to build a really high quality application, it takes you about 18 months to get it all done alongside your day job.  You have put about 2,000 hours into it.  Typically your time is worth about $125 / hour, or at least that is the neighborhood in which an agency would price you out at as an iPhone dev in the bay area.  So you have put $200,000 into this iPhone application, or if you were to do a 12 month consulting job instead ( because it would be full-time ), that is what you would have made in salary plus benefits, or salary if you are a typical contractor.

By the time you put out your app, there are 300 other applications that do the same thing, 90% of them are crapware fake web apps with a Cocoa wrapper.  But in the App Store, the users can’t really tell the difference since the reviews have been gamed endlessly.  You don’t do any of that stuff, you play by the rules.  All of the other apps are priced at $0.99.  The target you have set to recoup your initial capital investment of $200,000 is two years.  You expect to sell about 100 a month average over 2 years, because your app is super awesome and you get a good pre-release review.  You realize that you would have to sell your app at $84 each to make that up in 2 years.  So you give up and hope for the best, you hope that Apple features you, or you hit the top 50 list.  You price your app at $19.99.  Apple rejects you a few times, so you have to put in another 100 hours into getting through the review process, now you are 2100 hours into it.  You figure you will eat that as a sunk cost now, chalk it up as a learning experience.

You sell 15 initially because people think it is so awesome that name-the-apple-podcast reviewed it.  Soon you start to notice a few bugs being reported in the comments that the Apple review has missed, and so have you.  But it will take a while to get the fix to market, and so you start this process over and over again.  This time it only takes 10 hours, but you have invested 2110 hours into the project, and have a 2 star rating in the App Store.  Now your sales are so low that you have to drop the price to keep moving units.  If you try raising your prices later, you will just not sell.

Even if all of the past time is sunk, you have future time in support and maintenance costs, even if you don’t add features.  It is the plumber model, you can never be as profitable as if you are a single guy working in an area in which there is nothing else like what you offer.

Most developers don’t count their initially invested time as money, so most developers don’t see this, but time is the only truly non-renewable resource.  They hear about the guy that sold 80,000 copies of x game in a month and raked in a million dollars.  Of course there will be a few like this, its like winning the lottery.  Apple picks a few and they do well for a time, after that however, they get pushed back into the pit with everyone else.

So, is there any way to fix it?  Apple has no incentive to fix it, they, and the app consumers are the beneficiaries of the huge delta in hours invested in the iPhone apps in the app store, and the lack of profit that the devs are getting.  I don’t think we should complain about it though.  It is awesomely powerful to be able to reach millions of people through the app store with a tap and a search.

There are three ways for devs to acheive profitability, one is for everyone in a section to raise their prices.  The overall sales volume would drop, but the profitability would increase, and everyone would make more money, not as much as if they were by themselves in the section, but more than they can make with the brute force of the quasi-free market forces in the app store.

The second way is to use the app store and your application to sell services outside of the app store, like Omni or pandora.  In Omni’s case, they use OmniFocus to drive sales of their mac desktop application where they have a vertical they own, selling productivity products for Mac OS X.  In Pandora’s case, they are using their application to drive affiliate link revenue as well as potentially some aggregate data mining products.  Either way, the bulk of their revenue is going to come from their other business efforts, the App Store is just an adjunct to this.

The third and probably most difficult way would be to come up with a product that is so unique in its technical application that it creates a natural barrier to entry, or to create a product for a vertical that is profitable, but is so small or difficult to understand that most competitors wouldn’t bother.  Examples of this would be like some sort of law research assistant with artificial intelligence that you could charge $199 for, or a notional application that would speak to industrial robots for which you could charge $30,000, but then you become acutely aware of the 30% that Apple charges.  At that price point, it might make more sense to develop it for Android and offer it directly from your site, but you get the idea.

The gist of all of this is that Apple has created a wonderful retail location in the image of their physical item store, one in which they have a monopoly on impressions and can leverage economies of scale.  Since economies of scale have no clear practical application to software development, the App Store should be seen as a massive lead generator for some other monetization strategy.  Getting angry at Apple for being Apple is pointless, take what they have given you and use it.

The last thought that I will leave you with is that Objective-C development is fun, and researching the background of Objective-C / Cocoa from smalltalk is also fascinating.  I am not for one minute suggesting that you shouldn’t develop applications for the iTunes App Store.  On the contrary, I think you should, but you should develop the applications because you enjoy the process, not because you hope to recoup your investment in a number of years.  You will likely not be able to recoup but a fraction of what you have invested.  That is not to say that you won’t get an awesome job with someone who has figured out how to make money in the store because of that initial time investment.  That is what I would be using the developer program for, to enrich and expand my programming abilities, not to try to get rich quick.


Google Sitemaps

Posted: July 29th, 2010 | Author: irv | Filed under: ColdFusion, Google, Programming, Uncategorized | Tags: , , | No Comments »

Google Sitemaps

Picture of Irv Owens Web DeveloperAnother couple of projects I started working on was getting a properly configured robots.txt, going, and to use Google sitemaps. If you have a gmail account, and you are a publisher, this is a very easy way to make sure Google crawls your site properly, and knows about all your links. One of the things I have noticed about the googlebot is that it frequently hits my homepage, but it would always only index the blogs that were directly linked to from that page. It would almost never go all the way through my site to get to the oldest articles.

Here is the code from the component that I am using to generate the sitemaps file. I modified the code originally avaliable at ColdFusion based Google Sitemap Creator. It is a .cfc so it should be pretty plug and play. Of course I will change the sensitive details about my site…








http://www.owensperformance.com/index.cfm
#theDatetime#
always

1.0


http://www.owensperformance.com/resume.cfm
#theDatetime#
monthly

0.9


http://www.owensperformance.com/aboutus.cfm
#theDatetime#
monthly

0.3


http://www.owensperformance.com/blog.cfm
#theDatetime#
daily

0.8






http://www.owensperformance.com/blog_content.cfm?
articleid=#urlString.articleid#

#theDatetime#
never

0.7





file=”#ExpandPath('../sitemap.xml')#”
output=”#theXml#” nameconflict=”overwrite”>
Google Sitemaps Overview


Ramifications of Rel Nofollow

Posted: July 29th, 2010 | Author: admin | Filed under: Uncategorized | No Comments »

Ramifications of Rel Nofollow

Picture of Irv Owens Web DeveloperI have been thinking more about this whole rel=nofollow function the search engines want people to use to indicate unreliable links, or links that can not be verified as being on topic by the webmaster. Something that has come up in the use of the nofollow attribute is the way it is being used. Some webmasters have started to use it for entire pages, telling the robots not to follow any links from that page. While this certainly will stop comment spam, or at least stop the perpetrators from gaining from it, it poses an interesting issue. What will happen to the whole link system if everyone starts using it in the above manner?

One of the reasons you don't want robots to credit outbound links is because they can indirectly take up your PR. Again, not that 'Page Rank' is used in any valuable way anymore, but we know that the engines do count links in order to determine a site's popularity. So if the robots don't see any outbound links, it will help the site keep what PR it has, but then no new sites can establish themselves because everyone will be hiding any links to them using the nofollow attribute. The effect this will have on the web is that established sites that are already important will remain so, while new sites will have a very difficult time getting themselves into SERPs on Google or Yahoo.

I am sure the big search engines have thought this through and they must be slowly de-emphasizing the value of inbound links in favor of some new method of determining a page's worth. Perhaps now they are looking at the real quality of the pages that link to a site. Truly there are only a handful of high ranking sites of value on the web, and to get a link from them, whether it is a nofollow or not should be considered to be a good link, links from other sources on Google's PR list should be considered lower. So I hope that the robots are still noticing the links and just comparing them to their importance table, even if they are not following them for crawling to continue to assign the importance scale. If the major search engines are getting away from using links as an indicator of value, its about time. People are gaming that in a way that no one can check for, they are buying links which Google and Yahoo can't control, so they will have to change to an internal site ranking policy that isn't based on links. So the nofollow attribute is probably a stop-gap measure until the new system is in place.

Search is these guys business, and they can't afford to have their searches not relevant. They couldn't sit around and watch people buy links forever. I just wonder what the new system will be based on. Perhaps it will be something deeper like how many other sites discuss another site, or the criteria that a site have actual natural language on it, and not just keywords. But probably what has happened is that enough people are using the Yahoo and Google toolbars that they can now determine statistically which sites are getting the most traffic and they can also see how many pages are accessed, and how long users stay on that site. Then they can perform analysis to determine how important the site is. That is why it was so critical for Yahoo to come out with a firefox version of their toolbar, it is imperative that they get as many data points as possible to establish their new algorithm.

Yahoo Search Blog – Rel nofollow


Browser Head Robots

Posted: July 29th, 2010 | Author: admin | Filed under: Uncategorized | No Comments »

Browser Head Robots

Picture of Irv Owens Web DeveloperIn all the movies we watch, there are mostly self-contained autonomous robots. Recently I began to think about exactly how much data you can truly pass on a 54 Mbps connection to a remote device. I began to think even more about the robots that we all dream about. Why wouldn't it be possible to develop a robot that has a basic interface, similar to a browser and just stream commands to it.

For example, if a robot needed to talk to a human being or another robot its audio pickups and optical pickups could stream the images coming from the other individual to a centralized server to be analyzed. The centralized server could process the data and send the appropriate response to the robot to speak, and what gestures to use. It may not be possible to pack enough hardware into a human sized head for a robot to think as well as a person, but then again, who is to say the we think fully in our own heads.

Obviously these types of machines have incredible applications in surveillance and espionage, as well as battlefield implementations. They could gather intelligence, and be disposable without much risk of compromising the technology. All of the hardware required to process information would be safely back in the United States. What we would have in essence would be a drone-army. They would almost immediately render war impractical, because we could always take more losses than anyone else. We would be losing only machines.

This brings about the movie scenarios where robots take over the world, and where robot wars between super-powers destroy the world. The use of military devices for deterrent hasn't been incredibly successful. All anyone has to do is look at the 70's and 80's to see that. I don't really advocate the use of robots to fight wars, but I am also pragmatic. It is unlikely that robots would be used only for civil projects. The advances that could be made in all fields by using these types of robots would be incredible. Especially the field of construction. Perhaps the paradigm of the thin-client will spread way beyond the computer and the network to the real world in the form of browser head robots. If I were to work for Google, and have a day a week to work on my pet projects. That would definately be it. Although, who am I kidding. I am a web developer, not a robotics genious, but you never know.


The Importance of Session Management and AJAX Security

Posted: July 29th, 2010 | Author: admin | Filed under: Uncategorized | No Comments »

The Importance of Session Management and AJAX Security

Picture of IrvinI have been reading a lot recently about how insecure AJAX applications are, but I haven't been seeing many suggestions. That is probably because a bunch of people want to try to make a killing by ransoming off that information as consulting fees. It is easy to improve security for your AJAX application without paying a grip for it. None of the methods I'm about to describe are foolproof, but they should stop many of the drive-by service stealing that many of these attacks are describing.

  1. USE SESSION MANAGEMENT – I know it seems basic, but if you establish a session for your users when they come into your entry point, have your services verify that the session is valid before releasing or accepting data.

    Now it is pretty easy to get around this by having your hack bot hit the home page first, but again it should stop some of the casual hacks.How to Do This:

    1. The safest way is to set a session cookie upon entry with JavaScript. Most robots don't process JavaScript, especially if they are using an XML interface, so they wouldn't have received the session cookie.

      If you want to see how to set a cookie with JavaScript check the JavaScript libraries in my bothsidesofastory.com site.

  2. USE SSL – If you must set the session cookie, or accept login information, whatever you do, don't send it unencrypted. The simplest way to encrypt the user name and password are to mash them together with some key. The hardest way, is to AES-128 encrypt the user name and password with a pre-shared key. The way to do this is to bring the user into an standard Web 1.0 SSL login page. They will then receive their key. You can save their login information hash encoded with AES-128 as a cookie.

    This is complicated because you have to manage the pre-shared keys on the back end and expire them appropriately, etc… For many web 2.0 sites this won't work because the user name and password are sent over an XmlHttpRequest call, and are easily snooped. I would recommend using a JavaScript based AES-128 encryption package. There are many good examples on the web, though they will require some cleaning up for proper use. This will let you use something that is shared between the client and the server as the key, and encrypt the login and password. Once the server gets it, whatever the key is was already sent in the headers, so you can decrypt the user name and password and establish the user's valid session.

    If your user can't accept cookies, then the best way is to attach a varying GUID to their URL string as a token for each request. This method is not very secure, but its better than nothing.

Anyway, these are a couple of methods to easily safeguard your site against the most basic hacks. As I have always said, if you have something that someone wants really badly, there is almost nothing that will save you. The best you could hope for is some type of intrusion detection, so that you could be alerted of their presence. You could also employ a service honeypot that would deliver false information to a would be hacker. That service could keep them busy long enough for you to detect them and boot them.

Anyway, I'll probably write more about techniques for securing your services even though all of your business logic is downloaded to the client. There are inherent problems with pushing that much logic in plain text to the client, but with the right comination of Web 1.0 techniques, and Web 2.0 techniques, you can easily establish a modicum of security.