
Tim Kadlec
6 FOLLOWERS
I'm Tim Kadlec. Working on WebPageTest, part-time book writer, co-chair of Performance.now(). Learn more about web testing, performance testing and more!
Tim Kadlec
4M ago
Yesterday, I opened up perfwork.com—a job board targeted at web performance enthusiasts—to the public.
I get a fair amount of folks asking me if I know of any companies hiring for roles that involve web performance work. I also get a fair amount of companies who contact me asking me if I know of anyone they can bring on board for roles that require some level of performance knowledge.
So, I figured, why not make it a bit easier for those companies and people to connect.
In the spirit of “what is the least bit you can do to validate there’s a need” (while also holding myself accountable), I sh ..read more
Tim Kadlec
5M ago
There’s a single panel comic, made in 2016, that tends to resurface every once in a while. The comic shows an iPhone that is overloaded with ridiculous features: a flip-out keyboard, extendable radio antenna, handstrap, AA battery compartment, kickstand and more. The title of the strip is simply “If Apple was a democracy…”.
I saw it again the other day as someone shared it, with a cautionary reminder that decisions about technological products cannot be a democracy. The image is comical, and I think all of us can think of products that have gone a little too far in this direction.
But the thi ..read more
Tim Kadlec
9M ago
There are increasingly loud rumblings that Apple will be allowing other browser engines to be used on iOS, and all I can say is it’s about time.
It’s not always obvious to folks, but the versions of Chrome or Firefox or any other browser you can download on iOS today still uses WebKit, Safari’s underlying engine, under the hood. So you’re not actually getting browser choice at all. It’s more than a little surprising they’ve been able to make that a requirement as long as they have.
Opening it up so that you can use actual Firefox or actual Chrome or actual Edge? That’s a huge win for browser d ..read more
Tim Kadlec
1y ago
At #SmashingConf San Francisco, Robin Marx gave a presentation about HTTP/3. Here are my notes.
HTTP/3 work started in 2012 with Google working on QUIC, adopted by IETF in 2017, RFC’s published in June 2022
All major browsers support thanks to iOS starting with version 16
What and Why?
HTTP/3 builds on top of UDP, not TCP
UDP often blocked as it is frequently used in attacks
The TLS + QUIC layer makes UDP safer to use, but a lot of networks will likely still block for awhile
HTTP/3 brings faster connection setup, better header compression, stream prioritization, packet loss handlnig, tunabl ..read more
Tim Kadlec
1y ago
One thing that jumped out while working on the JavaScript chapter of the Web Almanac was the incredibly high amount of time spent processing JavaScript on the median mobile page where Ember.js was detected. (The story was the same when I wrote The Cost of JS Frameworks.)
What we found was that the median site using Ember.js spent 21.9s dealing with JavaScript when loaded on an emulated mobile device. That’s a whopping 14.4s longer than the next closest detected library or framework.
It would be one thing to see a number like that late in the long-tail; if, for example, we saw that at the 99th ..read more
Tim Kadlec
1y ago
Client-side A/B testing has been a performance loving developer’s worst friend for years.
The way it works is you load in some JavaScript (typically from a third-party domain), and that JavaScript runs, applying the experiments you’re running for any given situation. Since those experiments usually involve changing the display of the page in some way, these scripts are typically either loaded as blocking JavaScript (meaning nothing happens until the JavaScript arrives and gets executed) or they’re loaded asynchronously. If they are loaded asynchronously, they’re usually with some sort of anti ..read more
Tim Kadlec
1y ago
My site (and several other side projects) is hosted on Netlify, so I had been eagerly awaiting access to Netlify Edge. I’ve been pretty vocal about my excitement for edge computing solutions, and having access to one right within Netlify would be very handy. One of the first things I planned to do once I had access was switch my images to be housed on Cloudinary, and then use Netlify Edge to proxy the requests through my own domain.
I hand-optimize my images (ok fine my computer does it but whatever) before I add them to my site, so they’re usually pretty small already, but there are limitatio ..read more
Tim Kadlec
1y ago
When I first stumbled on the idea of skeleton screens, thanks to Luke Wroblewski talking about them back in 2013, I latched onto them pretty quickly. I have never been a fan of progress bars and spinners, and skeleton screens seemed like a smart step in the right direction.
For those unfamiliar, a skeleton screen is a method of displaying the outline (skeleton) of the content to come, typically using gray boxes and lines instead of a progress bar while content is loading. It’s a pretty creative approach to handling wait—undoubtedly more creative and helpful than a perpetually spinning circle ..read more
Tim Kadlec
1y ago
I was analyzing a sites’ performance and I stumbled upon a particularly nefarious third-party widget.
I ran a profile on my MacBook Pro (a maxed out 2018 model) in Chrome Developer Tools to see how much work it was doing on the main thread.
It wasn’t pretty.
It turns out, the widget triggers four long running tasks, one right after the other. The first task came in 887ms, followed by a 1.34s task, followed by another 92ms and, finally, a 151 ms task. That’s around 2.5 seconds where the main thread of the browser is so occupied with trying to get this widget up and running that it has no breath ..read more
Tim Kadlec
1y ago
A while back, I wrote about using Netlify and SpeedCurve to A/B test performance changes. The one I specifically mentioned was testing out Instant.Page on my site.
While the bulk of the post is about the A/B testing setup (which I am very happy with), I did note at the end that I was seeing some small improvements from Instant.Page, though the results were far from conclusive yet.
Alexandre, the creator of Instant.Page, suggested on Twitter that the gains I was seeing were small because Netlify passes an Age header that messes with prefetching.
Tim, Netlify sends a Age header that conflicts w ..read more