The future of data-binding is Object.observe()
Object.observe() is a proposed mechanism for bringing true data-binding to the browser. It exposes a mechanism for observing changes to objects and arrays, notifying o...
You can find my latest AI engineering articles on Substack, leadership on LeadDev, or browse my topic guides and personal blog posts below.
Object.observe() is a proposed mechanism for bringing true data-binding to the browser. It exposes a mechanism for observing changes to objects and arrays, notifying o...
♡ Web Components? I just published a brand new tutorial over on HTML5Rocks walking through how to build webapps with Yeoman and Polymer.Catching up on Web ComponentsNow you migh...
[caption id="attachment_6153" align="aligncenter" width="600"] When scroll is fast your web pages feel "responsive". If janky and scroll feels slow your users may get frustrated...
In this video, I walk through generator-bootstrap - an uber-simple Yeoman generator which prompts you for the flavour of Twitter Bootstrap you would like to install for a projec...
I was asked if it's possible to patch back Chrome DevTools based changes to a DevTools extension. For example, CSS changes made to the Elements panel. The current solution to th...
I recorded a quick video on getting started with Yeoman for anyone new to the project : ) You might also find building apps with the Yeoman workflow a helpful read.
Yesterday I published a refreshed guide to plugging memory leaks over on the Chrome DevTools docs site. It covers the Object allocation tracker, timeline memory, heap profiles a...
As we saw a few weeks ago, the weight of an average web page is now almost 1.5MB (median ~1MB), with > 50% of this being images. It's a harsh reminder that many of our pages on ...
In this quick video, I walk through using Web Components with Polymer covering: custom elements, templates, Shadow DOM and HTML Imports.Note: You might also find the n...
In this quick video, I walk through how to effectively use DevTools Flame Charts for visually representing your app's JavaScript processing over time. This can be usef...
As Mat Marquis recently summarized on SmashingMag, the srcset attribute allows developers to specify a list of sources for an image that are delivered depending on the pixel den...
I'm pleased to present a re-write of the Backbone TodoMVC app using ECMAScript 6 features such as classes, modules and fat-arrow syntax.Check out the literate version of the sou...
[caption id="attachment_5645" align="aligncenter" width="703"][A preview of the terminal output after running 'yo'[/caption]Last week, I had the pleasure of 'officially' releasi...
In this video, Paul and I demo a new experimental bookmarklet he wrote for detecting critical CSS for above the fold content.External CSS stylesheets are render-blocki...
ECMAScript 6 is being progressively implemented by browser vendors over time and as such there is no ETA on it being available in all environments.Whilst specs and implementatio...
Package management is an important and evolving area in front-end development. It's also a contentious one with some favoring Bower, others preferring npm and Browserify and a n...
IntroductionDevelopers working in agencies often tell us that they want to be able to use modern front-end tooling in their workflow. One set of options this manifests as is usi...
In my new article with Paul Lewis on Smashing Magazine, we discuss how to improve the paint performance of your websites and Web apps. This is an area that we Web developers hav...
Yesterday, I looked at the new Daft Punk web experience on Pitchfork. It was visually stunning, featuring rich-animations throughout. I noticed however that scrolling on the pag...
Preface: This article assumes prior knowledge of Grunt, the JavaScript task runner and that you've heard of Traceur, the ES.next to ES5 transpiler by Google. Getting started...
“The Unicorn has a special ability to help it's master when in trouble. When tamed, they will not attack humans or tamed creatures, but will attack anything else with ...
Today we're happy to announce the release of Yeoman 1.0 beta 4. A number of large updates have been made to the project since beta 3, covering scaffolding, performance impro...
The past year has seen many leaps made to improve developer productivity through better tooling. We're paying increasing attention to our workflow and many of us have spent ...
At my jQueryTO keynote on paint optimization, I mentioned the performance benefits of promoting DOM elements to a composite layer using GPU acceleration in Chrome. Moving compos...
Practical strategies for engineering careers in the future
A field guide and why we need to rethink our expectations
Engineering with user empathy is the foundation of great products
How to thrive in imperfect conditions
Navigating comparison with mindfulness
Actionable advice for empowerment
My lessons learned along the way.
Extending your influence past your immediate circle isn't as straightforward as you'd like to hope. But there are a few strategies you can employ to help.
Building a tech strategy requires a lot of moving parts. Learn about what routes to take and whether decisions should be top-down.
With so many developments in the tech world it's difficult to keep up. Here are some strategies to stay on top of your upskilling.
How can you prioritize when everyone's ask is an urgency and you don't have time to fit it all in?
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.
Software engineering teams should focus on outcomes over outputs to deliver the best user and business value.
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.