THE JOURNAL

uBlog

(created on 2026.10.21 by gsz)

Introduction

This project started as a natural followup of my own blogging-engine-journey. It started in 2023 as a CGI script via a small CGI server written in Java. Then I wanted to host it at home and I figured, that a first generation Raspberry PI is able to execute my blog script in Bash, but it painfully slow. And kinda insecure as well.

So I moved on.

I raised the same old question I did with my other projects: "how hard can it be".

So I got busy in rewriting my blogging engine in Java.

What was it

Probably a concept. I threw a few of my own libraries into it (dependency injection, mustache templating) and created a small(ish) webserver by using Java sockets. It worked. I could render markdown files into HTML, render the page in HTML etc. It was really great. But it was still basically a fancy file listing with some rendering pathed on it and a seriously unsercure HTTP server implementation. However, it performed well. About 1ms rendering on my machine, 8MB of heap usage etc. Hidden behind a reverse proxy (images hosted by the proxy). It was great.

However, creating entries meant me logging in on the remote machine, writing out a markdown, uploading (via scp) images and then link them manually etc. I mean, it's probably the safest, but I have to say, I lost many entries because of this exact reason. So eventually I got fed up with this and I re-visited uBlog.

Where it went

I did major changes (with the extensive help of AI, ofcourse). It all started with my wish of creating entries. So I was thinking about making things a bit more robust. Also, the first version looked exactly like a webpage would look like made by a backend developer. No shame, no blame. But it was not at all visually engaging.

So I got busy. In about a week's free-time-work I was able to introduce a lot of features, security patches and most importantly, visual improvements.

I made a small "workflow" for me, where I would instruct Copilot in VS Code to do changes. I reviewed it, refactored it if necessary etc. When I was happy, I pushed it into Git, and then asked ChatGPT to do a code review and list out issues, improvements etc. Based on that I instructed Copilot again. There was a (single) human in the loop in both ways. But it worked really great.

The best parts for me were the following:

  • Proved my initial design (mostly) correct.
  • Proved that my libraries work.
  • Showed that UI via AI is really a way (see for yourself).

And now I like it.

I can create. Edit. Add images. I have a nice view. Java heap memory is still 8MB. Rendering is still fast (2ms on my local machine). And more secure.

I'm happy now.

Try it yourself, take from github, Docker hub or visit the official site.