It finally happened: I sold a copy of my photo blur removal software, Blurity. Two copies, in fact! And it only took a month and a half.
Granted, I’m nowhere near cash-flow positive, and this project has been in progress in one form or another since the fall of 2008, but still, I’m giddy.
A demo of Blurity removing the blur from a photo
Here’s what I learned along the way.
1. If nobody wants your product, change your product.
There were two problems with the initial version of Blurity, released in the fall of 2009.
First, it didn’t work. It was really bad at removing blur from blurry photos, and that’s a hard sell when removing blur from blurry photos is its main selling point.
Second, once I got it to do something useful, I discovered that nobody wanted it as a web-based tool. I had thought that a SaaS model would be good — upload your blurry photo, have the blur removed, and pay to get the deblurred photo — but what people actually wanted was a native PC version.
I hemmed and hawed, pulled the web version down last fall, and half a year later built a native PC version. I launched the new version on April 27, 2012 while I was in Mountain View for an unrelated YC interview.
2. AdWords > Reddit ads > Facebook ads
When I relaunched Blurity at the end of April, I decided to try three different providers of display advertising: Google AdWords, Reddit ads, and Facebook ads. I tracked conversions based on how many people downloaded Blurity and began a free 30-day trial.
Reddit ads: I bought two days at the minimum $20/day level for a Reddit ad. After I complained about the ad traffic stats not showing up for almost two days after I launched my ad campaign, the Reddit support people comped me an additional $20 day, so I effectively had a total spend of $60. From that, I had 145 clicks, for a click-through rate of 0.29%. From those clicks, I had a single person download Blurity and start a free trial. Cost per conversion: $60. Yikes.
Facebook ads: I set up an account and tried playing with the ads, but I got basically no impressions at the $0.50 CPC bid level. Given my expected conversion rates, I couldn’t justify going much higher than that. In the end, I got 2 clicks, for a CTR of 0.03%, and zero conversions. Fortunately, I spent only $0.95.
Google AdWords: I had played with AdWords a bit when I had the web-based version of Blurity up, but I had been using a very naive approach to keyword selection and display targeting. I started with spending $30/day on AdWords with pretty much all of the settings on default. My overall click-through rate was about 0.15%. Then I did some research about how to better use AdWords, started tracking which keywords and sites were leading to successful trials (rather than just sending traffic), and I revised my targeting. The most important move was splitting apart display ads and search ads.
After the changes, my display CTR averaged 0.50% and my search CTR averaged 1.15% — huge improvements. More importantly, my cost per conversion dropped by 35%, my overall number of conversions went up by 20%, and my daily spend went down by 25%. Overall, my visit-to-trial conversion rate is now around 17%, and the cost per conversion is less than 5% of what it was with Reddit.
Free-trial activations and click-to-trial conversion rates. The conversion rate seems to track the number of activations because the overall number of visits is relatively constant.
Could I have improved the Reddit or Facebook conversion rates by revising the ad? Probably, but it would have required an enormous improvement to match, let alone beat, the AdWords results.
Cost per conversion over time. The dotted line is the 7-day MA.
Even though I didn’t have good luck with Reddit ads or Facebook ads, I have had several dozen trials started by people sharing links on those sites. Thus, they can be useful tools — but not, it seems, if you try to pay them.
3. Native app development is a heck of a lot harder than web development
The old version of Blurity was all web-based. I had a few browser differences to deal with, but most of the complexity was in the known, stable environment of my server.
The new version of Blurity was a native application for Windows PCs. Everything worked fine on the computers and VMs I had access to for testing. Once the software was out there in the wild, I immediately started getting a deluge of crash and bug reports. It was sobering. I’d say that a good 30% of users in the first week were unable to use Blurity at all due to bugs of various sorts. Making matters worse, I had only extremely limited bug reporting built in to the software, and it was extremely difficult to reproduce some of the bugs on my development machine.
The first major change I made was to include much better crash reporting in Blurity. It wasn’t a panacea — I’m still not sure why Blurity sometimes crashes on certain systems with AMD CPUs — but debugging became much easier in general once I had at least a stack trace to look at.
4. People will try to steal your work
I noticed a strange phenomenon about two weeks after launch. A number of people were trying the same two invalid registration codes. At first, I thought that there might be a bug somewhere that was causing the trial activation to show up incorrectly as one of those two invalid codes, but I found no path for that.
So what was it? It turned out that people were trying the serial number and registration number of my Blurity trademark. It seems that they were just searching for “blurity serial number” and trying the first thing that popped up. I was both amused that people could be so stupid and dismayed that people were so eager to pirate my work. (Not that I’ve been a total saint on that front, but still…)
5. Your first sale will take longer and be harder than expected…
The 30-day trial period all but assured that I wouldn’t have instant sales. I expected that a rational person would buy only after the trial expired. What did surprise (and alarm) me was how sales didn’t start magically showing up after 30 days passed from the first trial.
There’s a lot of doubt that creeps up when nobody is buying. Are people unable to use the software? Is my purchase path broken? Is the software too confusing? Is the price wrong? Are my trial-to-sale conversion expectations too high?
6. …but when you do make that sale, it’s bliss
Then, finally, on June 9, it happened. My phone vibrated, and I saw the message from Stripe: “You have just received a payment!” Yay! The feeling of validation was overwhelming. Somebody had felt that what I created was so useful that they were willing to part with 49 of their hard-earned dollars to buy it. Amazing!
Two days later, it happened again. Another sale! This time, it was from a customer named Paul. Paul was one of my earliest adopters, and I’m indebted to him for sticking with me when Blurity was first refusing to install and then crashing all the time. Little by little, thanks to his bug reports and patience, I got it to a state where it was much more stable. Every company needs a Paul as a customer.
The second sale provided evidence that the first sale was not simply a fluke. And that made it feel as good as the first.
Was seeing the annular eclipse in person a profound emotional experience? No, but it was pretty cool.
Annular eclipses don’t happen very often, and they are usually difficult to see without traveling great distances. Thus, when we learned that an annular eclipse would be visible in the southwestern US, Tyler and I decided to go.
After nine hours of driving, an overnight stop in Rico, Colorado, and a touristy photo-op at Four Corners, we arrived in Kayenta, Arizona. Why Kayenta? First, the full annular eclipse would be visible there, and second, the landscape features amazing rock formations. It was those rock formations that tipped the trip in favor of Kayenta as opposed to the much closer (to Denver) Albuquerque.
Checking the accuracy of the Four Corners marker.
With an hour remaining before the point of maximal eclipse, we started driving around unpaved roads in the Arizona desert. We had to find a piece of landscape that was both interesting and in the right spot. Several candidates were beautiful but far too close, and several others would have been great had they not been so far south.
Some of the rock formations near our shooting site
We drove and drove, bumping up and down the rough gravel roads, and then we found it: a rock outcropping with a great view of a tall rock monolith. We set up our cameras using the longest (if not the sharpest) glass we had available.
The shooting location from the other direction. For reference, that peak in the background has a prominence of about 1000 feet.
Slowly, the moon began transiting the sun. We watched through the welders glass both directly and on our cameras’ screens.
Partial eclipse as seen on my DSLR's live view
The light got dimmer and dimmer. Through the very dark filter, we could see the sun’s detail, but without the filters, it was still just a brilliant blob in the sky.
Finally, the moment came, and the sun became a ring around the moon. We snapped photos, watched in awe, and snapped more photos.
I slid the 12-stop welders glass filter up the end of lens, turning it into a makeshift 12-stop grad-ND filter. That let me shoot the sun and the silhouetted landscape in the same frame; no post-production sorcery required.
The full annular eclipse and landscape in a single exposure (click for details)
After less than five minutes, the moon had reached the other side of the sun, and we were again watching a partial eclipse. The photos continued, but without the distinctive ring.
I enjoyed the eclipse immensely. As I mentioned above, I didn’t get emotional, but I did have a huge grin on my face. It was a new experience for me; I was exploring. Given how rare annular eclipses are, I doubt I will ever witness one again.
In time, the sun set. The eclipse was not done, so it appeared as an unusual triangle of light slipping below the horizon.
Setting triangular sun
The trip was a success. The welders glass worked well as a filter once we learned to stop down as much as possible. I wish I had shot the start of the eclipse at f/45, which is what I used for the end. At f/8 or even f/16, the imperfections in the glass caused horrendous blurring and ghosting.
The sun partially eclipsed, shot through welders glass at f/45 and color-corrected. Note the sunspot in the lower right.
Next up: the total eclipse visible in the central US in 2017.
Something was very wrong. I was typing on my laptop in the hotel when I suddenly found myself struggling to read the screen.
I sat back in my chair. The afternoon mountain sunlight was filtering through the windows. I lifted my hands up and started wiggling my fingers at various places around my head. To my left, all was normal. To my right, the situation was anything but.
When I wiggled my fingers to my right side, I could see no movement. I was partially blind.
Nothing in the right half of my right field of vision was visible. It wasn’t black or even dark; no, it was simply missing. It was similar to the effect you can see at your natural blind spot, in that my brain simply extrapolated out to fill the void.
I sat there for a moment, trying to decided first if the effect was real and second what I should do about it.
Wiggle wiggle. Nothing. Wait. Wiggle wiggle. Still nothing.
I turned to Tyler. We were in Rico, Colorado on our way to photograph the solar eclipse in northern Arizona.
“So… something’s wrong,” I said in an understatement. ”I can’t see anything to the right of here,” holding up my right hand to show the start of my blind area.
“Do you want to go to the hospital?” Tyler asked.
Adding to the confusion, the vision loss spontaneously resolved itself after about 15 minutes only to recur 15 minutes after that.
I hemmed and hawed while we poked around on the internet. It became clear that one of two things was happening: either a retinal migraine or a retinal detachment. Given that I was 30 and the vision loss was transient, a retinal migraine was far more likely than a retinal detachment, but while a migraine is benign, a detachment requires immediate surgery. I didn’t have a headache, and I didn’t feel any pain, but neither of those elements are necessarily symptoms of either of the maladies.
Consultation over the phone with Tyler’s ER-doctor cousin failed to definitively diagnose a retinal migraine, so I decided to go to a doctor rather than risk my sight.
The problem was that it was late on a Saturday in a very remote part of Colorado. Thus, we drove 50 miles to the nearest ER, located at a hospital in Cortez, Colorado. The doctors there were sympathetic but ill-equipped to make a proper diagnosis, so I was immediately referred to an opthamologist. We left the hospital and met him at his clinic.
Dressed in shorts and a “mountain bike Moab” t-shirt, the doctor was clearly there after normal business hours. He appeared to be in his 30s, and from my brief conversation I learned that he had gone so far as to get a biomedical engineering masters before changing course and earning an MD. We immediately established a rapport.
My temporary partial blindness had subsided by the time I made it into the clinic’s chair, and it was not to return again. Instead, it was replaced by a slight headache and a strong nausea — typical reactions for me when I get my pupils dialated and eyes numbed.
Several close inspections with bright lights and specialized instruments later, the doctor declared that I had very likely experienced a retinal migraine. My retinas were in fine shape, and nothing else appeared to be amiss inside my eyes.
Diagnosis in hand, I smiled my way out of the clinic, and Tyler drove us back to Rico. I was near vomiting the entire hour due to the eye drops, and I could barely stand to have my eyes open due to the incompatibility of pupil dilation and bright lights, but I was happy to have closure.
I had learned that my vision was not in jeopardy, and that knowledge was worth the time and expense.
It turns out that, Instagram aside, it’s really hard to rapidly build wealth. Which is to say: I fell a bit short on my one-month-to-the-one-percent goal. OK, a lot short. Approximately $30k short.
Oh, you want actual revenue numbers? Sure, I can do that.
Amazon’s KDP: $0.70
One way to look at that is total failure. Another way to look at it is as a free coffee!
So what happened? Although part of the problem was distraction from the YC Combinator interview, I think the bigger issue was the tremendous difficulty of developing and selling a significant product within a short time frame. That wasn’t helped by my somewhat middling efforts in finding solutions to those product and sales problems. There were many days with wasted hours.
Going forward, I plan to redouble my efforts. The motivation is not only to save face. It is also an acknowledgement that my money tree has yielded nearly all its fruit. The need for a replacement becomes ever more pressing as time advances.