SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
Functional Programming
     101 in Groovy



            Evgeny Goldin
  DevCon Tel-Aviv, February 14, 2013
Evgeny Goldin


Java developer since 2000
FP enthusiast: Scheme, Perl, Groovy, Scala
GroovyMag, Gr8Conf
SCM at Trademob
github.com/evgeny-goldin/
@evgeny_goldin
Are you FP-er?
http://thecoolnessfactor.com/2013/01/winds-change/changes-ahead-exit-sign/
In this session

     Why FP?
 FP building blocks
   FP in Groovy
   FP candidates
In this session


Mindset switch
Why FP?
Because shit happens
.. or do we make it happen?
Average code is complex
                     Side-effects go wild
             Logical steps are interleaved
                 Changes are error-prone




http://www.guardian.co.uk/sustainable-business/research-confirms-health-impacts-tire
Average state is fragile and shared
 Exposed for updates in any way
Can easily mutate under your feet
       Changes are error-prone




  http://www.bbcgoodfood.com/content/knowhow/glossary/egg/
Parallelism is hard
              “The Multicore Revolution”
       Threads + shared mutable state :(
                Changes are error-prone




http://www.russel.org.uk/Presentations/euroPython2010_theMulticoreRevolution.pdf
       http://jalopnik.com/5965581/this-is-how-not-to-parallel-park-on-a-hill
Changes are error-prone
http://lenta.ru/sitemap.xml



https://bitbucket.org/evgenyg/devcon-2013/src/master/sitemap-imperative.groovy
https://bitbucket.org/evgenyg/devcon-2013/src/master/sitemap-functional.groovy
Modularity
Break the flow into distinct steps
  Do one thing and do it well
Flexibility
Shuffle your steps
Testability
Ensure correctness of your steps
Parallelism
Scale your steps!
FP building blocks
(only a subset this time)
Recursion
               List = head() + tail()
  State is hidden, built up on stack
              Recursion elimination
https://bitbucket.org/evgenyg/devcon-2013/src/master/recursion.groovy
Immutable State
Moving parts are minimized
   No defensive copying
   Caching, Parallelism
Immutable State
      New state = f ( old state )
Changes are isolated, constructor only
   g ( i + 1 ), g ( list + ‘element’ )
Immutable State
 Persistent data structures
      Updated in place
Yields a new immutable state
Git




http://git-scm.com/book/en/Git-Branching-What-a-Branch-Is
First-class functions
          Anonymous functions
         Higher-order functions
Command/Template/Visitor => “Free Willy”
No side-effects
 sin, cos, max, min, sum, sort
Opens doors for optimizations
     Caching, Parallelism
Mindset switch
        Imperative => Functional
          Variables => Values
            Classes => Functions
Explicit instructions => Declarative definitions
       How (Steps) => What (Result)
Mindset switch
Pointers, memory allocations, GC - check
           State management
               Iterations
      Filtering, conversion, folding
               Parallelism
FP in Groovy
Gradual
                                        conversion



http://www.buysgmath.com/p/200/eph-gradually-difficulty-mathematics-1/
final j = 5
@Immutable
Anonymous Functions
     a.k.a. Closures
Filter - findAll()
                                        Map - collect()
                                        Fold - inject()

     https://bitbucket.org/evgenyg/devcon-2013/src/master/functions.groovy


http://www.barlifeuk.com/index.php/2012/08/enter-the-janneau-armagnac-three-
                        musketeers-inspired-competition/
find()
     any()
    every()
    each()
eachWithIndex()
  takeWhile()
  dropWhile()
Collection
     Range
      Map
     Array
     String
       ...
Object.iterator()
Categories, Meta, Extensions
public	
  static	
  <T>	
  Collection<T>	
  findAll(Collection<T>	
  self,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Closure	
  filter)	
  

public	
  static	
  <T>	
  List<T>	
  collect(Collection<?>	
  self,
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Closure<T>	
  transform)

public	
  static	
  T	
  inject(Collection<T>	
  self,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Closure<V>	
  closure)

public	
  static	
  <T>	
  T	
  	
  	
  	
  	
  	
  	
  head(List<T>	
  self)


public	
  static	
  <T>	
  List<T>	
  tail(List<T>	
  self)

...

                                 org.codehaus.groovy.runtime.DefaultGroovyMethods
Memoization
                       a.k.a. Caching
https://bitbucket.org/evgenyg/devcon-2013/src/master/memoization.groovy
Trampoline
Recursion => Loop (no stack overflow)
https://bitbucket.org/evgenyg/devcon-2013/src/master/trampoline.groovy
GPars!
                  Data Parallelism
https://bitbucket.org/evgenyg/devcon-2013/src/master/gpars.groovy
eachParallel()
collectParallel()
findAllParallel()
everyParallel()
 foldParallel()
 sumParallel()
  gmemoize()
FP Candidates
Loops => any / every




https://bitbucket.org/evgenyg/devcon-2013/src/master/loops.groovy
                http://en.hdyo.org/tee/questions
Split, filter, map, fold



 https://bitbucket.org/evgenyg/devcon-2013/src/master/map-reduce.groovy
https://bitbucket.org/evgenyg/devcon-2013/src/master/check-versions.groovy




       http://www.cityofwaterfalls.ca/hermitage_cascade.html
Open your eyes
pinboard.in/u:evgenyg/t:fp/

 Arturo Herrero - Functional Programming with Groovy

            Neal Ford - Functional Thinking

        Martin Odersky - FP Principles in Scala

             Erik Meijer - FP Fundamentals

MIT - Structure and Interpretation of Computer Programs

   University of Washington - Programming Languages

           Stanford - Programming Paradigms
Thank you!




 @evgeny_goldin
evgenyg@gmail.com

Más contenido relacionado

Destacado

Alimentazione americana e Mc donald' s Vittoria Tomas
Alimentazione americana e Mc donald' s Vittoria TomasAlimentazione americana e Mc donald' s Vittoria Tomas
Alimentazione americana e Mc donald' s Vittoria TomasAntonietta Palmieri
 
Power of Personal Branding for Brands - Pubcon 2015
Power of Personal Branding for Brands - Pubcon 2015Power of Personal Branding for Brands - Pubcon 2015
Power of Personal Branding for Brands - Pubcon 2015Mark Traphagen
 
Sharing data from clinical and medical research
Sharing data from clinical and medical researchSharing data from clinical and medical research
Sharing data from clinical and medical researchChristoph Steinbeck
 
Engage 2013 - Why Upgrade to v10 Tag
Engage 2013 - Why Upgrade to v10 TagEngage 2013 - Why Upgrade to v10 Tag
Engage 2013 - Why Upgrade to v10 TagWebtrends
 
Grafico diario del dax perfomance index para el 09 07-2012
Grafico diario del dax perfomance index para el 09 07-2012Grafico diario del dax perfomance index para el 09 07-2012
Grafico diario del dax perfomance index para el 09 07-2012Experiencia Trading
 
Tick Achieve - How To Get Stuff Done
Tick Achieve - How To Get Stuff DoneTick Achieve - How To Get Stuff Done
Tick Achieve - How To Get Stuff DoneKevin Duncan
 
獅子山下女同志
獅子山下女同志獅子山下女同志
獅子山下女同志lalacamp07
 
Система Постройком
Система ПостройкомСистема Постройком
Система Постройкомkulibin
 
Ready Player One - Week 2 Check-in
Ready Player One - Week 2 Check-inReady Player One - Week 2 Check-in
Ready Player One - Week 2 Check-incenter4edupunx
 
Guidelines to evaluate blended learning programs
Guidelines to evaluate blended learning programsGuidelines to evaluate blended learning programs
Guidelines to evaluate blended learning programsReasoningMind
 
Газоанализатор ООО НПП Импульс
Газоанализатор ООО НПП ИмпульсГазоанализатор ООО НПП Импульс
Газоанализатор ООО НПП Импульсkulibin
 

Destacado (19)

Alimentazione americana e Mc donald' s Vittoria Tomas
Alimentazione americana e Mc donald' s Vittoria TomasAlimentazione americana e Mc donald' s Vittoria Tomas
Alimentazione americana e Mc donald' s Vittoria Tomas
 
Alat ukur
Alat ukurAlat ukur
Alat ukur
 
Power of Personal Branding for Brands - Pubcon 2015
Power of Personal Branding for Brands - Pubcon 2015Power of Personal Branding for Brands - Pubcon 2015
Power of Personal Branding for Brands - Pubcon 2015
 
LinkedIn Endorsements
LinkedIn EndorsementsLinkedIn Endorsements
LinkedIn Endorsements
 
Sharing data from clinical and medical research
Sharing data from clinical and medical researchSharing data from clinical and medical research
Sharing data from clinical and medical research
 
Engage 2013 - Why Upgrade to v10 Tag
Engage 2013 - Why Upgrade to v10 TagEngage 2013 - Why Upgrade to v10 Tag
Engage 2013 - Why Upgrade to v10 Tag
 
Grafico diario del dax perfomance index para el 09 07-2012
Grafico diario del dax perfomance index para el 09 07-2012Grafico diario del dax perfomance index para el 09 07-2012
Grafico diario del dax perfomance index para el 09 07-2012
 
Brochure about Stanford Corporate Governance Research Initiative
Brochure about Stanford Corporate Governance Research InitiativeBrochure about Stanford Corporate Governance Research Initiative
Brochure about Stanford Corporate Governance Research Initiative
 
Tick Achieve - How To Get Stuff Done
Tick Achieve - How To Get Stuff DoneTick Achieve - How To Get Stuff Done
Tick Achieve - How To Get Stuff Done
 
2.7 mbonfim
2.7 mbonfim2.7 mbonfim
2.7 mbonfim
 
獅子山下女同志
獅子山下女同志獅子山下女同志
獅子山下女同志
 
Система Постройком
Система ПостройкомСистема Постройком
Система Постройком
 
Artikel FI
Artikel FIArtikel FI
Artikel FI
 
Ready Player One - Week 2 Check-in
Ready Player One - Week 2 Check-inReady Player One - Week 2 Check-in
Ready Player One - Week 2 Check-in
 
1. cronograma 2014
1. cronograma 20141. cronograma 2014
1. cronograma 2014
 
Guidelines to evaluate blended learning programs
Guidelines to evaluate blended learning programsGuidelines to evaluate blended learning programs
Guidelines to evaluate blended learning programs
 
Blender
BlenderBlender
Blender
 
Газоанализатор ООО НПП Импульс
Газоанализатор ООО НПП ИмпульсГазоанализатор ООО НПП Импульс
Газоанализатор ООО НПП Импульс
 
「旅のことば」について
「旅のことば」について「旅のことば」について
「旅のことば」について
 

Similar a Functional Programming in Groovy

The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5Wim Godden
 
Building resilient services in go
Building resilient services in goBuilding resilient services in go
Building resilient services in goJaehue Jang
 
The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5Wim Godden
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVMSylvain Wallez
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third PluginJustin Ryan
 
PHP Performance Trivia
PHP Performance TriviaPHP Performance Trivia
PHP Performance TriviaNikita Popov
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Paul King
 
Groovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applicationsGroovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applicationsIndicThreads
 
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...Guillaume Laforge
 
Groovy And Grails Introduction
Groovy And Grails IntroductionGroovy And Grails Introduction
Groovy And Grails IntroductionEric Weimer
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6Wim Godden
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmsom_nangia
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpmwilburlo
 
jQuery Internals + Cool Stuff
jQuery Internals + Cool StuffjQuery Internals + Cool Stuff
jQuery Internals + Cool Stuffjeresig
 
Advanced Topics in Continuous Deployment
Advanced Topics in Continuous DeploymentAdvanced Topics in Continuous Deployment
Advanced Topics in Continuous DeploymentMike Brittain
 

Similar a Functional Programming in Groovy (20)

What's New in Groovy 1.6?
What's New in Groovy 1.6?What's New in Groovy 1.6?
What's New in Groovy 1.6?
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5
 
Swt J Face 3/3
Swt J Face 3/3Swt J Face 3/3
Swt J Face 3/3
 
Groovy Maven Builds
Groovy Maven BuildsGroovy Maven Builds
Groovy Maven Builds
 
Building resilient services in go
Building resilient services in goBuilding resilient services in go
Building resilient services in go
 
The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third Plugin
 
PHP Performance Trivia
PHP Performance TriviaPHP Performance Trivia
PHP Performance Trivia
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 
Groovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applicationsGroovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applications
 
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
 
Groovy And Grails Introduction
Groovy And Grails IntroductionGroovy And Grails Introduction
Groovy And Grails Introduction
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
 
Psgi Plack Sfpm
Psgi Plack SfpmPsgi Plack Sfpm
Psgi Plack Sfpm
 
jQuery Internals + Cool Stuff
jQuery Internals + Cool StuffjQuery Internals + Cool Stuff
jQuery Internals + Cool Stuff
 
groovy & grails - lecture 7
groovy & grails - lecture 7groovy & grails - lecture 7
groovy & grails - lecture 7
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
Advanced Topics in Continuous Deployment
Advanced Topics in Continuous DeploymentAdvanced Topics in Continuous Deployment
Advanced Topics in Continuous Deployment
 

Más de Evgeny Goldin

Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayEvgeny Goldin
 
Node.js meets jenkins
Node.js meets jenkinsNode.js meets jenkins
Node.js meets jenkinsEvgeny Goldin
 
Spock Extensions Anatomy
Spock Extensions AnatomySpock Extensions Anatomy
Spock Extensions AnatomyEvgeny Goldin
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about GradleEvgeny Goldin
 
Start Writing Groovy
Start Writing GroovyStart Writing Groovy
Start Writing GroovyEvgeny Goldin
 

Más de Evgeny Goldin (8)

Alexa skills
Alexa skillsAlexa skills
Alexa skills
 
Polyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and PlayPolyglot Gradle with Node.js and Play
Polyglot Gradle with Node.js and Play
 
Node.js meets jenkins
Node.js meets jenkinsNode.js meets jenkins
Node.js meets jenkins
 
Release It!
Release It!Release It!
Release It!
 
Spock Extensions Anatomy
Spock Extensions AnatomySpock Extensions Anatomy
Spock Extensions Anatomy
 
10 Cool Facts about Gradle
10 Cool Facts about Gradle10 Cool Facts about Gradle
10 Cool Facts about Gradle
 
Start Writing Groovy
Start Writing GroovyStart Writing Groovy
Start Writing Groovy
 
Maven Plugins
Maven PluginsMaven Plugins
Maven Plugins
 

Último

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
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
 
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
 
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
 
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
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
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
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Último (20)

Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
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
 
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
 
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
 
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
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
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
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

Functional Programming in Groovy