Hello World

This is a behind the scenes look into how I setup my blog and the decisions I made.

It’s supposed to serve as a kick-off blog post, akin to the McDonalds Theory but applied to blogging. Rather than focusing on getting the perfect first post, it’s better to get something out there. To gain momentum. To get started.

Talking about getting started, I kicked off the process by defining a set of principles for my blog:

Good Enough

The objective here is to write content rather than getting everything perfect. To avoid falling into a never-ending tinkering trap, I prioritized a list of features that meant good enough for me:

  1. Reading posts should look good on mobile, desktop, and read-it-later apps
  2. Navigate between all posts
  3. Provide an RSS Feed
  4. Have an About and a Now page
  5. Allows readers to subscribe to new posts

Setup and Costs

I used:

I chose Jekyll because I’ve had experience with it in the past, it’s based on Ruby which I’m familiar with, and there’s a lot of documentation available.

Cloudflare Pages provides free hosting, supports Jekyll, and integrates with Github to automatically deploy the website on pushes to the main branch.

There’s a preview environment setup to deploy each branch that starts with post/ to a separate URL, with drafts enabled.

Pulumi automates the Cloudflare Pages and DNS configurations, keeping everything versioned in the same repository. A push to main with changes to the Pulumi files (using paths-filter) triggers a Github Action to apply any infrastructure changes.

RSS Feed Pulse makes it easy to add a subscription form to a static website based on just the RSS feed.

Easy to Publish

Thanks to how everything is integrated, all I need is my iPad to make changes and publish to my blog. It’s easier to focus while writing on the iPad, as I usually use one app at a time. Plus I take it with me when traveling, allowing me to write on the go.

What makes this easy is: Working Copy, which allows me to clone the repository to a local folder in Files. I can open that folder and write posts using iA Writer.

After I have a draft, I commit, then push the code to Github in a post/<title> branch. This triggers a deploy to a separate URL that I can then preview the post to make sure it looks good before going live.

I merge to main to publish the post.

Style

I chose “puts debug” as the name for my blog as a play on how I tend to first approach debugging (I’m a puts debugger).

My next thought was: wouldn’t it be cool if the pages read like Ruby code? It’s been fun trying to find the balance between showing the content vs. sprinkling enough Ruby code without it being distracting. The code also needed to be executable without errors.

These may seem like unnecessary details, but the geekiness of having valid executable Ruby code as the template shows a bit of my personality.

For building the HTML templates, I wanted to try out Tailwind CSS. I found a useful boilerplate by Harry Wang and adapted it to my liking.

I decided to copy my favorite reading and writing experience for notes: Bear with the Rose Pine theme. This is another way I’m able to show my own personal taste in my blog.

Finally, I decided to make the blog look good on mobile devices. I tend to open a lot of articles first on my phone, read it, or send it to my read-it later app (my current favorite is Matter). Others will likely do something similar, so I sprinkled some semantic HTML tags to get the post displayed properly in those apps.


It’s been fun getting this setup. There’s more fine-tuning and features to add, but that can come later. The challenge for me is to get out of my comfort zone and focus on writing.

Cheers to getting started.