Qubyte Codes

About this blog 2

I touched briefly on the technology used in this blog in a previous post, but I didn't explain the motivation behind a lot of the choices I made when building it. I'd like to do that in this post. The design and architecture of this blog is the product of what things I like in other blogs, and also those things that I find frustrating. Where a choice was not obvious, I opted for the simplest option. The point of the exercise was to get it online. Below are a few points in no particular order.

HTTPS

SSL certificates are now free thanks to Let's Encrypt, so there is absolutely no excuse to host blog content over plain HTTP. By doing this you honour the privacy of your readers. It's a little clunky if you're using NGINX (as this blog is), but still far easier than buying a domain name and hosting, sorting DNS etc.

No tracking

I don't currently use tracking or cookies, mainly because I don't need them. Tracking for a blog is largely narcissism. There are no sessions for a blog, so no cookies are necessary. I might track some basic data like user agent later, but that's mainly so I know what browser features I can get away with using. That sort of thing can be done server side. I don't need that now though.

Render once

I really like single page apps. I work on one as part of my day job. The distinction here is that a blog is not an application (at least not in my head). A blog is really just the good old fashioned home page. Given that, I host HTML pages, and there's no JavaScript code rendering DOM. This has some nice repercussions. The browser does very little, so this is kind to batteries. Since the pages are not dynamic, the pages can be statically generated by me, and hosted as files. This avoids building HTML on the server and a database to store pre-rendered data. Just as this is kind to the browser, it's kind to the server.

Responsiveness

My CSS skills are pretty basic. I knew when building this that I wanted a classic centred column on conventional computers, and also for posts to be readable on mobile devices. The CSS is configured such that the text (including margins) will occupy the full width up to a maximum 800px, and thereafter the text column remains at 800px wide and centred. Pretty old school, but also clean.

Dated posts

It's rare, but I do come across how-to style blog posts which lack dates. This is frustrating, since it's difficult to know if the information in the post is stale.

Getting to the point

Probably my biggest gripe with modern blogs and blog platforms is the massive image which dominates the top of each post. This fad is terrible. You force the reader to scroll before they can begin reading. You're also making the browser download that image, which probably takes more data than the rest of the page combined. This blog doesn't do it. I want a reader to be able to start reading with no interaction at all. This blog has been tested with devices as small as an iPhone 4 to that end.

Mobile friendly

I've already touched on this above. A big part of mobile friendly is handling crappy networks. Crappy give each request a good chance of failing. Since the CSS is very simple, I minify and inline it in the head of each post. This means that the typical post is just a single file, so there is as good a chance as possible that the reader will receive the whole post.

No comment

Comments are complex. Rolling my own would mean a database and rendering on the server or in the browser. Using a third party would probably mean scripts. Both are fine, but I'm not sure if comments are worth the trouble. If something is really worth saying, you can always tweet to me or tweet a gist to me. If comments become desirable in the future, I can revisit them.