App Store Rejections, where's the line?

Gruber summarized the rejection of the Commodore 64 emulator as:

Looks like an awesome app — a working C64 emulator with a gorgeous UI.

But while I hope this gets worked out and allowed into the store (I’d buy it in a heartbeat), it should not be considered a bogus/outrageous/controversial rejection. The rejection notice cites sections of the SDK guidelines (forbidding code emulators) which the app clearly violates.

While I agree that this app clearly violates that clause, I think we're crossing an interesting line with iPhone OS 3.0 with in-app purchases. The most common example is most likely going to prove to be "levels" for games -- race tracks, new RPG dungeons, etc.

I can't speak for all game engines, but in a few engines I've used in the past, logic can be built into the levels themselves. For example, an RPG dungeon might require you to push a block onto a switch before a door is unlocked.

Code Interpretation

Interpreting code is often a vague term, so I want to define it as the steps required:

  1. Parse input: Scan "code" to determine its structure and order
  2. Make decisions based on input: Based on the structure, perform the actions indicated

Now I posit that there are already clear-cut violations of this agreement (assuming Apple abided by their own agreement) if taken absolutely literally. What are they?

  • Safari: Downloads, parses, and interprets (compiles in 3.0, from my understanding) Javascript code.
  • Calendar: Parses CalDAV "commands" as to delete, insert, or update your calendar items. Think it's a stretch? I almost guarantee you that this code is written using a state machine with the equivalent of a switch statement.
  • Calculator: You may think this is a stretch, but think about it: what's the first compiler or interpreter anyone ever writes? RPN calculator. In case you aren't familiar, a calculator is a classic example of parsing structured input (order of operations) and performing the operations specified by the input.
  • MIDI players: These little musical machines are state machines that know several commands, like how to switch between instruments, how loud to play a pitch, and when to stop a pitch.
  • Terminal/Shell Applications: Seriously, you're bring up a shell prompt which by their definition execute commands that you type in.

The key here is that with Safari, Apple cannot abide by their own agreement.

Clearly, all third party browsers should be banned if they don't disable Javascript. All terminal applications should be banned.

By not having a clear definition of what defines "code," the agreement puts all applications that download or take user input, parse it, and do something special based on it. That's all a programming language does -- it takes input, parses it, and does something based on that input. Thus nearly any program that parses a file and does something interesting with it should be banned.

How can levels be viewed as interpreting code?

As I mentioned before, logic can be built into the levels themselves that the host application is blissfully unaware of. This actually is another classification I would use to call something an interpreter or compiler: the application loads up unknown input, parses it, and performs actions based on the context of when the input was loaded.

Now we can get into semantics, but remember that code isn't always imperative. There's a whole world that can be called declarative programming. A common example of declarative programming is HTML. The author of HTML declares the content, and the browser must make sense of the content and display it. However, the HTML author is blissfully unaware of how it happens.

This perfectly describes an add-on level. The level declares what it will contain. The program knows how to parse this declarative model of a level, and thus it interprets it and runs the level.

What's the point

Most people would assume that Apple has this clause for security: you don't want programs to download code that would break your phone. However, I think this clause is actually more malicious than protective. I'm going out on a limb to accuse Apple of putting this clause in here to prevent Adobe from creating a stand-alone Flash player.

With this in mind, it makes perfect sense why this would be disallowed. But think about what we're missing out on (naming a couple off the top of my head):

  • LOGO app: The ability to teach kids how to program using a simple language like LOGO.
  • Mindstorms app: Think about the possibility of programming LEGO Mindstorms on an iPhone.

I really feel that the code execution/interpretation clause is hurting the iPhone more than it's helping. There is a minimal security risk, but there's already the same security risk with Javascript and media playing. Beyond that, if any bug in a programmers code can exploit the phone, the kernel and sandboxing aren't doing their job already.

This really boils down to the language of the agreement. The agreement is too open to interpretation that it's rendered useless. Apple needs to either get very specific in its definitions, or it needs to remove the clauses. There is nothing to be gained from pissing off developers. There is everything to gain from being the company who provides products that everyone loves developing for. Be that company, Apple.

Discuss | Posted on Saturday, June 20, 2009, in alacatia, iphone, development, appstore

