Thom Yorke playing new Radiohead songs in Paris

Thom Yorke played a solo-gig (well, Flea joined, so not entirely solo, but still) in the context of the climate-conference in Paris. He didn’t play the could-have-been Spectre title-song, but instead 3 other new songs were on the playlist, along with older material from both Radiohead and Atoms for Peace;

Thom Yorke live en Paris (Full) 4 de Diciembre, 2015

Have a blast guys & girls!

HTTP/2 & JS/CSS optimization: eBay’s approach

Quick follow-up to my previous post about HTTP/2 and Autoptimize; I just read “Packaging for Performance“, an interesting article on Performance Calendar by eBay’s Senthil Padmanabhan. Well worth the read, but the summary; their research confirms bundling of JS/CSS still has clear performance benefits, but they did stop bluntly aggregating all in one file to improve cache-ability. This leaves them with;

  • one optimized JS and one optimized CSS file for the core libraries, used throughout eBay, high cache-ratio & payload
  • one optimized JS and one optimized CSS file for the “domain constants”, used on specific eBay segments, medium cache-ratio & payload
  • one optimized JS and one optimized CSS file for the “domain variables” containing fast changing code for specific segments, having lowest cache-ratio and payload

So yeah, I see a bright future for Autoptimization in the coming age of HTTP/2! :–)

Making Autoptimize faster

One of the big changes in Autoptimize 2.0 (estimated released between Christmas & New Year) is a significant improvement in the minification speed (30% faster should be no exception). As a quick reminder, this is what Autoptimize did until now;

  1. extract code from HTML & remove original references
  2. aggregate all code into one string
  3. check if a minified version of that string exists in cache
  4. if not in cache;
    1. minify that string
    2. store the result in cache
  5. inject reference to cached autoptimized code in HTML

It is the actual minification in step (4) which can slow Autoptimize down (hence the importance of making sure your cached files are reusable). In Autoptimize 2.0 above logic was changed to improve performance;

  1. extract code from HTML & remove original references
  2. aggregate all unminified code into one string, but only put a reference to already minified files (*min.css and *min.js)
  3. check if a minified version of that string exists in cache
  4. if not in cache;
    1. minify that string
    2. replace references to minified files with (slightly optimized) contents
    3. store the result in cache
  5. inject reference to cached autoptimized code in HTML

