BionicWP: Thank you for taking the time out for this interview Shane. Can you start off by telling us a little about yourself and what inspired you to create a kick-ass plugin like EWWW Image Optimizer?
Shane: To be honest, the inspiration didn’t come until after I had released the plugin and saw the results. It was in the Spring of 2012, and I was working on a site for a client that had a lot of images. I was trying to build a business on the side that would cater to making sites fast (Exactly WWW), and when it came to image optimization, I hit a bit of a road-block. I already knew how to compress images on the command-line, but I didn’t want this client to have to do that all the time. I knew that if it came down to it, they would just upload non-optimized images, and all my work would be for nothing. There weren’t any good GUI options back in 2012, so I went looking for a WordPress plugin. The most popular one was built on the original Yahoo Smush.it API. However, outages were far too common and it would only optimize images under 1MB, so I didn’t get very far with it. The other plugin at the time was the CW Image Optimizer, which used command-line tools “under the hood”. Unfortunately, CW Image Optimizer was built for folks with root (admin) access to their servers, and I was using shared hosting.
I took a look at the source code and wondered if I could rewrite it to work on my webhost. After a few days work, it was done, and could operate with jpegtran, optipng, and gifsicle installed in my /home/ folder. I renamed it EWWW Image Optimizer (EWWW = short of Exactly WWW), and submitted it to the plugin repository in case it would be helpful to anyone else that was on shared hosting. In the first week, 500 people had downloaded it, and folks were already asking for more. I knew then that this plugin could fill a need for lots of folks, and it inspired me to continue working on the plugin in my spare time.
BionicWP: What was your first step in building EWWW Image Optimizer? Did you create a Product Roadmap to help envision the direction of the product?
Shane: As a free plugin in 2012, a Product Roadmap was the last thing on my mind! I did have some things in mind that I wanted to improve, so as more folks started using it, I implemented a bulk optimizer, and support for the NextGEN Gallery plugin that I was using on that original client site. Just about everything from that point on was user-driven. If someone had an idea, and it didn’t sound crazy, I went for it!
There weren’t any paid options until late in 2013, as it became evident that lots of folks didn’t have web hosts where the free version would work. I wanted to help more of them get their images optimized, so I set up a couple VPS systems to optimize images and see if we could at least cover costs. One was with HP, as they had a free month trial, and the other was a $5 Digital Ocean VPS.
Since then, lots of other plugins have popped up, and even WP Smush got a breath of new life with new ownership, but one thing remains. We are dedicated to helping our users speed up their websites, and development is heavily driven by user feedback.
BionicWP: Any other exciting projects on WordPress that you have done in the past and recent? Were there any challenges that you faced, if yes, how’d you deal with them?
Shane: There are a few other plugins I’ve worked on over the years. I inherited the Imsanity plugin after Jasoh Hinkle tragically passed away, and one of our mutual users suggested that I consider taking on the plugin for adoption. It had over 200k users, so that was a no brainer for me. Again, I love helping folks, so being able to impact another 200k sites was something I couldn’t turn down.
A few years ago, I also forked our main plugin into EWWW Image Optimizer Cloud to address a growing number of web hosts that would not permit code on their servers with the exec() function. The exec() function can be dangerous if not handled properly, but yet it is necessary for the free version of EWWW IO to operate. So EWWW IO Cloud is paid-only, but serves to help folks on WP Engine, Kinsta, and similarly-minded web hosts to take control of their sites and get their images optimized.
It has been a challenge to maintain two plugins that share much of the same code, so automation has been key there. Looking for ways to make routine tasks automated can be important, as it’s too easy to make a mistake when you have to do mind-numbing tasks manually.
BionicWP: What’s it like to have 700K+ active websites using your plugin? What are the must-have tools for operations for such a large user base?
Shane: Having so many folks that use EWWW IO is humbling, and a little scary at times. With just one mistake, hundreds of sites could go offline, and that is a responsibility I do not take lightly.
Documentation is huge for a large user base. Most obviously, it saves us time having to re-answer the same questions all the time, but it also makes a better experience, as folks can find the answers themselves without waiting around for an email response from us.
Additionally, internal documentation is important. I’m probably not alone in this, but it can be easy to forget things and make a mistake. For example, with new releases, I have both EWWW IO, and the cloud edition to worry about, so I have every step of the release process documented. I follow the steps religiously to make sure I don’t miss anything and break one of the plugins as a result.
One of the other things I implemented in the codebase a while back was using the WordPress Coding Standards and PHP unit testing. Some of the coding standards may just seem like “user preference” sorts of things, but there are many standards in the ruleset that help avoid common coding mistakes. For example, using “yoda conditions” to avoid accidentally using the assignment operator (=) instead of the comparison operator (==).
I started using the Atom editor as well, which means every single change I make is automatically tested against WPCS. We also use Travis CI to automatically run the PHP unit tests every time code is checked into GitHub, which also helps to avoid making any critical mistakes.
BionicWP: How are your customer’s needs evolving? Have you found yourself coming up with new ideas through their suggestions for Image optimization?
Shane:Over the last few years, we’ve seen things shifting from the idea of image optimization = image compression to a more holistic approach. One of the major contributors has been Google revamping their Pagespeed Insights tool. First, they moved from the traditional lossless compression to a lossy compression recommendation. They were acknowledging the fact that one didn’t have to sacrifice quality anymore to get more image compression. This was something we already offered in our premium compression, in partnership with the folks at Tinify. But we didn’t have anything to address the issues folks had with resizing their images (proper image scaling)
In 2017, I started a new service that operates similar to Jetpack’s image optimization CDN. I had focused on image compression in EWWW IO, but there were always folks needing help with image scaling/resizing. Jetpack’s option was “okay”, but I would get reports from folks using their plugin about various issues. Sometimes it was blurry images, other times it was wrong aspect ratios, and I hoped we could do better. The service was originally launched as ExactDN, but now we call it Easy Image Optimizer, as it’s a one-click setup and requires no bulk optimization.
Google would continue the shift by adding WebP and Lazy Load to their recommendations. While EWWW IO was the first to offer WebP conversion, we didn’t have lazy loading until 2019. Now, our Easy IO service addresses every aspect of Google’s image optimization guidelines: compress images, properly scale images, use nextgen formats (WebP), and defer loading of offscreen images (lazy load).
Of course, with all the complexities of folks using various plugins, and especially page builders, it’s a constant challenge to make things automatic and easy. We continue to work with users and developers alike to find solutions to any issues that come our way.
BionicWP: What are your views about the future of WordPress? In your opinion will it’s market share increase?
Shane: At this point, I don’t think there is any doubt about the dominance of WordPress, but that can change, though it’s not something that happens overnight. When Google Chrome was released, Internet Explorer dominated the market. But now the tables have been flipped, and it’s not impossible for that to happen in the CMS world.
No matter what you think of Gutenberg (I happen to like it), and the direction of WordPress core, it isn’t stagnant. As long as WordPress continues to improve, to take on tough challenges, I believe it will continue to grow.
BionicWP: If we had to ask you about your preference for hosting (Shared, dedicated, managed) which one would you choose and why?
Shane: I would choose whatever is best for your project. For someone just starting out, shared hosting can be a fantastic bargain. It doesn’t scale though, and if you want your site or business to grow, at some point you’ll probably outgrow shared hosting. That happened a few years ago for ewww.io, and we moved to a managed provider. Unless you’re a huge company, managing your own dedicated server is a waste of time and resources. If you can pay someone $30 a month to run your server, that’s a great deal.
Here’s what I often tell folks in regards to managed vs. dedicated. I have run various servers for 15 years, and I have all the experience I need to run my own server. We have 20+ servers that I manage every day for Easy IO and the compression API. I don’t, and won’t, manage my own web server.
Now, if you’re wanting to learn all the nuts and bolts of web servers, you have plenty of time, and your website isn’t mission-critical yet, go ahead and run your own server. It can be a lot of fun, but it can soak up a lot of time, so be prepared for that.
BionicWP: Given all that you have experienced, given all that you now know and given all that you have learned, if you could pass on only one piece of advice, what would it be?
Shane: Never stop learning. There is always something you don’t know, always a better way of doing something you already do, and never a good reason to be complacent.
BionicWP: Who would you nominate for our next interview?
Shane: Hmm, maybe Frank Goossens (author of Autoptimize) or Jonathan Buttigieg (founder of WP Rocket?)
BionicWP: Could you please share a picture of your workstation with us?