Posts About the Software Development Lifecycle How we build things informs what we can build. Most projects leave a lot of productivity on the
table because they disbelieve that a sharpened saw will pay for itself in a surprisingly
short period.
Part 4: Making the Most of Async in Node.js
In Part 3 we discussed heterogeniety and some other tuning tricks. Now
it’s time for some of the rest of the story.
The Long Road to an ESM Module
A year ago, I signed on as a maintainer for the node-config project. This is a tool meant to
organize all of the configuration for an entire process into one place where you can get a clear
gestalt of the state of the app, and thus reason about unexpected behaviors during a build or at
deployment time.
Introducing Faceoff
Announcing Faceoff 1.1 and how it came to exist.
Part 3: Making the Most of Async in Node.js
In Part 2 we discussed how to use p-limit to handle common errors and
chains of simple parent-child requests. Today we will discuss heterogenous use cases, such as
complex graphs and high-variance task costs.
Part 2: Making the Most of Async in Node.js
In Part 1 we discussed how to use p-limit and how to avoid some common
pitfalls. Today we are going to go over capacity planning, and cover one last common pitfall -
retry logic.
Part 1: Making the Most of Async in Node.js
In the previous article , I very briefly described a bunch of concepts in
distributed computing, but before we get to the meat of this series, there’s an elephant in the room
that I have so far ignored.
Background: Making the Most of Async in Node.js
[Author’s Note: This thread is about Javascript, but the principles are not about Javascript. I used
Promises before Javascript had them, and I will use async/await long after. There’s a lot to
cherry-pick here if your language has fibers, or infinite parallelism will lead to immediate
resource exhaustion. It’s just couched in the language I’ve spent the most time in recently.]
You Should Make Your Build Agents Bigger
Someone once told me that a lot of blog posts are about arguments the author already lost. This is
one.
Float Glass
Inspiration on exacting standards in other disciplines
What if We Just Reused Code?
The software world is full of ways to avoid duplication of effort. We automate many tasks for our
users, for each other, or for ourselves. Among ourselves, one solution we focus heavily upon is code
reuse.
Sympathy for the Reader
Help your readers understand your code.
Promises in AngularJS
Last year, I gave a small presentation on Promises in AngularJS, with an interactive element. It’s a
little bit dated, and a million people have now written about Promises, so I’ll leave the basics and
the crash course to Kris Kowal , and jump
right to the part I thought was interesting: my examples. Very few people put their examples on
JSFiddle for the audience to experiment with, to see what breaks – or doesn’t – when you make
alterations.
The Cobbler's Children Have No Shoes
Quality tools inspire quality applications
Rethinking Responsive Design
We know that these days a lot of our users are trying to access our websites from their phones. They
may need some information, or they may just be bored and stuck somewhere that they don’t have a
larger screen. We also know that a lot of the rest of our users are on tablets, or laptops. We also
know that for some of us, how our designs look on projectors matters (which are limited in contrast
in addition to real estate). We’ve been designing our little hearts out trying to make our websites
“responsive”, and today a lot of the Web looks pretty good at 640 and 1024 pixels wide. It’s been a
lot of work and everyone who has pulled it off deserves to be a little proud of themselves. I say “a
little proud” because we’re completely dropping the ball in other areas of responsiveness.
See Also
During my absence, I did a bit of writing for my last employer, one is about running Jenkins
entirely in Docker (including automated tests) and
another one on Jasmine Matchers .
Branching Out
As a young developer, you probably got some good advice. Assuredly one of those pieces of advice was
to keep challenging yourself. Branch out. Learn new programming languages. Use new libraries. Don’t
let yourself get too comfortable about what you know.
Passive Testing
Thoughts on multi-device testing