Why Now Drive?
This post is the first on this particular blog system which has ever been made accessible to the internet. This is a system almost entirely about scratching an itch. I've never been much of a blogger, only intermittently. I've used mostly free commercial solutions but have always found myself a bit wanting. In particular purely because I've got a technical background and a blog system is not the hardest thing in the world, I thought if I am going to put my own thoughts online I should own the system as much as possible!
If being a technical person is part of my identity, and a blog is a personal thing, why would I not want to create my own technical solution for expressing myself?
What is Now Drive?
At a glance, Now Drive is a hybrid hosted blog and static file generator. This approach gives me a 'best of both worlds' of access from any of my devices, while not having tricky scaling concerns which normally concern DB backed blogging systems.
There is a hosted control panel which I can access from any of my devices assuming they have the right key and password available. The content is served directly through nginx with some nice rewrite rules and content generation rules such that the posts appear on clean URLs.
The backend is written in Java with GraalVM compilation, using the Quarkus framework. I've found this offers an excellent development experience with very complete, fast hot reloading using the JVM and then the option to optimise as you wish with GraaalVM community edition by taking advantage of native compilation. I find that the running docker image of the Java container usually takes no more than 60MiB of memory, vastly less than the hundreds of megabytes Spring Boot applications commonly require.
Although my current build is using the fast build option which also produces a relatively small image.
As posts are updated, published, unpublished, deleted, some backend rules sync the files in a k8s persistent volume which are then exposed through nginx. The files can also be synced wholesale.
In fact the backend can be taken down entirely and the blog posts still served. There is the potential to target some kind of object store but I'm not 100% sure it's necessary at this point and I think my VPS should be more than sufficient for my needs.
All of the data about posts lives in Postgres, and flyway is used to manage the database migrations (although few should be necessary).
Blog posts are written in markdown and it handles image uploads as well. In the future I might consider adding a pure HTML 'mode' if I want more significant control over markup.

Part of the motivation for writing this was also that I've had to take some time off post-surgery. More zealous commentators may wonder exactly why I need to be off from programming work if I'm, you know, programming. In truth I've not been able to work on this in the way that would be expected of me in my role - I could not plausibly attend long meetings, I would not have the patience to adhere to consensus development and standards while experiencing significant discomfort, I could not work normal hours while experiencing post-surgical fatigue and sleep changes and being disrupted by my own body... etc.
Part of the motivation for the architecture that I've pursued here is that I've hidden the Java code and DB so deeply and prevented their exposure so thoroughly that lapses in my professionalism over this time are mostly hidden from view.
In some ways this has been something of a 'rehabilitation' project for me and a way of determining if I could return to work productively or not: Can I sit at a chair for long enough to actually accomplish something before some symptom or side effect forces me to break concentration? As such this has been relatively drawn out by my standards.
Nevertheless, I'm happy with what I've got here. It fulfils the want I had, I think it looks relatively nice and I'll probably use it as a place to put thoughts in the future.
Find the gitlab repo here: https://gitlab.com/CaptainBland/now-drive