Blog

You can find my latest AI engineering articles on Substack, leadership on LeadDev, or browse my topic guides and personal blog posts below.

Personal Blog

Exploring The ES Decorators Proposal

Iterators, generators and array comprehensions; The similarities between JavaScript and Python continue to increase over time and I for one could not be more excited. Today we’r...

Auto-formatting JavaScript code style with JSCS

In my write-up on medium.com, I look at the powerful new auto-formatting feature in JSCS for automatically applying style guide rules in scripts. This has been in-development fo...

Chrome DevTools: State Of The Union 2015

As the complexity of the web apps you build keeps moving, so do the Chrome DevTools. In DevTools State of the Union, I walk through the latest updates on your favourite debuggin...

Slides: Advanced CSS Performance Tooling

These are the slides from my CSS performance tooling talk, presented at CSSConf.eu earlier this month.High-performance sites need to feel instant and deliver the goods in < 1...

Slides: JavaScript Memory Management Masterclass

Presented at at the Google WebPerf Special (London WebPerf Group), August 26th 2014.Efficient JavaScript webapps need to be fluid and fast. Any app with significant user interac...

Component Interop With React And Custom Elements

Today we'll look at how to wrap React components using Custom Elements, allowing us to interop with Web Component-based libraries using the DOM as a simple configuration API. Si...

Offline Browsing Secrets In Chrome

If you travel, you've probably found yourself stuck with zero network connectivity on more than one occasion. This sucks, especially if you just want to look up a few previously...

Front-end Choice Paralysis

Cross-posted from my article on the Pastry BoxA problem we regularly face in this industry is an abundance of choice. We have a plethora of tools, frameworks, languages, abstrac...

Video: Componentize The Web! talk from LXJS

Web Components are ushering in a HTML renaissance, encouraging us to think about how we can bring back the declarative simplicity of HTML to the components we write to...

Data-binding Revolutions with Object.observe()

A revolution is coming. There’s a new addition to JavaScript that’s going to change everything you think you know about data-binding. It’s also going to change how many of your ...

Deal with something once.

Cross-posted from my article on the Pastry BoxIf a task can be done in less than two minutes, do it right now.I find myself consciously procrastinating more than I would like. I...

The Web's Declarative, Composable Future.

The way that languages in the web platform evolve are in direct response to the pain caused by complexity. Pain is generally a bad thing and so it's with better patterns and pla...

Substack

LeadDev

Managing the chaos of context switching

It's time to examine the good, the bad, and the very ugly elements of context switching. Even better, we'll take a look at some strategies for managing it.

What makes an effective software engineer?

Being a good software engineer is not necessarily the same as being an effective one. Here, Google's Addy Osmani identifies the ten key traits of effective software engineers.