Writing

Software, projects & software projects

A Boring Website

Choose boring technology - Dan McKinley

Programmers enjoy talking and reading about tech stacks. Here is mine:

Infrastructure

The site runs on a “Basic” Digital Ocean Droplet with Ubuntu 20-something installed. I manage everything on it manually via ssh.

Blog

The blog is just plain HTML, CSS and the occasional inline JavaScript. I write my posts in the Apple Notes app. Notes does have a nice enough UI for working with text, keeps everything backed-up and I can access unfinished posts I’m from all my devices. Once done I manually transform the post into HTML. Zero dependencies and no restrictions. A nginx server serves the site up for you, nice and hot.

Reading List

The reading list is described in an older post. It basically still works that way, but I migrated it off of AWS. I now run a Postfix mail server on the same droplet as this site.

Feedback Form

The feedback form is using FastCGI via PHP FPM, which also churns behind the nginx. I’ve actually never used (Fast)CGI before, but I really do enjoy the simplicity of it all: Uncomment some nginx configuration lines, put a PHP file on the server and off it goes. Your comments are simply stored in a file, which I then read whenever I feel like it.

RSS Feed

The RSS feed I provide for my posts is generated semi-manually. It’s one of those „I need to build something with that tech I just discovered“-things. The tech is Elixir and out came a small script which just parses the HTML post files and generates an Atom XML feed as a static file:

entries = post_file_paths
|> Stream.map(&parse_post_file/1)
|> Stream.zip(post_file_paths)
|> Stream.map(&generate_entry/1)
|> Enum.sort(&(&1.updated < &2.updated))
...
xml = render(updated, entries) 
      
I’m using Elixir’s built-in scripting tooling called „escript“ which produces an executable. To parse the HTML files I’m using the Floki library. I’ll probably get rid of this and just create the feed file manually.

Deployment

It’s just rsync. The reading list and feedback form are deployed separately, also with rsync.

Misc

It all works great and will work great for a long time, because it’s boring technology.

Other posts