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.


Want to work with me?

Hey all. The blog is still on pause, but I wanted to take a moment to share that I’m hiring for my team at Whatcounts. This is a mid-level position focused on coming in and helping me build a new React-based UI for an older Java based SaaS application. You’ll get to work with modern …

Pressing Pause

Due to a plethora of life events happening this year, I’m going to be putting the blog on pause for a while. So no more updates through the end of the year. Will re-evaluate then and hopefully start things back up. I have plans to take the weekly links stuff I’ve been doing the past year …

Weekly Links: September 30

Javascript & the Web Principles of Component API Design | Chris Schmitz Good advice for designing React components Programming Tools Sublime Merge A new Git tool from the makers of Sublime Text. Looks lightning fast, good looking and usable. Exactly what you’d expect. I’m not a big …

Weekly Links: September 23

Javascript & the Web The Rise of Immer | Shawn Wang I’m a few weeks late on this one, but it is worth your time. Shawn breaks down a new trend in React state management: the increasing popularity of Immer as a base for improving state management APIs. I’m particularly interested in …

Weekly Links: September 16

Javascript & the Web The 12 Things You Need to Consider When Evaluating Any New JavaScript Library | Sacha Greif This is a smart set of criteria to consider when looking at new tools. I’d add that it’s always worth comparing a library to a “do it without the library” …

Weekly Links: September 7

JavaScript And The Web State of JS Survey | Raphaël Benitte, Sacha Greif & Michael Rambeau This survey is always a great look into the JavaScript community, and it just opened for this year. If you’re reading this, please fill it out. I’ll look forward to seeing what they’ve …

Weekly Links: September 1

JavaScript And The Web Reverse Engineering React | Angular In Depth A really cool look at how you can approach a new code base and start learning how it works quickly Programming Tools Bowler | Facebook Open Source This looks like “JSCOdeshift for Python” to me: a way to quickly update …

Weekly Links: August 18th

JavaScript and the Web Bits | Ethan Marcotte I’ll pretty much always link performance posts that do a good job laying out the challenges in a way that respects both the technical and business POV. Ethan advocates here for a more structural view to performance problems on the web and wonders …

Weekly Links: August 5th

JavaScript and the Web The Cost Of JavaScript in 2018 | Addy Osmani This was a great breakdown of how exactly large JavaScript bundles cause sites to be slow and how that impacts business needs. These type of advocacy pieces have a tendency to clump all businesses together a bit too much1, but Addy …

Feedback Loops

How do we get better faster? It’s amazing to consider the amount of money, thought and effort that has gone into solving that one simple problem in software development over the past 2 decades. Here’s a small sample of buzzwords, trends and methodology that are concerned with reducing …

Weekly Links: July 28th

JavaScript and the Web Getting to Know a Legacy Codebase Harry Roberts I like this advice on approaching a new codebase. Some of it is CSS specific but the general ideas of tackling the important bits, experimenting with changes, and using tools as much as possible to catch regressions apply across …

Weekly Links: July 20th

JavaScript and the Web Building the Google Photos Web UI | Antin Harasymiv An amazing detail-laden look at the design and engineering decisions that go into a top of the line web photo experience. One of the best front end reads I’ve seen this year. What’s Happening With the Pipeline (|>) …

Quick Tip: Logging In Breakpoints

Stop me if this sounds familiar: you see a bug on your site. You want to know what’s going on. You fire up the developer tools, put a breakpoint in the area you think is a problem, and… the error doesn’t occur while it’s being debugged. Probably it’s a timing issue, …

Prime Generation Revisited

I’ve been wanting to try learning a new programming language again for a while, and this weekend decided to play around with Go for the first time in a while. Go is a statically typed, compiled language useful for systems programming, which makes it a nice complement to my 2 primary languages, …

Weekly Links: July 13th

JavaScript and the Web What is JSX? | Kent C Dodds If you were introduced to React “all at once” and didn’t learn it from the basics up, JSX may feel a little bit like magic syntax. This is a solid explanation of what JSX syntax actually compiles to under the covers. It demystifies …

Book Review: The Five Dysfunctions of a Team

The nice thing about team books is that they’re talking about a subject that almost everybody can relate to. The Five Dysfunctions of a Team by Patrick Lencioni is a book for leaders, but it’s also a book for anyone who wants to better understand why they problems they see in their teams …

Weekly Links: July 8th

A small list this week as it’s a holiday in the states. So fewer articles out there, and I’m sure I missed some of them. Programmer Life My Lessons from Interviewing 400+ Engineers | First Round Review I’m nowhere near Marco’s experience level interviewing, but his advice in …

Evil JavaScript

JavaScript developers sometimes complain that their language is unjustly maligned for having too many confusing features. Plenty of other people are out there explaining why this is misguided, but for this post I want to lean in. Rather than falling into the traps that JavaScript exposes you to, …

Book Review: Atomic Design

The Unix philosophy for designing software, “Make each program do one thing well”, is a piece of wisdom that goes beyond just programming. For instance, it also applies to non-fiction writing. When learning, I find that I gravitate towards small focused resources, rather than monolithic …

Weekly Links: June 30th

JavaScript & The Web Headless User Interface | Merrick Christensen UI mixins are one of the hardest problems to solve. Sharing “behavior” across multiple UI components is difficult to do right. Merrick has documented an emerging pattern for doing this with React. React Native at …

JavaScript “Stale Practices”

Best practices don’t last forever. This is especially true when a field is changing fast, and JavaScript development has changed a lot over the past 10 years. The old best practices go stale, and new ones take their place. Here are 5 JavaScript best practices that have gone stale recently. …

Weekly Links: June 23rd

JavaScript & The Web Announcing Gatsby v2 beta launch! | GatsbyJS Gatsby continues to be one of the most exciting things happening in web development. If you’re unfamiliar, Gatsby is a tool for building performant content-focused sites with React and GraphQL. This blog has been built on it …

Code Golf: Sparse Arrays

Today on Twitter, Axel Rauschmayer posted a fun little coding challenge: Code golf: check if an Array has holes. I’ll reply with two ideas of mine in a few minutes. — Axel Rauschmayer (@rauschma) June 19, 2018 For context, code golf is a type of challenge where participants attempt to find the …

A Codemod Survival Guide

Do you like making repetitive syntax updates across many files? Enjoy the thrill of painstakingly combing through 1000 line diffs that all look the same to see if you made any typos? Relish that feeling of doubt in the back of your head as you wonder whether you actually caught all instances of the …

Weekly Links: June 15th

JavaScript & The Web GraphQL Stack This is a nice overview of the technologies involved with GraphQL, for anyone who has heard of the technology but isn’t quite sure how it all fits together. Understanding The Almighty Reducer | Sarah Drasner Moving from a loop mindset to making proper use …