ZenDenPen Relaunch Developer Stories
I just relaunched ZenDenPen static website hosting Version 2. This is a more in depth technical gateway into my thinking and in to some of the decisions which have been made. These are just a few of them, as I’ve had to make thousands of micro decisions all the time.
TLDR; Perfectionism, the fear of zendenpen not being the “best” led me to add too many features, however I came back to the Zen thought of making something wonderful doesn’t have to be a huge palace, just a beautiful garden;)
While It had been on hold for quite some time and I closed up new registrations since last year for almost a year because I wanted to rebuild it better than ever.
So I did what every programmer does, tried out to add as many features as possible to make it “feature complete”, easy to use, fast, secure, etc.
Feature creep and technical complexity always go hand in hand. Luckily I realized I was actually diverging away from the original vision I had For ZenDenPen.
I was trying to compete with huge corporations or startups which have been a long a long time and had millions of euro/dollars invested in seed funding to build overly complex unmaintainable software. Instead, I should embrace the fact that I’m one single developer building software for a decentralized internet.
It’s going to offer what you need, the essential and important tools to build a website, not a fancy vendor lockin
Simple UI - Removing the fancy WYSIWYG website builder
Naturally, a huge “refactoring” was underway and I had to throw a lot of code away. Especially a fancy drag and drop system I had built from scratch. A WYSWYG what you see is what you get system build on top op grapesjs which would have competed with big brand names.
Removing hand written code is not easy, deciding to start over and even refactoring is also not easy but it’s often the best choice. In our current AI code slop generated era, AI systems “refactor all the time” but they don’t think of the whole complex problem, instead just bash away endlessly.
Removing working handcrafted code is painful but it needed to be done. Especially since I had a nice templating system built on top.
Why? Simple. If I abstract away the magic of of HTML and CSS then people will always be slaves to big corporations.
Instead I opted to give control and power back to simple humans, helping them get started with having their own slice of the internet. This means that I had to allow both HTML and a sort of templating system.. And then the feature creep ideas came back in
Dynamic Programming
Should I allow dynamic programming? If yes then I needed a way to allow users to code! This proved to be a huge rabbit hole as just a few programming languages can be embedded and provide real sandboxing and security.
I had to choose between speed, security, ease of use.
I experimented with quite a few of them and eventually decided to build my own https://zbor.subl.im / https://zbor.fullstackdevops.eu
I actually began adding a lot of features and even adding extra cool features to zendenpen like comments, a minimal social media, and dynamic content.
However after careful consideration to avoid feature creep after I had already written quite some code, yet again I decided to NOT add dynamic programming to ZenDenPen . SO I archived a lot of code to maintain the Zen simplicity.
Probably in 2027 I will launch a separate system called Zenix which will allow anyone to selfhost their own website which will be self contained in 1 binary 1 sqlite DB and programmable via a dynamic scripting language, and I will also provide a cloud variant. More on that at another time.
Technical Decisions
Just to make it clear, most decisions are made form a place of how fast/easy is it for 1 single developer/maintainer (me) to run a a system all by himself. Thus, many decisions also need to be made in a pragmatic manner, meaning I have to avoid HYPES and make good sound technological choices which will make sense in the future aswell.
These decisions take time, and energy.
FreeBSD or Linux
I opted to use FreeBSD as the main server for version 2 of ZenDenPen. The technical superiority of the decision is apparent, especially with all the recent kernel exploits found in early 2026.
Unfortunately, the majority of cloud providers DO not provide an image for freebsd out of the box.
So I’d have a few options:
- Use the rescue mode to then somehow reinstall force freebsd to work.
- Ask the cloud provider to allow me to upload a freebsd custom cloud-init image which I could then use via a special CLI systems
- Use a provider which has FreeBSD support. This also added other roadblocks that If I used a provider which DID support freebsd it would be one out of EU and I’d get into other local bureaucratic tax complexities which I wanted to avoid.
THis is rather cumbersome and takes a lot of time to properly setup AND i would waste energy with each new VPS i’d need to run. Automating this would be an option but at the end I had to let go of the purist and perfectionist and just continue using Linux.
ZFS
FreeBSD came with ZFS on root by default, something which is NOT the case with most Linux distributions due to licensing. Again, no VPS provider gives such an option.
Using ZFS is a no brainer given it allows compression and a plethora of amazing features. For static sites this would mean saving some space.
Manual setup is again needed. I found out that live shrinking of a disk which uses ext4 on Linux to then add a zfs partition often makes the system unbootable. Kernel recompilation especially with the recent linux vulnerabilities would make it that the zfs partition would not work.
Doing this in rescue mode is also a big problem due to how the mounting works and a lot of extra steps need to be taken.
I decided to thus go with having the default disk as ext4 and use external block storage with ZFS
How much disk space do I provide to the Zen Sanctuaries?
Tricky question as to avoid spammers abusing the free system as well as making it worthwhile for others to upgrade to premium.
THe cost per GB of disk space differs wildly at around 1 euro per 10GB per month. The value is much more complicated to calculate because of how cloud providers often charge This means that let’s say to support 1000 free accounts and 100 premium accounts would cost 350 euro/year just for the storage costs on a single machine. Add the actual machine, computing, bandwidth etc.
Object storage is NOT the solution
Someone who doesn’t really know how computers work might say “but use object storage” it’s just 0.02 EURO/GB! I can’t really host static sites on object storage since it’s not designed for that. Sure, I experimented with this option. It’s going to make things very slow and it will add tons of complexity TO the whole build process.
Nvme vs HDD - Speed vs Disk space
I did found a provider in Romania which provides high density HDD’s at a very good price and also general purpose NVME’s for more I/O intensive usage. THey even mention that NVME’s are recommended for web hosting.
The tradeoff between providing more disk space versus having real good speed is real.
1TB for 150 euro/year +/- is pretty good for HDD. The alternative is 750 euro/year for NVME at 1TB.
Now this begs the question. Do I provide MORE storage which is SLower HDD? And risk having people’s websites become really slow when there is a lot of traffic? Or do I provide less disk space but make it very fast? NVME SSD ?
I could also make a system to host all of the free websites on HDD at the risk of people then saying zendenpen is slow and risking they never upgrade to the faster NVME reserved for premium. This MAY also be a used as a reason to have them upgrade for faster speeds.
Or I could do a sort of frankenstein system in which I combine NVME+HDD + ZFS + layer2 arc. But this will probably take more time and energy than necessary to properly implement. Having ZFS cache most accessed info on a NVME and storing everything on HDD anyway.
For the meanwhile I’m proabably going to stick to NVME’s and seehow the system behaves and adapt accordingly.
Worldwide duplication
Another problem is for the future I plan to use GeoDNS and buy new VPS’es all over the world to make the website accessible everywhere faster. THis will create a problem as I will need to duplicate every GB in at least 3 to 5 different places all over the world. Increasing the costs per GB thus making it even more complicated
Custom dedicated Server
Buying a rack/server is a solution but this is also expensive as disk and ram prices have soared due to the AI psychosis. So this isn’t a good idea untill ZenDenPen gets enough users AND generates enough funds to make it worthwhile as an investment.
Because a custom dedicated server has also other problems like reliability and stuff, meaning I have to manually mange RAID with ZFS, even when colocating it or hosting it at home.
AI Bots ruining the internet
However, there’s also the extra problem AI bots crawling and slowing everything down for everyone. This will probably need a non cloudflare solution and Ive been experimenting with quite a few solutions. THere’s always a problem of centralization vs ease of use vs breaking features
FTP, SFTP, SSH, rsync, webdav or git access
At a point I wanted to allow people to access their website via ftp, sftp, ssh, rsync or even git . Following the unix philosophy of using existing tools which have been around for ages to manage your website.
This prooved to be a very deep rabit hole as it requires a very good security aspect. I experimented with quite a few solutions but eventually decided to postpone the whole idea.
Using existing sftp/ssh solutions would have created security holes I don’t want to go into. The same with FTP. The solution was to either use a 3rd party or create system which could handle all of that. SO I took a look at sftpgo and https://github.com/charmbracelet/wish and some other libraries.,
Meaning I’d have to build a separate ssh server so sftp, rsync and webdav could work. I’d have to manage ssh certificates
However most people who will host a website will probably never use FTP/SFTP or rsync. And developers might also appreciate if they’d have a CLI tool.
Instead I will be adding a CLI
Stop comparing ZenDenPen with X,Y,Z
Yeah, I was comparing my default offerings with those of Neocities today. But neocities started out giving 10 MB to free accounts 13 years ago! This is an inadequate comparison. Also it’s inadequate to compare ZenDenPen with any big company out there which has millions of $$ in seed funding. Most startups fail in a few years, yeah, even thos ewhich received millions of funding! Of course they’re going to offer a lot of value, they want your DATA so they infringe your privacy!
ZenDenPen.com is a philosohy
How YOU can help
How can you help? Simple! Use ZenDenPen! If you like it, consider buying one of the two premium to support the idea and spread love for the small beautiful web!
HIstory
ZenDenPen had started as a Elixir implementation in 2019, however I had rebuilt it from scratch in 2024 using Golang for a variety of reasons.
Article 100% written by a human without any AI intervention
Need something like this?
I build high-performance Go-based software and websites which I can host for you on a $5 Linux VPS. No intermediate agency layers, direct developer execution.
Discuss an Integration →