Slide 1

Slide 1 text

zzzzzzzzzzzzzzzzzzzzzzzz 6 g M A Y ! ! ! 2 0 1 4 #INSPECT Going Pro BY JAMON HOLMGREN ! @jamonholmgren ! jamonholmgren.com ! clearsightstudio.com Owner at ClearSight Studio Vancouver, Washington (Near Portland, Oregon)

Slide 2

Slide 2 text

SECTION No. APRIL 8, 2014 The Cocoa Touch Way 1 2

Slide 3

Slide 3 text

APRIL 8, 2014 @jamonholmgren Boilerplate Code 3

Slide 4

Slide 4 text

APRIL 8, 2014 “Controlling complexity is the essence of computer programming.” - Brian Kernighan 4

Slide 5

Slide 5 text

OFFSET POWERPOINT TEMPLATE APRIL 8, 2014 5

Slide 6

Slide 6 text

OFFSET POWERPOINT TEMPLATE APRIL 8, 2014 6

Slide 7

Slide 7 text

APRIL 8, 2014 @jamonholmgren Boilerplate hides Bugs “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” - Edsger Dijkstra 7

Slide 8

Slide 8 text

APRIL 8, 2014 @jamonholmgren UIKit Tables 1. UITableViewDataSource
 tableView:cellForRowAtIndexPath: 
 numberOfSectionsInTableView:
 tableView:numberOfRowsInSection:
 sectionIndexTitlesForTableView:
 tableView:sectionForSectionIndexTitle:atIndex:
 tableView:titleForHeaderInSection:
 tableView:titleForFooterInSection: 2. UITableViewDelegate
 NOOOO!! 8

Slide 9

Slide 9 text

APRIL 8, 2014 IT’S JUST UGLY 9

Slide 10

Slide 10 text

APRIL 8, 2014 @jamonholmgren We're Ruby developers now (Even you formerly Objective-C people) 1 0

Slide 11

Slide 11 text

APRIL 8, 2014 @jamonholmgren Ruby is beautiful, just like you 1 1

Slide 12

Slide 12 text

APRIL 8, 2014 tableView:sectionForSectionIndexTitle:atIndex: 
 …not so much 1 2

Slide 13

Slide 13 text

APRIL 8, 2014 @jamonholmgren Recap 1 1. Cocoa Touch is verbose 2. Hard to remember 3. Hides bugs 4. Looks hideous 1 3

Slide 14

Slide 14 text

SECTION No. APRIL 8, 2014 ProMotion
 in Prototypes 2 1 4

Slide 15

Slide 15 text

APRIL 8, 2014 @jamonholmgren PM::Delegate 1 5

Slide 16

Slide 16 text

APRIL 8, 2014 @jamonholmgren PM::Screen 1. UIViewController subclass 2. Aliases common methods 3. Kills boilerplate 1 6

Slide 17

Slide 17 text

APRIL 8, 2014 @jamonholmgren PM::Screen 1 7

Slide 18

Slide 18 text

APRIL 8, 2014 @jamonholmgren PM::TableScreen 1. UITableViewController subclass 2. Data is an array of hashes 3. We handle the rest 1 8

Slide 19

Slide 19 text

APRIL 8, 2014 @jamonholmgren PM::TableScreen 1 9

Slide 20

Slide 20 text

APRIL 8, 2014 @jamonholmgren Refreshable, Searchable 2 0

Slide 21

Slide 21 text

APRIL 8, 2014 @jamonholmgren PM::WebScreen and PM::MapScreen 2 1

Slide 22

Slide 22 text

APRIL 8, 2014 @jamonholmgren Recap 2 1. ProMotion is easy 2. Memorable API 3. PM::Delegate 4. PM::Screen 5. PM::TableScreen 6. PM::WebScreen, PM::MapScreen 2 2

Slide 23

Slide 23 text

SECTION No. APRIL 8, 2014 ProMotion in production 3 2 3

Slide 24

Slide 24 text

APRIL 8, 2014 @jamonholmgren Production-ready 1. Lighter than BubbleWrap, Teacup, Formotion 2. Less invasive than Sugarcube, motion-support 3. Cooler name than RMQ (just kidding, Todd) 4. 36 files, 2,073 lines of code 5. 521 tests 6. 37 contributors (thanks!) 2 4

Slide 25

Slide 25 text

APRIL 8, 2014 ProMotion is here to help you, not dictate CONVENTIONS. 2 5

Slide 26

Slide 26 text

APRIL 8, 2014 @jamonholmgren OPEN SCREENS/VCs LIKE NORMAL OR WITH PM MIX IN OTHER GEMS AS NEEDED MIX AND MATCH VCs AND PM::SCREENS Inspect App 2 6

Slide 27

Slide 27 text

APRIL 8, 2014 @jamonholmgren Scaling PM ★ Use styling gems, like MotionKit, rmq ★ Get those styles out of your Screens! ★ Subclass UIViews ★ Make your own Screen subclasses 2 7

Slide 28

Slide 28 text

APRIL 8, 2014 @jamonholmgren You too can make hundreds 2 8 “PM::TableScreen was stupid simple. thanks for the framework the name makes it difficult to google though” - Amir

Slide 29

Slide 29 text

APRIL 8, 2014 @jamonholmgren Recap 3 1. They're just UIViewControllers 2. Used in production apps already 3. Works well with layout/styling gems, 
 almost everything 2 9

Slide 30

Slide 30 text

APRIL 8, 2014 @jamonholmgren ProMotion 2.0 ★ 20% less code ★ Builds 55% faster ★ CodeClimate from 2.65 to 3.5+ ★ Extracted non-core parts
 - ProMotion-map
 - ProMotion-push
 - ProMotion-formotion ★ ProMotion 3.0 - Android support? 3 0

Slide 31

Slide 31 text

APRIL 8, 2014 @jamonholmgren Conclusion 1. Start with ProMotion
 promotion new my_new_app 2. Get a prototype up fast 3. Add other gems 4. ?? 5. Profit! 3 1

Slide 32

Slide 32 text

APRIL 8, 2014 Questions? 3 2

Slide 33

Slide 33 text

APRIL 8, 2014 @jamonholmgren Me again Jamon Holmgren Owner at ClearSight Studio Vancouver, Washington [email protected] @jamonholmgren 3 3