There is no shortage of easy ways to start a blog.
WordPress.com lets you choose a theme and start publishing. Substack combines writing, newsletters, and subscriber management. Ghost offers a polished foundation for an independent publication or membership business.
If the main goal is to publish quickly, these platforms are sensible choices. They remove the need to think about servers, deployments, and certificates.
Still, I chose to buy a domain and build my own website. Lower operating costs mattered, but they were not the whole reason.
I wanted more than a blog
I did not want a site that was only a chronological list of posts.
I wanted to write about economics, investing, AI, and emerging technologies while also presenting my experience and projects. Over time, the site should be able to serve as a personal homepage, portfolio, and knowledge archive.
I do not need every feature today. But when the need arises, I want the option to add bilingual pages, search, tags, project formats, a newsletter, or advertising without rebuilding everything around a platform’s limits.
Many hosted platforms can support some of these ideas, but implementation depends on their themes, plans, plugins, and policies.
Platform limits can also limit imagination
An essay that helped clarify this decision was “I Stopped Before Renewing Ghost: Building a Blog”.
Its most useful idea was that platform constraints do more than block individual features. When a desired feature repeatedly proves difficult or impossible, we may eventually stop imagining it altogether.
At first, we simply choose the best available theme. Later, we may want bilingual publishing, a different way to structure an essay, or a new format for presenting projects. If every idea begins with checking whether the platform permits it, the site gradually adapts to the platform instead of evolving around its owner.
What I wanted was not a finished blogging product. I wanted a foundation I could continue developing.
I wanted to control the address and the source
This is also why I bought a personal domain.
A platform address is convenient, but moving services may require changing it. Previously shared links, search results, and external references can all be affected. With a personal domain, the technology underneath the site can change while the public address remains the same.
https://hekate.work
I also decided to keep posts as Markdown files rather than storing the only copy inside a publishing service. The content and website code live in GitHub, so they can move with me if the hosting layer changes.
Address: a personal domain
Content: Markdown files
Website code: a GitHub repository
Low operating costs and high freedom
The stack I selected combines Astro, GitHub, and Cloudflare Pages.
Astro turns Markdown into static web pages. GitHub stores the code, content, and change history. Cloudflare Pages watches the repository and automatically builds and deploys new versions.
For a personal site with moderate traffic, the free tiers of GitHub and Cloudflare Pages can keep recurring costs low. The domain is effectively the main ongoing expense.
At the same time, I can control the design and add features as the site develops. I can give Korean and English their own URLs, restructure the homepage as a portfolio, or create a new content type when I need one.
Freedom also creates responsibility. I need to verify deployments, domain settings, and the behavior of new features. Some work that a managed platform would normally absorb becomes mine.
So this was not simply a decision to replace a paid service with free tools. It was an exchange: less packaged convenience for more control over how the site evolves.
AI lowered the barrier to building it myself
In the past, the time and technical overhead would probably have led me back to a hosted platform. Generative AI changed that calculation.
Building a website is not only about writing code. It also involves defining the product, prioritizing features, and deciding whether the result serves its purpose.
I approached the project as I would a product or business problem: clarify the requirements, review the output, and decide what should happen next. ChatGPT translated many of those decisions into code and commands, then helped narrow down possible causes when something failed.
AI can assist with implementation, but it does not decide what the site should become. The owner still needs to define the goal, judge the outcome, and make trade-offs between convenience and control.
A foundation, not a finished product
I do not think this approach is right for everyone. A hosted service may be the better answer when publishing as quickly as possible is the priority.
But if a blog is meant to grow into a homepage, portfolio, and long-term knowledge archive, building it directly is now a realistic option.
My criteria were straightforward:
Low operating costs
Creative freedom
A personal domain
Content ownership
Long-term extensibility
Today, hekate.work has English and Korean homepages, an about section, and the foundation of a writing archive. It will become a place to document what I learn about economics, investing, AI, and emerging technology.
In the next post, I will walk through how I built it—from installing Node.js and creating an Astro project to connecting GitHub, Cloudflare Pages, and the final domain.