Hi everyone! 👋 Quite a few of you got redirected to this website from my old Python Tips blog. The old blog was based on WordPress and I recently moved everything to Hugo. I am still in the process of figuring certain things out but so far the transition has been fairly smooth. I alluded to this post a while ago and told you all that I will write down my reasoning for why I moved away from WordPress.com. The wait is finally over 😄Let’s get on with the reasons then.
CSS and HTML customizations
WordPress.com allows you to customize certain aspects of your website but as soon as you want to add additional CSS you are told to buy the Premium Plan. I wasn’t willing to do that just because I didn’t see a lot of benefit of paying so much just for CSS customizations. This caused me some issues with how the code was rendered on the website. For example on the original WordPress.com website I couldn’t reduce the font-size of code and neither could I use syntax highlighting. I did have the option to embed GitHub gists but they were also terribly rendered.
Over the years I made my peace with the fact that the code on my website wasn’t going to be beautifully rendered. But lately, I started to feel guilty. I thought to myself that if I don’t like reading code listings which have a huge font and aren’t syntax highlighted then how can I expect other people to do it? The only way to get rid of that guilt was to either pay for WordPress premium or host the website somewhere else . I ended up opting for the second option and decided to ditch WordPress completely.
The code listings on this new blog look cleaner and more readable.
Having direct access to HTML and CSS enabled me to implement the dark mode on the website as well. Now whenever a visitor turns on the dark mode (by clicking on the moon in the sidebar), the color of the whole page, as well as the code listings, changes.
If you are interested in how I implemented these you can either check out the source or you can read this really informative article by the folks over at Simple Analytics. The article contains a lot of other really useful practical privacy tips as well.
Performance as measured by Lighthouse
Over at wordpress.com, I had very little control over the performance of my website. The inner nerd in me wasn’t happy with that. Just look at these Lighthouse scores for the Desktop version of the WordPress blog (mobile version results were not a lot different either).
I couldn’t go and hack the theme my WordPress.com blog was using. Even with the basic premium package of WordPress.com, there are a lot of restrictions regarding what one can and can not do. By moving away from WordPress.com and converting the blog into a more clutter-free theme I was able to churn the following scores. It’s not perfect but it is a lot better than what I had with WordPress.
WordAds vs custom ads
WordPress allows you to use WordAds to earn money from Ads. It was quite nice to have a side-income but there were a lot of major issues with it. If you open up the developer tools and monitor the background requests which WordAds make you will be scared. I know I was. The image below shows just a small chunk of these requests.
I was more worried about the privacy implications than the performance implications of this. I am willing to trust Automattic but not the other ad companies they partner with. I am not against ads because they help people like myself to publish free content but I am against tracking users this deeply.
There needs to be a middle ground and I think Carbon Ads and Code Fund provide that. I was routinely reached out by someone from Buy Sell Ads team (parent company of Carbon Ads) to convince me to use their ad service on Python Tips. I couldn’t do that on WordPress.com because I was locked into using WordAds. Well, not anymore!
The next step for me is to reach out to the Carbon Ads and Code Fund folks and get their “ethical” ads running on my website.
Google Analytics vs Custom Analytics
With the basic version of WordPress, I was locked into using the default analytics provided by WordPress. These were more than enough for my needs but they were blocked by my mainly tech-literate audience. I don’t blame them. I also block trackers using UBlock Origin. Just like ethical ads, I am not against tracking either but only as long as it is done in an ethical and privacy-preserving way.
With no way to set up custom analytics on WordPress.com, I had to figure out another way and the only course of action I could think of was to move away. I settled on setting up a custom Shynet instance. It allows me to ethically track important analytics. And because the analytics endpoint is hosted at my domain and not on the domain of any well-known analytics company, the ad blockers don’t block it. I have set this up for the Intermediate Python website as well and the difference is stark. At one point Google Analytics reported 18 active users whereas Shynet reported 40+ active users. Hopefully, after a week of Shynet testing, I will disable Google Analytics on my websites.
And it only helps that Shynet has a gorgeous UI and I can see the important stats from all of my websites in one dashboard.
Moving away from Python
This one has little to do with why I moved away from WordPress but has a lot to do with why I redirected my
pythontips.com domain to
yasoob.me. The truth is that I could have potentially let the domain stay the same:
pythontips.com. I could have continue blogging at that domain but I haven’t been working with Python extensively over the last couple of months. This means that I wasn’t always particularly excited to write Python targeted content and if the content wasn’t targeted towards Python then I didn’t want to publish it on Python tips. It’s not like I wasn’t working on new and exciting stuff, its just that most of that stuff wasn’t in Python.
I didn’t write any new Python post on old blog since September 18, 2019 and that made me feel guilty. Every single night before going to bed I used to think about thousands of people who had subscribed to my blog and were waiting for new content. I felt as if I was letting all of my readers down even though I hadn’t made them any commitments. Consolidating all of my content at my personal website meant that I could continue pushing out new content without focusing on pure Python.
Allowing readers to fix my embarassing mistakes
Everyone who writes technical (or almost any kind of) content knows that even a slight oversight will inadvertently introduce mistakes in the code. It has happened to me in the past and there are two options in that situation.
- Wait for a reader to comment on the post and point out the mistake and fix it myself
- Empower the readers to edit the content itself
At WordPress.com I could only opt for option 1 and edit the article myself. I wanted change that and let people make changes to the article and fix mistakes and even add more details if required. Hosting the articles on GitHub and regenerating the website on every push and merge means that I can do this now. Every single post on this blog has a “source” button right next to the title which takes you to it’s GitHub page.
What I miss from WordPress.com
I dearly miss the auto publicizing feature of WordPress. I didn’t have to pay WordPress.com to set up direct email subscriptions for new posts for readers. Now with a static blog, I don’t have that publicize feature anymore. However, there are options out there. I can use Mailchimp and set up RSS to email but it is super expensive. I have around 4000+ subscribers and Mailchimp wants me to pay $50 per month. Once the subscriber count crosses 5,000 I will have to pay $75 per month. It’s too much for hosting a hobby blog and I am not willing to pay it. I guess for now I will use of Tinyletter and send emails manually whenever there is new content.
I don’t think there is anything else I particularly miss. If I can think of something else I will update this post. I am sure I could have fixed some of these issues by using self-hosted WordPress but I wanted to try the static blog/website route.
That’s all for today people. I will see you in the next post ❤️ 👋