I recently sat down (virtually) with iPhone application developer Arend Hintze to do a Q&A his approach to programming. Here are his unedited responses to my inquiries:
Arend showing one of his iPhone games to his son, Titus who also has a twin brother named Jonas.
Tari Akpodiete: What is your programming background? How did you get into iPhone App development?
Arend Hintze: I studied biology in Germany, and I did my phD in genetics and developmental biology ... a bit of a leap to what I do now, which is summarized best under the term: Computational Biology, which is not quite Bioinformatics. I deal more with theory and simulations than data-mining or databases. When a colleague asks me what I work on I say: Artificial life, Artificial Intelligence, network theory, evolution.
I admit that sounds quite geeky, and was definitely the last time I bore our readers with too much geek-speak. But it also means that I can use many different computer languages: Assembler, Flash AS 2.0, Basic, Delphi, C, C++, obective-C, Java, php, processing, Matlab scripts, I have my difficulties with Perl and Python, but that is more of a personal thing.
I was preparing a lecture, and I wanted to design a homework for my students that was supposed to be something more interactive. And the only tool that would allow that was Flash, which I wasn't able to code at that time. So I bought a book, and after a weekend of reading, I decided that the easiest way would be to write something that is also more fun, so I took this one idea I already had for quite some time, and wrote the flash game "Loops Of Zen", which was amazingly successful on the internet. I think I have more than 3.000.000 hits on that one and its successor "entangled" already. Which is insanely good, and I suppose it is something that I will not be able to repeat. I personally think about it as a one hit wonder. Anyway, I was asked by so many people to release that game for the iPhone, that I started looking for a freelance agent, or company that would be able to help me on that end. A frustrating month later I gave up on that, because either people were massively underestimating the project, saying they could do it in 3 hours for $150, or told me that they will need 300 hours, or $5000 in development cost - nothing in between.
The only option left was to do it myself, and to be frank that scared the hell out of me. I knew a little but about the windows api (the thing you need to run nice windows applications), and that is horrible to use. Still I downloaded XCode SDK 2.0 at that time, bought the next book, and started. What I found was that Objective-C (which is similar to C++ and Java, but it has it's very unique differences) is very easy, and also well thought out. In addition the SDK is the most complete and intuitive thing I ever encountered. There is a big compliment going out to the people who developed it. Almost everything makes sense, the logic is consistent between most elements, and you have so much stuff in there to do things - amazing. I heard other opinions, but for me I have to say: My brain is 99% iPhone SDK compatible. Unbelievable four weeks later I had my first iPhone game. Unbelievable, because I spent some time on the weekend, and only one or two hours every day on the couch in the evening watching "24" while coding this project.Please keep in mind that I write software for almost 20 years now, so I know how to do things, I just never released a game, or wrote something in objective-C.
The other experience that this gave me is about accomplishment. Doing science projects is very theoretical and most of the time also a very long process, the reward is great and very satisfying, but you can not share that with many people. Most of the things I do, about 10 people in the whole world understand, and maybe another 1000 actually care. With games and apps this is a whole different world.
TA: What programming language do you use? Why did you choose that one? If you use a variety of languages, do you have a preference? Is one better than the other, or does it depend on the project?
AH: For the iPhone Objective-C, and when there is content that somebody is supposed to read, I keep it in HTML. For most science things I use C++ for speed reasons. But I consider using Objective-C as well, especially when it comes to crawling texts, do internet things or databases. The inbuilt functionality and datatypes of objective-C is much better, and the speed is good. Not as fast as C++, but very good as well. If I have apps that interact with a server, I use a small set of php scripts and a mySQL database, nothing fancy on that end. Just so much that it works and is stable.
In most cases I would use the language that will allow me to do the things I want as fast as possible in terms of development time. I am impatient and want to get things done quickly. This is nice for me, because I don't spent time on it forever, and also for the customer, because development time it what has to be paid in the end.
TA: Do you have a favourite sort of application to make? Is there any sort which you haven't made yet, but would like to create? Can you explain the differences between how apps and web apps? Pros and cons?
AH: I love games, but only those that have something to do with using your brain, like puzzles or boardgames that require an AI. I only do projects that I am interested in. After all I already have a job and a family, and I have to decide what to spent the rest of my time on. And because I don't do it for the money alone, I can afford it to be picky. That said, I also like to do things that have a nice, beautiful, or meaningful content. I did a couple of cooking recipe apps, which was fun, and totally different to what I do otherwise, but the pictures were great, the images and design were perfect, I enjoyed doing something that was just beautiful ... a "no-brainer" so to speak, but very satisfying.
I dream about making a social networking app of some kind. The twitter idea is amazing. But I would like to do it in a more playful style, I am working on a "BadDriver" app that allows you to enter someones license plate and an offense like "bad parking", that allows people to get feedback about their driving, it is like "How am I driving? Call 1-800-XXX-XXXX" but for the iPhone. This actually involves a large database and I hope we get a large community.
I also wrote a couple of bots and spiders (which are programs that crawl the web for you, gathering lots data -> see googlebot), and having something like that for your personal use, might turn out to be great as well, again, no final thoughts on that one.
TA: You've also made some programs in Flash. Right now, Flash applications don't play directly on the iPhone, correct? They either have to be ported as some have been or accessed via a web browser. Do you think that full ability to program flash apps will be a game changer?
AH: You are right, flash doesn't work on the iPhone right now. And I don't know what the exact plans on that is. But if I would be Steve Jobs I wouldn't do it. You loose the ability to control the apps, and there would be a second way to get content on the iPhone besides iTunes. In my point of view, that is a loss of 30% revenue per app right there for apple. And to be frank what can flash bring right now, that you can't with the apps you have already?
I guess the future will look a lot different, once apple finally releases the pad, or how ever the new thing is called. Simply a big iPod touch in US letter format, as thin as the iPhone. It will look like these Star Trek tablets. It will have the iTunes way of selling apps, and it will revolutionize the way software is marketed like nothing else - again. Imagine the people responsible for about 200.000 apps on the iPhone suddenly having the chance making "professional" software, that would normally be sold for $150 or more. In a sense it is a Linux idea, where everybody can make his/her own software and everything is free, except now everything cost $.99 and instead of running on a weird looking Linux OS, that took you weeks to install, and doesn't support drivers... you run it on a mac where everything is compatible right away.
TA: Besides making your own apps for sale, you also work with people who want you to make apps for them. What sort of challenges does that pose? Also, you explain about the Developer's license. Do they need > their own, or can they use yours?
AH: I have three ways to get projects, through my website www.alproductions.us, by looking at sites like www.iphoneappfreelancer.com or www.getappsdone.com, and I have a joint venture with transcendencetools (where I am responsible for all the small and fast to do apps, and sometimes consultations). I don't have a lot of time to do iPhone projects, so I am always looking either for low hanging fruits, that I can develop way faster than most competitors, or things that I am really interested like the AI for "Abalone" what I am developing right now, where the project itself is going to be the most rewarding thing.
The biggest challenges I have, deal with problems coming from me having different ideas or experience than the customer. And this is less often the case when I deal with a company than a private person. If people are new to this, have an app idea they want to see on the iPhone, they tend to underestimate the secondary costs. People are easily willing to spend $1000 on a project, and most often that is a fair estimate for a simple app/game. But people forget that they have to spend $99 on the developer license, because I will only release apps under my name for customers if they are free, which is the smallest part. Also it helps a lot if the customer has a mac, and can compile the code I send, because that means the customer can have a look at the actual product, rather than seeing a video presentation. Also very often either a website/server is involved if content is supposed to be updated, or should be contemporary, or data is supposed to be collected... between $50/$100 a year, still nothing, but maybe people want a website with it -> extra cost.
And finding a graphic artist, who has the right style, is good, and will provide the stunning graphics you need... easily another $1000, sometimes more. You want music? Sure, another $250-$500. And keep in mind, sometimes you have to spend the same amount you spent in production on advertisement. For newcomers that might total to $5000 for a serious project that is aimed to generate revenue, looks like a big deal. If people already have websites, can provide the graphic, don't need music/sound, and are able to advertise for themselves this price drops dramatically, and it involves only my share. I refuse to do projects that are under budgeted, the customer will never get his/her investment back, and it will be a bad experience, and I would hate myself making a crappy, quick and dirty app just for the money.
A warning at this moment might be adequate, there are lots of freelance agents and companies (mostly from china and india, but I also met 16 year olds that think they can pull it off), and I experience very good ones. But they sometimes offer the same project for 25% of the original estimate. Don't be surprised, and don't take them, you will end up with only 25% of what you expected to get. If the offer it too low, don't take it, something is fishy!
TA: Can you descripe the typical life span of a project that you take on for someone starting with when people approach you and you agree to create their product? What are your expections from them? What expectations should they have of you? What should both the developer and client do to ensure that things that the project goes well,including finishing on time and on budget.
AH: I take my time in the beginning of a project, once I established contact, and NDAs are signed, I try to find out as much as I can about my client and his/her ideas, I make suggestions, and ask as much as I can. I really want to make sure I understand the project, the budget, and the content. I had a really bad experience once, where I was about to finish the project, when suddenly the private customer told me, that the stuff I was working on was just the "example", the content itself was like 10 times as much and in different formats and differently structured... This should never happen. The whole "getting to know each other" might take up to 8 weeks, but mostly after 2 weeks everything is clear to both ends. This whole period is of cause free.
Since I am not a graphic designer, I expect the customer to provide the art, and also the sound, but I have connections and can relay my customers to contacts I trust. Still I ask my clients to make independent contracts, that reduces my workload dramatically. Remember the customer pays my time, and I try to minimize the cost where ever I can.
It is entirely possible that I spend the next 2 month working on a project that in the end only took 20h to do. Remember I also have another job and family, and those ones are the priority. This is actually an advantage for my customer. Because coding is sometimes nothing else than thinking about the question "how to do it", writing it down will take 5 minutes. And I only charge the "5 minutes" when I actually sit there and type. So the total project time might be way longer, the effective production cost might be way less.
During this time, I try to keep a dialog between my customer, and let them participate in the project as much as I can. The earlier I ask questions, and the earlier I am informed about changes the better. The worst is to change something in the very end. And I expect my customers not to change their mind too often, and tell me right away what they want. That is why we spent enough time in the beginning.
After that I make presentations and we have final reviews. It helps if the customer can run XCode on his end and actually see the product, but a video is normally sufficient. And I never saw a project that doesn't need final fixes, and I never experienced a project that didn't have a bug or minor glitch, so updates, patches, bug fixes are free anyway.
If projects are difficult, or hard to estimate I sometimes do deals like this: I estimate it will take 60h, and 40h minimum, 80h maximum. If I see that the project will take say 100h, the customer will only pay the maximum 80h. If I see that I can't finish the project in any reasonable time -never happened- the customer doesn't pay a penny and I don't need to deliver. This I think gives the most security to the customer if there is a maximum spending cap. If I agree to revenue share, which I normally don't, but sometimes I think that the gamble might pay off very well, I normally set a minimum, that will be deducted from the share, to protect me.
I guess like in the housing market the three most important things are: trust, trust, trust. If I don't feel comfortable, or if you as a customer don't feel comfortable: Don't do it! You will always find someone who you can trust.
TA: If you had to give advice to people who are thinking of making an app, would you advise them to pick particular niche, such as games, productivity or lifestyle?
AH: A very difficult question. There will be 200.000 apps soon. If you don't care for revenue, because you want to market something, or you just like to see your app on the store, go for it whatever it is, as long as it doesn't exists. You can not do harm with that, and it is very cool to have your own app.
If you think you have a good idea, it should automatically be a niche, which is the ideal case. "Loops Of Zen" for example was the unique idea, and there is no game like it (except the rip offs...), and for "entangled" people still try to figure out how to do it, and how to generate the levels...
The funniest things is a project I did for a friend, which is a buddhist/Tibetan prayer wheel, you spin it, it turns and clicks, that is it. It is exactly what a buddhist prayer wheel in reality does. And you can submit how many full turns you had. So there is a website that counts how much Karma was produced with this app. I am not a buddhist, but that is how a Tibetan prayer wheels work. And everybody: Don't even think about making fun of it, nobody makes fun about you praying to whoever you pray to. It ends up to be one of the worst rated apps ever on the iTunes store, because two people rated it as bad as possible....mostly because they don't understand what a prayer wheel is. Still this gets sold once or twice a day. Apparently people who look for this kind of thing buy it, even though the reviews are as bad as possible, because they want exactly what it is. The perfect niche, not very big though, but obviously I give one or two people a day what they were looking for. Great.
At the same time, my latest game "hextangled" wasn't sold more than four times in total ... the store is so crowded, that you have no chance to get attention if you don't have any marketing strategy for it. I do some experiments in advertisement about it, I hope that pays out.
TA: There's been some controversy lately about what gets accepted to the AppStore, and what gets rejected. Do you have any advice for developers and clients on the types of apps to consider creating and the types that perhaps might be best left on the drawing board?
AH: I had rejections myself, but due to technical reasons. And sometimes I get things rejected that I got passed already in other apps, or that I see in other apps being totally fine... that annoys me the most, because there is this inconsistency at Apple sometimes. But that is a minor problem, and Apple is very responsive to that.
There are a lot of apps I would call infantile. I don't need a burp app for two reasons, I went to boarding school and learned to burp on command, and secondly no sane person asks me to do it, and I never feel compelled to do it. There is this idea that we should all constantly try to raise our standards and make the word a better, brighter, more educated, and safer place. Please, everybody, at least don't actively undermine that.
That said, iTunes is capitalism pure, what can be sold will be sold, and there might be apps that I would never consider or think of highly, but I am tolerant, so I am fine as long as other people like them. Most often only time will tell if an app will sell or not. I have a concept game that everybody I talked about liked a lot, but it basically flopped. So it is on iTunes but it was a waste of time and effort developing it. If I would have known in advance I would not have made it, and I guess that is true for many other apps that are out there as well.
TA: What do you think is the future of iPhone development? In terms of applications coming out, what would you like to see in the approach of developers in creating them?
AH: I like the variety, and the idea that there will be an app for everything. The distribution of software through iTunes is great, and I guess it will also have a huge impact on books in the future as well. Apple basically replaces the editor, and everybody can sell his/her content freely. It will reduce the price for software a lot and that is good for the consumer. Maybe the store will not be able to support as many developers as a conventional system, but I doubt that. The disadvantage is clear: The sheer amount of things makes it hard to choose from, and who ever solves that problem best, will be the best seller.
Again I look forward to a device that has a larger screen making reading more comfortable, but that is only a matter of month I suppose. It should have a camera too, I do a lot of iChat with my relatives. I don't need it to be a phone at the same time. And in the end I hope that Microsoft at some point will stop making Windows, and will do the step using unix under the hood, like apple did. The moment I stopped being dependent on a PC, was when I could use Word on a Mac, the rest is just a matter of time, finally I hope in the end I will write code for one system, and be able to sell it to everyone.