My First App

In my last post, I talked about writing an iOS application. Where should I start? I wanted to pick a relatively simple idea to start, but something that I could expand over time. I have a few ideas for apps that could conceivably sell for real money- this isn’t one of them. My first app is about learning, not about trying to implement the “killer idea.” So I decided to build an app called Fort Collins for Kids.

The idea behind the application is it will be a quick reference guide for parents and grandparents trying to find things to do with their kids. I’ll list attractions, such as playgrounds, parks, or museums. I’ll have different ways to search and find various information- searching by name, by location, even a guided wizard to help users pick a fun activity. I’ll be able to incorporate some of my photography, and even take Nate with me to conduct research. Future enhancements could include a web-server back-end to let users share comments and ratings. Fort Collins for Kids will be a stand-alone application that runs on both the iPad and the iPhone.

As I write the app, I’m going to blog about what I learned. I’ll put up diagrams and code snippets- maybe even make the whole project available on github. Why am I doing this? First, the act of writing about a project can help clarify and educate, not just the audience, but the author as well. Second, it helps add some motivation. If I don’t make progress, I’ll disappoint both myself and the legion of fans that read this blog.

How much progress will I make? It will be slow going, for sure. Between my day job, my other hobby (photography), and that little two-year old running around the house, I won’t have much time to work on this. But I’ve also had moderate success in carving out time for personal projects from 6-7 in the morning, so I’m hopeful I can make slow but reasonably steady progress.

The end goal will be to have Fort Collins for Kids on sale in the app store for 99 cents. I feel that giving away an App for free can devalue it. I won’t include ads because I frankly find ads in apps to be distracting and distasteful.

Will I make money? Well, I’m hoping my Mom will buy a copy. Realistically, though, it won’t make enough money to make the project financially worthwhile. After all, my market size is inherently constrained by the population of Fort Collins parents with iOS devices. That’s OK- the idea is to learn and have fun.

The First Challenge

The first challenge with any kind of project like this is determining how to get started. I’ve been thinking a lot about the subject, and finally took the step last night of brainstorming on paper (actually, I used OmniOutliner). I came up with a set of tasks for my first project iteration.

  1. Define the data model for an Attraction.
  2. Write the Attraction object, including CRUD (create, read, update, delete) functionality.
  3. Create a table view showing five Attractions.
  4. Click on an Attraction to see more details.

Iteration #1 will only run on an iPad in portrait mode. A pretty simple set of functionality, but the important thing is that this is a way to get started. Following agile principles, I won’t agonize too much over the data model, just come up with a set of small set of attributes that I can expand over the course of the project. I’ll have a chance to apply some technologies that I learned about in my iOS book, including Core Data, Table Views, and Navigation Controllers.

(As an aside, the need to write about this is what drove me to nail down a first set of steps- it’s helped me already!)

Without further ado… off we go!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.