• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
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. Flow-Based Programming for Node.js
  • 2. http://bergie.iki.fihenri.bergius@iki.fi @bergie
  • 3. Call-Return
  • 4. Continuation-Passing Style
  • 5. JavaScript, the Ugly Parts
  • 6. Promises
  • 7. Hooks
  • 8. How to make your code manageable?
  • 9. Clean separation of concerns
  • 10. Visualized connections between components
  • 11. Flow-based programming“Flow-based programming (FBP) is a programmingparadigm that defines applications as networks of blackbox processes, which exchange data across predefinedconnections by message passing, where the connectionsare specified externally to the processes. These blackbox processes can be reconnected endlessly to formdifferent applications without having to be changedinternally. FBP is thus naturally component-oriented.” - Wikipedia
  • 12. Flow-based programming
  • 13. “Flow-Based Programming was invented byJohn Paul Morrison [from IBM] in the early1970s, and an early implementation of thistechnology has been in continuous productionuse at a major Canadian bank since that time.” - Wikipedia
  • 14. Softwarearcheology?
  • 15. “This is the Unix philosophy: Write programsthat do one thing and do it well. Writeprograms to work together. Write programsto handle text streams, because that is auniversal interface.” - Doug McIlroy
  • 16. “I thought of objects being like biologicalcells and/or individual computers on anetwork, only able to communicate withmessages (so messaging came at the verybeginning -- it took a while to see how to domessaging in a programming languageefficiently enough to be useful).” - Alan Kay
  • 17. send options a, u & x to command ps,send option firefox to command grep direct standard output of ps to grep
  • 18. NoFlo components
  • 19. Using NoFlo in your Node.js app
  • 20. Using NoFlo in your Node.js app
  • 21. DSL for specifying flows
  • 22. DSL for specifying flowssend string package.json to source port of Read send output of Read to Split (by lines) send output of Split to Count send output of Count to Display
  • 23. NoFlo shell
  • 24. NoFlo in integration email External partners CouchDB + CouchApp Project NoFloController External systems github.com/iks/proggis
  • 25. NoFlo in integrationgithub.com/iks/proggis
  • 26. NoFlo in real world
  • 27. What happens next?● Web-based drawing ● Hook.io support● Web-based ● Component loading monitoring & debug from NPM
  • 28. Flow-Based Programming, the book amzn.com/1451542321
  • 29. Flow-Based Programming for Node.jsgithub.com/bergie/noflo
  • 30. github.com/bergie/noflo Screenshot: github.com, couple of weeks ago