Training Materials for Node

For my 30 days of Node I’ve been using a few training resources in order to learn Express. There’s EggHead.io they have great videos, all short and available to download (if you sign up) so you can watch them offline e.g. on the train. Their Getting Started with Express course by Ben Clinkinbeard is fantastic.

I’ve also watched their Introduction to Node: The Fundamentals by Will Button is also a great video series they do.

I’ve also got a few books to read, these are:

There is also a Gitter group which is going to be really helpful. So there’s a few resources, but nothing beats just jumping in and trying to build something and then finding the answers the problems you come across as you go.

Update on ContactsManager app


As part of my 30 days of Node I’m building a ExpressJS app that allows you to create, edit and save contacts. I’ve been working on this app for a couple of days, not really got too far just managed to get the the package.json file and an Readme file setup. In the package file I’ve got the Express framework and Nodemon all setup, along with the very basic app.js file setup.

I know there is the Express Generator tool which would set up the core of an app, but as this is a project for learning Express I think it’s better to start adding the bits of the project, bit by bit. Instead of letting a tool setup a project with all these parts (views, routes and the core app.js file) and then wondering how it all works. I think it’s better to setup parts of the app as I go and learn how to implement them. I think tools like Express Generator are fantastic they can help you get a new Express site setup and running in minutes, they really have their place.

I mentioned earlier that I’m using Nodemon with this project, the reason for this is because the main drawback I see using Express is that you have to keep restarting the server after each change in order to be able to see the change. It can be annoying and I know that there is probably a NPM package I can install that gives me live reload (which is awesome and something that I wish I had back when I started building websites in the late 90s). So for now I’ll use Nodemon to monitor my app for changes and then I can manually refresh the site to see the changes. This isn’t perfect, but better than having to restart the server after each change.

Anyway my project is on GitHub, as this is what all the cool kids do nowadays. My next task is to start looking into how to create views and routes. How routes work and how they can load a view.

How Node compares to other web tech I’ve used

I’ve been looking into Node and Express, getting ready for my learning Node month, and I’ve started to compare Node/Express with the other web technologies I’ve used in the past.

Over my career I’ve used a few other web technologies including ColdFusion, .Net even classic ASP a wide variety of approaches to how to build a web app. All of them are server side technologies unlike Express which is client side. Now I have done a lot of Angular and JavaScript work over the years but I see Express as filing a different niche than Angular. For me Angular 1 is really client side, while Express is more of a full-stack approach to building a web app.

If you look at something like the MEAN stack Angular is used for the client side JavaScrip, Express is used for the middle ware part of the stack, being used to connect to the data layer (Mongo) and providing APIs for the client side (Angular). This reminds me of the old sites I use to build with ColdFusion where I’d write ColdFusion Components and ColdFusion tags to connect to the data source and serve this data to the client.

The reason I like the approach Express takes is:

  1. Its lightweight, doesn’t insist that you do everything one way
  2. Its JavaScript across the stack, both client and middleware
  3. The use of one language across all parts of building the web app

For me Express is building full stack web app as I use to, but using modern technologies. I’m sure I’ll find a lot of similarities between my old way of building web apps and using ExpressJS.



Plan for learning NodeJS

How do I plan to learn NodeJS over the next 30 days? Well obviously you can’t learn all of Node in just 30 days, but you can learn how to use Node in build a decent web app.

So my plan is simple I’m gong to build a web app using Node, I mean as Chris Coyer says in order to learn to about the web then ‘just build websites’. I’m going to use ExpressJS as the framework I’ll use to build my new web app.

The app itself is going to be a ‘contacts manager’ where you can add, edit and delete contacts. An app like this will, I think, give go overview on the Express framework. How to create views, how to manage actions, how to write Middlewares, how Express handles routes and finally I can also look into how to connect to a datasource (Mongo).

Building this app gives a great overview of how to use Express.

I also have an EggHead account and they have a few Node views and these complete courses:

I also have some a few Node books to read:

Plenty to read, watch and do over the next 30 days.

Finding Your Passion

I recently watched a video by Sean McCabe about finding your passion (seanwes tv: How to Find Your Passion). In the video Sean says ‘we shouldn’t think of trying to find what you passion is as going off in another direction from what you are currently doing, but instead think of it as a starting line where exploring each idea is like moving forward from that starting line’.

He continues to say by moving forward off this starting line and exploring an idea that you feel might be what you are passionate about, you are discovering what really is your ‘passion’. You may find that after a while this new thing isn’t what you are passionate about, you may not like it, but at least you’ve explored the idea.

This idea really resonated with me because for the last few months I’ve been trying to decide whether to stick with the ‘technology stack’ I’ve been using for the last few years (Angular, Ionic and general front-end development) or explore the world of NodeJS, but the thing that has been holding me back is if I starting getting into a new stack, it might mean that the work opportunities open to me suffer.

As a contractor the amount of experience you have in a technology helps. When clients are looking for someone with x amount of experience and you don’t have that many years it does mean that you can’t be put forward for the role, the recruitment agency won’t put you forward for the role as they see you don’t have the require amount of experience. Even though you maybe the most knowledgeable developer on a new stack that you have only been using for the last year. CVs get scanned through every quickly and if you only have a few months experience you could find your application doesn’t go any further.

But I am really fascinated with NodeJS, I think the types of projects you can do with Node is amazing, (web, mobile, desktop, server side, even robots). The NodeJS community looks amazing, so helpful and welcoming to new Node developers.

Anyway after watching Sean’s video it made me think that by learning Node I’m not going off in another direction from what I’ve normally been doing, what I’ve been making my living off. Instead I learning, I’m moving forward.

I may find I don’t like building sites/apps with Node, I may also find that it makes me a better developer, it gives me more opportunities and more experience. Experience I can bring back into the mainstay of my career.

So if you have something you want to try, but you feel it is moving away in another direction from what you normally do, remember it really is just moving forward.

Node training course

On Friday I attended a one day Node course by White October. This course was run by Tim Ruffles

It was a great course, pretty full on and fast paced. Tim is a great instructor, who really knows his stuff and was a great tutor.

When I started the course I knew a little about Node and some ExpressJS, but after sitting through the course I realised I need to learn a lot more about Node and how to write Node, especially the callback pattern.  For what I learnt during the course, the callback pattern is extremely important to get right or your Node code can quickly turn into a right mess.

Here’s a good link to understanding the Node way:

The Node Way

I’ve also got a couple of books to read through:

So plenty to get through.

White October put on some good events. The next big event I’m going to is the AngularConnect conference in October