Categories
Outdoors

Story: Running on Mount Tabor

I just published my first Web Story using the new Web Stories plugin, sharing some highlights of one of my favorite things to do: running on Mount Tabor. The images were taken on a Pixel 4 XL. The time-lapses were taken at 5x speed while I was walking. The Web Stories editor doesn’t yet have […]

Categories
AMP WordPress

Integrating with AMP Dev Mode in WordPress

tl;dr In v1.3 the AMP plugin for WordPress no longer has to remove the Admin Bar to keep pages valid AMP. The AMP plugin allows WordPress themes to be developed as usual and have their templates and stylesheets used to serve valid AMP pages. It does as much as possible to prevent serving invalid AMP […]

Categories
CLI

Creating command aliases for Lando tooling

I’m a big fan of Lando. Since first learning about it, I’ve switched from using a virtual machine with Vagrant (i.e. VVV) to using Docker containers for my day-to-day local development environment. Docker on its own is not the most ergonomic (at least, I’m not an expert), so wrappers like Local by Flywheel make it […]

Categories
AMP WordPress

AMP for JavaScripters

Today at the JavaScript for WordPress Conference (#JSforWPConf), Felix Arntz and I gave a talk called AMP for JavaScripters about implementing interactive interfaces in AMP. Here’s the abstract we submitted for the talk: As we all know, adding JavaScript to a web page allows for dynamic page modifications. However, with that flexibility comes great responsibility: […]

Categories
WordPress

Using the AMP Plugin to Protect Site Visitors and Debug Security Vulnerabilities

Case study in how the AMP plugin for WordPress revealed a security flaw in a popular plugin. Not only did the AMP plugin prevent the XSS vulnerability from being exploitable, but it also pinpointed the code responsible.

Categories
WordPress

Creating Gutenberg Blocks without a Build Step via HTM

If you’ve ever looked into developing a block for the new WordPress editor (Gutenberg), you’ve seen that it’s recommended to code it up with JSX. Blocks are powered by React and the JSX syntax is significantly more readable and less verbose than the ES5-compatible syntax. For example, compare this ES5 code: With this equivalent in […]

Categories
Uncategorized

Becoming a Googler

I often see tweets from people in the industry announcing major career changes; I never expected that I would be adding to this stream, but today I am. After more than 8 years at XWP/X-Team, I am starting at Google as of October 1st. I’m joining the Developer Relations team at Google to work on […]

Categories
WordPress

WordCamp Europe 2018 Recap: AMP and PWA

Recently I attended WCEU 2018 in Belgrade with quite a few colleagues from XWP. We were there in large part to promote the adoption of progressive technologies in WordPress. We spent a lot of our time at the Google booth where we had an area to talk about contributing to WordPress across a wide range of roles. I spent […]

Categories
WordPress

Remember Me Easter Egg

Here’s a fun little easter egg to add to your WordPress login screen: make it so when you click the “Remember Me” checkbox that the song of the same name from Coco autoplays at the bottom of the login form: Here’s a quick and dirty plugin that does it:

Categories
Technology

Spoken Word: Bringing Read-Along Speech Synthesis to the Web

Update 2020-01-16: Back in December 2009 I did a hackathon to create an HTML5 Audio Read-Along (demo) which highlighted the text of words spoken in the corresponding audio being played. To introduce the project I wrote: When I was in college, my most valuable tool for writing papers was a text-to-speech (TTS) program [ReadPlease 2003]. I could […]