1 private link
Looking back on four decades in the software industry, I’m struck by how much has changed. I started my career with punch cards and I am ending in the era of cloud computing. Despite all this change, many principles that have helped me throughout my career haven’t changed and continue to be relevant. As I step away from the keyboard, I want to share six ideas I’ve learned from my career as a software engineer.
After a lot and fun work for over a year, varied from things that were low-effort to a few that were advanced, we’ve done it.
We’ve made Skroutz.gr faster.
Performance is a feature at Skroutz. But it is also a competitive advantage. Optimized experiences lead to higher user engagement, conversions, and ROI.
Let’s stop here and recap:
- Individual experiences are just data points along a distribution. What feels fast depends on the conditions under which it was experienced. Everyone’s conditions are different.
- Lab tests may not be configured to be representative of the most common experiences on the curve, or any experience on the curve for that matter.
- User-centric metrics require extra care to ensure that behaviors are emulated faithfully in the lab.
[…] An even better solution would be to build stronger data bridges between field and lab tools, so that the lab tool itself can make informed recommendations about the most realistic user profiles to simulate.
Embedding the resource directly removes the latency that’s incurred when the browser makes a separate request for the resource and so for critical resources it can make pages render faster.
But data URIs also come with quite a few trade offs too.
In this article, we will explore some of these native solutions that are available to the majority of your users. We will see some examples but we won’t go into all the subtleties, because other resources do so very well. Rather, the goal is to inform you of the existence of these techniques.
- The science behind Web Vitals was kind of weak, referencing many studies that Gilles Dubuc showed us were based more on feelings than science.
- You could only get those metrics from Chromium. Are they really Google Web Vitals if you only can get them from one of the browser engines? I think if we’re introducing something that’s supposed to be vital for all users, it should exist in all browsers.
- Almost all performance tools implemented the metrics (for Chrome) immediately. Google said jump, and web performance tool vendors said: ‘How high?’. A little more caution would have been good. I also felt the pressure of adding those metrics to the tools I build. Google’s monopoly on web performance metrics is not good for the web, I think.
I have worked on many sites and projects over the years, and I have found the single best way to ensure that quality is a core area of focus, is to make that work visible and easily understood. We must do more than just make things faster; we must be able to explain what we did and what impact it had.
First-party JavaScript often impacts the interaction readiness of modern pages on the web, but it can often get delayed on the network behind non-critical JS from either first or third-party sources that keep the main thread busy.
tl;dr: Use traffic frequency as cadence and create cohorts. Effects of improved web performance can show better in a well-defined cohort. Regular users can have trained behavior that resists change.
If there’s connection one thing I’d like readers to take away from this post it’s that
font-display: swap
is a very good option for users with a fast internet. But its infinite swap period could be frustrating for users on very slow and unstable connections. If you have users viewing your site under these conditions (I’m pretty certain you will at some point in time), then it may be worth consideringfont-display: fallback
or evenfont-display: optional
. Both have a short swap period (or no swap period), meaning once the fallback font is rendered and the 3 second timeout is exceeded, the font won’t change for the rest of the page lifecycle.
In this post I'll outline 8 image loading optimization techniques to minimize both the bandwidth used for loading images on the web and the CPU usage for image display.
Let’s talk about eliminating font stylesheets as a render-blocking resource, and walk through an optimal setup that not only makes Lighthouse happy, but also overcomes the dreaded flash of unstyled text (FOUT) that usually comes with loading fonts. We’ll do all that with vanilla HTML, CSS, and JavaScript, so it can be applied to any tech stack.
Today, ES2017 is the closest to modern syntax and tools such as npm, Babel, webpack, and Rollup have made it possible to configure your build system and write your packages using this syntax. This post covers several approaches, and you should use the easiest option that works for your use case.
My goal is to improve the user experience and the business outcome day by day. I am still looking for a tool that tells me what to focus on today to make the most significant impact. As this is the perfect time of the year to create a wish list, here is mine.
Reducing your web pages' size helps with both load time for people with slower internet connections and them having access to your pages in the first place.
Tech is always political. The way data is collected and handled is often biased, and many products are neither accessible nor inclusive. Ethical Design Guide is made to share resources on how to create ethical products that don't cause harm.
We believe that our system, coupled with a complete set of open-source models, would allow upcoming developers and us comprehensively study configurations under which optimizations fail to provide their advertised performance improvements.
Dropdown, navigation button, tooltip, collapsible panel, lightbox, tabs, switch like above…
UI components made in minutes without worried about JavaScript. Only set a few HTML attributes, and code the rest with your CSS skills.
Alpine.js offers you the reactive and declarative nature of big frameworks like Vue or React at a much lower cost.
Stimulus is a JavaScript framework with modest ambitions. It doesn't seek to take over your entire front-end—in fact, it's not concerned with rendering HTML at all. Instead, it's designed to augment your HTML with just enough behavior to make it shine. Stimulus pairs beautifully with Turbolinks to provide a complete solution for fast, compelling applications with a minimal amount of effort.