An important lesson I’ve learned while working at a Startup is to do more of what works and jettison what doesn’t work, quickly. That’s the way to success, the rest is just noise and a waste of time. This lesson can be applied to everything in life.
Data is your friend
We generate data all the time, whether it’s captured in a database or spreadsheet, just by being alive you throw off data points. The trick is to take notice of it, capture it, and then do something with it. It’s the “do something with it” that matters to your success or not. Your success can be anything that is of value to you. Time, money, weight loss, stock trading, whatever. You just need to start capturing data, evaluate it, and take action on it.
This is where you fail
Many people fail by taking no action on the data they captured and evaluated. They hope that things are going to get better or that things are going to change. Maybe they will, maybe they won’t but you must act on what the data is telling you now. NOW!
My Examples, what Works/Doesn’t Work
My $100 Forex experiment worked really well for a time, then it started to flag. The data was telling me that my trading method was no longer working. Did I listen? Nope. I blew up that account. This didn’t work for me.
Writing RapidMiner Tutorials on this blog ended up getting me a job at RapidMiner. This lead to an amazing career in Data Science. Writing and taking an interest in things works.
Day trading doesn’t work for me. I blow up all the time. What works for me is swing and trend trading. Do more of that and no day trading.
Keep it simple, stupid
The one thing I’ve also learned working at a startup is to keep things simple and stupid. You’re running so fast trying to make your quarter that you have no time for complex processes. Strip things down to their minimum and go as light as you can. This way you can adjust your strategy and make changes quickly, you can do more of what works and jettison what doesn’t.
I’m done with my Medium vs Adsense experiment here. This is all part of a passive income strategy evaluation game I’m playing. I’m trying to see if I can build a $100,000 a year passive income portfolio. I know it will take time but I like playing these kinds of games.
Right now I’m evaluating a mix of different things such as dividend-producing stocks, web monetization, and Adsense. So far for February, Adsense is beating the pants off my Medium income.
Why? That’s an interesting question and without access to the data Google has on my site, I can’t be conclusive but I can guess. My guess? It’s my search engine optimization (SEO).
Optimizing SEO & Adsense
I spent a ton of time last year optimizing my old blog for SEO so I can rank higher on Google search results. I switched from Pelican to Hugo — both static CMS generators — and ported it all to AWS Amplify.
That’s given me blazing speed load times and because of that, I was able to put Adsense on and not affect page load times. Yes, I took a small hit but the load times vastly outperform my old WordPress and Pelican site.
Optimizing my SEO with fast load times has given me a big bump on the Google SERP rankings, almost all of my tutorials are now ranking on the first or second page. The only negative thing about that is that my tutorials are niche topics so the audience will always be small for them. Still, it’s nice to see the fruits of my labor paying off.
Fast forward to the beginning of 2021, I started writing more about passive income topics there as a way to diversify my content and attract a diverse readership.
When I added Adsense back in (my guess here), Google saw a site that started in 2007 with newly SEO optimized posts and load times and went wild. It started to serve relevant ads and kept learning what makes people click on the ads.
Granted Adsense was slow on the uptake for the first half of the month but I’m generating daily clicks and impression income. Right now it’s paying for my AWS Amplify hosting and that’s a BIG win in my book.
Medium Publishing & The Porn Apocalypse
What about Medium? I like Medium a lot and you can get a lot of notoriety there if you’re a good and entertaining writer. There are several writers that I follow that seem to make a living writing on Medium and kudos to them!
However, Medium feels like a single point of failure if you exclusively write and derive your main income from there. Why? Because you are at the whim of some publication you post to and your topics might not be all that interesting.
If you’ve seen what’s happening with the porn apocalypse (aka pornocalypse), a hosting platform like Medium can toss you and all your hard work off of it on a whim. For those that don’t know about this pornocalypse ( NSFW link), it’s where sites like Tumblr — who have hosted adult content for years — suddenly decide that it’s no longer a safe corporate thing to do and kick off adult content from their service.
Whether or not you do adult content, it’s always best to have your own hosted domain on the Internet. This way you can sell a product, service, or subscription without fear of being shut down. Of course, if you do something illegal then all bets are off, so don’t do anything illegal.
If you do have your own site then you have to think about attracting views to your articles or pages. You have to work on SEO (most modern CMS’s do that well) and build a ‘go to’ market strategy.
I use Medium to generate traffic to my site by crossposting articles. You can post your articles on social media and even buy Ads from Google to drive more traffic to your site. I know buying Ads from Google just feels ‘yucky’ but coupled with a good strategy it can do wonders.
Remember, all of us are just some person or company screaming in the void of the Internet something like “I’m over here! I got something to say!” Or in the immortal words of Arnold Schwarzenegger, “kill me now!”
Don’t Monetize Your Hobby
There’s a reason why I bring up the ‘go to’ market strategy, it’s because of these two Reddit posts I recently read. They both got me thinking long a hard about what the hell I’m doing with my blogs.
The first Reddit post is about a writer who is giving up on self-publishing.
I can sympathize with him, when you self-publish you perform every single task that a traditional publisher would do for you. You would just focus on writing a great novel and they would market it, distribute it, book your ‘meet and greets,’ etc. Doing all this in addition to writing can be overwhelming.
The other post supports the idea that you shouldn’t monetize your hobby, to which I partly agree.
I’m sure we heard that saying that if you find what you love and earn a living at it, you’ll never have to work a day in your life.
How full of shit that is.
If you’ve got a fun side hustle or hobby it might be a bad idea to try to turn it into a full-time job. There’s nothing wrong with having fun, making a few bucks (or not) from it, and doing it for the rest of your life.
For me, it’s baking sourdough bread. While I find it romantic to have a small bakery making sourdough bread, it’s NOT something I want to make a living at.
There’s nothing wrong with doing a lot of things for fun and if you can learn from it. For example, I recently found this 20BooksTo50K Facebook group. That group is filled with writers that are writing a minimum of 20 books to be published on Kindle or Kindle Unlimited.
The idea is with the right cover, right story, and right price point you should generate $50,000 a year from your work.
That group is filled with advice on how to do all the stuff the original Reddit poster complained about. Yes, you have to bust your butt but the sales from their books sure sound like passive income to me.
It reminds me a lot of my effort vs time curve.
You have to write a novel or novella, then design and make a cover, then market it. Once the writing, cover design, and distribution is out of the way, you can focus on small amounts of marketing to keep your novel in the mind space of people.
This is part of the reason I restarted my ThomasOtt.IO blog again. One reason was to see if I could migrate to the Ghost CMS and the other is I needed a new place for my writings. It’s another watering hole for me to lament about things, analyze data, and play the passive income game.
Ghost has some really nice features. For example, I can create a members-only and a paid-members-only section. I experimented with that setup years ago on Neural Market Trends but it failed, but it still remains in my mind space. Maybe this time I could get it to work.
Why did it fail? Because blogging was new back then and no one wanted to pay for it. Now, people will pay for things if the price point is right AND you have something of value to share.
There are ways to make a living by blogging and building content. Medium has shown us the way with subscriptions and I like that method a lot. The trick is to build up a big enough following to get them to come and pay a monthly subscription at the right price point.
Medium charges $50 per year, which comes out to $4.17 per month. I could make a subscription site for $3.99 a month but my problem would be what to share with you all?
Or, I could try the 20BooksTo50K route and write my stories, which I enjoy a lot. I certainly don’t mind doing the book cover designs, the marketing, the analytics (that’s right up my alley), and the SEO. That’s almost second nature to me now.
For example, I didn’t know that Mystery and Fantasy books are more popular than Young Adult and Erotic books. I’m not sure which genre would be harder to break into from a self-publishing aspect but this data shows some interesting trends.
My research phase will continue for the next several months and the data will direct me where to go. In the meantime, I’ll continue to write what I like. I hope you do too.
I’m no stranger to trying different CMS’s to see which one works best in terms of functionality, speed, and ease of SEO use. Over time – and many mistakes later – I’ve found that Hugo is the best for all three of those criteria. It’s very functional, fast to build, and easy to tweak for SEO. When you couple that together with the AWS backbone, you get a fast loading website where all the static builds happen automatically as soon as you update your Github repository. I’m writing this post on how I migrated away from WordPress to Hugo and used AWS Amplify to host my blog & website.
Introduction – WordPress Years
I started this blog on WordPress and then transferred it to Jekyll, then back to WordPress, and so on. You can read about my ‘passion’ for trying different CMS platforms by checking out my CMS tag, but the reality is that WordPress is really easy for newbies to get up and running quickly. Many popular blogs and sites run WordPress reliably and manage all their content with it. This is why it’s super sticky and it has some great themes to use out of the box. It’s when you want to ‘pimp’ or optimize your WordPress installation where you start running into problems.
For example, it relies on a database backend, and every time you visit the site it dynamically serves up the page. This is all good until you realize that you pay a loading time penalty for it. It can take a while. Plus you have to worry about malicious code injections from hackers that spam your site for the latest penis enhancement drug or Bitcoin scam. These code injections were the main impetus for me to start looking to migrate to a static blog generator.
If you want to do any SEO with WordPress you have to know PHP. I guess that’s ok but I never really cared much for PHP and found it boring. If you’re in that same boat, you’re going to have to use a plugin like Yoast. That’s great until you realize you have to start paying for it to get any benefit out of it. Do you need to modify your footer uniquely? You need to use a plugin. Want to back up your entire website? You have to use another plugin (and pay usually). Before you know it, you have like 10 or more plugins that are costing you money on top of what you pay for hosting.
All these plugins you need end up slowing your site down a lot too, which affects your SEO in a really big way. At the end of the day, you’re out of money and have a slow site. Sure it might look pretty but if you want to grow organic traffic you have to focus on great and valuable content that loads fast, is SEO optimized, costs a hell of a lot less, and makes YOUR life easy.
Hugo and AWS Amplify (and Github)
Let me be the first to warn you. Running Hugo on AWS Amplify (and Github) is not as easy as running WordPress with plugins. If you’re happy with your WordPress infrastructure and process, then just close your browser now and move on. However, if you want to have fine-grained control over your blog/website and feel comfortable doing a bit of ‘hacking,’ then please continue reading.
I just settled on using Hugo to make running my blog easier. I no longer have to deal with plugins and pay for them. Of course, this forces me to be more hands-on with how I want to maximize SEO, how I want to leverage the Indie Web, and even Web Monetization. I also have to do manual backups now instead of using Vaultpress, but with Github, that’s become so easy that it happens on autopilot.
Writing content for a Hugo-generated site is like a dream. The build times are fast, it has great image processing ability, and I can check out how my site will look before I deploy it if I run the development server. So I can do a lot of ‘offline things’ and know that once I push my update to my Github repo, AWS will rebuild and deploy my site automatically.
Of course, I have to pay for the usage of AWS Amplify but it will be A LOT cheaper than using the VPS at Dreamhost ($16/month). Sorry, Dreamhost but I think you’re not getting renewed this year.
First things first. The move will take some time and if you follow these steps, should go off without a problem. However to prevent any mishaps we’re going to start with setting up a ‘staging’ environment. The goal is to build a clone of your existing WordPress site with Hugo and AWS Amplify so that when it’s all up and running you just ‘cut over’ to it.
Follow these steps:
Download Hugo to your local machine and then read the quickstart introduction on how to build a site
You should see an empty local website running at that web address.
One of the biggest mistakes I made was NOT reading up on the permalink structure setting in the config.toml. I created hours of work for myself in creating canonical aliases for posts that I reorganized. So pay close attention to the configuration of permalinks in your config.toml file.
Sign up for an AWS account
The next step is easy, sign up for an AWS account here. We’ll get back to this later!
Sign up for a Github Account
This step is also easy, you’ll need to sign up for a Github account. You could use Gitlab, Bitbucket, and others, but I use Github for personal and work projects. It’s really easy to use for backing up your code and files BUT a little harder to use. You will need to get familiar with Git and I plan on writing a Git tutorial in the future.
How to Migrate Posts from WordPress to Hugo
Now we get into the fun part, the porting of your WordPress posts and pages to your local Hugo installation! First, you’ll need to extract your WordPress posts from your database. WordPress has a generic Export function but that’s not going to map the WordPress fields to the Hugo fields out of the box. What you will need is to use a Hugo Importer from WordPress.
Once you have your files, open one up to see if the YAML front end is correctly formatted. The YAML front end is where all the fine-grained control happens for your Hugo-powered website. It’s where you can control all aspects of your SEO metadata as well as options for Table of Contents, Keywords, Categories, Slugs (permalinks), titles, drafts, aliases, etc.
It should look something like this:
title: Post Title
slug: post-title << this builds to /content-directory-post-is-in/post-title/index.html
The key is to have all your post metadata in between the ---‘s at the top of the post. Note, this will be a markdown file with a .md extension. If you’re not familiar with markdown, you can read up on it here. It takes a moment to get used to markdown but once you do you never have to worry about formatting what you write in the ‘frontend’, markdown handles all that for you when your post gets translated into HTML.
Take all your exported posts to move them to your local instance of Hugo and put them in the /content/posts/ directory. Note, Hugo loves content organization and you should think about if you want to use content folders or not. You can read up on content organization here.
Hugo’s Development Server
Once the posts are in the /content/posts/ directory, you should see Hugo rebuilding the site in your terminal.
It will then generate the website as a live preview. Any editing that’s saved will automatically rebuild and you can see your results in real-time. The great part about this is the debugging part. Since Hugo is written in Go, it doesn’t ‘suffer fools’ and will break if it’s not perfect. This is good and bad, it’s good because it will tell you exactly what went wrong. It’s bad because you need to fix that mistake first before you can build your website in production.
I use this development server ALL the time. It lets me confirm if what I’m about to push to Github is what I want the world to see. This is where I test new partial templates, new shortcodes, and try new Hugo features. The development server will become your best friend and you can read up on some more of its functionality here.
Use Github to backup your site
I use Github for my code and project-related stuff. The concept of Git is just brilliant. It’s version control, process control, and backup all rolled into one. Granted, Github is an extra step in my regular workflow but it makes sure that my blog remains consistent over time. No weird hiccups unless I screw up! If I screw up, Git has a ‘rollback feature’ so I can undo my mistake quickly. The older I get the more I realize that Git is the true power here, especially if you’re in a heavy development environment.
You’re not going to take your entire local installation of Hugo plus your content and sync them with a Github repository. The terminology you will hear is that you’re going to ‘push your code to a remote repo.’ Github is the remote repository where you’re going to push your content and files too.
You can use the git command line but I like to use Github Desktop. Makes things easy!
First, you’re going to create local repository in Github Desktop
You’re going to select the folder of your entire Hugo website, I name my folder neuralmarkettrends.com and when I create a local repo, it automatically names the remote repo the same name.
Then you click ‘Publish’ and it will create the remote repo on Github. Note: your site is NOT backed up yet
To back up the site in your remote repo you will need to create a commit message and then push it
Once you push it to your Github repo, it should populate
Make sure that your repository is marked as private, this way no one can see your posts and stuff.
How to Put Hugo into Production with AWS Amplify
Once I had my blog backed up on Github I just followed the AWS Amplify instructions and generated the site successfully!
There was one big tweak that I made. AWS Amplify uses Hugo version 0.55 and that’s not compatible with many of the better themes. I had to update the version of Hugo the build was using to 0.74.2. It’s not hard, all I had to do was go to the Build Settings and follow these instructions.
I migrated to AWS Amplify for selfish reasons. I was about to renew my VPS at DreamHost for over $200 and thought that it was a tad bit high. Using AWS Amplify I expect to pay around $5 a month based on my past traffic, if it gets more active then I’ll pay more but that’s ok.
The added benefit to migrating here is that I get a wicked fast load time on the AWS backbone. I get like 1 second mobile device load times and millisecond desktop device load times. Wowsers!
I realize that doing this migration is tricky for many non-hacker types of people, but you can learn if you want to. One of the things we didn’t go over in this post is using a custom domain with AWS Amplify. That was a bit tricking to set up and I’ll write another post on that shortly. Still, these steps should get you to a mirrored site of your WordPress blog on AWS Amplify.