Charlton's Blog

Charlton’s Blog: A Manual

Published: Jun 20, 2022
Category: Blog
Tags:

Welcome to Charlton’s blog. This post is intended to track new developments and acquaint you with some of the features and layout of this website.

Sections

This blog is divided into the following main sections.

Blog Posts

The highest-level and most general section containing all of my various writings, projects, etc.

My Projects

This section is a subset of Blog Posts, listing only posts categorized under “Projects”. In general, I’ll write about interesting and original stuff I’ve created here.

Photography

My amateur photograhy is posted in this section.

Status

This section is where I archive and organize the various things I’m studying/working on from a month-to-month basis. It’s essentially a long list of tersely formatted status updates that I collect and maintain along with some commentary.

Web Extras

A list of links to other sites worth checking out.

Each post has a small section at the top I call the “metabox”, which contains various metadata. You can see the date of publication along with a list of categories and tags the post has been filed under. The metabox’s “Published”, “Categories”, and “Tags” headings are links that will navigate you to the post’s main section, category list, and tag list respectively.

Every post has a set of categories and tags associated with it. These are used to organize content and generate the list of related articles appearing at the bottom of each post on the site (with the exception of monthly statuses). A short list of recently updated pages also appears on the homepage, to make it easy for visitors to discover what’s new.

Sections are absolutely stable. Categories tend to be more stable and well thought out than tags, which may appear or disappear at any time.

Multimedia

Several types of embedded multimedia appear throughout this blog.

Images

The most common. Clicking any image will load the full-sized version.

PDFs

The second most common. I use a modified version of hugo-embed-pdf-shortcode to interactively render PDF documents directly in posts. You can interact with these directly, or load the original PDF using the embedded link next to the controls.

    / [pdf]

Video

Embedded videos typically appear in photography posts, or posts containing video demonstrations.

Audio

Embedded audio is also supported.

External Embeds

I also use Hugo’s built-in shortcodes to embed YouTube videos, GitHub gists, tweets, and so on.

RSS

Hugo generates multiple RSS feeds for various sections of the site. Should you choose to use these feeds, they can enable you to sort and filter only the types of content you’d like to see based on your interests. You could subscribe to the master feed of all new posts, or to specific sections, categories, and tags.

For instance, if you wanted an RSS subscription to this site containing only posts categorized under “Programming”, you could find its RSS feed by appending /index.xml to the URL like so:

https://blog.ctis.me/category/programming/index.xml

This trick works for more or less any URL, whether it’s a section, category, or tag. For instance, here’s an RSS feed link that exclusively contains monthly status updates:

https://blog.ctis.me/status/index.xml

RSS feeds served by this blog make use of XSLT to make them easy for humans to use in the browser.

Design

Simplicity is an important part of this site’s design. The frontend components are basic and lightweight, which I consider a feature. As of today, the homepage loads a total 138 kB of resources in under 300 ms on a laptop. Most pages (without embedded media) should load in just under a second at most.

Development

This website is in a perpetual state of development. You can explore the nuts and bolts in my Hugo theme’s repository.

Infrastructure

This blog is statically generated by Hugo. It’s compiled and hosted by Cloudflare Pages, using GitHub for version control. Image files and other large assets are stored in BackBlaze B2 and served via Cloudflare.

Though the site currently makes heavily use of external services, I could easily migrate platforms or self-host it at any time, so long as I retain a local copy of the repository and control of the ctis.me domain.