structuring apps in scala
TRANSCRIPT
Thursday, March 14, 13
Structuring apps in Scala a.k.a.
I have no idea what I’m doing
phil calçado@pcalcado
http://philcalcado.com
Scala User Group - Berlin BrandenburgThursday, March 14, 13
WHY BOTHER?
Thursday, March 14, 13
SOLVING INTERESTING PROBLEMS
Thursday, March 14, 13
SOLVING INTERESTING PROBLEMS
meh.
Thursday, March 14, 13
SOLVING BORING PROBLEMS IN A
INTERESTING WAY
Thursday, March 14, 13
SOLVING BORING PROBLEMS IN A
INTERESTING WAY
hell yeah!
Thursday, March 14, 13
SOUNDCLOUDDEVELOPER CHALLENGE’S
TEST SUITE
Thursday, March 14, 13
W(hy)TF?
Recruitment Challenge
Thursday, March 14, 13
Build me a file uploader
Old Challenge
Thursday, March 14, 13
Build me a file uploader
Old Challenge
Boring
Thursday, March 14, 13
Build me a file uploader
Old Challenge
BoringUse flash plugin
Thursday, March 14, 13
Build me a file uploader
Old Challenge
BoringUse flash pluginNot enough code
Thursday, March 14, 13
Given a series of events and a bunch of connected
clients, who should be notified of which events?
New Challenge
Thursday, March 14, 13
What I’m used to
Thursday, March 14, 13
What I’m used to
Thursday, March 14, 13
Combinators all the way down
Thursday, March 14, 13
a LOT of code
Thursday, March 14, 13
a LOT of wiring
Thursday, March 14, 13
not leveragingthe type system
Thursday, March 14, 13
I am pretty sure I’m doing it wrong.
Thursday, March 14, 13
Thursday, March 14, 13
Instance-Based Injection
Thursday, March 14, 13
Extremely thin, orthogonal, traits
Thursday, March 14, 13
Use method visibility
Thursday, March 14, 13
TYPESAFE/PRECOG
Thursday, March 14, 13
Modules are abstract
Thursday, March 14, 13
typesafe: self-types for dependencies
Thursday, March 14, 13
Precog: Instead of import, extends or with
Thursday, March 14, 13
SOUNDCLOUDAPPS
Thursday, March 14, 13
ACTUALLY, HOW ARE WE BUILDING APPS?
Thursday, March 14, 13
Legacy Application(Rails)
Database
internet
Thursday, March 14, 13
Stats
MessagingRecommenderSettingsNotifications
Sounds Users Stream
API
internet
Thursday, March 14, 13
SOUNDCLOUDAPPS
Thursday, March 14, 13
A LOT LIKETYPESAFE’S
Thursday, March 14, 13
Controllers define dependency on components
Thursday, March 14, 13
Components are abstract
Thursday, March 14, 13
One flat instance
Thursday, March 14, 13
I was pretty sure I was doing it wrong.
Thursday, March 14, 13
I am pretty sure I’m still doing it wrong.
Thursday, March 14, 13
I am pretty sure I’m still doing it wrong.
what do you use?
Thursday, March 14, 13
• http://bit.ly/pcalcado-goto• http://bit.ly/effective-scala-Dependency-injection• http://bit.ly/Bakery-from-the-Black-Lagoon• http://bit.ly/Martin-Odersky-Reflection-and-Compilers
REFERENCES
Thursday, March 14, 13
phil calçado
http://philcalcado.com@pcalcado
www.soundcloud.com
Thursday, March 14, 13