How to Limit Windows 10 Data Use Over a Metered Connection

Living in a rural area comes with limits for bandwidth, and if you are like me, you might be coming to the realization that Windows 10 loves data, a lot.

Source: How to Limit Windows 10 Data Use Over a Metered Connection

Lately I needed to use a limited data connection to Internet using my mobile Internet. That meant I needed to limit as much as possible any unneeded data transfer my PC with Windows 10 can do. The article above shows probably 99% of the settings you have to change to do that. The rest 1% you can do with a special data limiting software or a firewall and block the traffic an app does completely.

Now just be careful while opening different websites. Some of them may contain tens of big images. Of course there is a browser extension for blocking images too!

What Do the Popular JavaScript Tools Depend On? -Telerik Developer Network

Cody Lindley explores the dependencies of popular JavaScript tools and frameworks including Angular, React, jQuery, Aurelia and more.

See what famous JS libraries like Angular and React use as their dependencies.

Source: What Do the Popular JavaScript Tools Depend On? -Telerik Developer Network

Docker 1.9.0 and the new network configuration

Docker 1.9 is here and it introduces a new way to handle the networking between containers.
Because docker containers should live a short live before being replaced with their new versions one should ask himself do we really need the static IP that was existing until now and assigned to the Docker’s bridge? The usual IP you will see was 172.17.42.1.

After upgrading this IP will be gone. Instead other IPs will be created dynamically. Of course there will be another IP like 172.17.0.1 assigned to the docker0 bridge. You can use it if you are brave enough but better not.
However if you need a quick fix before going to bed you can use the Docker’s –bip parameter to set the bridge IP back to 172.17.42.1.

Another way is to go back to version 1.7.1 using your OS’s package manager or direct install/compile.
Later when you decide to start using Docker’s networking the right and better way, you can start from here.

StrongLoop | Moving toward Express 5

Express 5 is not very different from Express 4: The changes to the API are not as significant as from 3.0 to 4.0. Although the basic API remains the same, there are still breaking changes; in other words an existing Express 4 program may not work if you update it to use Express 5.

Source: StrongLoop | Moving toward Express 5

Node.js adds long-term enterprise support version | ITworld

Version 4.2.0 of the open source JavaScript tool addresses enterprises’ stability needs and support despite incremental updates

Source: Node.js adds long-term enterprise support version | ITworld

The Node.js guys are doing a good job and everything is moving as promised!

Node.js Tutorial by Udemy

Source: Node.js Tutorial

An enormous tutorial covering from the beginning to the end of what you need to know about how to use Node.js, Express.js, MongoDB and Angular.js or the whole MEAN stack for short.

Installing of all tools and servers is covered, project structure, creating an API, etc. From here you will already have a good idea where to go next.

Enjoy!

Node.js v4.0.0 is here!

So we lived to see it. Node.js version 4 is here which means we have the latest V8, ES6 support and the latest security patches for our favorite tool! Well the previous statement cannot describe how much good things just happened. From the creation of Node.js, through the fork of IO.js, until finally the latest version and the merger happened and now the community has the word how Node.js will be shaped from now on.

I am personally very excited about that and I am currently going to test and update one of my Docker apps that installs and uses Node.js through NVM.

I am also expecting a lot of work on this major version and the patches and new features are coming sooner than later which makes it very interesting to use Node.js these days!

Enjoy!

JavaScript: from callback hell through then-hell to generators+promises

Lately I’ve been refactoring and then refactoring and then some one of my JS apps every time I find a better way to handle the asynchronicity of the language. The app is a MEAN stack app but I am working mostly on the back-end built for Node.js with the intention to do the same for the front-end when I am satisfied with the back-end code.

So I started writing a Node.js code using the callbacks everywhere even some of my custom functions(in other apps) were made to receive and call callbacks. I was very happy how the callbacks looked like and I was writing them as the second parameter of the functions without thinking: callAsync(params, function(err, data)) all the way!

However little by little I started to add new and more complicated features and the need to nest multiple callbacks did arise. Add to that the checking for error on every callback first line and the code started to be hard to read.

At some time I discovered Promises. I decided to use the bluebird Promises package. It follows the standard and also provides additional functions that at some time are really needed. I was in love and probably still am with the then-chaining, calling async functions, attaching then() to them, returning a new async call that provides a Promise and checking the result in the next then, adding a catch() function to handle any error in the promises chain and avoiding the need to check for an error in every then(). The code was beautiful again and no pyramid of doom existed anymore.

However Promises and then-chaining created a little overhead where every then() needs a callback function and also this callback doesn’t have access to variables in the previous callback – only the result from the previous promise call. There was a need to declare helper variables in the outer scope: the function where the Promise chain is.

Then I discovered generator functions. Their basic usage doesn’t show that you can use them in place of callbacks or Promises but the fact that yield can receive a Promise makes them very interesting. Of course there is a need of a wrapper function to call the generator’s .next() and check its .done status. I decided to use the co package for that.

After all of this the code I use is similar to this one:

co(function* () {

  let user = yield User.findOneAsync({ _id: 12345678 });
  console.log('user', user);

  let user2 = yield User.findOneAsync({ _id: 112233 });
  console.log('user2', user2);

}).catch(function (err) {
  console.error(err);
});

The code above will execute synchronously. Pretty cool, huh?
User.findOneAsync() returns a Promise. yield-ing a Promise will make this type of configuration to wait for the Promise to be resolved/rejected. The resolved Promise’s value will be assigned to the variable on the left(user/user2).

Now the next thing for me is to use ES7’s async functions. I can run ES6 and ES7 code with transpilers like Babel on the back and front-end.
Async functions’ syntax is similar to the one with the generator above without the need to use a wrapper function. I am thinking to wait a little before using them and keeping the code close to what is available natively in the latest Node.js/io.js which is ES5/ES6 syntax at least until the near future(next year?) when the ES7 will be finalized and ready to be used/implemented in the JS engines.