Distant Constructs

published: 2021-01-09, updated: 2022-01-01

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.