Essential Node for Web Developers
 Mike Amundsen
  Principal API Architect
  Layer 7 Technologies
 @mamund
                                    1
Preliminaries
 Mike Amundsen
 Web Architect, Author, Presenter
 Software Explorer
 Principal API Architect, Layer 7 Technologies




                                                  2
Last Project
 Building Hypermedia APIs w/ HTML5 & Node (November 2011)
 Methodology for writing/maintaining business-level APIs in the cloud.
 Real solutions for real use-cases.
 Three Servers, Six Clients, 200+ pages.




                                                                          3
Next Project
 RESTful Web APIs (Summer 2013)
 Co-author with Leonard Richardson
 Follow up to Richardson/Ruby’s RESTful Web Services (2007)
 Focus on scaling up application-level interoperability with hypermedia
 Beyond HTML, XML, and JSON is …




                                                                           4
Let's start with a bit of
     Philosophy...



                            5
Unix Philosophy

   Write programs that do one thing and do it well.
   Write programs to work together.
   Write programs to handle text streams.

    - Douglas McIlroy




                                                       6
Node Philosophy (possible)

•   Write modules that do one thing and do it well.
•   Write modules to work together.
•   Write modules to handle streams and events




                                                      7
Eric S. Raymond's Design Rules

"Rule of Diversity: Distrust all claims for one true way"

  -- Eric S. Raymond




                                                            8
Reminder:

 My Examples
   are NOT
      the
"One True Way"

                 9
Essentially, Node is...

"...a platform built on Chrome's JavaScript runtime for
easily building fast, scalable network applications."




                                                          10
Node is…

“Node is intended to be a very low-level library that
facilitates higher-level extensions and abstractions in
userland. It is more like C than it is like Python, and that is
by design.” – Isaac Schlueter




                                                                  11
And it's different because....

"Node.js uses an event-driven, non-blocking I/O model that
 makes it lightweight and efficient, perfect for data-
 intensive real-time applications that run across distributed
 devices."




                                                                12
So that means....

"Most of the applications we're writing today are heavily
I/O bound. Because of the event-driven nature of
JavaScript (and Node by extension), whatever you write
with it is going to be very fast." - Guillermo Rauch
(socket.io)




                                                            13
But does it run on my machine?

"To build a diverse open source
community, you need a wide
platform," - Paul Querna,
Rackspace




                                  14
Essential NodeJS on a single slide (well, almost)




                                                    15
Ok, introduce me then...




                           16
Hello, Node!




               17
Ok, but how do I deliver files?




                                  18
Ok, but how do I deliver files using streams?




                                                19
Not bad; how about HTML Forms?




                                 20
Cool. Now how about a server-side mash-up?




                                             21
Yeah, but how do you write files?




                                    22
What about HTTP Authentication?




                                  23
Ok, but where's that "sockets" stuff?




                                        24
Alright, how about MVC & routing?




                                    25
Hey, this is all 'async' & hard, right?




                                          26
So are there lots of libraries?




                                  27
So are there lots of libraries?




                                  28
Bottom Line…
 While Node *is* Javascript, the ethos is closer to C/Unix
 Don’t get tied up in the “Evented IO” stuff; just write your code and enjoy
 Async is the future; learn to love the future.
 Get to know the NPM library; lots of good stuff there.
 Check out Shelly Power’s “Learning Node” book




                                                                                29
So....




         30
Node.js...
•   “Low-level” Javascript
•   Non-blocking I/O
•   Cross Platform
•   Pages, Forms, Services, APIs, Sockets
•   MVC, Templates, ...
•   1000s of available libraries
•   All Open Source

    Oh yeah, one more question...


                                            31
Why not join the hipster Nod-ies?




                                    32
Essential Node for Web Developers
 Mike Amundsen
  Principal API Architect
  Layer 7 Technologies
 @mamund
                                    33

