Tag Archives: Apple

VicinityBuzz: Writing A Mobile App

This post is intended to go through the process of writing and publishing an app. It will be a high-level introduction. The idea is that future posts that will dig into specific topics in depth. This post will be updated to link to those future posts as an index of mobile development topics. The app I’m describing is VicinityBuzz and it’s available here.

Product Vision

While I had been thinking about writing a mobile application for a while, I needed an idea to stick with to completion. The app stores are relatively young, but they are fairly saturated, and bringing something new to the table was a challenge. Recently I read Eric Ries’ The Lean Startup and I do like the idea of MVP(Minimum Viable Product), so I didn’t feel the need to have a telephone book of requirements. I was just looking to have an original idea for the app stores.

In the case of VicinityBuzz, I have always felt that there are not enough good ways to search social media, particularly by location. There are social media sites like FourSquare solely dedicated to location, but I’m referring to something else. Using networks where content is the reason (not location) but by location. For instance, at a conference, users often hashtag their tweets with the name of the conference. But not always. And the hashtag will draw attention from people not at the conference. That’s fine, and there can be useful conversation by just using the hashtag, but what if I want to see posts of all users that are actually at the location.

app screenshot

This is particularly true of news events. On the day of the shootings at Chardon High School, I used the application to see what students and families in the area were posting about. They were each telling their own version of the story. It was heartbreaking and much more informative and up to date than the news being released to the public. Hashtags were useless in this case, for two reasons. First, the students weren’t hashtagging their posts, they didn’t need to. They were posting to their real-life friends and thus already connected on twitter. Second, the tag was full of a lot of the reaction from the public around the globe. That was interesting too, but it wasn’t was I looking for. I wanted facts and eye-witness accounts. It was like CNN’s iReport, but on steroids.

Platform Selection

Native or not? As a web developer, I chose PhoneGap. It’s a mobile platform framework that uses html and JavaScript, which are skills I already have. And the application didn’t have very many device needs that would require native access. GPS is the only device call I make, and that is easily accessible from the PhoneGap JavaScript API. I knew it would be faster than for me to learn the ins and outs of the Cocoa framework and Objective-C, although I am in the process of doing that now for future apps. I have written some small applications in the native iOS sdk, and even paired with some developers to help bootstrap their iOS work, but I just didn’t feel comfortable writing an app consumable by the general public yet. Along with PhoneGap, I’m using jQuery mobile.

Essentially PhoneGap provides project templates for your platform (Android, iOS, WP7, and more) that create a shell of an application that hosts a browser control. All of your files go in a directory (like resources) and get loaded up by the browser control.

app screenshot featuring controls

Using PhoneGap gives me a version that is easily ported to Android and WinPhone 7. Although those markets lag Apple’s AppStore in terms of developer revenue, I want to cast the widest net possible with this application for obvious financial reasons, and also to learn. The more feedback I can get on the application, the better I can make it.

At some point I may go ahead and do a native rewrite. But for now, I’m very happy with what is possible in PhoneGap and jQuery mobile.


I started development with jQuery UI in a browser. Using the built in JavaScript debugger in Chrome was easy. Note you could just as easily use Firebug in Firefox, or the IE Developer tools. Once I was satisfied with functionality, I swapped jQuery mobile in place of jQuery UI and moved the app into the PhoneGap container. More on that in the next section.

One note: If I had to do this over again, I would have simply started with jQuery mobile. It’s not that hard to get started with as the docs are great, and it’s best to just start down that path.

App Store Submission

Thus far, I can only speak to the Apple Store submission process. After going through the steps provisioning portal, it was fairly easy to test the app on a device. In order to submit to Apple, you then create a profile for the application (screenshots, contracts, payment details, etc) and submit a signed binary to Apple for review. The process of signing a binary for release can be a little tricky, but the walk-through on Apple’s developer portal helps a lot.

One thing to note: Apple requires you have a support page. I stole an idea from the Trello folks, and used a public trello board for this purpose. It took less than 5 minutes to setup.


I created a basic web page with a description of the application. Apple has a page for making the link to their store. If you are interested in opening the store automatically, either see the options in this stackoverflow post, or add the query paramter “ls=1” to the url you get from the link maker.

