A Boring Website
2021-01-12
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
- For basic visitor stats I use GoAccess
- Git and Github for version control
- Visual Studio Code and nano for file editing
It all works great and will work great for a long time, because it’s boring technology.