Debugging Node.js using the Chrome DevTools

With Chrome 57+, the Node.js debugging feature is enabled by default. To start debugging, run your Node.js application [using Node 6.4+] with the --inspect flag.

Like so:

$ node --inspect <your_file>.js

Open the outputted URL or visit chrome://inspect/ to open dedicated DevTools for Node to start debugging 🙂

Debugging Node.js with Google Chrome →

Δ now: realtime global deployments

Δnow allows you to take your JavaScript (Node.js) or Docker powered websites, applications and services to the cloud with ease, speed and reliability. Every time you deploy a project, Δnow gives you a unique URL to it (even before build processes are complete!).
When it’s time to take your deployment to production, you simply pick an appropriate alias.

You can think of Δnow as a CDN for dynamic code (microservices and backends).

After having checked the video above, check out Now & Next.

Δnow →

Electrode – Universal React and Node.js Application Platform

electrode

From the folks at Walmart:

Electrode is a platform for building universal React/Node.js applications with standardized structure, best practices, and modern technologies baked in. It’s powering Walmart.com. And, now developers can use Electrode Platform as a whole or take its pieces, as appropriate. Electrode focuses on performance, component reusability, and simple deployment to multiple cloud providers—so you can focus on what makes your app unique.

Electrode – Universal React and Node.js Application Platform →
Introducing Electrode, an open source release from @WalmartLabs →

Node.js “Hackathon Starter”

node-hackathon-starter

If you have attended any hackathons in the past, then you know how much time it takes to get a project started: decide on what to build, pick a programming language, pick a web framework, pick a CSS framework. A while later, you might have an initial project up on GitHub and only then can other team members start contributing. Or how about doing something as simple as Sign in with Facebook authentication? You can spend hours on it if you are not familiar with how OAuth 2.0 works.

That’s were the Hackathon Starter comes in handy as it has the default structure layed out, and lots of integrations built-in: Facebook, Twitter, GitHub, etc. — They’re all in there by default.

If you’ve built Node apps before most of the packages/technologies used will sound familiar to you: Express, Mongoose, Jade, Sass, etc.

Hackathon Starter – A boilerplate for Node.js web applications →

Nodal – API Services Made Easy With Node.js

nodal

Nodal is a web server for Node.js, optimized for building API services quickly and efficiently.

Boasting its own opinionated, explicit, idiomatic and highly-extensible framework, Nodal takes care of all of the hard decisions for you and your team. This allows you to focus on creating an effective product in a short timespan while minimizing technical debt

Nodal projects are ready to deploy to Heroku right out of the box, so you can have your website live in no time.

Comes with out-of-the-box working Controllers, Entities, Routing, Migrations, etc. This video will get you kickstarted:

Nodal →

pm2 – Advanced Production Process Manager for Node.js

pm2-list

pm2-monit

PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.

Instead of starting your apps using node app.js, start them using pm2 start app.js

pm2 – Advanced Production Process Manager for Node.js →

Node debugging with TraceGL

TraceGL transforms your JavaScript, injecting monitoring code that produces a log of everything that happens. This log is streamed from the target – via the traceGL node.js process – to the UI for visualisation. The UI tries to display the resulting huge amount of information fast, and uses webGL to render everything.

In the video above you can see @rem take this for a spin.

TraceGL →

Bunyan

$ cat hi.js
var bunyan = require('bunyan');
var log = bunyan.createLogger({name: 'myapp'});
log.info('hi');
log.warn({lang: 'fr'}, 'au revoir');
$ node hi.js
{"name":"myapp","hostname":"banana.local","pid":40161,"level":30,"msg":"hi","time":"2013-01-04T18:46:23.851Z","v":0}
{"name":"myapp","hostname":"banana.local","pid":40161,"level":40,"lang":"fr","msg":"au revoir","time":"2013-01-04T18:46:23.853Z","v":0}

Bunyan is a simple and fast JSON logging library for node.js services

The true power comes when it’s combined with the bundled bunyan binary, which pretty-prints bunyan logs:

Like so:

$ node hi.js | bunyan
[2013-01-04T19:01:18.241Z]  INFO: myapp/40208 on banana.local: hi
[2013-01-04T19:01:18.242Z]  WARN: myapp/40208 on banana.local: au revoir (lang=fr)

It’s also possible to filter the messages:

$ node hi.js | bunyan -l warn
[2013-01-04T19:08:37.182Z]  WARN: myapp/40353 on banana.local: au revoir (lang=fr)
$ node hi.js | bunyan -c 'this.lang == "fr"'
[2013-01-04T19:08:26.411Z]  WARN: myapp/40342 on banana.local: au revoir (lang=fr)

node-bunyan →

(Found via Top 10 Mistakes Node.js Developers Make)

JavaScript I/O (io.js)

Node.js, a popular and influential tool for building and running modern internet services, has split in two.

Late yesterday, some of its primary developers “forked” this open source project, creating a new version of the tool they call Io.js. The group was unhappy with the stewardship of Node’s official sponsor, cloud computing company Joyent, so they’ve chosen to fashion a new version on their own.

A reminder that Open Source is hard work, and that decisions should be open too. Wondering how this will evolve as attempts were made (such as an advisory board late October 2014) yet a little too late I guess.

JavaScript I/O →
Future of Popular Coding Tool in Doubt After It Splits in Two →
Q&A: Why io.js decided to fork Node.js →

koa – next generation web framework for node.js

Koa is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs. Through leveraging generators Koa allows you to ditch callbacks and greatly increase error-handling. Koa does not bundle any middleware within core, and provides an elegant suite of methods that make writing servers fast and enjoyable.

var koa = require('koa');
var app = koa();

// x-response-time
app.use(function *(next){
  var start = new Date;
  yield next;
  var ms = new Date - start;
  this.set('X-Response-Time', ms + 'ms');
});


// response
app.use(function *(){
  this.body = 'Hello World';
});

app.listen(3000);

Read up on generators here and here.

koa – next generation web framework for node.js