Building a React-based Chat Client with Redux

Let’s build a non-trivial app with React and then refactor it to use Redux! Much of the advice you get regarding the addition of Redux to your React projects is to only do so once they reach a certain size, because of the extra complexity Redux adds. That’s certainly fair. But it will leave Read More …

Multi-server Chat in Node Without a Database

A few years back, I was consulting for a client who had a Node-based instant messaging feature which had worked pretty well at first. But the number of users grew, and then it didn’t. Even though they had a number of load-balanced server instances running, they found that the Redis database they were using Read More …

Don’t Believe the Hype, It’s a SQL – A Brief Guide to the NoSQL Landscape

SQL. It’s so last century, amirite? Although it was created around ten years earlier, Structured Query Language (SQL) really began to catch hold in the commercial world during the mid-eighties, and brought with it some great improvements over what had come before. Probably the most important feature was transactionality, which enabled concurrency and Read More …

Modeling Domain Entities with Universal JavaScript

Entities are the crown jewels of any application. All of those thousands of lines of client and server code have but one purpose: To persist, present, and allow the user to manipulate instances of domain model entities. Give your entities the respect they deserve. Once you’ve worked out what they are for your domain, building and Read More …

Using Firebase Cloud Functions to Manage a Compound Key Index

In Firebase, Google’s ‘NoSQL’ database, you can declare indexing by any of a node’s children in order to optimize retrieval by that field. For instance, under a node called ‘artists’ where the keys are the artist’s ‘uid’ and the values are artist objects, the default indexing is by uid. While you could retrieve the Read More …

Testing with Jasmine and Async/Await

Today, I wanted to write some integration tests against a Firebase database using Jasmine. Connecting to Firebase from Node is just as easy as it is from a browser. I’ve done it before on a previous version of the Firebase SDK, so I didn’t expect a lot of problems there. It was really Read More …

Break Free of the Realtime Jail: Audio-modulated HD Video with Three.js

Previously, in the ongoing chronicle of our quest to build a music visualizer for recording artists, I discussed my attempt to render thirty audio-modulated frames per second with Three.js and send them to the server in realtime for compiling into a video. What I discovered was that this is impossible with ordinary hardware, Read More …