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 platform primitives that we can ease some of this complexity in the browser. Complexity on its own can take lots of forms, but when we look at the landscape of how developers have been building for the web over the last few years, common patterns can be one the most obvious things worth considering baking in solutions for. Layering the platform as part of the extensible web manifesto has been hugely helpful in making this possible. Continue Reading →



Spring-cleaning Unused CSS With Grunt, Gulp, Broccoli or Brunch

Spring-cleaning unused CSS

The tough economic times on Tatooine hit everyone hard, including the Jawas.

Delivering a fast experience on the web usually involves reducing server response time, minification of CSS/JS/HTML and an optimisation of images and above-the-fold content. We can further minimize the latency caused by stylesheet loading by removing unused CSS rules delivered to the client.

In this write-up, we’ll take a look at build tasks you can use to remove unused CSS in your pages. Before we begin, I thought it would be useful to share some success stories just to demonstrate that the tools here can be used to make a difference. Continue Reading →



Environment-specific Builds With Grunt, Gulp or Broccoli

Image credit:

Image credit:

The dev, staging and production versions of our projects can vastly vary, which is one reason we may need to change paths to resources (scripts/styles/templates), generated markup or other content based on environment and target-specific information. Luckily there exist a number of build tasks in the Grunt, Gulp and Broccolli eco-systems that can help us here.

Today I’ll cover three approaches to this problem – string replacement, conditional comments and template variables. The option you end up choosing will likely depend on where you’re happy for the bulk of your conditional logic to exist. Continue Reading →