Nearly three years ago, I began a journey that would have very unexpected results. In March of 2012, I had decided to try and start a business doing web development and consulting, but it was going pretty slow. I had already done a few small business website before then, and I felt like I could grow a business from the experience I had gained there and at my job at the college. I hadn’t gained any new clients, and in May I was home helping my wife with our newest arrival. During that time, I was working on optimizing an existing website to further hone my skills, and I began working on the EWWW Image Optimizer plugin for WordPress. Let’s pause for a second: what is image optimization, and why is it important?
Image optimization is the process of taking the images on a website and making them as small as possible, and there are two modes: lossy and lossless. With lossless, you’re stripping excess data from the image, and re-compressing it using the best algorithms available without losing ANY quality. The resulting image is visually identical to the original. Lossy optimization is different, and there are two strategies employed here. The first is to set a quality level for all images, and essentially discard anything above that level. It’s like doing a sculpture with a chainsaw; you can do it, but it isn’t always the prettiest, and it requires a good amount of skill to get the best results. The second lossy method uses special algorithms to identify compression strategies for the individual image, and it even analyzes different areas of the image to store data in the best way possible. The new image isn’t identical to the original, but it’s really hard to tell the difference between the original and the optimized image, yet the savings in image size can be huge (generally much better than lossless optimization).
But why does it matter? Google has identified that the average bounce time is 3 seconds. If your page doesn’t load within 3 seconds, you’ve lost your visitor, and a potential customer. You are losing money if your page doesn’t load fast enough, and unoptimized images are the single largest factor in site load time. Optimize your images, and you make more money. OK, on with the story…
There were only two other image optimization plugins for WordPress at the time, and neither of them worked for me, so I forked one and started the EWWW Image Optimizer. I made it available for free on the WordPress plugin repository, and was somewhat surprised at the initial uptake. There was definitely a need for a solid IO plugin, and over the next sixteen months, I worked on this free plugin for fun. I answered support requests, expanded it’s capabilities, and the user base continued to grow.
The EWWW I.O. plugin reached 50,000 downloads after the first year, and had seen over 30 releases. While the plugin started with no bundled optimizers, I had changed that within the first year to reach a wider audience; not everyone has shell access to their server, and even less know how to use it to compile the optimizers the plugin uses to do it’s job (and how many of you even know what I just said?). However, there still remained many who could not use the bundled optimizing tools either. The linux webhosting scene is a mass of different distributions, configurations, and restrictions. And then you add in Windows, Mac OS X, the varied flavors of BSD, Solaris, and the list goes on. I was seeing a need for some sort of external image processing service, which is the way the WP Smush.it plugin worked. WP Smush.it was a different story though. It relied on the unreliable Yahoo Smush.it service, and had an annoying limit of 1 megabyte on the image processing. I had tested it before starting EWWW I.O. and the reputation it had gained as unreliable was well-deserved.
I began researching the possibility of running a server to do the image optimization for these sites that could not do the processing on their own servers. When they uploaded an image to their site, it would forward the image to my server, where it would be properly compressed, and returned back to their website in all it’s shiny new awesomeness. I needed to know two things though: would anyone use it, and could I do it at a low enough cost to sustain it? Over the next couple months, I built the first EWWW IO Cloud server, and launched a free beta period to the first 100 takers. It took a little over a month to hit 100 users, and I brought two more virtual servers online to ensure redundancy in case one would go down. When I felt like I had worked out all the kinks, I ended the free beta period and started taking on paying customers. The first few months paid for the server costs, and then some. It wasn’t a lot of money, but it helped us to start taking care of some medical bills that been hanging around since Javan was born over a year earlier.
Every month the customer base continued to grow, but I still offered the core plugin for free, and kept the support free. The money I was making still didn’t come close to paying for the development and support time I was spending, but it was helping our finances more than I had expected. It was at that point that I looked back at the series of events leading up to this blessing and could so clearly see the hand of God guiding my steps along the way. I would have never imagined that this plugin (which I started to fill my own needs) would lead to a financial blessing for our family a couple years later. Earlier, I mentioned the difference between lossy and lossless compression/optimization. The plugin started with lossless compression only, and so did the EWWW IO Cloud service, but there was a growing demand for lossy compression, and there were a couple really good options out there. They were a bit expensive, so I had to wait until I was making enough to cover the costs and keep up with our medical bills.
Last August, I finally was able to launch the lossy options, and while I knew there was some demand, I had no idea how much. Gross revenue increased by nearly 50% in the first month, and the lossy compression plus the addition of yearly subscriptions increased revenue another 33% the month after that. My wife and I had been working through Financial Peace University since April, and God was continuing to bless us. We were (and still are) working on baby step #2, the Debt Snowball, we no longer have credits cards, and have nearly paid off one of our student loans from college. In 2013, when I started the service, I thought perhaps this could replace my regular job within 5-7 years. Now, I’m grossing more through the cloud service than I do at my job at the college. In seventeen months, the timeline has been shortened significantly, and I’m hoping to make this my only job within the next eighteen months. I’m continually amazed at the opportunity that God has given me, and even recently He has opened new doors.
Back when I was first looking at lossy compression, there were two services that I was looking at. One for JPG images, and another for PNG images. The PNG compression was far too expensive without a large price increase, so I had opted to use a free tool that worked pretty well (although not quite as good as the paid version offered by the folks at TinyPNG). Every once in a while, I would look back at the TinyPNG pricing, and say, “if only I could afford to do that…” A few months ago, I was contacted by TinyPNG about working together to bring their technology to the EWWW IO users. While it meant a price increase for new users, they were able to offer low enough pricing that tomorrow I will be bringing TinyJPG and TinyPNG technology to all users of the EWWW IO Cloud. Nine months ago, I never thought that could happen, but here we are, and it’s going to happen!
I’ll finish with some amazing stats. In the first year, EWWW I.O. had 50,000 downloads, now it has reached over 700,000 downloads, and has over 100,000 active installations. Seventeen months after launching, the EWWW I.O. Cloud service has 1,000+ active subscriptions (paying customers), has processed over 17 million images, and saved 231 GB of space for those users. I’ve gone from 2 servers with 2 CPU cores when I first launched the beta, to 11 optimization servers (with 16 CPU cores), 2 database servers, a backup server, and 2 load balancers. Only God knows what the future holds, and I’m excited to see what happens from here!