Web Log
This page is a reverse chronology of what I've been doing and thinking about. You can subscribe to updates via RSS.
December 2, 2024
The Web Portal page has a spiffy new design, and some new features:
- Hit
enter
to navigate to the first link matching your search query. If no links matched, it'll search DuckDuckGo instead. - A few DuckDuckGo bangs will autocomplete if you begin your search query with a bang.
- Search now finds items by URL as well as visible text.
This last feature was enabled by a new release of hypersearch!
The metrics page is up-to-date with November's data.
November 16, 2024
I now have a /uses page listing the hardware and software I currently use.
The metrics page is up to date with the latest data. The project to remove my dependency on web search is going well!
Meanwhile, I am working on the fourth beta version of OGTRTA, a syntax framework for constructed languages.
September 1, 2024: "Code Quality: Hidden Costs, Unexpected Benefits"
I've posted a new article: "Code Quality: Hidden Costs, Unexpected Benefits"
It being the first day of September, I've also updated the metrics page with August's data.
August 25, 2024: Christopher Alexander essay migrated from Substack
Earlier this year I wrote a serial essay about how Christopher Alexander's work applies to software. I just finished copying it from my Substack newsletter to this site. You can read the whole thing here.
August 24, 2024: Just say no to Chronos
I've released a couple improvements to the tools I use to build this website. Those tools are:
- mdsite, a simple static site generator that can turn any tree of Markdown files into HTML. If you want to write an HTML book like The Art of Unix Programming, or just put your digital garden on the web,
mdsite
has got your back. - marss, which turns a Markdown changelog or microblog into an RSS feed.
mdsite
mdsite 0.6.0 improves on the previous release, 0.5.1, by adding support for GitHub-Flavored Markdown footnotes. You can see those in action in my Christopher Alexander series, which I'm in the middle of migrating from Substack.
marss
Marss is actually getting its first release, so there isn't much to say about it that's not covered by the documentation.
I wrote marss because I couldn't find a markdown-to-RSS generator that took a single changelog file as input. All the existing ones seem oriented toward blogs: they read a directory of posts, and generate a feed entry for each post. Contrary to what you might assume from its name, my web log is not a blog. It is neither a series of standalone articles, nor a stream-of-consciousness social media feed. I think of it more as a unified changelog for all of my web presences — and crucially, one that includes only notable changes that I think are worth emailing people about. In order for this to work, the web log has to be decoupled from the changes to actual content (prose and software), because I update that stuff all the time in fairly insignificant ways. I'm also constantly writing drafts in public — for my own convenience, because they're easier to find that way. So an RSS feed that notified people of every file I created or updated would be obnoxiously frequent.
Tangent time: I've been musing about our society's tendency to order everything by recency or in-the-moment relevance, and whether this might be harming us (gee, Ben, ya think?) Some of my favorite websites (Dreamsongs, Every Noise at Once, Ardalambion) do not order their content chronologically. I like the timeless quality this imparts. Such websites often have changelogs — e.g. here's Dreamsongs' and Ardalambion's, so returning visitors can see what's new if they want. But the chronological ordering is strictly secondary.
Frequently-updated chronologies and feeds always feel vaguely stressful to me. That might be because we most often consult Chronos when things have gone terribly wrong. Examples:
- Programmers don't dig through the commit history when the code is self-explanatory and doing what they expect. They only do it when the number of WTFs per minute spikes, and they need to figure out how the code got so bad in order to understand what it even does.
- If you see a bunch of people in a conference room poring over a timeline, you can bet they're in an incident postmortem, reconstructing the sequence of events that led up to some disaster.
- The news is mostly bad news because people want to know what's urgent, and positive developments, though they may be recent, are not urgent. No one needs up-to-the-minute information when all is well, but we demand it in a crisis.
We call on chronologies to understand present problems and trace their causes. These are important things to be able to do, but they aren't the only things we need to do. Forcing everything we do into a chonological stream of updates (the default on the modern web) imparts a false sense of urgency to those updates, even as it skews the information we consume toward ephemera that we'll have forgotten in a month.
I need to stop writing lest this become a blog post, but if you want to read more, here's a link to How Blogs Broke the Web by Amy Hoy. Amy's post explains, more clearly than I can right now, a big part of what motivated me to write mdsite from scratch instead of using an off-the-shelf blogging tool. And if you're looking for something more recent and with less CSS, Mike Grindle's been writing about the woes of timeline-based social media and the limits of novelty and fun.
And oh, that reminds me: The Wayward Webring welcomed four new members since my last update! You should definitely check out all their sites:
August 11, 2024: Site Tidying
I am still working out how best to organize pages on this site. This week, the welcome page came into its own as the de facto index page for this site (The true /index.html
being a list of links to my other web presences). Concretely, what this means is that links labeled "Home" go to the welcome page. The only way to navigate back to /index.html
is to use the "Out Again" link at the bottom of the welcome page.
This is essentially an instance of the Entrance Transition pattern, which I've seen on a lot of personal sites — especially older and retro-themed ones. I like it because it makes the site feel like more of a place: it has a distinct inside and a distinct outside.
I'm not big on the idea of "standardizing" websites that are ostensibly personal, but that said, I think the indieweb community has developed some good standard patterns that I'd like to adopt. Specifically, I'd like to have a /uses
page that's separate from the main portal. I think the way I've organized my links to tools is not going to scale; a lot of them are lumped under "Software Development," but some are in their own "Web-based tools" section. In reality, the tools in both sections run the gamut from "extremely geeky" (Bun, Regex 101) to "something everyone should know about" (uBlock Origin, Purple Air). So a reorg is probably in order.
Speaking of indieweb, a post in #indieweb IRC led me to Brandon's Journal and his awesome links page. That led to a conversation, which led to Brandon joining the Wayward Webring. Welcome, Brandon!
I also discovered Maggie Appleton's deep dive on the history of digital gardening and realized not only that my "bliki" is really a digital garden, but that I independently reinvented the idea of labeling "epistemic status." This could be taken as evidence that civilization is forgetful and fragmented, but more likely, I'm just out of touch. Fine, Ward Cunningham called it a bliki in 2003, but the kids these days call it a digital garden. I can adapt. It is interesting though, that Appleton doesn't mention the bliki concept as a forerunner of digital gardening, so maybe there really are two distinct lineages — or maybe the connection between them has just been lost to history.
I spent a lot of time this week tinkering with various little features and quality-of-life improvements to the site. For example, the searchbar on the portal page now has documentation, and I added some knobs to the CSS so that multi-column pages can be wider than single-column articles.
Finally, a meta-note on how I wrote this log entry. I went into it thinking I accomplished nothing this week and had nothing to write about. Then I ran:
git log --since 2024-08-04 --name-only
This lists the commits I made since the previous entry, along with the files changed by each commit. That was enough to jog my memory. Turns out I did stuff!
August 4, 2024: The Mess We're In
Writings
Published: "The Mess We're In"
Quotes
Philosophy is a battle against the bewitchment of our intelligence by means of language.
—Ludwig Wittgenstein
Currently stuck in my head
J'aim la flour de valour by Guillaume de Machaut
Wanted
I want a list of cross-platform font-family
values, using only fonts that ship with operating systems.
E.g. if I want to use a humanist sans-serif typeface on my website, and I don't want my users to have
to download fonts, what are some font-family
settings that will result in good-looking, consistent
typography across Windows, macOS, Ubuntu, iOS, and Android?
I feel like this is an important resource for anyone who wants to keep their website ultra-lean (as I do). I also feel like I've seen such a resource within the last few years, but sadly I don't have it bookmarked. Can anyone in the audience help me out? Send email to benchristel at gmail.com. I'll give you a backlink.
Working On
- marss, a Markdown-to-RSS converter. It's not quite ready for release, but I'm already using it to generate the RSS feed for this page.
2024-07-31: Site Updates
Globally install a package you're developing
Today I learned that you can install a NodeJS package you're developing without first publishing it to a package registry like NPM. yarn global add "file:/absolute/path/to/repo"
will do the trick.
@regosen/gapless-5, tiny-invariant
I've listed two new JavaScript libraries I use on the Web Portal page:
- @regosen/gapless-5 - gapless and looped audio playback on the web. Essential if you're building a music player. I'm using it in my meditation timer to loop the audio.
- tiny-invariant - a TypeScript assertion library that does type narrowing. Handy for those cases where you know what type something is, but TypeScript doesn't, and you just want to throw an error in the (presumably impossible) case where the thing is the wrong type and move on with your life. I learned about tiny-invariant by contributing to Mafs, Steven Petryk's ReactJS library for math visualization.
End of July
Today being the last day of the month, I've updated the metrics page with the latest data.