Going Full Time on My SaaS After 13 Years

In January 2010 I soft-launched launched Preceden, a web-based timeline maker tool, followed a few weeks later by a larger launch on HackerNews:

Today – almost 13 years to the day since the initial launch – I’m going full time on it and I couldn’t be more excited.

A brief history of Preceden

At the time of Preceden’s launch, I was serving as a first lieutenant in the US Air Force and about halfway through a 5-year service commitment I incurred by attending the Air Force Academy, a military college. I knew I didn’t want to make the Air Force a career, so decided to start learning web development with the hope of eventually working full time on a startup after my service commitment ended in 2012.

The first web app I built during this time period was Domain Pigeon (a domain search tool), followed by Preceden, followed by Lean Designs (a WYSIWYG web design tool), followed by Lean Domain Search (another domain search tool I built while deployed to Iraq), plus a few smaller ones not worth mentioning.

By the time I left the Air Force, I had shut down all except Preceden and Lean Domain Search. I did go full time for a few months, but focused entirely on Lean Domain Search. That tool was eventually acquihired by Automattic in 2013, where I joined full time as a software engineer helping with the domain name experience on WordPress.com.

With Lean Domain Search in Automattic’s hands, I was left with just Preceden, which at that point was about 3 years old. It didn’t make much money at the time, but I decided to continue working on it as a side project and see where it went.

Four years later in 2017 I left Automattic to join Help Scout as their first data team hire (during my time at Automattic, I gradually shifted away from software engineering to more of a data analyst/analytics engineer role). I continued to work on Preceden (then 7 years old), and in 2018 I switched to a contractor role so I could put more time on Preceden.

And now, after 4 years of contracting, I’m finally going full time on Preceden.

Here was my announcement at Help Scout from a few weeks ago:

Why not sooner?

It was a combination of things:

  • I made a lot of rookie mistakes over the years that limited Preceden’s growth including not focusing on a specific niche, not spending enough time marketing, not talking to enough customers, trying to do too much myself, and just in general picking a difficult product and business to build (something I didn’t give any thought to initially).
  • I was learning a ton, doing a lot of interesting work, and enjoying the camaraderie I had with my teammates at Automattic and later Help Scout.
  • Financially it made more sense to keep Preceden as a side project.

On the last point – it’s much easier to launch a SaaS than it is to grow it to the point where it can replace your income. As the sole breadwinner in our household with 4 young kids, I was not comfortable going full time and merely being ramen profitable or anything close to it. I wanted to replace or mostly replace my other income, and with Preceden’s SaaS metrics being what they were, it just took a really, really long time to do that. The long slow SaaS ramp of death is something I now have a lot of experience with 😂.

But here I am, finally.

Preceden in 2010
Preceden in 2019
Preceden today in 2023

What’s next?

I plan to focus mostly on Preceden, but will spend some percentage of my time on other pursuits. I recently launched LearnGPT.com, a fledgling GPT education site, and will likely work more and more on AI projects including integrating it into Preceden itself.

Also, it’s been a busy few years, and I’m very much looking forward to relaxing more and spending more time with my family including my two younger kids who aren’t in school yet.

I don’t know what my future holds long term. Preceden’s finances are good enough for now, but not at a point where I can just stop working on it and coast for years. With a little luck, Preceden will continue to grow and will continue supporting me full time to either focus on it or other pursuits. There’s also some chance I get bored with it or stumble across some promising new startup and I wind up going back full time somewhere else. We will see!

I do hope to blog more frequently so if you are interested in following along, you can subscribe via email, RSS, or just follow me on Twitter at @mhmazur.

Thanks for reading 👋.

Comments on HackerNews

A Long Overdue Lean Designs Post Mortem

lean-designs.png

In 2010, inspired by the success of the mockup tool Balsamiq, I started working on a competitor called jMockups. My original goal was basically to build a Balsamiq clone, but instead of it being downloadable software it would be web-based. I named it after jQuery.

After a while I realized that competing head-on with Balsamiq was a bad idea so I pivoted to building a high fidelity mockup tool – one that would create mockups that looked like real websites instead of sketches – and I renamed the project Lean Designs. Instead of competing with Balsamiq, I’d be competing with tools like Photoshop that a lot of designers use to design sites before building them. And as an added bonus, Lean Designs would also export your high fidelity mockup to HTML and CSS, saving you from having to manually code up the design when you were finished. I was pretty excited by it.

Here’s an early demo of Lean Designs:

As you might have guessed from the title of this post, things did not go well.

I never wound up writing about what went wrong – mostly out of embarrassment – but reading about my mistakes might save of some of you some heartache with your own projects.

