Here comes to the second app showcase. Previously, we showed you an app created by a 17 year old developer. Since we published that story, we received emails from several young developers who also wanted to share their programming experience and app development stories. The world needs more programmers. It’s truly wonderful to see more young people learn to code and create something amazing.
In this app showcase, we talked to Sam Spencer, a 16 year old iOS developer who has released an app called Runr. The app allows you not just to track your runs, jogs and walks but save calories and distance of your runs to the Health app. Runr app is beautifully designed and has been featured by Apple in Health & Fitness “Apps For Your Run”.
Read on and check out Sam’s app development story.
1. Tell us more about your background and your app. Was it your first app?
I started exploring computers early-on. In fact, my fascination with technology began when Mr. Plechaty, my fourth grade teacher, asked the class to draw what we thought technology would look like in ten years (2017). The contraption I dreamed up was a mix between the palm-pilots and cellphones I had seen adults using back then. I definitely missed the mark, but it got me thinking about technology.
From there I moved to simple VB Script popups. Sometimes my friends and I would amuse one another with funny Visual Basic Script popups. Rather than stop there, I continued making things. Cypher Bot was my first real program, a Windows app that encrypted and decrypted text. Shortly thereafter I set my sights higher: I wanted to put Cypher Bot on the App Store. iOS 4.0 had just come out and I was amazed at what one could do with technology. So began my foray into iOS development. After getting adjusted to Objective-C and Xcode (which was quite difficult after coming from Visual Basic and Visual Studio) I published Cypher Bot for iPhone and iPad in July 2012.
I am a 16 year old iOS (and OS X-ish) Developer who recently completed my second iOS App Store app, Runr. The app, Runr, is a run-tracking app available for free on the App Store. The concept here is to provide a great run tracking experience for runners, walkers, and joggers alike. Unlike other running apps, Runr is clean and easy to use. Runners can start their runs in seconds. Beautiful graphs, statistics, routes, maps, and Game Center achievements make it easy to track progress and see improvement.
2. How did you come up with the idea? How long did it take to develop the app?
A few years ago, I took up running in my free time. Naturally, I wanted an easy way to track my progress and get run updates during my run. The App Store really didn’t have anything that fit my needs. All the run tracking apps were either way to cluttered or didn’t provide the experience I was looking for.
So I began the app development process. The real process started with a big pile of blank index cards, a pencil, and a big eraser. This is the prototyping stage. I drew out as many designs as possible. Designs ranged from far-out whacky to very rudimentary. I picked the design that I thought looked best at the time. Then I began writing in Objective-C and laying out the design in Xcode.
Creating Runr required learning great deal of new information. In fact, when I started I didn’t even know the Core Location Framework existed. YouTube, StackOverflow, GitHub, the Apple Developer Documentation, and AppCoda among other blogs helped me through the process. Books on Objective-C and iOS that I had purchased earlier proved to be extremely useful during the process.
From conception to publishing, version 1.0 of the app took about nine months to develop. Version 2.0 took approximately six months to design, plan, create, and test.
3. Do you have any programming experience before developing the app? How did you learn iOS programming?
As I explained before, I had some programming experience before developing Runr. Yet, I was finding that Visual Basic encouraged bad habits and made it difficult to understand some basic concepts in Objective-C.
It definitely was not easy learning to develop for iOS. The first place one might think to go to is Apple’s documentation. Unfortunately, the documentation Apple provided (at least at the time) was oriented for experienced developers — it was riddled with, what appeared to be, jargon and confusing concepts for a novice developer. Next I turned to books that explained how iOS works and how to write in Objective-C. I didn’t go all the way through the books, instead I stopped after completing the basics and then used them as a reference for smaller projects.
YouTube, StackOverflow, GitHub, and sites like AppCoda really helped along the way. Without the good people on all of these sites, there’s no way I could have created Runr 1.0, and absolutely no way version 2.0 would have been possible.
4. Do you use Swift or Objective-C to develop your app? If you use Objective-C, do you have any plan to use Swift for your next release?
Runr is written entirely in Objective-C, as I started coding Runr in 2013 before Swift was announced. When Apple announced Swift, I was initially skeptical: it looked like a gimmick to attract people who had never written code before. To the contrary, after using it in some smaller projects I found it to be quite useful.
Unfortunately, Runr has tens of thousands of lines of code. Rewriting everything is Swift at this point is not practical. For the next few months I will be focusing on building new services and features for Runr rather than rewriting the app. Should Apple adopt Swift as the only standard language for iOS and OS X in the future (and it is possible), then I would, of course, rewrite. Indeed, there’s been some stirrup recently with the discovery of UXKit on OS X — maybe we’ll start to see entire system frameworks written in Swift. Until then, though, Swift will be reserved for new projects and apps.
5. What are you going to do to promote your app?
App promotion is tough. I’m trying to do as much as possible while spending as little as possible. The first thing that I have done to promote Runr 2.0 is by evaluating its description, keywords, screenshots, and app preview. These tools are crucial and can either make-or-break the sale. One of the major changes I’ve made with Runr 2.0 is the pricing. Version 1.0 was a Paid Pricing model. However, after a long period of low sales due to competition with Freemium Pricing, Runr will also be switching over to a Freemium model. Making Runr free to download is really a self-promoting tactic (somehow, app downloads skyrocket when the app is free).
Making a beautiful App Store page isn’t enough though. The next step is to let friends and family know about the app. As soon as it goes live, I plan on letting them know and asking them to download and leave a good review (it’s nice to have good ratings showing up on the App Store early on). Some websites recommend giving your prized promo codes to friends and family, but this is not who they should be used on. Downloading an app with a promo code prevents that person from reviewing the app. Instead, I plan on distributing promo codes to blogs and online publications. Websites like 148Apps, MacWorld, 9to5Mac, Mashable, and TNW all do app reviews. With some of those sites, it might be a long shot to get in, but its definitely worth a try.
In addition to promoting on blogs and social media, I plan to contact Apple directly. At the end of their WWDC videos, they always give out email addresses where developers can “show Apple what they’ve created”. Sending emails to some of these addresses may give the app extra attention from Apple and even a spot on the App Store home page.
6. What were the most valuable lessons you learnt from AppCoda and its books?
Runr is full of features and concepts from AppCoda. In fact the two core features in the app, route tracking (Core Location) and route saving (Core Data), are based off of information from AppCoda tutorials. Core Location was very simple after going through the AppCoda tutorial. And at first, in version 1.0, I stayed away from Core Data because of how daunting it seemed. In a subsequent update, I used information on AppCoda to integrate Core Data. And, in all honesty, replacing PLIST file saving with Core Data was probably the best backend decision I’ve made through the entire process. Core Data alone fixed numerous bugs, improved performance tenfold, and laid the groundwork for future updates.
In fact I’ll be using some of AppCoda’s more recent tutorials in some upcoming planned updates for Runr.
7. Any advice for those who just started learning iOS programming?
Don’t let yourself become overwhelmed with books and documentation and tutorials and lessons. Learn the basics: get familiar with Xcode, basic Objective-C concepts, how iOS works, and the technologies available to you. And once you’ve got that, start creating. The best way to learn is by doing. Think of a simple project you’re interested in and learn how to build it. As you build more and more projects your knowledge will expand. It’s like learning any other language: you wouldn’t sit down and memorize the dictionary, you would use the language and speak with others fluent in it. Slowly but surely you will become more familiar with it.
My next big piece of advice: Open source. Get involved in the open-source community. Create a free account on GitHub and poke around through some of the projects. Get involved with the projects, contribute valuable additions and changes. Most importantly, get in touch with other developers through these open source projects. In my experience with Runr, it was these developers who gave the best feedback (especially in beta testing), advice, and guidance during the process. When you’re knowledgable enough, make sure to return the favor.
Most of all, don’t give up. Sometimes it can be frustrating when that SIG_ABRT appears for seemingly no reason at all. But that’s part of the challenge! There’s nearly always a solution, and always someone out there willing to help.
8. What’s your next plan?
Runr 2.0 is just the start of a long list of updates I’ve got planned. Indeed, Apple Watch is a big one (http://runr-app.com/watch). I’ll also be trying new types of promotion and advertising for Runr. Plus, I’ve got a few app ideas in the works and expect to release at least one new app this year.