It’s been a while since I’ve written anything long-form for the internet. Traditionally, the first blog post is a simple “Hello, World!” to confirm everything is working. I’ve always found the tech community’s quirks fascinating. For example, the “Hello, World!” tradition, which originated in Brian Kernighan’s 1970s book “The C Programming Language,” persists as one of the first steps for new programmers.
For about a month, I’ve been considering getting back into writing. Yes, I know I failed the “30 Hari Bercerita Challenge” on day one 😐 . But I believe we don’t need to wait for the perfect moment to move forward. So, over the past few weeks, I’ve been researching platforms to host my writing.
Why not X or Medium?
In the past, I consistently challenged myself to write. After all, how could the head of the student press not write a single article? It almost felt like a fraudulence (sorry to be blunt). Back then, I mostly wrote on my LINE timeline, and sometimes my posts gained traction, even exceeding 300 likes when they contained controversial topics. Currently, the only platform that might allow that kind of writing is the formerly-known-as-Twitter platform (X). Honestly, I currently have a private account instead of public one because X can be a hostile environment for casual writers. Choosing to writing there privately would only benefit my mutuals, and the search algorithms wouldn’t favor me. The other option is to make my account public, but I’m simply too lazy to delete all my rants.
There was a time when I consistently wrote on Medium (https://medium.com/@teo.wijayarto). However, the writing there is pretty cringe-worthy now, and I don’t want to revisit it. Medium is a viable option, but again, the algorithm isn’t great for readers. Why? Because most people avoid Medium articles due to their frequent paywalls. It’s a cycle: you find a Medium article, get excited to read it, hit a paywall, and end up disappointed.
Reflecting on the past has solidified my resolve to create my own blog website with my own domain. Like many engineers, I have one of those domains I bought but never used: teodolist.com. I like the name because it sounds like “to-do list.” So, the next question: how and where do I create this blog?
The Quest Begins: Exploring Options
Every engineering question is always starts with..
WordPress was immediately crossed off the list due to its complex migration process and its PHP tech stack. The first option I explored came from the Jamstack family, such as Cloudflare Pages, Netlify, and Vercel.
Static Pages: Cheap to Start but Hard to Customize
When comparing pricing, I found that all three services offer free tiers for hobbyists, which is very considerate. You can achieve a lot with just the free tier. If you have to choose one, I recommend Cloudflare Pages. It’s a good investment, especially when paired with their Workers.
Now comes the hard part: choosing a tech stack. To simplify things, I wanted to use a CMS (Content Management System) because writing directly in VSCode isn’t my preference. Sanity, GhostCMS, and WordPress came to mind. There are other platforms like Contentful, Webflow, or Strapi, but they’re all headless, and Webflow is simply too expensive.
After exploring Sanity and GhostCMS, I discovered that neither of them can be deployed as static pages. So, my plan to leverage Cloudflare Pages went out the window. However, I was still set on using them, so I researched what types of pages could be deployed to their services and still be considered blogs. These three options emerged:
Unfortunately, this wasn’t the right solution because I didn’t want to code a front-end application. It seemed like too much hassle, so I moved on to other options.
Cloud VPS: Is it worth it?
How about exploring platforms instead? GhostCMS is very slick and user-friendly. So, I looked for other solutions, and Cloud VPS came to mind. Having experience setting up EC2 with all its reverse proxies and so on, I thought Cloud VPS could be a viable option. Therefore, I explored local solutions like idcloudhost, BiznetGio, and Niagahoster
The prices were a bit steeper than expected. There’s a Cloud VPS provider known for competitive pricing, but it’s not based in Indonesia (Contabo). Their website’s pricing seemed fair, and even considering the exchange rate, it was still relatively cheap. Still, at around Rp110,000 per month, it felt expensive. Then came the tempting thought: “Hey, I could use this for other projects too. I could just set up Docker and Nginx, and everything would be routed for each app.”
Cute idea, right? Wrong. I discovered they charged extra for the Singapore region and had a one-time fee. The cost just wasn’t justifiable at this point since I just wanted to host GhostCMS. While their pricing was competitive compared to Indonesian VPS providers, it was still too expensive for a hobby project.
The Grass Is Not Always Greener: Leaning Back to WordPress
Honestly, I just want to write, and I don’t expect massive traffic right away. So, maybe starting small is better? I remembered using a pretty cheap hosting plan with IDCloudhost when I helped Hana build her website https://www.hanamakesalot.com/.
Boy it still pretty cheap. Their plans were still very affordable. Between the “Latte” and “Small” packages, I was tempted by “Latte” because of its cPanel access. But again, this was for a fun project, so why spend more than necessary? Therefore, I chose the “Small” package – woohoo!
Here’s something to consider when choosing this solution: you won’t have access to cPanel. During the setup process, I had to rely on their technical support for a few things.
The Adventure Begins: Domain Propagation and Let’s Encrypt
My first hurdle was domain propagation. Initially, my domain redirected to a unknown school website (https://abata.sch.id/, a cool kindergarten website by the way). Their support team was very responsive, even on a holiday, and they resolved the issue within an hour as it just needed more time to propagate.
Facing the SSL Challenge
The next challenge was securing my website with HTTPS to avoid that shady non-secure feeling. I used the Really Simple SSL plugin to configure Let’s Encrypt, but I encountered an error.
If you’re new to setting up SSL, this error might be confusing. Basically, the system couldn’t access the directory to verify the ACME challenge. The solution was simple: create the directory. However, without cPanel access, I couldn’t access the WordPress directory, and I wasn’t familiar with how to set it up within WordPress itself. For web applications, you can usually add the challenge to the DNS records, but I worried it might break my WordPress installation (Fun fact: I once had a WordPress blog break because of a silly theme edit). So, I submitted another support ticket.
An hour later, and it was fixed! Yay!
Moral of Story: Stay Away From Shiny Things
This whole process was actually kind of fun, even though it was a bit longer than expected. Right now, I’m comfortable with the current solution. Looking back at my current company, most of our code is written in PHP, but hey, it works (at least until we have significant load and need to rewrite it). Sometimes, you just need to get things done and deal with future problems later.
And finally…
Hello, World! Welcome to teodolist.com! Here, I’ll be posting whatever I feel like to check off my life’s to-do list.