SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
Lambdas:
Myths and
Mistakes
by Richard Warburton
the critical design tool for software
development is a mind well educated in
design principles. It is not ... technology.
Craig Larman
Who am I?
Currently work at jClarity
Focus on Performance Tuning
Adopt a JSR (Date and Time + Lambdas)
Impending O'Reilly book on Lambda
Expressions in Java 8.
Talk Structure
Why am I talking about this?
Intro to Lambda Expressions
Beyond the Myths
Functional Thinking
Why am I
talking about
this?
Lambda Expressions are
coming in Java 8!
lots of discussion/debate
How can we help?
Adopt-a-JSR
Adopt-a-JSR?
More community driven standards
Hackdays
Serve on Expert Groups
Some discussion
unimportant
Concrete Examples focus discussion
Intro to
Lambda
Expressions
Overview of Lambdas
Goal: Better Libraries
Example: Collections with Data
Parallelism
Approach: Allow Code as Data
Action Listener
bto.dAtoLsee(e AtoLsee( {
utnadcinitnrnw cinitnr)
pbi vi atoPromdAtoEeteet {
ulc od cinefre(cinvn vn)
Sse.u.rnl(bto cikd)
ytmotpitn"utn lce";
}
};
)
Code as Data
bto.dAtoLsee(
utnadcinitnr
?
)
;
Need a parameter
bto.dAtoLsee(vn
utnadcinitnreet
)
;
Lambda Example
bto.dAtoLsee(vn utnadcinitnreet >
Sse.u.rnl(bto cikd)
ytmotpitn"utn lce"
)
;
No parameters
Rnal hlool =
unbe elWrd
( - Sse.u.rnl(HloWrd)
) > ytmotpitn"el ol";
Variable Capture
Srn nm =gtsrae)
tig ae
eUeNm(;
bto.dAtoLsee(vn utnadcinitnreet >
Sse.u.rnl(h "+nm)
ytmotpitn"i
ae
)
;
Functional Interfaces
Everything in Java has a type
Problem: Need types to represent
Functions
Solution: Use interfaces
Functional Interfaces
pbi itraeAtoLsee etnsEetitnr{
ulc nefc cinitnr xed vnLsee
pbi vi atoPromdAtoEeteet;
ulc od cinefre(cinvn vn)
}
Streams
Support automated data parallelism
Build computation pipelines
Iterator with inversion of control
External Iteration
itcut=0
n on
;
fr(ritats :atss {
o Ats rit
rit)
i (ritiFo(Lno"){
f ats.srm"odn)
cut+
on+;
}
}
Internal Iteration
atsssra(
rit.tem)
.itrats - ats.srm"odn)
fle(rit > ritiFo(Lno")
.on(;
cut)
map
map
Ls<tig cletd=Sra.f"" "" "el"
itSrn> olce
temo(a, b, hlo)
.a(tig- srn.opeCs()
mpsrn > tigtUprae)
.olc(oit);
clettLs()
asrEul(sit"" "" "EL",cletd;
setqasaLs(A, B, HLO) olce)
reduce
reduce
itsm=Sra.f1 2 3 4
n u
temo(, , , )
.eue0 (c,x - ac+x;
rdc(, ac ) > c
)
asrEul(0 sm;
setqas1, u)
filter
filter
Ls<tig bgnigihubr =
itSrn> einnWtNmes
Sra.f"" "ac,"b1)
temo(a, 1b" ac"
.itrvle- iDgtvlecaA())
fle(au > sii(au.hrt0)
.olc(oit);
clettLs()
asrEul(sit"ac) bgnigihubr)
setqasaLs(1b", einnWtNmes;
Putting it all together
for a given an album, find the nationality of every band
playing on that album
Putting it all together (2)
1. transform an album into its artists
2. figure out which artists are bands
3. find the nationalities of each band
Putting it all together (3)
Ls<tig oiis=
itSrn> rgn
abmgtuiin(
lu.eMscas)
.itrats - ats.eNm(.trsih"h")
fle(rit > ritgtae)satWt(Te)
.a(rit- ats.eNtoaiy)
mpats > ritgtainlt()
.olc(oit);
clettLs()
Method References
sr- srlnt
t > t.egh
Srn:lnt
tig:egh
x- fobrx
> o.a()
fo:a
o:br
sr- nwNm(t)
t > e aesr
Nm:nw
ae:e
Beyond the
Myths
Claim: Syntax is the most
important thing about
Lambda Expressions
Yeah, I liked the # syntax proposal better,
too. One less character to type! :)
Have you considered 'default null'? It will
save a keyword
How about a single punctuation mark,
currently unused, as syntax sugar for "()>".
(_, _) -> _ + _
This is starting to look like risque ASCII art
:)
Its a Myth!
Claim: Syntax is irrelevant
/ Oiial ivld
/ rgnly nai
Sra.f1 2 3
temo(, , )
.oEc( - Sse.u.rnl();
frahx > ytmotpitnx)
/ Rqie eta;
/ eurd xr
Sra.f1 2 3
temo(, , )
.oEc( - Sse.u.rnl())
frahx > ytmotpitnx;;
Difference between
expectations
Many language features stolen! adapted
Missing Features
Stronger Type System
Tuples
List construction syntax
Framing Effect
Different reactions depending on whether something is
presented as a loss or a gain.
Recall our earlier example
Ls<tig oiis=
itSrn> rgn
abmgtuiin(
lu.eMscas)
.itrats - ats.eNm(.trsih"h")
fle(rit > ritgtae)satWt(Te)
.a(rit- ats.eNtoaiy)
mpats > ritgtainlt()
.olc(oit);
clettLs()
Eager vs Lazy (2)
abmgtuiin(
lu.eMscas)
.itrats - ats.eNm(.trsih"h")
fle(rit > ritgtae)satWt(Te)
.a(rit- ats.eNtoaiy)
mpats > ritgtainlt()
/ Wa' hpee?
/ hts apnd
.olc(oit);
clettLs()
Very little Testing
Maybe ...

a reflection on popularity of TDD
spikes are good for learning
unfamiliarity with testing lambdas
How do I test this?
ls.tem)
itsra(
.a( - 10/Mt.el1+Mt.o()+Mt.tn(,x)
mpx > .
ahci(
ahpwx
ahaa2y ))
.olc(oit);
clettLs()
Approach 1: Test
surrounding method
Don't test the lambda
Test the method its surrounded by
Works well for simple lambdas
Approach 2: Extract
Method
dul cmlxucindul x {
obe opeFnto(obe )
rtr 10/Mt.el1+Mt.o()+Mt.tn(,x)
eun .
ahci(
ahpwx
ahaa20 );
}
ls.tem)
itsra(
.a(hs:opeFnto)
mpti:cmlxucin
.olc(oit);
clettLs()
Mistake: debugging
/ Sras
/ tem
ls.tem)
itsra(
.itrfleigucin
fle(itrnFnto)
.a(apnFnto)
mpmpigucin
.olc(oit);
clettLs()
/ Y od frlo
/ e le o op
Ls<a>br =nwAryit>)
itBr as
e raLs<(;
fr(o eeet:ls){
o Fo lmn
it
i (itrnFnto(lmn){
f fleigucineeet
Brrsl =mpigucineeet;
a eut
apnFnto(lmn)
br.d(eut;
asadrsl)
}
}
peek
ls.tem)
itsra(
.itrfleigucin
fle(itrnFnto)
.eke- Sse.u.rnl(Flee vle "+e)
pe( > ytmotpitn"itrd au:
);
.a(apnFnto)
mpmpigucin
.a( - e;
mpe > )
.olc(oit);
clettLs()
Compiler Error Messages
Comparators
Cmaao<tig cmaao =cmaigSrn:lnt)
oprtrSrn> oprtr
oprn(tig:egh;
Cmaao<tig cmaao =cmaigsr- srlnt)
oprtrSrn> oprtr
oprn(t > t.egh;
Compiler Error
jv:rfrnet cmaigi abgosbt
aa eeec o oprn s miuu oh
mto
ehd
<>oprn(aaui.ucinTItucin ?sprT)
Tcmaigjv.tlfnto.onFnto<
ue >
i jv.tlCmaao admto
n aaui.oprtr n ehd
<,>oprn(aaui.ucinFnto<?sprT?etnsU)
TUcmaigjv.tlfnto.ucin
ue , xed >
i jv.tlCmaao mth
n aaui.oprtr ac
What happened?
/ Gnrcojc vrat
/ eei bet ain
pbi sai <,UetnsCmaal<?sprU>
ulc ttc T
xed oprbe
ue >
Cmaao<>
oprtrT
cmaigFnto<?sprT ?etnsU kyxrco)
oprn(ucin
ue ,
xed > eEtatr
/ Seilsdpiiievrat
/ pcaie rmtv ain
pbi sai <>
ulc ttc T
Cmaao<>
oprtrT
cmaigTItucin ?sprT kyxrco)
oprn(onFnto<
ue > eEtatr
Summary
Syntax important, but not in the way
people think
New approaches for debugging and
testing
Take care of overloads and compiler
error messages
Functional
Thinking
Functional
Thinking?

Thinking in terms of the input to output relationship and
not a sequence of steps
First code that people
write
Ls<nee>nmes=Ary.sit1 2 3;
itItgr ubr
rasaLs(, , )
nmesfrahx- {
ubr.oEc( >
Sse.u.rnl()
ytmotpitnx;
};
)
Non-idiomatic Proposals
Eg: capture non-final local variables
Example Problem
Count the number of instances of each word in a
document.
Ideal Solution
rae.ie(
edrlns)
.lta( - ssltstem"")
faMps > .piASra( )
.olc(ruigys- s
cletgopnB( > ,
cutn();
onig))
Ideal Solution (then)
rae.ie(
edrlns)
.lta( - Sra.fsslt"")
faMps > temo(.pi( ))
.olc(ruigys- s
cletgopnB( > ,
rdcn( - 1 Itgr:u))
euigs > , nee:sm);
/ Mpetisfr"a"
/ a nre o dd
/ ["a" "a" "a"]= [,1 1 = 3
/
dd, dd, dd
> 1 , ] >
Bad Solution (Part 1)
MpSrn,Ls<tig>iiil
a<tig itSrn> nta
=b.ie(
rlns)
.lta( - Ary.temsslt"")
faMps > rassra(.pi( ))
.olc(ruigys- s)
cletgopnB( > );
MpMpEtySrn,Itgr,Itgr fe1=iiil
a<a.nr<tig nee> nee> rq
nta
.nrSt)sra(
etye(.tem)
.a(nr - nwAsrcMpSmlImtbenr<tig
mpety > e btata.ipemualEtySrn,
Itgr(nr.eKy) etygtau(.ie))
nee>etygte(, nr.eVle)sz()
.olc(olcostMpety- etygtau();
cletCletr.oa(nr > nr.eVle))
Bad Solution (Part 2)
Sple<aha<tig Itgr>sple =( - nw
upirHsMpSrn, nee> upir
) > e
HsMpSrn,Itgr(;
aha<tig nee>)
BCnue<aha<tig Itgr,MpEtySrn,Itgr>acm=
iosmrHsMpSrn, nee> a.nr<tig nee> cu
(aha<tig Itgr rsl,MpEtySrn,Itgr
HsMpSrn, nee> eut a.nr<tig nee>
ety - rsl.u(nr.eKy) etygtau()
nr) > eutptetygte(, nr.eVle);
BCnue<aha<tig Itgr,HsMpSrn,Itgr>
iosmrHsMpSrn, nee> aha<tig nee>
mre =HsMp:uAl
egr
aha:ptl;
MpSrn,Itgr fe2=iiiletye(.tem)
a<tig nee> rq
nta.nrSt)sra(
.a(nr - nwAsrcMpSmlImtbenr<tig
mpety > e btata.ipemualEtySrn,
Itgr(nr.eKy) etygtau(.ie))
nee>etygte(, nr.eVle)sz()
.olc(upir acm mre)
cletsple, cu, egr;
This takes thought
Summary
Idioms are vital
Not Java specific at all
Requires Practise
Conclusions
Gone through a bunch of examples of
specific issues
‘Functional Thinking’: Not necessary to
start learning.
Try before you buy
Questions?
@RichardWarburto
http://jclarity.com
http://insightfullogic.com
https://github.com/RichardWarburton/

Weitere ähnliche Inhalte

Andere mochten auch

ACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming LanguageACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming LanguagePeter Pilgrim
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictabilityRichardWarburton
 
Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)RichardWarburton
 
Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)RichardWarburton
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingRichardWarburton
 
Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...
Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...
Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...Jacek Laskowski
 
Jvm profiling under the hood
Jvm profiling under the hoodJvm profiling under the hood
Jvm profiling under the hoodRichardWarburton
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakensRichardWarburton
 
Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)RichardWarburton
 
Introduction to Functional Programming in Scala
Introduction to Functional Programming in ScalaIntroduction to Functional Programming in Scala
Introduction to Functional Programming in ScalaJacek Laskowski
 
Unit Test + Functional Programming = Love
Unit Test + Functional Programming = LoveUnit Test + Functional Programming = Love
Unit Test + Functional Programming = LoveAlvaro Videla
 
Introduction to Functional Programming with Scala
Introduction to Functional Programming with ScalaIntroduction to Functional Programming with Scala
Introduction to Functional Programming with Scalapramode_ce
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Scott Wlaschin
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Lemi Orhan Ergin
 
The Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and FriendsThe Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and FriendsStacy Kvernmo
 

Andere mochten auch (19)

ACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming LanguageACCU 2011 Introduction to Scala: An Object Functional Programming Language
ACCU 2011 Introduction to Scala: An Object Functional Programming Language
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictability
 
Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)
 
Devoxx uk lambdas hackday
Devoxx uk lambdas hackdayDevoxx uk lambdas hackday
Devoxx uk lambdas hackday
 
Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)Generics Past, Present and Future (Latest)
Generics Past, Present and Future (Latest)
 
Twins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional ProgrammingTwins: Object Oriented Programming and Functional Programming
Twins: Object Oriented Programming and Functional Programming
 
Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...
Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...
Developing modular applications with Java EE 6 and Enterprise OSGi + WebSpher...
 
The Bleeding Edge
The Bleeding EdgeThe Bleeding Edge
The Bleeding Edge
 
Jvm profiling under the hood
Jvm profiling under the hoodJvm profiling under the hood
Jvm profiling under the hood
 
Caching in
Caching inCaching in
Caching in
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakens
 
Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)Pragmatic functional refactoring with java 8 (1)
Pragmatic functional refactoring with java 8 (1)
 
Introduction to Functional Programming in Scala
Introduction to Functional Programming in ScalaIntroduction to Functional Programming in Scala
Introduction to Functional Programming in Scala
 
Unit Test + Functional Programming = Love
Unit Test + Functional Programming = LoveUnit Test + Functional Programming = Love
Unit Test + Functional Programming = Love
 
Compiler Chapter 1
Compiler Chapter 1Compiler Chapter 1
Compiler Chapter 1
 
Introduction to Functional Programming with Scala
Introduction to Functional Programming with ScalaIntroduction to Functional Programming with Scala
Introduction to Functional Programming with Scala
 
Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)Functional Programming Patterns (BuildStuff '14)
Functional Programming Patterns (BuildStuff '14)
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 
The Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and FriendsThe Great State of Design with CSS Grid Layout and Friends
The Great State of Design with CSS Grid Layout and Friends
 

Ähnlich wie Lambdas myths-and-mistakes

Lambdas: Myths and Mistakes
Lambdas: Myths and MistakesLambdas: Myths and Mistakes
Lambdas: Myths and MistakesRichardWarburton
 
nescala 2013
nescala 2013nescala 2013
nescala 2013Hung Lin
 
Java 8 - project lambda
Java 8 - project lambdaJava 8 - project lambda
Java 8 - project lambdaIvar Østhus
 
Clojurescript up and running
Clojurescript up and runningClojurescript up and running
Clojurescript up and runningTimo Sulg
 
Beginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleBeginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleAri Lerner
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to AlgorithmsVenkatesh Iyer
 
SQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail Science
SQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail ScienceSQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail Science
SQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail ScienceUniversity of Washington
 
Data oriented design and c++
Data oriented design and c++Data oriented design and c++
Data oriented design and c++Mike Acton
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandrarantav
 
The Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldThe Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldKonrad Malawski
 
basic knowledge abot html
basic knowledge abot htmlbasic knowledge abot html
basic knowledge abot htmlAnkit Dubey
 
Patterns for organic architecture codedive
Patterns for organic architecture codedivePatterns for organic architecture codedive
Patterns for organic architecture codedivemagda3695
 
Testing Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamTesting Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamHenryk Konsek
 
Learn Frontend Testing
Learn Frontend TestingLearn Frontend Testing
Learn Frontend TestingRyan Roemer
 
Monitoring your Python with Prometheus (Python Ireland April 2015)
Monitoring your Python with Prometheus (Python Ireland April 2015)Monitoring your Python with Prometheus (Python Ireland April 2015)
Monitoring your Python with Prometheus (Python Ireland April 2015)Brian Brazil
 
Architecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko GargentaArchitecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko Gargentajaxconf
 
An Introduction to CSS Preprocessors
An Introduction to CSS PreprocessorsAn Introduction to CSS Preprocessors
An Introduction to CSS PreprocessorsMiloš Sutanovac
 
JavaScript Design Patterns
JavaScript Design PatternsJavaScript Design Patterns
JavaScript Design PatternsDerek Brown
 

Ähnlich wie Lambdas myths-and-mistakes (20)

Lambdas: Myths and Mistakes
Lambdas: Myths and MistakesLambdas: Myths and Mistakes
Lambdas: Myths and Mistakes
 
nescala 2013
nescala 2013nescala 2013
nescala 2013
 
JavaFX, because you're worth it
JavaFX, because you're worth itJavaFX, because you're worth it
JavaFX, because you're worth it
 
Java 8 - project lambda
Java 8 - project lambdaJava 8 - project lambda
Java 8 - project lambda
 
Clojurescript up and running
Clojurescript up and runningClojurescript up and running
Clojurescript up and running
 
Beginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at GoogleBeginner workshop to angularjs presentation at Google
Beginner workshop to angularjs presentation at Google
 
Introduction to Algorithms
Introduction to AlgorithmsIntroduction to Algorithms
Introduction to Algorithms
 
SQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail Science
SQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail ScienceSQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail Science
SQL is Dead; Long Live SQL: Lightweight Query Services for Long Tail Science
 
Hazelcast - In-Memory DataGrid
Hazelcast - In-Memory DataGridHazelcast - In-Memory DataGrid
Hazelcast - In-Memory DataGrid
 
Data oriented design and c++
Data oriented design and c++Data oriented design and c++
Data oriented design and c++
 
NOSQL and Cassandra
NOSQL and CassandraNOSQL and Cassandra
NOSQL and Cassandra
 
The Need for Async @ ScalaWorld
The Need for Async @ ScalaWorldThe Need for Async @ ScalaWorld
The Need for Async @ ScalaWorld
 
basic knowledge abot html
basic knowledge abot htmlbasic knowledge abot html
basic knowledge abot html
 
Patterns for organic architecture codedive
Patterns for organic architecture codedivePatterns for organic architecture codedive
Patterns for organic architecture codedive
 
Testing Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax ExamTesting Fuse Fabric with Pax Exam
Testing Fuse Fabric with Pax Exam
 
Learn Frontend Testing
Learn Frontend TestingLearn Frontend Testing
Learn Frontend Testing
 
Monitoring your Python with Prometheus (Python Ireland April 2015)
Monitoring your Python with Prometheus (Python Ireland April 2015)Monitoring your Python with Prometheus (Python Ireland April 2015)
Monitoring your Python with Prometheus (Python Ireland April 2015)
 
Architecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko GargentaArchitecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko Gargenta
 
An Introduction to CSS Preprocessors
An Introduction to CSS PreprocessorsAn Introduction to CSS Preprocessors
An Introduction to CSS Preprocessors
 
JavaScript Design Patterns
JavaScript Design PatternsJavaScript Design Patterns
JavaScript Design Patterns
 

Mehr von RichardWarburton

Fantastic performance and where to find it
Fantastic performance and where to find itFantastic performance and where to find it
Fantastic performance and where to find itRichardWarburton
 
Production profiling what, why and how technical audience (3)
Production profiling  what, why and how   technical audience (3)Production profiling  what, why and how   technical audience (3)
Production profiling what, why and how technical audience (3)RichardWarburton
 
Production profiling: What, Why and How
Production profiling: What, Why and HowProduction profiling: What, Why and How
Production profiling: What, Why and HowRichardWarburton
 
Production profiling what, why and how (JBCN Edition)
Production profiling  what, why and how (JBCN Edition)Production profiling  what, why and how (JBCN Edition)
Production profiling what, why and how (JBCN Edition)RichardWarburton
 
Production Profiling: What, Why and How
Production Profiling: What, Why and HowProduction Profiling: What, Why and How
Production Profiling: What, Why and HowRichardWarburton
 
Generics past, present and future
Generics  past, present and futureGenerics  past, present and future
Generics past, present and futureRichardWarburton
 
Generics Past, Present and Future
Generics Past, Present and FutureGenerics Past, Present and Future
Generics Past, Present and FutureRichardWarburton
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8RichardWarburton
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behaveRichardWarburton
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictabilityRichardWarburton
 
Simplifying java with lambdas (short)
Simplifying java with lambdas (short)Simplifying java with lambdas (short)
Simplifying java with lambdas (short)RichardWarburton
 
Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)RichardWarburton
 

Mehr von RichardWarburton (18)

Fantastic performance and where to find it
Fantastic performance and where to find itFantastic performance and where to find it
Fantastic performance and where to find it
 
Production profiling what, why and how technical audience (3)
Production profiling  what, why and how   technical audience (3)Production profiling  what, why and how   technical audience (3)
Production profiling what, why and how technical audience (3)
 
Production profiling: What, Why and How
Production profiling: What, Why and HowProduction profiling: What, Why and How
Production profiling: What, Why and How
 
Production profiling what, why and how (JBCN Edition)
Production profiling  what, why and how (JBCN Edition)Production profiling  what, why and how (JBCN Edition)
Production profiling what, why and how (JBCN Edition)
 
Production Profiling: What, Why and How
Production Profiling: What, Why and HowProduction Profiling: What, Why and How
Production Profiling: What, Why and How
 
Collections forceawakens
Collections forceawakensCollections forceawakens
Collections forceawakens
 
Generics past, present and future
Generics  past, present and futureGenerics  past, present and future
Generics past, present and future
 
How to run a hackday
How to run a hackdayHow to run a hackday
How to run a hackday
 
Generics Past, Present and Future
Generics Past, Present and FutureGenerics Past, Present and Future
Generics Past, Present and Future
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8
 
Introduction to lambda behave
Introduction to lambda behaveIntroduction to lambda behave
Introduction to lambda behave
 
Performance and predictability
Performance and predictabilityPerformance and predictability
Performance and predictability
 
Simplifying java with lambdas (short)
Simplifying java with lambdas (short)Simplifying java with lambdas (short)
Simplifying java with lambdas (short)
 
Twins: OOP and FP
Twins: OOP and FPTwins: OOP and FP
Twins: OOP and FP
 
Twins: OOP and FP
Twins: OOP and FPTwins: OOP and FP
Twins: OOP and FP
 
Better than a coin toss
Better than a coin tossBetter than a coin toss
Better than a coin toss
 
How to run a hackday
How to run a hackdayHow to run a hackday
How to run a hackday
 
Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)
 

Kürzlich hochgeladen

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Lambdas myths-and-mistakes