Autoptimize 2.9 “Fountainbel” just released

Autoptimize 2.9 was released earlier today. It features:

  • New: per page/ post Autoptimize settings so one can disable specific optimizations (needs to be enabled on the main settings page under “Misc Options”).
  • New: “defer inline JS” as sub-option of “do not aggregate but defer” allowing to defer (almost) all JS
  • Improvement: Image optimization now automatically switches between AVIF & WebP & Jpeg even if lazyload is not active (AVIF has to be explicitly enabled).
  • Improvement: re-ordering of “JavaScript optimization” settings
  • Misc. other minor fixes, see the GitHub commit log

This release coincides with my father’s 76th birthday, who continues to be a big inspiration to me. He’s a mechanical engineer who after retirement focused his technical insights, experience and never-ending inquisitiveness on fountain pen design and prototyping, inventing a new bulkfiller mechanism in the process. Search the web for Fountainbel to find out more about him (or read this older blogpost I wrote in Dutch). Love you pops!

Autoptimize 2.9 release: Tuesday 27th?

Quick public service announcement; Autoptimize 2.9 is almost ready to be released but given the planned release of WordPress 5.8 (July 20th) and the risk of support requests mixing up WordPress core update related issues with the Autoptimize update related issues, Autoptimize 2.9 will probably be released one week after WordPress 5.8, so on or around Tuesday 27th.
If you’re eager to use 2.9 (with better image optimization, improved JS optimization and per page/ post Autoptimize settings) you can off course download the beta here immediately.

Pre-orders Boekenjagers-boek bijna afgesloten

Mijn vrouw, die bijna vijf jaar geleden de Boekenjagers oprichtte op Facebook, heeft zich naar aanleiding van verjaardag van die grootste FB boekengroep in Vlaanderen (meer dan 72.000 leden) nu ook in de wereld van het uitgeverij-vak gestort om het eerste Boekenjagers-boek uit te geven. Geloof me, als Veerle zich iets voorneemt, gaat ze er volledig voor en dat blijkt uit de indrukwekkende lijst van bijdrages van onder andere Lucinda Riley (!), Diane Broeckhoven, Toon Tellegen, Lize Spit, Patrick De Bruyn, Lectrr, Herr Seele, Boerken …

De pre-order fase loopt straks af, maar als je je haast kun je het boek nu nog aan €20 bestellen i.p.v. de €25 waarvoor het in augustus in de winkel zal liggen. Rep je dus naar https://boeken-jagers.be/boekenjagers-boek-pre-order/ en bestel er een paar, de opbrengst gaat naar 3 leesbevorderende goede doelen! 🙂

Autoptimize 2.9 final beta, testers wanted!

I just upped Autoptimize 2.9 beta to version 4, which is likely to be the last version before the official 2.9 release (eta end June/ early July).
Main new features;

You can download the beta from Github (do disable 2.8.x before activating 2.9-beta-4) and you can log any issues/ bugs over at https://github.com/futtta/autoptimize/issues
Looking forward to your feedback!

Gelezen: “Buzz Aldrin, waar ben je gebleven” van Johan Harstad.

Bitterzoet (maar zoals goeie fondant chocolade dat is) verhaal van een jonge man die enkel beleefd en onzichtbaar wilt zijn. Over enkel “een goed functionerend radertje” proberen zijn, maar daar niet in slagen. Over prachtig kunnen zingen, maar dat niet willen. Over liefde, verlies en vluchten. Over Noorwegen, de Faeröer eilanden en een heel klein beetje over de Caraïben. En over de Cardigans.
Aanrader; 4,5 ipv 5 sterren, voornamelijk omdat ik “Max, Micha & het Tet-offensief” nog beter vond.

Another Autoptimize 2.9 sneak preview: defer inline (and all) JS

JavaScript often has to be excluded from being aggregated due to inline JS depending on it. That’s why Autoptimize 2.9 will also have to option to defer inline JS, allowing all JS to be deferred, even that pesky jQuery. As seen in below screenshot exclusions obviously will be honored for both inline and linked JS so you will be able to tweak everything just right.

The settings for JavaScript optimization also have been reshuffled, making “also aggregate inline JS”, “force JS in head” and “try/catch wrapping” sub-options of “Aggregate JS” (so hidden on the screenshot as “aggregate JS” is off), whereas “Defer inline JS” is a sub-option of “Don’t aggregate but defer”.
So we have per post/ page AO settings and we now have “also defer inline JS” for what will become 2.9. And there’s more to come …

