Setting up a Node.js Application for Production on Ubuntu 14.04

Node.js is an open source Javascript runtime environment for easily building server-side and networking applications. The platform runs on Linux, OS X, FreeBSD, and Windows, and its applications are written in JavaScript. Node.js applications can be run at the command line but we will teach you how to run them as a service, so they will automatically restart on reboot or failure, so you can use them in a production environment.
In this tutorial, we will cover setting up a production-ready Node.js environment that is composed of two Ubuntu 14.04 servers; one server will run Node.js applications managed by PM2, while the other will provide users with access to the application through an Nginx reverse proxy to the application server.

Source: How To Set Up a Node.js Application for Production on Ubuntu 14.04 | DigitalOcean

Good tutorial. You can also do the reverse proxy with Apache.

Say goodbye to Scrum and take a look at  the new open development method

As part of an open development method, code quality is king. You should be asking key questions every time you write code:

  1. Is this code legible?
  2. Is this code testable?
  3. Is this code modular?
  4. Is this code economical?

Every question asked benefits not only you, but your team. When you write code in a such a way that another developer half a world away can sit down and start working on it immediately, without needing to ask any questions, you’re helping improve your team’s efficiency. Likewise, when you ensure your code is testable, you drastically cut down on the number of roadblocks your team may encounter. With modularity, you present code to your team that is both easily maintained and potentially recyclable for another project. And finally, economical code can save everyone—from your team and future contributors, to clients and end-users—both time and money.

Source: Scrum is dead: breaking down the new open development method :: Opensource.com

Beyond code quality, other tents of the open development method include documentation, testing, discussions, transparency, asynchronicity, and democracy. This short article helps remind us that there isn’t a one size fits all model of development out there and we need to be mindful of the context that we work in.

Use Intro.js to add tours and interactive docs to JS apps

Add easy-to-absorb, interactive user documentation to your JavaScript apps with Intro.js. Learn from a sample tour implementation how to demonstrate your application’s features the modern way from within the app’s UI.

Source: Add interactive documentation to your JavaScript apps with Intro.js :: IBM developerWorks

For complex interactive apps and sites showing visitors how to use the site is always tricky. Intro.js can help by allowing you to create interactive tours that demonstrate how the app works. The tours are always available through an icon in the navigation.

A Bitcoin primer for budding Ethereum developers

This series of articles will describe just enough of Bitcoin for budding Ethereum developers to better understand how Ethereum works under the hood, then begin to explore some routes by which new Ethereum devs can begin developing contract-orientation just like they developed their sense of object-orientation back in the day.

Source: Time sure does fly! — Medium

This article, first in a series, provides an overview of Bitcoin designed to help new Ethereum developers get their bearings in the fun filled world of cryptocurrency and blockchain.

Vagrant may be the most powerful tool for configuring development environments that you’re not using

Vagrant is a tool for creating and configuring lightweight, reproducible, and portable development environments. Vagrant provides a unified interface for controlling the life cycle of one or more virtual machines using the command line. Because Vagrant is platform-agnostic, you can share the same Vagrantfile with anyone; it does not matter if they are using Windows, Linux, or Mac.

Vagrant supports a number of virtualization technologies, including VirtualBox and VMware. The pluggable nature of Vagrant has allowed the community to curate support for additional virtualization technologies including Parallels, Amazon Web Services, and libvrt.

The second most common bug lies in the configuration of production systems, specifically the differences in configuration between production systems and development environments. Even with perfect and precision engineering, a difference in the version of a package or operating system can cause disastrous outcomes at deployment time. For this reason, there is often a push between increasing the parity between development and production environments.

Source: Vagrant: A powerful tool for configuring development environments

I think Vagrant is an under utilized tool in the development and deployment toolbox. I’ve got a good handle on code control using git but we do trip over configuration variations as we bring more boxes online in the cloud. Making sure that Apache and PHP have all the right modules loaded and same config files sounds easy enough but it really is a challenge when each instance gets built from scratch.

Relying on a single Vagrantfile to control virtual machines is a real solution to this but there is a learning curve and we do need to overcome a certain amount of organizational skepticism about using “canned” solutions for the deployment of servers. After all we’re not that far removed from the days of having to order, install, configure, and deploy physical boxes one at a time, but we need to move ahead as we shift to the cloud.

Java still top programming language, PHP at 6, JavaScript at 7

The TIOBE Programming Community index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. The definition of the TIOBE index can be found here.

Source: TIOBE Software: Tiobe Index

This index is one of those things that is easy to find and easier to forget about in the noise of the Internet but it is the best way to get a quick read on the languages being used in the real world. Too often we are over influenced by “flavor of the month” projects and languages that distort how work is really getting done in the broader world. I’m not surprised that Java and C are the top languages since those are the languages of choice for most business applications. Python, PHP, and JavaScript are the core academic and web languages. The thing that makes me smile is that Ruby ranks below Perl. And COBOL is still in the top 20.