http://winnipegjs.com For questions tweet @winnpegjs Michael Yagudaev - @yagudaev Peter Braun Introductions Introduce yourself Your name What you do for a living? How does Javascript fit into your life? What do you expect to get from this group? Sponsor About This Group Javascript user group Purpose: teach, learn, explore and build a strong community around javascript Goal is to help each other improve by making the right connections. Monthly meetups Format of Meetings Introduction Main Talk Questions during presentation Twitter questions. Tweet @winnipegjs Demo(s) – things you (yes as in you) are working on that are related to JS Presentation Outline 1. Intro to Node.js (Michael Yagudaev) 1. Why Node 2. When to Use it and when not to 2. Intro to Express.js (Peter Braun) Intro to Node.js Node.js is a set of networking libraries for Javascript. Built on top of V8 – Google’s Virtual Machine for Javascript. Introduced by Ryan Dhal in 2009 Current version is 0.89 Uses an async non-blocking event driven model Why is it so epic? Built for highly scalable systems Good for I/O bound applications Allows for concurrent programming without the use of threads (threads === evil) Makes developing soft real-time applications easy Can take advantage of multiple cores by using the cluster module Why is it so epic? (continued) Share code between client and server When should I use Node? Soft-real time applications JSON APIs and NoSQL DBs Socket.IO Single-page application Mobile App Backend Great for handling large loads and real-time updating Unix command-line tools Streaming Data When NOT to use it? CPU bound/intensive applications But can easily write a C module (similar to Python) Simple CRUD applications Rails or Django are a better choice (for now) SSL Services Poor performance from Crypto library being looked at 0.9.x Tool Chain Npm – Node Package Manager, similar to gems in ruby, lets you download additional libraries for node. NVM – Node Version Manager, similar to Ruby’s RVM. Helps manage versions of node. node(1) – interactive command-line REPL Text-editor (Sublime) – for writing code IDE (WebStorm) – for heavy lift debugging Demo/Coding Intro to Express.js Peter Bruan Works at DMT Mobile Web Application Development Suggestions What do you think we should do? What would be a good way to stay in touch even after meetups? What topics would you like to see covered? Feel free to tweet us your suggestions @winnipegjs