This Site Supports Webmentions!

Today is an exciting day! As of today, this static blog supports Webmentions. For those who aren't aware, Webmentions is a technology that allows websites to let each other know when one mentions another. Webmentions can be used to support likes, comments, replies, and reposts over the Open Web with no platform in the middle. This means blogging gets all of the great social features that previously required a Social Media company. Webmentions rock.

Typically, Webmentions require code running on the host server, and since this is a static site, it hasn't been possible for me to implement them here. However, the newest version of now lets you add Webmention support to any site. acts as a simple middle man and provides you with a Mentions timeline just like you'd expect from social media. All you have to do is add a <link> tag to your site's header. Which is precisely what I've done here. There's no server code on my end, and I can see all of my mentions in my Mentions timeline.

Cross-Site mentions are yet another way that is trying to push us towards the Open and Indie Web future! No matter where you blog you can get all the interactivity of Webmentions and cross-site replies.

Blogs can and should be the social network of the future, and is here to help make that better world a reality.

Bring Us Your Static Sites, Yearning to Breathe Free →

A Whole New Mac

Today was an important day. Today I'm finally retiring my 2013 MacBook Pro. I'm even writing these words on a new Mac. It's been a long road, but my dependable, old 2013 MBP has reached the end of its life... as my primary computer. It still works well, so I can't bear getting rid of it. At this point I think I'll wipe it and use it for editing music.

A New Fantastic Point of View

As I type these words on my new 13" Macbook Pro, I feel extremely relieved. This laptop feels great to use. It's small, light, powerful, and beautiful. The keyboard works well and feels good, the display is beautiful, the touch bar with an escape key is a good compromise, Touch ID is great, and Migration Assistant transferred everything over perfectly (even my blogging engine and the outdated versions of Python 2 on which it depends).*

I look forward to taking this thing through it's paces. I've taken my 2013 MBP across the US and beyond, so there's no telling where this one will go. I'll miss the HDMI port and Magsafe moreso, but c'est la vie. The years start coming and they don't stop coming; so must I march along with them.

Welcome to the party, new MacBook. I hope you're ready to rock.

* Migration Assistant remains one of the most magical and underrated pieces of software Apple makes. It transfers apps, files, .rc files, everything in /usr/local/bin and more. The idea of having to manually migrate my files and applications makes me cringe. I've never set up a new personal Mac after my first one.

Why We're Polarized

It took me way too long, but I finally finished Why We're Polarized by Ezra Klein. I got the book when it came out, but after making it half-way through I got distracted. I regret not finishing it sooner.

Before I go any further into the whats and the whys, I will pause to just briefly say: you should read this book. Just do it. It's a quick read (unless you take 6 months off) and it's exactly the kind of thing Ezra is famous for: good, thoughtful, explanatory writing on a nuanced and complicated topic.

A Systems Perspective on These United States

For the curious, Why We're Polarized details the story of, well why we're polarized. Specifically, Ezra explains what polarization means and why it's a problem in modern American politics, then takes us through how we got here, what polarization has done to our government (and us), and then offers some advice on how we can mitigate its more potent aspects.

Ezra brings the weight of recent social science to bear in supporting his theories and he's spent countless hours before and after the release of his book discussing the finer points in audio form. I won't go any deeper here, just read the book and listen to those episodes.

What drew me to this book the most is that, in it, Ezra looks at our politics not as the result of individuals and their actions, but through the lens of systems and their incentives. That perspective isn't just what brings me back to Ezra's work over and over again, it's exactly what makes me recommend it to friends and others who aren't interested in, or those who don't follow, politics. It's an uncommon take, but one that I, and I know many others really enjoy.

What Now

I can't say the book is terribly encouraging. It's pretty downright depressing at times, but it does clarify a lot of nuanced truths: from what motivates the push toward radicalism in the Republican Party, and yet moderation in the Democratic Party, to detailing how the supposed glory of midcentury American politics was in part due to the long shadow that slavery, racism, and the failures of Reconstruction cast over this nation. It's a real pick-me-up.

That said, I found myself even more hopeful and optimistic that these problems with our politics can be solved. Knowledge of the problem and understanding of its nuances is a huge part of the work towards finding a solution, and I for one, feel better armed in the fight after reading this book.

Ezra has said on his podcast, as well as in the book itself, that the solutions he offers at the end are mostly there for decorum. Books about the problems in politics usually end with solutions, so he does too for the sake of fitting in. But one of his suggestions has actually helped me significantly in my understanding (and coping) with the world of politics, law, and government.

"There are over five hundred thousand elected officials in the United States, only 537 of whom serve at the federal level." ... The 537 federal officials are the ones we have the least power to influence, if only because they have, on average, the most constituents. But we often don't know the names of the officials nearest to us, even though they'd be glad to meet for coffee...