Adventures in DSLR

I recently decided to go away from the Point and Shoot phase of my life, where I was keen on the Canon Digital Elphs. The smallest with good quality was my desire. I had a vision of constantly taking my camera with me to snap pictures.

The reality, unfortunately, is that with any compact camera, you have to sacrifice the ability to take good quality pictures. Don't get me wrong, they're great for just cataloging memories. However, it's extremely rare to be able to shoot the dramatic style pictures that I so craved to take.

I started researching my purchase a while ago, periodically checking in on things. A month ago, I was torn between a Nikon D60 and a Canon XSi, both at a similar price point. On twitter, I got some good feedback that Nikon was the way to go. I started reading more in-depth about the D60, and stumbled across this statement on Ken Rockwell's excellent site:

The Nikon D60 is a "sucker" camera sold mostly to people who are not professional photographers, but who are impressed by meaningless megapixels. Megapixels have nothing to do with picture quality. The less expensive D40 is the same thing as the D60, but better. The D40 is the professional's vacation camera. It's what I take when I'm on vacation or with family, too.

How could I reconcile downgrading from a 12.1 MP point and shoot to a 6.1 MP Nikon D40? Flickr.

Flickr has an excellent feature: it allows you to search by camera. I searched by D40 and D60, and zoomed in on the pictures that people had posted the originals of. I was stunned. The quality of the D40 is excellent. Considering I rarely print pictures, and when I do I rarely print larger than 4x6, 6.1MP is fine. More impressive, however, is that when I look at the image actual size, it's nearly perfect -- very little noise. This is a drastic change from my point and shoot.

So, I decided to do it. I put a Nikon D40 search into Craigslist and subscribed to the RSS. Last Thursday, a hit came up: a used camera for $350, a full $120 under the retail price. I had to check it out, and I'm glad I did. It was in perfect condition. Basically, the seller was a college student who took a beginner's photography course, and decided he didn't use the camera after the class enough to justify holding onto it.

Within hours of getting home, my wife took Cocoa outside to play frisbee. I decided to put the camera to its first test. The results are spectacular to me. The thing that impressed me most is that with my point and shoot, capturing high motion subjects is very hard. With this, throw it into continuous mode and just snap away. I took about 150 pictures over the course of 10 minutes. Nearly every one turned out good, leaving me with the hard choice of picking out a unique set of "bests" to post to Flickr. Here's my results:

Cocoa and Erin playing frisbee in the backyard

Cocoa and Erin playing frisbee in the backyard

Cocoa and Erin playing frisbee in the backyard

Cocoa and Erin playing frisbee in the backyard

Cocoa and Erin playing frisbee in the backyard

Later that evening, I took the camera to a local Meetup group for active dogs in Austin, and I got some more great pictures.

I still have a lot to learn, but I now am no longer being limited by the camera itself, and it's a wonderful feeling. If you've been thinking of going DSLR, it's totally worth it!

Discuss | Posted on Sunday, August 31, 2008, in photography

A Few Great Political Documentaries

My wife and I love good documentaries, and 'tis the election season. We've watched a few great movies that I wanted to pass along just in case you're in the mood for a good documentary one of these days.

Free for All

This movie is an independent film that was released this year, I believe. The best part is that there's a few great options for watching. If you're cheap, you can watch the entire thing on the website for free. If you have a way to put an unprotected mp4 onto your TV, you can download it for $4.95. If you want a DVD, you can get one for $19.95.

This movie is about what happened in 2000 and 2004 with voter suppressions and other election irregularities. I found the tone and narration to be funny and entertaining, while still being very serious about the problem.

Hacking Democracy

This movie is an HBO film about the insecurity behind some of the most popular voting machines in America, the dishonesty of that company, and the election officials who struck deals with that company. Of course, you all know them as Diebold, but they have since renamed themselves to Premiere Election Systems. Just recently, Diebold admitted that there were programming flaws in the machines in Ohio in 2004. Even worse, they claim it can't be fixed before the November 4 elections this year.

Additionally, the state of Ohio is suing Diebold over the flaws in their systems.

Even though action is being taken, this movie is a great documentary covering how a group of people worked hard to uncover the truth behind the Florida and Ohio elections.

