Your SlideShare is downloading. ×
  • Like
nescala 2013
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

nescala 2013


This is the tech talk I gave at my company (Audax Health) to share the things I learned at nescala 2013 (

This is the tech talk I gave at my company (Audax Health) to share the things I learned at nescala 2013 (

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. NESCALA NOTES by Hung Lin @hunglin
  • 2. nescala 20132 days event in PhiladelphiaDay 1: 17 talksSpeakers from typesafe, twitter, tumblr, ...Scala book authors: Bill Venners , Josh SuerethDay 2: unconference$50 entrance fee
  • 3. Function Patterns for the Asynchronous Webby Josh Suereth @ TypeSafe, author of Scala in Depth
  • 4. The new WebAsynchronousEvent drivenData drivenBig dataSingle page designComposition of servicesUser experiences
  • 5. Futureftr { uue / D smtm ltr / o oeie ae .. .}mp{rsl = a eut > / D smtigwt rsl / o oehn ih eut .. .}
  • 6. Monadic Flowdfrne(aa DRsl) Ftr[tl =ftr(tl..) e edrdt: beut: uueHm] uueHm(.)dfhnlRqet..:Ui ={ e adeeus(.) nt fr{ o dt < qey.. aa - ur(.) hm < rne(aa tl - edrdt) }yedwietlsce,hm) il rtHm(okt tl}
  • 7. Joinvlues Ftr[beut = a sr: uueDRsl] qey.. ur(.)vlpoet:Ftr[beut = a rjcs uueDRsl] qey.. ur(.)vldt:Ftr[DRsl,DRsl) = a aa uue(beut beut] (sr zppoet) ues i rjcsLs[uueDRsl] - Ftr[itDRsl] itFtr[beut] > uueLs[beut]
  • 8. The Essence of the Iterator PatternJeremy Gibbons and Bruno C. d. S. Oliveira @ Oxford University Computing Laboratory Monadic Map Applicative Functors Monadic Applicative Functors ...
  • 9. Cake Patternby Daniel Spiewak, Code Commit
  • 10. Not only for Dependency InjectiontatUeRpstrCmoet{ ri sreoioyopnn vlueRpstr:UeRpstr a sreoioy sreoioy casUeRpstr { ls sreoioy .. . }}tatUeSrieopnn { ri srevcCmoet ti:UeRpstrCmoet= hs sreoioyopnn > vlueSrie UeSrie a srevc: srevc casUeSrie{ ls srevc .. . }}
  • 11. Traits are modulestatUeMdl { ri sroue dflaUe(d Ln) Ue e odsri: og: sr}tatTetoue{ ri weMdl dfps(srd Ln,bd:Srn) e otueI: og oy tig}tatMSLsroueetnsUeMdl {..} ri yQUeMdl xed sroue .tatTitroueetnsTetouewt UeMdl {..} ri wteMdl xed weMdl ih sroue .vluies =nwMSLsroue a nvre e yQUeMdl wt Titroue{ ih wteMdl }
  • 12. Package is just a namespace to avoid name collision. So, instead import, use extends/with Explicit dependencies
  • 13. Interesting problem #1tatA{ ri vlfo Srn a o: tig}tatBetnsA{ ri xed vlbr=fo+"ol" a a o Wrd}casCetnsB{ ls xed vlfo="el" a o Hlo pitnbr rnl(a)} solution: use def or lazy val
  • 14. Interesting problem #2tatA{ ri ojc suf{ bet tf ojc Fo bet o ojc Br bet a ojc Bz bet a}}tatBetnsA{ ri xed ojc ma { bet or ojc Fo bet o ojc Bz bet a ojc Br bet a}} solution: use val
  • 15. abstract override tatTat { ri riA dfmto1l Ls[tig) Ls[tig e ehd(: itSrn]: itSrn] } tatTat etnsTat { ri riB xed riA oerd dfmto1l Ls[tig)=l: "riB vrie e ehd(: itSrn] + tat" } tatTat etnsTat { ri riC xed riA asrc oerd dfmto1l Ls[tig)=sprm btat vrie e ehd(: itSrn] ue.eto1l : "riC hd() + tat" } casCas { ls lsA ti:Tat = hs riA > dfso( {pitnmto1Ls(Cas") } e hw) rnl(ehd(it"lsA)) }
  • 16. Advanced Stream Processing
  • 17. Programming + Math
  • 18. Finagle
  • 19. scala.collection.approximate
  • 20. Play! 2 Framework
  • 21. Dependency management
  • 22. Day 2: Unconference typeclass unapply ScalaTest and a lot more
  • 23. precog8 people attendedgave 5 talks
  • 24. Audax @ nescala 2014 more people attend give talks (Lift, ScalaTest, ...) projects @ unconference