As the to-be-minified string is smaller, the JS- & CSS-minifiers have less code to optimize, indeed speeding up the process significantly. Additionally this also reduces the chances of problems with the re-minification of already minified code (e.g. p. So nothing but advantages, right?
Now this was tested rather thoroughly and all known kinks have been ironed out, but If this “injected minified code late”-approach does not work in your context, you can simply disable it by hooking into the API and setting the autoptimize_filter_js_inject_min_late and/ or autoptimize_filter_css_inject_min_late filters to false (use code snippets rather then adding it to your functions.php);

function no_late_inject() {
	return false;

HTTP/2, CSS/JS concatenation and Autoptimize

The web performance world is abuzz with HTTP/2, which should (among other improvements) do away with the latency that each separate HTTP-request introduces, thus rendering aggregation of e.g. CSS & JS an anti-pattern. But there’s at least one in depth facts and figures based article that is not ready to dismiss “packaging” just yet. So: testing, testing, testing!
Autoptimize will in the not too distant future very likely have a “don’t aggregate, just minimize”-option, but the proof of the pudding will always be in the eating testing; sometimes it will be better to aggregate and minify as we do now, sometimes only minifying will be the better approach. And maybe (often?) a combination of those will make most sense: suppose you have a site on which 90% of pages share 90% of JS code. In that case it will likely (testing, testing, testing!) help performance to aggregate & minify the 90% of JS while excluding all other JS from aggregation (and minifying that). Sounds like the new whitelist-filters in Autoptimize’s API will come in handy no? 😉

Firefox OS dead or just resting?

So Peter-Paul Koch (Quirksmode) declares Firefox OS dead. I’m afraid he’s right. A pity really, as I loved the idea of an entirely open web-based mobile OS. Mozillians don’t agree, saying they’re just not going offer Firefox OS phones through carriers any more.
Or maybe It’s just resting?

Customer: I wish to complain about this here fox what I purchased not half an hour ago from this very boutique.
Shopkeeper: Oh yes, uh, Firefox OS …What’s,uh…What’s wrong with it?
Customer: I’ll tell you what’s wrong with it, my lad. It’s dead, that’s what’s wrong with it!
Shopkeeper: No, no, ‘e’s uh,…it’s resting.
Customer: Look, matey, I know a dead fox when I see one, and I’m looking at one right now.
Shopkeeper: No no it’s not dead, it’s restin’! Remarkable software, Firefox OS, idn’it, ay? Beautiful openness!

Bringing Autoptimize 2.0 (beta) to a Christmas-tree near you

While over the last couple of months Autoptimize was quietly picking up users to reach 100.000 active installations, work was ongoing on the next version, the magical 2.0 (the PowerUps mentioned here before are still on the roadmap, albeit with some delay as I want AO 2.0 out first). Yesterday I uploaded what I consider to be the first Beta of Autoptimize 2.0 to the plugin repository and before inviting you to download & test this release I think this is the ideal moment to document some of the changes in that new version. Here goes;

  • Option to (de-)activate aggregation of inline JS and CSS which would allow to fix or prevent some of the recurring problems people have with AO (I’ll post a follow-up post on this with more info soon).
  • Option to remove Google Fonts (special request from my favorite user who obviously doesn’t like (Google) Fonts and who is too lazy to just dequeue them).
  • On average 30% faster minification (I’ll spill the beans on how that was done and what this implies in a later blogpost)!
  • Cache-size will be checked daily and a notice will be shown on your wp-admin pages if cache size goes over 512 MB (threshold can be changed using a filter).
  • Small autoptimized CSS (e.g. some print CSS) will be inlined instead of linked (256 characters by default, can be changed using a filter).
  • New in API: filters to declare a JS and CSS whitelist, where only files in that whitelist are autoptimized and all others are left untouched.
  • New in API: filters to declare “removable” CSS and JS, upon which Autoptimize will simply delete that code (emoji’s for example, if you prefer not to dequeue them).
  • lots of small and bigger bugfixes, I won’t bother you with a full list but have a look at the commmit log on GitHub.

I consider the code for this version feature-complete (have to keep some things up my sleeve for later versions), but what is needed now is testing, bug-reporting, bug-fixing and more testing. And translations, if you’re into those (I already contacted some earlier contributors). You can download Autoptimize 2.0 beta here, bug-reports are more then welcome on GitHub as an issue.
I’m pretty excited about this new version, so I’m looking forward to your feedback! Who knows we can push this out before the year is over?

Music from Our Tube: Jeff Buckley & Liz Fraser

Just for the very first time heard this amazing duet between Jeff Buckley & Liz Fraser (ex-Cocteau Twins):

Jeff Buckley & Elizabeth Fraser - All Flowers In Time Bend Towards The Sun

Some background from a 2009 interview with Fraser:

After parting from Guthrie, but still in the same band, Fraser struck up an intense relationship with Jeff Buckley after they became infatuated with each other’s voices. Again, emotion produced music. A sublime duet they recorded called All Flowers in Time Bend Towards the Sun is floating around the internet, to her irritation.
“Why do people have to hear everything?” she complains. I tell her it’s wonderful. “But it’s unfinished, you see. I don’t want it to be heard.” There’s a pause. “Maybe I won’t always think that.”
Buckley died in 1997, by which time they had lost touch – Fraser had grown frustrated with his constant touring, a reaction that weighs heavily on her. “I just wish I’d been more of a friend,” she says, softly. “His career was everything to him, and I wish I had been more understanding – happy with a different kind of relationship. I missed out on something there, and it was my fault.”