Latest Articles

Speeding Up Npm 3

In Npm version 3 we finally got what we had been asking for the last few years: a flattened module structure for Node modules. Unfortunately as a result Npm has slowed to a crawl when installing or updating Node modules, well mostly just installing. Recently it was circulating that disabling the progress bar resulted in at least a three times speed increase. I first saw it on Twitter and dismissed it initially.

Loading JSON Files in Aurelia

At the time of writing this, the preferred approach to client side dependencies and loading is Jspm which is one part package manager and one part SystemJS loader polyfill. Although, we will be seeing other loader options in the near future such as Webpack and even a potential custom loader from the Aurelia team. But for now we have Jspm and System.js. Install the JSON loader for System.js We can use the JSON loader for System.js to load JSON files in our app in a bulletproof way. You can view the plugin here and see that it is really quite simple under the hood.

The New Sourcetree Design Is Horrendous (and broken)

When it comes to GIT clients, you can’t really fault Sourcetree by Atlassian. It handles the basics of Git, allows you to visually merge/rebase your repositories, handle conflicts like a boss and more. But we need to talk about the redesign they just launched across both Windows and Mac OS platforms in version 1.8.1. Given the previous design of Sourcetree was not exactly the prettiest application out there or modern looking, usability wise it definitely ticked all of the boxes for me personally. What happened?

Working With The Aurelia Task Queue

When it comes to the browser, queues are very important. The concept of a macrotask and microtask exist within the browser which allows standard tasks and micro tasks to be queued up. The Aurelia Task Queue dependency is not specific functionality to Aurelia itself, but rather wraps native browser methods and provides a fallback if you are not using a supported browser. The browser itself does not provide direct access to the microtask queue, but leveraging DOM Mutation Observers which use the microtask queue, you can tap into that powerful queue with relative ease (which is what this class does).

Binding with Style in Aurelia

One of my favourite features of Aurelia is the ability to bind element styles. If you ever worked with Angular 1, then you would know you could bind not only classes but inline styles on an element as well. Please note: In all of these examples except String Interpolation, you can use the style attribute, but it is recommended that you use css for Internet Explorer compatibility if you want to use interpolation. I personally just use css for all style binding use-cases, which is an alias for style anyway.

No: Netflix Cannot Block VPN's

If you are a Netflix subscriber you have probably heard that Netflix recently announced they are going to be cracking down on customers using a VPN to access content outside of their own country. You could almost hear the collective sigh of all the Australian Netflix subscribers. Instant anxiety set in, people were worried: could Netflix really block VPN users? Had Netflix’s engineering department done a deal with the devil to block VPN’s, proxies and DNS providers using techniques never before seen in tech so far?

All About The Aurelia UI Virtualization Plugin

A little less publicised aspect of Aurelia is the UI Virtualisation plugin. For those accustomed to ReactJS’s speed of rendering large amounts of items in the DOM and offering high paint performance, this will be a welcome plugin to use. Although, do not be mistaken. The Aurelia UI Virtualization plugin is not meant to replace React, nor give you the same power that it offers. This is not a plugin for a virtual DOM, at least not at the time of writing this. For that, you will need to integrate and use React or an alternative.

Using DOM Event Listeners In Aurelia

When it comes to using a plain old event listener in your Aurelia applications, if you are not aware of how classes work and how things get transpiled, then you will most likely run into some issues working with events and scope. First you might try something like the following: export MyClass { attached() { document.addEventListener('click', this.handleBodyClick); } detached() { document.removeEventListener('click', this.handleBodyClick); } handleBodyClick(e) { console.log(e.target); } } On the surface everything looks fine, it should work right? Sorry, but this will not work. Many first timers implementing event listeners into their apps will run into this, heck I even ran into it once as well.

Little Visible Activity and/or Krausen With Safale US-05 Yeast? RHAHB

When it comes to ale yeasts, most brewers will not look past the Safale US-05 yeast. As popular as it is, it is still relatively misunderstood in how it works and what the best practice is. I have been using the US-05 yeast for a long time now as I primarily brew IPA style beers. I always rehydrate my yeast in 110ml of water, the ratio is 10 times the weight of the packet contents in water.

Working With The Aurelia Event Aggregator

The Event Aggregator is one of my favourite things about Aurelia and it is not even anything unique to Aurelia. There does not seem to be much info out there about it, probably due to its simplicity. But I have noticed people ask about it in the Gitter chat from time-to-time. At its core the Event Aggregator is a pub/sub layer for publishing and listening to actions that take place inside of your application loosely.