![Page 1: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/1.jpg)
USE PROMISES, FUTURES AND SOME FUNCTIONAL PROGRAMING STUFF WITHOUT BEING A MATH NERD.
@WAXZCE
TAKEOFF CONFERENCE
![Page 2: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/2.jpg)
CEO at www.clever-cloud.com
Polyglot developer
WHO AM I ?
@waxzce on twitter
![Page 3: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/3.jpg)
And learn a lot of things about your code, apps, and good/bad design…
KEEP YOUR APPS ONLINE. MADE WITH NODE.JS, SCALA, JAVA, RUBY, PHP, PYTHON, GO…
![Page 4: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/4.jpg)
I’M NOT A MATH NERD
![Page 5: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/5.jpg)
NODE.JS MAIN PROBLEM
![Page 6: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/6.jpg)
SO, TRY TO KEEP IT ALIVE AND MINIMIZE ERROR EXPOSURE
![Page 7: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/7.jpg)
ON THE OTHER HAND: THE CALLBACK SOUP
![Page 8: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/8.jpg)
EXAMPLE : DATABASE CONNECTION
![Page 9: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/9.jpg)
REALLY ? ALL DB INTERACTION IN ONE CALLBACK ?
![Page 10: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/10.jpg)
REALLY ? UNCATCHED EXCEPTIONS BUBBLE TO THE TOP AND KILL THE APP ?
![Page 11: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/11.jpg)
REALLY ? IF/ELSE/UNDEFINED ERROR TREATMENT ?
![Page 12: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/12.jpg)
DB DRIVER SHOULDN’T DRIVE YOUR CODE ARCHITECTURE, THEORICALLY
![Page 13: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/13.jpg)
SO, WE HAVE A PROBLEM : HOW TO USE A VALUE WE DON’T HAVE YET, AND USE IT IN THE FUTURE?
![Page 14: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/14.jpg)
CHANGE YOUR MINDHOW DO YOU INTERACT WITH DATA NOW?
• Wait for it• Possibly
blocking i/o
Get data from DB and/or
WS
• Act on it• Data
treatment
Data is here
![Page 15: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/15.jpg)
EXAMPLE
![Page 16: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/16.jpg)
YOU WANT TO RETURN SOMETHING !
![Page 17: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/17.jpg)
YOU MIX I/O HANDLING WITH YOUR BUSINESS PROCESSES
THE OTHER PROBLEM :
![Page 18: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/18.jpg)
SPLIT
Business process and
valued computing
I/O management and other
“computing stuff”
![Page 19: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/19.jpg)
CHANGE YOUR MINDHOW CAN WE DO IT?
• Give all the “recipes” about how to deal with this data
• You only describe how to manage data you get
Get data from DB and/or
WS
That’s all
![Page 20: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/20.jpg)
WORK ON FUTURE DATA YOU HAVE PROMISED TO YOUR CODE ;-)
![Page 21: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/21.jpg)
EXAMPLESIMPLE PROMISE MAP
![Page 22: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/22.jpg)
EXAMPLESIMPLE PROMISE MAP
![Page 23: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/23.jpg)
MORE IMPORTANT : YOU CAN RETURN A DATA YOU DON’T HAVE AT THE MOMENT
![Page 24: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/24.jpg)
NO MORE DEALING WITH BLOCKING I/O IN YOUR BUSINESS CODE
![Page 25: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/25.jpg)
DEALING WITH MULTIPLE FUTURE DATA
![Page 26: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/26.jpg)
And stop using boolean counter for event « ready »….
GET ALL YOU NEED TO WORK
![Page 27: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/27.jpg)
REAL WORLD EXAMPLE
![Page 28: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/28.jpg)
BUILT IN ERROR MANAGEMENT
![Page 29: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/29.jpg)
SIMPLE WAY : YOU CAN RETURN SOMETING :-)
![Page 30: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/30.jpg)
PROMISES WILL MANAGE TEMPORALITY PROBLEMS AND I/O IN A SIMPLE WAY
![Page 31: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/31.jpg)
NOT TOO COMPLICATED ?
![Page 32: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/32.jpg)
WE’VE JUST DEALT WITH FUNCTORS, MONADS, SEMIGROUPS… ALL OF THESE ALGEBRAIC STRUCTURES
![Page 33: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/33.jpg)
MATH WORDS, NOT SO COMPLICATED, JUST MADE TO SHARE CONCEPTS BETWEEN PEOPLE :-)
![Page 34: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/34.jpg)
FUNCTIONAL PROGRAMING IS NOT A LANGUAGE : IT’S THE ABILITY TO USE ALGEBRAIC STRUCTURES AND MATH TOOLS IN YOUR CODE
SO YOU CAN REUSE IT WHERE YOU WANT…
![Page 35: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/35.jpg)
Made by the awesome Brian McKenna - @puffnfresh
FUNCTIONAL JAVASCRIPT : FANTASY LAND SPECIFICATION
![Page 36: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/36.jpg)
Node.js + browser implementation, totally agnostic javascript,
Fantasy Land compatible + Promises/A+ compatible
made by Paul Mucur with help from Rodolphe Belouin
DEMO MADE WITH PACTA IMPLEMENTATION
![Page 37: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/37.jpg)
TRY IT YOU WILL
![Page 38: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/38.jpg)
BE A BADASS !
![Page 39: Use Promises, Futures and some functional programing stuff without being a math nerd](https://reader035.vdocuments.us/reader035/viewer/2022062702/554bb295b4c905b8618b5b51/html5/thumbnails/39.jpg)
I give you a www.clever-cloud.com gift : takeoff2014
I’m on twitter : @waxzce
THANK YOU !ANY QUESTIONS ?