Blog

  • unpkg - A CDN for npm packages

    Now we can stop the deadly sin of committing our assets to git for Bower, CDNJS, and jsDelivr. Instead let’s use unpkg, a CDN for npm.

  • Element.querySelector() Evaluates the Entire DOM

    I used to think that Element.querySelector() and Element.querySelectorAll() worked like jQuery.find() in that they would evaluate a CSS selector against an element’s descendants. But today I learned that they are not the same.

  • Using Redis to Persist PHP Sessions on Heroku

    This article focuses on the specific task of using Redis to persist PHP sessions when running your app on Heroku. If you’re not in that exact same situation then this article will not apply to you.

  • Using JSON Schema to Validate JSON

    When creating a new REST API I wanted to validate the return format of the JSON response. While sarching for a solution, I discovered JSON Schema.

  • Reset Migrations With Knex

    Knex is a Node.js SQL query builder that supports multiple database implementations. It also supports migrations which are essential to any serious project using a relational db.

  • Affordable Email Forwarding For Small Projects

    The biggest frustration I’ve had recently as a developer is finding cheap email forwarding. When working on a small project, such as RootsSearch, I want to have an email listed somewhere for anyone to contact me. I want that email to be forwarded to my personal inbox so that I don’t have to check multiple accounts with multiple hosts.

  • Drawing Family Pedigrees With D3

    I recently set out to learn how to draw family pedigrees with D3. Their website is full of examples including an actual pedigree chart. That example was much too simple for my requirements. I wanted it to be styled like most pedigrees in software with a box around the person. I also wanted it to expand, collapse, pan, and zoom. As I perused other D3 examples, I had difficulty mixing and matching techniques and separating the basics from the fancy stylistic additions. I decided to document and share what I learned in a incremental set of examples so that you wouldn’t have to become an expert in D3 just to draw a pedigree.

  • Automated Testing and Code Coverage in Node.js

    Code coverage is a valuable metric for understanding the quality of your test suite. In this post we will show how to quickly generate code coverage statistics for your JavaScript and Node.js libraries using Mocha, Travis CI, Istanbul, and Coveralls.

  • Using HTML Templates with JavaScript on the Client

    Generating HTML in JavaScript can be painful. It quickly gets out of control when building any advanced UI.

  • Asset Bundling in Express

    Find-A-Record is built on Express, a web framework for Node.js. Remarkably, Find-A-Record has no tests, no build system, and no asset bundling system. That’s okay for the static pages such as the home page, but the main web app relies on 15 JavaScript files and 3 CSS files in addition to the 3 JavaScript files and 3 CSS files included on every page in the site. It’s unwieldy.

  • Managing Source Maps

    Find-A-Record relies on a host of open-source JavaScript libraries. It is tedious to update them, especially when using minified versions with source maps.

  • JavaScript Error Logging With Track:JS

    I first discovered {TrackJS} about a year ago while browsing the list of integrations available for Segment.io. I quickly realized that TrackJS solved a problem which I didn’t know I had.

  • Managing Language Packs in a JavaScript Library

    I’m in the process of adding support for multiple languages to FSCheck, but I’m stuck on how to manage the different languages.

  • Using toJSON to Customize an Object's Serialization

    Circular references are common in data structures. For example, parent-child relationships where a parent has pointers to all of its children and children have pointers to their parents, or doubly-linked lists where each entry has a pointer to both the next and the previous entry. However, JSON does not support circular references. If you try to convert an object with circular references into JSON you will get a type error.

  • Designing Our Logo

    When I decided it was time to start treating this company seriously, as opposed an entity which existed purely for the sake of taxes, I knew the most daunting task would be designing a logo.

  • Cloud9 IDE

    A large portion of any developer’s time is spent managing their development environment. In the past I’ve primarly used vms, whether local or in the cloud. That allowed me to setup project-specific environments without worrying about conflicting versions of runtimes, compilers, supporting libraries, and environment variables. But VMs have a tremendous amount of overhead when run locally in terms of disk space, memory, and start-up times.

  • Choosing a Blog Platform

    I decided to start create a company website and blog. I thought it would be easy. I’ve started many other blogs in the past. But this time my requirements would be a little bit different.

subscribe via RSS