Skip to content

My Quest To Build An iPhone App (Or, How To Get Out Of A Required Class)

The red and white-dominated screen stared right back at me, daring me to second-guess its sobering proclamation. 2,073,600 pixels all banded together to thrust a singular message down my optic nerves and right into my occipital lobe:

“A night class. A. Night. Class.”

That was my option? My only option? After almost four years of careful planning, multiple trips to the advisor’s office, meticulous scrutinization of the course catalog and major requirements, and no small amount of Excel gymnastics – this is what it had come to?

It seemed so. To complete my MIS major, the project I had dedicated almost 1/5th of my life to, I would have to take a night class. No other option presented itself on the course scheduler.

In a dance of alignment that merited astrological likening, the school, professors, schedules, FORTRAN-based computer systems, and – not least – the very quarks in my little corner of the universe had all colluded to force me into this decidedly disagreeable class arrangement.

This could not be allowed. Something had to be done. And so a plan was hatched.

“Dr. Tanaka? I’m Thomas Frank; I’ve been told you’re the man to see about independent study options…” 

An Idea is Born

It has long been known that not every class in a particular curriculum will offer material of any significant value to every student who passes through it.

Such was the case with the night class I had found myself facing; my goals and aspirations did not merit three hours a week of Software Development in Contemporary Languages.

What I did need, however, was an iPhone app. Up until that point, no attempt had been made to render my blog suitable for reading on mobile devices.

While a user could double-tap the content to fit it to their device’s window, there was a decided lack of true mobile optimization. Therefore, I began creating a plan for a College Info Geek iPhone app.

When I was faced with the singular option of enrolling in the aforementioned night class, I got an idea; could I possibly leverage my iPhone app plan into an independent study course that would replace this night class?

A little asking around was done. A pink sheet of paper gained a good number of indentations and markings. Some hands were shook, some pleasantries were exchanged, some business discussed.

Just like that, the idea became a reality. Now I just had to build it.

Floundering First Attempts

What does any resourceful person do when they need to learn something? Well, assuming the person in question lived in the pre-internet era, they would simply transport themselves to the nearest establishment of dead-tree-based learning and purchase a book on the subject.

One would assume that method obsolete, but as I still love the smell of a new book and feel of the pages in my hands, I hopped over to the nearest B&N and bought an iPhone development book.

I then proceeded to try reading through it for the next few weeks, and… almost no progress was made.

Other priorities filled my time. I was consumed with learning Japanese (こにちわ!), I was incredibly busy writing articles for the blog, and I had a myriad other things on my plate that simply took precedence over the seemingly impossible task of building an entire iPhone app. I needed something radical to happen.

That’s when my good friend @afrais enthusiastically directed me to this website:

fuweekend

“This sounds like Startup Weekend… but for finishing things!” I said out loud to no one in particular.

This was exactly what I needed – a dedicated weekend, surrounded by like-minded peers, to make progress on my project. My eyes twinkled in exactly the way slate doesn’t as I fired up Kayak and plunked down $600 for a plane ticket to Austin. 

Down to Silicon Hill

Austin is unlike any other city in Texas; in fact, were it not for the occasional decorative homage to the state’s cowboy roots, you would be forgiven for thinking you were strolling down the streets of a town in Silicon Valley.

Waitresses say things like, “Rick Perry would never allowed to eat here.” Young men wear Chucks instead of cowboy boots. Coffee shops are everywhere, and they’re all filled with Mac-loving entrepreneurs and creatives.

I touched down at AUS on the brisk morning of February 20th, marched appreciatively past the ever-present live music show in the terminal, and was subsequently picked up by my friend Alex – the aforementioned owner of the @afrais Twitter handle.

The fact that he had offered me his couch for the duration of my stay offset the ridiculous cost of the airline ticket, so I was very grateful.

Alex is – by all accounts – a success story. At only 19 years of age, he runs a successful WordPress theme business that supports him completely. At 17, he sold his site Blogussion for $20,000.

Shortly after the sale (and his graduation from high school), he moved from “Middle of Nowhere”, New Jersey to Austin in order to be part of a more tech-focused climate.

