Posted in design, entrepreneurial, personal, tech

BeatMyRide: My First IPhone App

Friday, Oct 22, 2010 – This was an old post from last April. I now drive mobile strategy (read: I’m the only iPhone Developer ) @ Invoke Media, creators of Hootsuite, where I’ve launched apps for the Onion that got mashable & lifehacker love, as well as video contesting apps for large, US insurance agencies (I think we’re on NDA).

 

This is the first end-to-end iPhone app I authored. It allowed me to learn the Objective C & the iPhone SDK including frameworks such as the Location Services & Core Data. It also helped me to understand the basic Model View Controller concept, as well as how view controllers work in general.

The Big Picture

which path

Often times, I take different routes to and from home, work, Vicki’s work, the gym, church, & other common locations. I wanted to create an application that would allow me to:

  • Map common locations & routes
  • Calculate the average & fastest times between common locations.

This was important because many times I would want to know:

  • Which specific roads provide the fastest times between locations
  • The average times between locations so I might better schedule my transportation times.
  • It was also amusing because it would allow me to “race” against my own fastest times, of course ensuring that all traffic regulations & speed limits were adhered to.

On top of all that, I needed a good excuse to learn the iPhone SDK platform.

Future Features

I also made sure to architect the program so that in future iterations, it would be easy to add some really exciting features such as:

  • Auto-Detecting the location and mapping the exact route taken.
  • Audio or Visual cues as to how you are currently matching up with average & fastest times for that route.
  • Social racing (being able to race against not only your own individual times, but to be able to compete against other players in your area).

Background & Software Design

Object Oriented design teaches us to treat everything as objects. In this case, it was important that I decided on the following terms.

Location: A location consist of the name of that location, the address (both the longitude and latitude, as well as street address), and a collection of all the Routes the location belongs to.

Route: Routes consist of two or more locations (initially, I allowed only 2 locations) and the fastest & average times for that route.

Screenshots & Walkthrough

I architected this app more with utility in mind rather than design. Frankly, I wanted to be able to use this app with as little input from the user as possible.

The first screen gets right to the point and asks your for your present location. In this case, I have chosen Home.

IMG_5003

You can see there are two floating numbers. I have used the iPhone’s “Location Services” to store the longitue and latitude for each location. This is the first step in auto-detecting the start and stop locations as well as being able to trace & record your entire route.

If you want to create a new location, you can add it by pressing the “+” sign, and entering the name of the new location. As mentioned

IMG_5018

Once you have selected your location, the next obvious step is to select the destination. Today, I’m driving Vicki to work so I choose “Vicki’s Work.”

IMG_5005

If no route has been created between those two locations, one will be created. Otherwise, the route will be selected and displays the fastest & average times, as well as all the past times.

IMG_5006

Once you are ready to start, you can press the “Go” button on the top right & the timer begins on the Navigation Bar.

IMG_5012

Once you have arrived at your location, you simply press the “Stop” button, and your trip time will be recorded into that route. In this case, my trip magically took 8 seconds.

IMG_5013

As you can see, the trip is automatically added to “Past Trip Times” and the fastest and average times have automatically been calculated.

Conclusion

Being my first iPhone application, this was definitely a great learning process. Not only did I get used to XCode and the iPhone SDK, I also got to use the new Core Data library, got to test out Location Services to find the longitude and latitude, and got to prototype the class structures visually using XCode’s build in editor.

The best part is that I now have a way of timing my average and fastest times between my common routes and can race against myself, which was my original goal.

The next features I plan on adding are definitely going to be

  • auto-detecting of start and stop locations
  • using Location Services to map the entire route, which allows for
  • audio cues of my current pace compared to my fastest or average times

If these features work out well, I am definitely excited to add in the social gaming aspect.

Advertisement
Posted in entrepreneurial, export to .org, personal, tech

Life After Twitter: What I learned from taking a 6 month break from social media.

twitter fail cropped

Many people have been asking me where I’ve been hiding the last few months.

Unfortunately for me, in today’s high-tech connected world, one’s online presence is often as important, if not more important, than one’s physical presence.

The reason this is unfortunate is because after 6 months of hard core online connectedness I simply got burned out. I don’t think I’m cut out to be updating my status all the time, posting to other people’s walls, writing on my blog every day and checking in to every location I go to. It’s just not me.

Social Media’s Not For Everyone

That’s my advice. Try out social media (twittering, foursquaring, gowallaing, facebooking, blogging) and if it’s not for you don’t force it.

When I got into the startup tech scene here in Vancouver, it felt like all the cool people were on twitter & “connected.” I tried really hard to do the same and even tell others to but it never really felt natural to me. Talking to other people in less than 140 characters so that the whole world could see what you said just didn’t seem to help me build genuine relationships.

Don’t get me wrong, there was definitely value in it but for every great link, hot news item, or great 140 character conversation I had with someone I found I had to scroll through hundreds of irrelevant information & constantly keep checking throughout the day.

It became this self-imposed ritual where I cared more about my online presence, what my online tweets looked like, or that I checked in to the right place within the correct time intervals, then my actual genuine day-to-day life, relationships & interactions.

So What Now?

My two conclusions: Temperance & Authenticity.

Temperance basically means self-control or restraint. And since I’m quite passionate in everything I do, the next step is to learn temperance.

Authenticity. Instead of trying to make myself look as good as possible online, I’m just going to start being myself. I’m going to stop caring what other people think so much that it paralyzes me from just being me.

So I’m still going to use social media, just with authentic temperance. I like that. Authentic Temperance.

If you’re on twitter and you love it, that’s great. I’ve read many blog posts about how people use twitter effectively, how large companies are using twitter to engage & “listen” to people, and I’m sure much of that is true. Let me be clear: I am in no way putting down people who use and love social media.

Life After Twitter…

For me, I cannot tell you how freeing it is not to have to always have my iPhone in my hands so I can update my status, checkins or wall posts. It’s such a great feeling living real life, talking to real people, and not worrying so hard about making sure your “online presence” matches other people’s expectations.

I’m sure one of these days I’ll get back on twitter, foursquare, gowalla & facebook with a vengeance. Hopefully by then, I will have learned how to be genuine & authentic on it as well as this “temperance” thing.  Until then, I’m going to stick to simple blog posts, more life away from my computer & phone & with Vicki, and look forward to hearing your thoughts or comments.