2019-06-23: Avoiding Derived State In React A lot of advice in the React community is focused around avoiding explicitly storing “derived …

2019-02-10: Reusable Code In React: Inheritance, Composition, Decorators and Mixins Once you get past the initial complexity it creates by bucking conventions, React is the most …

2019-01-27: Improving Code Readability With Async/Await When it first became a part of JavaScript, I wasn’t sure how much I was going to use …

2019-01-20: Designing Front End Apps For Reliability In my recent post on Front End Architecture I identified Reliability as a key concern of front end …

2019-01-06: What's involved in Front End Architecture? The word “architecture” gets thrown around a lot in software discussions. But we …

2018-07-16: 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. …

2018-07-03: Evil JavaScript JavaScript developers sometimes complain that their language is unjustly maligned for having too …

2018-06-25: JavaScript “Stale Practices” Best practices don’t last forever. This is especially true when a field is changing fast, and …

2018-06-17: A Codemod Survival Guide Do you like making repetitive syntax updates across many files? Enjoy the thrill of painstakingly …

2018-06-04: ES6: The Bad Parts This month is the 3 year anniversary of the ECMAScript2015 spec, better known as ES6. It was a spec …

2018-05-13: MobX Patterns: State Machines & Flags A few weeks ago, I was listening to the React Podcast, specifically their episode on State Machines …

2018-03-15: JavaScript Proposals In Production This post was adopted from a twitter thread that outgrew it’s medium today. You can see the …

2018-02-06: React Architecture Confessions I’ve been reading through Clean Architecture by Robert “Uncle Bob” Martin this …

2017-11-27: 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 …

2017-11-14: A Quick Browser Compatibility Checkup I’ve written a few times about the state of browser compatibility and the web platform over …

2017-11-06: Improving Gatsby Blog Deploy UX About a year ago I switched back to using a static site generator for this blog. Specifically, I …

2017-09-04: 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 …

2017-08-15: Taking Advantage of Jest Matchers (Part 1) Back in May, my favorite testing library, Jest, released it’s 20th version and rebranded …

2017-07-19: 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 …

2017-07-10: 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 …

2017-02-26: Running Jest Tests Before Each Git Commit My main work project makes heavy use of Jest to test our JavaScript code. For a while now I’ve …

2017-02-13: Evaluating Web Apps With Lighthouse Last year Google coined the term “Progressive Web App” as a way of describing the type …

2017-01-09: MobX: First Impressions I spent some time around the holidays this year playing with MobX, a state management library for …

2017-01-02: Orthogonality and CSS in JS One of the realities of the constant change in the web development world is that “best …

2016-12-14: What are Higher Order Components? If you spend much time at all reading through articles and documentation around React, you’re …

2016-12-10: Saving Time With Jest: Meetup Summary This week I gave a talk at the brand new Triangle ReactJS meetup group on how Jest can save …

2016-09-19: Testing with Jest Snapshots: First Impressions Over the past 6 months my team at work has been slowly transitioning a large Backbone application to …

2016-06-26: Quick Tip: Take advantage of lodash collections One of the more frustrating things about using JavaScript in the browser is the number of different …

2016-06-04: What are mutable and immutable data structures? t Sometimes concepts and ideas slowly grow in a programming community, sometimes they seem to appear …

2016-05-01: Digging Into React: Choosing Component Styles Over the past month I’ve been building my first production features using React. One of the first …

2016-03-07: The Sad State of the Backbone Ecosystem For the past 2 years, ~90% of my coding time has been spent working on a large scale Backbone.js …

2015-12-29: ES6 Patterns: Converting Callbacks to Promises I've been writing code using the new features defined in the ECMAScript 2015 version of JavaScript …

2015-11-30: ES6 Patterns: Clean Higher Order Functions I've been writing code using the new features defined in the ECMAScript 2015 version of JavaScript …

2015-11-25: Productive JavaScript Development I’ve been thinking a lot lately about how we as a JavaScript community can enable more …

2015-09-13: ES5, ES6, ES2016, ES.Next: What's going on with JavaScript versioning? JavaScript has a strange naming history. For its initial release in 1995 as part of Netscape …

2015-09-09: Lessons Backbone Developers Can Learn From React Since I started programming professionally, I’ve always kept an informal list of technologies …

2015-07-06: Backbone and ES6 Classes Revisited A few weeks ago I wrote an article explaining why the final spec for classes in the ES6/ES2015 …

2015-06-14: Mozilla: The state of Web Components Over on Mozilla’s development blog, Wilson Page has a great summary of the current status of …

2015-06-08: How jQuery Works - An Introduction Every developer has had the experience of using “magic” code. Not the “hacked into …

2015-05-28: Moving Past RequireJS RequireJS has been a hugely influential and important tool in the JavaScript world. It’s still …

2015-05-25: marionette-service: Service Objects for Marionette Backbone.js is a great way to structure web applications. Its built in Models, Collections, Views …

2015-04-06: Why Backbone.js and ES6 Classes Don't Mix I’ve seen some confusion out there about how to use ES6 Classes with Backbone. In the original …

2015-03-23: Staying DRY with Marionette Behaviors This is the sixth post in a series on Marionette.js. For more background on what Marionette is, …

2015-02-22: Guillermo Rauch on ECMAScript 6 ECMAScript 6, henceforth ES6 and formerly ES.next, is the latest version of the specification. As of …

2015-01-26: Building Modular Web Apps With Backbone.Radio This is the fifth post in a series on Marionette.js. For more background on what Marionette is, …

2015-01-22: Is Bower Useful? I first heard about Bower about a year and half ago, and was immediately confused. Bower is branded …

2015-01-05: The Life of a Marionette View This is the fourth post in a series on Marionette.js, a framework for developing apps with …

2014-12-22: Building Complex Layouts With Marionette.js This is the third post in a series on Marionette.js. For more background on what Marionette is, …

2014-12-10: Marionette Explained: Connecting Data to Your Views This is the second post in a series on Marionette.js. For more background on what Marionette is, …

2014-12-01: The Case For Marionette.js Building large web applications using Backbone.js can be hard. Backbone is a great tool, but …

2014-11-23: Alternative JavaScript It’s become a bit of a cliche that JavaScript is the “machine code of the web”. …

2014-11-12: Underscore vs Lo-Dash Last week was the time for my team’s quarterly “dependency update” where we go …

2014-11-08: Thoughts on Angular 2.0 Rob Eisenberg has a pretty incredible rundown of the current Angular 2.0 proposal and the thought …

2014-10-12: Setting Up Your Text Editor For JavaScript Development The coding workflow for JavaScript developers gets better all the time. Over the last 10 years, the …

2014-08-28: Custom Elements By Example The best attribute of HTML is its ability to be simultaneously machine-readable and human-readable. …

2014-08-07: Component Based Development If you look back at the history of JavaScript and the client-side web as a development platform, you …

2014-07-09: Book Review: Building Backbone Plugins As the saying goes, judging a book by its cover is a dangerous business. A lot of books have titles …

2014-01-06: Digging Into Knockout Builds There’s a lot you can learn by looking through other people’s code. This is especially …

2013-11-14: Modern Dojo: Exploring declare This is part 2 of my ongoing exploration of Dojo’s important modules and concepts. …

2013-11-13: Modern Dojo: Exploring query It appears I’m going to be spending a significant amount of time working with the Dojo toolkit …

2013-05-07: Revertible Observables in Knockout Last week I was looking for a way to use KnockoutJS on a configuration menu that required the user …