Skip to content

Commit bba77f3

Browse files
committed
hello blog
1 parent 0c4a1c5 commit bba77f3

File tree

1 file changed

+24
-7
lines changed

1 file changed

+24
-7
lines changed

articles/2025-07-01-hello-blog.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,37 @@
11
# Hello blog
22

3-
When I decided to start writing about technical topics, I needed a simple way to publish blog posts. The requirements were straightforward: write in Markdown, generate static HTML, support RSS feeds, and keep everything version-controlled in Git. Most importantly, I wanted something I could understand completely, maintain easily, and that wouldn't break on major upgrades.
3+
I stumbled across the [refactoring english book](https://refactoringenglish.com/) this summer. This got me motivated to try (technical) writing myself. However, I needed a simple way to publish blog posts and an excuse why I can't start writing immediatly. So me being in developer mode, I told myself:
44

5-
## Existing tools were overkill
65

7-
The static site generator ecosystem is vast, but most solutions come with significant complexity:
6+
> "First things first, instead of practicing my writing, reading the book or sketching drafts of what I actually could write about, start with a custom static site generator."
87
9-
[**Hugo**](https://gohugo.io/) is fast and popular, but it's a massive framework with hundreds of features I'd never use. The configuration files, theme system, and plugin ecosystem add layers of abstraction that make it hard to understand what's actually happening. When something breaks or I want to customize behavior, it is too complex for me to reason about all this. And I have had issues in the past where untouched static websites suddenly would no longer build after one or two years.
8+
But this now became the first article and I like it.
9+
10+
## TL;DR
11+
12+
This blog is generated by 400 lines of handwritten [go code](https://github.com/nobloat/blog/blob/main/main.go), mainly because it is fun, but also because I was annoyed by all the breaking changes with each update of existing solutions.
13+
14+
This can't happen anymore :)
15+
16+
17+
## Existing tools got me distracted
18+
19+
The static site generator ecosystem [is vast](https://github.com/myles/awesome-static-generators), but most solutions come with significant complexity.
20+
21+
[**Hugo**](https://gohugo.io/) is fast and popular and I have used it in the past already. But, it's a massive framework with hundreds of features I'd never use but still have to pay for in *complexity tokens*. The configuration files, theme system, and plugin ecosystem add layers of abstraction that make it hard to understand what's actually happening. When something breaks or I want to customize behavior, it is too complex for me to reason about all this. And I have had issues in the past where untouched static websites suddenly would no longer build after one or two years.
1022

1123
[**Jekyll**](https://jekyllrb.com/) requires Ruby, Bundler, and a complex gem ecosystem. Every time I'd want to update or deploy, I'd need to ensure the right Ruby version, manage gem dependencies, and deal with potential version conflicts. The overhead of maintaining a Ruby environment just to generate static HTML felt excessive.
1224

1325
[**Next.js**](https://nextjs.org/) and other React-based static site generators are powerful, but they bring the entire JavaScript ecosystem with them. Node modules, build tools, transpilation, and the constant churn of the npm ecosystem—all for what is essentially text processing and template rendering.
1426

1527
Even simpler tools like [**Zola**](https://www.getzola.org/) or [**11ty**](https://www.11ty.dev/) still require learning their specific conventions, configuration formats, and template languages. They're better than the heavyweights, but they're still frameworks with their own abstractions.
1628

17-
What I needed was clear: write Markdown files, run a simple command, get HTML. No configuration files, no theme system, no plugin architecture. Everything should be in Git, work with text editors, and require no setup beyond having Go installed.
29+
What I needed was:
30+
31+
- write Markdown files
32+
- run a simple command, get HTML.
33+
- Everything should be in Git, work with text editors, and require no setup beyond having Go installed.
34+
- No configuration files, no theme system, no plugin architecture I would need to learn first.
1835

1936
None of the existing solutions met these requirements. They either required complex setup, had too many dependencies, introduced unnecessary abstractions, or were too opinionated about structure. Plus this might be a fun project for a sunny afternoon in the park.
2037

@@ -129,9 +146,9 @@ This is the only external dependency ([github.com/fsnotify/fsnotify](https://git
129146

130147
## Conclusion
131148

132-
This blog generator does exactly what I need: converts Markdown to HTML, generates an index and RSS feed, and outputs static files. It's under 400 lines of code, uses only the go standard library for core functionality, and I understand every part of it.
149+
This blog generator does exactly what I need: converts Markdown to HTML, generates an index and RSS feed, and outputs static files. **It's under 400 lines of code**, uses only the go standard library for core functionality, and I understand every part of it.
133150

134-
It might not be suitable for someone who needs complex features like tags, categories, pagination, or theme systems. But for a simple technical blog, it's perfect. It fits the "nobloat" philosophy.
151+
It might not be suitable for someone who needs complex features like tags, categories, pagination, or theme systems. But for a simple technical blog, it's perfect. It fits the *"nobloat" philosophy*.
135152

136153
The entire codebase is very small, making it easy to read, modify, and maintain.
137154

0 commit comments

Comments
 (0)