During the two days before the conference, Alex and I tried out local restaurants and food trucks, explored the town, and tried to get work done in the café area of Whole Foods #1 (which has its own parking garage underneath the building). It was a much-needed break from the wintry monotony of Iowa, and it made up for the fact that I was unable to attend SXSW due to a class conflict.

However, the real star of the show was the conference…

Meeting Andy

Calling FinishUp Weekend a conference might give an uninitiated listener the wrong impression. That’s… not really what it is.

When Alex and I showed up at Chicon Collective, the site of the weekend’s proceedings, we found ourselves in front of an unassuming, medium-sized brick warehouse in the middle of a residential neighborhood.

Upon entering, we met up with several other budding creatives – writers, photographers, and entrepreneurs. All were cordial and friendly, and all were diligently working away at their own projects.

A conference is usually defined by a few key features, not least of which is the itinerary. FU Weekend had none to speak of. Other than a 2nd-day motivational talk and a planned after-party, the entirety of the weekend was dedicated to a singular pursuit: work.

We met up with Andy Keil, the conference’s founder and organizer. We chatted for a while; it turns out Andy actually attended Iowa State for a single year before transferring to a school in Chicago. This was interesting to me; it marked Austin as the second city in which I had randomly met someone with an Iowa connection (the first being San Francisco).

After talking for a while, Andy told us we were free to find a spot to work. This wasn’t a difficult task at Chicon; the warehouse was full-to-bursting with tables, chairs, couches, hidden nooks, outlets, and all the other amenities a solo creative could want.

chicon

It also sported a full-fledged photo studio, plenty of booze (for “taking breaks”), and a wonderful sound system through which I was introduced to some great new music (Kendrick Lamars’ good kid, m.A.A.d. city was the standout).

Even with all these amenities at my disposal, however, the real work didn’t begin until I met Mr. Long.

An Invitation to the Treehouse

“You’re here to build an iPhone app? Dude, you need to talk to Josh.” Andy enthusiastically told me.

As the so-called Cocktail Party Effect dictates, Josh Long shortly appeared in front of us after hearing his name mentioned. Josh, it turned out, worked for Treehouse, an online video education site in the vein of Lynda.com.

To my surprise, he informed me that Treehouse had just released a video course on building a blog reader iPhone app – basically the exact thing I had endevoured to build.

Now that I had the resource I needed, I got to work. And we kept working all through the night (I’m the left figure on the couch)…

working

It’s All Just One Big Turing Machine

It’s now the part in the narrative where I shall attempt to explain the development process that lead to my current achievements in app building. Don’t panic; we won’t be dealing with any strips of tape.

The first thing any aspiring app builder needs to do is download a program called XCode. A prudent developer who wants their app on the marketplace also needs to pay $99 for an Apple Developer License, which I did early on.

Once you have these two things, you’re granted access to development resources and a dashboard where you can create provisioning profiles that let you test your app on your Apple devices.

xcode

Those tasks being done, I hopped over to the Treehouse website. Since I had absolutely no experience with Objective-C – the language iOS apps are written in – I decided to go through the Build a Simple iPhone App course before tackling the blog reader course.

Going through this course, I worked my way through six distinct stages and learned the basic steps of building an app.

While learning Objective-C’s syntax and the correct XCode settings, I slowly created an app called Crystal Ball, which tells fortunes when a user taps the screen or shakes the phone.

crystalball

Leveling Up, Hitting Snags

After I completed the Crystal Ball app, I continued on to the Build a Blog Reader iPhone App course. Featuring the same teacher, this course taught me how to create a list of items in an iPhone app, as well as bringing in a list of blog post titles from a JSON feed.

This is where I stared hitting snags, not least of which was the fact that the Blog Reader course was not, and still is not, done. Treehouse simply hasn’t finished creating the content for the course, so I wasn’t able to continue to the end of the project.

This is the point I was at when FinishUp weekend, well… finished up. Still, I got a lot of work done, and I was very proud. Alex did as well; he built an entirely new blog that would serve as a method of updating the world during his upcoming bicycle trip from Canada to New Mexico.

