This webpage is generated by hugo, a static site to
generate the contents of this webpage, which I then push using the neocities cli
tool by running
neocities push public/ in the hugo folder. It took a while to
get the theme set up, but now it’s smooth sailing, and editing/versioning
content in markdown is really convenient (I use vim for editing). Since go
produces statically linked binaries, I have the option of permanently pinning
the hugo version I use without worrying about breakages due to backward
incompatible changes in dependencies.
Previously, the content of this website was maintained in Django backed by
postgres that I would edit locally and then use
wget against my local instance
to generate a static site which I would upload. This approach was more easily
configurable compared to the current setup, but had severe drawbacks that became
more apparent as time went on. First, every update to Django libraries required
a migration, and migrations between major versions required some level of manual
intervention. postgres upgrades were similarly scary. I had also run into issues
with the python ecosystem, where keeping Django pinned to an older version would
break as packages it depended upon introduced breaking changes. While it was
cool to have the ability to define objects and how they were rendered, it became
apparent that the complexity that this generated was unjustified at the scale
that I wanted for my website. It was also annoying to only be able to edit
Django objects through the web-based interface.
Overall, I’ve found it much easier to focus on writing in hugo compared to the Django/postgres approach, where system administration and unecessary complexity made it difficult to do so.