What’s Next?

Apple just announced “the new iPad” so I have to do some updating to support that. I haven’t read the new docs, but I assume this means a high-res iPad splash screen and icon. All of my other assets are web assets and scale accordingly.

My next steps are to add a simpler user workflow, a refresh button to update your current search, and add some social networks like Facebook and Instagram.

After that, I’m going to start porting to Android and WinPhone 7. Since the application is already written, it should be as simple as getting a PhoneGap project running for each environment. I have also considered the Mac App Store and the upcoming Win 8 Marketplace for desktop application versions.

Finally, I’ll blog more in depth about some of the topics covered, and provide links to those posts on this page. Mobile development is rewarding, but can be challenging for those coming from a web or desktop background. I’d like to pass on some of the things I learned so that others working in mobile can save some time.

Feel free to provide feedback and questions if you have something in particular you’d like me to cover. And checkout the application!

Getting Started With iOS Development

I’ve been playing with development in several of the mobile platforms over the last year, and for iOS in particular. Many developers are intimidated because of the differences between objective-c and other languages and the differences between cocoa touch and other frameworks. How to get started is one of the most common questions around.

First you’ll need an apple computer. There are some ways around this, but they are on the gray-side of the law and certainly outside of the OS X terms of use.

Next, you’ll need Xcode. Download it for free at https://developer.apple.com/xcode/. Xcode is the development environment for both OS X and iOS based applications. You can develop for free, and even test iOS apps in a simulator. If you join the iOS developer program, for $99 / year you can deploy to devices (up to 100) for testing purposes. You can sign up for the program at the iOS portal, which also hosts all kinds of tutorials and guides available to members and non-members.

Apple just recently posted this a getting started guide that will walk you through the basics. They have many other great docs available on the iOS developer site, including this objective-c primer and a longer version here.

I recommend The Big Nerd Ranch Guide for iOS. Among the iOS developers I know, it’s considered the best book to start with.

And for troubleshooting, no post about iOS would be complete without mentioning stackoverflow. It is the best site for any programming question, not just iOS / objective-c questions.

If you take the time to use the resources available, and work with (not against) the platform and supporting guidance, I think you’ll find iOS to be a friendlier platform than it’s reputation would suggest.

Flex is a Relic and Silverlight is a Zombie

…or some other catchy metaphor that will grab your attention. These technologies were hot over the last 5 years. Flex gained a particular amount of popularity in the Java community where UI technologies have a bit of a spotty record (that’s like saying my Bengals have a bit of a spotty record over a lifetime). Silverlight gained a lot of traction among Microsoft developers who actually cared about design and UX. Many alpha-geeks of the Microsoft space were running around giving conference talks about the MVVM pattern, and sharing code on codeplex. So what happened?

Both of these technologies are going to fade on the public web. Tablets and mobile devices are too big a share to ignore. Html5, phones and tablets did them in. The heavy hand of Steve Jobs probably gets credit for the coup de grĂ¢ce. The browser vendors and phone OS creators have really put their weight behind Javascript and Html5. If you have have that skill-set right now you can create:

  • Web Content
  • Mobile Web Content
  • Mobile Apps via Appcelerator
  • Mobile Apps via PhoneGap
  • Windows 8 Metro Apps

That’s a pretty wide reach for a markup / scripting language set.

So what do you do if that’s your trade? You work as an AIR/Flex developer or Silverlight developer, what do you do? There are good options for each camp, and some universal options.

Flex Developers

I think this is the slightly less promising path in the long term (despite it hitting a much higher peak than Silverlight). That said, Flash and Air will live on for a while, and you have some time to make a transition. Additionally, the ability to use the Adobe tools to make mobile applications provides a bridge to the hot mobile market. And you can make long term plans to transition to another cross-platform tool (PhoneGap, Appcelerator, etc), or go native. If you’re in the Adobe camp, new tools like Edge are likely to ease the transition to the standards-based technologies of the web.

Silverlight Developers