Afterwards, we attended the after-party in high spirits (although we refrained from consuming the spirits themselves; at 19, Alex is simply too young, and as in New York last year, I decided to stay sober with him). A great weekend over, we headed home and I packed up for the next day’s flight home.

Only, that flight didn’t happen. High winds in Austin kept my plane grounded until the next day.

No worries, I thought; Alex and I just turned the day into another work day. On the next day, he dropped me off at the airport and I boarded my flight, ready to return home.

The first leg of the flight – Austin to Dallas – went smoothly. It probably took less than an hour. I disembarked and proceeded to wile away the hours of my layover by pacing the terminal and listening to an audiobook.

The Dallas-Des Moines flight proceeded a little less smoothly – ok, a lot less smoothly – while were flying over Kansas City, the pilot switched on the intercom and informed everyone that Des Moines was being battered by a blizzard of horrific proportions.

We were heading back to Dallas.

There would be no other flight for me that night; I was put on standby for the last flight to Des Moines that day, but so was everyone else. They filled the plane first.

And so a full night of playing Pokemon in the Dallas airport ensued.

At 4:30 a.m., I decided to lie on the floor and tried to sleep; I probably got a couple hours’ rest before the morning crowd’s bustling noises woke me again.

Finally, two days after I should have been home, I was on my way. Arriving at the Des Moines airport around noon and discovering all my potential rides were sitting in classes, I paid a cabbie $90 to transport my exhausted jumble of carbon and water back to Ames.

Jason! I Mean… JSON!

Now at home, I resumed my attempts to finish my blog reader app.

The new problem I had encountered was a tricky one; it seemed that the Treehouse blog had a JSON feed set up that enabled the blog reader app to pull in their blog posts. When I replaced the call to their blog in the code with a call to my own, XCode happily presented me with a blank screen.

I soon found out that WordPress doesn’t come equipped with its own JSON feed; you have to install a plugin to get the functionality. I studied the source code of the Treehouse blog, found the correct plugin, and installed it on my blog.

Still… no dice.

It turned out that in addition to installing the JSON feed plugin, the Treehouse team had added a custom function to its code that enabled the functionality that the blog reader app took advantage of. They failed to mention this in the course, though this is probably because the course is yet to be completed.

Undaunted, I contacted the course’s instructor on Twitter. After a bit of flattery, I asked him if he would be so kind as to post the code for that function I so needed:

twitter

As you can see, Amit is a pretty cool dude. I finally had the code I needed.

After a few more tweaks to the unfinished blog reader app code, I finally found myself staring at something that could be called a result:

blogreader

However, this is where the progress on this particular app stopped. Since the blog reader course isn’t complete, and since my knowledge of XCode is still very limited, I was unable to progress any further.

Instead of giving up, I took a new angle.

Another person I met at FU Weekend mentioned a program called Appcelerator, which takes normal HTML, CSS, and Javascript, and translates it into useable Objective-C – automagically!

I decided to give it a try. I downloaded Titanium (a hacked-up variant of Aptana), which is the IDE used to develop for Appcelerator.

After a bit of effort, I was able to create an app prototype that went a bit further than the other project. It still wasn’t exactly what I wanted, but it at least would open a WebView for each blog article:

appcelerator2

At this point, I’m stuck here as well. I haven’t quite figured out the method to bring in just the RSS feed rather than opening a WebView; however, I know it’s possible.

In the mean time, I’ve taken yet another angle.

I’ve started teaching myself the principles of responsive web design, so that eventually I’ll be able to rebuild the College Info Geek theme in a way that scales down on mobile devices. This way, even if I have to use a WebView, the page will be mobile friendly.

Recently, I learned how to use CSS3 media queries to dynamically change HTML elements when the browser is resized. I rebuilt my personal website using these media queries; as a result, it now looks great at any resolution:

personalsite

Here is where the story ends, for now. I’ve learned a lot, I’ve built a lot, but I have a long way to go. With that $99 developer license motivating me, I’ll continue to build.

Oh, and about the independent study – even though I didn’t completely finish my app, I learned a lot- and passed. In fact, this blog post was my final paper for the project. Moral of the story? If you don’t want to do a required class, talk to a professor about doing a cool independent project instead!