Why RxJS Is The Hottest Way To Handle Async

Observables. Native To The Web Platform?

One of the common misconceptions in the web world is that RxJS is an “Angular 2 thing”.

What most developers don’t realize is that Observables are on their way to becoming native to the web, and if you aren’t already using them to handle asynchrony, you are not adequately preparing yourself for the future.

The Best Way To Handle Asynchrony

RxJS allows you to solve hard problems with less code, promotes maintainability, readability, flexibility, and composability. These are just some of the reasons RxJS is the hottest way to handle async right now.

Learning how to handle asynchrony the reactive way instead of using promises and callbacks will also greatly reduce the probability that you are leaking resources. And because RxJS works with any framework (angular.js, react.js, ember.js, vue.js), node, and even without frameworks, it’s easy to future proof your applications and have confidence in using this technology.

(more…)

TPDP Episode #9: An Ember In The Land Of Web Frameworks

We’re nearing the end of 2016 and there are many JavaScript frameworks available to choose from, with more on the way.  Each framework offers a unique perspective of front-end development that can be very attractive to solo developers or development teams.  This brings us to a very popular JavaScript framework called Ember.js.  In this episode of The Polyglot Developer Podcast, I have guest speakers Tracy Lee and Taras Mankovski, who are both Ember experts.

Tracy Lee is a very successful JavaScript developer who sold her start-up and now focuses on her web organization Modern Web, which educates people on different development technologies.  Taras Mankovski runs a very popular consulting business called Ember Sherpa which also educates businesses on the Ember.js framework.  In the ninth episode of this podcast, An Ember in the Land of Web Frameworks, we explore Ember and the conveniences it offers in the realm of JavaScript and front-end development.  This exploration includes tooling and comparisons against other popular frameworks like React and Angular.

(more…)

Use Mozilla’s LocalForage For Key-Value Storage In Ionic Framework

A few years ago I wrote an article called Use ngStorage for all Your AngularJS Local Storage Needs, which was intended to be for AngularJS in general.  However, I understand many readers were using it in their hybrid Apache Cordova or Ionic Framework applications.  There is nothing wrong with this.  However, ngStorage is a wrapper for HTML5 local storage which is known to have compatibility issues under certain circumstances.  That said, came across localForage, a library by Mozilla, which claims to be a wrapper for local storage, WebSQL, and IndexedDB, offering maximum compatibility.

We’re going to take a look at including localForage in an Ionic Framework Android and iOS application for storing data.

(more…)

Test Amazon Alexa Skills Offline With Mocha And Chai For Node.js

By now you’re probably aware that I’m all about Amazon Alexa skills since I’m a proud owner of an Amazon Echo.  I had released a Alexa skill called BART Control and published a guide on creating a simple skill with Node.js and Lambda.  If you went through my Node.js and Lambda guide you probably found it pretty painful to test the skill you were working on.  The constant building and uploading to Lambda could easily get out of control.  What if I told you there was a much simpler way that could save you a ton of time?

We’re going to take a look at adding test cases for testing an Alexa skill offline without ever having to upload the skill to Lambda.

(more…)

TPDP Episode #8: Asynchronous and Event-Based Programming with RxJS

When it comes to modern JavaScript development, there are a few different ways to handle asynchronous events or data.  You could use promises and callbacks, but as great as they are, present certain limitations.  This is where RxJS comes into play with its reactive programming model.  In this episode of The Polyglot Developer Podcast, guest speaker Ben Lesh and I discuss RxJS and where it fits in modern JavaScript development, whether it be server-side or front-end.

Ben Lesh is a senior software engineer at the very popular entertainment streaming company, Netflix.  One of Ben’s projects at Netflix includes the development and maintenance of RxJS since it is heavily used by the company.  In the eighth episode, Asynchronous and Event-Based Programming with RxJS we discuss everything from what is RxJS, how it was inspired, who is using it, and why you should use it over a few of the alternative methods.  If you’ve ever heard of RxJava or Rx.NET, these projects share some similarities to RxJS.

(more…)

Create An Amazon Alexa Skill Using Node.js And AWS Lambda

Recently I published my first skill for Amazon’s Alexa voice service called, BART Control.  This skill used a variety of technologies and public APIs to become useful.  In specific, I developed the skill with Node.js and the AWS Lambda service.  However, what I mentioned is only a high level of what was done to make the Amazon Alexa skill possible.  What must be done to get a functional skill that works on Amazon Alexa powered devices?

We’re going to see how to create a simple Amazon Alexa skill using Node.js and Lambda that works on various Alexa powered devices such as the Amazon Echo.

(more…)

Converting Your Ionic Framework 1 Application To Ionic 2

Ionic Framework has been around for a few years now and has completely changed the way people develop hybrid mobile applications.  With Angular out and Ionic 2 nearing stable release, the Ionic 1 and AngularJS predecessor will be a thing of the past and forgotten.  What if you've gone all in with the first version of Ionic Framework, how do you convert to the latest and greatest?

We're going to see how to take a simple Ionic Framework application and convert it to Ionic 2.  While there will be similarities, the process is manual, but better in the long run.

BART Control for Amazon Alexa

BART Control Skill For Amazon’s Alexa Released

I am pleased to announce that my first ever skill for Amazon Alexa powered devices has gone live in the Amazon Skill Marketplace.  My skill, BART Control, accesses live information about the Bay Area Rapid Transit system in northern California.

If you’re unfamiliar with Amazon Alexa, it can be described as follows per Amazon:

Alexa, the voice service that powers Echo, provides capabilities, or skills, that enable customers to interact with devices in a more intuitive way using voice. Examples of these skills include the ability to play music, answer general questions, set an alarm or timer and more. Alexa is built in the cloud, so it is always getting smarter. The more customers use Alexa, the more she adapts to speech patterns, vocabulary, and personal preferences.

I personally own an Amazon Echo, but there is a wide variety of hardware that is compatible with Amazon’s voice service.

Now let me share some specifics about the skill that I developed and what I used to develop it.

(more…)

Create Native iOS And Android Plugins With NativeScript

In my previous NativeScript tutorials I demonstrated how to access native platform APIs and features using JavaScript, but I never explained how to develop plugins that could accomplish this in a very maintainable fashion.  By moving this native functionality to plugins, the application code remains a lot cleaner and is better for the long run.

For reference, you can see how to create Toast notifications in Android and determine the application version in Android and iOS using my previous tutorials.

This time we’re going to look at bundling that functionality into a plugin.

(more…)

Add Type Definitions To An External JavaScript File In TypeScript

Not too long ago I wrote an article that explained how to include external JavaScript libraries in an Angular 2 TypeScript project.  To summarize that post, my goal was to show how to use any of the millions of JavaScript libraries that exist online within a TypeScript application.  I received a lot of heat from that article saying that I am missing the point of TypeScript because in the end I wasn’t using any type definitions.  I disagree because not every library that exists on the internet will have a set of type definitions.  In that sense the article still proves very useful.

This time around, I want to explain how to include type definitions in your project, should they exist.  I won’t be going over the entire Angular 2 demo again, but the JavaScript library will be the same and it will still be a functional application.

(more…)