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:
  • 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.

Sunday, July 5, 2009

Stanford University iPhone Course Online

Ahh, morning classes, big cups of coffee, the pursuit of knowledge, and a heavy book laden backpack; well that's how I remember university (and maybe just a little Magic the Gathering and Arcade). In case you are yearning for some educating on how to program one of those there iPhone thingamabobs then check out Standford University's CS193P iPhone Application Programming.

Saturday, July 4, 2009

Building Boost 1.39.0 for iPhoneOS 3.0

As part of my latest iPhone project I am going to sue Boost. I wanted to make sure I could do something as basic as build the Boost libraries (most are just header files you include but I wanted to make sure I could get a build working in case I needed any of the libraries that must be compiled).

So the search began, the Boost docs did not have details for darwin/iPhoneOS 3.0 so to google. I found the following links of order of helping. You may need to modify some of the actual compiler versions depending on when you read this but hopefully these links will help you raise the power of the compiler gods to allow you to build Boost for the iPhone:
Good luck!

Friday, July 3, 2009

An App For The Masses

Well, after much debate, note taking, idea jotting, use case outlines, and driving my friends and family mad, I have something that is non-game related and would be really useful. I don't want to release the idea since I take so long to get coding done but needless to say it is an any-person app.

So what am I doing to move forward? I've downloaded the latest OS updates, downloaded and played with the unit testing example (I am a strong believer in TDD, Test Driven Development), and tonight I am attempting to get Boost 1.39 compiled for iPhoneOS 3.0.

Why use Boost? It is a C++ library which one can think of as extending the C++ STL with lots of really useful data structures and algorithms. I plan to use some of Boost heavily and want to design much of the engine (for lack of a better term) for my app on something that has a better chance of being portable to over platforms. This way, if the app takes off it will be easier to extend it to over mobile platforms.