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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

nescala 2013


Published on

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 (

  • 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