# tech
I've recently been writing physical notes to track my thoughts. I actually did this after receiving some advice about organizing tasks: operate on the basis that if you have something important that needs to be done, write it down.
Since then, I've found that writing my thoughts and perspectives on things has helped me process ideas more clearly and deepen my knowledge of topics I'm exploring. There is just something therapeutic about putting thoughts into words, and I'm hoping that through regular practice I can become a more effective communicator. I'd like to establish myself as someone with useful insights in the areas I'm passionate about – whether that's Python, technology, games or the latest thing I'm obsessing over. So, this blog was born.
Okay, admittedly, this isn't my first attempt at making a blog. Previously I had a blog to record my thoughts but it mostly sat empty. I was putting tremendous pressure on myself to write either totally unique content or professional-level articles. I think part of this was owing to an admittedly over-engineered theme I originally created called lookr (now archived).
I put a lot of time into creating something very professional and "modern-looking", and I personally think that set the precedent for writing high-level content.
So then, what's different about now? As you may have noticed, the site you are looking at is a lot more minimal compared to most modernized web pages. This is by design. I built this theme from a fork of zola-hook which had a very small footprint and a simple layout. The thinking behind this decision would be that I could escape the mental block of having to produce something approaching perfection.
All of the technical aspects of what powers this blog.
The static site generator I'm using currently is Zola. I was originally considering creating this site using a Python framework such as fastHTML but ultimately decided against it. Before switching to Zola, I was previously using Hugo, however I have a few gripes with Hugo that gave Zola the edge. Primarily though, I like the fact that with Zola, you can overwrite anything set in the themes directory within your own directories. The themes directory and its contents just mimic the directory structure at the root of your project. With Hugo, a theme is sort-of required, because Hugo needs to know a layout/template that should be used to render your content. The vast majority of Hugo users prefer precrafted templates and layouts and whilst there are extensive themes to choose from, you lock yourself in after making a choice.
The other reason I prefer Zola is the template engine itself. Zola uses a template engine called Tera which was designed to have a lot in common with Django templates I'm used to working with. So it all just felt more natural and familiar.
For this blog iteration, I've decided to use GitHub Pages. That way I don't have to administer a Linux VPS in my free time, handling expiring certificates etc. Originally when I had a few different services it made sense to deploy the generated files to the vps using SSH and rsync, but I've since been trying to simplify my workflows. The simplicity of git push to live site as well as the benefits of having automatic SSL and global CDN out of the box outweigh the benefits of custom server configuration (at least for now).
In previous iterations of my blogs, I didn't actually make an effort to categorise or sort my posts. This time I'm making use of tags. Conceptually, I'm sort of using tags like categories, but since Zola handles taxonomies all the same, I think it is more modern. All tags can be viewed by visiting the /tags page.
I recently watched an interesting video about optimizing images. Essentially I'm using the same strategy, utilizing object storage via Cloudflare R2.
I didn't opt to use "bespoke," however, which was the tool referenced in the video. ImageMagick is more than capable of converting any images to the desired format and is available on most Linux systems. So my workflow is to convert any images I use in posts, and a cobbled-together bash script assists with the process of converting and uploading images. I have a custom shortcode for use specifically within this blog that allows me to serve images from object storage using WebP and JPEG for fallback.
Example:
Lastly, to combat bit rot of my posts, I use a custom-built dead link checker called link-sweep. I designed it to be runnable via GitHub actions.