Herding Lions

Hi! I'm Ben.

I make software in Durham, North Carolina. This is my site where I write about engineering leadership and productive product teams. If you're interested seeing more, feel free to subscribe.

First time on the site? Start here.


Weekly Links: February 9th

JavaScript And The Web CodeMirror - CodeMirror is a JavaScript library for building text/code editors in the browser. It isn’t new, but I’ve had the pleasure of building something moderately complex with it over the past week, and thought it deserved some promotion. It makes building an …

React Architecture Confessions

I’ve been reading through Clean Architecture by Robert “Uncle Bob” Martin this month1, and while it is great it has had the unpleasant effect of reminding me of all of the mistakes I’ve made over the past few years while learning and using React. I’ve absolutely loved …

Weekly Links: February 3rd

JavaScript And The Web ECMAScript 2018 | 2ality - The spec for the 2018 version of ECMAScript has been finalized and this is a good roundup of the new features and syntax available. I’m personally excited for rest/spread properties to be an official part of the language. PWAs are coming to iOS …

Weekly Links: January 19th

JavaScript And The Web The Brutal Lifecycle of JavaScript Frameworks | Stack Overflow Blog - This was an interesting analysis on how JavaScript frameworks have risen and fallen. Among the reasons that it’s interesting is that the data appears to be a bit of a Rorschach test. The post itself is …

Weekly Links: January 12th

JavaScript And The Web Manage Application State with Mobx-state-tree| Michael Weststrate on Egghead - Mobx-state-tree is an opinionated state library built on top of the unopinionated Mobx library. This is a free course explaining why it exists and how to use it. I wrote about Mobx last year and am …

Tips For Improving a Large Code Base With A Small Team

Over the last year I’ve been acting as the lone JavaScript resource working on a codebase with around 90k lines of JavaScript code. That has left me spending the vast majority of my work time trying to knock out features and deal with bugs across the large code surface area. But I’ve …

Weekly Links: January 5th

Working in The Tech Industry To Serve Man With Software | Jeff Atwood - This is a great review of the ethical questions that software developer’s face in the modern world. Is your work actually serving anyone who isn’t invested in your employer? Basecamp doesn’t employ anyone in San …

2017 Roundup

2017 was the 5th full year of this blog, and in many ways it was the most productive. I wrote one of the most popular things I’ve written on here, started the weekly links section (on hiatus for New Years, but will return next week), and wrote 21 full articles and 8 weekly links post, the most I’ve …

Weekly Links: December 23rd 2017

JavaScript And The Web 73,939,133 / Truncatable Primes | Reg Braithwaite - A nice writeup about how brute force can be useful in solving a Project Euler style math problem. Programming Tools and Practices Jest 22: Refinements & Custom Runners | Jest Blog - This looks like a solid refinement …

Weekly Links: December 15th 2017

JavaScript And The Web The State Of JavaScript 2017 - This annual survey of JavaScript developers always has lots of interesting insights. Since it is an internet survey, I view it less as a full snapshot of the industry, but more as a place to see what is new and trending in the JS world. This year …

Weekly Links: December 8th 2017

JavaScript And The Web Introducing the React RFC Process | React Blog - React is now using a public process for proposing and designing new features, starting with a new context API. Why we have banned default exports in Javascript and you should do the same | Krzysztof Kaczor - This lines up pretty …

Weekly Links: December 1st 2017

JavaScript And The Web Functional pattern: flatMap | 2ality - This post isn’t new, but flatmap and flatten hit stage 3 in the TC39 process for adding new features to JavaScript this week1. So this is a great time to read up on them. Stage 3 for Array.prototype.flatMap and …

Implementing The Sieve Of Eratosthenes in JavaScript

As a way of keeping my math skills sharp, I’ve recently started to work through the Project Euler set of computational math problems. They ask you not to post your work publicly, so I won’t be posting about any of my specific solutions, but I did think it would be fun to share about a helper method …

Weekly Links: Thanksgiving 2017 edition

In honor of Thanksgiving this week, instead of a list of writing from around the web, this week I’ll be linking to some of my favorite lesser known software tools, apps and gear. These are things that let me get things done, and I’m thankful for that. JavaScript Libraries Gatsby - …

Weekly Links: November 17th 2017

JavaScript And The Web Currying In JS | 2ality - A nice round up of the different approaches for using currying (a functional programming concept) in JavaScript. My favorite line: “One of JavaScript’s best traits is how many different styles of programming it can accommodate." This is one …

A Quick Browser Compatibility Checkup

I’ve written a few times about the state of browser compatibility and the web platform over the years. Over 4 years ago I linked to a post celebrating the rise of evergreen browsers. Then 2 years ago I was one of several people stressing about whether Safari was going to hold the web back. …

Weekly Links: November 10th 2017

I started this new thing last week, Friday Links. There’s a feedback form if you’re a regular reader and want to tell me what you think of it. Otherwise, enjoy the links! JavaScript And The Web Slaying a UI Antipattern in React – JavaScript Inside - This is an interesting case study of …

Improving Gatsby Blog Deploy UX

About a year ago I switched back to using a static site generator for this blog. Specifically, I chose Gatsby and it has been fantastic. It’s incredibly easy to customize and make my own, and I can do fun things like adding metadata to my posts to enable features like the “read …

Weekly Links: November 3rd 2017

Today marks the start of a new thing I’m trying with this blog: Friday Links (Edit: Since renamed to Weekly Links). Every Friday I’m going to be gathering some of the best links and content I’ve found that week and sharing it here. It will be primarily but not completely …

How To Give A Perfectly Adequate Conference Talk

Tech talks at conferences or meetups generally end up being experienced in one of 4 ways by audience members. It’s a disaster, and that leads to rage. This person is not just wasting my time, I don’t even understand what he’s trying to tell me. Is this a talk about Vue or just …

Taking Advantage of Jest Matchers (Part 2)

This post continues my look at Jest matchers from Part 1. In part 1 I covered the first 4 types of Jest matchers. In this post I’m going to cover contains matchers, async matchers, snapshot matchers, function matchers and meta matchers, as well as looking at a few extra tips and tricks for …

Taking Advantage of Jest Matchers (Part 1)

Back in May, my favorite testing library, Jest, released it’s 20th version and rebranded itself as the library for “Delightful JavaScript Testing”. Delightful and testing are two words that usually don’t go together in the software development lexicon. But that claim is the …

My Favorite Interview Question

I have a favorite question to ask in interviews for web developers. “How does the internet work? In other words, when I open a browser and enter a url then hit enter, and a website shows up on my screen what can you tell me about what is happening?” Usually I get one of a few responses: 1. The …

Ten Things A Serious JavaScript Developer Should Learn

There’s been an interesting Reddit thread circling my corner of the internet for the last week or so. It started with a question: I’m inviting pure opinion here, but what’s your list of ten things that everyone looking for a good javascript role should know and understand. Personally, I’m in a role …

How to follow the JavaScript roadmap

It can be difficult to keep up with all the things going on in web development, especially since the JavaScript language itself has been changing over the last several years. After several years of relative stability1, the ECMAScript spec (ECMAScript is the specification for the JavaScript language) …