structuring apps in scala

43
Thursday, March 14, 13

Upload: phil-calcado

Post on 16-May-2015

1.023 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Structuring apps in Scala

Thursday, March 14, 13

Page 2: Structuring apps in Scala

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

Page 3: Structuring apps in Scala

WHY BOTHER?

Thursday, March 14, 13

Page 4: Structuring apps in Scala

SOLVING INTERESTING PROBLEMS

Thursday, March 14, 13

Page 5: Structuring apps in Scala

SOLVING INTERESTING PROBLEMS

meh.

Thursday, March 14, 13

Page 6: Structuring apps in Scala

SOLVING BORING PROBLEMS IN A

INTERESTING WAY

Thursday, March 14, 13

Page 7: Structuring apps in Scala

SOLVING BORING PROBLEMS IN A

INTERESTING WAY

hell yeah!

Thursday, March 14, 13

Page 8: Structuring apps in Scala

SOUNDCLOUDDEVELOPER CHALLENGE’S

TEST SUITE

Thursday, March 14, 13

Page 9: Structuring apps in Scala

W(hy)TF?

Recruitment Challenge

Thursday, March 14, 13

Page 10: Structuring apps in Scala

Build me a file uploader

Old Challenge

Thursday, March 14, 13

Page 11: Structuring apps in Scala

Build me a file uploader

Old Challenge

Boring

Thursday, March 14, 13

Page 12: Structuring apps in Scala

Build me a file uploader

Old Challenge

BoringUse flash plugin

Thursday, March 14, 13

Page 13: Structuring apps in Scala

Build me a file uploader

Old Challenge

BoringUse flash pluginNot enough code

Thursday, March 14, 13

Page 14: Structuring apps in Scala

Given a series of events and a bunch of connected

clients, who should be notified of which events?

New Challenge

Thursday, March 14, 13

Page 15: Structuring apps in Scala

What I’m used to

Thursday, March 14, 13

Page 16: Structuring apps in Scala

What I’m used to

Thursday, March 14, 13

Page 17: Structuring apps in Scala

Combinators all the way down

Thursday, March 14, 13

Page 18: Structuring apps in Scala

a LOT of code

Thursday, March 14, 13

Page 19: Structuring apps in Scala

a LOT of wiring

Thursday, March 14, 13

Page 20: Structuring apps in Scala

not leveragingthe type system

Thursday, March 14, 13

Page 21: Structuring apps in Scala

I am pretty sure I’m doing it wrong.

Thursday, March 14, 13

Page 22: Structuring apps in Scala

TWITTER

Thursday, March 14, 13

Page 23: Structuring apps in Scala

Instance-Based Injection

Thursday, March 14, 13

Page 24: Structuring apps in Scala

Extremely thin, orthogonal, traits

Thursday, March 14, 13

Page 25: Structuring apps in Scala

Use method visibility

Thursday, March 14, 13

Page 26: Structuring apps in Scala

TYPESAFE/PRECOG

Thursday, March 14, 13

Page 27: Structuring apps in Scala

Modules are abstract

Thursday, March 14, 13

Page 28: Structuring apps in Scala

typesafe: self-types for dependencies

Thursday, March 14, 13

Page 29: Structuring apps in Scala

Precog: Instead of import, extends or with

Thursday, March 14, 13

Page 30: Structuring apps in Scala

SOUNDCLOUDAPPS

Thursday, March 14, 13

Page 31: Structuring apps in Scala

ACTUALLY, HOW ARE WE BUILDING APPS?

Thursday, March 14, 13

Page 32: Structuring apps in Scala

Legacy Application(Rails)

Database

internet

Thursday, March 14, 13

Page 33: Structuring apps in Scala

Stats

MessagingRecommenderSettingsNotifications

Sounds Users Stream

API

internet

Thursday, March 14, 13

Page 34: Structuring apps in Scala

SOUNDCLOUDAPPS

Thursday, March 14, 13

Page 35: Structuring apps in Scala

A LOT LIKETYPESAFE’S

Thursday, March 14, 13

Page 36: Structuring apps in Scala

Controllers define dependency on components

Thursday, March 14, 13

Page 37: Structuring apps in Scala

Components are abstract

Thursday, March 14, 13

Page 38: Structuring apps in Scala

One flat instance

Thursday, March 14, 13

Page 39: Structuring apps in Scala

I was pretty sure I was doing it wrong.

Thursday, March 14, 13

Page 40: Structuring apps in Scala

I am pretty sure I’m still doing it wrong.

Thursday, March 14, 13

Page 41: Structuring apps in Scala

I am pretty sure I’m still doing it wrong.

what do you use?

Thursday, March 14, 13

Page 43: Structuring apps in Scala

phil calçado

http://philcalcado.com@pcalcado

www.soundcloud.com

Thursday, March 14, 13