If you want to watch it in browser, Google Video currently has it, although I don't know if that will continue to work.

Uncounted

This movie I haven't watched yet, as I just found it while searching for a few links for this post. However, the trailer looks good. If you've seen it, feel free to weigh in on it below in the comments.

Video the Vote

Even if you're not interested in watching a documentary, the best thing I learned from Free for All is about the organization Video the Vote. The idea is to organize citizens into one large video camera to monitor nearly every polling place for irregularities -- voters being turned away for "improper documentation" or "not being registered" despite having a registration card. It's definitely a program to check out.

Discuss | Posted on Saturday, August 30, 2008, in politics

Biden a good choice?

So as everyone knows by now, Joe Biden was chosen as Barack Obama's running mate. I did a little hunting through YouTube, and picked a few clips out:

Joe Biden on Iraq

Joe Biden on Berevity

Joe Biden on Guiliani

Joe is Right

My Take

I believe that the above videos show that Joe is a great speaker, knows his stuff, and will be a good asset to Obama for this election. It's nice to have Obama paired up with someone who you has a lot of experience.

Compared to McCain, Obama is a clear pick to me. To me the most important issues for us today are the economy and the war. The war directly influences the economy, in that it's one of our greatest expenses.

McCain would have you believe that the only course of action for the US to take is to stay the course, for up to 100 years. We might even want to bomb, bomb, bomb Iran. He blasts Obama for not having foreign policy experience.

Yet, what has happened? Obama has pushed for timetables for a long time. All the republicans kept disagreeing, including McCain. Yet, a few days ago Secretary Rice agreed upon timetables for withdrawal. Obama has been stressing how we must get back into Afghanistan before it's just as bad as Iraq, and has been suggesting 12,000 troops. A little over a week ago, the Pentagon decided to send 12,000 additional troops.

On the economy, McCain admits the economy isn't his strong spot. His own top economic advisor called us a "nation of whiners". McCain doesn't even know how many houses he owns. He critized Obama's suggestion that properly inflating tires and maintaining your vehicle would save the US nearly as much oil in the short term that offshore drilling would deliver in 12 years. He even started selling $25 tire guages labelled, "Obama's Energy Plan." However, Obama's statement is backed up by the Bush administration's highway department, as well as many other independent groups. The next day, McCain went back on the record saying he didn't disagree with Obama's statement.

Clearly, McCain is disconnected from reality when it comes to foreign policy and the economy.

Living in the heart of Texas and attending an "evangelical" small-town church, I shudder at the logic of politics. Of course, one must always tread lightly, but I had an opportunity to discuss politics with someone who shared interest in a common candidate: Ron Paul. However, what shocked me was that now that Ron Paul is out, he was "most likely" going to vote for McCain. We discussed it a bit, and the true concern came out: he was worried about Obama secretly being a muslim. I did my best to dispel that rumor.

I'm hopeful that Obama will be elected. Do I think he's the epitome of my beliefs in government? No, far from it, I'm much closer to Ron Paul. Given that Texas is not a close state at all (currently 96% McCain), I have the joy of being able to vote for my heart, and not the lesser of two "evils." On the other hand, I wish I was in a swing state in which I could attempt to make a difference.

Sorry for the rant, had to get this out and in writing. Now, back to our normally scheduled geek stuff.

Discuss | Posted on Saturday, August 23, 2008, in politics

Trip Cubby for iPhone Released

Yesterday afternoon, App Cubby had its first product finally launch in the iTunes store: Trip Cubby. Trip Cubby is a mileage log for tracking trips that you expect to receive tax deductions or reimbursements for. We've received some great feedback already. Let me quote one review:

The website offers a TRULY informative movie, presenting delightful surprises at virtually every turn as various aspects of the program are demonstrated. Dang near every feature an IRS-conscious user wants is present. And, the intelligent implementation, in both input and execution, is absolutely wondrous[...] THIS is the sort of quality business app I anticipated when news of the SDK dawned.

I'm really excited by this line of products we're starting. It's been great fun to develop, and I look forward to showing what else we have up our sleeves.

If you're interested in Trip Cubby, check out the website where there's screenshots and an excellent screencast.

Discuss | Posted on Friday, August 15, 2008, in iphone, appcubby

