a slice of scala
DESCRIPTION
A presentation given to the Melbourne Scala User Group in August 2013 talking about how PlayUp is using scala, akka, spray and neo4j to drive it's next generation of mobile sports applications.TRANSCRIPT
![Page 1: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/1.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Kevin O’Neill CTO PlayUp
A Slice of Scala
@kevinoneill
August 2013
![Page 2: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/2.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 3: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/3.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 4: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/4.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 5: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/5.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 6: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/6.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
A little History
![Page 7: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/7.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Engage & Entertain Around Live Sport
![Page 8: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/8.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Mobile Games
![Page 9: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/9.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
SMS Based
![Page 10: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/10.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Number of Runs
![Page 11: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/11.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Complex
![Page 12: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/12.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Carrier Integration
![Page 13: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/13.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Smart Phone Revolution
![Page 14: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/14.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Move from a Content Creator to a Content
Enabler
![Page 15: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/15.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Top 10 in Engagement
![Page 16: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/16.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Over 3 Million Likes
![Page 17: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/17.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
30% - 40% Active
![Page 18: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/18.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Manually Curated
![Page 19: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/19.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
We Know there's an Opportunity
![Page 20: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/20.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
October 2011
![Page 21: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/21.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Technologist at Large
![Page 22: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/22.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Version 2
![Page 23: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/23.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 24: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/24.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Rebuild Based on Hypermedia*
![Page 25: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/25.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 26: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/26.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Same Feature Set
![Page 27: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/27.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 28: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/28.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 29: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/29.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Different Skin
![Page 30: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/30.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 31: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/31.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
iOS
![Page 32: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/32.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Android
![Page 33: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/33.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Ruby
![Page 34: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/34.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Version 3
![Page 35: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/35.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Platform Extensions
![Page 36: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/36.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 37: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/37.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 38: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/38.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Tiles
![Page 39: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/39.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 40: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/40.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Third Party
![Page 41: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/41.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 42: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/42.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Ticketing
![Page 43: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/43.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 44: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/44.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Ruby
![Page 45: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/45.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
PHP
![Page 46: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/46.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Version 4
![Page 47: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/47.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 48: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/48.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Engagement Too Deep
![Page 49: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/49.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Streams
![Page 50: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/50.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
![Page 51: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/51.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Graph Storage
![Page 52: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/52.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Story
League
Region
Team Story
Team
Story
League
TeamStory
Story
User
Story
about
about
about
aboutabout
follows competes in
competes in
follows
competes in
Region
follows
Team
Story
competes in
about
about
User
follows
follows
Story
Contest
about
plays in
plays in
Story
about
![Page 53: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/53.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Value is in the Connections
![Page 54: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/54.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Ruby
![Page 55: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/55.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
50 Seconds
![Page 56: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/56.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Cypher Processing too much Data
![Page 57: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/57.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Java plugin
![Page 58: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/58.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
5 Seconds
![Page 59: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/59.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
10 Times too Long*
![Page 60: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/60.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Aiming Around 200ms
![Page 61: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/61.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Time to Change
![Page 62: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/62.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
If you hear a voice within you say 'you cannot paint,' then by all means paint, and that voice will be silenced.
– Vincent Van Gogh
![Page 63: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/63.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Scala
![Page 64: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/64.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Just Couldn't Face Java
![Page 65: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/65.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Some Experience with it on a Large Project
![Page 66: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/66.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
The Stack
![Page 67: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/67.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Scala 2.10.x
![Page 68: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/68.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
akka 2.1.x*
![Page 69: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/69.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Spray M8+
![Page 70: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/70.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Play 2.1.x*
![Page 71: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/71.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Other Bits
![Page 72: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/72.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Neo4j 1.9.x
![Page 73: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/73.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Scalaz 7.0.x
![Page 74: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/74.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Blueprints 2.4.x
![Page 75: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/75.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Scala Test 2.0.x
![Page 76: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/76.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Scala Check 1.10.x
![Page 77: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/77.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
SBT 1.12.x*
![Page 78: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/78.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Systems
![Page 79: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/79.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Two akka Services*
![Page 80: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/80.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Graph Service
![Page 81: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/81.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Sports Connect
![Page 82: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/82.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Fanbase Connect*
![Page 83: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/83.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
One Spray Server
![Page 84: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/84.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Hypermedia API
![Page 85: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/85.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
One Play Application*
![Page 86: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/86.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
HTML Front End
![Page 87: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/87.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Admin Front End*
![Page 88: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/88.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
JSON Generation
![Page 89: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/89.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Problem : How do you isolate environment
![Page 90: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/90.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Lambda: The Ultimate Dependency Injection
Framework
![Page 91: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/91.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Did my Head in
![Page 92: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/92.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
So what if …
![Page 93: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/93.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Environment Readers
type Settings = Set[EnvironmentSetting[_]] !type EnvironmentReader[+A] = scalaz.Reader[Settings, A] object EnvironmentReader { def apply[A](f: Settings => A):EnvironmentReader[A] = scalaz.Reader(f) }
![Page 94: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/94.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Writing an Identity
protected def writeResourcePointer(identity: ResourceIdentity) : EnvironmentReader[JObject] = for { ! href <-‐ urlForIdentity(identity) contentType = identity.documentType representations <-‐ writeRepresentations(identity) views <-‐ viewsForIdentity(identity) ! } yield (":href" -‐> href) ~ (":type" -‐> contentType) ~ (":uri" -‐> identity.uri) ~ representations ~ (":views" -‐> views)
![Page 95: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/95.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
urlForIdentity
protected def urlForIdentity(identity:ResourceIdentity) : EnvironmentReader[JValue] = for { ! r <-‐ URLResolverSetting.resolve(identity) href <-‐ mapOrJNothing(r) { ref : String => pure(JString(ref)) } !} yield href
![Page 96: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/96.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
URLResolverSetting
case class URLResolverSetting(value: Resolver[String]) extends EnvironmentSetting[Resolver[String]] { val key = "url-‐resolver" } !object URLResolverSetting extends ResolverSetting ({ case setting: URLResolverSetting => setting.value })
![Page 97: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/97.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
ResolverSetting
class ResolverSetting[T]( finder : PartialFunction[ EnvironmentSetting[_], Resolver[T]]) { ! def resolve(identity : ResourceIdentity) : EnvironmentReader[Option[T]] = EnvironmentReader { settings => for { resolver <-‐ settings.collectFirst(finder) result <-‐ resolver.resolve(identity) } yield result } }
![Page 98: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/98.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Wooh … That's far more
complex than my … blah blah in blah
![Page 99: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/99.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Yup
![Page 100: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/100.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Nope
![Page 101: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/101.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Remember I mentioned Runars talk
did my head in.*
![Page 102: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/102.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
It's actually really easy to work with
![Page 103: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/103.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Each components is responsible for one
thing
![Page 104: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/104.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Combining components is trivial
![Page 105: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/105.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
You spend most of your time doing
simple, safe, composition
![Page 106: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/106.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Spray
![Page 107: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/107.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Elephants all the way down
![Page 108: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/108.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
The Language
val route = { language { lang => implicit val env = RequestEnvironmentProvider( EnvironmentConfig(language = Some(lang)) ) … !}
![Page 109: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/109.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
The Directive*
def language: Directive1[Lang] = { headerValue { ! case HttpHeader("accept-‐language", langString) => langString.split(',').headOption.flatMap(firstLanguage => Lang.get(firstLanguage)) ! case _ => None ! } | provide(Lang.defaultLang) }
![Page 110: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/110.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Creating a Responsedef getStream(implicit env: RequestEnvironmentProvider): Route = { path("stream" / StreamPath) { case (stream, afterStory) => read(FetchStream(stream, afterStory)) { stream => val streamEnv = environmentForStreamWithTopics( env, stream.identity.references ) respondWithHeaders( `Cache-‐Control`(`public`, `max-‐age`(60))) { complete { implicit val criteriaMarshaller: Marshaller[StoryStream] = resourceMarshaller(streamEnv) stream } } } } }
![Page 111: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/111.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
A Little akka Helper
![Page 112: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/112.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Reading the Graph
def read[T](message : GraphRequest[T])(f : T => Route):Route = { ctx => val response: Future[T] = Graph.reader.ask(message).asInstanceOf[Future[T]] response.map { case Error(messages) => { ctx.complete( InternalServerError, messages.mkString("\n") ) } case result => f(result)(ctx) } }
![Page 113: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/113.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
akka
![Page 114: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/114.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Topic Management
![Page 115: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/115.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Topic Actor
private class TopicActor (system : GraphSystem, topic : StreamComponentIdentity) extends GraphWorker(system) with Stash { ! override def preStart() { available(topic) onAvailable { become(active) } onMissing { topicManager ! UpdateTopic(topic) become(pending) } } !… }
![Page 116: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/116.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Receive
def receive = PartialFunction.empty
![Page 117: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/117.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Pending
def pending : Actor.Receive = { case message @ LinkStory(story, identity) if identity == topic => { stash() } ! case identity if identity == topic => { unstashAll() become(active) } }
![Page 118: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/118.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Active
def active : Actor.Receive = { case LinkStory(story, identity) if identity == topic => { gs.write(associateWithSubject(story, topic)) } }
![Page 119: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/119.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Baby Steps
![Page 120: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/120.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Challenges
![Page 121: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/121.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
As the Carpenters said …
![Page 122: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/122.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
We've Only Just Begun
![Page 123: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/123.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Data Load
![Page 124: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/124.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Sparsity
![Page 125: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/125.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Propagation
![Page 126: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/126.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Friends
![Page 127: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/127.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
500 Topics
![Page 128: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/128.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
10,000,000 Nodes
![Page 129: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/129.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
1,000,000 Topics
![Page 130: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/130.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
10,000,000,000 Nodes
![Page 131: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/131.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Time Series Data
![Page 132: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/132.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Distribution
![Page 133: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/133.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Need to change the way you think about
services
![Page 134: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/134.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Actors are not Queues
![Page 135: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/135.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Monitoring is Hard
![Page 136: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/136.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
"Real Time"
![Page 137: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/137.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Balancing Load vs Caching
![Page 138: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/138.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Two Hard Problems
![Page 139: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/139.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Naming
![Page 140: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/140.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Cache Invalidation
![Page 141: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/141.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Off by One Errors
![Page 142: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/142.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Caching Stuff is Easy
![Page 143: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/143.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Invalidation is Hard
![Page 144: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/144.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Limited Use
![Page 145: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/145.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Just be Fast
![Page 146: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/146.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Payments
![Page 147: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/147.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Ticketing
![Page 148: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/148.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
À la carte
![Page 149: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/149.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Cross Platform
![Page 150: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/150.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Come Join Us
![Page 151: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/151.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Disrupting
![Page 152: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/152.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Looking for the 'X' factor
![Page 153: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/153.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Hiring Selectively
![Page 154: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/154.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Talk to Me or Andrea
![Page 155: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/155.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
You miss 100 percent of the the shots you don't take
– Wayne Gretzky
![Page 156: A Slice of Scala](https://reader033.vdocuments.mx/reader033/viewer/2022051314/54b72a8a4a795916198b47ba/html5/thumbnails/156.jpg)
Melbourne Scala User Group - August 2013Kevin O’Neill - CTO PlayUp - @kevinoneill
Kevin O’NeillCTO - PlayUp
[email protected]@kevinoneill
Questions?