Update: Here's a list of the following relevant blog posts
I have a number of technologies that I am dinking around with at the moment. I also need to prepare some demo code for some upcoming talks at devLink. I would like to try building all of this together. I would also like to do it completely in the open, so that you can watch my progress. This might be a good way to sneak in some posts that I have been meaning to create for some time like coding style and memory management considerations with properties.
I have a general idea of what I want to build. I have a few drawings. I have no idea how this is going to work out. Perhaps I will fly right through the project, learn some great things, give a great talk at devLink, and the end result will prove this initial post to be a prophesy of success. Perhaps I will get a few posts into it and the entire thing will crash and burn. I’ll still give at least a good talk at devLink. Perhaps this experiment will land somewhere in the middle.
Let’s start with a description of the problem that I would like to solve and how that is going to drive my first few decisions. The problem I would like to solve is to build an educationally productive demo app that makes cohesive use of several key technologies. The technologies I would like to incorporate are as follows.
For my own learning:
- In-App Purchase (IAP)
- In App Purchase Programming Guide
- All three (non-deprecated kinds): Consumable, Non-Consumable, and Auto-Renewing Subscriptions.
For my devLink talks:
- All the most used view controllers and their accompanying views and delegates etc.
- Something that makes use of NSURLConnection and his friends.
- Core Data
- Animation using the iOS4 UIView animateWithDuration:animation: and his friends.
It is important to keep in mind that my primary goal is to build an app that is an educational aide; both to me and to my “students” at devLink. Therefore, I am very comfortable with a contrived business problem. In fact, I am really fine with that. There are always limitations on using “real world” code from a real client. Instead, since there is no actual business problem, I am free to invent some nonsense and build for it. However, I want to build something that is a bit more polished than a typical demo app. It would be great if, at the end of this, I were able to say the app is more-or-less production ready except for the one caveat that the business problem that is solved is complete bullocks and no one would ever, ever, ever buy this ridiculous app.
So, here goes. My project is called Candy Store. The basic idea is an app where a user can buy, “eat” and trade virtual candy. Here is a first drawing of the basic idea of the app.
As you can see, there are maybe ten or so views. The primary view controller will be a UITabBarController. It will host several customized UIViewControllers, possibly with some UIWebViews, a few UITableViewControllers, and of course some UINavigationControllers.
The local data will be stored in CoreData. The app will call out to my web services and use StoreKit for the IAP stuff. The web services will be written in node.js with a couchdb backend.
So, where do you keep up with my progress? Well, firstly here on this blog. I will amend this post to include links to additional relevant posts. I will be using github for source control. You can find the app and server repositories here:
At the time of this writing (July 22, 2011) there is little more in each repository than the initial project setup.
More coming soon.