Introducing My Podcast: HelloWorldPodcast.com

A couple of months ago, I had a grand vision of bringing a new podcast geared towards programmers. Today I'm happy to unveil the first episode that actually contains some content. Introducing, the Hello, World Podcast.

I've got a lot of contacts to potentially interview, but only have two interviews solidified: Haskell and Ruby. I'm looking for more people to talk with about various languages and what makes them great.

Hopefully some of my readers here will subscribe to the podcast :)

Discuss | Posted on Tuesday, August 12, 2008, in news

Apple Dropped the Ball, will they pick it back up?

Before I get into my rant essay, let me preface preface it with this statement: I love my Mac, I love my iPhone, and I love writing software for both as well. I did a career flip last year and spent almost a year on a C# ASP.NET on Vista job. I learned a lot, but missed developing on my Mac. With the iPhone announcement, I began dreaming and finally quit my job to pursue my ideas.

I happened upon another person in my area starting a company building iPhone software. He also quit his day job to pursue his dreams.

Over the past few months, we've built a great code base up, have one app ready to go and several others coming down the pipe soon. Things couldn't be going better, right? Unfortunately, that's really far from the truth, and that's what leads me to write this post.

We've had an extremely nightmarish experience trying to get our product listed. Writing the software was extremely easy in comparison. I have even gotten two of my personal apps into the store. Unfortunately on Friday, one of them was delisted from searches. Today it showed back up with no explanation.

What follows is a lengthy, but hopefully enlightening, story about how we've struggled with the unresponsive, restrictive organization that is Apple.

iPhone SDK Day, March 6, 2008

I remember the day quite clearly. I was at Microsoft's Mix '08 conference in Las Vegas, and strangely enough, I was loving it. Mix is Microsoft's web developer conference, and that day I was attending sessions and networking. I had my iPhone and MacBook Pro checking the various websites for news of the SDK announcement. I kept refreshing, reading every juicy tidbit. After the announcement was finished, I kept trying to register my company into the iPhone SDK program in every session for the rest of the afternoon. No luck, the site was down.

That evening back in my hotel, I was able to sign up finally. I downloaded the SDK, and began playing with it. That was the night that the the seeds of going indie on the iPhone were planted.

Quitting My Day Job

I toiled with this decision for a while. In fact, I gave my two weeks notice several times, only to let it slide each time. I loved the job, and the only downside was that I had to use Windows. But even that wasn't all bad -- Visual Studio is a great environment, C# is a great language (especially 3.5), and I was working with a great team using bleeding edge technology (such as VS 2008 and C# 3.5 while it was still beta). I was having a great time at that job, but the allure of doing Cocoa programming as an Indie full time was too much to ignore.

I just had to do it.

iPhone 2.0 Launch Day

We were ready to launch Trip Cubby on the day of the iPhone launch. The problem? The company's application never was looked at. Out of desperation, we emailed and called, pleading our case. When we finally heard back, it sounded like we were going to get our break.

In the next week, we had several people inside of Apple look at our program. We received rave reviews.

Yet, we still hadn't been accepted into the program at that point. After more waiting, we did finally get to the "send us your company documentation" stage shortly after. We faxed the info the same day and waited.

In the meantime I submitted my personal iPhone developer application, after finding out that those get approved instantly. Sure enough, I gave them my $99 on July 12. Coincidentally, I had thrown together an application for my wife to count down the days left at her Opera "Boot Camp" she was performing at. I submitted it on the 13th right after I tested it on my device.

Of course, despite being accepted into the personal program instantly, your contracts still take another roughly 2 weeks to be approved. My app's status was promoted to "Ready for Sale" on July 21, but my contracts didn't get approved until the 28th. Even then, my app did not get listed until July 31, and at that point it didn't even show up in the "recent applications" list, because it had the date of July 18th attached to it!

The Waiting Game

While it was nice to finally see my app Countdown in the store, the product I was really proud of and ready to sell still wasn't ready. On July 28 our company's application was finally approved. Unfortunately, we still had to go through the contract setup phase (banking information, etc). We submitted our info as quickly as possible and submitted Trip Cubby the next day after some final testing.

