Category Archives: seattlebus

Bits and pieces about creating, updating, and maintaining the iPhone application SeattleBus

SeattleBus and the iPad

I received a call last night, rather out of the blue. “Are you porting OneBusAway to the iPad?” was the opening line.

“Uh… No, but then i didn’t write OneBusAway either. I wrote SeattleBus…”

That bit of confusion resolved, we talked some more about Brian Ferris’ very impressive work with OneBusAway and contributions that it’s made to Seattle Public Transit. I thought it was worth writing some here for more public consumption too.

I am incredibly impressed and whole-heartedly applaud the work that Brian has done with his web site, public and open API, and general efforts to improve the daily life of folks using public transit in and around Seattle. I think the opportunities to do some interesting things with that site and the iPad are tremendous, even more so if you look at some of the cool things that the WalkScore folks are doing as well with their open source graph server.

I’m keeping SeattleBus an iPhone only application. I originally wrote it for me, and I continue to use it on a regular basis. My concept for the application is really only meant for the iPhone setup. Brief, very direct access to the route information you need right then. There is a lot you can do with more screen real estate, more detailed information about routes, etc. That’s not what I want SeattleBus to be. The narrow focus is the important thing to me, and the larger format screen of an iPad just doesn’t seem needed. Glorious, yes, but not needed.

For the folks hacking away at similar things – I can assure you from feedback that I’ve received: There is desire to have something more. I would encourage you to look closely at Brian’s work for ideas and inspiration. He has requested that anything using his site and APIs be made freely available (non commercial) – a perfect platform for hacking and learning while also benefitting the community. Take advantage of what he’s made available, go forth, and make some great things.

So what next for SeattleBus? Not a whole lot in the near future. King County Metro is still somewhat freaky about the use of it’s data from a policy perspective. That’s a damper on future development for me. I don’t make even close to a living from SeattleBus and as you might suspect, other projects are taking most of my spare time right now.

I am looking for an application idea to create for the iPad that would fit a iPad. Way more than an iPhone application, somewhat less than a desktop application. I haven’t yet found that fit and inspiration, but I’m still looking and not feeling in too much of a rush to just do something. I’ll strike when I find the right thing. For now… I’ll keep looking around.

Seattle Bus updated to version 1.2.0 – ready for sale

I received the email notification tonight – Seattle Bus 1.2 is now available for sale again on the App Store. The new version is all about the new parser which is able to read the not-quite-valid HTML page that provides the data from King County Metro’s tracker site . Hopefully this will completely resolve the issues we saw once a quarter then the MyBus.org site became somewhat unusable for the better part of 10 days.

SeattleBus 1.2.0 sent in for review

