“OpenTable v8.1.1″

OpenTable

OpenTable US, UK (toptable), Japanese and German universal iOS apps
(v3.6.1 - v8.1.1)

As a senior software engineer on the consumer iOS team, I developed the OpenTable US, UK (”toptable”), Japanese and German universal iOS apps, including work at the REST API level using Java EE related technologies. I also assisted with the redesign of the Foodspotting iPhone app for iOS 7. Overall, I completed features which were showcased during Apple’s special events for iOS 6, iOS 7 and iOS 8 as well as WWDC 2012. This work resulted in increased conversions as well as the apps being regularly featured by Apple in the App Store.

In Q3 of 2012 I was awarded the OpenTable “Foodie” award by my peers for work done on the redesign for iOS 6.

View screenshots

Key Milestones

2014

  • Native review submission feature for iPhone. Developed initial minimum viable product, including work on mobile REST API, coordinating with reviews services team in the UK.
  • iPhone and iPad redesign for iOS 8 / iPhone 6 and 6 plus. Assisted with overall bug fixes to existing codebase for iOS 8, from the initial beta to GM release. Created a new today extension so that a user’s upcoming reservation could be shown in the iOS notification center, which was shown during the iPad Air 2/iPad Mini 3 keynote. Assisted with implementing new design changes specific to the iPhone 6 and 6 plus. Assisted with production of video demos of Apple Pay feature. OpenTable app was featured on the App Store.
  • Attended WWDC 2014
  • iPad redesigned to showcase high quality restaurant photos sourced via new photos service that uses Foodspotting photos and to give the iPad some much needed design love overall, including the new hamburger menu.
  • iPhone hamburger menu navigation added in order to more easily showcase upcoming reservations as well as payments settings views in a single menu.
  • Refactored existing networking layer for the iOS app from using AFNetworking 1.0 to using 2.0, which was updated for iOS 7 to take advantage of the new NSURLSession and NSURLSessionDataTask classes.

2013

  • Next availability (aka suggested times) feature developed to increase conversions (bookings) when originally requested time was not available by showing a calendar of future available times using 3rd party open source objc-TimesSquare library. Included work on mobile REST API.
  • First run experience added to showcase new features for new app installs on iPhone and iPad.
  • iPhone and iPad redesign for iOS 7, in advance of keynote. Also included work on the Foodspotting app during the same time period. Completed work was shown during iOS 7 keynote and OpenTable app was featured on the App Store.
  • Attended WWDC 2013
  • Attended CocoaConf 2013
  • iPad design refresh, following the redesign of the OpenTable iPhone app for iPhone 5 / iOS 6 earlier in 2012.
  • Complete refactoring of the iOS app codebase, which accumulated an outsourced code debt going back to the original iPhone release. Also included transition of separate apps for iPhone and iPad into a universal app.

2012

  • Updated project to allow for an additional target for toptable (UK), including separate image assets and localization/internationalization support, paving the way for bringing the separate Japanese and German targets into the single OpenTable app later on.
  • OpenTable iPhone redesign for iPhone 5 / iOS 6, in advance of keynote, including work done at Apple HQ in Cupertino for 3 weeks alongside design and development evangelists. Completed work was shown during iOS 6 keynote and OpenTable app was featured on the App Store.
  • Siri restaurant reservations feature in the OpenTable iPhone and iPad apps, including work on internal testing tools. Work was shown during WWDC 2012 Siri demonstration.

Client: OpenTable
Dates: March 2012 – November 2014
Role: Senior iOS Software Engineer
Studio: OpenTable

Languages: Objective-C, C, JAVA EE 1.8, Ruby, Bash shell scripting, C#.

Technologies: OS X up to 10.10.1, Xcode/Interface Builder/Instruments up to 6.2 beta, iOS SDK up to 8.1.1, Today extensions, XCTest, push notifications, clang/LLVM, GCC, Cocoapods, RVM, Ruby Gems, Git, SVN, Homebrew, MacPorts, OAuth2, RESTful APIs using Maven, Jersey, Jackson, Spring, nginx, SOAP APIs using C#.

Tools: Github, Gitbox, SourceTree, Araxis Merge, PAW REST client, Charles web debugging proxy, IntelliJ IDEA 13, Eclipse 4, Chef, Knife, Kibana/Elastic Search/Logstash, xScope, Droplr, Licecap, Pixelmator, Reveal, Hipchat, Skype, Dropbox, iCloud notes

Frameworks/Libraries: Internal Cocoapod libraries maintained under a private pod spec repository. Custom Cocoapod forks including AFNetworking, Appirater, KIF (UI automation used with XCTest), Calabash, and objc-TimeSquare. Standard versions of CocoaLumberjack, Reveal-iOS-SDK, Crashlytics, MixPanel, ADMS_AppLibrary (Adobe Omniture) and HasOffers (attribution analytics/tracking).

3rd Party APIs: Foodspotting (photos), Locu (menus), BazaareVoice (diner reviews), Uber, Urban Airship (push notifications), Braintree (reservations which require a credit card)

Continuous Integration: Jenkins, Xcode Bots, TeamCity, Hudson, TestFlight (both the original and Apple’s new TestFlight beta service)

Project Management: Daily stand ups, bi-weekly engineering demos, Agile / Scrum / Kanban methodologies using Jira, TestTrack, Trello, Basecamp. Code reviews using Github pull requests, Crucible and scheduled live meetings. Technical design specifications, wiki and other documentation.