First and foremost, Lean Designs didn’t solve a clear pain point for a specific group of users. If you had asked me back then who Lean Designs’s audience was, I would have said something like: it’s for developers who want to design a website without writing HTML/CSS, it’s for designers to create a high fidelity mockup of their websites before coding it, and it’s for everyday people who want to create a simple static website but don’t want to code 😱.

These are three very different usecases and Lean Designs didn’t solve any of them well. For example, for developers and everyday people who want to create a website, having a What You See Is What You Get (WYSIWYG) web design tool where every element is absolutely positioned makes it extremely hard to create a well-designed site. I touted on Lean Designs’s homepage how easy it was to create beautiful websites with it, but almost everything created with it looked terrible.

If you asked me which of those use cases was my focus, I probably would have said Lean Designs was a Photoshop replacement for designers to create high fidelity website mockups. But… I am not a designer. And I’ve never used Photoshop to create high fidelity mockups. I read online about how many designers use it, but I had no expertise in the problem I was trying to solve. And if Lean Designs was truly for designers to create high fidelity mockups, why did I build an export to HTML/CSS feature that would never be used by these designers in a production website?

One way to mitigate this is to do customer development: to get on the phone and meet face to face with people in this market to learn about their real problems. I never spoke with anyone in Lean Designs’s target audience to verify my assumptions. This is ironic given that Lean Designs is named after the Lean Startup movement, a big part of which is to do customer development to avoid making incorrect assumptions.

I also didn’t research any of my competitors. I rationalized it by saying to myself that I didn’t want to be influenced by what was currently on the market. To this day I’m still learning about competitors that existed back then that I had no idea about.

I formed jMockups LLC to add an element of seriousness to the project even before the site had launched. That’s $500/year to operate in Massachusettes.

I paid hundreds of dollars for a logo that I never wound up using because after I bought it I realized it resembled a swastika:

jmockups-logo.png

When I later renamed the site to Lean Designs, I filed a trademark for it with the help of a local lawyer. He also helped write its Terms of Service. 💸

With all of these administrative things taken care of, I proceeded to spend months building the first version of the product.

I thought I was being innovate by blindly following my vision for the product, but I was being extremely naive.

When I received feedback about jMockups on HackerNews, I took every bit of praise as validation that the product was on the right track. Same thing when I announced the pivot to Lean Designs.

The first version was completely free. I wanted feedback – any feedback – and thought that the best way to do that was to get as many people using it as possible. Feedback from free users can be very misleading; what you really need is feedback from people who will pay.

Eventually I transitioned to a freemium model where you could create a limited number of mockups for free or unlimited for $9 per month. This was a tool that I was aiming at professionals and I charged the same amount as a burrito at Chipotle.

The only marketing I did for it was to create a blog where I only posted about feature updates. I should have been writing – or paying someone to write – content that would be interesting to my target audience (whoever that was).

And for the few people that did use it and did pay, I eagerly implemented almost every feature request in the hope that each one would turn the tide on my failing product.

I was in a mastermind group at the time, but we spent too much time talking about features and not whether the Lean Designs was viable in the first place.

I didn’t pay close attention to metrics nor did I look at what people were actually creating with the site.

Finally, I spent way too much time trying to turn what I knew to be a flop into a successful startup. It’s hard to know sometimes whether an idea is bad or whether you just need to keep pushing, but in Lean Design’s case I kept at it way too long.

After about a year and a half and hundreds of hours spend toiling away on nights and weekends, I stopped accepting new users, put up a notice that it would be shut down in a few months, then killed it.

The upside of my experience with Lean Designs is that I picked up a lot of new technical skills and learned a lot about what not to do which I later applied to Lean Domain Search and other side projects.

Was it worth it? Could I have learned these things by reading blog posts like this one when I was deciding whether to work on Lean Designs? It’s hard to say. I’d like to think so. Maybe some things just have to be learned the hard way.

On that note, if anyone reading finds themselves working on a project with similar issues and is looking for feedback, don’t hesitate to drop me an email.

 

New Twitter Name: @mhmazur

Hey everyone, I just changed my Twitter name from @leandesigns to @mhmazur. If you were following @leandesigns, it should have automatically updated for you.

I originally set up the @leandesigns account after I renamed jMockups to Lean Designs, but never really found the right balance between using it for marketing and using it for personal use. I’m not much of a Twitterer (?), but saying Hi to friends from a company’s Twitter account seemed awkward. I probably should have used it more to engage with folks looking for a web design tool, but that always seemed too spammy (which is probably wrong).

Anyway, I think I’ll use it more now that it’s just a personal account. Feel free to say hi @mhmazur.