Seattle Bus 1.2.0 has been pushed up to the App Store for application review. This update changes out the underlying parser, allowing the application to use King County’s provided real-time data feed (http://trackerloc.kingcounty.gov/avl.jsp) instead of the one hosted by UW (http://mybus.org/metrokc/avl.jsp).

While the MyBus.org site has been responding fine for the past few weeks, we’ve now seen multiple times over the past year when their site has been down and/or unresponsive to the point of breaking the Seattle Bus application. Hopefully this will fully resolve it. A future point update may allow users to choose between real-time trackers, but that hasn’t been coded in yet and I hope won’t be necessary.

I’ll post an update when it’s past review and is available for purchase again on the iTunes AppStore.

Temporarily removed from sale

Since I haven’t been able to get the site providing the data back online within the week, I’ve temporarily removed Seattle Bus from sale on the AppStore. I’m working on a “fix” (changing the data provider) now that will hopefully be available soon.

I apologize for the trouble and annoyances.

If you have the application already, it’s worth noting that the application does work periodically. Unfortunately, the data feed is just so inconsistent as to be nearly useless.

UPDATE:

I have a new parser functioning correctly with by MyBus.org and King County’s Metro Tracker site. The update should be uploaded to the AppStore shortly. I’ll post when I get the new version uploaded, and when it’s available.

I must say, it’s incredibly embarrassing that the King County site doesn’t even emit well formed HTML. The new parser is an interesting screen-scrape accumulation of regular expressions to pull out the relevant data. At least they’re posting it online…

Data feed for Seattle Bus stalled out

A quick update for folks looking for help with Seattle Bus:

The site that the application uses for it’s data source (mybus.org) has been intermittently available recently, and today it’s been down completely. This is a site run at the University of Washington, and I’m afraid I don’t have a direct contact with the administrators.

There is another site with similar data provided by King County Metro (not as well structured) – so I may end up re-writing my scraper/parser to pull data from that site as I have no details on when or if MyBus.org will come back online.

I wish there was a better way of providing this data to you – I’ll keep everyone informed through this developer diary as I have updates.

How people really use the iPhone

I saw this from Daring Fireball: How people really use the iPhone. 

It is a fantastic, professional user-experience overview of a variety of applications – but most importantly some real information on how folks are using the interface. If you’re developing iPhone applications, this is a must see!

I was very glad to see that I hit most of my own UI elements right with Seattle Bus.

Competition for Seattle Bus

I found out this morning that I have competition for Seattle Bus!

Barry Kaplan made a damn-near copy of my application and is selling it on the App Store for $0.99. From the initial reviews, he apparently started selling it for free. He also appears to have completely ripped off the icon from Zhenwang Yao – author of iBus-Portland (a similar concept application, except aimed at Portland’s transit system).

Good way to get some notice, no doubt about it. I’m giving huge points for being original. Of course, I give those same huge points to Microsoft quite a bit, and they’ve done OK.

Unfortunately in the iTunes search, his is showing up where mine isn’t on the search results page. Not surprisingly, my sales have dried to nearly nothing.

I’ve dropped the price on Seattle Bus to $4.99 now – I’d originally intended to do this as a one week sale to see how elastic or inelastic the price was on the market. I’m afraid that’ll be almost impossible to tell at this point.

If Barry (author of Seattle Metro) was hoping to rake in the big bucks with this fancy app, I’m afraid he’s going to be disappointed. I am glad to see more applications along these lines out there – if nothing else it will at least encourage King County Metro to realize that they’ve got a completely unfulfilled need out here. Not that I expect them to be able to make a decent application, at least based on existing efforts.

From a pricing perspective, I wonder if the application market can sustain the niche efforts at the incredibly low price points of $0.99 and the like. I staked my price higher because I believe in the value first and foremost – not comparing it to other applications (shoot, it’s free on the web) but to the value that you’re getting from the application compared to other things you’re paying. A ride at peak on Seattle Metro (outside the free-ride fare zone) is $1.75. That put Seattle Bus at roughly 6 rides. Seemed like a very fair recompense, especially considering that I didn’t have any base data to work from and put together all the points myself.

The money I have made on the application to date would not have been enough to pay a decent contractor for the exact same work. I seriously doubt that Barry will be able to make up the time he spent on the application with any reasonable wage.

In the larger market, I can see where a $0.99 application might just win for everyone. Low cost, impulse purchase, and a potentially huge market. You’ve fundamentally got to have the scale to make that work. For the niche applications like mine, it’s a much more limited demographic market – the scale just isn’t there.

SeattleBus Diary: problems getting a distribution build made correctly

This isn’t new news – just bits that I couldn’t post because of Apple’s NDA on the technologies behind the iPhone. I wrote the results a little while ago – but I wanted to put something up here for Google to find and help out other folks in case they run into the same issue.

When a distribution binary is created, it gets signed with provisioning profile that has some specific certificates embedded within it. The whole kit gets cryptographically signed, and that signature gets embedded within the application bundle. Buried inside your application, there *should* be a file named embedded.mobileprovision. The file is a serialize plist with a bunch of certificate and signature information embedded within it. If your build settings are incorrect or otherwise screwed up (which was happening in my case), the signature process simply doesn’t create this file. The AppStore won’t even accept a binary without this file inside it and with the appropriate signatures.

The specific problem was that I’d put in a target specific build setting some time in the past, and when I changed the project build settings according to the directions for distributing a binary, it was getting overwritten with the target specific settings that were incorrect. Instead of giving a warning or erring out when the provisioning file I was pointing to didn’t exist, it just continued on it’s merry way – the log looking for all the world like it was working just fine.

I’ve filed a bug against Xcode for it not warning about the incorrectly specified provisioning profile (radar 6095242).

SeattleBus Diary: Using CLANG static analyzer with an iPhone project

Like a number of other Mac developers, I caught the word and then the bug for using Clang Static Analyzer. I remember when I first caught wind of it, hearing about it on twitter and spotting a number of del.icio.us links to it. The note that really caught my attention was someone mentioning it and saying “too bad you can’t use it with the iPhone development…”.

That completely surprised me, because the first project I tried it on was SeattleBus. It was great for identifying a few memory leaks and missing -dealloc methods, I was hooked right off the bat. It wasn’t until later that I started trying to figure out that statement and realized that the analyzer doesn’t support analyzing ARM binaries. It does a great job on intel binaries though, so I realized that when I set my project to default to building for the simulator, I could use the analysis program.

My workflow after I’ve really worked on the codebase is now:

  • Make sure the project default settings are “debug” and “simulator”
  • Close Xcode
  • open a terminal window and “cd” to the project directory
  • run rm -rf /tmp/scan-build*
  • run rm -rf build/;scan-build --view xcodebuild
  • Open Xcode and fix errors

That’s been working great for me ever since.