taylor.town (previously taysar.com) is a public place for organizing my thoughts.

Everything for the site (including the text) can be found on GitHub.

This site is served via CloudFlare Pages. My custom build-script is written in Elixir and can be found here. The Earmark Markdown Parser is really high-quality.

The design and typography steals heavily from tufte-css.

I use tinyletter.com for my e-mail newsletter.

Thanks for visiting.


-- Create an HTML file in a newsletter archive directory.
-- One essay in full; many essays in a table.
-- Share common styling file with build.exs.
mix run newsletter.exs essays/1.md ...


I’d like to put an “I am X days old” counter somewhere on the website.


The images and video embeds don’t load right away – I want to add a colored background for media to show the loading space.


It would be cool to publish all my new music finds in a monthly newsletter.


I absolutely adore this “hi” page on sonnet.io.

I really really want to copy it 🙃


Some new tasks:


I want to make a logo at some point.


This little script was incredibly helpful for tracking down original dates for essays:

for i in essays/* ; do echo "$i : $(git log --follow --format=%aD $i | tail -1)" ; done | less


I’d like to branch out some of the more important pages into mini-sites like howcomplexsystems.fail. But I don’t think there are any good candidates for mini-sites yet.


I would love to create a script that automatically downloads and populates all the album artwork for my music list. I guess that would be a lot to load at once – so maybe just a grid of 5-star albums?


I just added favicons and icons and I think the iOS one needs some padding.


I think the category pages should be separated into “recent” (which uses the updated field) and “all” sections.


I finally found the perfect e-mail newsletter service for my site: tinyletter.

When I’m ready to officially start sending monthly emails, I just need to run the following on the first of each month and summarize everything:

git diff HEAD '@{1 month ago}'


Updated task-list:


Well, renaming everything was significantly harder than I expected. Here is the script I used:

for x in * ; do x=${x%.*}; if ! grep -q "is_published" "$x.md"; then echo "---\ntitle: $(echo "$x" | sed 's/.*/\u&/')\nis_published: false\nredirects:\ntags:\ncreated:\nupdated:\n---\n\n$(cat "$x.md")" >! "$x".md ; fi ; y=$(echo $x | tr -dc '[:alnum:] -' | tr -d ",'\"" | tr '&' 'and' | tr ' ' '-' | tr '[:upper:]' '[:lower:]').md ; mv "$x.md" "$y.new"; mv "$y.new" "$y" ; done


When I’m ready, I think I can use the following script on the files to make better links:

for x in * ; do 
  mv "$x" $(echo "$x" | tr -dc '[:alnum:] -.' | tr ' ' '-' | tr '[:upper:]' '[:lower:]') 


Okay, I finished implementing the headers, but I still need to rename the file names to “permanent” names, which is going to be quite a chore.

I’ll also need to implement the redirects, tags, created, and updated fields into the UI.


One change I want to make: I think the filenames should be short permanent links (the filename in the repo), while the link title is metadata that is stored in a YAML header.

Each YAML header can look something like this:

title: The Problem with Podcasts
redirects: /essays/The%20Problem%20with%20Podcasts
tags: essays, media, consumption, podcasts, audiobooks
created: 2022.01.01
updated: 2022.01.01
is_published: true

# The Problem with Podcasts


Making this change actually solves a major problem: if no YAML header is found, then the essay is not published! This means I can slowly add things to the site by adding the proper YAML headers.

I can use a quick script to add initial headers for everything in the “Selected Essays” section.


Here’s an updated task-list:


Here’s my current todo list for the site:

Inspiration! Cool minimalist websites: