One of the things I enjoy about ECMAScript modules is their ease on the eyes. They look good -- the same way Python's import statement can look nice. It's also nice to have to explicitly import the things necessary for a file/module to its work. Need the whole module? That's a choice that has to… Continue reading Beautiful Imports in NodeJS
Author: Christopher Davis
Use Many S3 Buckets
Should applications use one S3 bucket, putting different categories of files under different directories?1 Or should an application use multiple S3 buckets -- one for each different category of files? As the title implies, the answer is many S3 buckets. While some things, like lifecycle rules, can be configured based on directories (key prefixes, really),… Continue reading Use Many S3 Buckets
Building an Upload System Backed by S3 and Client-Side Uploads
One of the things I try to do when building applications is keep servers stateless. This makes those servers easy to throw away -- a piece of infrastructure failing (which it always will) is not a big deal with stateless servers. Just spin up a new one. When the requirement came down the pipeline to… Continue reading Building an Upload System Backed by S3 and Client-Side Uploads
How to Monitor Client-Side Upload Progress (with XMLHttpRequest)
Showing a user something like a progress bar during a file upload is handy and let's them know that stuff is working. Higher level abstractions like fetch don't really provide a look into how much of a request body has been sent, but good ol' XMLHttpRequest does. In order to monitor upload progress, attach an… Continue reading How to Monitor Client-Side Upload Progress (with XMLHttpRequest)
Delete Your Development Environment
Eventually more than one person works on a piece of software. When new folks start contributing to a library or application what is that experience like? Is it easy to clone the repo and get started? Project leads and senior developers have a responsibility to ensure that the developer experience (DX) for a new team… Continue reading Delete Your Development Environment
In PHP Use is More Like an Alias than an Import
PHP has a use statement that allows the importing or, more accurately, aliasing of classes into the current namespace. In other languages, like Python, importing a nonexistent class or module will fail at the import. In PHP, this doesn't happen, instead the program will fail later when the aliased class, function, or constant is is… Continue reading In PHP Use is More Like an Alias than an Import
Forms in ReactJS
There are a lot of form libraries for react out there that promise the on true, right way to do things. Two years into my own ReactJS journey, and I've come to a few conclusions. Form State Does Not Belong in a Store Think of how your browser usually works, does it send form data… Continue reading Forms in ReactJS
Lifecycle Objects as Extension Points
Something I've found myself doing more and more is writing lifecycle objects that add notification-like extension points to other objects. A good example is the MessageLifecycle interface and its implementations in PMG's queue library. Rather than pollute the queue consumers with events or other more generic things directly, the lifecycle provides and extension point into… Continue reading Lifecycle Objects as Extension Points
Three Pieces of Advice for New Senior Developers
A coworker of mine took a new gig last week. One with increased responsibilities and a job title bump that put them into a more senior position as a company about the size of PMG or smaller. I gave him three pieces of advice. 1. Do Code Review, Not Style Review Worrying about coding style… Continue reading Three Pieces of Advice for New Senior Developers
AWS’ Minimum Level of Complexity
The past week I've been doing some training at PMG around our AWS setup and infrastructure. In the past year we've become heavy users of Docker and Amazon's Elastic Container Service as well as moving more towards infrastructure as code with terraform. My team, understandably, feels a bit overwhelmed by the complexity of our AWS… Continue reading AWS’ Minimum Level of Complexity









