TIL that the term "through-composed" refers to a piece of music with no repeated parts (no refrains, etc.)
Lifestream
-
May 9, 2022, 12:08 PM -04:00 -
May 4, 2022, 9:23 PM -04:00 Prohibition Was a Constitutional Amendment
It always amazes me to think that Prohibition in the U.S. was implemented via a Constitutional amendment, as was its repeal.
In my head I think of a Constitution as a country's legal axioms - the foundation of its law system. From this perspective it makes sense that the prohibition of alcohol, having no Constitutional basis, had to be passed by adding another axiom. And when people realized that this was just a bad idea, it makes sense that getting rid of it required adding yet another axiom. It's funny, when you think about it, like a big legal "oops!" that you can't erase.
-
May 3, 2022, 10:24 AM -04:00 Quite the shit show in the US today
-
May 1, 2022, 3:26 PM -04:00 These cuties showed up randomly in my yard
-
Apr 25, 2022, 8:37 AM -04:00 Receiving and Displaying Webmentions in Eleventy
Webmentions are the way people have conversations on the Indieweb, but integrating them - or, indeed, any kind of dynamic content - into a static site can be a little tricky. Luckily, many people have run into this issue before and so there wasn't much for me to do but steal.
To be clear, I'm talking about receiving and displaying webmentions here, not sending them. How I ended up sending them will be a separate topic, as it is tied into how I manage POSSE and backfeeding on my site.
The previous, pelican-based incarnation of my blog used a homegrown system involving a webmention listener that handed off data to a redis server and ultimately resulted in a new webmention being committed to my site's repo, causing the whole thing to be rebuilt. It certainly worked, but it required a fair bit of maintenance. It also failed to take into account certain edge cases that I hadn't previously considered (like a commentator's avatar image going missing).
-
Apr 23, 2022, 2:50 PM -04:00 Out and about. Griffintown has changed a lot.
-
Apr 11, 2022, 8:13 PM -04:00 The Philosophy of TypeScript Enums
I'm a pretty big fan of TypeScript, probably best described as a statically typed language that transpiles to standard JavaScript. I've written about it before.
People who have worked with me in the past may be surprised at my admiration, given the rancour I occasionally direct at something like the Google Web Toolkit (GWT), a Java-to-JavaScript transpiler, which to the casual eye seems to be in a similar vein.
The similarities, however, are superficial; TypeScript and GWT are quite different beasts. Something like GWT is used in web development in order to avoid writing JavaScript. TypeScript, on the other hand, is best viewed as JavaScript extended with an optional static typing system. The optional part is key; in theory, any JavaScript program is also a valid TypeScript program. In other words, TypeScript doesn't try to hide the fact that it's merely an enhanced version of JavaScript.
-
Apr 4, 2022, 3:00 PM -04:00 Link Contexts In Eleventy
As a participant in the IndieWeb, I publish my share of likes, replies, reposts, and bookmarks. These posts all have one thing in common - they refer to another, external URL and only make sense in the context of that URL.
This being the case, it's nice to give my readers (and myself) some sense of what I'm referring to when I post that content. The process of scraping metadata from URLs for display purposes is called "URL unfurling" and implementing it efficiently on an Eleventy based website is not entirely trivial, especially when you're trying to save your Netlify build minutes, so it's worth sharing what I've learned.
-
Mar 30, 2022, 11:01 AM -04:00 I'm not religious, but I occasionally think that for some people, their purpose in life is to be a cautionary tale, and that makes me sad.
-
Mar 23, 2022, 3:33 PM -04:00 Taming Eleventy Tags: Or How I Learned To Tolerate Double Pagination
Pagination in Eleventy is bit strange. Out of the box, Eleventy comes with support for something the developers call "pagination", but it might not be the sort of pagination you're used to.
As you probably already know, Eleventy is a static site generator. It generates output HTML files from input template files. In the simplest case, one HTML file is generated for each (non-layout) input template.
The feature known as pagination in Eleventy is basically a way of getting around that limitation, allowing you to generate multiple output files from one template file. If you squint, you can see how this maps to the traditional idea of pagination (i.e. we want to break down a long list of items into smaller sized pages, writing only one template for the page) and although this is, indeed, a common way to use pagination in Eleventy, it turns out that the feature is much more generic than you might think - and, paradoxically, less useful than you might think.
-
Mar 21, 2022, 6:53 AM -04:00 Changes To Post Organization
After some consideration I've decided to remove the articles from my "Posts" feed and rename it to "Notes". It now contains just my notes and photos (and videos if I ever start posting those). As before, my articles are available in my "Blog" feed.
Initially, my reason for mixing articles, notes and photos into one "posts" feed was that I suspected at least some of my readers would want a feed just for "original content", and the "posts" feed provided that. I still think this is true, but some other insights have led me to reconsider the approach.
-
Mar 20, 2022, 12:38 PM -04:00 Evelyn calls him "Laser Jesus"
-
Mar 10, 2022, 1:03 PM -05:00 Recent interactions on Twitter have led me to clarify the purpose of all my feeds with descriptions, so hopefully people will have a better idea of what they are in for :-)
-
Mar 9, 2022, 4:46 PM -05:00 Eleventy For IndieWeb Enthusiasts - Basic Setup And Post Organization
As mentioned previously, I recently converted my website over to Eleventy. I'm an IndieWeb participant and, moreover, my website is fairly complex so I ended up writing (or, in some cases, pilfering) a fair amount of code to make it all work together in an acceptable manner. I thought I would document the process via a series of blog posts in case anyone else finds it of value.
None of this is intended to be an Eleventy tutorial and you'll get the most from these posts if you already know something about how Eleventy works.
-
Mar 6, 2022, 12:08 PM -05:00 From Pelican to Eleventy
After roughly five years, I've finally decided to switch my blog over from Pelican to Eleventy. I'd be lying if I said that I wasn't at least partially swayed by the fact that all the cool kids seemed to be doing it but, with that in mind, I do have some (hopefully) legitimate reasons for making the switch.
Pelican bills itself as a static site generator, and so it is, but one that focuses more on traditional, single user blogs. Pelican can, of course, be used as a CMS, and you can certainly use it to create arbitrary, standalone pages and websites, but the features in support of this usage seem more bolted on than organic. There are certain assumptions built into Pelican that stem from its original purpose as a blogging engine that are occasionally irritating to circumvent.
-
Mar 1, 2022, 1:57 PM -05:00 Much Ado About (Indieweb) Bookmarks
Like many Indieweb participants, I post bookmarks, likes and reposts to my website.
From a technical standpoint, there's virtually no difference between these kinds of posts; they're all permalinked h-entries which house another, usually external, URL and which often contain no other content beyond that link. They differ solely in the microformat which annotates the link, indicating the intent of the post.
And intent make all the difference here. A like is supposed to convey that the author actually enjoys or appreciates the content to which the post is linking. A repost is supposed to convey that the author wishes, for some reason, to share that content on their own feed. A bookmark is supposed to convey that the author...ugh...err...
-
Mar 1, 2022, 8:08 AM -05:00 More generally, is there any advantage to hosting your albums on an #indieweb enabled website, as opposed to a dedicated application, assuming the app was under your control (in other words you still own your data)?
-
Mar 1, 2022, 8:02 AM -05:00 So what does the #indieweb use for storing photos/albums? I run a micropub media server on a remote machine, storing the photos on disk. Any advantage to switching to the cloud (a bucket, for example)?
-
Feb 27, 2022, 5:51 PM -05:00 A Place For Everything
If you're a programmer of a certain age, you've either read or know about Design Patterns, a book on software architecture popular in the 90s and early 2000's. The book was sort of like a repository of TV tropes for the Object Oriented Programming (OOP) world in that it provided a convenient vocabulary for describing what were usually eminently recognizable software engineering techniques that nonetheless often lacked punchy, easy to remember names.
Notably, the book was more descriptive than prescriptive. It described preexisting techniques that were already in use in the "wild", so to speak.
-
Feb 24, 2022, 8:25 PM -05:00 Chicago, summer 2018. Not Greece, but I'll take it.
-
Feb 24, 2022, 8:10 PM -05:00 Taken in summer 2015. Wish I were there, in both space and time.
-
Feb 24, 2022, 3:59 PM -05:00 Though parts of the Wheel of Time TV series were maddeningly frustrating, I did enjoy it on the whole, though being a fan I was always going to be an easy sell. The people complaining about the diversity of the cast can get bent; the cast was one of the best parts.
-
Feb 23, 2022, 9:07 PM -05:00 I have a very hard time developing new habits. As I have not grown up with plants my whole life, this means that I cannot be trusted to keep a plant alive, as I will inevitably forget to water it.
-
Feb 23, 2022, 8:27 PM -05:00 I am grateful that Wordle exists if for no other reason than it gives me a reason to talk to my mother every day.
-
Dec 5, 2021, 9:02 PM -05:00 I understand the sentiment but really, what's wrong with garlic in your soul? Garlic is good.