NoFlo: two years of flow-based programming - Henri Bergius in Berlin, Germany
NoFlo — the flow-based programming system I started — is now two years old. I pushed the first commits to GitHub on June 5th 2011 from Hacker Dojo in Mountain View. To get us started with the story, I’ll let Wikipedia summarize: Flow-based programming (FBP) is a programming paradigm that defines applications as networks of “black box” processes, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes. While flow-based programming is still far from mainstream, it has been great to watch to the community grow around NoFlo. There are several start-ups using it as their base infrastructure, with several of their engineers contributing to the open source effort. Why I started NoFlo Two years ago I was undergoing a transition from PHP and Python to the JavaScript world, largely lured by the benefits of a universal runtime and the event-based multi-protocol paradigm Node.js offers. Beyond OOP The logic is in the graph
A Case-by-Case Introduction to Node.js
Introduction JavaScript’s rising popularity has brought with it a lot of changes, and the face of web development today is dramatically different. The things that we can do on the web nowadays with JavaScript running on the server, as well as in the browser, were hard to imagine just several years ago, or were encapsulated within sandboxed environments like Flash or Java Applets. Before digging into Node.js, you might want to read up on the benefits of using JavaScript across the stack which unifies the language and data format (JSON), allowing you to optimally reuse developer resources. As this is more a benefit of JavaScript than Node.js specifically, we won’t discuss it much here. But it’s a key advantage to incorporating Node in your stack. As Wikipedia states: “Node.js is a packaged compilation of Google’s V8 JavaScript engine, the libuv platform abstraction layer, and a core library, which is itself primarily written in JavaScript.” How Does It Work? That’s a mouthful. Pros: Cons:
How do I get started with Node.js
Felix's Node.js Beginners Guide
« Home / All Guides There is lots of information about node.js, but given the rapid pace at which it is developing, it can be difficult for beginners to find good, current information on how to get started. This guide aims to provide exactly that, whilst staying updated with the latest stable version of node.js. This guide has been updated to reflect the latest changes in node 0.4.x, the currently stable branch of node.js. Learning JavaScript This guide assumes that you are already familar with JavaScript. Hello World Tutorial This tutorial guides you through installing node.js, including the creation of a simple hello world http server. Installation First of all: You should run a *nix operating system in order to use node.js at this point. The most common way to install node.js is to directly compile it from the downloaded source code. You can get the latest source code from nodejs.org. $ wget $ tar -xzf node-v0.4.4.tar.gz $ cd node-v0.4.4 $ . Express
Understanding node.js
Node.js has generally caused two reactions in people I've introduced it to. Basically people either "got it" right away, or they ended up being very confused. If you have been in the second group so far, here is my attempt to explain node: It is a command line tool. "But I can do everything I need in: ruby, python, php, java, ... !". I hear you. "Get to the point!" Alright, I will. "Huh?" That's right, everything runs in parallel, except your code. The day starts by one servant waking up the king and asking him if he needs anything. Once a servant finishes a task, he lines up outside the kings quarter to report. Life is good, for the king's servants carry out all of his tasks in parallel, but only report with one result at a time, so the king can focus "That's fantastic, but could you quit the silly metaphor and speak geek to me?" Sure. var fs = require('fs') , sys = require('sys'); fs.writeFile('letter-to-princess.txt', '...', function() { sys.puts("can't wait to hear back from her!") No. --fg
The Node Beginner Book » A comprehensive Node.js tutorial
How To Node - NodeJS
Debugger Node.js v0.10.17 Manual
Stability: 3 - Stable V8 comes with an extensive debugger which is accessible out-of-process via a simple TCP protocol. Node has a built-in client for this debugger. To use this, start Node with the debug argument; a prompt will appear: % node debug myscript.js < debugger listening on port 5858 connecting... ok break in /home/indutny/Code/git/indutny/myscript.js:1 1 x = 5; 2 setTimeout(function () { 3 debugger; debug> Node's debugger client doesn't support the full range of commands, but simple step and inspection is possible. For example, suppose myscript.js looked like this: x = 5;setTimeout(function () { debugger; console.log("world");}, 1000); console.log("hello"); Then once the debugger is run, it will break on line 4. The repl command allows you to evaluate code remotely. Watchers# You can watch expression and variable values while debugging your code. To start watching an expression, type watch("my_expression"). watchers prints the active watchers. Commands reference# Stepping# % . Info#
Best practices of building a website using node.js
Flow-based Programming
In computer programming, Flow-Based Programming (FBP) is a programming paradigm, discovered/invented by J. Paul Rodker Morrison in the late '60s, that uses a "data processing factory" metaphor for designing and building applications. FBP defines applications as networks of "black box" processes, which communicate via data chunks (called Information Packets) travelling across predefined connections (think "conveyor belts"), where the connections are specified externally to the processes. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. FBP is a very different paradigm from conventional programming, being more of an "assembly line" image of data processing. FBP is described in J. Further down on this web page you will find a bunch of useful links, including a list of currently supported programming languages (on GitHub), and some videos demonstrating the use of the FBP diagramming tool, DrawFBP. Links:
Using Express.js for APIs | StrongLoop
A few tips and libraries for creating and documenting RESTful APIs with Express.js. See a simple example app that incorporates some of these ideas. Two things really got me sucked into Express when I first started using it: Jade and Stylus. I can barely tolerate writing HTML and CSS any other way. These days I spend more time using Express for APIs that send nothing but JSON. Mongoose I’m assuming an API backed by MongoDB, and that we’re using Mongoose. express-mongoose I’m generally not a flow control library guy. The fact that it supports Promises is important to keep in mind, because it means you can create some fairly complex async stuff in your Mongoose models, and as long as it returns a Promise you keep the top layer routing/sending code really tidy. Mongoose Transforms I often find myself wanting to hide certain properties before they get sent across the wire. This is yet another way to avoid repetition at the route/controller levels of your app. Routing express-resource-new or
NoFlo | Flow-Based Programming for JavaScript