Slide 1

Slide 1 text

iOS, meet MongoDB Actually db.collection.find()

Slide 2

Slide 2 text

Genesis - Primary Responsibility: Sailthru SDK for iOS • register user with Sailthru (for Push) • send tracking info • retrieve recommendations - Secondary • internal-use only software • proof of concept demonstrations

Slide 3

Slide 3 text

Objectives and Goals - Learn and leverage iOS7 • dynamic type (sizing) • every view portrait & landscape using auto layout • Storyboards, New Networking APIs, CollectionView • “Deference, Clarity and Depth” - Absolute Minimum Text Entry • email/password/security • query form reuse

Slide 4

Slide 4 text

Set Objectives and Goals Part 2 - Preserved Previous Learning • mimic the web interface - Problems or Plain Old Errors • plan for them at the beginning - It’s iOS, not HTML • Never forget!

Slide 5

Slide 5 text

Starting Point Choose your tools!

Slide 6

Slide 6 text

Starting Point Choose your tools!

Slide 7

Slide 7 text

Starting Point Choose your tools! Iterate!

Slide 8

Slide 8 text

Step 1: App Definition Define the high level architecture: - fixed left tab for Collection selection and management - one center view per selected collection, no limits on #, each has its own Query Builder (so concurrent, independent) - far right tab for Preferences, Delete Account, etc Sketched out each of the top level views Sketched out the Query View (the most complex view)

Slide 9

Slide 9 text

Step 2a: Final Paper View Flow

Slide 10

Slide 10 text

Step 2b: Xcode Storyboard

Slide 11

Slide 11 text

Step 3: Data Flow Sailthru uses complex connection management Goal: hide complexity Requests can follow any data fetch … … any view might be showing

Slide 12

Slide 12 text

Architecture 'Net libHorizon HTML Analyzer AppDelegate Tab Bar Controller Collections Prefs One Collection ...

Slide 13

Slide 13 text

Login & Code States

Slide 14

Slide 14 text

Step 4: View Architecture Collection Management View Single Collection View Top Level Field Management Drill down as deep as desired, email current object

Slide 15

Slide 15 text

Step 5: Query Builder

Slide 16

Slide 16 text

Step 5: Query Builder

Slide 17

Slide 17 text

Show
 & Tell
 &
 Complain

Slide 18

Slide 18 text

Step 6: JSON (BSON) BSON decoding
 { "_id" : 12345, "some_time" : new Date('Jul 12 2012, 5:45 pm EDT'), “some_place" : ObjectId(‘xxxyyyzzz’), "views" : NumberLong(1250000) }, SAX-JSON-Parser-ForStreamingData (github/dhoerl)

Slide 19

Slide 19 text

Step 7: Embellish Open-Source An Invaluable Resource Tie Keyboard to Field Type Keyboard Accessory View Field Auto-completion SMS Entry Copy/Paste

Slide 20

Slide 20 text

Collections

Slide 21

Slide 21 text

Document Presentation

Slide 22

Slide 22 text

Query

Slide 23

Slide 23 text

Fetch & View Data

Slide 24

Slide 24 text

Stats Common Library: 18 files, 3210 lines App: 35 files, 9634 lines Open Source (github/dhoerl except TFHipple) - HTTextField (auto-completion) - KOKeyboard (5 Keys in one Button) - TFHipple/XPathQuery (HTML/XML parser) - OperationsRunner (FastEasyConcurrentWebFetches) ——-