[T]here's a real reward from rooting more of out political identities in the places we live.

This book is obviously pre-pandemic.

I live in California and lately I've tried to focus more on my state and less on the national dramas. I've started following more local papers and more state news. I feel better about the world, more hopeful about the future, and more connected to the place I live. I'm not always successful (in fact I have a lot of room for improvement), but following the goings on of my City, my County, and my State have made me more optimistic, more informed, and arguably more influential. I've started emailing my City Councilmember and my State Assemblymember, and they actually respond, not with a cheap form letter, but with a real, human response! Even if it's only to take my comment and throw it on the pile, I feel like I've actually contributed, much more so than I ever would just ranting about the President or the Senate on the Internet.

I think we've all let the inter-connectedness of the Internet overshadow the communities we have at home. Community on the Web is a marvelous thing, but there is also a sense of community to be had... in our communities.1

1 This advice also works in our current pandemic-laden world. As I said on my microblog:
In this time of crisis, look to your local goverments: city and county. There are thousands of people working hard and looking out for you and for your community.

Spring Cleaning and Microformats

This site now supports microformats! I've added a feed to the homepage, and styled each post as an entry. Hopefully this'll make it possible to follow this site in a MicroSub reader. I've also completely redone the nav and the core styling. The nav bar on this site has bugged me for years, but until tonight it never bothered me enough to actually fix it. That deed is done.

I can't remember the last time I actually dove into the templates and CSS that power this blog. The last significant change would have to be at least three years ago. Hopefully this time I won't have to touch it for even longer.

An Uplifting Tale in these Dark Times

Like a lot of people, these last few weeks have been challenging. I've been working from home for years, so California's stay-at-home order hasn't affected my work all that much, but I do find myself battling a constant anxiety. I'm an optimist by nature, but these last few weeks have stretched that belief to its limits and every day I've found myself flailing in a sea of uncertainty while a thick blanket of brain fog smothers out the sun.

All of that put me in the perfect head-space for this article from the Guardian. I needed an optimism booster shot and I found it. A story of six boys who set out on an ill-fated journey in 1965. Sounds super uplifting right?

No one noticed the small craft leaving the harbour that evening. Skies were fair; only a mild breeze ruffled the calm sea. But that night the boys made a grave error. They fell asleep. A few hours later they awoke to water crashing down over their heads.

The full article is definitely worth a read. It follows a similar plot to the Lord of the Flies, except with the exact opposite conclusion. In this story, the boys are inherently good.

I won't spoil how, but all six kids are eventually rescued (after 15 months) and are reunited with their families. It's a great story, but one passage stood out to me more than any other:

Kolo fashioned a makeshift guitar from a piece of driftwood, half a coconut shell and six steel wires salvaged from their wrecked boat – an instrument Peter has kept all these years – and played it to help lift their spirits.

In dark times we turn to things that bring us together. For many, that thing is music. I don't, for a second, want to re-live what those boys went through, but it makes me extremely happy to know that even in their darkest times they turned to one of mankind's oldest remedies to lift their spirits.

We can't gather in crowds right now, but music can still help us get through this crisis together. We just need to be creative with how we play it.

What happened when six boys were shipwrecked for 15 months →

Where it Comes From, Nobody Knows

A friend of mine stumbled across this page today. It has an interesting section about X Video Adapters that got me thinking; though it wasn't what was on the page that got me all wound up, it's what wasn't.


Nobody wants to say how this works. Maybe nobody knows ...

I presume that last bit is a joke, but maybe it's not. The X Windowing system dates back to the early 80's, and it's gone through so many iterations and revisions that it's probably safe to say that there are definitely parts that literally no one understands.

As computing and the Internet get older, the nuances and particulars of most software will be lost as it fades from living memory. It's quite possible that, years from now, we'll all be depending on lots of software that no one has seen or touched in decades. Its secrets lost, its workings unknown.

Time Immemorial

The City of London, not to be mistaken for the city named London, is an ancient city alive today in the center of the capital of the U.K.. To this day it has its own customs, rights, and traditions, and in most respects it's more of a country than a city. This small 1-square mile of land is extremely special. Why? Because it always has been. The founding of The City of London predates the country that surrounds it by several hundred years. For as far back as anyone can remember the City has been there, lying on the Thames. It gets its special status and powers, not from The People, or from God, but from Time Immemorial. The City just is, and always has been.

We are still in the bright, starry-eyed youth of the software world. But our software, should it continue to run that long, may outlive its founders, maintainers, and followers. In the future we may find that lots of software just is, and always has been.1 Future help articles may offer little more than this:

Why does it do X?

It just always has.

1 NASA already has lots of experience with software that has outlived and outlasted its creators, maintainers, and who's documentation has been lost to fire, flood, and the careless efforts of man.

A Good Day