Similarly, Silverlight won’t be gone tomorrow. Intranet applications that need rich functionality (and simple deployment) are still a nice fit for Silverlight Desktop applications. And the adjustment to WindowsPhone 7’s flavor of Silverlight is straightforward, though I would be cautious and investigate the financial realities of that market. Finally, while Windows 8 Metro Apps don’t specifically use Silverlight, they can use C# with XAML and a subset of the .Net libraries that emphasize a security sandbox and async data connections. Sound familiar? That’s because they re-animated the corpse of Silverlight and made it an option for writing Metro apps. Long term, you should probably learn to use the Html5 / JavaScript hooks for Metro due to the ubiquitous nature of those skills. But isn’t it nice that you can learn the new API (WinRT) while keeping C# and XAML, and then make the languages switch at your leisure.

For Everyone

Both camps should embrace these newer web technologies and the UI skills they picked up during their time with the respective technologies. Good user experience and design are rare skills in developers, and retraining the languages and tools should be the easy part. Keep your black turtlenecks and invest in the next tools rich applications. You already have a leg up.

My 45 Days With Win Phone 7, and the Move Back to iPhone

A while back, I bought a Windows Phone 7, specifically an HTC 7 Surround. I bought it used via ebay (for under $150), so as to not have it count as my contract subsidized phone. It was not an unlocked phone, and I was able to switch my SIM card from my main phone (an iPhone 4) to the WP7 without problems.

I bought the phone in order to have a chance to do some Windows Phone 7 development. As a developer with Silverlight experience, it’s a pretty easy transition to make. Sure, the dev toolset has a simulator, but I wanted to try out some apps and have my hands on the real thing. Plus, it serves as a nice backup phone, and it makes a nice portable gaming distraction (with achievements). Even without swapping the SIM card, you can use email, online apps, as long as wifi is available.

Soon after the purchase, my wife’s iPhone 3gs broke. At this point, we knew a new Apple phone was coming soon, so I gave my new iPhone 4 to my wife, and used the WP7, waiting for the new phone. She knows I do a lot more “technical stuff” with a phone, and was fine with taking the 4 and letting me getting the new revision when it released (I used her upgrade for the 4s). Yes, for a tech guy, that’s a great way for a wife to show love. All I had to do was holdout for about 45 days with a WP7.

I kind of looked forward to it, thinking it would be a chance to get a feel for just how good the platform was. For the record, this was the version of the OS just before Mango. Mango released the week I got my iPhone 4s.

So what did I think?

What’s Good?

It was a very usable phone. Contact management is nice on Windows Phone. All LinkedIn, Facebook, and regular contacts are merged (including Twitter in Mango). From that persons page, you can contact them via any of those methods. And rather than a favorites person list, you can pin them to your homepage, allowing very quick access to your favorite contacts.

The basics are covered in terms of apps. Social sites, games, utilities. And they are cheap and often free. The store is closer to Apple’s than the wild west that is Android, so that’s good.

The phone itself had pretty good battery life, nice sound, and I liked the kickstand. That line has been discontinued, and I’m not sure why. Maybe HTC wanted some new Mango specific features and needed a redesign. Regardless, it was a fine phone.

You only have one page to customize, but it’s completely customizable. And the second page is essentially a list of every app on your phone. It was a different way to organize than iOS, but I found it very usable.

Those front page tiles (as of Mango) can show you various news and status updates. For example, the weather app shows the current temperature on it’s icon, and contacts show their latest social status. iOS could use this feature, though I suspect it’s icons are too small to provide useful data.

Zune pass is nice. Spotify is taking a bite out of this market, but I did a month trial of the Zune pass, and I could listen to anything I wanted that was on the store. A few gaps, but in general the marketplace has a lot of songs. Zune recently added some new pricing structures to compete with Spotify.

Cost… If you’re due for an upgrade, you can get a nice WP7 phone for free. And I think the free options for WP7 are higher end phones that the free versions of Android phones. And the only free iPhone is the 3gs, which is fairly dates at this point.

What’s Bad?

The depth of the marketplace just isn’t there compared to the App Store. This is understandable because of how new the marketplace is, but with such a low marketshare, I’m not sure it will ever catch up. Developers are monetizing on the App Store, and Microsoft and Google can’t make that case as well.

