nescala 2013
Upcoming SlideShare
Loading in...5

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 (



Total Views
Views on SlideShare
Embed Views



2 Embeds 17 14 3



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

nescala 2013 nescala 2013 Presentation Transcript

  • NESCALA NOTES by Hung Lin @hunglin
  • 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
  • Function Patterns for the Asynchronous Webby Josh Suereth @ TypeSafe, author of Scala in Depth
  • The new WebAsynchronousEvent drivenData drivenBig dataSingle page designComposition of servicesUser experiences
  • Futureftr { uue / D smtm ltr / o oeie ae .. .}mp{rsl = a eut > / D smtigwt rsl / o oehn ih eut .. .}
  • 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}
  • 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]
  • The Essence of the Iterator PatternJeremy Gibbons and Bruno C. d. S. Oliveira @ Oxford University Computing Laboratory Monadic Map Applicative Functors Monadic Applicative Functors ...
  • Cake Patternby Daniel Spiewak, Code Commit
  • 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 .. . }}
  • 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 }
  • Package is just a namespace to avoid name collision. So, instead import, use extends/with Explicit dependencies
  • 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
  • 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
  • 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)) }
  • Advanced Stream Processing
  • Programming + Math
  • Finagle
  • scala.collection.approximate
  • Play! 2 Framework
  • Dependency management
  • Day 2: Unconference typeclass unapply ScalaTest and a lot more
  • precog8 people attendedgave 5 talks
  • Audax @ nescala 2014 more people attend give talks (Lift, ScalaTest, ...) projects @ unconference