Some days go well. Aside from all of the extremely troubling things in the world right now, today was great. In the morning, Adventurer's Codex got one step closer to its next release (which is going to be a big one) and in the evening, a set of features I've been building for a few months, and wanting for a few years, got pushed out to along with a refreshed home page that I put together in the last few hours.

The full details of the release are posted on the official blog but the important bit is this:

With the latest version of, one-click replies have arrived on the Open Web. Bloggers on now have the ability to reply to posts in their timelines, anything in the Feed Directory, and even to other replies!

I've wanted this feature for a long time. Replies, combined with the silent launch of Webmentions earlier this year finally turns from a feed reader and a blogging platform into a full blown social network powered by the Open Web. This was the goal of my Microblogger project back in the day, it was part of my Vision for the Open Web, and it's been my dream ever since 2014 when I was still using Twitter and hoping it would evolve into what is now (granted on a much smaller scale).

Don't let anyone tell you that you can't accomplish your dreams: you can. It might take a lot longer than you thought, but it can be done.

No more do we have to imagine what the Web as a Social Network could be. We have it, we just need to encourage others to join us. Whether you're using your own IndieWeb site,, or you're helping to make the Web better.

It's been a long time coming, but I can now include in that list without qualification.

That's When I Knew: I Can't Actually Use macOS

A few months back, I got a new laptop for work: a new 15" MacBook Pro.1 It was the first time I'd gotten a new Mac since 2014 when I got the MacBook Pro I'm using to write this post; this Mac has been my primary machine ever since. I use it for everything: I built Adventurer's Codex and with it, I used it for over 4 years as my work computer, I've taken it all across the country and for most of that time I've carried it with me every single day.

In all that time though, I haven't been using macOS as it comes from Apple, I've heavily customized just about everything. I've written tons of little command-line utilities, keyboard macros, Apple Script extensions, and installed bits of extra utilities to make this laptop work exactly the way I want. What's more, when I got this machine, I migrated my previous MacBook onto it. In short, there's now a decade of customizations and tweaks baked into macOS, and it's been long enough now that I have no idea which behaviors are mine and which are part of the macOS that Apple ships.

Which presents a problem when setting up a new Mac.

Nowadays, when I use my Mac, I don't really think about what I'm doing. My hands do things, and the thing I want to happen, does; all in perfect harmony. One thing I knew, coming into this new Mac, was that my hands would likely stumble over this new bigger, chunkier keyboard. I was right, but for this I was prepared. I was less prepared for what came next.

That Demoralizing Beep

There I was, welcoming a new friend into the world, stumbling sure, but maintaining my balance. It was then, for what reason I know not, I heard a sound I'd not heard in a long time, a long time: the error chime. Instantly, I was lost, adrift on unfamiliar shores that at first glance looked just like the islands I'd called home for a decade, but which, on second glance turned out to be nothing more than a mirage that obscured the sharp rocks on which I was now adrift.

In a flurry, I reached for Alfred. I whacked Command + Space and found only Spotlight. When I asked Spotlight for set and whacked Enter, instead of seeing my familiar System Preferences, I heard only that chime again. I started to panic. It was then I realized that I was truly alone. Pastebot had fallen, Shiori did not heed my call, and Terminal no longer spoke my native tongue. Somehow, I managed to open Safari, but when I searched for alfred I was thrust to, a far cry from my usual port of call. I was lost; adrift on the farthest shores. Unmoored, scared, and alone.

Alfred using Settings to Open System Preferences

What was this strange world? I knew not. For now I only knew the screams of error demons emanating from the void.

The Thrilling Conclusion

Eventually, through the most heroic of efforts, I managed to install a few utilities, apps, and copy over some scripts from my personal Mac onto this new one. It still doesn't feel like home, but it's close.

This harrowing, 15-minute adventure has caused me to reflect more on how I use my tools. I'm not sure I like knowing that I'll either need to migrate this Mac forever, or that I'll need to start over and rebuild my foundations sometime in the future. I like my shortcuts, but that's just it: they're mine, not Apple's not yours, not anyone else's; just mine. I'm not sure I want the burden of migrating or re-learning everything. Is the only answer for me to slowly wean myself off of my little tweaks, my time-savers? I'm not sure.

But it's been interesting to think about.

1 This was prior to the 16" coming out.
2 Somehow Alfred knows that "set", short for Settings, refers to System Preferences. I have no idea how it learned this or when, but I've never once asked for that app by its real name. Downtime Post-Mortem: A Story of Finite Resources was down for a while today (~6 hours). What follows is a bit about why and what I've learned from the experience. In the end, nothing was lost and the site is back up. My apologies to all of my users; thanks for your patience.

Today did not go as planned. As I do, this morning I opened to read the news and instead of seeing a newly updated timeline, the app had logged me out. Worse still, I couldn't log back in, and the website wasn't responding. Sigh.