Essential Node.js for Web Developers from Developer Week 2013

  • 1.
    Essential Node forWeb Developers  Mike Amundsen Principal API Architect Layer 7 Technologies  @mamund 1
  • 2.
    Preliminaries  Mike Amundsen Web Architect, Author, Presenter  Software Explorer  Principal API Architect, Layer 7 Technologies 2
  • 3.
    Last Project  BuildingHypermedia APIs w/ HTML5 & Node (November 2011)  Methodology for writing/maintaining business-level APIs in the cloud.  Real solutions for real use-cases.  Three Servers, Six Clients, 200+ pages. 3
  • 4.
    Next Project  RESTfulWeb APIs (Summer 2013)  Co-author with Leonard Richardson  Follow up to Richardson/Ruby’s RESTful Web Services (2007)  Focus on scaling up application-level interoperability with hypermedia  Beyond HTML, XML, and JSON is … 4
  • 5.
    Let's start witha bit of Philosophy... 5
  • 6.
    Unix Philosophy  Write programs that do one thing and do it well.  Write programs to work together.  Write programs to handle text streams. - Douglas McIlroy 6
  • 7.
    Node Philosophy (possible) • Write modules that do one thing and do it well. • Write modules to work together. • Write modules to handle streams and events 7
  • 8.
    Eric S. Raymond'sDesign Rules "Rule of Diversity: Distrust all claims for one true way" -- Eric S. Raymond 8
  • 9.
    Reminder: My Examples are NOT the "One True Way" 9
  • 10.
    Essentially, Node is... "...aplatform built on Chrome's JavaScript runtime for easily building fast, scalable network applications." 10
  • 11.
    Node is… “Node isintended to be a very low-level library that facilitates higher-level extensions and abstractions in userland. It is more like C than it is like Python, and that is by design.” – Isaac Schlueter 11
  • 12.
    And it's differentbecause.... "Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data- intensive real-time applications that run across distributed devices." 12
  • 13.
    So that means.... "Mostof the applications we're writing today are heavily I/O bound. Because of the event-driven nature of JavaScript (and Node by extension), whatever you write with it is going to be very fast." - Guillermo Rauch (socket.io) 13
  • 14.
    But does itrun on my machine? "To build a diverse open source community, you need a wide platform," - Paul Querna, Rackspace 14
  • 15.
    Essential NodeJS ona single slide (well, almost) 15
  • 16.
    Ok, introduce methen... 16
  • 17.
  • 18.
    Ok, but howdo I deliver files? 18
  • 19.
    Ok, but howdo I deliver files using streams? 19
  • 20.
    Not bad; howabout HTML Forms? 20
  • 21.
    Cool. Now howabout a server-side mash-up? 21
  • 22.
    Yeah, but howdo you write files? 22
  • 23.
    What about HTTPAuthentication? 23
  • 24.
    Ok, but where'sthat "sockets" stuff? 24
  • 25.
    Alright, how aboutMVC & routing? 25
  • 26.
    Hey, this isall 'async' & hard, right? 26
  • 27.
    So are therelots of libraries? 27
  • 28.
    So are therelots of libraries? 28
  • 29.
    Bottom Line…  WhileNode *is* Javascript, the ethos is closer to C/Unix  Don’t get tied up in the “Evented IO” stuff; just write your code and enjoy  Async is the future; learn to love the future.  Get to know the NPM library; lots of good stuff there.  Check out Shelly Power’s “Learning Node” book 29
  • 30.
  • 31.
    Node.js... • “Low-level” Javascript • Non-blocking I/O • Cross Platform • Pages, Forms, Services, APIs, Sockets • MVC, Templates, ... • 1000s of available libraries • All Open Source Oh yeah, one more question... 31
  • 32.
    Why not jointhe hipster Nod-ies? 32
  • 33.
    Essential Node forWeb Developers  Mike Amundsen Principal API Architect Layer 7 Technologies  @mamund 33