"Universal programming recipes", Kateryna Trofimenko
-
Upload
badoo-development -
Category
Technology
-
view
740 -
download
0
Transcript of "Universal programming recipes", Kateryna Trofimenko
![Page 1: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/1.jpg)
Universal programming recipes
Kateryna Trofimenko iOS developer
![Page 2: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/2.jpg)
What do we do?
![Page 3: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/3.jpg)
What do we do?
Application
![Page 4: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/4.jpg)
What do we do?
ApplicationService
![Page 5: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/5.jpg)
What do we do?
ApplicationServicePlatform
![Page 6: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/6.jpg)
What do we do?
ApplicationServicePlatformUser experience
![Page 7: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/7.jpg)
What are the properties of good code?
![Page 8: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/8.jpg)
Clean
![Page 9: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/9.jpg)
Structured
![Page 10: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/10.jpg)
Readable and well documented
![Page 11: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/11.jpg)
Testable
![Page 12: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/12.jpg)
Working
Difference engine by Charles Babbage
![Page 13: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/13.jpg)
Patterns
![Page 14: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/14.jpg)
Patterns
a general solution to a problem
![Page 15: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/15.jpg)
Patterns
a general solution to a problem
a reusable architectural outline
![Page 16: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/16.jpg)
Delegate
![Page 17: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/17.jpg)
Delegate
Customise behaviour without subclassing
![Page 18: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/18.jpg)
DelegateCustomise behaviour without subclassing
UIApplication UIApplicationDelegate
![Page 19: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/19.jpg)
Data Source
![Page 20: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/20.jpg)
Data Source
Customise data retrieval without subclassing
![Page 21: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/21.jpg)
Data SourceCustomise data retrieval without subclassing
UITableView DataSource
![Page 22: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/22.jpg)
Data SourceCustomise data retrieval without subclassing
UITableView DataSource
UICollectionView DataSource
![Page 23: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/23.jpg)
Data SourceCustomise data retrieval without subclassing
UITableView DataSource
UICollectionView DataSource
UIPickerView DataSource
![Page 24: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/24.jpg)
Data SourceCustomise data retrieval without subclassing
section count cells count
headers cells
UITableView DataSource
![Page 25: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/25.jpg)
Target - Action
![Page 26: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/26.jpg)
Target - Action
A consistent way to connect controls to custom logic
![Page 27: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/27.jpg)
Target - ActionA consistent way to connect controls to custom logic
UIButton
@IBAction func buttonAction(sender: AnyObject)
button.addTarget(self, action: "buttonAction", forControlEvents: .TouchUpInside)
![Page 28: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/28.jpg)
Target - ActionA consistent way to connect controls to custom logic
UISwitcher
switcher.addTarget(self, action: "switchAction", forControlEvents: .ValueChanged)
![Page 29: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/29.jpg)
Target - ActionA consistent way to connect controls to custom logic
UIGestureRecognizer
gestureRecognizer.addTarget(self, action: "tapGestureAction")
![Page 30: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/30.jpg)
Responder chain
![Page 31: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/31.jpg)
Responder chainHandle events without knowledge of which object will be used
![Page 32: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/32.jpg)
Responder chainHandle events without knowledge of which object will be used
useraction
![Page 33: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/33.jpg)
Responder chainHandle events without knowledge of which object will be used
useraction UIView
![Page 34: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/34.jpg)
Responder chainHandle events without knowledge of which object will be used
useraction UIView
UIView
![Page 35: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/35.jpg)
Responder chainHandle events without knowledge of which object will be used
useraction UIView
UIView
UIView
UIView
![Page 36: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/36.jpg)
Composite
![Page 37: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/37.jpg)
Composite
Manipulate a group of objects as a single object
![Page 38: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/38.jpg)
CompositeManipulate a group of objects as a single object
UIView
![Page 39: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/39.jpg)
CompositeManipulate a group of objects as a single object
UIView
UIView
UIView
UIView
![Page 40: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/40.jpg)
CompositeManipulate a group of objects as a single object
UIViewUIView
UIView
UIView
![Page 41: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/41.jpg)
CompositeManipulate a group of objects as a single object
UIView
UIView
UIView
UIView
![Page 42: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/42.jpg)
MVC
![Page 43: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/43.jpg)
MVC
Model View
Controller
![Page 44: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/44.jpg)
MVC
Model View
Controller
Updates
User actionsNotifications
![Page 45: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/45.jpg)
More…
![Page 46: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/46.jpg)
More…
MVP
![Page 47: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/47.jpg)
More…
MVPMVVM
![Page 48: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/48.jpg)
More…
MVPMVVMVIPER
![Page 50: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/50.jpg)
Sprint #1:
![Page 51: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/51.jpg)
Sprint #3:
![Page 52: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/52.jpg)
Sprint #5:
![Page 53: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/53.jpg)
Sprint #10:
![Page 54: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/54.jpg)
Sprint #11:
![Page 55: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/55.jpg)
Sprint #12:
![Page 56: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/56.jpg)
Sprint #13:
![Page 57: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/57.jpg)
Sprint #13:
![Page 58: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/58.jpg)
Sprint #13:
![Page 59: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/59.jpg)
Refactoring!
![Page 60: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/60.jpg)
![Page 61: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/61.jpg)
Information Flow
![Page 62: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/62.jpg)
![Page 63: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/63.jpg)
find the truth
![Page 64: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/64.jpg)
find the truth
ask why, not how
![Page 65: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/65.jpg)
Clear responsibilities
![Page 66: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/66.jpg)
![Page 67: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/67.jpg)
![Page 68: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/68.jpg)
![Page 69: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/69.jpg)
![Page 70: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/70.jpg)
Profile View Controller
Input validator
![Page 71: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/71.jpg)
Profile View Controller
Input validator
Chat View Controller
Input validator
![Page 72: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/72.jpg)
Profile View Controller
Input validator
Chat View Controller
![Page 73: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/73.jpg)
Input validator Tests
![Page 74: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/74.jpg)
Mutation
![Page 75: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/75.jpg)
Mutation
![Page 76: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/76.jpg)
Mutation
![Page 77: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/77.jpg)
Mutation
![Page 78: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/78.jpg)
Mutation
![Page 79: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/79.jpg)
Mutation
![Page 80: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/80.jpg)
Mutation
![Page 81: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/81.jpg)
Mutation
![Page 82: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/82.jpg)
Simplify with immutability
![Page 83: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/83.jpg)
Simplify with immutability
![Page 84: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/84.jpg)
Simplify with immutability
![Page 85: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/85.jpg)
Simplify with immutability
![Page 86: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/86.jpg)
Simplify with immutability
![Page 87: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/87.jpg)
Simplify with immutability
![Page 88: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/88.jpg)
Feature flags
![Page 89: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/89.jpg)
Feature flags
![Page 90: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/90.jpg)
Feature flags
![Page 91: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/91.jpg)
Feature flags
![Page 92: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/92.jpg)
Feature flags
![Page 93: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/93.jpg)
Feature flags
![Page 94: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/94.jpg)
Feature flags
![Page 95: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/95.jpg)
Core iOS Application Architectural Patterns bit.ly/wwdc2014-224
Advanced iOS Application Architecture and Patterns bit.ly/wwdc2014-229
Designing Intuitive User Experiences bit.ly/wwdc2014-211
Protocol-Oriented Programming in Swift bit.ly/wwdc2015-408
![Page 96: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/96.jpg)
![Page 97: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/97.jpg)
• developer.apple.com • iosdevweekly.com • ios-goodies.com • natashatherobot.com • swiftnews.curated.co • mikeash.com/pyblog • www.objc.io • nshipster.com • www.jessesquires.com • yalantis.com/blog/category/programming/ • lists.swift.org/pipermail/swift-users/ • lists.swift.org/pipermail/swift-evolution/
![Page 98: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/98.jpg)
Veronica Ray Cathy Birdy Erica Sadun
Ayaka Nonaka Mike Ash
Ash Furrow Andy Matuschak
Chris Eidhof
Marcin Krzyzanowski Ørta
Peter Steinberger Javier Soto Nate Cook
Felix Krause Ray Wenderlich
A. Nelson-Hornstein
![Page 99: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/99.jpg)
2007
![Page 100: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/100.jpg)
2007 2008
![Page 101: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/101.jpg)
2007 2008 2010
![Page 102: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/102.jpg)
2007 2008 2010 2014
![Page 103: "Universal programming recipes", Kateryna Trofimenko](https://reader033.fdocuments.net/reader033/viewer/2022051202/58adbe5a1a28ab56468b5037/html5/thumbnails/103.jpg)
2007 2008 2010 2014
Professions that don’t exist - yet!