Hello! What's your background, and what are you working on?
Hello! I'm Jack Slingerland, and I'm the founder of Kernl.us.
I've been doing web development since around 1998 (check out my restored Star Wars site), and I'm currently a senior software engineer at CA Technologies in Raleigh, NC.
Kernl started out as a WordPress plugin, but has morphed over time into more of a platform of WordPress development tools. A lot of different people use Kernl, but the customer base consists mostly of freelancers and WordPress marketing agencies that need an easy way to deploy their code.
Kernl serves an average of 1.2 million update status checks a day and makes ~$575 a month (and growing).
What motivated you to get started with Kernl?
Back in 2010 I was a full-time WordPress developer working at a marketing agency. I was still pretty junior back then, but I felt that my life would be so much easier if I didn't have to manually upload new theme and plugin versions to client sites to deploy changes. I started working on a precursor to Kernl, but I had a lot of stuff going on in my life at the time so I stopped working on it.
Fast forward to 2015. I was looking for a side project to learn some newer technologies when I remembered the WordPress update idea. I did some poking around and found that there was only one service out there doing it the way I wanted to, so I dove right in.
In hindsight, it was silly to dive right into a project like this without doing more market validation, but my initial intentions weren't to try and make money, but to learn new technology and hopefully solve a problem I myself have had.
What went into building the initial product?
As with most side projects, time is the resource I spent the most of while building Kernl. Once I was proficient at the technology behind Kernl, it took me about 4 months to get the product into an MVP (minimum viable product) state. It probably would have taken around 2-3 weeks if I'd been able to work on Kernl full time, but I was only able to work on it for a few hours on the weekends and the occasional evening during the week.
At the time I was building this, my day job wasn't that interesting to me, so I used to Kernl to help keep my spirits up and to keep me excited about software. If you aren't excited about what you're building, it begins to feel a little too much like work.
One of the things I struggled with early on with Kernl was making sure that I kept things minimal. I think that most people hacking on side projects have these grand visions for what it could be, but if you want to actually finish it then you need to reel those visions in and focus on an MVP. I knew that for Kernl to be successful it needed at the bare minimum to support providing updates for plugins and themes. Anything past that was just a distraction.
With regards to technology choices on Kernl, I think that the MEAN stack (MongoDB, Express, AngularJS, Node.js) was a good choice. I already knew Angular, had some experience with Node, and wasn't that familiar with Mongo. I feel like you get a limited number of "innovation tokens" to spend on a project, and I spent mine on Node and Mongo.
So far it's been a great experience, with the exception of trying to manage Mongo. For a while I had a high-availability setup on Digital Ocean for Mongo, but I just couldn't get it configured right. Eventually I switched to Compose.io for hosting my Mongo cluster. This is easily the best $18/month I've ever spent. It just works, which is rare with software.
How have you attracted users and grown Kernl?
With Kernl I took a different approach to launching a product than I had in the past. I decided that I would launch Kernl in alpha mode for free and communicate to customers that it wouldn't always be free. Even with launching a free alpha, getting the first few active customers was tough.
I initially posted Kernl to Hacker News, where it received pretty good reviews and a handful of sign ups. I also posted it to the WordPress subreddit which helped get a few sign ups as well.
Aside from those two sources, I was extremely active on Twitter for about a month. I would constantly follow up with people who were looking for ways to update their private plugins and themes. For a while I tried Google Adwords, but it converted very few people. I think in the future I may try it again with a bigger ad buy, though for now it's outside my budget :)
People often say that luck is the biggest factor in the success of your startup. Luck certainly doesn't hurt, but I believe hard work plays a bigger role. Kernl's luck changed for the better when one of our competitors went down several times in the period of a few weeks (one of their outages was multiple days long). When that happened, I was active on Twitter letting people know about Kernl, answering questions, and assuring people that Kernl was a better service.
The result was an influx of about 75 new users, with a large portion of them actually sticking around and using the service. This is reflected in our traffic numbers, where you can see it jump significantly at the beginning of December 2015.
What's your business model, and how have you grown your revenue?
Kernl follows a subscription-based business model. One of the decisions I made early on was to not have a free tier, but instead to do a 15-day trial that didn't require a credit card. Part of the reason for that was I wanted customers that were serious, but I also wanted people to be able to try it out without any friction.
Early on, Kernl was available for free as an alpha. I don't believe in charging for early version software, so I didn't want my customers paying either. I used the alpha to test out new features, shake out scaling bugs, and get feedback from customers.
Once I felt that Kernl had reached a feature milestone I was comfortable with, I decided to move it to beta. The only different between beta and alpha was that I didn't want to introduce anything new in the beta. The entire goal of it was to increase stability and test coverage, and then transition existing users into paying customers.
The transition from beta to launch was pretty straightforward. First I created Stripe accounts and subscriptions for everyone that was a part of Kernl. Then I gave them the trial period (15 days) to get their plans and credit cards squared away. Kernl had a number of customers by the end of the trial period, and made $150 in the first month! It's been a little over a year since then, and Kernl's customer base has continued to grow. This month Kernl paid out $597. Considering that expenses are around $85 per month, this is pretty solid.
Here's a look at our revenue since March 2016:
What are your goals for the future, and how do you plan to accomplish them?
One of the things I've been pretty bad about is actively marketing Kernl. There are a lot of things I could be doing better with regards to user acquisition. For example:
- Blogging: Kernl really needs a blog. I would love to be able to point people to content that shows the usefulness of Kernl and its growing suite of tools.
- Advertising: I've done a terrible job at advertising Kernl. Be it at conferences, PPC (pay-per-click) advertising, or by other means. I should be doing a lot more.
Considering those things, my goal is to try to double my customer base in the next 12 months. I think it's possible if I take the time to follow a lot of leads and double down on advertising and content marketing. My current customer base is happy with the product as it is, so I believe I can take some time to focus on growing Kernl more tactically instead of building more features.
What are the biggest challenges you've faced?
Probably the biggest challenge I've faced while working on Kernl is burnout. Even though Kernl is something I'm super passionate about, trying to come home and hack on a side project after working eight hours is tough. Doing it consistently over the course of almost two years has been great for learning how to finish things even if you don't have a whole lot of contiguous time to work with.
I've also faced some pretty tough technology issues. When I started Kernl I didn't really expect it to reach the scale it has, so I definitely made some choices that left me with technical debt.
For instance, Kernl originally existed on a single $5 droplet on Digital Ocean. When I started getting to 30 requests per second with bursts of 150 per second, there were some serious growing pains. It now has a high-availability setup with a load balancer, 2 reverse proxies, 3 app servers, a cache server, and database hosted with Compose.io.
Having high availabilty is something that is really important to me, because a lot of people rely on Kernl to work. Scaling up and scaling out would have been easier to design for in the beginning, but this likely would have led to a lot more distractions. I probably wouldn't have even launched Kernl if I'd worried about that stuff up front.
What were your biggest advantages? Was anything particularly helpful?
Every developer likes to think that technology was their biggest advantage, but realistically I think that being super customer-centric has been Kernl's greatest advantage. I always try to be responsive when a customer has a question, and I always make an effort to let customers know what's new with Kernl.
And to be honest, there was a lot of dumb luck that happened with Kernl. My biggest competitor was having some serious issues at the time Kernl was coming out of beta, which I leveraged to my advantage as much as I could. That also meant that I had to make sure Kernl was much better than them, which I think was a good type of pressure to have.
What's your advice for indie hackers who are just starting out?
Set goals: Make them realistic, but set them nonetheless. One of the goals that I only told my wife about was that I wanted Kernl to be able to pay for itself and pay for a nice dinner once a month. Kernl is obviously well past that goal, so I've set others. It's important to have something to strive for.
Keep your scope in check: It was really difficult to make sure that Kernl's scope didn't go crazy as I was building it out. If you let the scope of your project run wild, you'll never finish. Think big, but remember: if you don't ship, it doesn't matter.
Have fun: Seriously, this is really important. If you aren't having fun it is going to be hard to stay motivated.
Where can we go to learn more?
If you need a better WordPress development workflow or are curious about Kernl, check out https://kernl.us. You can follow Kernl on twitter to keep up to date on all things Kernl, or follow me on Twitter (@jackslingerland). If you have any specific questions about Kernl, feel free to comment below, and I'll happily answer them!