I optimized 998 clicks for a given user story down to just 4 and this is how you can too.


The holy “px vs em” war wages on. But it never should have started. Not because one side is absolutely correct, but because these design decisions should not be reduced to binary. It’s not all or nothing or one or the other.

An unfocused lense captures the bokeh effect and reminds us not all users are perfectly sighted

This is a response to David Gilbertson’s rems and ems, and why you probably don’t need them post and addresses each section in order.

It’s definitely better for accessibility

David writes:

My point: you don’t need in depth knowledge and fancy tools for working out if rems and ems are ‘better for accessibility’ — just imagine that you are someone with bad eyesight


The year is 2017 and for better or worse JavaScript is everywhere. Tools like React allow us to virtualize our documents, making turning web pages into web applications more approachable than ever. But sometimes what we can do with these tools conflicts with what we should do with them.


Within the Web Development industry we say that if a page loads quickly it has good performance. But we’re wrong.

performance: the capabilities of a machine, product, or vehicle

That definition has the following synonyms: working, operation, running, behavior, capabilities, capacity, power, potential. Don’t worry you aren’t missing anything. Speed is not a synonym for performance. But if web performance is not about speed what is it about?


A cascade of windows with a select few uniquely ajar

Cascading Style Sheets are designed to, well, cascade. !important declarations overrides the cascading nature of CSS and are often considered to be a hack. You should avoid using them for the most part. But like most things proposed to the CSS spec, !important has several practical applications. But what are they?

When !important was first introduced in CSS1, an author rule…


Oh. You were expecting 10,000 tips weren’t you? You won’t find that many tips today. At least not here. But you will find some tips for keeping the initial weight of your progressively enhanced web experience under 10,240 bytes (10kB).

Start with HTML

Starting with HTML–first is crucial to creating lightweight progressively enhanced experiences. It is also the center of an accessible experience. JavaScript is great, but not all users receive JavaScript


URLs (Uniform Resource Locators) are how we arrive at a given location on the web. Similar to how a building has a unique address, every web page has a unique URL. In addition to navigating to a specific webpage, URLs can take us to a specific part of a webpage.


You’ve been experimenting with React lately and you are aware that in accordance with accessibility, SEO, and performance best practices you should serve a semantic HTML document that React enhances — not creates. But how do you author an initial synchronous experience and an enhanced asynchronous experience isomorphically?


Inlining critical CSS is an optimization technique designed to make your site render blazingly fast. But does it?

JP de Vries

Senior Application Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store