Entries in development (53)
I think of application design when I'm drawing screens. I feel I design an application when I'm thinking about what will be part of the Model, what will be part of the Controller and what Views will be required in order to display things to the users. I'm designing an application when I start to list the open source modules and framework that will be needed in order to save development time. I'm designing an application when I start to look for application icons. I'm building an iPhone application when I'm building the list of features that will be part of the initial release and all the subsequent releases. Yes, I feel that I'm into something when and I'm looking back into previous WWDC videos I order to remember how to write code.
Looming to kick start your iOS development project with ready made components? Maybe you could look at Cocoa Controls. You'll find quite a few iOS custom controls that you can use for your own apps.
Tip of the day: you want to build a new version of your application for submission to iTunes Connect. After archiving your application in Xcode 4 and hitting the Validate button you get the following error in Organizer: executable is missing a required architecture. What could be the cause?
How many times I've got this question: "What do you need to get started in iOS apps development?". Well, this blog post will try to give a broad answer in a "point form" style.
First, these requirement categories are:
- Personal DNA
- Personal skills
- Apple tools and services
- Software tools
- Other tips
- Eager to learn
- Willing to sacrifice
- Not afraid to fail
- Being familiar with a programming language is a big plus.
- Knowledge of computer data structures is also a big plus.
- Knowledge of web services could be a plus depending of your ideas and projects.
- Design awareness is a must. If you don't care about user interface design and beautiful software, here is a tip: go develop for Android. And I'm not joking.
- Healthy network of people (you'll need some help at some point, or beta testers and those who will help you get the word out about your fantastic application.)
- Experience with graphic design tools (like Pixelmator, Photoshop) could help you create mockups or user interface graphical elements.
- Know the competition, spend a lot of time surfing the App Store to get a feeling of the trends, your competition, etc.
- Any Intel-based Mac (beware if you buy a used one, make sure it is powered buy an Intel processor) with at least 3 gigs of ram, lot of disk space. Could be a Mac mini by the way. Very nice machine for dev.
- A big screen (Xcode love to spread itself), specially Xcode 4.
- At least one development device like an iPhone or iPod touch.
- Get into Apple's Developer Program for iOS (if you want to publish on the App Store this is mandatory, otherwise, just to play with iOS development, it isn't).
- Submit your banking information to Apple for electronic payments.
- Download Xcode and install on your machine it is free if you are a registered developer. If you want to try it out without being a registered developer, you can get it on the Mac App Store for 4.99$.
- Look for Jeff Lamarche's books with Google and buy them all.
- Look for podcasts on iTunes, quite a few are very well done and educating. If you are a registered developer, you can download past Apple's WWDC conference videos from iTunes U.
- Look for StandFord University's courseware on iTunes U. (iTunes U link)
- To Do list manager like Remember The Milk on the web (also includes iPhone app). Very good idea to have a tool like this to keep track of things to do.
- Prototyping tools like Apple's Keynote or iMockups HD for iPad, a great prototyping tool but another one is Blueprint for iPad from www.groosoft.com, THE best prototyping tool for iOS apps.
- LittleSnapper from RealMacSoftware to get snap shots of your app.
- ScreenFlow from Telestream.net to build nice video screencast of your app.
- Pixelmator from www.pixelmator.com to build graphical elements of the app user interface.
- Sketch can also be used to build UI elements if you like to work in vector-based mode.
- Look on the Mac App Store for software like iConify or iOS Icons (to build versions of required icons for all resolution), Status Barred (to remove status bar from screen shot of your app as required by Apple).
- Apple's iTunes Connect Mobile: to get access to sales report from Apple's iTunes connect. Not very well done if you ask me. You must be a member of the iOS Developer Program in order to download this app. You won't find it on the public App Store.
- Remember The Milk: manage your tasks on the go. Sync with the web service is a paid service at www.rememberthemilk.com.
- Ego: provides a quick look at statistics on twitter followers, RSS feed subscribers.
- Analytics: complete access to Google's Analytics services that you can link to an application's promotion web site.
- Analytix: kind of the same as Analytics but with a different twist, provides a yesterday / today comparison of visitors count, page views count.
- Statistics: provides access on the go to any WordPress's web site analytics.
- Stat Fever: great access to a FeedBurner's analytics.
- MailChimp: if you use this service to send mail to your users, provides analytics access on campaigns.
- TestFlight (webclip): get access from your device to a new build of beta software from other devs or your own adhoc builds. A complete review of this service: Building iPhone Apps: TestFlightApp: a complete review
- Swish: if you design yourself your apps, spend some times on Dribbble web site to have a look of graphic designers best work. You'll get inspiration there. Why not do that on the go!
- appTrends: the only mobile client to the very complete sales analytics www.appfigures.com
- PositionApp: get a feel of how your apps are doing in iTunes' ranking. Not always accurate as this service lag quite a long time behind actual ranking (AppFigures is better at this!).
Once your apps are ready for sale on the App Store, some other tools and services you'll need.
- To promote your app, you need a web presence and for that you need a domain name hosting service like www.godaddy.com
- To actually build a web presence, you need a web hosting service like www.fatcow.com.
- If you don't use a web publishing platform like WordPress, then go with basic web editing tool like Apple's iWeb or RapidWeaver.
- You may use the hosting company's email service to get email addresses for your user community to get in touch with you or simply go with gmail.com.
- File hosting for some of blog posts containing files to download: some on MobileMe's iDisk or www.dropbox.com
- Apple's Keynote for user interface prototyping and many user interface elements.
- Google Analytics for my blog statistics.
- Google Feedsburner to manage the blog's RSS feed and stats.
- To get a beautiful view of a web site analytics, try www.gosquared.com.
- Dribbble graphic designers community. Wow. This is incredible the quality of designs that you can find there.
- www.appfigures.com will take care of processing iTunes Connect sales reports and provide nice graphics on sales and comment management. See my review of this service here: Building iPhone Apps: Comparing appFigures and AppAnnie - Updated
- www.mailchimp.com is a great service to help create email campaign for marketing purposes. Very well done service.
- www.observerapp.com for a better looking view of a web site using Google Analytics.
- www.testflightapp.com to beta test your applications with a lot of people. You can read my complete review of this great service: TestFlightApp: a complete review and also Conclusions on my first open beta under TestFlightService.
- Get inspiration from Pttrns: http://pttrns.com/, a very useful site about current trend is various areas of application functionality like login screen, list views, etc. You don't want to miss this.
- Get inspiration from Mobile UI Patterns, similar to Pttrns.
- Another interesting blog post on the same matter: What Do I Need To Start Making iPhone, iPad or Mac Apps?
- Another great tool to learn merging graphic design and programming is Design then code web site create by Mike Rundle. You won't be disappointed.
As you can see, I do a lot of testing of my application in development. My goal is to create a new adhoc build (using Build & Archive) in the morning or at night so I can test the app while commuting in the metro while going to work. Many weeks passes between releases. As an indie iOS dev, I don't have all the time I'd like to spend on the computer.
Recently, I came across two very nice and useful initiatives from two other iOS developers.
The first one comes from Mike Rundle. This guy is behind: http://www.flyosity.com. He is a software developer and interface designer. His web site is so nice and is quite fun to follow on twitter. This guy decided to create a very unique web site http://designthencode.com. The idea is very simple but sooo useful: how to turn from nice photoshopped user interfaces into the real thing: a running iOS apps. The first tutorial is still to come and I'm very anxious to have a look at it.
The second initiative comes from @robotcat (http://robocatapps.com), the guys behind the very nice weather app called Outside. They put up a blog in order to expose their tidbits about iOS app development. Their latest blog posts are about the birth of a new app called Thermo (very nice by the way) and also the latest version of Outside, version 1.2. Look for more at http://robokitten.tumblr.com/
2:28 PM. Back to work. After careful examination, I will remove some NSOperation from application's delegate methods to be sure certain data structures are loaded at the right time, in sequence. Compile a new adhoc release. Installed on my dev device. Testing.
3:15 PM. Time for another brake. Some other things to do.
5:00 PM. Some other touches to user interface prototype for application X. I had to fin d the textured iPad background to use in this application.
5:19 PM. I'm pretty much done for today.
Recently, a friend of mine asked me to test one of his iOS app he was working on for a while. A very simple app that is used to fill a very specific need. He wanted my feedback on the app (stability, user interface, wording, etc.). So I installed the whole thing on my iPhone 3GS and gave it a serious look.
After a while, I noticed this app was doing weird things visually:
- animation of complete views that I was not aware we're available in UIKit;
- text fields that we're a bit strange looking;
- navigation bar at the top was moving up and down as I was scrolling the whole table view (that one was the most surprising: the navigation bar never scroll with a table's content!);
Once I was done with my tests, I decided to FaceTime this guy and give him my impressions. They we're mostly positive and I think I've helped him get a few things corrected. When I was showing the navigation bar moving with the table's content, he was not surprised at all. He said: "oh yeah, this is expected as the whole view is a UIWebView with complete HTML/CSS implementation of basic iOS interface elements". What?
This developer is actually using a framework called jQTouch. More information is available here: http://jqtouch.com/. Honestly, I felt a bit deceived. I felt that way because I thought this developer was trying to have it easy! Why not develop in full Objective-C? Why not a native application? The debate was open!
This is not the first time these questions are asked. And this won't be the last time too. After my initial reaction, I changed my stance. I tried to understand his motive for using jQTouch. I think they are reasonable. He wanted to write his first iOS app that is easy with tools that gives fast results. On top of that, the developer is already fluent with web programming languages. So, He went with what he was knowing best. How about the application quality then?
On the application quality, I can see there is a bit of a difference because I'm a developer myself. But, what about the normal user? They don't really care as soon as the app is usable and produce the desired result. I think this is fine. But, the same day, I had a chance to try this application: Ars Technica Reader for iPad (link to the article presenting the app and the behind the scene view!).
What does this story boils down to?
- A developer can use high level framework or language to write an application, a very basic one. And this is ok!
- A developer with very challenging application should avoid using these high level languages. They produce portable garbage that can easily go from iOS to Android but this only serves the developer, not the user.
- I understand why Apple was so hesitant to relax their approval rules. Now, we see in action what garbage these tools are capable of.
- The App Store is bloated with natively written applications that are very badly designed too. This is not my point. My point is having too much of an emphasis on the tools used to write the app, we loose focus on the objective: writing app that are useful, easy to use and enjoyable. Just like the iPhone.
Ultimate Password Manager 2.3, is the result of a summer long of hard work. After a buggy road when iOS4 came out for which I had to release a interim build of the application (220.127.116.11), I was hard at work on this last release to support iOS 3.1.