One-Line Summary50k monthly visitors is more valuable than I'm giving it credit for.
- I added 88 new programmatically-generated articles to Is It Keto.
- With 100k monthly pageviews, it’s time to explore new ways of working with Is It Keto’s audience.
- I created a KVM over IP device that requires <$100 in hardware.
Goal Grades 🔗︎
At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals:
Add 100 new articles to Is It Keto 🔗︎
- Result: Added 88 new articles to Is It Keto
- Grade: B
Programmatically generating content is harder than I expected. It’s easy to generate the score and nutrition data, but it’s tough to templatize lots of text that fits a wide range of products.
I’m going to continue building up templates and adding new foods, but I’ll explore other options for growing the site’s revenues as well.
Publish one new blog post 🔗︎
- Result: I published “My Eight-Year Quest to Digitize 45 Videotapes."
- Grade: A
I’ve been working on this article in some form or another for the last two years, so I’m happy to have finally published it. I’m pleased with the result, and it’s been nice hearing people say it gave them useful ideas their own digitization projects.
|Metric||April 2020||May 2020||Change|
|Unique Visitors||35,451||50,352||+14,901 (+42%)|
|Total Pageviews||72,894||99,391||+26,497 (+36%)|
|Domain Rating (Ahrefs)||27.0||27.0||0|
|AdSense Earnings||$92.09||$109.92||+$17.83 (+19%)|
|Amazon Affiliate Earnings||$128.39||$111.61||-$16.78 (-13%)|
|Total Revenue||$220.48||$221.53||+$1.05 (+0%)|
Is It Keto continued growing in visitors. It seems to have recovered to its normal level of activity pre-COVID. Worryingly, AdSense earnings failed to keep pace, and Amazon Affiliate earnings actually dropped.
Checking the stats more closely, Is It Keto generated 25% more revenue for Amazon in May than it did in April, but Amazon slashed their affiliate payout rates, substantially reducing Is It Keto’s revenues.
Doing more with Is It Keto’s audience 🔗︎
A few weeks ago, Justin Vincent reached out to me. He’s a serial entrepreneur and founder of The Nugget Startup Academy. He’d been enjoying my blog and wanted to know if I’d be open to a Zoom call to brainstorm ideas for monetizing Is It Keto. I agreed, and it led to several useful insights about the business.
The first thing that surprised me was how highly Justin viewed Is It Keto’s visitor stats.
Justin: How many uniques do you get per week?
Me: Around ten thousand.
Justin: Wow. You’re sitting on a goldmine.
Top keto recipe blogs get ~3M unique visitors per month, so my 40-50k felt like nothing. Justin argued that one of the hardest parts of launching a product is finding interested customers, but if I have access to 10,000 people each week interested in keto, that’s a huge leg up.
Justin: When you look at existing keto communities, what do you notice people struggling with? What issues come up a lot?
Me: I don’t know. I feel like most of the discussion revolves around people sharing progress and other members congratulating them.
Justin: Congratulating each other… That’s interesting. Have you seen wip.chat?
wip.chat is a popular social network for indie developers. Non-members can view some of the content, but you need to be a member to post anything, and that costs $20/month. Their pitch is that the wip.chat community helps you build your product by holding you accountable to your project’s milestones.
The more we talked about a wip.chat for keto, the more I liked the idea. All the social networks I’ve seen for keto use generic tools: Facebook groups, subreddits, Discord channels. What if there was a tool specifically for keto dieters? Over the next week, I brainstormed 25 more ideas, but the wip.chat clone remained at the top of my list.
This week, I’m going to create a landing page for this theoretical keto social network and advertise it on Is It Keto. I’ll include a signup button, but when the user tries to pay, they’ll see a message saying something like, “I’m still building this site, but you can sign up for this mailing list to find out when it’s ready.”
Another great insight that came out of the conversation was around partnerships:
Justin: Once you create your membership product, you can make direct partnerships and affiliate deals with other keto businesses.
Me: But I already have visitors. Why wouldn’t I do that now?
Justin: Good question. Why wouldn’t you do that now?
This is why it’s valuable to have an outsider’s perspective. I tried approaching other keto companies for affiliate deals early in Is It Keto’s life, but I was too small, so most of them ignored me. With 100k monthly pageviews, Is It Keto is significant enough that partnerships are viable. I just forgot to revisit the idea because it had been infeasible for so long. But what’s stopping me from contacting keto businesses advertising on my site via AdSense to ask if they want to set up a deal with me directly?
Improving Is It Keto’s browser performance 🔗︎
Through most of Is It Keto’s life, performance has been an afterthought. Occasionally, I’ve fixed components that were causing noticeable slowdowns, but I rarely design for speed.
Given that Google drives 90% of the site’s visitors, and Google uses performance as a metric in ranking search results, I spent a few days identifying bottlenecks on Is It Keto. I use the Gridsome framework for generating Is It Keto’s contents, so this article helped me achieve a few performance gains.
|Load Bootstrap-Vue components a la carte instead of importing all of Bootstrap-Vue and Bootstrap-Vue-Icons||High|
|Filter my Gridsome data at the graphql layer rather than at the Vue layer to reduce the size of static JSON files||High|
|Undid this hack for loading images in Gridsome with dynamic paths||Medium|
|Import Google Fonts using a
|Tune the Google Fonts URL to download only the fonts I need||Low|
Everyone talks about using webpack-bundle-analyzer to look for large components in your JS bundle. I felt crazy because I couldn’t find any instructions on how to actually use it. All the instructions basically say:
npm install webpack-bundle-analyzer
- Look at the useful visualization in your browser.
But they never explain how you actually generate the visualization. I finally figured out that the missing step 2 is to plug webpack-bundle-analyzer into your build (varies by stack, but here is how to do it on Gridsome). Then the next time you build your app, you’ll see a line like this:
Webpack Bundle Analyzer saved report to /home/user/isitketo/dist/report.html
And then if you open
report.html, you’ll see the visualization everyone’s talking about.
Web performance is harder than I thought 🔗︎
Is It Keto originally ran on App Engine under Python 2. Given my renewed focus on the site, coupled with Google’s plans to end support for Python 2, Back in April, I decided to rewrite the site. I chose Gridsome, a Vue-based static site generator.
It seemed like I’d get the best of both worlds: the performance of a pre-rendered website and the flexible developer experience of Vue. It turns out that web performance is a bit more complicated than I realized.
<script> tags are at the very bottom of my HTML and they have the
defer attribute, they still tank my performance metrics:
Raspberry Pi as a virtual keyboard and monitor 🔗︎
I’ve been working on a hobby project for the past few weeks that I don’t think will turn into a business, but maybe there’s a market for it.
My current server is headless, so there’s no keyboard or monitor attached. I just interact with it over SSH. The problem is that if the OS fails to load or I want to change BIOS settings, I’m stuck — I have to drag the whole server over to my desk and attach my desktop monitor and keyboard to access the server.
For my next server, I’ve dreamed about getting some sort of virtual console. There are enterprise solutions like Dell’s iDRAC and HP’s iLO, but they add several hundred dollars to a server’s cost. There are also KVM over IP devices, but they also cost $400+ and require bloated client software.
For the past few weeks, I’ve been trying to build the poor-man’s remote console with a Raspberry Pi 4. The keyboard part works great over the network:
Displaying video from the target machine is trickier, but I have it working now with about 1 second of latency. Here’s what that looks like:
Right now, the video appears in a separate window, but I’m working on embedding it directly in the webpage.
I’m writing a blog post that will explain everything in more detail, but if you want to peek at the source code, it’s public though not fully documented yet:
- key-mime-pi: Web server for forwarding keystrokes to the Raspberry Pi’s virtual keyboard device.
- ansible-role-key-mime-pi: An Ansible role for configuring the Pi’s USB gadget functionality (so it can mimic a keyboard) and for installing the web server as a systemd service.
I’m considering selling pre-configured kits for around $180. If you’d be interested in purchasing one, visit:
Legacy projects 🔗︎
Here are some brief updates on projects that I still maintain but are not the primary focus of my development:
|Metric||April 2020||May 2020||Change|
|Unique Visitors||1,142||467||-675 (-59%)|
|Total Pageviews||2,960||1,258||-1,702 (-57%)|
|RapidAPI Earnings||$32.19||$6.48||-$25.71 (-80%)|
|Total Revenue||$32.19||$6.48||-$25.71 (-80%)|
For some reason, Zestful got a burst of interest in May. Three customers requested Enterprise pricing. Two of them seem like dead leads, but I might have something that works well for the third. I should know what’s going to happen by the end of this week.
Wrap up 🔗︎
What got done? 🔗︎
- Increased the number of articles on Is It Keto by 40%.
- Improved Is It Keto’s Lighthouse performance by 43 points (from 4 to 47).
- Presented a talk called “How to be a Sort of Successful Blogger” to my peer mentorship group.
Lessons learned 🔗︎
- Pre-rendered Vue sites still pay a significant performance penalty.
- Talking to a new person about your business helps you reassess your assumptions.
Goals for next month 🔗︎
- Validate ideas for a sister product to Is It Keto.
- Add 30 new articles to Is It Keto.
- Create a working Pi-based KVM over IP, controllable through the web browser.
Be the first to know when I post cool stuff
Subscribe to get my latest posts by email.
Thanks for signing up! Check your email to confirm your subscription.
Whoops, we weren't able to process your signup.