Lean Domain Search Launch Report

Yesterday I launched Lean Domain Search, a new domain search engine, on HackerNews.

You can read the discussion here: Review my Startup – Lean Domain Search – The fastest way to find a domain name.

It started with Domain Pigeon

Lean Domain Search is a follow up to Domain Pigeon, my first Rails project which I launched (also on HackerNews) a little less than three years ago.

Lean Domain Search is what Domain Pigeon was supposed to be: you type in a search phrase and the app pairs it with other words to generate domain names and instantly shows you which are available. I even kept a notebook in my car and when I saw a company name that started or ending with something that would also work for a domain name, I’d jot it down. One problem though: I didn’t know how to do it.

It’s not hard to programatically check whether a domain name is available, but doing it in bulk and doing it fast is. When I started trying to implement bulk search for Domain Pigeon, I couldn’t figure out a way to do it well. I decided to pivot slightly and simply listed available web 2.0-style domain names instead.

Domain Pigeon did well, but I made a bunch of mistakes which eventually led to its downfall. I remember thinking foolishly “Man, making money with web apps is easy.” Domain Pigeon was never supposed to take off. It was a something I undertook to learn web development; it wasn’t supposed to be what I became known for. Yet I’d go to Philly on Rails meetups and I’d be the “Domain Pigeon guy”. And so I started working on other projects, one of which eventually became Preceden. I kept working on Domain Pigeon on the side, but as I became more and more involved in Preceden’s development, I let Domain Pigeon slide and eventually just said screw it and shut it down.

Looking back, my two big takeaways from Domain Pigeon where:

1) It’s hard to make money with web apps. If you are lucky enough or talented enough to find something that people like and will pay for, double down.

2) If you do decide to work on new projects, don’t abandon your existing ones. If you don’t have the discipline to maintain existing projects while building new ones, then don’t build new ones until you do.

Lean Domain Search aka Domain Pigeon 2.0

I launched Preceden and eventually Lean Designs, but I still had the domain name itch. I really wanted to build that original search tool and continued brainstorming ways to do it. About five months ago I decided to take a break from Preceden and Lean Designs development and go for it (without abandoning either — see #2 above).

Lean Domain Search is the result. It’s better that what I originally envisioned: it generates and checks the availability of 1,000 domain names in about 2 to 3 seconds (go check it out!).

The HackerNews launch

The launch on HackerNews went well, but it was not without issues (launch day never is).

The biggest problem was the accuracy of the results. I estimated beforehand that about 1 in 1000 available results would be actually be registered due to some quirks with the way they were being checked. That turned out to be a tad bit optimistic: it was more like 1 in 20. As an extreme example, the results for “cloud” returned 10 results, none of which were actually available. This was understandably frustrating to anyone who searched for “cloud”, found domain names that he or she got excited enough to register, and then found out it was actually registered.

As a temporary solution, I added a “Double-check availability” button that let folks confirm an available domain name was indeed available before going off to register it. This worked great on my local computer, but there was a bug in production that caused it to say that every result was registered. I didn’t notice this until a few hours later by which time 800 people had double-checked the availability of a domain name and Lean Domain Search said the equivalent of “Oh, actually it’s registered. My bad.”

There was a hectic hour of hacking after that where I troubleshot and fixed the double-check feature, but it still felt sloppy. Everyone searching for “cloud” still got those same 10 incorrect results. Eventually it clicked: why not track the double-check results and stop showing ones that come back registered?

After another few hours of hacking, I had a decent solution in place: if you double-checked the result of an available domain name and it came back as registered, Lean Domain Search would remember that and it would no longer be shown in the available search results for you or anyone else. This way the results become more and more accurate as more people use it. 1 in 1000 might never be possible, but the false positive rate should eventually be closer to 1 in 100 than 1 in 20 (and thanks to Mixpanel, I can actually track that over time).

This morning I spent a few hours cleaning up the code and making other improvements. For example, when you click a domain name it will now automatically double check the result so you don’t have to.

I also found a typo today in the Namecheap affiliate link that caused my affiliate code to be dropped so I didn’t get credit for who knows how many domain name registrations yesterday. Fun!

But it was still a good day. All in all folks used Lean Domain Search to make about 14,000 searches yesterday thanks to it sitting on the HackerNews front page for almost 20 hours. Launch day traffic is always inflated though (don’t be fooled!); the trick is getting it back up to that point over the next few months.

The mentions on Twitter about Lean Domain Search were very positive too — thank you to everyone who Tweeted about it.

Here’s a screenshot from today:

On a final note, I should be blogging a lot more in the future. If you’re not subscribed to the RSS feed, you should.