Monthly Archives: January 2012

A Little Overwhelmed with Objective-C

Since I’m going to be making an app, I figured I should do a little refresher on the tools and language of Xcode and Objective-C.

A few years ago, I watched the Stanford iPhone App Development class free on iTunes U. It was a different language so it was kind of hard to grasp some concepts. Also, I didn’t really get to practice it because I didn’t have a Mac at the time.

But this time around, I have a Macbook Pro and Xcode installed, and I’m watching the newest version of the iOS app development course ( I figure I would at least not be surprised by the different syntax of the language.

But in the second class, where the instructor went through a demo of “the first app,” I couldn’t completely follow what’s going on, let alone imagine what I would do if I were to do it myself. Luckily, there’s a step-by-step screenshot-by-screenshot walkthrough the class has prepared, so I get to at least have an assisted start.

What I’m trying to say is that I might have bit off a little more than I can chew with this app. But it’s still early, so I’m going to stay on course to do this Muni app. And if it gets too much, I have some back up ideas.


Deciding on the App to Make

It’s time to figure out which app from my list of ideas I should make. As you can see below, I’ve weighed the pros and cons, and briefly looked at the potential risks and rewards. I have decided to aim for the stars and am going with creating the Muni app with transfer suggestions.

Educational App for Babies/Toddlers (My Nephew)

  • Pro: Helps kids learn stuff
  • Con: Mainly for kids. Kids may get bored
  • Usefulness: M – Mainly for kids
  • Demographic: Children/Parents
  • Difficulties/Restrictions: Kids may get bored. Not familiar with how kids play and what makes it fun

iOS Wallpaper Prep

  • Applies custom text on an image to use for iOS wallpaper. Text would have contact info in case device is lost.
  • Pro: No need to use computer to edit image anymore. Probably easy to make
  • Con: Won’t be used often
  • Usefulness: L – Only used occasionally
  • Demographic: Practically anyone
  • Difficulties/Restrictions: practically none beyond my level.

Muni Real-time App with Transfer Suggestions

  • Pro: Really useful.
  • Con: Probably hardest to make
  • Usefulness: H – Used almost everyday
  • Demographic: SF Public Transit users
  • Difficulties/Restrictions:
    • Need to figure out how to get bus traffic data
    • Need to figure out algorithm for calculating connections
    • Need to figur out how to visualize data

One Per Day Blog

  • Creates an app version of my blog that easily records one-word summary of the day with a one-sentence description. It should also display past entries in an effective way.
  • Pro: Easier to use than now (I use the WordPress app, without a more efficient way to look at past posts)
  • Con: No an app for everyone
  • Usefulness: H for me, L for everyone else
  • Demographic: Probably just me. Could be expanded to select bloggers
  • Difficulties/Restrictions: Need to figure out how to connect with WordPress or own server

Working Out Data Entry App

  • Creates an app that records my workout stats in detail, along with other features that apply to me, including goal setting, workout suggestions, and an effective way to display my history
  • Pro: Easier to use than now (I use a WordPress app to record my goals, and another app to record my weight, but I don’t have a way to record the details to record my workout.
  • Con: May not include every single exercise/situations of a workout.
  • Demographic: Athletic people
  • Difficulties/Restrictions: Need to know how to store data on device and in cloud.


The App Project Begins

For a few years now, I had been wanting to create iPhone apps. That’s part of the reason why I got my first Mac two and a half years ago. But with me starting a new job at Zynga a few months later, I had not had time to do any real personal projects.

Then recently, I realized that of course I cannot create an app from scratch in a timely manner (a month or two) when I have a full-time job. So, I decided to give myself a full year to work on it.

I’ve made a rough outline for the next 12 months to get myself organized, and I’m documenting my progress here to make sure I do what I promised. (Encouragement along the way is appreciated.)

I’ve given myself a pretty easy start this month, where I just have to figure out what app I want to make. And since I’ve never seriously coded in Objective-C before, I’m giving myself a lot more time (about six months) to code and about a month to do the visual designs.

Here’s the “12-Month Plan” as of today:


  • Outline basic timeline (which I just completed. Huzzah!)
  • Finalize Project idea
    • Weigh pros and cons for each idea
    • Consider usefulness of app and potential demographic
    • Consider difficulty to create app within time frame


  • Define Goals of App
    • Address Problems
    • Suggest Solutions
  • Look into offerings and limitations of iOS


  • Define Featureset
  • Begin Sketches
    • Flows
    • Wireframes
    • UX/Interactions
  • Refine Sketches to usable assets
  • Update flows and mocks with hi-fi assets
  • Outline coding timeline
    • Split up work into subtasks


  • Begin coding
  • Start with functional elements before incorporating designs
  • Set up stats tracking, feedback, and crash reporting functionalities
  • Use placeholders to create overall flow


  • Progress Report
    • Address obstacles
    • Determine if features need to be expanded or scaled back
  • Continue coding
  • Update schedule outline


  • Continue coding
  • Start testing on device
  • Replace/update placeholder elements with hi-fi assets


  • Progress Report
    • Determine if features need to be introduced, expanded, or scaled back
  • Update mocks based on any changes to flow and features
  • Overall app flow should be almost complete.


  • Begin user testing
    • Collect feedback and stats
    • Reevaluate app quality
  • Update flows and designs to address valid feedback
  • Update schedule outline


  • Continue user testing and collecting feedback
  • Fine tune design and code


  • Final user test
  • Continue fine tuning design and code


  • Begin app packaging (marketing)
  • Begin App Store approval process
  • Continue fine tuning design and code


  • Launch app
  • Post-release bug fixes