Subeasy: New York’s subway station finder

For NYC BigApps 3.0 in 2012, I built Subeasy, a lightweight hybrid iOS app that found the nearest MTA subway entrances using the official 1,862-station dataset, with map directions and line details.

Story

In January 2012, I entered NYC BigApps 3.0, New York City’s open data competition, with Subeasy, an iOS app that helped New Yorkers find the closest subway station entrances and get walking directions.

The app used the MTA subway entrances dataset, which covered 1,862 records with coordinates, line information, and addresses. I built it as a hybrid app using PhoneGap/Cordova, targeting iPhone 4-era hardware. Keeping it fast was not optional. WebKit-wrapped apps in 2012 had to feel genuinely native to survive Apple’s review process, and on limited CPU and memory, every extra millisecond of JavaScript execution showed.

I avoided frameworks and wrote lean, manually optimized JavaScript throughout. Distance sorting used client-side Haversine calculations against Core Location output, processing all 1,862 records in memory on the device. The result felt instant.

The app launched successfully for sideloading and received good feedback during the competition. A full App Store submission ran into Apple’s strict 2012 hybrid app policy, which was rejecting many WebKit-based submissions at the time. The project gave me a practical education in the real trade-offs between hybrid and native mobile development: performance, platform trust, and user perception are tightly coupled on constrained hardware, and abstraction has a cost.

He is the One Who made the stars for you, so that you may find your way through the darkness of land and sea.

Quran 6:97

Impacts

  • Delivered a working geolocation app on 2012 iPhone hardware that sorted 1,862 MTA station records by distance entirely on the device with no backend
  • Shipped a native-feeling hybrid iOS app using only web technologies at a time when Apple was actively rejecting WebKit-wrapped submissions that did not meet its UI standards

Challenges & Solutions

Challenges

  • Hybrid JavaScript apps on 2012 iPhone hardware ran noticeably slow, making the app feel unpolished compared to native
  • Sorting 1,862 station records by distance from the user’s current location with no backend server
  • Apple’s 2012 App Store policy was actively rejecting hybrid apps that did not pass for native

Solutions

  • Avoided frameworks entirely, kept JavaScript minimal, and hand-optimized every interaction loop to stay within the device’s memory and CPU limits
  • Implemented client-side Haversine distance calculation using Core Location coordinates, sorting the full dataset in memory on the device fast enough to feel instant
  • Focused the entire UI on native-like responsiveness and interaction quality so the app performed well in demos and sideloaded user testing, even though App Store policy still blocked full distribution