byminseok.com

Stacking 22 Features in a Day, Then Refactoring Everything the Next

Translated from Korean

Eight years ago, I built a blog using Jekyll and GitHub Pages. Back when I was an undergraduate computer science student, I somehow muddled through the process with the mindset, "I want to build my own blog using programming," and launched theorakim.github.io. Then I abandoned it.

In the meantime, I went through Naver Blog and Tistory. Last year, when I moved to Bear Blog, I bought my first personal domain (byminseok.com) from Porkbun and attached it. I gathered posts scattered here and there since 2013 onto Bear Blog and wrote well for a while.

The turning point was Claude Code. While coding with Vibe, I started to truly grasp the potential of "an environment where I can directly touch the code." Bear Blog was convenient, but it had limitations in customization. I was also paying hosting fees. Around that time, I already had a Claude Max subscription, and suddenly on a weekend, I thought, "Let's move it now." That's how the migration began.

I spent nearly 10 hours straight over one day completing 22 tasks. I migrated 100 posts from Bear Blog to Jekyll, implemented tag filters, spread layouts, typing intros, a portfolio page, and connected a custom domain. All the features worked perfectly. The problem was the code.

As I added features one by one, the same logic got duplicated across multiple files, a single file ended up handling multiple roles, and color values were hardcoded without variables. While everything worked fine, looking at the code revealed that "if I ever want to change something later, I'll have to fix three places." To keep up the pace of adding features, I couldn't continue in this state.

The next day, I opened the code to post a new entry and couldn't understand the structure of my own blog. I'd spent ten hours building it yesterday, yet I had no idea what this file did or why that code was there. Refactoring was necessary for code quality, but honestly, I also wanted to understand my own blog.

State Before Refactoring

Specifically, the issues were:

291 lines of inline JS. 132 lines in archive.html, 143 lines in home.html, 16 lines in post.html. All `