Mango changed this, but when I used the phone, it was one app at a time. That’s hard to go back to. Especially when Apps seem to take a while to initialize.

Phone manufacturers can brand some parts of the phone, and even have their own sub-pieces of the marketplace. There was an HTC Apps shortcut on my phone, that took me to specific versions of apps like Youtube, etc. I assume this is so they can optimize the experience for their phone, but it fractures the app stats, and makes integration with other apps harder. It’s a step in the Android direction, and I don’t think that’s a smart direction. (Why does it matter if app stats are off like popularity? When I’m looking for popular apps on a new phone, I would expect things like youtube to be at the top. But if youtube has 6 private label versions, it gets pushed down the list.)

Finally, there’s just a certain je ne sais quoi to the iPhone, that WP7 doesn’t have. Yes, that’s completely subjective, and a lot of it is based on personal experience. But this is a blog, and I’m telling you about my personal experience with the phone.

The Fine Print…

I bought a used phone, with some mild wear and tear. I have had 3 iPhones, all brand new purchases. That adds to the experience.

I’m invested in the iTunes store in terms of music and apps. I never really commited to WP7 and the Zune marketplace that way.

I should have spent more time seeing if there was cool integration options with my XBox. That kind of stuff sells me on a product.


WP7 is a nice platform. If I were banned from Apple products tomorrow, I would have to think long and hard about WP7 vs Android. I think WP7 is better (than Android), my only hesitation is that phones are about apps and integration, and both of those things suffer when marketshare is low.

Maybe the best way to describe the difference is by saying what I like best about iPhone. Despite being closed and proprietary, it doesn’t feel commercialized, because Apple is the only hardware maker, there isn’t hardware advertising and private labelling. Those things detract from the experience, and Apple is all about design and experience. Combine that with content, and you have a winner.

Apple brings huge headstart in content, and that’s hard to overcome. Just look at Windows vs OS X. There are virtual machines and compatablity layers, but at the end of the day, users had years of content and applications that ran on Windows, that they weren’t ready to give up on. As cloud based services and web-based applications take over, we’ve seen that the Windows market erode a bit. And eventually, that may be the case for phones and tablets too, but we’re not there yet. Apps still matter.

That’s why I think Microsoft’s Windows 8 strategy is smart. The more they can move developers to HTML 5 and Javascript, the easier it is to develop cross platform for mobile and tablet platforms. The WP7 and Windows 8 marketplaces can merge, and leech off HTML 5 developers that are targeting the higher marketshare platforms. If there is minimal overhead to developing cross platform, then WP7 will get a number of apps that is disproportionate to it’s marketshare.

I’m happy to have the WP7 around for development purposes. And would recommend it to users who don’t like the iPhone and aren’t invested in App Store already. Particularly if they are gamers with live accounts. But it isn’t a primary platform for me.

A Comforting Warning About Agile

“Beware of becoming an Agile zealout, because this can backfire and put people off. Don’t treat people who are not applying Agile as fools who just need to see the light! This is disrespectful, and people simply won’t listen to your rants.” -Rachel Davies in Agile Coaching1.

Why is this comforting? Good communities self-monitor. Many of today’s communities with momentum have some ego issues. Communities like Agile, Ruby and Mac folks. All three of those communities are great and everyone should be learning more about them, so this isn’t meant to start a flamewar. But what comes off as passion in an upstart community can be obnoxious in an established community. And it certainly doesn’t fly well with the 2nd and 3rd tier adopters that are often the target of such zealotry.

This isn’t an excuse for half-assed Agile. Go for “full-assed” commitment to whatever system a team uses, and in more cases than not, they should be doing a flavor of Agile (usually lean) throughout the software lifecycle.

But blind assertions and a condescending tone won’t win anyone over. No matter what is being sold. This can be a particularly hard trap to avoid when a person or their business are sold as Agile experts. Or… “I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” –Maslow

When leaders and authors in the community stand up for moderation, it is a sign of maturity.

  1. Note that Agile Coaching is written by Rachel Davies and Liz Sedley, but Rachel Davies only is cited above as the quote is in a “Rachel says” section.