Some quick investigation revealed that the disk had filled, which caused the creation of new sessions and access tokens to fail. Admittedly, I don't have any sort of disk usage monitoring on the database server, but because I'd just doubled the amount of storage on that server less than two months ago, I wasn't really thinking it would fill up anytime soon. Regardless, it had.

The Causes

From what I can tell, a combination of external factors and my own design decisions led to the disk filling up much faster than I was expecting:

  1. Feeds are kinda huge (sometimes). A few users have feeds that seem to contain hundreds of new items every hour, which will faithfully parse and store in their timelines. In some cases, this meant that such a feed could contain 200,000+ items in only a few weeks. What's worse is that because of a recent change to how timelines work, a timeline can't hold that many items anymore which means was storing a ton of data it would never actually use.

  2. stores a lot of data. By design, doesn't really delete items that it has previously parsed and it stores multiple copies of certain data to make it easier to serve, but this drastically inflates storage requirements.

  3. I misunderstood my tools. I'm not a database guy; I'm an app developer. To me Postgres has always been a bit magical, and today that bit me. About a month ago, I thought I'd read somewhere that the newest versions of Postgres didn't need to be routinely vacuumed, and that running a daily vacuum was an old, outdated practice, so I stopped doing it. This was a bad idea. Without that daily cleaning, the database couldn't reuse space that it no longer needed, and so it kept asking the OS for more disk space, right up until there wasn't any more.

In the end it was the mundane, but powerful combination of a few small things that caused the issues today: some overzealous design choices, a few misunderstandings, and a few overactive feeds.

The Solutions

Right away, I should admit this whole thing could have been solved a lot sooner. I underestimated the issue at first and tried to keep the site up while I fixed the issue. In hindsight it would have been a lot faster and easier to resize the server to something that had more disk space, vacuum the database, resize the filesystem and scale back down. This whole thing could have been solved in 1-2 hours instead of 6-8.

That said, here's the two things that I'll be changing about how works in order to prevent this problem in the future:

  1. The nightly vacuum is back. Removing it was a dumb idea.

  2. will no longer store the entire history of external feeds. This one isn't fully in effect yet, but expect the change soon.

As of recently, each timeline has a maximum length of 3000 posts. Once a post falls off the end, you won't be able to find it by scrolling backward in your timeline anymore. This is exactly what Twitter does (although their limit is a modest 800 posts). Feeds will soon do something similar. will keep just the most recent posts in a feed (~3-5000 posts in total) and anything beyond that point will be removed from's database.1

I suspect that no one will actually notice these changes once they're rolled out, but to me they mark the end of the road for a naive dream I had back when I started

tl;dr Turns out parsing and storing entire portions of the web is hard.

1. Hosted blogs are uneffected. will store your entire blog . This change only effects feeds from outside of

An Agency that Protects Data

New York Senator Kirsten Gillibrand has just announced a bill to create a new Data Protection Agency, which would be in charge of regulating... well data protection.

From the bill:

The privacy of an individual is directly affected by the collection, maintenance, use, and dissemination of personal data.

In order to protect the privacy of individuals, it is necessary and proper for Congress to regulate the collection, maintenance, use, processing, storage, and dissemination of information.

While I haven't finished reading the actual bill yet, I applaud Senator Gillibrand for proposing the idea. Her bill lays out what the new agency would focus on: regulating how data is collected, used and processed. She also explicitly carving out, what she calls, "High-Risk Data Practices" that would require extra protections.

Some High-Risk Practices (formatting mine):

The term "high-risk data practice" means an action by a covered entity that involves...

  • any processing of biometric data for the purpose of uniquely identifying an individual...
  • processing the personal data of an individual that has not been obtained directly from the individual...
  • processing which involves tracking an individual’s geolocation...

According to the Senator's own press release on the topic:

2. [The Agency would maintain] the most innovative, successful tech sector in the world by ensuring fair competition within the digital marketplace.

  • The agency would promote data protection and privacy innovation across sectors, developing and providing resources such as Privacy Enhancing Technologies (PETs) that minimize or even eliminate the collection of personal data.
  • The agency would ensure equal access to privacy protection and protect against “pay-for-privacy” or “take-it-or-leave-it” provisions in service contracts—because privacy, including online privacy, is a right that should be enforced.

3. [The Agency would prepare] the American government for the digital age.

  • The agency would advise Congress on emerging privacy and technology issues, like deepfakes and encryption. It would also represent the United States at international forums regarding data privacy and inform future treaty agreements regarding data.

From my reading, it looks like this agency would also have the teeth to enforce its rules as opposed to the current FTC rules which companies basically ignore. An agency with this new authority would be utterly transformative for the U.S. Tech Sector and for the lives of everyday citizens.

I fully support this bill.