Wednesday, September 23, 2009

iPhone Memory Management Tips

Found this great article on iPhone Memory Management. http://kosmaczewski.net/2009/01/28/10-iphone-memory-management-tips/

Worth a read and something I keep handy to refresh myself occasionally.

MT

Thursday, September 17, 2009

What happened?

Well, I fell off the face of the earth. Ok, not literally but my free time has all been sunk into my iPhone App project the past 2 months.

Am I running? Barely ever, as in never.

Am I riding? Nope.

What am I doing? Writing code, setting up a business to track expenses/earnings, setting up a web site, installing software to help me write software, reading about writing software, learning new software languages, and the list goes on.

I made the decision to put all my time into this App about 2 months ago when I figured it would be about 2 months. That time has come and gone and I have had to do a lot of things I never expected to move this project along. It has all been fun and a learning experience but it has taken a lot of energy and time.

I need to bring some balance back into my life and spend a little less time working on the App and a little more on everything else. I took a break tonight as you can probably tell and it has been good. I still read a ton but not thinking about the App has been good.

I call it the App (maybe it should be The App) since it is such a huge thing in my life right now. I miss running though and I want to get back. Running makes me push my physical limitations and writing this App is pushing my technical limitations. Some day soon though, the sneakers need some loving.

Wednesday, August 12, 2009

Getting Started With iPhone Programming

A couple friends have asked about iPhone programming since I yammer on about it all the time. They were wondering if they could get a taste for what the language (Objective-C), frameworks (iPhone SDK) and API (Cocoa Touch) would be like to use. So here is a short answer to that:

If you are a C/C++ programmer, you should have no trouble moving to Objective-C once you understand the messaging scheme they use. Print out a copy and review the definitive guide to Objective-C 2.0 (latest version). I've found that reading lots of code examples (Apple's and those supplied by others online) has helped me understand Objective-C better.

I think it would be helpful to start digging into some of the general documentation regarding the fundamental design patterns used throughout Cocoa and iPhone programming. Cocoa Touch being the OO API for the iPhone and Touch.

Wiki might be a good start for an overview (http://en.wikipedia.org/wiki/Cocoa_(API)) and then I would definitely dive into the getting started docs on http://developer.apple.com/iphone/ Starting with the Cocoa Fundamentals Guide and moving onward from there will give you a good understanding of how applications run on the iPhone. Many of the Apple guides have references to other prerequisite whitepapers, tutorials, and guides to read first or to continue learning in a particular area. These have been a ton of help to get me immersed in iPhone development.

As well, I would say take a look at the Matt Gemmell's iPhone Development Emergency Guide

Hope that helps you get up and running.

Thursday, July 23, 2009

Project Management for Small Teams

Ok, well the team here at the DroolFactory is one for now but we can dream. That said, even with a small team, with a feature rich application on a new platform in a new language and new SDK, needs to perform some project management.

Am I overkilling this obsession to write my own code in my limited spare time? Probably, but here is how I am handling it and why.

I'm a reader of Joel on Software (if you don't read it and you code or work in a software design shop then you should try it out; take a min and head on over and sign up for his RSS feed, don't worry I'll wait) and some time ago Joel annouced that his company Fog Creek Software was releasing a new product; FogBugz for software tracking.

The best part is that they also provide a version they host on their servers called FogBugz On Demand which is free for students and startups (1-2 users). I fall under the startups of 1 to...ya right just 1 user, so I decided to bring it up and try it out to track the work on my current project.

I am really impressed with FogBugz. It is serving my purposes and allowing me to perform estimates without a lot of Excel wizardry which is giving me an idea of what features are going to cost. For a Dad of two, working a day job, limited time comes in about 1-3 hours per night of coding which is way too much and I need to cut back, but don't we all?

Wednesday, July 22, 2009

Deciding on an iPhone App's Layout Using Paper Prototyping

Coding has been moving along on my current iPhone app. I've got some of the basics working, have a list of TODOs (ie. bugs or features) to move the app forward with the back-end components but I am about to turn a corner. I need to start laying out the UI.

I am designing an app that uses Twitter heavily. I don't want to write yet another Twitter application for the iPhone so there are features I do not need. That said, it will have to be snappy (I've read about issues, and have seen them, regarding scroll speed for twitter updates using tableviews) and have some of the nice features of full Twitter clients to make it attractive to end users.

So I am now presented with how to lay out the app to make it intuitive to use in a limited time. I want the user to be able to quickly send a tweet without have to do a lot of typing. That means I can preload options that the user can choose from. To do that I can use a multitude of options but I am leaning towards UIPickers and Segments but I could do it with TableViews as well. How to choose without jumping in and creating something that users hate or less than optimal?

I've already sketched some ideas so I was heading in this route when I came across Paper Prototyping as a means of UI design. The first article is a good overview of how to use paper prototyping at A List Apart: Articles: Paper Prototyping. The second resource I found which had lots of great ideas on how to use paper prototyping as on Wikipedia:Paper_prototyping.

I enjoyed the A List Apart article for it's chatty style which had some good examples of using this technique. I found the Wikipedia entry had some great ideas on how to handle scrolling items (something I need to tackle) and how to present the paper prototype when handling various UI actions (clicking a link or a drop down box).

Paper prototyping provides the ability to get early feedback from users before code is written about what functionality makes sense (rapid prototyping), usability testing (is the UI usable and easy to navigate), and the apps Information Architecture (can users understand where and how to find info they need). These were some timely articles to come across and I will be working this into my schedule before I start to make decisions about my UI.

Tuesday, July 21, 2009

Useful Resources for iPhone Dev

While working on my current app I have had to do a lot of research to get up to speed with Objective-C, Cocoa Touch, and many of the Xcode tools. Here are some of the resources I use when I am trying to find an answer:
  • Research Assistant within Xcode: provides context sensitive help for the iPhone SDK. Move your mouse over something from the framework (ie. UITextField) and see the accessors, mutators, protocols, etc. associated with that datatype.
  • Stack Overflow: a question and answer site for programmers by programmers. If you don't know of it and you program you need to know of it. Check out this Q&A for a list of top blogs/sites about iPhone Development: http://stackoverflow.com/questions/232570/what-are-the-best-cocoa-touch-iphone-programming-blogs
  • Apple Developer Connection iPhone: of course going to the source is one of the top choices. Check it often for updated docs.
  • Apple Developer Forums (Beta): another great resource in line with Stack Overflow, ask your question and get an answer. But remember, try to figure it out yourself first, if you don't know this you will find out the hard way.
  • Standford University's iPhone Application Programming: mentioned in previous post, this is another great resource for sample code and explainations Standford University's CS193P iPhone Application Programming.
  • Apps Amuck Blog: Not bad if you are just starting out and want to learn how someone else wrote some apps which are in the AppStore. Check their 31 Days of iPhone SDK Apps for lots of sample code.
Good Luck.

Do you have a site that you find useful in day to day iPhone programming? A great repository of sample code? A write-up on how someone else wrote their program and got it launched? If so drop a comment, I'd love to hear about others.