Despite our best efforts to keep things moving along, we are helpless again at this point. We've called, emailed, etc., but nothing moves forward. Trip Cubby was approved on August 1, but our contracts are still pending completion.

Ok, enough sob story, where's the meat?

Fair enough, I know our story isn't the only one out there like this. My purpose isn't to be the first person to write a sob story. No, my purpose is to call Apple out on their missteps and suggest how they can correct them moving forward. While our dream has turned into more of a nightmare, I can narrow my misgivings to a few things:

  • Arbitrary favoritism abounds:
    • How the heck did the Wordpress application get approved and into the store overnight?
    • How did the first 4,000 developers get chosen?
    • Why do only a subset of iPhone developers with applications in the store get access to the 2.1 betas (hint: I don't have access to them)?
    • Why do the ADC select/premiere programs not give any weight on the iPhone side (hint: I was a select member) nor give access to prerelease iPhone software?
    • Why is it when getting rave reviews from everyone you show your app to, including people inside of Apple, can you not get into the store while lots of crappy software1 gets in?
  • F*$@ing NDA
  • My app Countdown mysteriously disappeared from search results on Friday. The direct link still worked, but any attempt to find it was fruitless. I can't think of any reason for it to be removed. As of mid-day today, it reappeared, still no explanation.
  • The entire above story, enough said.

These things leave me scratching my head, and coming to the obvious conclusion: Apple doesn't care about its developers. There have been times in the past that I've felt this way, but never allowed myself to really talk about it. The first hint were the false public statements about Carbon, Cocoa, and Java were peers on Mac OS X. There was the whole MacHack mentality change back in the 90s. And of course, the constant breaking of things between releases without caring too much (for a stark contrast, read Raymond Chen's excellent blog The Old New Thing).

And most importantly, the unwillingness to communicate with developers is killing us as 3rd party developers. Developing for Mac OS X, communication isn't quite as key as it is with a brand new platform, especially when the platform is tightly controlled. At least with Mac OS X, Apple can't stop you from starting a business and getting customers. It's a truly free market. The iPhone on the other hand, best of luck starting a business!

Is it worth it to develop for the iPhone?

I sure hope so. On one hand, you have this post and many, many other posts out there by developers in similar situations. On the other hand there's clearly a good market for iPhone apps: my countdown app has done surprisingly well (until it was pulled from the search results).

Clearly Apple is out to make a buck. And I don't mind that -- every company is out to make a buck. Heck, even I admit I'm in it to make a buck doing what I love.

The question is, at what expense does Apple go to make that buck? Pretty much all of my pains could have been avoided without much effort (at least, not from my perspective). If contracts genuinely take two weeks, why isn't there a more automated process for it? If application reviews take a minimum of 3 days, why not hire some more staff until things calm down? If the NDA is really a necessity, why not set up community forums that require an ADC login to get access to?

Of course the most interesting aspect of this line of thinking is that, what is it costing Apple to not approve applications? They're taking a 30% cut off of the top of the apps. This has got to be a great revenue stream for them. By making this process less than ideal, they are in effect removing revenue potential right now both for themselves and the developers who are struggling. I'm sure the market has great potential, but Apple is very actively regulating it without any communication about their reasoning.

Only time will tell if it was the right decision to quit our day jobs and pursue developing for the iPhone. I still have a glimmer of hope that one of these days Trip Cubby will be in the store, it will do well, and we will continue the journey of building great iPhone apps. But this hasn't come at no expense to us: a lot of stress and frustration.


1There's a lot of great software too, I'm a happy user and purchaser of a lot of great apps.

Discuss | Posted on Sunday, August 10, 2008, in apple, iphone, microsoft, development

Group and organize your iTunes sales stats

I've been watching my daily stats for my application (soon to be two applications). I haven't announced them here yet simply because I have updates pending, and I'd rather wait for the update to come out. The one app has been doing surprisingly well, but as the days go by, I keep getting frustrated with dragging files into Numbers and looking at them individually. Weekly reports are great, too, but then I saw this post over at tap tap tap in which they had pretty graphs for their numbers.

I decided it was time to write something to aggregate my daily dumps into a format that I could more easily graph. So, I created a short Python script to do the job. Introducing appstorestats.py, a simple script that scans its own directory looking for daily dumps from the iTunes store. It will then gather all the statistics and output several reports in a tab delimited format that Numbers (and I'm sure Excel) can read. It makes it a couple clicks to get a great graph for your data.

Reports are generated first for all applications found, and then also re-run for all applications combined.

The current reports are:

  • Downloads per country per day
  • Downloads per day

I plan on supporting date ranges in the future, but since no one has more than a month of data yet, I figured it wasn't important to implement tonight. Hopefully some people find this useful. If you have any suggestions for reports, you can either implement it and send it to me, or suggest it below. If you implement it yourself, it's more likely to be added.

If you'd like to get updates, you can check out the script from Subversion on Google Code.

Update August 8, 2008: Fixed a silly copy/paste error when outputting total downloads per day. Also, updates no longer are counted if they aren't paid.

Update August 10, 2008: Country names are now resolved.

Discuss | Posted on Thursday, August 07, 2008, in apple, iphone, appstats

$.99 App "Units Converter" Overtakes Texas Hold'em

For as long as I can remember, Texas Hold'em has been at the #1 spot in the Top Paid Apps list in the iTunes App Store. This evening, I noticed Units Converter, a $.99 utility, has overtaken it. This is interesting for several reasons.

First, I hadn't heard of the app before yesterday, when an update was released. Secondly, it takes the top spot having only a 3.5 star rating. Lastly, there was this review for it by "CydeWeys":

How is a $0.99 app #21 on the free apps page?

This is interesting because this detail makes it sound as if this was miscategorized as a free app. If it were #21 on the free apps list, and now it's top on the paid list, it seems that free apps are extremely more popular than paid apps. That's not exactly a profound realization, more just confirming that people would rather get something free than pay for it.

I wonder how many people bought this when listed as a free app without realizing it was $.99? I don't think the UI warrants the #1 spot, it seems strangely laid out, misaligned text captions. But, it does function, which is a lot more than I can say for other apps.

Anyways, here's to Units Converter's new found stardom!

Update July 31, 2008 10:55 PM

Units Converter is no longer listed in the top paid apps. Texas Hold'em is reigning again. I don't suspect it to be overtaken for a while.

Discuss | Posted on Wednesday, July 30, 2008, in iphone, apple

All Things iPhone (that I can say)

Let me first express my sentiment using language that I try my best to rarely use. This situation warrants it, and it's a apathetic cry by iPhone developers worldwide: F&@#ing NDA.

The NDA in place causes a lot of frustration for me. Projects that I've had fun working on and revelations that I've had while working, all under lock and key because of the NDA. Oh how I would love to tell you about my experiences with #$*&%*&@ and @*#&%*&, but alas I can't. I long for the days in which the NDA will finally be lifted. 2.1? 2.2? Never?

Syncing is another sore issue. Or more specifically, backing up is painful. Yesterday, I attempted to install two new apps that I had downloaded on my computer. I started the sync process at about 2:00pm. An hour and a half later it got interrupted. I started again. An hour later it got interrupted again. I remarked in a reply text message to that individual I was seriously thinking of switching on Airplane mode to just sync!

And here we are today, I've been backing up for the last hour and a half, the progress bar is about 95% done as I continue to write this post. This will be my first successful backup in the past 4 days, if it doesn't get interrupted.

On a positive note, while apps crash and my phone reboots itself probably about once a day, these minimal downtimes are simply minor inconveniences for an otherwise pretty decent experience. Yes, iPhone 2.0 is working pretty decently for me. I've got a lot of software that's great on my phone, more that's just "good", and I think I've eliminated everything that stinks.

Of course the last sore spot is the lack of my software on the phone. As I mentioned in my previous blog post I have a solo app and a team effort awaiting approval. Everything is sitting approved for my personal app for the last two days, but it still hasn't been posted. The other is awaiting approval, so we'll see how that goes.

Another 15 minutes has elapsed, and my progress on backing up has slowed to a further crawl. Will it finish? Will I just give up? Only time will tell, but I'm certainly not enjoying these failed backups.

So, users of iPhone 2.0 or developers for the platform, what say you, are my sentiments roughly aligned with yours?

Discuss | Posted on Wednesday, July 30, 2008, in apple, iphone


Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.