Thursday, April 24, 2014

Lessons From App Week

App Week 2014 is over, and I failed.

But that's okay!  I have a nearly-completed codebase and a handful of valuable lessons:

1) Turn features into functions.

Before you even start coding, think about the actual functions you'll need to make a feature work.  That means plenty of up-front planning.  It also means really dialing into the libraries you plan to use.

For example, did you know that MongoDB can't do "$near" on polygons?  Neither did I!

2) With Cordova/PhoneGap, that hard parts are easy, but the easy parts are hard.

You'll be surprised how much time you spend shuffling around icon files and splash screens.  There are a handful of customizations that can make your life much easier.  For example, check out this post from Holly Schinsky.

3) The iOS simulator is old and broken.

It'll get you 90% of the way there, but don't lean on it for anything other than the most basic features.  You'll have to use real hardware if you want to test anything involving a compass or accelerometer.

Thursday, April 10, 2014

App week: 7

(Faithful readers will notice that today's update is a little late.  Er... I meant "business days"?)

I'm realizing why MongoDB isn't the absolute perfect choice for every application in the universe.  And that reason is joins.

Some data just naturally lends itself to joins.  With the way it's laid out, GTFS is very well suited to doing joins.  Even the most popular MongoDB GTFS implementation uses Mongoose, so it's basically SQL.

I'm going to push on with MongoDB, although I can freely admit that it is a mistaken endeavor that should never be repeated.

Once I get my join problems solved, I look forward to submitting my app for review!

Saturday, April 05, 2014

App week: 6

Lots of polish on the frontend.  New styles, assets, copy.  I suspect I'm going to need to integrate a map somehow if it's going to get approved.

Regardless, I'm looking forward to hooking everything up tomorrow.  I think it'll be pretty slick.

Friday, April 04, 2014

App week: 5

Home stretch!

I managed to check a few things off on the front end.  Most importantly, the icons, styling, and markup are all done.  Location services seems to be working.

One worry I have is that my app is absurdly simple in functionality.  I've read that Apple will reject apps that are too simple, which doesn't bode well for my short timetable.  I might have to look at shoehorning in a settings menu, interactive maps, or some other nonsense.

My experience with Cordova thus far has been positive, although there are a ton of obvious pain points.  For example, deploying an icon for your app-- It's probably one of the first things you do during the development process-- took me about an hour and a half because of all the sizing issues.

It would be easy to un-suck Cordova with some simple hooks and scripts.  The authors got pretty close, but it's nowhere near as smooth as, say, an Express install (although it does share much of the same technology).

How about a version of Cordova that's just the Javascript API and compliation tools?  Anyone?

Thursday, April 03, 2014

App week: 4

It's come to my attention that APP WEEK 2014 is more than halfway over.

The backend is looking good-- Importing works, 2dsphere indexing works, and intersections work.  Still have a bit more work to do matching the shapes up to actual route numbers, but that shouldn't be bad.

I think the biggest challenge is going to be hooking up the realtime data and creating a notion of inbound/outbound.  This is tricky in Boston, because I suspect there are places where going "Inbound" actually takes you away from the city center.

The frontend?  Haven't started it.  Whoops!

Wednesday, April 02, 2014

App week: 3

Backend day!

Just finished up importing Boston's transit shapes into a Mongo GeoJSON collection.  That was harder than it should have been.

Tomorrow I'll be working on intersections.  Once I get that going, it's all about setting up an simple API with Express and building a simple frontend.

Tuesday, April 01, 2014

App week: 2

Goodness gracious.

I've heard XCode is bad, but I had no idea it was a glossy NetBeans ripoff from 1997.

The only reasonable thing to do is to drop any aspirations of learning Objective C and use Cordova instead.

While I was waiting for the bitter taste in my mouth to go away, I threw together the first part of the backend service.  I'm going to lean on Mongo's geospacial stuff, which is assuredly a bad idea.  But, time is of the essence.