Autoptimize enhancement: feedback wanted

screenshot of the page/ post autoptimization settingsI’m in the process of adding a per page/ post option to disable Autoptimization.
In the current state of this work in process one can disable Autoptimize entirely on a post/ page or disable just JS optimization as you can see on the screenshot.
Now my question to you, Autoptimize user, is; what other options of below list _have_ to go in that metabox taking into account the list should be between 3 and 5 items long?

  • CSS optimization (which includes Critical CSS)
  • Critical CSS usage/ Inline & defer CSS
  • HTML optimization
  • Image optimization
  • Image Lazyload
  • Google Font optimization
  • Preload (from “extra” tab)
  • Preconnect (from “extra” tab)
  • Async (from “extra” tab)

Autoptimize 2.8.2 update “mishap” postmortem

This morning I finally pushed Autoptimize 2.8.2 out of the gates which was a relatively minor release with misc. small improvements/ bugfixes. Only it proved not that minor as it broke some sites after the update, so here’s a quick postmortem.

Timeline

  • 7h33 CEST: I pushed out 2.8.2
  • 7h56 CEST: first forum post about a Fatal PHP error due to wp-content/plugins/autoptimize/classes/external/php/ao-minify-html.php missing
  • 7h58 CEST: second forum post confirming issue
  • 8h01 CEST: responded to both forum posts asking if file was indeed missing on filesystem
  • 8h04 CEST: I changed the “stable version” back to 2.8.1 to stop 2.8.2 from being pushed out.
  • 8h07 CEST: forum post replies confirming the file was indeed missing from the filesystem
  • 8h15 CEST: I pushed out 2.8.3 with the fix
  • 8h22 CEST: confirmed fixed by first user
  • 8h26 CEST: confirmed fixed by second user

Root cause analysis

One of the improvements was changing the classname of the HTML minifier to avoid W3 Total Cache’s HTML minifier being used. For this purpose not only small changes were made to the HTML minifier code, but the file was also renamed from minify-html.php into ao-minify-html.php. The file itself was present on my local filesystem, but I did *not* svn add it, so it was never propagated to the wordpress.org SVN server, resulting in it not being in the 2.8.2 zip-file causing the PHP Fatal “require(): Failed opening required” errors.

Conclusions

Every svn ci has be proceeded by an svn stat, always. I’ve updated my “go live” procedure to reflect that.
Additionally; I strongly advise against automatic updates for Autoptimize (and I don’t auto-update any plugin myself), not only for major f-ups like mine today, but also because any change to how (auto-)optimization works needs to be tested for regressions. And if you have a site that generates money somehow, you really should have a staging site (which can auto-update) to test updates on before applying on production.

Contact Form 7 alternatives

Contact Form 7: trouble right here in volcano city!Given the major change in Contact Form 7‘s frontend JavaScript and the problems having to optimize the JS or cache the page after the update, the question I get asked frequently is what alternatives there are to CF7.
So here is a very quick rundown of 3 such alternatives:

  1. Gravity Forms: premium-only, visual form builder, very flexible, big ecosystem (lots of 3rd party plugins & integrations)
  2. Formidable Forms: has a free Light version, drag & drop interface for building forms, very flexible (we currently use this on autoptimize.com), lots of integrations but smaller ecosystem.
  3. HTML Forms: free plugin from the team that also develops “Koko Analytics” (which I now use on all my sites) and “Mailchimp for WordPress” with a premium addon for extra features, similar to Contact Form 7, no frills, very light on JS so great for performance.

My advice; try HTML Forms if you have rather standard contactform-like forms and you’re not looking for something fancy (which CF7 is not either), try Formidable if you need drag & drop form building or if you (will) need more flexibility/ integrations.

Music from Our Tube: The Lazy Eyes’ Where’s my Brain???

Having (had) lazy eyes myself I cannot help but sympathize with this band of Aussie youngsters. And “Where is my Brain??” is some crazy psychedelic motorik-beat (with a fill) driven piece of geniousness.
OK, that might be somewhat of an  exaggeration, but look & listen carefully headphones on and the volume turned to 11!

The Lazy Eyes - Where's My Brain??? (Official Video)