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

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...

Ghostbusting For Front-end Developers

Human sacrifice, dogs and cats living together... mass hysteria! We’d like to avoid that, right? Well, today we’re going to talk about how to improve the accuracy of your front-...

Full-Stack JavaScript With MEAN And Yeoman

IntroductionA trend proliferating amongst prototypers in the Angular community is full-stack JavaScript development via the MEAN stack.The acronym stands for: (M)ongoDB - a noSQ...

Use Your Terminal From Inside Chrome DevTools

I just wrote an article for HTML5Rocks on a new DevTools extension that allows you to use your terminal directly from inside Chrome. This is a huge milestone for in-browser prod...

Mobile Web Development Tooling (Slides)

In my mobile web dev. tooling slides, we dive into the options available today for cross-device development, testing, and performance evaluation of multi-device webapps. Underst...

Slides: Automating Front-end Workflow

Writing a modern web app these days can sometimes feel like a tedious process; frameworks, boilerplates, abstractions, dependency management, build processes..the list of requir...

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.